From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-ee0-f48.google.com ([74.125.83.48]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1TsrYS-0007gY-6F for barebox@lists.infradead.org; Wed, 09 Jan 2013 09:02:37 +0000 Received: by mail-ee0-f48.google.com with SMTP id b57so654194eek.7 for ; Wed, 09 Jan 2013 01:02:32 -0800 (PST) MIME-Version: 1.0 Date: Wed, 9 Jan 2013 10:02:32 +0100 Message-ID: From: Franck Jullien List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: barebox-bounces@lists.infradead.org Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: GCC question To: barebox Hi, I have a question not directly related to Barebox but I think I can find some answer here: ) I would like to use initcalls in a Linux user's land program on a x86 target. I'm doing something like this: #ifndef _INIT_H #define _INIT_H typedef int (*initcall_t)(void); extern initcall_t __start_target, __stop_target; #define target_initcall(fn) static initcall_t _##fn \ __attribute__((used)) \ __attribute__ ((section("target"))) = fn #endif then: initcall_t *initcall; for (initcall = &__start_target; initcall < &__stop_target; initcall++) { printf("initcall-> %p\n", *initcall); ret = (*initcall)(); if (ret) printf("initcall %p failed: %d\n", *initcall, ret); } Everything looks fine except the linker removes the function "initcalled" because it is not referenced anywhere and this is normal. I have not modified the linker script (I'm using the default one). I'm using auto generated __start_target and __stop_target symbols generated by the linker. My question is: why does it work in barebox ? For example, in nios2/generic.c we have only static function and initcalls. So why the linker does optimize out those functions ? Is it because we have initcall corresponding sections in the linker script ? Thank you, Franck. _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox