mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-18 10:34:24 +08:00
uml: fix linker script alignment bugs
Fix a class of bugs in the UML linker scripts which caused section boundary variables to sometimes not line up with their sections. Signed-off-by: Jeff Dike <jdike@linux.intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
6419168813
commit
c7ec16da5a
@ -71,11 +71,13 @@ SECTIONS
|
|||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
|
||||||
. = ALIGN(4096);
|
. = ALIGN(4096);
|
||||||
__syscall_stub_start = .;
|
|
||||||
*(.__syscall_stub*)
|
|
||||||
__syscall_stub_end = .;
|
|
||||||
. = ALIGN(4096);
|
|
||||||
} =0x90909090
|
} =0x90909090
|
||||||
|
. = ALIGN(4096);
|
||||||
|
.syscall_stub : {
|
||||||
|
__syscall_stub_start = .;
|
||||||
|
*(.__syscall_stub*)
|
||||||
|
__syscall_stub_end = .;
|
||||||
|
}
|
||||||
.fini : {
|
.fini : {
|
||||||
KEEP (*(.fini))
|
KEEP (*(.fini))
|
||||||
} =0x90909090
|
} =0x90909090
|
||||||
@ -138,8 +140,8 @@ SECTIONS
|
|||||||
.got : { *(.got.plt) *(.got) }
|
.got : { *(.got.plt) *(.got) }
|
||||||
_edata = .;
|
_edata = .;
|
||||||
PROVIDE (edata = .);
|
PROVIDE (edata = .);
|
||||||
__bss_start = .;
|
|
||||||
.bss : {
|
.bss : {
|
||||||
|
__bss_start = .;
|
||||||
*(.dynbss)
|
*(.dynbss)
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
*(.bss .bss.* .gnu.linkonce.b.*)
|
||||||
*(COMMON)
|
*(COMMON)
|
||||||
|
@ -44,12 +44,13 @@ SECTIONS
|
|||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
/* .gnu.warning sections are handled specially by elf32.em. */
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
*(.gnu.linkonce.t*)
|
*(.gnu.linkonce.t*)
|
||||||
|
}
|
||||||
|
|
||||||
. = ALIGN(4096);
|
. = ALIGN(4096);
|
||||||
__syscall_stub_start = .;
|
.syscall_stub : {
|
||||||
*(.__syscall_stub*)
|
__syscall_stub_start = .;
|
||||||
__syscall_stub_end = .;
|
*(.__syscall_stub*)
|
||||||
. = ALIGN(4096);
|
__syscall_stub_end = .;
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "asm/common.lds.S"
|
#include "asm/common.lds.S"
|
||||||
|
@ -16,82 +16,112 @@
|
|||||||
|
|
||||||
. = ALIGN(4096);
|
. = ALIGN(4096);
|
||||||
.note : { *(.note.*) }
|
.note : { *(.note.*) }
|
||||||
__start___ex_table = .;
|
__ex_table : {
|
||||||
__ex_table : { *(__ex_table) }
|
__start___ex_table = .;
|
||||||
__stop___ex_table = .;
|
*(__ex_table)
|
||||||
|
__stop___ex_table = .;
|
||||||
|
}
|
||||||
|
|
||||||
BUG_TABLE
|
BUG_TABLE
|
||||||
|
|
||||||
__uml_setup_start = .;
|
.uml.setup.init : {
|
||||||
.uml.setup.init : { *(.uml.setup.init) }
|
__uml_setup_start = .;
|
||||||
__uml_setup_end = .;
|
*(.uml.setup.init)
|
||||||
|
__uml_setup_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
__uml_help_start = .;
|
.uml.help.init : {
|
||||||
.uml.help.init : { *(.uml.help.init) }
|
__uml_help_start = .;
|
||||||
__uml_help_end = .;
|
*(.uml.help.init)
|
||||||
|
__uml_help_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
__uml_postsetup_start = .;
|
.uml.postsetup.init : {
|
||||||
.uml.postsetup.init : { *(.uml.postsetup.init) }
|
__uml_postsetup_start = .;
|
||||||
__uml_postsetup_end = .;
|
*(.uml.postsetup.init)
|
||||||
|
__uml_postsetup_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
__setup_start = .;
|
.init.setup : {
|
||||||
.init.setup : { *(.init.setup) }
|
__setup_start = .;
|
||||||
__setup_end = .;
|
*(.init.setup)
|
||||||
|
__setup_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
__per_cpu_start = . ;
|
.data.percpu : {
|
||||||
.data.percpu : { *(.data.percpu) }
|
__per_cpu_start = . ;
|
||||||
__per_cpu_end = . ;
|
*(.data.percpu)
|
||||||
|
__per_cpu_end = . ;
|
||||||
__initcall_start = .;
|
}
|
||||||
.initcall.init : {
|
|
||||||
INITCALLS
|
.initcall.init : {
|
||||||
|
__initcall_start = .;
|
||||||
|
INITCALLS
|
||||||
|
__initcall_end = .;
|
||||||
}
|
}
|
||||||
__initcall_end = .;
|
|
||||||
|
|
||||||
__con_initcall_start = .;
|
.con_initcall.init : {
|
||||||
.con_initcall.init : { *(.con_initcall.init) }
|
__con_initcall_start = .;
|
||||||
__con_initcall_end = .;
|
*(.con_initcall.init)
|
||||||
|
__con_initcall_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
__uml_initcall_start = .;
|
.uml.initcall.init : {
|
||||||
.uml.initcall.init : { *(.uml.initcall.init) }
|
__uml_initcall_start = .;
|
||||||
__uml_initcall_end = .;
|
*(.uml.initcall.init)
|
||||||
|
__uml_initcall_end = .;
|
||||||
|
}
|
||||||
__init_end = .;
|
__init_end = .;
|
||||||
|
|
||||||
SECURITY_INIT
|
SECURITY_INIT
|
||||||
|
|
||||||
__exitcall_begin = .;
|
.exitcall : {
|
||||||
.exitcall : { *(.exitcall.exit) }
|
__exitcall_begin = .;
|
||||||
__exitcall_end = .;
|
*(.exitcall.exit)
|
||||||
|
__exitcall_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
__uml_exitcall_begin = .;
|
.uml.exitcall : {
|
||||||
.uml.exitcall : { *(.uml.exitcall.exit) }
|
__uml_exitcall_begin = .;
|
||||||
__uml_exitcall_end = .;
|
*(.uml.exitcall.exit)
|
||||||
|
__uml_exitcall_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
__alt_instructions = .;
|
.altinstructions : {
|
||||||
.altinstructions : { *(.altinstructions) }
|
__alt_instructions = .;
|
||||||
__alt_instructions_end = .;
|
*(.altinstructions)
|
||||||
|
__alt_instructions_end = .;
|
||||||
|
}
|
||||||
.altinstr_replacement : { *(.altinstr_replacement) }
|
.altinstr_replacement : { *(.altinstr_replacement) }
|
||||||
/* .exit.text is discard at runtime, not link time, to deal with references
|
/* .exit.text is discard at runtime, not link time, to deal with references
|
||||||
from .altinstructions and .eh_frame */
|
from .altinstructions and .eh_frame */
|
||||||
.exit.text : { *(.exit.text) }
|
.exit.text : { *(.exit.text) }
|
||||||
.exit.data : { *(.exit.data) }
|
.exit.data : { *(.exit.data) }
|
||||||
|
|
||||||
__preinit_array_start = .;
|
.preinit_array : {
|
||||||
.preinit_array : { *(.preinit_array) }
|
__preinit_array_start = .;
|
||||||
__preinit_array_end = .;
|
*(.preinit_array)
|
||||||
__init_array_start = .;
|
__preinit_array_end = .;
|
||||||
.init_array : { *(.init_array) }
|
}
|
||||||
__init_array_end = .;
|
.init_array : {
|
||||||
__fini_array_start = .;
|
__init_array_start = .;
|
||||||
.fini_array : { *(.fini_array) }
|
*(.init_array)
|
||||||
__fini_array_end = .;
|
__init_array_end = .;
|
||||||
|
}
|
||||||
|
.fini_array : {
|
||||||
|
__fini_array_start = .;
|
||||||
|
*(.fini_array)
|
||||||
|
__fini_array_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
. = ALIGN(4096);
|
. = ALIGN(4096);
|
||||||
__initramfs_start = .;
|
.init.ramfs : {
|
||||||
.init.ramfs : { *(.init.ramfs) }
|
__initramfs_start = .;
|
||||||
__initramfs_end = .;
|
*(.init.ramfs)
|
||||||
|
__initramfs_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
/* Sections to be discarded */
|
/* Sections to be discarded */
|
||||||
/DISCARD/ : {
|
/DISCARD/ : {
|
||||||
|
Loading…
Reference in New Issue
Block a user