Hi Mike, On Mon, Oct 31, 2011 at 3:37 PM, Mike Frysinger <[email protected]> wrote: > On Monday 31 October 2011 17:49:58 Simon Glass wrote: >> On Mon, Oct 31, 2011 at 2:15 PM, Tabi Timur-B04825 wrote: >> > On Sun, Oct 30, 2011 at 7:54 PM, Mike Frysinger wrote: >> >> -static void print_num(const char *, ulong); >> >> +__maybe_unused >> >> +static void print_num(const char *name, ulong value) >> >> +{ >> >> + printf("%-12s= 0x%08lX\n", name, value); >> >> +} >> > >> > Will the linker remove the functions from the binary if they are unusued? >> >> If built with -ffunction-sections and --gc-sections,, then the linker >> can do this sort of thing. Otherwise it can't, but the compiler can. I >> just tested Mike's code on my ARM compiler to make sure and it happily >> removed print_eth() when it was not used. > > i don't think you need function-sections to make this happen. since it is > marked "static", gcc should do DCE on it. the __maybe_unused markings is just > to kill off any warnings about the func not being used (which might occur in > the #ifdef jungle below). that attribute does not tell gcc to retain the > function even if it isn't referenced in this file (as far as gcc can tell). > -mike >
That's right, you don't need function-sections for the compiler to eliminate the code - my point was that the linker can't do this sort of thing...luckily it doesn't need to. There might be an option to control this, a bit like -fkeep-static-consts, but I can't see it. Can't see it being very useful anyway. Regards, Simon _______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

