11da177e4SLinus Torvalds #ifndef LOAD_OFFSET 21da177e4SLinus Torvalds #define LOAD_OFFSET 0 31da177e4SLinus Torvalds #endif 41da177e4SLinus Torvalds 51da177e4SLinus Torvalds #ifndef VMLINUX_SYMBOL 61da177e4SLinus Torvalds #define VMLINUX_SYMBOL(_sym_) _sym_ 71da177e4SLinus Torvalds #endif 81da177e4SLinus Torvalds 91da177e4SLinus Torvalds #define RODATA \ 101da177e4SLinus Torvalds .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \ 111da177e4SLinus Torvalds *(.rodata) *(.rodata.*) \ 121da177e4SLinus Torvalds *(__vermagic) /* Kernel version magic */ \ 131da177e4SLinus Torvalds } \ 141da177e4SLinus Torvalds \ 151da177e4SLinus Torvalds .rodata1 : AT(ADDR(.rodata1) - LOAD_OFFSET) { \ 161da177e4SLinus Torvalds *(.rodata1) \ 171da177e4SLinus Torvalds } \ 181da177e4SLinus Torvalds \ 191da177e4SLinus Torvalds /* PCI quirks */ \ 201da177e4SLinus Torvalds .pci_fixup : AT(ADDR(.pci_fixup) - LOAD_OFFSET) { \ 211da177e4SLinus Torvalds VMLINUX_SYMBOL(__start_pci_fixups_early) = .; \ 221da177e4SLinus Torvalds *(.pci_fixup_early) \ 231da177e4SLinus Torvalds VMLINUX_SYMBOL(__end_pci_fixups_early) = .; \ 241da177e4SLinus Torvalds VMLINUX_SYMBOL(__start_pci_fixups_header) = .; \ 251da177e4SLinus Torvalds *(.pci_fixup_header) \ 261da177e4SLinus Torvalds VMLINUX_SYMBOL(__end_pci_fixups_header) = .; \ 271da177e4SLinus Torvalds VMLINUX_SYMBOL(__start_pci_fixups_final) = .; \ 281da177e4SLinus Torvalds *(.pci_fixup_final) \ 291da177e4SLinus Torvalds VMLINUX_SYMBOL(__end_pci_fixups_final) = .; \ 301da177e4SLinus Torvalds VMLINUX_SYMBOL(__start_pci_fixups_enable) = .; \ 311da177e4SLinus Torvalds *(.pci_fixup_enable) \ 321da177e4SLinus Torvalds VMLINUX_SYMBOL(__end_pci_fixups_enable) = .; \ 331da177e4SLinus Torvalds } \ 341da177e4SLinus Torvalds \ 351da177e4SLinus Torvalds /* Kernel symbol table: Normal symbols */ \ 361da177e4SLinus Torvalds __ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \ 371da177e4SLinus Torvalds VMLINUX_SYMBOL(__start___ksymtab) = .; \ 381da177e4SLinus Torvalds *(__ksymtab) \ 391da177e4SLinus Torvalds VMLINUX_SYMBOL(__stop___ksymtab) = .; \ 401da177e4SLinus Torvalds } \ 411da177e4SLinus Torvalds \ 421da177e4SLinus Torvalds /* Kernel symbol table: GPL-only symbols */ \ 431da177e4SLinus Torvalds __ksymtab_gpl : AT(ADDR(__ksymtab_gpl) - LOAD_OFFSET) { \ 441da177e4SLinus Torvalds VMLINUX_SYMBOL(__start___ksymtab_gpl) = .; \ 451da177e4SLinus Torvalds *(__ksymtab_gpl) \ 461da177e4SLinus Torvalds VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \ 471da177e4SLinus Torvalds } \ 481da177e4SLinus Torvalds \ 491da177e4SLinus Torvalds /* Kernel symbol table: Normal symbols */ \ 501da177e4SLinus Torvalds __kcrctab : AT(ADDR(__kcrctab) - LOAD_OFFSET) { \ 511da177e4SLinus Torvalds VMLINUX_SYMBOL(__start___kcrctab) = .; \ 521da177e4SLinus Torvalds *(__kcrctab) \ 531da177e4SLinus Torvalds VMLINUX_SYMBOL(__stop___kcrctab) = .; \ 541da177e4SLinus Torvalds } \ 551da177e4SLinus Torvalds \ 561da177e4SLinus Torvalds /* Kernel symbol table: GPL-only symbols */ \ 571da177e4SLinus Torvalds __kcrctab_gpl : AT(ADDR(__kcrctab_gpl) - LOAD_OFFSET) { \ 581da177e4SLinus Torvalds VMLINUX_SYMBOL(__start___kcrctab_gpl) = .; \ 591da177e4SLinus Torvalds *(__kcrctab_gpl) \ 601da177e4SLinus Torvalds VMLINUX_SYMBOL(__stop___kcrctab_gpl) = .; \ 611da177e4SLinus Torvalds } \ 621da177e4SLinus Torvalds \ 631da177e4SLinus Torvalds /* Kernel symbol table: strings */ \ 641da177e4SLinus Torvalds __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \ 651da177e4SLinus Torvalds *(__ksymtab_strings) \ 661da177e4SLinus Torvalds } \ 671da177e4SLinus Torvalds \ 681da177e4SLinus Torvalds /* Built-in module parameters. */ \ 691da177e4SLinus Torvalds __param : AT(ADDR(__param) - LOAD_OFFSET) { \ 701da177e4SLinus Torvalds VMLINUX_SYMBOL(__start___param) = .; \ 711da177e4SLinus Torvalds *(__param) \ 721da177e4SLinus Torvalds VMLINUX_SYMBOL(__stop___param) = .; \ 731da177e4SLinus Torvalds } 741da177e4SLinus Torvalds 751da177e4SLinus Torvalds #define SECURITY_INIT \ 761da177e4SLinus Torvalds .security_initcall.init : { \ 771da177e4SLinus Torvalds VMLINUX_SYMBOL(__security_initcall_start) = .; \ 781da177e4SLinus Torvalds *(.security_initcall.init) \ 791da177e4SLinus Torvalds VMLINUX_SYMBOL(__security_initcall_end) = .; \ 801da177e4SLinus Torvalds } 811da177e4SLinus Torvalds 821da177e4SLinus Torvalds #define SCHED_TEXT \ 831da177e4SLinus Torvalds VMLINUX_SYMBOL(__sched_text_start) = .; \ 841da177e4SLinus Torvalds *(.sched.text) \ 851da177e4SLinus Torvalds VMLINUX_SYMBOL(__sched_text_end) = .; 861da177e4SLinus Torvalds 871da177e4SLinus Torvalds #define LOCK_TEXT \ 881da177e4SLinus Torvalds VMLINUX_SYMBOL(__lock_text_start) = .; \ 891da177e4SLinus Torvalds *(.spinlock.text) \ 901da177e4SLinus Torvalds VMLINUX_SYMBOL(__lock_text_end) = .; 91