2005-04-16 15:20:36 -07:00
# ifndef LOAD_OFFSET
# define LOAD_OFFSET 0
# endif
# ifndef VMLINUX_SYMBOL
# define VMLINUX_SYMBOL(_sym_) _sym_
# endif
2005-07-14 20:15:44 +00:00
/* Align . to a 8 byte boundary equals to maximum function alignment. */
# define ALIGN_FUNCTION() . = ALIGN(8)
2005-04-16 15:20:36 -07:00
# define RODATA \
2006-01-06 00:12:01 -08:00
. = ALIGN ( 4096 ) ; \
__start_rodata = . ; \
2005-04-16 15:20:36 -07:00
. rodata : AT ( ADDR ( . rodata ) - LOAD_OFFSET ) { \
* ( . rodata ) * ( . rodata . * ) \
* ( __vermagic ) /* Kernel version magic */ \
} \
\
. rodata1 : AT ( ADDR ( . rodata1 ) - LOAD_OFFSET ) { \
* ( . rodata1 ) \
} \
\
/* PCI quirks */ \
. pci_fixup : AT ( ADDR ( . pci_fixup ) - LOAD_OFFSET ) { \
VMLINUX_SYMBOL ( __start_pci_fixups_early ) = . ; \
* ( . pci_fixup_early ) \
VMLINUX_SYMBOL ( __end_pci_fixups_early ) = . ; \
VMLINUX_SYMBOL ( __start_pci_fixups_header ) = . ; \
* ( . pci_fixup_header ) \
VMLINUX_SYMBOL ( __end_pci_fixups_header ) = . ; \
VMLINUX_SYMBOL ( __start_pci_fixups_final ) = . ; \
* ( . pci_fixup_final ) \
VMLINUX_SYMBOL ( __end_pci_fixups_final ) = . ; \
VMLINUX_SYMBOL ( __start_pci_fixups_enable ) = . ; \
* ( . pci_fixup_enable ) \
VMLINUX_SYMBOL ( __end_pci_fixups_enable ) = . ; \
} \
\
2005-11-07 01:00:15 -08:00
/* RapidIO route ops */ \
. rio_route : AT ( ADDR ( . rio_route ) - LOAD_OFFSET ) { \
VMLINUX_SYMBOL ( __start_rio_route_ops ) = . ; \
* ( . rio_route_ops ) \
VMLINUX_SYMBOL ( __end_rio_route_ops ) = . ; \
} \
\
2005-04-16 15:20:36 -07:00
/* Kernel symbol table: Normal symbols */ \
__ksymtab : AT ( ADDR ( __ksymtab ) - LOAD_OFFSET ) { \
VMLINUX_SYMBOL ( __start___ksymtab ) = . ; \
* ( __ksymtab ) \
VMLINUX_SYMBOL ( __stop___ksymtab ) = . ; \
} \
\
/* Kernel symbol table: GPL-only symbols */ \
__ksymtab_gpl : AT ( ADDR ( __ksymtab_gpl ) - LOAD_OFFSET ) { \
VMLINUX_SYMBOL ( __start___ksymtab_gpl ) = . ; \
* ( __ksymtab_gpl ) \
VMLINUX_SYMBOL ( __stop___ksymtab_gpl ) = . ; \
} \
\
2006-06-28 04:26:45 -07:00
/* Kernel symbol table: Normal unused symbols */ \
__ksymtab_unused : AT ( ADDR ( __ksymtab_unused ) - LOAD_OFFSET ) { \
VMLINUX_SYMBOL ( __start___ksymtab_unused ) = . ; \
* ( __ksymtab_unused ) \
VMLINUX_SYMBOL ( __stop___ksymtab_unused ) = . ; \
} \
\
/* Kernel symbol table: GPL-only unused symbols */ \
__ksymtab_unused_gpl : AT ( ADDR ( __ksymtab_unused_gpl ) - LOAD_OFFSET ) { \
VMLINUX_SYMBOL ( __start___ksymtab_unused_gpl ) = . ; \
* ( __ksymtab_unused_gpl ) \
VMLINUX_SYMBOL ( __stop___ksymtab_unused_gpl ) = . ; \
} \
\
2006-03-20 13:17:13 -08:00
/* Kernel symbol table: GPL-future-only symbols */ \
__ksymtab_gpl_future : AT ( ADDR ( __ksymtab_gpl_future ) - LOAD_OFFSET ) { \
VMLINUX_SYMBOL ( __start___ksymtab_gpl_future ) = . ; \
* ( __ksymtab_gpl_future ) \
VMLINUX_SYMBOL ( __stop___ksymtab_gpl_future ) = . ; \
} \
\
2005-04-16 15:20:36 -07:00
/* Kernel symbol table: Normal symbols */ \
__kcrctab : AT ( ADDR ( __kcrctab ) - LOAD_OFFSET ) { \
VMLINUX_SYMBOL ( __start___kcrctab ) = . ; \
* ( __kcrctab ) \
VMLINUX_SYMBOL ( __stop___kcrctab ) = . ; \
} \
\
/* Kernel symbol table: GPL-only symbols */ \
__kcrctab_gpl : AT ( ADDR ( __kcrctab_gpl ) - LOAD_OFFSET ) { \
VMLINUX_SYMBOL ( __start___kcrctab_gpl ) = . ; \
* ( __kcrctab_gpl ) \
VMLINUX_SYMBOL ( __stop___kcrctab_gpl ) = . ; \
} \
\
2006-06-28 04:26:45 -07:00
/* Kernel symbol table: Normal unused symbols */ \
__kcrctab_unused : AT ( ADDR ( __kcrctab_unused ) - LOAD_OFFSET ) { \
VMLINUX_SYMBOL ( __start___kcrctab_unused ) = . ; \
* ( __kcrctab_unused ) \
VMLINUX_SYMBOL ( __stop___kcrctab_unused ) = . ; \
} \
\
/* Kernel symbol table: GPL-only unused symbols */ \
__kcrctab_unused_gpl : AT ( ADDR ( __kcrctab_unused_gpl ) - LOAD_OFFSET ) { \
VMLINUX_SYMBOL ( __start___kcrctab_unused_gpl ) = . ; \
* ( __kcrctab_unused_gpl ) \
VMLINUX_SYMBOL ( __stop___kcrctab_unused_gpl ) = . ; \
} \
\
2006-03-20 13:17:13 -08:00
/* Kernel symbol table: GPL-future-only symbols */ \
__kcrctab_gpl_future : AT ( ADDR ( __kcrctab_gpl_future ) - LOAD_OFFSET ) { \
VMLINUX_SYMBOL ( __start___kcrctab_gpl_future ) = . ; \
* ( __kcrctab_gpl_future ) \
VMLINUX_SYMBOL ( __stop___kcrctab_gpl_future ) = . ; \
} \
\
2005-04-16 15:20:36 -07:00
/* Kernel symbol table: strings */ \
__ksymtab_strings : AT ( ADDR ( __ksymtab_strings ) - LOAD_OFFSET ) { \
* ( __ksymtab_strings ) \
} \
2006-01-06 00:12:01 -08:00
__end_rodata = . ; \
. = ALIGN ( 4096 ) ; \
2005-04-16 15:20:36 -07:00
\
/* Built-in module parameters. */ \
__param : AT ( ADDR ( __param ) - LOAD_OFFSET ) { \
VMLINUX_SYMBOL ( __start___param ) = . ; \
* ( __param ) \
VMLINUX_SYMBOL ( __stop___param ) = . ; \
}
# define SECURITY_INIT \
2005-06-25 14:57:46 -07:00
. security_initcall . init : AT ( ADDR ( . security_initcall . init ) - LOAD_OFFSET ) { \
2005-04-16 15:20:36 -07:00
VMLINUX_SYMBOL ( __security_initcall_start ) = . ; \
* ( . security_initcall . init ) \
VMLINUX_SYMBOL ( __security_initcall_end ) = . ; \
}
2005-07-14 20:15:44 +00:00
/* sched.text is aling to function alignment to secure we have same
* address even at second ld pass when generating System . map */
2005-04-16 15:20:36 -07:00
# define SCHED_TEXT \
2005-07-14 20:15:44 +00:00
ALIGN_FUNCTION ( ) ; \
2005-04-16 15:20:36 -07:00
VMLINUX_SYMBOL ( __sched_text_start ) = . ; \
* ( . sched . text ) \
VMLINUX_SYMBOL ( __sched_text_end ) = . ;
2005-07-14 20:15:44 +00:00
/* spinlock.text is aling to function alignment to secure we have same
* address even at second ld pass when generating System . map */
2005-04-16 15:20:36 -07:00
# define LOCK_TEXT \
2005-07-14 20:15:44 +00:00
ALIGN_FUNCTION ( ) ; \
2005-04-16 15:20:36 -07:00
VMLINUX_SYMBOL ( __lock_text_start ) = . ; \
* ( . spinlock . text ) \
VMLINUX_SYMBOL ( __lock_text_end ) = . ;
2005-09-06 15:19:26 -07:00
# define KPROBES_TEXT \
ALIGN_FUNCTION ( ) ; \
VMLINUX_SYMBOL ( __kprobes_text_start ) = . ; \
* ( . kprobes . text ) \
VMLINUX_SYMBOL ( __kprobes_text_end ) = . ;
2005-09-10 19:44:54 +02:00
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to
the beginning of the section so we begin them at 0. */
# define DWARF_DEBUG \
/* DWARF 1 */ \
. debug 0 : { * ( . debug ) } \
. line 0 : { * ( . line ) } \
/* GNU DWARF 1 extensions */ \
. debug_srcinfo 0 : { * ( . debug_srcinfo ) } \
. debug_sfnames 0 : { * ( . debug_sfnames ) } \
/* DWARF 1.1 and DWARF 2 */ \
. debug_aranges 0 : { * ( . debug_aranges ) } \
. debug_pubnames 0 : { * ( . debug_pubnames ) } \
/* DWARF 2 */ \
. debug_info 0 : { * ( . debug_info \
. gnu . linkonce . wi . * ) } \
. debug_abbrev 0 : { * ( . debug_abbrev ) } \
. debug_line 0 : { * ( . debug_line ) } \
. debug_frame 0 : { * ( . debug_frame ) } \
. debug_str 0 : { * ( . debug_str ) } \
. debug_loc 0 : { * ( . debug_loc ) } \
. debug_macinfo 0 : { * ( . debug_macinfo ) } \
/* SGI/MIPS DWARF 2 extensions */ \
. debug_weaknames 0 : { * ( . debug_weaknames ) } \
. debug_funcnames 0 : { * ( . debug_funcnames ) } \
. debug_typenames 0 : { * ( . debug_typenames ) } \
. debug_varnames 0 : { * ( . debug_varnames ) } \
/* Stabs debugging sections. */
# define STABS_DEBUG \
. stab 0 : { * ( . stab ) } \
. stabstr 0 : { * ( . stabstr ) } \
. stab . excl 0 : { * ( . stab . excl ) } \
. stab . exclstr 0 : { * ( . stab . exclstr ) } \
. stab . index 0 : { * ( . stab . index ) } \
. stab . indexstr 0 : { * ( . stab . indexstr ) } \
. comment 0 : { * ( . comment ) }