From: "Bingfeng Mei" <bmei@broadcom.com>
To: "Ian Lance Taylor" <iant@google.com>
Cc: "gcc@gcc.gnu.org" <gcc@gcc.gnu.org>
Subject: RE: How to avoid a tree node being garbage collected after C frontend?
Date: Tue, 10 Nov 2009 11:01:00 -0000 [thread overview]
Message-ID: <7FB04A5C213E9943A72EE127DB74F0AD93CCCB3F6C@SJEXCHCCR02.corp.ad.broadcom.com> (raw)
In-Reply-To: <mcrws1zmsm4.fsf@dhcp-172-17-9-151.mtv.corp.google.com>
Ian,
Thanks. I tried to follow the examples, but it still doesn't work.
Here is the related code:
in target-c.c:
extern GTY(()) tree pragma_ghs_sections[GHS_SECTION_COUNT];
...
pragma_ghs_sections[sec_num] = copy_node (sec_name);
in target.c:
...
section_name = pragma_ghs_sections[sec_num];
if (section_name == NULL_TREE)
return;
DECL_SECTION_NAME(decl) = section_name;
...
When I watch the memory pragma_ghs_sections[sec_num] points to,
it is motified by
#0 0x006cb3e7 in memset () from /lib/tls/libc.so.6
#1 0xffffc4f0 in ?? ()
#2 0x08120da4 in poison_pages () at ../../src/gcc/ggc-page.c:1854
#3 0x08120ee6 in ggc_collect () at ../../src/gcc/ggc-page.c:1945
#4 0x080f3692 in c_parser_translation_unit (parser=0xf7f92834) at ../../src/gcc/c-parser.c:978
#5 0x08103bd7 in c_parse_file () at ../../src/gcc/c-parser.c:8290
So target.c won't get correct section_name.
What is wrong here? I understood GTY marker tells GC that
this global pointer contains access to GC allocated memory.
Thanks for any input,
Bingfeng
> -----Original Message-----
> From: Ian Lance Taylor [mailto:iant@google.com]
> Sent: 09 November 2009 19:00
> To: Bingfeng Mei
> Cc: gcc@gcc.gnu.org
> Subject: Re: How to avoid a tree node being garbage collected
> after C frontend?
>
> "Bingfeng Mei" <bmei@broadcom.com> writes:
>
> > I need to pass a tree node (section name from processing pragmas)
> > from C frontend to main GCC body (used in
> TARGET_INSERT_ATTRIBUTES).
> > I store the node in a global pointer array delcared in target.c.
> > But the tree node is garbage collected in the end of c-parser
> > pass, and causes an ICE later on. I am not familiar with GC part
> > at all. How to prevent this from hanppening?
>
> Mark the global variable with GTY(()). See many many existing
> examples.
>
> Ian
>
>
next prev parent reply other threads:[~2009-11-10 11:01 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-09 17:05 Bingfeng Mei
2009-11-09 19:00 ` Ian Lance Taylor
2009-11-10 11:01 ` Bingfeng Mei [this message]
2009-11-10 12:19 ` Basile STARYNKEVITCH
2009-11-10 13:21 ` Bingfeng Mei
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=7FB04A5C213E9943A72EE127DB74F0AD93CCCB3F6C@SJEXCHCCR02.corp.ad.broadcom.com \
--to=bmei@broadcom.com \
--cc=gcc@gcc.gnu.org \
--cc=iant@google.com \
/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).