This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: develop a 'customized ld'
- From: Ian Lance Taylor <ian at airs dot com>
- To: "sean yang" <seanatpurdue at hotmail dot com>
- Cc: binutils at sourceware dot org
- Date: 10 Sep 2005 22:31:38 -0700
- Subject: Re: develop a 'customized ld'
- References: <BAY105-F11150BBA8514EDF2E9154CC09B0@phx.gbl>
"sean yang" <seanatpurdue@hotmail.com> writes:
> > > You can use a gcc extension creatively to approximate this:
> > >
> > > void foo ()
> > > {
> > > lab:
> > > printf ("%p\n", &&lab);
> > > }
> >
> >But be careful with it - recent versions of GCC are pretty bad about
> >preserving the addresses of labels not used for control flow. I assume
> >Ian's example will be OK, but if you don't have a computed goto which
> >might target the label, GCC may just put it somewhere else...
> Thanks to both of you. This is one conern, the other is I really don't
> want to have extra intruction--if the programming load for
> modification the binutils is not too heavy. Perticularly, I don't want
> to have printf() in the final code. Could u give some more suggestion
> on this?
The printf was just an example of using the label. The gcc extension
is '&&' applied to a label. See the gcc docs.
You haven't really said what you want to do with the address. If you
don't want to use it in the program itself, then this approach is
useless.
Ian