Browse Source

*.efi.lds: Use proper data segment placement

Use ld commands DATA_SEGMENT_ALIGN and DATA_SEGMENT_END

Fixes binutils 2.39 warning:
/usr/bin/ld: warning: efi/fwup.so has a LOAD segment with RWX
permissions

Signed-off-by: Callum Farmer <gmbr3@opensuse.org>
Callum Farmer 2 years ago
parent
commit
231c7632c0

+ 3 - 1
gnuefi/elf_aarch64_efi.lds

@@ -15,8 +15,9 @@ SECTIONS
   }
   _etext = .;
   _text_size = . - _text;
+  . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
   .dynamic  : { *(.dynamic) }
-  .data : ALIGN(4096)
+  .data :
   {
    _data = .;
    *(.sdata)
@@ -53,6 +54,7 @@ SECTIONS
   .dynstr   : { *(.dynstr) }
   . = ALIGN(4096);
   .note.gnu.build-id : { *(.note.gnu.build-id) }
+  . = DATA_SEGMENT_END (.);
   /DISCARD/ :
   {
     *(.rel.reloc)

+ 2 - 0
gnuefi/elf_arm_efi.lds

@@ -15,6 +15,7 @@ SECTIONS
   }
   _etext = .;
   _text_size = . - _text;
+  . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
   .dynamic  : { *(.dynamic) }
   .data :
   {
@@ -53,6 +54,7 @@ SECTIONS
   .dynstr   : { *(.dynstr) }
   . = ALIGN(4096);
   .note.gnu.build-id : { *(.note.gnu.build-id) }
+  . = DATA_SEGMENT_END (.);
   /DISCARD/ :
   {
     *(.rel.reloc)

+ 2 - 1
gnuefi/elf_ia32_efi.lds

@@ -19,7 +19,7 @@ SECTIONS
   }
   _etext = .;
   _text_size = . - _text;
-  . = ALIGN(4096);
+  . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
   .sdata :
   {
    _data = .;
@@ -76,6 +76,7 @@ SECTIONS
   . = ALIGN(4096);
   .dynstr   : { *(.dynstr) }
   . = ALIGN(4096);
+  . = DATA_SEGMENT_END (.);
   /DISCARD/ :
   {
     *(.rel.reloc)

+ 2 - 1
gnuefi/elf_ia64_efi.lds

@@ -19,7 +19,7 @@ SECTIONS
   }
   _etext = .;
   _text_size = . - _text;
-  . = ALIGN(4096);
+  . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
   __gp = ALIGN (8) + 0x200000;
   .sdata :
   {
@@ -71,6 +71,7 @@ SECTIONS
   .dynsym   : { *(.dynsym) }
   . = ALIGN(4096);
   .dynstr   : { *(.dynstr) }
+  . = DATA_SEGMENT_END (.);
   /DISCARD/ :
   {
     *(.rela.plabel)

+ 2 - 0
gnuefi/elf_mips64el_efi.lds

@@ -15,6 +15,7 @@ SECTIONS
   }
   _etext = .;
   _text_size = . - _text;
+  . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
   .dynamic  : { *(.dynamic) }
   .data :
   {
@@ -53,6 +54,7 @@ SECTIONS
   .dynstr   : { *(.dynstr) }
   . = ALIGN(4096);
   .note.gnu.build-id : { *(.note.gnu.build-id) }
+  . = DATA_SEGMENT_END (.);
   /DISCARD/ :
   {
     *(.rel.reloc)

+ 1 - 0
gnuefi/elf_riscv64_efi.lds

@@ -67,6 +67,7 @@ SECTIONS {
 	. = ALIGN(4096);
 .note.gnu.build-id :
 	{ *(.note.gnu.build-id) }
+. = DATA_SEGMENT_END (.);
 /DISCARD/ :
 	{
 		*(.rel.reloc)

+ 2 - 1
gnuefi/elf_x86_64_efi.lds

@@ -30,7 +30,7 @@ SECTIONS
   {
    *(.reloc)
   }
-  . = ALIGN(4096);
+  . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
   .data :
   {
    _data = .;
@@ -66,6 +66,7 @@ SECTIONS
   . = ALIGN(4096);
   .dynstr   : { *(.dynstr) }
   . = ALIGN(4096);
+  . = DATA_SEGMENT_END (.);
   .ignored.reloc :
   {
     *(.rela.reloc)