public inbox for gcc-help@gcc.gnu.org
 help / color / mirror / Atom feed
* Figuring out start and end of sections
@ 2010-04-13 17:40 Felipe Balbi
  2010-04-13 17:44 ` Andrew Haley
  2010-04-14  0:24 ` Figuring " Ian Lance Taylor
  0 siblings, 2 replies; 10+ messages in thread
From: Felipe Balbi @ 2010-04-13 17:40 UTC (permalink / raw)
  To: gcc-help

Hi all,

is there any way to figure out where a section starts and ends ?

I added a specific section to my program using
__attribute__((section "<section name>")) and now I want to figure out
where that section starts so I can iterate over it and call the function
pointers I'm adding to it.

Do I need a specific linker script to achieve that or does the default
scripts give me possibility to find that out ?

-- 
balbi

^ permalink raw reply	[flat|nested] 10+ messages in thread
* Re: Figuring out start and end of sections
@ 2010-04-14  6:21 Felipe Balbi
  2010-04-14  6:30 ` Felipe Balbi
  0 siblings, 1 reply; 10+ messages in thread
From: Felipe Balbi @ 2010-04-14  6:21 UTC (permalink / raw)
  To: gcc-help; +Cc: iant

[-- Attachment #1: Type: text/plain, Size: 65 bytes --]

Added back the list. Sorry for that, I had forgotten.

-- 
balbi

[-- Attachment #2: Type: message/rfc822, Size: 1825 bytes --]

From: Felipe Balbi <me@felipebalbi.com>
To: Ian Lance Taylor <iant@google.com>
Subject: Re: Figuring out start and end of sections
Date: Wed, 14 Apr 2010 09:17:33 +0300
Message-ID: <20100414061733.GA4285@gandalf>

Hi Ian,

I guess my mailer is fishy, didn't get your mail either

Ian Taylor <iant@google.com> writes:
>> is there any way to figure out where a section starts and ends ?
>>
>> I added a specific section to my program using
>> __attribute__((section "<section name>")) and now I want to figure out
>> where that section starts so I can iterate over it and call the
>> function
>> pointers I'm adding to it.
>>
>> Do I need a specific linker script to achieve that or does the default
>> scripts give me possibility to find that out ?
> 
> If you are using the GNU linker, or gold, and you make the section
> name a valid C identifier, then the linker will automatically define
> symbols __start_SECNAME and __stop_SECNAME which you can use.

so you're saying that something if I name my section _init then I should
have __start__init and __stop__init identifiers ??

The following isn't compiling:

#include <stdio.h>

typedef int (*initcall_t)(void);

static int my_init(void)
{
	printf("hello world from _init\n");
}
static initcall_t __my_initcall_my_init
	__attribute__((__used__))
	__attribute__((section("_initcall"))) = my_init;

int main(int argc, char *argv[])
{
	initcall_t	*fn;

	for (fn = __start__initcall; fn <
			__stop__initcall; fn++)
		(void) fn();

	return 0;
}

do I need to pass any particular option to gcc/ld to get that working ??

-- 
balbi

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2010-04-14  8:49 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-04-13 17:40 Figuring out start and end of sections Felipe Balbi
2010-04-13 17:44 ` Andrew Haley
2010-04-14  5:08   ` Figurig " Felipe Balbi
2010-04-14  8:49     ` Andrew Haley
2010-04-14  0:24 ` Figuring " Ian Lance Taylor
2010-04-14  8:49   ` Andrew Haley
2010-04-14  6:21 Felipe Balbi
2010-04-14  6:30 ` Felipe Balbi
2010-04-14  6:47   ` Felipe Balbi
2010-04-14  6:50   ` Fabian Cenedese

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