From: Alexandre Oliva <aoliva@redhat.com>
To: gcc-patches@gcc.gnu.org
Cc: Jan Hubicka <hubicka@ucw.cz>
Subject: [PR libmudflap/53359] don't register symbols not emitted
Date: Fri, 21 Dec 2012 05:34:00 -0000 [thread overview]
Message-ID: <ory5gsufym.fsf@livre.localdomain> (raw)
[-- Attachment #1: Type: text/plain, Size: 565 bytes --]
libmudflap emits a global initializer that registers memory ranges for
global data symbols. However, even if IPA decides not to emit a symbol
because it's unused, we'd still emit registration sequences for them in
some cases, which, in the PR testcase, would result in TOC references to
the undefined symbols.
This patch fixes the problem, avoiding registration for symbols that are
not present in the varpool.
Regstrapped on x86_64-linux-gnu and i686-linux-gnu; I've also verified
that it removes the TOC references on a ppc64-linux-gnu cross.
Ok to install?
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: mudflap-global-init-check-symtab-pr53359.patch --]
[-- Type: text/x-diff, Size: 816 bytes --]
don't let mudflap register global symbols that won't be emitted
From: Alexandre Oliva <aoliva@redhat.com>
for gcc/ChangeLog
PR libmudflap/53359
* tree-mudflap.c (mudflap_finish_file): Skip deferred decls
not found in the symtab.
---
gcc/tree-mudflap.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/gcc/tree-mudflap.c b/gcc/tree-mudflap.c
index 90d0448..a9caaf2 100644
--- a/gcc/tree-mudflap.c
+++ b/gcc/tree-mudflap.c
@@ -1335,6 +1335,10 @@ mudflap_finish_file (void)
if (! TREE_PUBLIC (obj) && ! TREE_ADDRESSABLE (obj))
continue;
+ /* If we're not emitting the symbol, don't register it. */
+ if (!symtab_get_node (obj))
+ continue;
+
if (! COMPLETE_TYPE_P (TREE_TYPE (obj)))
{
warning (OPT_Wmudflap,
[-- Attachment #3: Type: text/plain, Size: 258 bytes --]
--
Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/ FSF Latin America board member
Free Software Evangelist Red Hat Brazil Compiler Engineer
next reply other threads:[~2012-12-21 5:34 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-21 5:34 Alexandre Oliva [this message]
2012-12-21 9:51 ` Richard Biener
2012-12-21 9:55 ` Jakub Jelinek
2012-12-21 10:42 ` Jan Hubicka
2012-12-30 0:23 ` Alexandre Oliva
2013-01-02 14:53 ` Richard Biener
2013-01-06 19:48 ` Alexandre Oliva
2013-01-07 9:28 ` Richard Biener
2013-01-16 9:29 ` Alexandre Oliva
2013-01-16 10:24 ` Jan Hubicka
2013-01-16 13:17 ` Alexandre Oliva
2013-01-16 13:48 ` Richard Biener
2013-01-18 11:44 ` Alexandre Oliva
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ory5gsufym.fsf@livre.localdomain \
--to=aoliva@redhat.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=hubicka@ucw.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).