From: Sylvain Gault <sylvain.gault at gmail.com> These patches basically remove unused linker scripts and port a change that was made to an unused script. Those are to be applied on top of the gcc 5 bug fixes as they would conflict otherwise. Sylvain Gault (4): diag/mbr: fix dependency to linker script Remove unused linker scripts core: Make symbols defined in linker script HIDDEN core: Move linker script in arch-agnostic dir core/Makefile | 2 +- core/i386/syslinux.ld | 389 ------------------------------------------------ core/syslinux.ld | 117 ++++++--------- core/x86_64/syslinux.ld | 389 ------------------------------------------------ diag/mbr/Makefile | 2 +- efi/syslinux.ld | 176 ---------------------- mbr/mbr.ld | 73 --------- memdisk/memdisk.ld | 140 ----------------- 8 files changed, 48 insertions(+), 1240 deletions(-) delete mode 100644 core/i386/syslinux.ld delete mode 100644 core/x86_64/syslinux.ld delete mode 100644 efi/syslinux.ld delete mode 100644 mbr/mbr.ld delete mode 100644 memdisk/memdisk.ld -- 2.5.3
celelibi at gmail.com
2015-Oct-05 18:15 UTC
[syslinux] [PATCH 1/4] diag/mbr: fix dependency to linker script
From: Sylvain Gault <sylvain.gault at gmail.com> The Makefile used to have a dependency to an unused linker script. Signed-off-by: Sylvain Gault <sylvain.gault at gmail.com> --- diag/mbr/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/diag/mbr/Makefile b/diag/mbr/Makefile index 5b7153c..7901fea 100644 --- a/diag/mbr/Makefile +++ b/diag/mbr/Makefile @@ -25,7 +25,7 @@ all: handoff.bin $(CC) $(MAKEDEPS) $(SFLAGS) -Wa,-a=$*.lst -c -o $@ $< .PRECIOUS: %.elf -%.elf: %.o $(mbrdir)/mbr.ld +%.elf: %.o $(mbrdir)/$(ARCH)/mbr.ld $(LD) $(LDFLAGS) -T $(mbrdir)/$(ARCH)/mbr.ld -e _start -o $@ $< %.bin: %.elf $(mbrdir)/checksize.pl -- 2.5.3
celelibi at gmail.com
2015-Oct-05 18:15 UTC
[syslinux] [PATCH 2/4] Remove unused linker scripts
From: Sylvain Gault <sylvain.gault at gmail.com> Some linker scripts were splitted into i386 and x86_64 versions in commit d8eede3f2a360163235fad222a0190cd7c5bef38 but older scripts were left there. Signed-off-by: Sylvain Gault <sylvain.gault at gmail.com> --- core/syslinux.ld | 414 ------------------------------------------------ core/x86_64/syslinux.ld | 389 --------------------------------------------- efi/syslinux.ld | 176 -------------------- mbr/mbr.ld | 73 --------- memdisk/memdisk.ld | 140 ---------------- 5 files changed, 1192 deletions(-) delete mode 100644 core/syslinux.ld delete mode 100644 core/x86_64/syslinux.ld delete mode 100644 efi/syslinux.ld delete mode 100644 mbr/mbr.ld delete mode 100644 memdisk/memdisk.ld diff --git a/core/syslinux.ld b/core/syslinux.ld deleted file mode 100644 index fa8c8c9..0000000 --- a/core/syslinux.ld +++ /dev/null @@ -1,414 +0,0 @@ -/* ----------------------------------------------------------------------- - * - * Copyright 2008-2009 H. Peter Anvin - All Rights Reserved - * Copyright 2009 Intel Corporation; author: H. Peter Anvin - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - * Boston MA 02110-1301, USA; either version 2 of the License, or - * (at your option) any later version; incorporated herein by reference. - * - * ----------------------------------------------------------------------- */ - -/* - * Linker script for the SYSLINUX core - */ - -OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") -OUTPUT_ARCH(i386) -EXTERN(_start) -ENTRY(_start) - -STACK32_LEN = 65536; - -SECTIONS -{ - /* Prefix structure for the compression program */ - . = 0; - HIDDEN(__module_start = .); - .prefix : { - *(.prefix) - } - - /* "Early" sections (before the load) */ - . = 0x1000; - - .earlybss (NOLOAD) : { - HIDDEN(__earlybss_start = .); - *(.earlybss) - HIDDEN(__earlybss_end = .); - } - HIDDEN(__earlybss_len = ABSOLUTE(__earlybss_end) - ABSOLUTE(__earlybss_start)); - HIDDEN(__earlybss_dwords = (__earlybss_len + 3) >> 2); - - . = ALIGN(4); - .bss16 (NOLOAD) : { - HIDDEN(__bss16_start = .); - *(.bss16) - HIDDEN(__bss16_end = .); - } - HIDDEN(__bss16_len = ABSOLUTE(__bss16_end) - ABSOLUTE(__bss16_start)); - HIDDEN(__bss16_dwords = (__bss16_len + 3) >> 2); - - . = ALIGN(4); - .config : AT (__config_lma) { - HIDDEN(__config_start = .); - *(.config) - HIDDEN(__config_end = .); - } - HIDDEN(__config_len = ABSOLUTE(__config_end) - ABSOLUTE(__config_start)); - HIDDEN(__config_dwords = (__config_len + 3) >> 2); - - /* Generated and/or copied code */ - - . = ALIGN(128); /* Minimum separation from mutable data */ - .replacestub : AT (__replacestub_lma) { - HIDDEN(__replacestub_start = .); - *(.replacestub) - HIDDEN(__replacestub_end = .); - } - HIDDEN(__replacestub_len = ABSOLUTE(__replacestub_end) - ABSOLUTE(__replacestub_start)); - HIDDEN(__replacestub_dwords = (__replacestub_len + 3) >> 2); - - . = ALIGN(16); - HIDDEN(__gentextnr_lma = .); - .gentextnr : AT(__gentextnr_lma) { - HIDDEN(__gentextnr_start = .); - *(.gentextnr) - HIDDEN(__gentextnr_end = .); - } - HIDDEN(__gentextnr_len = ABSOLUTE(__gentextnr_end) - ABSOLUTE(__gentextnr_start)); - HIDDEN(__gentextnr_dwords = (__gentextnr_len + 3) >> 2); - - . = STACK_BASE; - .stack16 : AT(STACK_BASE) { - HIDDEN(__stack16_start = .); - . += STACK_LEN; - HIDDEN(__stack16_end = .); - } - HIDDEN(__stack16_len = ABSOLUTE(__stack16_end) - ABSOLUTE(__stack16_start)); - HIDDEN(__stack16_dwords = (__stack16_len + 3) >> 2); - - /* Initialized sections */ - - . = 0x7c00; - .init : { - FILL(0x90909090) - HIDDEN(__init_start = .); - *(.init) - HIDDEN(__init_end = .); - } - HIDDEN(__init_len = ABSOLUTE(__init_end) - ABSOLUTE(__init_start)); - HIDDEN(__init_dwords = (__init_len + 3) >> 2); - - .text16 : { - FILL(0x90909090) - HIDDEN(__text16_start = .); - *(.text16) - HIDDEN(__text16_end = .); - } - HIDDEN(__text16_len = ABSOLUTE(__text16_end) - ABSOLUTE(__text16_start)); - HIDDEN(__text16_dwords = (__text16_len + 3) >> 2); - - /* - * .textnr is used for 32-bit code that is used on the code - * path to initialize the .text segment - */ - . = ALIGN(16); - .textnr : { - FILL(0x90909090) - HIDDEN(__textnr_start = .); - *(.textnr) - HIDDEN(__textnr_end = .); - } - HIDDEN(__textnr_len = ABSOLUTE(__textnr_end) - ABSOLUTE(__textnr_start)); - HIDDEN(__textnr_dwords = (__textnr_len + 3) >> 2); - - . = ALIGN(16); - HIDDEN(__bcopyxx_start = .); - - .bcopyxx.text : { - FILL(0x90909090) - HIDDEN(__bcopyxx_text_start = .); - *(.bcopyxx.text) - HIDDEN(__bcopyxx_text_end = .); - } - HIDDEN(__bcopyxx_text_len = ABSOLUTE(__bcopyxx_text_end) - ABSOLUTE(__bcopyxx_text_start)); - HIDDEN(__bcopyxx_text_dwords = (__bcopyxx_text_len + 3) >> 2); - - .bcopyxx.data : { - HIDDEN(__bcopyxx_data_start = .); - *(.bcopyxx.text) - HIDDEN(__bcopyxx_data_end = .); - } - HIDDEN(__bcopyxx_data_len = ABSOLUTE(__bcopyxx_data_end) - ABSOLUTE(__bcopyxx_data_start)); - HIDDEN(__bcopyxx_data_dwords = (__bcopyxx_data_len + 3) >> 2); - - HIDDEN(__bcopyxx_end = .); - HIDDEN(__bcopyxx_len = ABSOLUTE(__bcopyxx_end) - ABSOLUTE(__bcopyxx_start)); - HIDDEN(__bcopyxx_dwords = (__bcopyxx_len + 3) >> 2); - - . = ALIGN(4); - .data16 : { - HIDDEN(__data16_start = .); - *(.data16) - HIDDEN(__data16_end = .); - } - HIDDEN(__data16_len = ABSOLUTE(__data16_end) - ABSOLUTE(__data16_start)); - HIDDEN(__data16_dwords = (__data16_len + 3) >> 2); - - . = ALIGN(4); - HIDDEN(__config_lma = .); - . += SIZEOF(.config); - - . = ALIGN(4); - HIDDEN(__replacestub_lma = .); - . += SIZEOF(.replacestub); - - /* The 32-bit code loads above the non-progbits sections */ - - . = ALIGN(16); - HIDDEN(__pm_code_lma = .); - - HIDDEN(__high_clear_start = .); - - . = ALIGN(512); - .adv (NOLOAD) : { - HIDDEN(__adv_start = .); - *(.adv) - HIDDEN(__adv_end = .); - } - HIDDEN(__adv_len = ABSOLUTE(__adv_end) - ABSOLUTE(__adv_start)); - HIDDEN(__adv_dwords = (__adv_len + 3) >> 2); - - /* Late uninitialized sections */ - - . = ALIGN(4); - .uibss (NOLOAD) : { - HIDDEN(__uibss_start = .); - *(.uibss) - HIDDEN(__uibss_end = .); - } - HIDDEN(__uibss_len = ABSOLUTE(__uibss_end) - ABSOLUTE(__uibss_start)); - HIDDEN(__uibss_dwords = (__uibss_len + 3) >> 2); - - HIDDEN(_end16 = .); - HIDDEN(__assert_end16 = ASSERT(_end16 <= 0x10000, "64K overflow")); - - /* - * Special 16-bit segments - */ - - . = ALIGN(65536); - .real_mode (NOLOAD) : { - *(.real_mode) - } - HIDDEN(real_mode_seg = core_real_mode >> 4); - - . = ALIGN(65536); - .xfer_buf (NOLOAD) : { - *(.xfer_buf) - } - HIDDEN(xfer_buf_seg = core_xfer_buf >> 4); - - /* - * Used to allocate lowmem buffers from 32-bit code - */ - .lowmem (NOLOAD) : { - HIDDEN(__lowmem_start = .); - *(.lowmem) - HIDDEN(__lowmem_end = .); - } - HIDDEN(__lowmem_len = ABSOLUTE(__lowmem_end) - ABSOLUTE(__lowmem_start)); - HIDDEN(__lowmem_dwords = (__lowmem_len + 3) >> 2); - - HIDDEN(__high_clear_end = .); - - HIDDEN(__high_clear_len = ABSOLUTE(__high_clear_end) - ABSOLUTE(__high_clear_start)); - HIDDEN(__high_clear_dwords = (__high_clear_len + 3) >> 2); - - /* Start of the lowmem heap */ - . = ALIGN(16); - HIDDEN(__lowmem_heap = .); - - /* - * 32-bit code. This is a hack for the moment due to the - * real-mode segments also allocated. - */ - - . = 0x100000; - - HIDDEN(__pm_code_start = .); - - HIDDEN(__text_vma = .); - HIDDEN(__text_lma = __pm_code_lma); - .text : AT(__text_lma) { - FILL(0x90909090) - HIDDEN(__text_start = .); - *(.text) - *(.text.*) - HIDDEN(__text_end = .); - } - - . = ALIGN(16); - - HIDDEN(__rodata_vma = .); - HIDDEN(__rodata_lma = __rodata_vma + __text_lma - __text_vma); - .rodata : AT(__rodata_lma) { - HIDDEN(__rodata_start = .); - *(.rodata) - *(.rodata.*) - HIDDEN(__rodata_end = .); - } - - . = ALIGN(4); - - HIDDEN(__ctors_vma = .); - HIDDEN(__ctors_lma = __ctors_vma + __text_lma - __text_vma); - .ctors : AT(__ctors_lma) { - HIDDEN(__ctors_start = .); - KEEP (*(SORT(.preinit_array*))) - KEEP (*(SORT(.init_array*))) - KEEP (*(SORT(.ctors*))) - HIDDEN(__ctors_end = .); - } - - HIDDEN(__dtors_vma = .); - HIDDEN(__dtors_lma = __dtors_vma + __text_lma - __text_vma); - .dtors : AT(__dtors_lma) { - HIDDEN(__dtors_start = .); - KEEP (*(SORT(.fini_array*))) - KEEP (*(SORT(.dtors*))) - HIDDEN(__dtors_end = .); - } - - . = ALIGN(4); - - HIDDEN(__dynsym_vma = .); - HIDDEN(__dynsym_lma = __dynsym_vma + __text_lma - __text_vma); - .dynsym : AT(__dynsym_lma) { - HIDDEN(__dynsym_start = .); - *(.dynsym) - HIDDEN(__dynsym_end = .); - } - HIDDEN(__dynsym_len = __dynsym_end - __dynsym_start); - - . = ALIGN(4); - - HIDDEN(__dynstr_vma = .); - HIDDEN(__dynstr_lma = __dynstr_vma + __text_lma - __text_vma); - .dynstr : AT(__dynstr_lma) { - HIDDEN(__dynstr_start = .); - *(.dynstr) - HIDDEN(__dynstr_end = .); - } - HIDDEN(__dynstr_len = __dynstr_end - __dynstr_start); - - . = ALIGN(4); - - HIDDEN(__gnu_hash_vma = .); - HIDDEN(__gnu_hash_lma = __gnu_hash_vma + __text_lma - __text_vma); - .gnu.hash : AT(__gnu_hash_lma) { - HIDDEN(__gnu_hash_start = .); - *(.gnu.hash) - HIDDEN(__gnu_hash_end = .); - } - - - . = ALIGN(4); - - HIDDEN(__dynlink_vma = .); - HIDDEN(__dynlink_lma = __dynlink_vma + __text_lma - __text_vma); - .dynlink : AT(__dynlink_lma) { - HIDDEN(__dynlink_start = .); - *(.dynlink) - HIDDEN(__dynlink_end = .); - } - - . = ALIGN(4); - - HIDDEN(__got_vma = .); - HIDDEN(__got_lma = __got_vma + __text_lma - __text_vma); - .got : AT(__got_lma) { - HIDDEN(__got_start = .); - KEEP (*(.got.plt)) - KEEP (*(.got)) - HIDDEN(__got_end = .); - } - - . = ALIGN(4); - - HIDDEN(__dynamic_vma = .); - HIDDEN(__dynamic_lma = __dynamic_vma + __text_lma - __text_vma); - .dynamic : AT(__dynamic_lma) { - HIDDEN(__dynamic_start = .); - *(.dynamic) - HIDDEN(__dynamic_end = .); - } - - . = ALIGN(16); - - HIDDEN(__data_vma = .); - HIDDEN(__data_lma = __data_vma + __text_lma - __text_vma); - .data : AT(__data_lma) { - HIDDEN(__data_start = .); - *(.data) - *(.data.*) - HIDDEN(__data_end = .); - } - - HIDDEN(__pm_code_end = .); - HIDDEN(__pm_code_len = ABSOLUTE(__pm_code_end) - ABSOLUTE(__pm_code_start)); - HIDDEN(__pm_code_dwords = (__pm_code_len + 3) >> 2); - - . = ALIGN(128); - - HIDDEN(__bss_vma = .); - HIDDEN(__bss_lma = .); /* Dummy */ - .bss (NOLOAD) : AT (__bss_lma) { - HIDDEN(__bss_start = .); - *(.bss) - *(.bss.*) - *(COMMON) - HIDDEN(__bss_end = .); - } - HIDDEN(__bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start)); - HIDDEN(__bss_dwords = (__bss_len + 3) >> 2); - - /* Data saved away before bss initialization */ - . = ALIGN(128); - - HIDDEN(__savedata_vma = .); - HIDDEN(__savedata_lma = .); /* Dummy */ - .savedata (NOLOAD) : AT (__savedata_lma) { - HIDDEN(__savedata_start = .); - *(.savedata) - *(.savedata.*) - HIDDEN(__savedata_end = .); - } - HIDDEN(__savedata_len = ABSOLUTE(__savedata_end) - ABSOLUTE(__savedata_start)); - HIDDEN(__savedata_dwords = (__savedata_len + 3) >> 2); - - /* XXX: This stack should be unified with the COM32 stack */ - HIDDEN(__stack_vma = .); - __stack_lma = .; /* Dummy */ - .stack (NOLOAD) : AT(__stack_lma) { - HIDDEN(__stack_start = .); - *(.stack) - HIDDEN(__stack_end = .); - } - HIDDEN(__stack_len = ABSOLUTE(__stack_end) - ABSOLUTE(__stack_start)); - HIDDEN(__stack_dwords = (__stack_len + 3) >> 2); - - HIDDEN(_end = .); - - /* Heap follows after our own PM code */ - . = ALIGN(65536); - HIDDEN(free_high_memory = .); - - /* Stuff we don't need... */ - /DISCARD/ : { - *(.eh_frame) - } -} diff --git a/core/x86_64/syslinux.ld b/core/x86_64/syslinux.ld deleted file mode 100644 index 70c6e00..0000000 --- a/core/x86_64/syslinux.ld +++ /dev/null @@ -1,389 +0,0 @@ -/* ----------------------------------------------------------------------- - * - * Copyright 2008-2009 H. Peter Anvin - All Rights Reserved - * Copyright 2009 Intel Corporation; author: H. Peter Anvin - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - * Boston MA 02110-1301, USA; either version 2 of the License, or - * (at your option) any later version; incorporated herein by reference. - * - * ----------------------------------------------------------------------- */ - -/* - * Linker script for the SYSLINUX core - */ - -OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") -OUTPUT_ARCH(i386:x86-64) -EXTERN(_start) -ENTRY(_start) - -STACK32_LEN = 65536; - -SECTIONS -{ - /* Prefix structure for the compression program */ - . = 0; - __module_start = .; - .prefix : { - *(.prefix) - } - - /* "Early" sections (before the load) */ - . = 0x1000; - - .earlybss (NOLOAD) : { - __earlybss_start = .; - *(.earlybss) - __earlybss_end = .; - } - __earlybss_len = ABSOLUTE(__earlybss_end) - ABSOLUTE(__earlybss_start); - __earlybss_dwords = (__earlybss_len + 3) >> 2; - - . = ALIGN(4); - .bss16 (NOLOAD) : { - __bss16_start = .; - *(.bss16) - __bss16_end = .; - } - __bss16_len = ABSOLUTE(__bss16_end) - ABSOLUTE(__bss16_start); - __bss16_dwords = (__bss16_len + 3) >> 2; - - . = ALIGN(4); - .config : AT (__config_lma) { - __config_start = .; - *(.config) - __config_end = .; - } - __config_len = ABSOLUTE(__config_end) - ABSOLUTE(__config_start); - __config_dwords = (__config_len + 3) >> 2; - - /* Generated and/or copied code */ - - . = ALIGN(128); /* Minimum separation from mutable data */ - .replacestub : AT (__replacestub_lma) { - __replacestub_start = .; - *(.replacestub) - __replacestub_end = .; - } - __replacestub_len = ABSOLUTE(__replacestub_end) - ABSOLUTE(__replacestub_start); - __replacestub_dwords = (__replacestub_len + 3) >> 2; - - . = ALIGN(16); - __gentextnr_lma = .; - .gentextnr : AT(__gentextnr_lma) { - __gentextnr_start = .; - *(.gentextnr) - __gentextnr_end = .; - } - __gentextnr_len = ABSOLUTE(__gentextnr_end) - ABSOLUTE(__gentextnr_start); - __gentextnr_dwords = (__gentextnr_len + 3) >> 2; - - . = STACK_BASE; - .stack16 : AT(STACK_BASE) { - __stack16_start = .; - . += STACK_LEN; - __stack16_end = .; - } - __stack16_len = ABSOLUTE(__stack16_end) - ABSOLUTE(__stack16_start); - __stack16_dwords = (__stack16_len + 3) >> 2; - - /* Initialized sections */ - - . = 0x7c00; - .init : { - FILL(0x90909090) - __init_start = .; - *(.init) - __init_end = .; - } - __init_len = ABSOLUTE(__init_end) - ABSOLUTE(__init_start); - __init_dwords = (__init_len + 3) >> 2; - - .text16 : { - FILL(0x90909090) - __text16_start = .; - *(.text16) - __text16_end = .; - } - __text16_len = ABSOLUTE(__text16_end) - ABSOLUTE(__text16_start); - __text16_dwords = (__text16_len + 3) >> 2; - - /* - * .textnr is used for 32-bit code that is used on the code - * path to initialize the .text segment - */ - . = ALIGN(16); - .textnr : { - FILL(0x90909090) - __textnr_start = .; - *(.textnr) - __textnr_end = .; - } - __textnr_len = ABSOLUTE(__textnr_end) - ABSOLUTE(__textnr_start); - __textnr_dwords = (__textnr_len + 3) >> 2; - - . = ALIGN(16); - __bcopyxx_start = .; - - .bcopyxx.text : { - FILL(0x90909090) - __bcopyxx_text_start = .; - *(.bcopyxx.text) - __bcopyxx_text_end = .; - } - __bcopyxx_text_len = ABSOLUTE(__bcopyxx_text_end) - ABSOLUTE(__bcopyxx_text_start); - __bcopyxx_text_dwords = (__bcopyxx_text_len + 3) >> 2; - - .bcopyxx.data : { - __bcopyxx_data_start = .; - *(.bcopyxx.text) - __bcopyxx_data_end = .; - } - __bcopyxx_data_len = ABSOLUTE(__bcopyxx_data_end) - ABSOLUTE(__bcopyxx_data_start); - __bcopyxx_data_dwords = (__bcopyxx_data_len + 3) >> 2; - - __bcopyxx_end = .; - __bcopyxx_len = ABSOLUTE(__bcopyxx_end) - ABSOLUTE(__bcopyxx_start); - __bcopyxx_dwords = (__bcopyxx_len + 3) >> 2; - - . = ALIGN(4); - .data16 : { - __data16_start = .; - *(.data16) - __data16_end = .; - } - __data16_len = ABSOLUTE(__data16_end) - ABSOLUTE(__data16_start); - __data16_dwords = (__data16_len + 3) >> 2; - - . = ALIGN(4); - __config_lma = .; - . += SIZEOF(.config); - - . = ALIGN(4); - __replacestub_lma = .; - . += SIZEOF(.replacestub); - - /* The 32-bit code loads above the non-progbits sections */ - - . = ALIGN(16); - __pm_code_lma = .; - - __high_clear_start = .; - - . = ALIGN(512); - .adv (NOLOAD) : { - __adv_start = .; - *(.adv) - __adv_end = .; - } - __adv_len = ABSOLUTE(__adv_end) - ABSOLUTE(__adv_start); - __adv_dwords = (__adv_len + 3) >> 2; - - /* Late uninitialized sections */ - - . = ALIGN(4); - .uibss (NOLOAD) : { - __uibss_start = .; - *(.uibss) - __uibss_end = .; - } - __uibss_len = ABSOLUTE(__uibss_end) - ABSOLUTE(__uibss_start); - __uibss_dwords = (__uibss_len + 3) >> 2; - - _end16 = .; - __assert_end16 = ASSERT(_end16 <= 0x10000, "64K overflow"); - - /* - * Special 16-bit segments - */ - - . = ALIGN(65536); - .real_mode (NOLOAD) : { - *(.real_mode) - } - real_mode_seg = core_real_mode >> 4; - - . = ALIGN(65536); - .xfer_buf (NOLOAD) : { - *(.xfer_buf) - } - xfer_buf_seg = core_xfer_buf >> 4; - - /* - * The auxilliary data segment is used by the 16-bit code - * for items that don't need to live in the bottom 64K. - */ - - . = ALIGN(16); - .auxseg (NOLOAD) : { - __auxseg_start = .; - *(.auxseg) - __auxseg_end = .; - } - __auxseg_len = ABSOLUTE(__auxseg_end) - ABSOLUTE(__auxseg_start); - __auxseg_dwords = (__auxseg_len + 3) >> 2; - aux_seg = __auxseg_start >> 4; - - /* - * Used to allocate lowmem buffers from 32-bit code - */ - .lowmem (NOLOAD) : { - __lowmem_start = .; - *(.lowmem) - __lowmem_end = .; - } - __lowmem_len = ABSOLUTE(__lowmem_end) - ABSOLUTE(__lowmem_start); - __lowmem_dwords = (__lowmem_len + 3) >> 2; - - __high_clear_end = .; - - __high_clear_len = ABSOLUTE(__high_clear_end) - ABSOLUTE(__high_clear_start); - __high_clear_dwords = (__high_clear_len + 3) >> 2; - - /* Start of the lowmem heap */ - . = ALIGN(16); - __lowmem_heap = .; - - /* - * 32-bit code. This is a hack for the moment due to the - * real-mode segments also allocated. - */ - - . = 0x100000; - - __pm_code_start = .; - __vma_to_lma = __pm_code_lma - __pm_code_start; - - .text : AT(ADDR(.text) + __vma_to_lma) { - FILL(0x90909090) - __text_start = .; - *(.text) - *(.text.*) - __text_end = .; - } - - .rodata : AT(ADDR(.rodata) + __vma_to_lma) { - __rodata_start = .; - *(.rodata) - *(.rodata.*) - __rodata_end = .; - } - - .ctors : AT(ADDR(.ctors) + __vma_to_lma) { - __ctors_start = .; - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - __ctors_end = .; - } - - .dtors : AT(ADDR(.dtors) + __vma_to_lma) { - __dtors_start = .; - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - __dtors_end = .; - } - - .dynsym : AT(ADDR(.dynsym) + __vma_to_lma) { - __dynsym_start = .; - *(.dynsym) - __dynsym_end = .; - } - __dynsym_len = __dynsym_end - __dynsym_start; - - .dynstr : AT(ADDR(.dynstr) + __vma_to_lma) { - __dynstr_start = .; - *(.dynstr) - __dynstr_end = .; - } - __dynstr_len = __dynstr_end - __dynstr_start; - - .gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) { - __gnu_hash_start = .; - *(.gnu.hash) - __gnu_hash_end = .; - } - - - .dynlink : AT(ADDR(.dynlink) + __vma_to_lma) { - __dynlink_start = .; - *(.dynlink) - __dynlink_end = .; - } - - .got : AT(ADDR(.got) + __vma_to_lma) { - __got_start = .; - KEEP (*(.got.plt)) - KEEP (*(.got)) - __got_end = .; - } - - .dynamic : AT(ADDR(.dynamic) + __vma_to_lma) { - __dynamic_start = .; - *(.dynamic) - __dynamic_end = .; - } - - .data : AT(ADDR(.data) + __vma_to_lma) { - __data_start = .; - *(.data) - *(.data.*) - __data_end = .; - } - - __pm_code_end = .; - __pm_code_len = ABSOLUTE(__pm_code_end) - ABSOLUTE(__pm_code_start); - __pm_code_dwords = (__pm_code_len + 3) >> 2; - - . = ALIGN(128); - - __bss_vma = .; - __bss_lma = .; /* Dummy */ - .bss (NOLOAD) : AT (__bss_lma) { - __bss_start = .; - *(.bss) - *(.bss.*) - *(COMMON) - __bss_end = .; - } - __bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start); - __bss_dwords = (__bss_len + 3) >> 2; - - /* Very large objects which don't need to be zeroed */ - - __hugebss_vma = .; - __hugebss_lma = .; /* Dummy */ - .hugebss (NOLOAD) : AT (__hugebss_lma) { - __hugebss_start = .; - *(.hugebss) - *(.hugebss.*) - __hugebss_end = .; - } - __hugebss_len = ABSOLUTE(__hugebss_end) - ABSOLUTE(__hugebss_start); - __hugebss_dwords = (__hugebss_len + 3) >> 2; - - - /* XXX: This stack should be unified with the COM32 stack */ - __stack_vma = .; - __stack_lma = .; /* Dummy */ - .stack (NOLOAD) : AT(__stack_lma) { - __stack_start = .; - *(.stack) - __stack_end = .; - } - __stack_len = ABSOLUTE(__stack_end) - ABSOLUTE(__stack_start); - __stack_dwords = (__stack_len + 3) >> 2; - - _end = .; - - /* COM32R and kernels are loaded after our own PM code */ - . = ALIGN(65536); - free_high_memory = .; - - /* Stuff we don't need... */ - /DISCARD/ : { - *(.eh_frame) - } -} diff --git a/efi/syslinux.ld b/efi/syslinux.ld deleted file mode 100644 index e027053..0000000 --- a/efi/syslinux.ld +++ /dev/null @@ -1,176 +0,0 @@ -/* ----------------------------------------------------------------------- - * - * Copyright 2008-2009 H. Peter Anvin - All Rights Reserved - * Copyright 2009 Intel Corporation; author: H. Peter Anvin - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - * Boston MA 02110-1301, USA; either version 2 of the License, or - * (at your option) any later version; incorporated herein by reference. - * - * ----------------------------------------------------------------------- */ - -/* - * Linker script for the SYSLINUX core - */ - -OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") -OUTPUT_ARCH(i386) -ENTRY(_start) - -SECTIONS -{ - . = 0; - ImageBase = .; /* For gnu-efi's crt0 */ - __module_start = .; - . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; - .text : { - FILL(0x90909090) - __text_start = .; - *(.text) - *(.text.*) - __text_end = .; - } - - . = ALIGN(16); - - .rodata : { - __rodata_start = .; - *(.rodata) - *(.rodata.*) - __rodata_end = .; - } - - . = ALIGN(4); - - .ctors : { - __ctors_start = .; - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - __ctors_end = .; - } - - .dtors : { - __dtors_start = .; - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - __dtors_end = .; - } - - . = ALIGN(4096); - .rel : { - *(.rel.got) - *(.rel.data) - *(.rel.data.*) - *(.rel.ctors) - } - - . = ALIGN(4); - - .gnu.hash : { - __gnu_hash_start = .; - *(.gnu.hash) - __gnu_hash_end = .; - } - - - .dynsym : { - __dynsym_start = .; - *(.dynsym) - __dynsym_end = .; - } - - . = ALIGN(4); - - .dynstr : { - __dynstr_start = .; - *(.dynstr) - __dynstr_end = .; - } - - . = ALIGN(4); - - .dynlink : { - __dynlink_start = .; - *(.dynlink) - __dynlink_end = .; - } - - . = ALIGN(4); - - .got : { - __got_start = .; - KEEP (*(.got.plt)) - KEEP (*(.got)) - __got_end = .; - } - - . = ALIGN(4); - - .dynamic : { - __dynamic_start = .; - *(.dynamic) - __dynamic_end = .; - } - - . = ALIGN(16); - - .data : { - __data_start = .; - *(.data) - *(.data.*) - *(.lowmem) - __data_end = .; - } - - .reloc : { - *(.reloc) - } - - .comment : { - *(.commet) - } - - .symtab : { - *(.symtab) - } - - .strtab : { - *(.strtab) - } - - .bss : { - /* the EFI loader doesn't seem to like a .bss section, - so we stick it all into .data: */ - __bss_start = .; - *(.bss) - *(.bss.*) - *(.bss16) - *(.hugebss) - *(COMMON) - __bss_end = .; - *(.sbss) - *(.scommon) - } - __bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start); - __bss_dwords = (__bss_len + 3) >> 2; - - . = ALIGN(128); - - /* Very large objects which don't need to be zeroed */ - - .hugebss : { - __hugebss_start = .; - *(.hugebss) - *(.hugebss.*) - __hugebss_end = .; - } - - _end = .; - - /* Stuff we don't need... */ - /DISCARD/ : { - *(.eh_frame) - } -} diff --git a/mbr/mbr.ld b/mbr/mbr.ld deleted file mode 100644 index d14ba80..0000000 --- a/mbr/mbr.ld +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Linker script for MBR - */ - -/* Script for -z combreloc: combine and sort reloc sections */ -OUTPUT_FORMAT("elf32-i386", "elf32-i386", - "elf32-i386") -OUTPUT_ARCH(i386) -EXTERN(_start) -ENTRY(_start) -SECTIONS -{ - /* Read-only sections, merged into text segment: */ - . = 0x600; - .text : - { - *(.text*) - *(.rodata*) - } =0x90909090 - - . = ALIGN(4); - .data : - { - *(.data*) - } - - . = ALIGN(128); - .bss : - { - *(.bss*) - } - - . = 0x7c00; - .bootsec : - { - *(.bootsec) - } - - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - /DISCARD/ : { *(.note.GNU-stack) } -} diff --git a/memdisk/memdisk.ld b/memdisk/memdisk.ld deleted file mode 100644 index 51c3e35..0000000 --- a/memdisk/memdisk.ld +++ /dev/null @@ -1,140 +0,0 @@ -/* ----------------------------------------------------------------------- - * - * Copyright 2009 Intel Corporation; author: H. Peter Anvin - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - * Boston MA 02110-1301, USA; either version 2 of the License, or - * (at your option) any later version; incorporated herein by reference. - * - * ----------------------------------------------------------------------- */ - -/* - * Linker script for MEMDISK - */ - -/* Script for -z combreloc: combine and sort reloc sections */ -OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") -OUTPUT_ARCH(i386) -EXTERN(_start) -ENTRY(_start) -SECTIONS -{ - /* Read-only sections, merged into text segment: */ - . = 0x100000; - PROVIDE (__executable_start = .); - - .init : - { - KEEP (*(.init)) - } =0x90909090 - .text : - { - *(.text .stub .text.* .gnu.linkonce.t.*) - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - } =0x90909090 - .fini : - { - KEEP (*(.fini)) - } =0x90909090 - PROVIDE (__etext = .); - PROVIDE (_etext = .); - PROVIDE (etext = .); - .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } - .rodata1 : { *(.rodata1) } - - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - . = ALIGN(4); - PROVIDE (__preinit_array_start = .); - .preinit_array : { *(.preinit_array) } - PROVIDE (__preinit_array_end = .); - PROVIDE (__init_array_start = .); - .init_array : { *(.init_array) } - PROVIDE (__init_array_end = .); - PROVIDE (__fini_array_start = .); - .fini_array : { *(.fini_array) } - PROVIDE (__fini_array_end = .); - PROVIDE (__ctors_start = .); - .ctors : - { - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - } - PROVIDE (__ctors_end = .); - PROVIDE (__dtors_start = .); - .dtors : - { - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - } - PROVIDE (__dtors_end = .); - - /* Adjust the address for the data segment. Avoid mixing code and - data within same 128-byte chunk. */ - . = ALIGN(128); - - .data : - { - *(.data .data.* .gnu.linkonce.d.*) - SORT(CONSTRUCTORS) - } - .data1 : { *(.data1) } - _edata = .; - PROVIDE (edata = .); - . = ALIGN(16); - .bss : - { - __bss_start = .; - *(.dynbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(4); - __bss_end = .; - } - _end = .; - PROVIDE (end = .); - - - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - /DISCARD/ : { *(.note.GNU-stack) } -} -- 2.5.3
celelibi at gmail.com
2015-Oct-05 18:15 UTC
[syslinux] [PATCH 3/4] core: Make symbols defined in linker script HIDDEN
From: Sylvain Gault <sylvain.gault at gmail.com> This is a port of the commit 275a269ddec9f4d1b7a65f4f7c3e818401103d31 that introduced the HIDDEN calls. This should avoid symbol name collision. Signed-off-by: Sylvain Gault <sylvain.gault at gmail.com> --- core/i386/syslinux.ld | 264 +++++++++++++++++++++++++------------------------- 1 file changed, 132 insertions(+), 132 deletions(-) diff --git a/core/i386/syslinux.ld b/core/i386/syslinux.ld index 92b75b1..5fd6854 100644 --- a/core/i386/syslinux.ld +++ b/core/i386/syslinux.ld @@ -26,7 +26,7 @@ SECTIONS { /* Prefix structure for the compression program */ . = 0; - __module_start = .; + HIDDEN(__module_start = .); .prefix : { *(.prefix) } @@ -35,81 +35,81 @@ SECTIONS . = 0x1000; .earlybss (NOLOAD) : { - __earlybss_start = .; + HIDDEN(__earlybss_start = .); *(.earlybss) - __earlybss_end = .; + HIDDEN(__earlybss_end = .); } - __earlybss_len = ABSOLUTE(__earlybss_end) - ABSOLUTE(__earlybss_start); - __earlybss_dwords = (__earlybss_len + 3) >> 2; + HIDDEN(__earlybss_len = ABSOLUTE(__earlybss_end) - ABSOLUTE(__earlybss_start)); + HIDDEN(__earlybss_dwords = (__earlybss_len + 3) >> 2); . = ALIGN(4); .bss16 (NOLOAD) : { - __bss16_start = .; + HIDDEN(__bss16_start = .); *(.bss16) - __bss16_end = .; + HIDDEN(__bss16_end = .); } - __bss16_len = ABSOLUTE(__bss16_end) - ABSOLUTE(__bss16_start); - __bss16_dwords = (__bss16_len + 3) >> 2; + HIDDEN(__bss16_len = ABSOLUTE(__bss16_end) - ABSOLUTE(__bss16_start)); + HIDDEN(__bss16_dwords = (__bss16_len + 3) >> 2); . = ALIGN(4); .config : AT (__config_lma) { - __config_start = .; + HIDDEN(__config_start = .); *(.config) - __config_end = .; + HIDDEN(__config_end = .); } - __config_len = ABSOLUTE(__config_end) - ABSOLUTE(__config_start); - __config_dwords = (__config_len + 3) >> 2; + HIDDEN(__config_len = ABSOLUTE(__config_end) - ABSOLUTE(__config_start)); + HIDDEN(__config_dwords = (__config_len + 3) >> 2); /* Generated and/or copied code */ . = ALIGN(128); /* Minimum separation from mutable data */ .replacestub : AT (__replacestub_lma) { - __replacestub_start = .; + HIDDEN(__replacestub_start = .); *(.replacestub) - __replacestub_end = .; + HIDDEN(__replacestub_end = .); } - __replacestub_len = ABSOLUTE(__replacestub_end) - ABSOLUTE(__replacestub_start); - __replacestub_dwords = (__replacestub_len + 3) >> 2; + HIDDEN(__replacestub_len = ABSOLUTE(__replacestub_end) - ABSOLUTE(__replacestub_start)); + HIDDEN(__replacestub_dwords = (__replacestub_len + 3) >> 2); . = ALIGN(16); - __gentextnr_lma = .; + HIDDEN(__gentextnr_lma = .); .gentextnr : AT(__gentextnr_lma) { - __gentextnr_start = .; + HIDDEN(__gentextnr_start = .); *(.gentextnr) - __gentextnr_end = .; + HIDDEN(__gentextnr_end = .); } - __gentextnr_len = ABSOLUTE(__gentextnr_end) - ABSOLUTE(__gentextnr_start); - __gentextnr_dwords = (__gentextnr_len + 3) >> 2; + HIDDEN(__gentextnr_len = ABSOLUTE(__gentextnr_end) - ABSOLUTE(__gentextnr_start)); + HIDDEN(__gentextnr_dwords = (__gentextnr_len + 3) >> 2); . = STACK_BASE; .stack16 : AT(STACK_BASE) { - __stack16_start = .; + HIDDEN(__stack16_start = .); . += STACK_LEN; - __stack16_end = .; + HIDDEN(__stack16_end = .); } - __stack16_len = ABSOLUTE(__stack16_end) - ABSOLUTE(__stack16_start); - __stack16_dwords = (__stack16_len + 3) >> 2; + HIDDEN(__stack16_len = ABSOLUTE(__stack16_end) - ABSOLUTE(__stack16_start)); + HIDDEN(__stack16_dwords = (__stack16_len + 3) >> 2); /* Initialized sections */ . = 0x7c00; .init : { FILL(0x90909090) - __init_start = .; + HIDDEN(__init_start = .); *(.init) - __init_end = .; + HIDDEN(__init_end = .); } - __init_len = ABSOLUTE(__init_end) - ABSOLUTE(__init_start); - __init_dwords = (__init_len + 3) >> 2; + HIDDEN(__init_len = ABSOLUTE(__init_end) - ABSOLUTE(__init_start)); + HIDDEN(__init_dwords = (__init_len + 3) >> 2); .text16 : { FILL(0x90909090) - __text16_start = .; + HIDDEN(__text16_start = .); *(.text16) - __text16_end = .; + HIDDEN(__text16_end = .); } - __text16_len = ABSOLUTE(__text16_end) - ABSOLUTE(__text16_start); - __text16_dwords = (__text16_len + 3) >> 2; + HIDDEN(__text16_len = ABSOLUTE(__text16_end) - ABSOLUTE(__text16_start)); + HIDDEN(__text16_dwords = (__text16_len + 3) >> 2); /* * .textnr is used for 32-bit code that is used on the code @@ -118,83 +118,83 @@ SECTIONS . = ALIGN(16); .textnr : { FILL(0x90909090) - __textnr_start = .; + HIDDEN(__textnr_start = .); *(.textnr) - __textnr_end = .; + HIDDEN(__textnr_end = .); } - __textnr_len = ABSOLUTE(__textnr_end) - ABSOLUTE(__textnr_start); - __textnr_dwords = (__textnr_len + 3) >> 2; + HIDDEN(__textnr_len = ABSOLUTE(__textnr_end) - ABSOLUTE(__textnr_start)); + HIDDEN(__textnr_dwords = (__textnr_len + 3) >> 2); . = ALIGN(16); - __bcopyxx_start = .; + HIDDEN(__bcopyxx_start = .); .bcopyxx.text : { FILL(0x90909090) - __bcopyxx_text_start = .; + HIDDEN(__bcopyxx_text_start = .); *(.bcopyxx.text) - __bcopyxx_text_end = .; + HIDDEN(__bcopyxx_text_end = .); } - __bcopyxx_text_len = ABSOLUTE(__bcopyxx_text_end) - ABSOLUTE(__bcopyxx_text_start); - __bcopyxx_text_dwords = (__bcopyxx_text_len + 3) >> 2; + HIDDEN(__bcopyxx_text_len = ABSOLUTE(__bcopyxx_text_end) - ABSOLUTE(__bcopyxx_text_start)); + HIDDEN(__bcopyxx_text_dwords = (__bcopyxx_text_len + 3) >> 2); .bcopyxx.data : { - __bcopyxx_data_start = .; + HIDDEN(__bcopyxx_data_start = .); *(.bcopyxx.text) - __bcopyxx_data_end = .; + HIDDEN(__bcopyxx_data_end = .); } - __bcopyxx_data_len = ABSOLUTE(__bcopyxx_data_end) - ABSOLUTE(__bcopyxx_data_start); - __bcopyxx_data_dwords = (__bcopyxx_data_len + 3) >> 2; + HIDDEN(__bcopyxx_data_len = ABSOLUTE(__bcopyxx_data_end) - ABSOLUTE(__bcopyxx_data_start)); + HIDDEN(__bcopyxx_data_dwords = (__bcopyxx_data_len + 3) >> 2); - __bcopyxx_end = .; - __bcopyxx_len = ABSOLUTE(__bcopyxx_end) - ABSOLUTE(__bcopyxx_start); - __bcopyxx_dwords = (__bcopyxx_len + 3) >> 2; + HIDDEN(__bcopyxx_end = .); + HIDDEN(__bcopyxx_len = ABSOLUTE(__bcopyxx_end) - ABSOLUTE(__bcopyxx_start)); + HIDDEN(__bcopyxx_dwords = (__bcopyxx_len + 3) >> 2); . = ALIGN(4); .data16 : { - __data16_start = .; - *(.data16) - __data16_end = .; + HIDDEN(__data16_start = .); + *(.data16) + HIDDEN(__data16_end = .); } - __data16_len = ABSOLUTE(__data16_end) - ABSOLUTE(__data16_start); - __data16_dwords = (__data16_len + 3) >> 2; + HIDDEN(__data16_len = ABSOLUTE(__data16_end) - ABSOLUTE(__data16_start)); + HIDDEN(__data16_dwords = (__data16_len + 3) >> 2); . = ALIGN(4); - __config_lma = .; + HIDDEN(__config_lma = .); . += SIZEOF(.config); . = ALIGN(4); - __replacestub_lma = .; + HIDDEN(__replacestub_lma = .); . += SIZEOF(.replacestub); /* The 32-bit code loads above the non-progbits sections */ . = ALIGN(16); - __pm_code_lma = .; + HIDDEN(__pm_code_lma = .); - __high_clear_start = .; + HIDDEN(__high_clear_start = .); . = ALIGN(512); .adv (NOLOAD) : { - __adv_start = .; + HIDDEN(__adv_start = .); *(.adv) - __adv_end = .; + HIDDEN(__adv_end = .); } - __adv_len = ABSOLUTE(__adv_end) - ABSOLUTE(__adv_start); - __adv_dwords = (__adv_len + 3) >> 2; + HIDDEN(__adv_len = ABSOLUTE(__adv_end) - ABSOLUTE(__adv_start)); + HIDDEN(__adv_dwords = (__adv_len + 3) >> 2); /* Late uninitialized sections */ . = ALIGN(4); .uibss (NOLOAD) : { - __uibss_start = .; + HIDDEN(__uibss_start = .); *(.uibss) - __uibss_end = .; + HIDDEN(__uibss_end = .); } - __uibss_len = ABSOLUTE(__uibss_end) - ABSOLUTE(__uibss_start); - __uibss_dwords = (__uibss_len + 3) >> 2; + HIDDEN(__uibss_len = ABSOLUTE(__uibss_end) - ABSOLUTE(__uibss_start)); + HIDDEN(__uibss_dwords = (__uibss_len + 3) >> 2); - _end16 = .; - __assert_end16 = ASSERT(_end16 <= 0x10000, "64K overflow"); + HIDDEN(_end16 = .); + HIDDEN(__assert_end16 = ASSERT(_end16 <= 0x10000, "64K overflow")); /* * Special 16-bit segments @@ -204,13 +204,13 @@ SECTIONS .real_mode (NOLOAD) : { *(.real_mode) } - real_mode_seg = core_real_mode >> 4; + HIDDEN(real_mode_seg = core_real_mode >> 4); . = ALIGN(65536); .xfer_buf (NOLOAD) : { *(.xfer_buf) } - xfer_buf_seg = core_xfer_buf >> 4; + HIDDEN(xfer_buf_seg = core_xfer_buf >> 4); /* * The auxilliary data segment is used by the 16-bit code @@ -219,33 +219,33 @@ SECTIONS . = ALIGN(16); .auxseg (NOLOAD) : { - __auxseg_start = .; + HIDDEN(__auxseg_start = .); *(.auxseg) - __auxseg_end = .; + HIDDEN(__auxseg_end = .); } - __auxseg_len = ABSOLUTE(__auxseg_end) - ABSOLUTE(__auxseg_start); - __auxseg_dwords = (__auxseg_len + 3) >> 2; - aux_seg = __auxseg_start >> 4; + HIDDEN(__auxseg_len = ABSOLUTE(__auxseg_end) - ABSOLUTE(__auxseg_start)); + HIDDEN(__auxseg_dwords = (__auxseg_len + 3) >> 2); + HIDDEN(aux_seg = __auxseg_start >> 4); /* * Used to allocate lowmem buffers from 32-bit code */ .lowmem (NOLOAD) : { - __lowmem_start = .; + HIDDEN(__lowmem_start = .); *(.lowmem) - __lowmem_end = .; + HIDDEN(__lowmem_end = .); } - __lowmem_len = ABSOLUTE(__lowmem_end) - ABSOLUTE(__lowmem_start); - __lowmem_dwords = (__lowmem_len + 3) >> 2; + HIDDEN(__lowmem_len = ABSOLUTE(__lowmem_end) - ABSOLUTE(__lowmem_start)); + HIDDEN(__lowmem_dwords = (__lowmem_len + 3) >> 2); - __high_clear_end = .; + HIDDEN(__high_clear_end = .); - __high_clear_len = ABSOLUTE(__high_clear_end) - ABSOLUTE(__high_clear_start); - __high_clear_dwords = (__high_clear_len + 3) >> 2; + HIDDEN(__high_clear_len = ABSOLUTE(__high_clear_end) - ABSOLUTE(__high_clear_start)); + HIDDEN(__high_clear_dwords = (__high_clear_len + 3) >> 2); /* Start of the lowmem heap */ . = ALIGN(16); - __lowmem_heap = .; + HIDDEN(__lowmem_heap = .); /* * 32-bit code. This is a hack for the moment due to the @@ -254,133 +254,133 @@ SECTIONS . = 0x100000; - __pm_code_start = .; - __vma_to_lma = __pm_code_lma - __pm_code_start; + HIDDEN(__pm_code_start = .); + HIDDEN(__vma_to_lma = __pm_code_lma - __pm_code_start); .text : AT(ADDR(.text) + __vma_to_lma) { FILL(0x90909090) - __text_start = .; + HIDDEN(__text_start = .); *(.text) *(.text.*) - __text_end = .; + HIDDEN(__text_end = .); } .rodata : AT(ADDR(.rodata) + __vma_to_lma) { - __rodata_start = .; + HIDDEN(__rodata_start = .); *(.rodata) *(.rodata.*) - __rodata_end = .; + HIDDEN(__rodata_end = .); } .ctors : AT(ADDR(.ctors) + __vma_to_lma) { - __ctors_start = .; + HIDDEN(__ctors_start = .); KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) - __ctors_end = .; + HIDDEN(__ctors_end = .); } .dtors : AT(ADDR(.dtors) + __vma_to_lma) { - __dtors_start = .; + HIDDEN(__dtors_start = .); KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) - __dtors_end = .; + HIDDEN(__dtors_end = .); } .dynsym : AT(ADDR(.dynsym) + __vma_to_lma) { - __dynsym_start = .; + HIDDEN(__dynsym_start = .); *(.dynsym) - __dynsym_end = .; + HIDDEN(__dynsym_end = .); } __dynsym_len = __dynsym_end - __dynsym_start; .dynstr : AT(ADDR(.dynstr) + __vma_to_lma) { - __dynstr_start = .; + HIDDEN(__dynstr_start = .); *(.dynstr) - __dynstr_end = .; + HIDDEN(__dynstr_end = .); } - __dynstr_len = __dynstr_end - __dynstr_start; + HIDDEN(__dynstr_len = __dynstr_end - __dynstr_start); .gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) { - __gnu_hash_start = .; + HIDDEN(__gnu_hash_start = .); *(.gnu.hash) - __gnu_hash_end = .; + HIDDEN(__gnu_hash_end = .); } .dynlink : AT(ADDR(.dynlink) + __vma_to_lma) { - __dynlink_start = .; + HIDDEN(__dynlink_start = .); *(.dynlink) - __dynlink_end = .; + HIDDEN(__dynlink_end = .); } .got : AT(ADDR(.got) + __vma_to_lma) { - __got_start = .; + HIDDEN(__got_start = .); KEEP (*(.got.plt)) KEEP (*(.got)) - __got_end = .; + HIDDEN(__got_end = .); } .dynamic : AT(ADDR(.dynamic) + __vma_to_lma) { - __dynamic_start = .; + HIDDEN(__dynamic_start = .); *(.dynamic) - __dynamic_end = .; + HIDDEN(__dynamic_end = .); } .data : AT(ADDR(.data) + __vma_to_lma) { - __data_start = .; + HIDDEN(__data_start = .); *(.data) *(.data.*) - __data_end = .; + HIDDEN(__data_end = .); } - __pm_code_end = .; - __pm_code_len = ABSOLUTE(__pm_code_end) - ABSOLUTE(__pm_code_start); - __pm_code_dwords = (__pm_code_len + 3) >> 2; + HIDDEN(__pm_code_end = .); + HIDDEN(__pm_code_len = ABSOLUTE(__pm_code_end) - ABSOLUTE(__pm_code_start)); + HIDDEN(__pm_code_dwords = (__pm_code_len + 3) >> 2); . = ALIGN(128); - __bss_vma = .; - __bss_lma = .; /* Dummy */ + HIDDEN(__bss_vma = .); + HIDDEN(__bss_lma = .); /* Dummy */ .bss (NOLOAD) : AT (__bss_lma) { - __bss_start = .; + HIDDEN(__bss_start = .); *(.bss) *(.bss.*) *(COMMON) - __bss_end = .; + HIDDEN(__bss_end = .); } - __bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start); - __bss_dwords = (__bss_len + 3) >> 2; + HIDDEN(__bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start)); + HIDDEN(__bss_dwords = (__bss_len + 3) >> 2); /* Very large objects which don't need to be zeroed */ - __hugebss_vma = .; - __hugebss_lma = .; /* Dummy */ + HIDDEN(__hugebss_vma = .); + HIDDEN(__hugebss_lma = .); /* Dummy */ .hugebss (NOLOAD) : AT (__hugebss_lma) { - __hugebss_start = .; + HIDDEN(__hugebss_start = .); *(.hugebss) *(.hugebss.*) - __hugebss_end = .; + HIDDEN(__hugebss_end = .); } - __hugebss_len = ABSOLUTE(__hugebss_end) - ABSOLUTE(__hugebss_start); - __hugebss_dwords = (__hugebss_len + 3) >> 2; + HIDDEN(__hugebss_len = ABSOLUTE(__hugebss_end) - ABSOLUTE(__hugebss_start)); + HIDDEN(__hugebss_dwords = (__hugebss_len + 3) >> 2); /* XXX: This stack should be unified with the COM32 stack */ - __stack_vma = .; - __stack_lma = .; /* Dummy */ + HIDDEN(__stack_vma = .); + HIDDEN(__stack_lma = .); /* Dummy */ .stack (NOLOAD) : AT(__stack_lma) { - __stack_start = .; + HIDDEN(__stack_start = .); *(.stack) - __stack_end = .; + HIDDEN(__stack_end = .); } - __stack_len = ABSOLUTE(__stack_end) - ABSOLUTE(__stack_start); - __stack_dwords = (__stack_len + 3) >> 2; + HIDDEN(__stack_len = ABSOLUTE(__stack_end) - ABSOLUTE(__stack_start)); + HIDDEN(__stack_dwords = (__stack_len + 3) >> 2); - _end = .; + HIDDEN(_end = .); /* COM32R and kernels are loaded after our own PM code */ . = ALIGN(65536); - free_high_memory = .; + HIDDEN(free_high_memory = .); /* Stuff we don't need... */ /DISCARD/ : { -- 2.5.3
celelibi at gmail.com
2015-Oct-05 18:15 UTC
[syslinux] [PATCH 4/4] core: Move linker script in arch-agnostic dir
From: Sylvain Gault <sylvain.gault at gmail.com> As there is no need for an x86_64 linker script, the i386 one can be put in the core directory directly. This partially revert commit d8eede3f2a360163235fad222a0190cd7c5bef38 which splitted several linker scripts into i386 and x86_64 versions. Signed-off-by: Sylvain Gault <sylvain.gault at gmail.com> --- core/Makefile | 2 +- core/{i386 => }/syslinux.ld | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename core/{i386 => }/syslinux.ld (100%) diff --git a/core/Makefile b/core/Makefile index 26302fd..6fb6377 100644 --- a/core/Makefile +++ b/core/Makefile @@ -161,7 +161,7 @@ kwdhash.gen: keywords genhash.pl AUXLIBS = libisolinux.a libisolinux-debug.a libldlinux.a \ libpxelinux.a liblpxelinux.a -LDSCRIPT = $(SRC)/$(ARCH)/syslinux.ld +LDSCRIPT = $(SRC)/syslinux.ld %.elf: %.o $(LIBDEP) $(LDSCRIPT) $(AUXLIBS) $(LD) $(LDFLAGS) -Bsymbolic $(LD_PIE) -E --hash-style=gnu -T $(LDSCRIPT) -M -o $@ $< \ diff --git a/core/i386/syslinux.ld b/core/syslinux.ld similarity index 100% rename from core/i386/syslinux.ld rename to core/syslinux.ld -- 2.5.3
On Mon, Oct 5, 2015 at 2:15 PM, celelibi--- via Syslinux <syslinux at zytor.com> wrote:> From: Sylvain Gault <sylvain.gault at gmail.com> > > These patches basically remove unused linker scripts and port a change that was > made to an unused script. > > Those are to be applied on top of the gcc 5 bug fixes as they would conflict > otherwise. > > Sylvain Gault (4): > diag/mbr: fix dependency to linker script > Remove unused linker scripts > core: Make symbols defined in linker script HIDDEN > core: Move linker script in arch-agnostic dir > > core/Makefile | 2 +- > core/i386/syslinux.ld | 389 ------------------------------------------------ > core/syslinux.ld | 117 ++++++--------- > core/x86_64/syslinux.ld | 389 ------------------------------------------------ > diag/mbr/Makefile | 2 +- > efi/syslinux.ld | 176 ---------------------- > mbr/mbr.ld | 73 --------- > memdisk/memdisk.ld | 140 ----------------- > 8 files changed, 48 insertions(+), 1240 deletions(-) > delete mode 100644 core/i386/syslinux.ld > delete mode 100644 core/x86_64/syslinux.ld > delete mode 100644 efi/syslinux.ld > delete mode 100644 mbr/mbr.ld > delete mode 100644 memdisk/memdisk.ldgcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) GNU ld (GNU Binutils for Ubuntu) 2.22 ld -m elf_i386 -Bsymbolic -pie -E --hash-style=gnu -T /home/gene/s/g/core/syslinux.ld -M -o ldlinux.elf ldlinux.o \ --start-group libcom32.a --whole-archive /home/gene/s/g/bios/com32/lib/libcom32core.a libldlinux.a --end-group \ > ldlinux.map ld:/home/gene/s/g/core/syslinux.ld:29: syntax error make[3]: *** [ldlinux.elf] Error 1 core/syslinux.ld:29: HIDDEN(__module_start = .); This would seem to indicate that the keyword HIDDEN is invalid in my version. A quick "git grep com32.ld" seems to show that com32.ld is unused. -- -Gene
2015-10-08 12:58 UTC+02:00, Gene Cumm <gene.cumm at gmail.com>:> On Mon, Oct 5, 2015 at 2:15 PM, celelibi--- via Syslinux > <syslinux at zytor.com> wrote: >> From: Sylvain Gault <sylvain.gault at gmail.com> >> >> These patches basically remove unused linker scripts and port a change >> that was >> made to an unused script. >> >> Those are to be applied on top of the gcc 5 bug fixes as they would >> conflict >> otherwise. >> >> Sylvain Gault (4): >> diag/mbr: fix dependency to linker script >> Remove unused linker scripts >> core: Make symbols defined in linker script HIDDEN >> core: Move linker script in arch-agnostic dir >> >> core/Makefile | 2 +- >> core/i386/syslinux.ld | 389 >> ------------------------------------------------ >> core/syslinux.ld | 117 ++++++--------- >> core/x86_64/syslinux.ld | 389 >> ------------------------------------------------ >> diag/mbr/Makefile | 2 +- >> efi/syslinux.ld | 176 ---------------------- >> mbr/mbr.ld | 73 --------- >> memdisk/memdisk.ld | 140 ----------------- >> 8 files changed, 48 insertions(+), 1240 deletions(-) >> delete mode 100644 core/i386/syslinux.ld >> delete mode 100644 core/x86_64/syslinux.ld >> delete mode 100644 efi/syslinux.ld >> delete mode 100644 mbr/mbr.ld >> delete mode 100644 memdisk/memdisk.ld > > > gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) > GNU ld (GNU Binutils for Ubuntu) 2.22 > > > ld -m elf_i386 -Bsymbolic -pie -E --hash-style=gnu -T > /home/gene/s/g/core/syslinux.ld -M -o ldlinux.elf ldlinux.o \ > --start-group libcom32.a --whole-archive > /home/gene/s/g/bios/com32/lib/libcom32core.a libldlinux.a --end-group > \ > > ldlinux.map > ld:/home/gene/s/g/core/syslinux.ld:29: syntax error > make[3]: *** [ldlinux.elf] Error 1 > > > core/syslinux.ld:29: HIDDEN(__module_start = .); > > This would seem to indicate that the keyword HIDDEN is invalid in my > version. A quick "git grep com32.ld" seems to show that com32.ld is > unused. >I just checked, HIDDEN has been added in binutils 2.23 release in late 2012. Should I just not port the commit 275a269ddec9f4d1b7a65f4f7c3e818401103d31 to the actually used linker scripts and leave the symbols not hidden? That's interesting, I don't know what's the purpose of com32/lib/com32.ld, it's just installed and never used. By looking into the history, it looks that it has been replaced by com32/lib/elf32.ld which was then split into arch-specific linker scripts. I guess it's a leftover. However, I don't know why it needs to be installed. This linker script installation has been introduced in 2004 by the commit 2d747a0e3e9d99cce544e4645370fcf7ef3e92ee. Maybe someone knows why it had to be installed? hpa? Celelibi
On Mon, Oct 5, 2015 at 2:15 PM, celelibi--- via Syslinux <syslinux at zytor.com> wrote:> From: Sylvain Gault <sylvain.gault at gmail.com> > > Some linker scripts were splitted into i386 and x86_64 versions in > commit d8eede3f2a360163235fad222a0190cd7c5bef38 but older scripts were > left there. > > Signed-off-by: Sylvain Gault <sylvain.gault at gmail.com> > --- > core/syslinux.ld | 414 ------------------------------------------------ > core/x86_64/syslinux.ld | 389 --------------------------------------------- > efi/syslinux.ld | 176 -------------------- > mbr/mbr.ld | 73 --------- > memdisk/memdisk.ld | 140 ---------------- > 5 files changed, 1192 deletions(-) > delete mode 100644 core/syslinux.ld > delete mode 100644 core/x86_64/syslinux.ld > delete mode 100644 efi/syslinux.ld > delete mode 100644 mbr/mbr.ld > delete mode 100644 memdisk/memdisk.ldRemoving mbr/mbr.ld makes 0 sense. MBRs are a BIOSism that won't be present on UEFI IA32 (aka i386) and X64 (aka x86-64 IA32-64 EM64T AMD64). I feel it makes more sense to remove the architecture-specific scripts. A MEMDISK-like system for UEFI would probably need to be implemented as a UEFI driver. As a result, it's questionable if it'd be a new variant of MEMDISK, built with some different code that's UEFI-specific or a completely different sub-project. efi/syslinux.ld and core/x86_64/syslinux.ld are no-brainers. core/syslinux.ld and core/i386/syslinux.ld get messy. For a cleaner look at how it appears it's been mismerged, consider "gitk c6bebc44.. -- core/{,i386/,x86_64/}syslinux.ld" then start at 8e5e9b0a and 6fa86596. 51529126 08ece8fc b7549a33 3b772bb6 275a269d affected core/syslinux.ld while it appears nothing really affected core/i386/syslinux.ld. -- -Gene
Apparently Analagous Threads
- [PATCH 0/4] Improve linker scripts
- [PATCH 2/2] bios: Don't try to guess the sections alignment
- Heads up on syslinux breakage in Ubuntu
- [syslinux:master] core, bios: Move __syslinux_shuffler_size to assembly
- [PATCH] core: Fix 'trackbuf' descriptor list byte length