diff --git a/arch/alpha/kernel/vmlinux.lds.S b/arch/alpha/kernel/vmlinux.lds.S index cf1e6fc6c6869bc81d0e0c15d6caf522f4288e99..ab60e81540b597c58f7bbd93eeb152c599f1ea15 100644 --- a/arch/alpha/kernel/vmlinux.lds.S +++ b/arch/alpha/kernel/vmlinux.lds.S @@ -15,7 +15,7 @@ SECTIONS _text = .; /* Text and read-only data */ .text : { - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT *(.fixup) diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index e4156e7868ce5987ef5311c1b2c309cda121beb8..8d4e248a954460fe83ca2788ca77cd122957041e 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S @@ -90,7 +90,7 @@ SECTIONS __exception_text_start = .; *(.exception.text) __exception_text_end = .; - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT #ifdef CONFIG_MMU diff --git a/arch/arm26/kernel/vmlinux-arm26-xip.lds.in b/arch/arm26/kernel/vmlinux-arm26-xip.lds.in index 046a85054018ff4ee849e99d2cfe3483b3025657..89c806a3a51be1a6d9682d415a267e59b61c32ca 100644 --- a/arch/arm26/kernel/vmlinux-arm26-xip.lds.in +++ b/arch/arm26/kernel/vmlinux-arm26-xip.lds.in @@ -64,7 +64,7 @@ SECTIONS .text : { /* Real text segment */ _text = .; /* Text and read-only data */ - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT /* FIXME - borrowed from arm32 - check*/ *(.fixup) diff --git a/arch/arm26/kernel/vmlinux-arm26.lds.in b/arch/arm26/kernel/vmlinux-arm26.lds.in index 1d2949e83be8de301112f98bec3599cd046a7047..e3f9b18d9d23b5211ad6bfcec52b4cb6f0acdde2 100644 --- a/arch/arm26/kernel/vmlinux-arm26.lds.in +++ b/arch/arm26/kernel/vmlinux-arm26.lds.in @@ -65,7 +65,7 @@ SECTIONS .text : { /* Real text segment */ _text = .; /* Text and read-only data */ - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT *(.fixup) diff --git a/arch/avr32/kernel/vmlinux.lds.c b/arch/avr32/kernel/vmlinux.lds.c index e7f72c995a3251361a912521537455ca16de9f11..dbba3912f7cebfd004d8c2ef49bea79b2e96e5bd 100644 --- a/arch/avr32/kernel/vmlinux.lds.c +++ b/arch/avr32/kernel/vmlinux.lds.c @@ -76,7 +76,7 @@ SECTIONS . = 0x100; *(.scall.text) *(.irq.text) - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT KPROBES_TEXT diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S index 6ae9ebbd8e589b977b9858f895eba2856611e25f..36fcc777ea8145b414622ca60d92075d3756ce82 100644 --- a/arch/blackfin/kernel/vmlinux.lds.S +++ b/arch/blackfin/kernel/vmlinux.lds.S @@ -54,7 +54,7 @@ SECTIONS { _text = .; __stext = .; - *(.text) + TEXT_TEXT SCHED_TEXT *(.text.lock) . = ALIGN(16); diff --git a/arch/frv/kernel/vmlinux.lds.S b/arch/frv/kernel/vmlinux.lds.S index 28eae9735ad6b9f5b189699c61518c20a7dc1859..7e0998f7f70fe65d049e599da6e40c9581b1c0fa 100644 --- a/arch/frv/kernel/vmlinux.lds.S +++ b/arch/frv/kernel/vmlinux.lds.S @@ -101,13 +101,14 @@ SECTIONS _stext = .; .text : { *( - .text.start .text .text.* + .text.start .text.* #ifdef CONFIG_DEBUG_INFO .init.text .exit.text .exitcall.exit #endif ) + TEXT_TEXT SCHED_TEXT LOCK_TEXT *(.fixup) diff --git a/arch/h8300/kernel/vmlinux.lds.S b/arch/h8300/kernel/vmlinux.lds.S index 65f1cdc5ee0459fd20b3fab62ee5f36a2e962216..4365162952e438b0ae1858d14300706894d03fc5 100644 --- a/arch/h8300/kernel/vmlinux.lds.S +++ b/arch/h8300/kernel/vmlinux.lds.S @@ -75,7 +75,7 @@ SECTIONS *(.int_redirect) #endif __stext = . ; - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT __etext = . ; diff --git a/arch/i386/kernel/vmlinux.lds.S b/arch/i386/kernel/vmlinux.lds.S index 80bec6640230c9df5e4e9264c055685728004123..dfc439a570d0544f4837d1b6bc4676edb0a2659c 100644 --- a/arch/i386/kernel/vmlinux.lds.S +++ b/arch/i386/kernel/vmlinux.lds.S @@ -44,7 +44,7 @@ SECTIONS /* read-only */ .text : AT(ADDR(.text) - LOAD_OFFSET) { - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT KPROBES_TEXT diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S index 69238264211876fe1f0d506f4cd0cf9c4a5b20a2..19108d0bb060356b9e1732ec9ebb3ceca8202cd7 100644 --- a/arch/ia64/kernel/vmlinux.lds.S +++ b/arch/ia64/kernel/vmlinux.lds.S @@ -44,7 +44,7 @@ SECTIONS .text : AT(ADDR(.text) - LOAD_OFFSET) { IVT_TEXT - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT KPROBES_TEXT diff --git a/arch/m32r/kernel/vmlinux.lds.S b/arch/m32r/kernel/vmlinux.lds.S index 6c73bca3f478cf35d88f8e4a9b169b77bae2d617..bb1a2f50255e8cb747568d388621a55cf10b864d 100644 --- a/arch/m32r/kernel/vmlinux.lds.S +++ b/arch/m32r/kernel/vmlinux.lds.S @@ -27,7 +27,7 @@ SECTIONS _text = .; /* Text and read-only data */ .boot : { *(.boot) } = 0 .text : { - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT *(.fixup) diff --git a/arch/m68k/kernel/vmlinux-std.lds b/arch/m68k/kernel/vmlinux-std.lds index 437b4f8d86c58200d15fcce3a0eaa6d99d9a98d3..a65cef8269760d2ce05b23bc1b33e6495a1bda86 100644 --- a/arch/m68k/kernel/vmlinux-std.lds +++ b/arch/m68k/kernel/vmlinux-std.lds @@ -11,7 +11,7 @@ SECTIONS . = 0x1000; _text = .; /* Text and read-only data */ .text : { - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT *(.fixup) diff --git a/arch/m68k/kernel/vmlinux-sun3.lds b/arch/m68k/kernel/vmlinux-sun3.lds index 2868e206fc76816a5cb795fb31632b5e35c7d713..fa44d6c49acce646367e069beff55824f43d3b8f 100644 --- a/arch/m68k/kernel/vmlinux-sun3.lds +++ b/arch/m68k/kernel/vmlinux-sun3.lds @@ -12,7 +12,7 @@ SECTIONS _text = .; /* Text and read-only data */ .text : { *(.head) - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT *(.fixup) diff --git a/arch/m68knommu/kernel/vmlinux.lds.S b/arch/m68knommu/kernel/vmlinux.lds.S index c86a1bf589d4582fb9cf6ee3bac1dc070556333f..6d4585eb6e79ee9821a81a03130a76b7c4d1d661 100644 --- a/arch/m68knommu/kernel/vmlinux.lds.S +++ b/arch/m68knommu/kernel/vmlinux.lds.S @@ -62,7 +62,7 @@ SECTIONS { .text : { _text = .; _stext = . ; - *(.text) + TEXT_TEXT SCHED_TEXT *(.text.lock) diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S index 043f637e3d106c02c8e38396eba3ea8da7e33723..cfe4b67ef268e1ad314ade3640f84c6eb07f51e3 100644 --- a/arch/mips/kernel/vmlinux.lds.S +++ b/arch/mips/kernel/vmlinux.lds.S @@ -27,7 +27,7 @@ SECTIONS /* read-only */ _text = .; /* Text and read-only data */ .text : { - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT *(.fixup) diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S index c745859905982ad518940c73fb36f498a837ba59..321de82fa86703c5bef12bf1d3d9d7e777c4dedc 100644 --- a/arch/parisc/kernel/vmlinux.lds.S +++ b/arch/parisc/kernel/vmlinux.lds.S @@ -51,7 +51,7 @@ SECTIONS _text = .; /* Text and read-only data */ .text ALIGN(16) : { - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT *(.text.do_softirq) diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S index 132067313147b37d107e3402e83b938fcc915e7a..f26620988860bbac524b5b371e7fa36d1440ae4d 100644 --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S @@ -34,7 +34,8 @@ SECTIONS /* Text and gots */ .text : { _text = .; - *(.text .text.*) + *(.text.*) + TEXT_TEXT SCHED_TEXT LOCK_TEXT KPROBES_TEXT diff --git a/arch/ppc/kernel/vmlinux.lds.S b/arch/ppc/kernel/vmlinux.lds.S index 44cd128fb719a54d724a1e9fd748917ac86c81b6..419ef7e8e3843da2d88b5ab592c78fda63b44284 100644 --- a/arch/ppc/kernel/vmlinux.lds.S +++ b/arch/ppc/kernel/vmlinux.lds.S @@ -32,7 +32,7 @@ SECTIONS .text : { _text = .; - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT *(.fixup) diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S index e9d3432aba60965f48c136decd8bc407c918c42e..89c2ec5c85ff160ab21e3ced55f07d8fd1298f56 100644 --- a/arch/s390/kernel/vmlinux.lds.S +++ b/arch/s390/kernel/vmlinux.lds.S @@ -21,7 +21,7 @@ SECTIONS . = 0x00000000; _text = .; /* Text and read-only data */ .text : { - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT KPROBES_TEXT diff --git a/arch/sh/kernel/vmlinux.lds.S b/arch/sh/kernel/vmlinux.lds.S index d83143cc5ca93de4345ad33210e34023304fa449..2367869d21410639ccc82beddfc0c802adbf4617 100644 --- a/arch/sh/kernel/vmlinux.lds.S +++ b/arch/sh/kernel/vmlinux.lds.S @@ -22,7 +22,7 @@ SECTIONS *(.empty_zero_page) } = 0 .text : { - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT *(.fixup) diff --git a/arch/sh64/kernel/vmlinux.lds.S b/arch/sh64/kernel/vmlinux.lds.S index 4f9616f39830f30ae532d1e3c67cb7adf74ddf66..fdf72ceff86997337ecc906098ddc990c138a645 100644 --- a/arch/sh64/kernel/vmlinux.lds.S +++ b/arch/sh64/kernel/vmlinux.lds.S @@ -54,7 +54,7 @@ SECTIONS } = 0 .text : C_PHYS(.text) { - *(.text) + TEXT_TEXT *(.text64) *(.text..SHmedia32) SCHED_TEXT diff --git a/arch/sparc/kernel/vmlinux.lds.S b/arch/sparc/kernel/vmlinux.lds.S index f0bb6e60e6205ea0bb53ac43dec332aea0feca77..5cb600e29875c8ee36aa5d1aae9fff42087d3ed4 100644 --- a/arch/sparc/kernel/vmlinux.lds.S +++ b/arch/sparc/kernel/vmlinux.lds.S @@ -12,7 +12,7 @@ SECTIONS .text 0xf0004000 : { _text = .; - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT *(.gnu.warning) diff --git a/arch/sparc64/kernel/vmlinux.lds.S b/arch/sparc64/kernel/vmlinux.lds.S index 13fa2a2e4513b75cdae8052b544d5a96bf134c29..f06da20533f5432110ebc242bee7af3497236158 100644 --- a/arch/sparc64/kernel/vmlinux.lds.S +++ b/arch/sparc64/kernel/vmlinux.lds.S @@ -14,7 +14,7 @@ SECTIONS .text 0x0000000000404000 : { _text = .; - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT KPROBES_TEXT diff --git a/arch/um/kernel/dyn.lds.S b/arch/um/kernel/dyn.lds.S index 87a4e4427d8db2e3e7a83fd8ee0667d287516029..ec8477d0feb305f145e5e8802733a2d59a26d5d0 100644 --- a/arch/um/kernel/dyn.lds.S +++ b/arch/um/kernel/dyn.lds.S @@ -62,7 +62,7 @@ SECTIONS } =0x90909090 .plt : { *(.plt) } .text : { - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT *(.fixup) diff --git a/arch/um/kernel/uml.lds.S b/arch/um/kernel/uml.lds.S index bc59f97e34d00ab2886b75af77376e52d6edb432..84351059c356c983caa006a411656b5360370ad6 100644 --- a/arch/um/kernel/uml.lds.S +++ b/arch/um/kernel/uml.lds.S @@ -37,7 +37,7 @@ SECTIONS .text : { - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT *(.fixup) diff --git a/arch/v850/kernel/vmlinux.lds.S b/arch/v850/kernel/vmlinux.lds.S index 3563082212510b09eb92d922c2eedb28ea6d26ab..9e2b4bc06c68b9fd5f5892dfc50263e155f3e3a7 100644 --- a/arch/v850/kernel/vmlinux.lds.S +++ b/arch/v850/kernel/vmlinux.lds.S @@ -92,7 +92,7 @@ #define TEXT_CONTENTS \ _text = .; \ __stext = . ; \ - *(.text) \ + TEXT_TEXT \ SCHED_TEXT \ *(.exit.text) /* 2.5 convention */ \ *(.text.exit) /* 2.4 convention */ \ diff --git a/arch/x86_64/kernel/vmlinux.lds.S b/arch/x86_64/kernel/vmlinux.lds.S index 88cfa50b424d6c203f6fdfe19fb86928db700b58..c77142d9fba9aa5f6941c63550850cb075c207a3 100644 --- a/arch/x86_64/kernel/vmlinux.lds.S +++ b/arch/x86_64/kernel/vmlinux.lds.S @@ -31,7 +31,7 @@ SECTIONS *(.bootstrap.text) _stext = .; /* Then the rest */ - *(.text) + TEXT_TEXT SCHED_TEXT LOCK_TEXT KPROBES_TEXT diff --git a/arch/xtensa/kernel/vmlinux.lds.S b/arch/xtensa/kernel/vmlinux.lds.S index 4fbd66a52a8818002bbf7165427707ec78dda339..7d2dfb286a92f507b712313119ce6b6cad1a46ae 100644 --- a/arch/xtensa/kernel/vmlinux.lds.S +++ b/arch/xtensa/kernel/vmlinux.lds.S @@ -84,7 +84,8 @@ SECTIONS { /* The .head.text section must be the first section! */ *(.head.text) - *(.literal .text) + *(.literal) + TEXT_TEXT *(.srom.text) VMLINUX_SYMBOL(__sched_text_start) = .; *(.sched.literal .sched.text) diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index f3806a74c4784c8097d58402fc7e3cbc642888d7..a464227a66b1d06d45b1aaedb6c9ac75d1b20687 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -139,6 +139,12 @@ VMLINUX_SYMBOL(__security_initcall_end) = .; \ } +/* .text section. Map to function alignment to avoid address changes + * during second ld run in second ld pass when generating System.map */ +#define TEXT_TEXT \ + ALIGN_FUNCTION(); \ + *(.text) + /* sched.text is aling to function alignment to secure we have same * address even at second ld pass when generating System.map */ #define SCHED_TEXT \