Force the linker to put all sections into a single PT_LOAD segment
This is required when using binutils >= 2.31 which writes two PT_LOAD segments by default. This is not supported by the wrapper.c script used to convert the shared object into an elf binary. Forwarded: https://www.syslinux.org/archives/2018-August/026167.html Gbp-Pq: Name 0017-single-load-segment.patch
This commit is contained in:
parent
bfa5029962
commit
0f957eb8bd
|
@ -19,6 +19,11 @@ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
||||||
OUTPUT_ARCH(i386)
|
OUTPUT_ARCH(i386)
|
||||||
ENTRY(_start)
|
ENTRY(_start)
|
||||||
|
|
||||||
|
PHDRS
|
||||||
|
{
|
||||||
|
all PT_LOAD ;
|
||||||
|
}
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0;
|
. = 0;
|
||||||
|
@ -31,7 +36,7 @@ SECTIONS
|
||||||
*(.text)
|
*(.text)
|
||||||
*(.text.*)
|
*(.text.*)
|
||||||
__text_end = .;
|
__text_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
. = ALIGN(16);
|
. = ALIGN(16);
|
||||||
|
|
||||||
|
@ -40,7 +45,7 @@ SECTIONS
|
||||||
*(.rodata)
|
*(.rodata)
|
||||||
*(.rodata.*)
|
*(.rodata.*)
|
||||||
__rodata_end = .;
|
__rodata_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
@ -49,14 +54,14 @@ SECTIONS
|
||||||
KEEP (*(SORT(.ctors.*)))
|
KEEP (*(SORT(.ctors.*)))
|
||||||
KEEP (*(.ctors))
|
KEEP (*(.ctors))
|
||||||
__ctors_end = .;
|
__ctors_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
.dtors : {
|
.dtors : {
|
||||||
__dtors_start = .;
|
__dtors_start = .;
|
||||||
KEEP (*(SORT(.dtors.*)))
|
KEEP (*(SORT(.dtors.*)))
|
||||||
KEEP (*(.dtors))
|
KEEP (*(.dtors))
|
||||||
__dtors_end = .;
|
__dtors_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
. = ALIGN(4096);
|
. = ALIGN(4096);
|
||||||
.rel : {
|
.rel : {
|
||||||
|
@ -64,7 +69,7 @@ SECTIONS
|
||||||
*(.rel.data)
|
*(.rel.data)
|
||||||
*(.rel.data.*)
|
*(.rel.data.*)
|
||||||
*(.rel.ctors)
|
*(.rel.ctors)
|
||||||
}
|
} :all
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
@ -72,14 +77,14 @@ SECTIONS
|
||||||
__gnu_hash_start = .;
|
__gnu_hash_start = .;
|
||||||
*(.gnu.hash)
|
*(.gnu.hash)
|
||||||
__gnu_hash_end = .;
|
__gnu_hash_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
|
|
||||||
.dynsym : {
|
.dynsym : {
|
||||||
__dynsym_start = .;
|
__dynsym_start = .;
|
||||||
*(.dynsym)
|
*(.dynsym)
|
||||||
__dynsym_end = .;
|
__dynsym_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
@ -87,7 +92,7 @@ SECTIONS
|
||||||
__dynstr_start = .;
|
__dynstr_start = .;
|
||||||
*(.dynstr)
|
*(.dynstr)
|
||||||
__dynstr_end = .;
|
__dynstr_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
@ -104,7 +109,7 @@ SECTIONS
|
||||||
KEEP (*(.got.plt))
|
KEEP (*(.got.plt))
|
||||||
KEEP (*(.got))
|
KEEP (*(.got))
|
||||||
__got_end = .;
|
__got_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
@ -112,7 +117,7 @@ SECTIONS
|
||||||
__dynamic_start = .;
|
__dynamic_start = .;
|
||||||
*(.dynamic)
|
*(.dynamic)
|
||||||
__dynamic_end = .;
|
__dynamic_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
. = ALIGN(16);
|
. = ALIGN(16);
|
||||||
|
|
||||||
|
@ -122,19 +127,19 @@ SECTIONS
|
||||||
*(.data.*)
|
*(.data.*)
|
||||||
*(.lowmem)
|
*(.lowmem)
|
||||||
__data_end = .;
|
__data_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
.reloc : {
|
.reloc : {
|
||||||
*(.reloc)
|
*(.reloc)
|
||||||
}
|
} :all
|
||||||
|
|
||||||
.symtab : {
|
.symtab : {
|
||||||
*(.symtab)
|
*(.symtab)
|
||||||
}
|
} :all
|
||||||
|
|
||||||
.strtab : {
|
.strtab : {
|
||||||
*(.strtab)
|
*(.strtab)
|
||||||
}
|
} :all
|
||||||
|
|
||||||
.bss (NOLOAD) : {
|
.bss (NOLOAD) : {
|
||||||
/* the EFI loader doesn't seem to like a .bss section,
|
/* the EFI loader doesn't seem to like a .bss section,
|
||||||
|
@ -148,7 +153,7 @@ SECTIONS
|
||||||
__bss_end = .;
|
__bss_end = .;
|
||||||
*(.sbss)
|
*(.sbss)
|
||||||
*(.scommon)
|
*(.scommon)
|
||||||
}
|
} :all
|
||||||
__bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start);
|
__bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start);
|
||||||
__bss_dwords = (__bss_len + 3) >> 2;
|
__bss_dwords = (__bss_len + 3) >> 2;
|
||||||
|
|
||||||
|
@ -161,7 +166,7 @@ SECTIONS
|
||||||
*(.hugebss)
|
*(.hugebss)
|
||||||
*(.hugebss.*)
|
*(.hugebss.*)
|
||||||
__hugebss_end = .;
|
__hugebss_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
_end = .;
|
_end = .;
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,11 @@ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
|
||||||
OUTPUT_ARCH(i386:x86-64)
|
OUTPUT_ARCH(i386:x86-64)
|
||||||
ENTRY(_start)
|
ENTRY(_start)
|
||||||
|
|
||||||
|
PHDRS
|
||||||
|
{
|
||||||
|
all PT_LOAD ;
|
||||||
|
}
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0;
|
. = 0;
|
||||||
|
@ -31,7 +36,7 @@ SECTIONS
|
||||||
*(.text)
|
*(.text)
|
||||||
*(.text.*)
|
*(.text.*)
|
||||||
__text_end = .;
|
__text_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
. = ALIGN(16);
|
. = ALIGN(16);
|
||||||
|
|
||||||
|
@ -40,7 +45,7 @@ SECTIONS
|
||||||
*(.rodata)
|
*(.rodata)
|
||||||
*(.rodata.*)
|
*(.rodata.*)
|
||||||
__rodata_end = .;
|
__rodata_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
@ -49,14 +54,14 @@ SECTIONS
|
||||||
KEEP (*(SORT(.ctors.*)))
|
KEEP (*(SORT(.ctors.*)))
|
||||||
KEEP (*(.ctors))
|
KEEP (*(.ctors))
|
||||||
__ctors_end = .;
|
__ctors_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
.dtors : {
|
.dtors : {
|
||||||
__dtors_start = .;
|
__dtors_start = .;
|
||||||
KEEP (*(SORT(.dtors.*)))
|
KEEP (*(SORT(.dtors.*)))
|
||||||
KEEP (*(.dtors))
|
KEEP (*(.dtors))
|
||||||
__dtors_end = .;
|
__dtors_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
. = ALIGN(4096);
|
. = ALIGN(4096);
|
||||||
.rel : {
|
.rel : {
|
||||||
|
@ -64,7 +69,7 @@ SECTIONS
|
||||||
*(.rel.data)
|
*(.rel.data)
|
||||||
*(.rel.data.*)
|
*(.rel.data.*)
|
||||||
*(.rel.ctors)
|
*(.rel.ctors)
|
||||||
}
|
} :all
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
@ -72,14 +77,14 @@ SECTIONS
|
||||||
__gnu_hash_start = .;
|
__gnu_hash_start = .;
|
||||||
*(.gnu.hash)
|
*(.gnu.hash)
|
||||||
__gnu_hash_end = .;
|
__gnu_hash_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
|
|
||||||
.dynsym : {
|
.dynsym : {
|
||||||
__dynsym_start = .;
|
__dynsym_start = .;
|
||||||
*(.dynsym)
|
*(.dynsym)
|
||||||
__dynsym_end = .;
|
__dynsym_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
@ -87,7 +92,7 @@ SECTIONS
|
||||||
__dynstr_start = .;
|
__dynstr_start = .;
|
||||||
*(.dynstr)
|
*(.dynstr)
|
||||||
__dynstr_end = .;
|
__dynstr_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
@ -104,7 +109,7 @@ SECTIONS
|
||||||
KEEP (*(.got.plt))
|
KEEP (*(.got.plt))
|
||||||
KEEP (*(.got))
|
KEEP (*(.got))
|
||||||
__got_end = .;
|
__got_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
@ -112,7 +117,7 @@ SECTIONS
|
||||||
__dynamic_start = .;
|
__dynamic_start = .;
|
||||||
*(.dynamic)
|
*(.dynamic)
|
||||||
__dynamic_end = .;
|
__dynamic_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
. = ALIGN(16);
|
. = ALIGN(16);
|
||||||
|
|
||||||
|
@ -122,19 +127,19 @@ SECTIONS
|
||||||
*(.data.*)
|
*(.data.*)
|
||||||
*(.lowmem)
|
*(.lowmem)
|
||||||
__data_end = .;
|
__data_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
.reloc : {
|
.reloc : {
|
||||||
*(.reloc)
|
*(.reloc)
|
||||||
}
|
} :all
|
||||||
|
|
||||||
.symtab : {
|
.symtab : {
|
||||||
*(.symtab)
|
*(.symtab)
|
||||||
}
|
} :all
|
||||||
|
|
||||||
.strtab : {
|
.strtab : {
|
||||||
*(.strtab)
|
*(.strtab)
|
||||||
}
|
} :all
|
||||||
|
|
||||||
.bss (NOLOAD) : {
|
.bss (NOLOAD) : {
|
||||||
/* the EFI loader doesn't seem to like a .bss section,
|
/* the EFI loader doesn't seem to like a .bss section,
|
||||||
|
@ -148,7 +153,7 @@ SECTIONS
|
||||||
__bss_end = .;
|
__bss_end = .;
|
||||||
*(.sbss)
|
*(.sbss)
|
||||||
*(.scommon)
|
*(.scommon)
|
||||||
}
|
} :all
|
||||||
__bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start);
|
__bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start);
|
||||||
__bss_dwords = (__bss_len + 3) >> 2;
|
__bss_dwords = (__bss_len + 3) >> 2;
|
||||||
|
|
||||||
|
@ -161,7 +166,7 @@ SECTIONS
|
||||||
*(.hugebss)
|
*(.hugebss)
|
||||||
*(.hugebss.*)
|
*(.hugebss.*)
|
||||||
__hugebss_end = .;
|
__hugebss_end = .;
|
||||||
}
|
} :all
|
||||||
|
|
||||||
_end = .;
|
_end = .;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue