diff options
Diffstat (limited to 'src/arch/x86')
-rw-r--r-- | src/arch/x86/Makefile.inc | 8 | ||||
-rw-r--r-- | src/arch/x86/init/romstage.ld | 7 | ||||
-rw-r--r-- | src/arch/x86/ramstage.ld | 11 |
3 files changed, 14 insertions, 12 deletions
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc index a92c55c423..7acdb57b12 100644 --- a/src/arch/x86/Makefile.inc +++ b/src/arch/x86/Makefile.inc @@ -27,11 +27,7 @@ subdirs-y += boot subdirs-y += lib subdirs-y += smp -ifeq ($(CONFIG_COMPILER_GCC),y) -DISASSEMBLY=-Wa,-acdlns -else DISASSEMBLY=-Wa,--divide -endif OPTION_TABLE_H:= ifeq ($(CONFIG_HAVE_OPTION_TABLE),y) @@ -214,7 +210,7 @@ $(objcbfs)/romstage_null.debug: $$(romstage-objs) $(objgenerated)/romstage_null. $(objcbfs)/romstage.debug: $$(romstage-objs) $(objgenerated)/romstage.ld $$(romstage-libs) @printf " LINK $(subst $(obj)/,,$(@))\n" - $(LD_romstage) -nostdlib -nostartfiles -static -o $@ -L$(obj) $(COMPILER_RT_FLAGS_romstage) --start-group $(romstage-objs) $(romstage-libs) $(COMPILER_RT_romstage) --end-group -T $(objgenerated)/romstage.ld + $(LD_romstage) --gc-sections -nostdlib -nostartfiles -static -o $@ -L$(obj) $(COMPILER_RT_FLAGS_romstage) --start-group $(romstage-objs) $(romstage-libs) $(COMPILER_RT_romstage) --end-group -T $(objgenerated)/romstage.ld $(objgenerated)/romstage_null.ld: $$(ldscripts) $(obj)/ldoptions @printf " GEN $(subst $(obj)/,,$(@))\n" @@ -310,7 +306,7 @@ else $(objcbfs)/ramstage.debug: $(objgenerated)/ramstage.o $(src)/arch/x86/ramstage.ld @printf " CC $(subst $(obj)/,,$(@))\n" - $(LD_ramstage) -o $@ -L$(obj) $< -T $(src)/arch/x86/ramstage.ld + $(LD_ramstage) --gc-sections -o $@ -L$(obj) $< -T $(src)/arch/x86/ramstage.ld endif diff --git a/src/arch/x86/init/romstage.ld b/src/arch/x86/init/romstage.ld index 50eb4ab222..95b9571e37 100644 --- a/src/arch/x86/init/romstage.ld +++ b/src/arch/x86/init/romstage.ld @@ -30,13 +30,16 @@ SECTIONS .rom . : { _rom = .; *(.rom.text); + *(.rom.text.*); + *(.text); + *(.text.*); *(.rom.data); *(.rodata); *(.rodata.*); *(.rom.data.*); . = ALIGN(16); _car_migrate_start = .; - *(.car.migrate); + KEEP(*(.car.migrate)); LONG(0); _car_migrate_end = .; . = ALIGN(16); @@ -73,7 +76,7 @@ SECTIONS . = 0xffffff00; .illegal_globals . : { *(EXCLUDE_FILE (*/libagesa.*.a: */buildOpts.romstage.o */agesawrapper.romstage.o */vendorcode/amd/agesa/* */vendorcode/amd/cimx/*) .data) - *(.data.*) + *(EXCLUDE_FILE (*/libagesa.*.a: */buildOpts.romstage.o */agesawrapper.romstage.o */vendorcode/amd/agesa/* */vendorcode/amd/cimx/*) .data.*) *(.bss) *(.bss.*) *(.sbss) diff --git a/src/arch/x86/ramstage.ld b/src/arch/x86/ramstage.ld index 1c8e8dcd6f..0843be7906 100644 --- a/src/arch/x86/ramstage.ld +++ b/src/arch/x86/ramstage.ld @@ -42,7 +42,7 @@ SECTIONS .ctors : { . = ALIGN(0x100); __CTOR_LIST__ = .; - *(.ctors); + KEEP(*(.ctors)); LONG(0); __CTOR_END__ = .; } @@ -55,13 +55,13 @@ SECTIONS * section names the equivalent changes need to made to * rmodule.ld. */ pci_drivers = . ; - *(.rodata.pci_driver) + KEEP(*(.rodata.pci_driver)); epci_drivers = . ; cpu_drivers = . ; - *(.rodata.cpu_driver) + KEEP(*(.rodata.cpu_driver)); ecpu_drivers = . ; _bs_init_begin = .; - *(.bs_init) + KEEP(*(.bs_init)); _bs_init_end = .; *(.rodata) @@ -82,6 +82,7 @@ SECTIONS .data : { _data = .; *(.data) + *(.data.*) _edata = .; } @@ -92,7 +93,9 @@ SECTIONS _bss = .; .bss . : { *(.bss) + *(.bss.*) *(.sbss) + *(.sbss.*) *(COMMON) } _ebss = .; |