public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
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
> 
> 

  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).