[binutils-gdb] Fix type of .persistent.bss section

Eric Botcazou ebotcazou@sourceware.org
Fri Apr 23 17:14:17 GMT 2021


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=f5e98b7d675230fdfee794afa5ebae1fbc2893a2

commit f5e98b7d675230fdfee794afa5ebae1fbc2893a2
Author: Eric Botcazou <ebotcazou@gcc.gnu.org>
Date:   Fri Apr 23 19:07:59 2021 +0200

    Fix type of .persistent.bss section
    
    The change implementing the .persistent family of sections broke the
    existing support for the .persistent.bss section in the compiler:
    
    int a __attribute__ ((section (".persistent.bss")));
    
    t.s: Assembler messages:
    t.s:4: Warning: setting incorrect section type for .persistent.bss
    
    The compiler encodes it as @nobits but the assembler expects @progbits.
    The assembler is incorrect and should treat the section like the compiler.
    
    bfd/
            * elf.c (special_sections_p): Add .persistent.bss.
    gas/
            * testsuite/gas/elf/section25.d: Run it everywhere.
            * testsuite/gas/elf/section26.d: Likewise.
            * testsuite/gas/elf/section26.s: Add test for .persistent.bss.

Diff:
---
 bfd/ChangeLog                     | 4 ++++
 bfd/elf.c                         | 1 +
 gas/ChangeLog                     | 6 ++++++
 gas/testsuite/gas/elf/section25.d | 4 +++-
 gas/testsuite/gas/elf/section26.d | 6 +++++-
 gas/testsuite/gas/elf/section26.s | 3 +++
 6 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index f401e29863f..701357c3ad7 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,7 @@
+2021-04-23  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* elf.c (special_sections_p): Add .persistent.bss.
+
 2021-04-23  Jan Beulich  <jbeulich@suse.com>
 
 	* elf32-i386.c (elf_howto_table): R_386_TLS_DESC_CALL has zero
diff --git a/bfd/elf.c b/bfd/elf.c
index 11ae2f3a81b..4846b7bd47f 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -2725,6 +2725,7 @@ static const struct bfd_elf_special_section special_sections_n[] =
 
 static const struct bfd_elf_special_section special_sections_p[] =
 {
+  { STRING_COMMA_LEN (".persistent.bss"), 0, SHT_NOBITS,	SHF_ALLOC + SHF_WRITE },
   { STRING_COMMA_LEN (".persistent"),	 -2, SHT_PROGBITS,	SHF_ALLOC + SHF_WRITE },
   { STRING_COMMA_LEN (".preinit_array"), -2, SHT_PREINIT_ARRAY, SHF_ALLOC + SHF_WRITE },
   { STRING_COMMA_LEN (".plt"),		  0, SHT_PROGBITS,	SHF_ALLOC + SHF_EXECINSTR },
diff --git a/gas/ChangeLog b/gas/ChangeLog
index aedc6ea48a9..696d728d8c7 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2021-04-23  Eric Botcazou<ebotcazou@adacore.com>
+
+	* testsuite/gas/elf/section25.d: Run it everywhere.
+	* testsuite/gas/elf/section26.d: Likewise.
+	* testsuite/gas/elf/section26.s: Add test for .persistent.bss.
+
 2021-04-23  Jérôme Gardou  <jerome.gardou@gmail.com>
 
 	* config/obj-coff-seh.c (obj_coff_seh_pushframe): Allow an
diff --git a/gas/testsuite/gas/elf/section25.d b/gas/testsuite/gas/elf/section25.d
index 09353849e5b..fa09b85074f 100644
--- a/gas/testsuite/gas/elf/section25.d
+++ b/gas/testsuite/gas/elf/section25.d
@@ -1,7 +1,9 @@
 #name: sections 25 (.noinit)
-#target: [supports_noinit_section]
 #source: section25.s
 #readelf: -S --wide
+# The h8300 port issues a warning message for
+# new sections created without atrributes.
+#xfail: h8300-*
 
 #...
   \[..\] .noinit[ 	]+NOBITS[ 	]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00  WA .*
diff --git a/gas/testsuite/gas/elf/section26.d b/gas/testsuite/gas/elf/section26.d
index 15d85bdca9d..f08f444e9c9 100644
--- a/gas/testsuite/gas/elf/section26.d
+++ b/gas/testsuite/gas/elf/section26.d
@@ -1,12 +1,16 @@
 #name: sections 26 (.persistent)
-#target: [supports_persistent_section]
 #source: section26.s
 #readelf: -S --wide
+# The h8300 port issues a warning message for
+# new sections created without atrributes.
+#xfail: h8300-*
 
 #...
   \[..\] .persistent[ 	]+PROGBITS[ 	]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00  WA .*
 #...
   \[..\] .persistent.foo[ 	]+PROGBITS[ 	]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00  WA .*
+#...
+  \[..\] .persistent.bss[ 	]+NOBITS[ 	]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00  WA .*
 #...
   \[..\] .gnu.linkonce.p.bar[ 	]+PROGBITS[ 	]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00  WA .*
 #pass
diff --git a/gas/testsuite/gas/elf/section26.s b/gas/testsuite/gas/elf/section26.s
index 7f986454229..aefe15d4c2c 100644
--- a/gas/testsuite/gas/elf/section26.s
+++ b/gas/testsuite/gas/elf/section26.s
@@ -4,5 +4,8 @@
 .section .persistent.foo
 .word 0
 
+.section .persistent.bss
+.word 0
+
 .section .gnu.linkonce.p.bar
 .word 0


More information about the Binutils-cvs mailing list