mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-27 00:51:35 +00:00
x86, vmlinux.lds: unify .text output sections
32 bit x86 had a dedicated .text.head output section, whereas 64 bit had it all in a single output section. In the unified version the dedicated .text.head output section was kept to have full control over the head code. 32 bit: - Moved definition of _stext to the linker script. The definition is located _after_ .text.page_aligned as this is what 32 bit did before. The ALIGN(8) was introduced so we hit the exact same address (on the tested config) before and after the move. I assume that it is a bug that _stext did not cover the .text.page_aligned section - if this is true it can be fixed in a follow-up patch (and the ugly ALIGN() can be dropped). [ Impact: 64-bit: cleanup, 32-bit: use the 64-bit linker script ] Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Cc: Tim Abbott <tabbott@MIT.EDU> Cc: Linus Torvalds <torvalds@linux-foundation.org> LKML-Reference: <1240991249-27117-5-git-send-email-sam@ravnborg.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
444e0ae483
commit
dfc20895d9
4 changed files with 31 additions and 51 deletions
|
@ -608,13 +608,6 @@ ignore_int:
|
||||||
ENTRY(initial_code)
|
ENTRY(initial_code)
|
||||||
.long i386_start_kernel
|
.long i386_start_kernel
|
||||||
|
|
||||||
.section .text
|
|
||||||
/*
|
|
||||||
* Real beginning of normal "text" segment
|
|
||||||
*/
|
|
||||||
ENTRY(stext)
|
|
||||||
ENTRY(_stext)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* BSS section
|
* BSS section
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -64,6 +64,37 @@ SECTIONS
|
||||||
phys_startup_64 = startup_64 - LOAD_OFFSET;
|
phys_startup_64 = startup_64 - LOAD_OFFSET;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Text and read-only data */
|
||||||
|
|
||||||
|
/* bootstrapping code */
|
||||||
|
.text.head : AT(ADDR(.text.head) - LOAD_OFFSET) {
|
||||||
|
_text = .;
|
||||||
|
*(.text.head)
|
||||||
|
} :text = 0x9090
|
||||||
|
|
||||||
|
/* The rest of the text */
|
||||||
|
.text : AT(ADDR(.text) - LOAD_OFFSET) {
|
||||||
|
#ifdef CONFIG_X86_32
|
||||||
|
/* not really needed, already page aligned */
|
||||||
|
. = ALIGN(PAGE_SIZE);
|
||||||
|
*(.text.page_aligned)
|
||||||
|
#endif
|
||||||
|
. = ALIGN(8);
|
||||||
|
_stext = .;
|
||||||
|
TEXT_TEXT
|
||||||
|
SCHED_TEXT
|
||||||
|
LOCK_TEXT
|
||||||
|
KPROBES_TEXT
|
||||||
|
IRQENTRY_TEXT
|
||||||
|
*(.fixup)
|
||||||
|
*(.gnu.warning)
|
||||||
|
/* End of text section */
|
||||||
|
_etext = .;
|
||||||
|
} :text = 0x9090
|
||||||
|
|
||||||
|
NOTES :text :note
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_X86_32
|
#ifdef CONFIG_X86_32
|
||||||
# include "vmlinux_32.lds.S"
|
# include "vmlinux_32.lds.S"
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -1,27 +1,3 @@
|
||||||
/* Text and read-only data */
|
|
||||||
.text.head : AT(ADDR(.text.head) - LOAD_OFFSET) {
|
|
||||||
_text = .;
|
|
||||||
*(.text.head)
|
|
||||||
} :text = 0x9090
|
|
||||||
|
|
||||||
/* read-only */
|
|
||||||
.text : AT(ADDR(.text) - LOAD_OFFSET) {
|
|
||||||
/* not really needed, already page aligned */
|
|
||||||
. = ALIGN(PAGE_SIZE);
|
|
||||||
*(.text.page_aligned)
|
|
||||||
TEXT_TEXT
|
|
||||||
SCHED_TEXT
|
|
||||||
LOCK_TEXT
|
|
||||||
KPROBES_TEXT
|
|
||||||
IRQENTRY_TEXT
|
|
||||||
*(.fixup)
|
|
||||||
*(.gnu.warning)
|
|
||||||
/* End of text section */
|
|
||||||
_etext = .;
|
|
||||||
} :text = 0x9090
|
|
||||||
|
|
||||||
NOTES :text :note
|
|
||||||
|
|
||||||
/* Exception table */
|
/* Exception table */
|
||||||
. = ALIGN(16);
|
. = ALIGN(16);
|
||||||
__ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
|
__ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
|
||||||
|
|
|
@ -1,23 +1,3 @@
|
||||||
/* Text and read-only data */
|
|
||||||
.text : AT(ADDR(.text) - LOAD_OFFSET) {
|
|
||||||
_text = .;
|
|
||||||
/* First the code that has to be first for bootstrapping */
|
|
||||||
*(.text.head)
|
|
||||||
_stext = .;
|
|
||||||
/* Then the rest */
|
|
||||||
TEXT_TEXT
|
|
||||||
SCHED_TEXT
|
|
||||||
LOCK_TEXT
|
|
||||||
KPROBES_TEXT
|
|
||||||
IRQENTRY_TEXT
|
|
||||||
*(.fixup)
|
|
||||||
*(.gnu.warning)
|
|
||||||
/* End of text section */
|
|
||||||
_etext = .;
|
|
||||||
} :text = 0x9090
|
|
||||||
|
|
||||||
NOTES :text :note
|
|
||||||
|
|
||||||
/* Exception table */
|
/* Exception table */
|
||||||
. = ALIGN(16);
|
. = ALIGN(16);
|
||||||
__ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
|
__ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue