This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
RE: linking with __CTOR_LIST__
- From: Ravishankar S <ravishankar dot s at hathway dot com>
- To: 'Abby' <abs621 at yahoo dot com>
- Cc: gcc-help at gcc dot gnu dot org
- Date: Tue, 12 Sep 2006 19:58:06 +0530
- Subject: RE: linking with __CTOR_LIST__
Hi,
It may be possible to do this with the linker. The constructors are
allocatted to the .ctors section in the final ELF file.
Just add this in your linker script:
.ctors
{
*(.ctors);
}
__CTOR_LIST__ = ADDR(.ctors)
Caveat: I have not tried this !
Regards,
Ravishankar
-----Original Message-----
From: gcc-help-owner@gcc.gnu.org [mailto:gcc-help-owner@gcc.gnu.org] On
Behalf Of Abby
Sent: Tuesday, September 12, 2006 3:48 PM
To: gcc-help@gcc.gnu.org
Subject: Re: linking with __CTOR_LIST__
Hi Grig,
thanks for reply. there must be some way to walk and call those
pointers? want to do something like as follows on linux appllication.
To use gcov for a application which runs all the time, i wanted to
change the behavior.
This is the code extract from
http://lwn.net/2002/0207/a/gcov-kernel.php3
extern long __CTOR_LIST__;
typedef void (*func_ptr)(void) ;
func_ptr *p = (func_ptr*) &__CTOR_LIST__;
if ( p == NULL) {
printk("No CTORS\n");
return;
}
for ( ; *p != (func_ptr) 0; p++) {
(*p) ();
}
I wanted to do similar stuff for the application.
Any other idea or right alias (if it is not the one).
thanks and regards,
abby.
Grigory Zagorodnev wrote:
>
> Abby wrote:
>> i am writing an application (linux) where i am trying to reference
>> __CTOR_LIST__ ?
>> /tmp/cc2rTvyB.o(.data+0x0): undefined reference to `__CTOR_LIST__'
>>
>> any idea?
>> abby.
>
> __CTOR_LIST__ is a local symbol, it can't be referenced from outside
> crtbegin*.o startup object file.
>
> - Grigory
>
>
--
View this message in context:
http://www.nabble.com/linking-with-__CTOR_LIST__-tf2253354.html#a6263258
Sent from the gcc - Help forum at Nabble.com.
__________ NOD32 1.1454 (20060321) Information __________
This message was checked by NOD32 antivirus system. http://www.eset.com