On Tue, Jun 24, 2003 at 06:00:16AM -0400, ik@cyberspace.org wrote: > I'm porting Linux kernel to a mips board for which I need to understand > the various symbols used in the kernel. > > For example what is the use of the following symbols > `__init_begin' > `__init_end' > `__initcall_start > `__initcall_end' > `_ftext' > `__setup_start' > `__setup_end' > > I'm not good in these linker scripts... any help pointers would be of > great help to me ! (I'm referrring gnu ld manual pages ... still have a > long way to go :( You'll find more information in the GNU info pages than in the man page which is sort of an option summary only. Of course both only cover ld, not the way it's actually being used in Linux. _ftext is the start of the executable kernel code. __init_begin and __init_end wrap the kernel's initialization code which will be freed after full initialization. See arch/mips/mm/init.c:__init_begin() and arch/mips/mm/init.c:free_initmem() for how it's used. __initcall_start and __initcall_end are used for the initcalls in init/main.c. See how those symbols are used in init/main.c:do_initcalls(). __setup_start and __setup_end are used in similarly obscure way to mark start and end of the .setup.init section; see init/main.c:checksetup() and <linux/init.h> for it's use. Ralf