* [PATCH] gas: Generate a new section for SHF_GNU_RETAIN
@ 2020-12-04 13:52 H.J. Lu
2020-12-04 15:29 ` Jozef Lawrynowicz
0 siblings, 1 reply; 7+ messages in thread
From: H.J. Lu @ 2020-12-04 13:52 UTC (permalink / raw)
To: binutils
For
.globl foo2
.section .data.foo,"aR"
.align 4
.type foo2, @object
.size foo2, 4
foo2:
.long 2
.globl foo1
.section .data.foo
.align 4
.type foo1, @object
.size foo1, 4
foo1:
.long 1
generate a new section if the SHF_GNU_RETAIN bit doesn't match.
* config/obj-elf.c (SEC_ASSEMBLER_SHF_MASK): New.
(get_section_by_match): Also check if SEC_ASSEMBLER_SHF_MASK of
sh_flags matches. Rename info to sh_info.
(obj_elf_change_section): Rename info to sh_info.
(obj_elf_section): Rename info to sh_info. Set sh_flags for
SHF_GNU_RETAIN.
* config/obj-elf.h (elf_section_match): Rename info to sh_info.
Add sh_flags.
* testsuite/gas/elf/elf.exp: Run section27.
* testsuite/gas/elf/section24b.d: Updated.
* testsuite/gas/elf/section27.d: New file.
* testsuite/gas/elf/section27.s: Likewise.
---
gas/config/obj-elf.c | 21 ++++++++++++------
gas/config/obj-elf.h | 3 ++-
gas/testsuite/gas/elf/elf.exp | 1 +
gas/testsuite/gas/elf/section24b.d | 10 ++++++---
gas/testsuite/gas/elf/section27.d | 14 ++++++++++++
gas/testsuite/gas/elf/section27.s | 34 ++++++++++++++++++++++++++++++
6 files changed, 73 insertions(+), 10 deletions(-)
create mode 100644 gas/testsuite/gas/elf/section27.d
create mode 100644 gas/testsuite/gas/elf/section27.s
diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
index 54d42d9ecb..58aaac4b11 100644
--- a/gas/config/obj-elf.c
+++ b/gas/config/obj-elf.c
@@ -519,6 +519,9 @@ struct section_stack
static struct section_stack *section_stack;
+/* ELF section flags for unique sections. */
+#define SEC_ASSEMBLER_SHF_MASK SHF_GNU_RETAIN
+
/* Return TRUE iff SEC matches the section info INF. */
static bfd_boolean
@@ -529,9 +532,12 @@ get_section_by_match (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *inf)
const char *group_name = elf_group_name (sec);
const char *linked_to_symbol_name
= sec->map_head.linked_to_symbol_name;
- unsigned int info = elf_section_data (sec)->this_hdr.sh_info;
+ unsigned int sh_info = elf_section_data (sec)->this_hdr.sh_info;
+ bfd_vma sh_flags = (elf_section_data (sec)->this_hdr.sh_flags
+ & SEC_ASSEMBLER_SHF_MASK);
- return (info == match->info
+ return (sh_info == match->sh_info
+ && sh_flags == match->sh_flags
&& ((bfd_section_flags (sec) & SEC_ASSEMBLER_SECTION_ID)
== (match->flags & SEC_ASSEMBLER_SECTION_ID))
&& sec->section_id == match->section_id
@@ -740,7 +746,7 @@ obj_elf_change_section (const char *name,
type = bfd_elf_get_default_section_type (flags);
elf_section_type (sec) = type;
elf_section_flags (sec) = attr;
- elf_section_data (sec)->this_hdr.sh_info = match_p->info;
+ elf_section_data (sec)->this_hdr.sh_info = match_p->sh_info;
/* Prevent SEC_HAS_CONTENTS from being inadvertently set. */
if (type == SHT_NOBITS)
@@ -1322,18 +1328,21 @@ obj_elf_section (int push)
if (ISDIGIT (* input_line_pointer))
{
char *t = input_line_pointer;
- match.info = strtoul (input_line_pointer,
+ match.sh_info = strtoul (input_line_pointer,
&input_line_pointer, 0);
- if (match.info == (unsigned int) -1)
+ if (match.sh_info == (unsigned int) -1)
{
as_warn (_("unsupported mbind section info: %s"), t);
- match.info = 0;
+ match.sh_info = 0;
}
}
else
input_line_pointer = save;
}
+ if ((gnu_attr & SHF_GNU_RETAIN) != 0)
+ match.sh_flags |= SHF_GNU_RETAIN;
+
if (*input_line_pointer == ',')
{
char *save = input_line_pointer;
diff --git a/gas/config/obj-elf.h b/gas/config/obj-elf.h
index 4f29572eef..c714ba7a70 100644
--- a/gas/config/obj-elf.h
+++ b/gas/config/obj-elf.h
@@ -106,8 +106,9 @@ struct elf_section_match
{
const char * group_name;
const char * linked_to_symbol_name;
- unsigned int info;
unsigned int section_id;
+ unsigned int sh_info; /* ELF section information. */
+ bfd_vma sh_flags; /* ELF section flags. */
flagword flags;
};
diff --git a/gas/testsuite/gas/elf/elf.exp b/gas/testsuite/gas/elf/elf.exp
index 25c40a2810..80dec4effc 100644
--- a/gas/testsuite/gas/elf/elf.exp
+++ b/gas/testsuite/gas/elf/elf.exp
@@ -268,6 +268,7 @@ if { [is_elf_format] } then {
run_dump_test "section24b"
run_dump_test "section25"
run_dump_test "section26"
+ run_dump_test "section27"
run_dump_test "sh-link-zero"
run_dump_test "dwarf2-1" $dump_opts
run_dump_test "dwarf2-2" $dump_opts
diff --git a/gas/testsuite/gas/elf/section24b.d b/gas/testsuite/gas/elf/section24b.d
index 451ec21635..03dd2916ef 100644
--- a/gas/testsuite/gas/elf/section24b.d
+++ b/gas/testsuite/gas/elf/section24b.d
@@ -3,8 +3,12 @@
#source: section24.s
#readelf: -S --wide
-#failif
#...
- \[..\] .(text|data|bss|rodata)[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 [^R] .*
+ \[..\] .text[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +AX .*
+#...
+ \[..\] .data[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +WA .*
+#...
+ \[..\] .bss[ ]+NOBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +WA .*
+#...
+ \[..\] .rodata[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +A .*
#pass
-
diff --git a/gas/testsuite/gas/elf/section27.d b/gas/testsuite/gas/elf/section27.d
new file mode 100644
index 0000000000..5489d98d6e
--- /dev/null
+++ b/gas/testsuite/gas/elf/section27.d
@@ -0,0 +1,14 @@
+#readelf: -h -S --wide
+#name: SHF_GNU_RETAIN sections 27
+#notarget: ![supports_gnu_osabi]
+
+#...
+ +OS/ABI: +UNIX - (GNU|FreeBSD)
+#...
+ \[..\] .text[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 AX.*
+ \[..\] .data[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 WA.*
+ \[..\] .bss[ ]+NOBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 WA.*
+ \[..\] .bss[ ]+NOBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 WAR.*
+ \[..\] .data[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 WAR.*
+ \[..\] .text[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 AXR.*
+#pass
diff --git a/gas/testsuite/gas/elf/section27.s b/gas/testsuite/gas/elf/section27.s
new file mode 100644
index 0000000000..78e410ff95
--- /dev/null
+++ b/gas/testsuite/gas/elf/section27.s
@@ -0,0 +1,34 @@
+ .section .bss,"aw"
+ .global discard0
+ .type discard0, %object
+discard0:
+ .zero 2
+
+ .section .data,"aw"
+ .global discard1
+ .type discard1, %object
+discard1:
+ .word 1
+
+ .text
+ .global discard2
+ .type discard2, %function
+discard2:
+ .word 0
+
+ .section .bss,"awR",%nobits
+ .global retain0
+ .type retain0, %object
+retain0:
+ .zero 2
+
+ .section .data,"awR",%progbits
+ .type retain1, %object
+retain1:
+ .word 1
+
+ .section .text,"axR",%progbits
+ .global retain2
+ .type retain2, %function
+retain2:
+ .word 0
--
2.28.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] gas: Generate a new section for SHF_GNU_RETAIN
2020-12-04 13:52 [PATCH] gas: Generate a new section for SHF_GNU_RETAIN H.J. Lu
@ 2020-12-04 15:29 ` Jozef Lawrynowicz
2020-12-04 16:43 ` V2 " H.J. Lu
0 siblings, 1 reply; 7+ messages in thread
From: Jozef Lawrynowicz @ 2020-12-04 15:29 UTC (permalink / raw)
To: H.J. Lu; +Cc: binutils
On Fri, Dec 04, 2020 at 05:52:54AM -0800, H.J. Lu wrote:
> For
> .globl foo2
> .section .data.foo,"aR"
> .align 4
> .type foo2, @object
> .size foo2, 4
> foo2:
> .long 2
> .globl foo1
> .section .data.foo
> .align 4
> .type foo1, @object
> .size foo1, 4
> foo1:
> .long 1
>
> generate a new section if the SHF_GNU_RETAIN bit doesn't match.
>
> * config/obj-elf.c (SEC_ASSEMBLER_SHF_MASK): New.
> (get_section_by_match): Also check if SEC_ASSEMBLER_SHF_MASK of
> sh_flags matches. Rename info to sh_info.
> (obj_elf_change_section): Rename info to sh_info.
> (obj_elf_section): Rename info to sh_info. Set sh_flags for
> SHF_GNU_RETAIN.
> * config/obj-elf.h (elf_section_match): Rename info to sh_info.
> Add sh_flags.
> * testsuite/gas/elf/elf.exp: Run section27.
> * testsuite/gas/elf/section24b.d: Updated.
> * testsuite/gas/elf/section27.d: New file.
> * testsuite/gas/elf/section27.s: Likewise.
> ---
> gas/config/obj-elf.c | 21 ++++++++++++------
> gas/config/obj-elf.h | 3 ++-
> gas/testsuite/gas/elf/elf.exp | 1 +
> gas/testsuite/gas/elf/section24b.d | 10 ++++++---
> gas/testsuite/gas/elf/section27.d | 14 ++++++++++++
> gas/testsuite/gas/elf/section27.s | 34 ++++++++++++++++++++++++++++++
> 6 files changed, 73 insertions(+), 10 deletions(-)
> create mode 100644 gas/testsuite/gas/elf/section27.d
> create mode 100644 gas/testsuite/gas/elf/section27.s
I just want to check that we are OK with the fact that a .section
directive without any flags will always use the default flags, even if
the section previously had the 'R' flag set. I suppose this is just
standard behavior and how the .section directive has always behaved.
$ cat asm-tester.s
.section .data.foo,"awR"
.word 0
.section .data.foo
.word 0
$ as asm-tester.s -o tester.o
$ readelf --wide -S tester.o
...
[ 4] .data.foo PROGBITS 0000000000000000 000040 000002 00 WAR 0 0 1
[ 5] .data.foo PROGBITS 0000000000000000 000042 000002 00 WA 0 0 1
...
Also, I think the following change should be added, since the OR'ing of
SHF_GNU_RETAIN flag between sections, from the original patch, is now
redundant.
diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
index 54d42d9ecb..9ac53e4d0e 100644
--- a/gas/config/obj-elf.c
+++ b/gas/config/obj-elf.c
@@ -806,17 +806,9 @@ obj_elf_change_section (const char *name,
as_bad (_("changed section attributes for %s"), name);
}
else
- {
- /* Don't overwrite a previously set SHF_GNU_RETAIN flag for the
- section. The entire section must be marked retained. */
- if ((elf_tdata (stdoutput)->has_gnu_osabi & elf_gnu_osabi_retain)
- && ((elf_section_flags (old_sec) & SHF_GNU_RETAIN)))
- attr |= SHF_GNU_RETAIN;
-
- /* FIXME: Maybe we should consider removing a previously set
- processor or application specific attribute as suspicious ? */
- elf_section_flags (sec) = attr;
- }
+ /* FIXME: Maybe we should consider removing a previously set
+ processor or application specific attribute as suspicious ? */
+ elf_section_flags (sec) = attr;
if ((flags & SEC_MERGE) && old_sec->entsize != (unsigned) entsize)
as_bad (_("changed section entity size for %s"), name);
Thanks,
Jozef
^ permalink raw reply [flat|nested] 7+ messages in thread
* V2 [PATCH] gas: Generate a new section for SHF_GNU_RETAIN
2020-12-04 15:29 ` Jozef Lawrynowicz
@ 2020-12-04 16:43 ` H.J. Lu
2020-12-08 12:33 ` H.J. Lu
0 siblings, 1 reply; 7+ messages in thread
From: H.J. Lu @ 2020-12-04 16:43 UTC (permalink / raw)
To: Binutils
[-- Attachment #1: Type: text/plain, Size: 3903 bytes --]
On Fri, Dec 4, 2020 at 7:29 AM Jozef Lawrynowicz
<jozef.l@mittosystems.com> wrote:
>
> On Fri, Dec 04, 2020 at 05:52:54AM -0800, H.J. Lu wrote:
> > For
> > .globl foo2
> > .section .data.foo,"aR"
> > .align 4
> > .type foo2, @object
> > .size foo2, 4
> > foo2:
> > .long 2
> > .globl foo1
> > .section .data.foo
> > .align 4
> > .type foo1, @object
> > .size foo1, 4
> > foo1:
> > .long 1
> >
> > generate a new section if the SHF_GNU_RETAIN bit doesn't match.
> >
> > * config/obj-elf.c (SEC_ASSEMBLER_SHF_MASK): New.
> > (get_section_by_match): Also check if SEC_ASSEMBLER_SHF_MASK of
> > sh_flags matches. Rename info to sh_info.
> > (obj_elf_change_section): Rename info to sh_info.
> > (obj_elf_section): Rename info to sh_info. Set sh_flags for
> > SHF_GNU_RETAIN.
> > * config/obj-elf.h (elf_section_match): Rename info to sh_info.
> > Add sh_flags.
> > * testsuite/gas/elf/elf.exp: Run section27.
> > * testsuite/gas/elf/section24b.d: Updated.
> > * testsuite/gas/elf/section27.d: New file.
> > * testsuite/gas/elf/section27.s: Likewise.
> > ---
> > gas/config/obj-elf.c | 21 ++++++++++++------
> > gas/config/obj-elf.h | 3 ++-
> > gas/testsuite/gas/elf/elf.exp | 1 +
> > gas/testsuite/gas/elf/section24b.d | 10 ++++++---
> > gas/testsuite/gas/elf/section27.d | 14 ++++++++++++
> > gas/testsuite/gas/elf/section27.s | 34 ++++++++++++++++++++++++++++++
> > 6 files changed, 73 insertions(+), 10 deletions(-)
> > create mode 100644 gas/testsuite/gas/elf/section27.d
> > create mode 100644 gas/testsuite/gas/elf/section27.s
>
> I just want to check that we are OK with the fact that a .section
> directive without any flags will always use the default flags, even if
> the section previously had the 'R' flag set. I suppose this is just
> standard behavior and how the .section directive has always behaved.
Correct.
> $ cat asm-tester.s
> .section .data.foo,"awR"
> .word 0
> .section .data.foo
> .word 0
> $ as asm-tester.s -o tester.o
> $ readelf --wide -S tester.o
> ...
> [ 4] .data.foo PROGBITS 0000000000000000 000040 000002 00 WAR 0 0 1
> [ 5] .data.foo PROGBITS 0000000000000000 000042 000002 00 WA 0 0 1
> ...
>
> Also, I think the following change should be added, since the OR'ing of
> SHF_GNU_RETAIN flag between sections, from the original patch, is now
> redundant.
>
> diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
> index 54d42d9ecb..9ac53e4d0e 100644
> --- a/gas/config/obj-elf.c
> +++ b/gas/config/obj-elf.c
> @@ -806,17 +806,9 @@ obj_elf_change_section (const char *name,
> as_bad (_("changed section attributes for %s"), name);
> }
> else
> - {
> - /* Don't overwrite a previously set SHF_GNU_RETAIN flag for the
> - section. The entire section must be marked retained. */
> - if ((elf_tdata (stdoutput)->has_gnu_osabi & elf_gnu_osabi_retain)
> - && ((elf_section_flags (old_sec) & SHF_GNU_RETAIN)))
> - attr |= SHF_GNU_RETAIN;
> -
> - /* FIXME: Maybe we should consider removing a previously set
> - processor or application specific attribute as suspicious ? */
> - elf_section_flags (sec) = attr;
> - }
> + /* FIXME: Maybe we should consider removing a previously set
> + processor or application specific attribute as suspicious ? */
> + elf_section_flags (sec) = attr;
>
> if ((flags & SEC_MERGE) && old_sec->entsize != (unsigned) entsize)
> as_bad (_("changed section entity size for %s"), name);
>
Fixed.
Here is the updated patch. OK for master?
Thanks.
--
H.J.
[-- Attachment #2: 0001-gas-Generate-a-new-section-for-SHF_GNU_RETAIN.patch --]
[-- Type: text/x-patch, Size: 7927 bytes --]
From ac8a6311162292ede4cd2da96ad62f74c0af5b7f Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Thu, 24 Sep 2020 05:45:50 -0700
Subject: [PATCH] gas: Generate a new section for SHF_GNU_RETAIN
For
.globl foo2
.section .data.foo,"aR"
.align 4
.type foo2, @object
.size foo2, 4
foo2:
.long 2
.globl foo1
.section .data.foo
.align 4
.type foo1, @object
.size foo1, 4
foo1:
.long 1
generate a new section if the SHF_GNU_RETAIN bit doesn't match.
* config/obj-elf.c (SEC_ASSEMBLER_SHF_MASK): New.
(get_section_by_match): Also check if SEC_ASSEMBLER_SHF_MASK of
sh_flags matches. Rename info to sh_info.
(obj_elf_change_section): Don't check previous SHF_GNU_RETAIN.
Rename info to sh_info.
(obj_elf_section): Rename info to sh_info. Set sh_flags for
SHF_GNU_RETAIN.
* config/obj-elf.h (elf_section_match): Rename info to sh_info.
Add sh_flags.
* testsuite/gas/elf/elf.exp: Run section27.
* testsuite/gas/elf/section24b.d: Updated.
* testsuite/gas/elf/section27.d: New file.
* testsuite/gas/elf/section27.s: Likewise.
---
gas/config/obj-elf.c | 35 +++++++++++++++---------------
gas/config/obj-elf.h | 3 ++-
gas/testsuite/gas/elf/elf.exp | 1 +
gas/testsuite/gas/elf/section24b.d | 10 ++++++---
gas/testsuite/gas/elf/section27.d | 14 ++++++++++++
gas/testsuite/gas/elf/section27.s | 34 +++++++++++++++++++++++++++++
6 files changed, 76 insertions(+), 21 deletions(-)
create mode 100644 gas/testsuite/gas/elf/section27.d
create mode 100644 gas/testsuite/gas/elf/section27.s
diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
index 54d42d9ecb..5d3b1a0edc 100644
--- a/gas/config/obj-elf.c
+++ b/gas/config/obj-elf.c
@@ -519,6 +519,9 @@ struct section_stack
static struct section_stack *section_stack;
+/* ELF section flags for unique sections. */
+#define SEC_ASSEMBLER_SHF_MASK SHF_GNU_RETAIN
+
/* Return TRUE iff SEC matches the section info INF. */
static bfd_boolean
@@ -529,9 +532,12 @@ get_section_by_match (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *inf)
const char *group_name = elf_group_name (sec);
const char *linked_to_symbol_name
= sec->map_head.linked_to_symbol_name;
- unsigned int info = elf_section_data (sec)->this_hdr.sh_info;
+ unsigned int sh_info = elf_section_data (sec)->this_hdr.sh_info;
+ bfd_vma sh_flags = (elf_section_data (sec)->this_hdr.sh_flags
+ & SEC_ASSEMBLER_SHF_MASK);
- return (info == match->info
+ return (sh_info == match->sh_info
+ && sh_flags == match->sh_flags
&& ((bfd_section_flags (sec) & SEC_ASSEMBLER_SECTION_ID)
== (match->flags & SEC_ASSEMBLER_SECTION_ID))
&& sec->section_id == match->section_id
@@ -740,7 +746,7 @@ obj_elf_change_section (const char *name,
type = bfd_elf_get_default_section_type (flags);
elf_section_type (sec) = type;
elf_section_flags (sec) = attr;
- elf_section_data (sec)->this_hdr.sh_info = match_p->info;
+ elf_section_data (sec)->this_hdr.sh_info = match_p->sh_info;
/* Prevent SEC_HAS_CONTENTS from being inadvertently set. */
if (type == SHT_NOBITS)
@@ -806,17 +812,9 @@ obj_elf_change_section (const char *name,
as_bad (_("changed section attributes for %s"), name);
}
else
- {
- /* Don't overwrite a previously set SHF_GNU_RETAIN flag for the
- section. The entire section must be marked retained. */
- if ((elf_tdata (stdoutput)->has_gnu_osabi & elf_gnu_osabi_retain)
- && ((elf_section_flags (old_sec) & SHF_GNU_RETAIN)))
- attr |= SHF_GNU_RETAIN;
-
- /* FIXME: Maybe we should consider removing a previously set
- processor or application specific attribute as suspicious ? */
- elf_section_flags (sec) = attr;
- }
+ /* FIXME: Maybe we should consider removing a previously set
+ processor or application specific attribute as suspicious? */
+ elf_section_flags (sec) = attr;
if ((flags & SEC_MERGE) && old_sec->entsize != (unsigned) entsize)
as_bad (_("changed section entity size for %s"), name);
@@ -1322,18 +1320,21 @@ obj_elf_section (int push)
if (ISDIGIT (* input_line_pointer))
{
char *t = input_line_pointer;
- match.info = strtoul (input_line_pointer,
+ match.sh_info = strtoul (input_line_pointer,
&input_line_pointer, 0);
- if (match.info == (unsigned int) -1)
+ if (match.sh_info == (unsigned int) -1)
{
as_warn (_("unsupported mbind section info: %s"), t);
- match.info = 0;
+ match.sh_info = 0;
}
}
else
input_line_pointer = save;
}
+ if ((gnu_attr & SHF_GNU_RETAIN) != 0)
+ match.sh_flags |= SHF_GNU_RETAIN;
+
if (*input_line_pointer == ',')
{
char *save = input_line_pointer;
diff --git a/gas/config/obj-elf.h b/gas/config/obj-elf.h
index 4f29572eef..c714ba7a70 100644
--- a/gas/config/obj-elf.h
+++ b/gas/config/obj-elf.h
@@ -106,8 +106,9 @@ struct elf_section_match
{
const char * group_name;
const char * linked_to_symbol_name;
- unsigned int info;
unsigned int section_id;
+ unsigned int sh_info; /* ELF section information. */
+ bfd_vma sh_flags; /* ELF section flags. */
flagword flags;
};
diff --git a/gas/testsuite/gas/elf/elf.exp b/gas/testsuite/gas/elf/elf.exp
index 25c40a2810..80dec4effc 100644
--- a/gas/testsuite/gas/elf/elf.exp
+++ b/gas/testsuite/gas/elf/elf.exp
@@ -268,6 +268,7 @@ if { [is_elf_format] } then {
run_dump_test "section24b"
run_dump_test "section25"
run_dump_test "section26"
+ run_dump_test "section27"
run_dump_test "sh-link-zero"
run_dump_test "dwarf2-1" $dump_opts
run_dump_test "dwarf2-2" $dump_opts
diff --git a/gas/testsuite/gas/elf/section24b.d b/gas/testsuite/gas/elf/section24b.d
index 451ec21635..03dd2916ef 100644
--- a/gas/testsuite/gas/elf/section24b.d
+++ b/gas/testsuite/gas/elf/section24b.d
@@ -3,8 +3,12 @@
#source: section24.s
#readelf: -S --wide
-#failif
#...
- \[..\] .(text|data|bss|rodata)[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 [^R] .*
+ \[..\] .text[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +AX .*
+#...
+ \[..\] .data[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +WA .*
+#...
+ \[..\] .bss[ ]+NOBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +WA .*
+#...
+ \[..\] .rodata[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +A .*
#pass
-
diff --git a/gas/testsuite/gas/elf/section27.d b/gas/testsuite/gas/elf/section27.d
new file mode 100644
index 0000000000..5489d98d6e
--- /dev/null
+++ b/gas/testsuite/gas/elf/section27.d
@@ -0,0 +1,14 @@
+#readelf: -h -S --wide
+#name: SHF_GNU_RETAIN sections 27
+#notarget: ![supports_gnu_osabi]
+
+#...
+ +OS/ABI: +UNIX - (GNU|FreeBSD)
+#...
+ \[..\] .text[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 AX.*
+ \[..\] .data[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 WA.*
+ \[..\] .bss[ ]+NOBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 WA.*
+ \[..\] .bss[ ]+NOBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 WAR.*
+ \[..\] .data[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 WAR.*
+ \[..\] .text[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 AXR.*
+#pass
diff --git a/gas/testsuite/gas/elf/section27.s b/gas/testsuite/gas/elf/section27.s
new file mode 100644
index 0000000000..78e410ff95
--- /dev/null
+++ b/gas/testsuite/gas/elf/section27.s
@@ -0,0 +1,34 @@
+ .section .bss,"aw"
+ .global discard0
+ .type discard0, %object
+discard0:
+ .zero 2
+
+ .section .data,"aw"
+ .global discard1
+ .type discard1, %object
+discard1:
+ .word 1
+
+ .text
+ .global discard2
+ .type discard2, %function
+discard2:
+ .word 0
+
+ .section .bss,"awR",%nobits
+ .global retain0
+ .type retain0, %object
+retain0:
+ .zero 2
+
+ .section .data,"awR",%progbits
+ .type retain1, %object
+retain1:
+ .word 1
+
+ .section .text,"axR",%progbits
+ .global retain2
+ .type retain2, %function
+retain2:
+ .word 0
--
2.28.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: V2 [PATCH] gas: Generate a new section for SHF_GNU_RETAIN
2020-12-04 16:43 ` V2 " H.J. Lu
@ 2020-12-08 12:33 ` H.J. Lu
2020-12-08 17:08 ` Nick Clifton
0 siblings, 1 reply; 7+ messages in thread
From: H.J. Lu @ 2020-12-08 12:33 UTC (permalink / raw)
To: Binutils, Alan Modra, Nick Clifton
On Fri, Dec 4, 2020 at 8:43 AM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> On Fri, Dec 4, 2020 at 7:29 AM Jozef Lawrynowicz
> <jozef.l@mittosystems.com> wrote:
> >
> > On Fri, Dec 04, 2020 at 05:52:54AM -0800, H.J. Lu wrote:
> > > For
> > > .globl foo2
> > > .section .data.foo,"aR"
> > > .align 4
> > > .type foo2, @object
> > > .size foo2, 4
> > > foo2:
> > > .long 2
> > > .globl foo1
> > > .section .data.foo
> > > .align 4
> > > .type foo1, @object
> > > .size foo1, 4
> > > foo1:
> > > .long 1
> > >
> > > generate a new section if the SHF_GNU_RETAIN bit doesn't match.
> > >
> > > * config/obj-elf.c (SEC_ASSEMBLER_SHF_MASK): New.
> > > (get_section_by_match): Also check if SEC_ASSEMBLER_SHF_MASK of
> > > sh_flags matches. Rename info to sh_info.
> > > (obj_elf_change_section): Rename info to sh_info.
> > > (obj_elf_section): Rename info to sh_info. Set sh_flags for
> > > SHF_GNU_RETAIN.
> > > * config/obj-elf.h (elf_section_match): Rename info to sh_info.
> > > Add sh_flags.
> > > * testsuite/gas/elf/elf.exp: Run section27.
> > > * testsuite/gas/elf/section24b.d: Updated.
> > > * testsuite/gas/elf/section27.d: New file.
> > > * testsuite/gas/elf/section27.s: Likewise.
> > > ---
> > > gas/config/obj-elf.c | 21 ++++++++++++------
> > > gas/config/obj-elf.h | 3 ++-
> > > gas/testsuite/gas/elf/elf.exp | 1 +
> > > gas/testsuite/gas/elf/section24b.d | 10 ++++++---
> > > gas/testsuite/gas/elf/section27.d | 14 ++++++++++++
> > > gas/testsuite/gas/elf/section27.s | 34 ++++++++++++++++++++++++++++++
> > > 6 files changed, 73 insertions(+), 10 deletions(-)
> > > create mode 100644 gas/testsuite/gas/elf/section27.d
> > > create mode 100644 gas/testsuite/gas/elf/section27.s
> >
> > I just want to check that we are OK with the fact that a .section
> > directive without any flags will always use the default flags, even if
> > the section previously had the 'R' flag set. I suppose this is just
> > standard behavior and how the .section directive has always behaved.
>
> Correct.
>
> > $ cat asm-tester.s
> > .section .data.foo,"awR"
> > .word 0
> > .section .data.foo
> > .word 0
> > $ as asm-tester.s -o tester.o
> > $ readelf --wide -S tester.o
> > ...
> > [ 4] .data.foo PROGBITS 0000000000000000 000040 000002 00 WAR 0 0 1
> > [ 5] .data.foo PROGBITS 0000000000000000 000042 000002 00 WA 0 0 1
> > ...
> >
> > Also, I think the following change should be added, since the OR'ing of
> > SHF_GNU_RETAIN flag between sections, from the original patch, is now
> > redundant.
> >
> > diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
> > index 54d42d9ecb..9ac53e4d0e 100644
> > --- a/gas/config/obj-elf.c
> > +++ b/gas/config/obj-elf.c
> > @@ -806,17 +806,9 @@ obj_elf_change_section (const char *name,
> > as_bad (_("changed section attributes for %s"), name);
> > }
> > else
> > - {
> > - /* Don't overwrite a previously set SHF_GNU_RETAIN flag for the
> > - section. The entire section must be marked retained. */
> > - if ((elf_tdata (stdoutput)->has_gnu_osabi & elf_gnu_osabi_retain)
> > - && ((elf_section_flags (old_sec) & SHF_GNU_RETAIN)))
> > - attr |= SHF_GNU_RETAIN;
> > -
> > - /* FIXME: Maybe we should consider removing a previously set
> > - processor or application specific attribute as suspicious ? */
> > - elf_section_flags (sec) = attr;
> > - }
> > + /* FIXME: Maybe we should consider removing a previously set
> > + processor or application specific attribute as suspicious ? */
> > + elf_section_flags (sec) = attr;
> >
> > if ((flags & SEC_MERGE) && old_sec->entsize != (unsigned) entsize)
> > as_bad (_("changed section entity size for %s"), name);
> >
>
> Fixed.
>
> Here is the updated patch. OK for master?
>
> Thanks.
>
Hi Alan, Nick,
Can you take a look at this
https://sourceware.org/pipermail/binutils/2020-December/114407.html
Thanks.
--
H.J.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: V2 [PATCH] gas: Generate a new section for SHF_GNU_RETAIN
2020-12-08 12:33 ` H.J. Lu
@ 2020-12-08 17:08 ` Nick Clifton
2020-12-09 0:05 ` V3 " H.J. Lu
0 siblings, 1 reply; 7+ messages in thread
From: Nick Clifton @ 2020-12-08 17:08 UTC (permalink / raw)
To: H.J. Lu, Binutils, Alan Modra
Hi H.J.
> Can you take a look at this
>
> https://sourceware.org/pipermail/binutils/2020-December/114407.html
I am tending towards approving this patch, although I would like to
see if Alan has any comments.
I did notice however that the patch does introduce some new failures:
GAS REGRESSION: SHF_GNU_RETAIN sections 27
This was for:
m32r-elf
mipsisa32el-linux
tx39-elf
mips64el-openbsd
mipsel-linux-gnu
mips-sgi-irix6
mips64-linux
rx-elf .
s390-linux
score-elf
mips-elf
mips64-openbsd
nds32le-elf
The mips failures appear to be because of MIPS special sections, eg:
regexp_diff match failure
regexp "^ \[..\] .bss[ ]+NOBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 WAR.*$"
line " [ 4] .reginfo MIPS_REGINFO 00000000 00003c 000018 01 0 0 4"
regexp_diff match failure
I have not checked the others, but I suspect that they will be similar.
Cheers
Nick
^ permalink raw reply [flat|nested] 7+ messages in thread
* V3 [PATCH] gas: Generate a new section for SHF_GNU_RETAIN
2020-12-08 17:08 ` Nick Clifton
@ 2020-12-09 0:05 ` H.J. Lu
2020-12-09 0:37 ` Alan Modra
0 siblings, 1 reply; 7+ messages in thread
From: H.J. Lu @ 2020-12-09 0:05 UTC (permalink / raw)
To: Nick Clifton; +Cc: Binutils, Alan Modra
[-- Attachment #1: Type: text/plain, Size: 1314 bytes --]
On Tue, Dec 8, 2020 at 9:08 AM Nick Clifton <nickc@redhat.com> wrote:
>
> Hi H.J.
>
> > Can you take a look at this
> >
> > https://sourceware.org/pipermail/binutils/2020-December/114407.html
>
> I am tending towards approving this patch, although I would like to
> see if Alan has any comments.
>
> I did notice however that the patch does introduce some new failures:
>
> GAS REGRESSION: SHF_GNU_RETAIN sections 27
>
> This was for:
> m32r-elf
> mipsisa32el-linux
> tx39-elf
> mips64el-openbsd
> mipsel-linux-gnu
> mips-sgi-irix6
> mips64-linux
> rx-elf .
> s390-linux
> score-elf
> mips-elf
> mips64-openbsd
> nds32le-elf
BTW, there are many extra failures for some targets. Should we
xfail them if no one will fix them?
> The mips failures appear to be because of MIPS special sections, eg:
>
> regexp_diff match failure
> regexp "^ \[..\] .bss[ ]+NOBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 WAR.*$"
> line " [ 4] .reginfo MIPS_REGINFO 00000000 00003c 000018 01 0 0 4"
> regexp_diff match failure
>
> I have not checked the others, but I suspect that they will be similar.
>
You are right. Just some extra sections. Here is the updated patch
with the adjusted testcase.
Alan, does this patch look OK to you?
Thanks.
--
H.J.
[-- Attachment #2: 0001-gas-Generate-a-new-section-for-SHF_GNU_RETAIN.patch --]
[-- Type: text/x-patch, Size: 7961 bytes --]
From d7ba245135934068e70fff46aa6a3f8f1f8737dd Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Thu, 24 Sep 2020 05:45:50 -0700
Subject: [PATCH] gas: Generate a new section for SHF_GNU_RETAIN
For
.globl foo2
.section .data.foo,"aR"
.align 4
.type foo2, @object
.size foo2, 4
foo2:
.long 2
.globl foo1
.section .data.foo
.align 4
.type foo1, @object
.size foo1, 4
foo1:
.long 1
generate a new section if the SHF_GNU_RETAIN bit doesn't match.
* config/obj-elf.c (SEC_ASSEMBLER_SHF_MASK): New.
(get_section_by_match): Also check if SEC_ASSEMBLER_SHF_MASK of
sh_flags matches. Rename info to sh_info.
(obj_elf_change_section): Don't check previous SHF_GNU_RETAIN.
Rename info to sh_info.
(obj_elf_section): Rename info to sh_info. Set sh_flags for
SHF_GNU_RETAIN.
* config/obj-elf.h (elf_section_match): Rename info to sh_info.
Add sh_flags.
* testsuite/gas/elf/elf.exp: Run section27.
* testsuite/gas/elf/section24b.d: Updated.
* testsuite/gas/elf/section27.d: New file.
* testsuite/gas/elf/section27.s: Likewise.
---
gas/config/obj-elf.c | 35 +++++++++++++++---------------
gas/config/obj-elf.h | 3 ++-
gas/testsuite/gas/elf/elf.exp | 1 +
gas/testsuite/gas/elf/section24b.d | 10 ++++++---
gas/testsuite/gas/elf/section27.d | 19 ++++++++++++++++
gas/testsuite/gas/elf/section27.s | 34 +++++++++++++++++++++++++++++
6 files changed, 81 insertions(+), 21 deletions(-)
create mode 100644 gas/testsuite/gas/elf/section27.d
create mode 100644 gas/testsuite/gas/elf/section27.s
diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
index 54d42d9ecb..5d3b1a0edc 100644
--- a/gas/config/obj-elf.c
+++ b/gas/config/obj-elf.c
@@ -519,6 +519,9 @@ struct section_stack
static struct section_stack *section_stack;
+/* ELF section flags for unique sections. */
+#define SEC_ASSEMBLER_SHF_MASK SHF_GNU_RETAIN
+
/* Return TRUE iff SEC matches the section info INF. */
static bfd_boolean
@@ -529,9 +532,12 @@ get_section_by_match (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *inf)
const char *group_name = elf_group_name (sec);
const char *linked_to_symbol_name
= sec->map_head.linked_to_symbol_name;
- unsigned int info = elf_section_data (sec)->this_hdr.sh_info;
+ unsigned int sh_info = elf_section_data (sec)->this_hdr.sh_info;
+ bfd_vma sh_flags = (elf_section_data (sec)->this_hdr.sh_flags
+ & SEC_ASSEMBLER_SHF_MASK);
- return (info == match->info
+ return (sh_info == match->sh_info
+ && sh_flags == match->sh_flags
&& ((bfd_section_flags (sec) & SEC_ASSEMBLER_SECTION_ID)
== (match->flags & SEC_ASSEMBLER_SECTION_ID))
&& sec->section_id == match->section_id
@@ -740,7 +746,7 @@ obj_elf_change_section (const char *name,
type = bfd_elf_get_default_section_type (flags);
elf_section_type (sec) = type;
elf_section_flags (sec) = attr;
- elf_section_data (sec)->this_hdr.sh_info = match_p->info;
+ elf_section_data (sec)->this_hdr.sh_info = match_p->sh_info;
/* Prevent SEC_HAS_CONTENTS from being inadvertently set. */
if (type == SHT_NOBITS)
@@ -806,17 +812,9 @@ obj_elf_change_section (const char *name,
as_bad (_("changed section attributes for %s"), name);
}
else
- {
- /* Don't overwrite a previously set SHF_GNU_RETAIN flag for the
- section. The entire section must be marked retained. */
- if ((elf_tdata (stdoutput)->has_gnu_osabi & elf_gnu_osabi_retain)
- && ((elf_section_flags (old_sec) & SHF_GNU_RETAIN)))
- attr |= SHF_GNU_RETAIN;
-
- /* FIXME: Maybe we should consider removing a previously set
- processor or application specific attribute as suspicious ? */
- elf_section_flags (sec) = attr;
- }
+ /* FIXME: Maybe we should consider removing a previously set
+ processor or application specific attribute as suspicious? */
+ elf_section_flags (sec) = attr;
if ((flags & SEC_MERGE) && old_sec->entsize != (unsigned) entsize)
as_bad (_("changed section entity size for %s"), name);
@@ -1322,18 +1320,21 @@ obj_elf_section (int push)
if (ISDIGIT (* input_line_pointer))
{
char *t = input_line_pointer;
- match.info = strtoul (input_line_pointer,
+ match.sh_info = strtoul (input_line_pointer,
&input_line_pointer, 0);
- if (match.info == (unsigned int) -1)
+ if (match.sh_info == (unsigned int) -1)
{
as_warn (_("unsupported mbind section info: %s"), t);
- match.info = 0;
+ match.sh_info = 0;
}
}
else
input_line_pointer = save;
}
+ if ((gnu_attr & SHF_GNU_RETAIN) != 0)
+ match.sh_flags |= SHF_GNU_RETAIN;
+
if (*input_line_pointer == ',')
{
char *save = input_line_pointer;
diff --git a/gas/config/obj-elf.h b/gas/config/obj-elf.h
index 4f29572eef..c714ba7a70 100644
--- a/gas/config/obj-elf.h
+++ b/gas/config/obj-elf.h
@@ -106,8 +106,9 @@ struct elf_section_match
{
const char * group_name;
const char * linked_to_symbol_name;
- unsigned int info;
unsigned int section_id;
+ unsigned int sh_info; /* ELF section information. */
+ bfd_vma sh_flags; /* ELF section flags. */
flagword flags;
};
diff --git a/gas/testsuite/gas/elf/elf.exp b/gas/testsuite/gas/elf/elf.exp
index 25c40a2810..80dec4effc 100644
--- a/gas/testsuite/gas/elf/elf.exp
+++ b/gas/testsuite/gas/elf/elf.exp
@@ -268,6 +268,7 @@ if { [is_elf_format] } then {
run_dump_test "section24b"
run_dump_test "section25"
run_dump_test "section26"
+ run_dump_test "section27"
run_dump_test "sh-link-zero"
run_dump_test "dwarf2-1" $dump_opts
run_dump_test "dwarf2-2" $dump_opts
diff --git a/gas/testsuite/gas/elf/section24b.d b/gas/testsuite/gas/elf/section24b.d
index 451ec21635..03dd2916ef 100644
--- a/gas/testsuite/gas/elf/section24b.d
+++ b/gas/testsuite/gas/elf/section24b.d
@@ -3,8 +3,12 @@
#source: section24.s
#readelf: -S --wide
-#failif
#...
- \[..\] .(text|data|bss|rodata)[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 [^R] .*
+ \[..\] .text[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +AX .*
+#...
+ \[..\] .data[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +WA .*
+#...
+ \[..\] .bss[ ]+NOBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +WA .*
+#...
+ \[..\] .rodata[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 +A .*
#pass
-
diff --git a/gas/testsuite/gas/elf/section27.d b/gas/testsuite/gas/elf/section27.d
new file mode 100644
index 0000000000..da0734fe84
--- /dev/null
+++ b/gas/testsuite/gas/elf/section27.d
@@ -0,0 +1,19 @@
+#readelf: -h -S --wide
+#name: SHF_GNU_RETAIN sections 27
+#notarget: ![supports_gnu_osabi]
+
+#...
+ +OS/ABI: +UNIX - (GNU|FreeBSD)
+#...
+ \[..\] .text[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 AX.*
+#...
+ \[..\] .data[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 WA.*
+#...
+ \[..\] .bss[ ]+NOBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 WA.*
+#...
+ \[..\] .bss[ ]+NOBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 WAR.*
+#...
+ \[..\] .data[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 WAR.*
+#...
+ \[..\] .text[ ]+PROGBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 AXR.*
+#pass
diff --git a/gas/testsuite/gas/elf/section27.s b/gas/testsuite/gas/elf/section27.s
new file mode 100644
index 0000000000..78e410ff95
--- /dev/null
+++ b/gas/testsuite/gas/elf/section27.s
@@ -0,0 +1,34 @@
+ .section .bss,"aw"
+ .global discard0
+ .type discard0, %object
+discard0:
+ .zero 2
+
+ .section .data,"aw"
+ .global discard1
+ .type discard1, %object
+discard1:
+ .word 1
+
+ .text
+ .global discard2
+ .type discard2, %function
+discard2:
+ .word 0
+
+ .section .bss,"awR",%nobits
+ .global retain0
+ .type retain0, %object
+retain0:
+ .zero 2
+
+ .section .data,"awR",%progbits
+ .type retain1, %object
+retain1:
+ .word 1
+
+ .section .text,"axR",%progbits
+ .global retain2
+ .type retain2, %function
+retain2:
+ .word 0
--
2.29.2
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: V3 [PATCH] gas: Generate a new section for SHF_GNU_RETAIN
2020-12-09 0:05 ` V3 " H.J. Lu
@ 2020-12-09 0:37 ` Alan Modra
0 siblings, 0 replies; 7+ messages in thread
From: Alan Modra @ 2020-12-09 0:37 UTC (permalink / raw)
To: H.J. Lu; +Cc: Nick Clifton, Binutils
On Tue, Dec 08, 2020 at 04:05:43PM -0800, H.J. Lu wrote:
> On Tue, Dec 8, 2020 at 9:08 AM Nick Clifton <nickc@redhat.com> wrote:
> >
> > Hi H.J.
> >
> > > Can you take a look at this
> > >
> > > https://sourceware.org/pipermail/binutils/2020-December/114407.html
> >
> > I am tending towards approving this patch, although I would like to
> > see if Alan has any comments.
> >
> > I did notice however that the patch does introduce some new failures:
> >
> > GAS REGRESSION: SHF_GNU_RETAIN sections 27
> >
> > This was for:
> > m32r-elf
> > mipsisa32el-linux
> > tx39-elf
> > mips64el-openbsd
> > mipsel-linux-gnu
> > mips-sgi-irix6
> > mips64-linux
> > rx-elf .
> > s390-linux
> > score-elf
> > mips-elf
> > mips64-openbsd
> > nds32le-elf
>
> BTW, there are many extra failures for some targets. Should we
> xfail them if no one will fix them?
>
> > The mips failures appear to be because of MIPS special sections, eg:
> >
> > regexp_diff match failure
> > regexp "^ \[..\] .bss[ ]+NOBITS[ ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 WAR.*$"
> > line " [ 4] .reginfo MIPS_REGINFO 00000000 00003c 000018 01 0 0 4"
> > regexp_diff match failure
> >
> > I have not checked the others, but I suspect that they will be similar.
> >
>
> You are right. Just some extra sections. Here is the updated patch
> with the adjusted testcase.
>
> Alan, does this patch look OK to you?
Yes, OK by me.
--
Alan Modra
Australia Development Lab, IBM
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-12-09 0:38 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-04 13:52 [PATCH] gas: Generate a new section for SHF_GNU_RETAIN H.J. Lu
2020-12-04 15:29 ` Jozef Lawrynowicz
2020-12-04 16:43 ` V2 " H.J. Lu
2020-12-08 12:33 ` H.J. Lu
2020-12-08 17:08 ` Nick Clifton
2020-12-09 0:05 ` V3 " H.J. Lu
2020-12-09 0:37 ` Alan Modra
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).