summaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2023-02-14 08:35:02 +0100
committerJan Beulich <jbeulich@suse.com>2023-02-14 08:35:02 +0100
commit12ef68305572ed139825be827b2bb1d1aef3ca25 (patch)
treef65243cc87500acc6b2ad0f37d50a478753d8ce9 /gas
parent676dcbb0a025640f66b2784555016bc901d09d52 (diff)
downloadbinutils-gdb-12ef68305572ed139825be827b2bb1d1aef3ca25.tar.gz
gas: correct symbol name comparison in .startof./.sizeof. handling
In 162c6aef1f3a ("gas: fold symbol table entries generated for .startof.() / .sizeof.()") I screwed up quite badly, inverting the case sensitive and case insensitive comparison functions.
Diffstat (limited to 'gas')
-rw-r--r--gas/expr.c4
-rw-r--r--gas/testsuite/gas/elf/startof.d2
-rw-r--r--gas/testsuite/gas/elf/startof.s3
3 files changed, 7 insertions, 2 deletions
diff --git a/gas/expr.c b/gas/expr.c
index 78900b50e46..ae24c281ba6 100644
--- a/gas/expr.c
+++ b/gas/expr.c
@@ -149,8 +149,8 @@ symbol_lookup_or_make (const char *name, bool start)
name = S_GET_NAME (symbolP);
if ((symbols_case_sensitive
- ? strcasecmp (buf, name)
- : strcmp (buf, name)) == 0)
+ ? strcmp (buf, name)
+ : strcasecmp (buf, name)) == 0)
{
free (buf);
return symbolP;
diff --git a/gas/testsuite/gas/elf/startof.d b/gas/testsuite/gas/elf/startof.d
index 9cffa93e22b..d943bb87887 100644
--- a/gas/testsuite/gas/elf/startof.d
+++ b/gas/testsuite/gas/elf/startof.d
@@ -7,4 +7,6 @@ Symbol table .*
#...
[1-8]: 0+ .* UND \.startof\.\.text
[2-9]: 0+ .* UND \.sizeof\.\.text
+ +[1-9][0-9]*: 0+ .* UND \.startof\.\.Text
+ +[1-9][0-9]*: 0+ .* UND \.sizeof\.\.TEXT
#pass
diff --git a/gas/testsuite/gas/elf/startof.s b/gas/testsuite/gas/elf/startof.s
index a90e1160dd8..342011e0177 100644
--- a/gas/testsuite/gas/elf/startof.s
+++ b/gas/testsuite/gas/elf/startof.s
@@ -4,3 +4,6 @@
.dc.a 0
.dc.a .sizeof.(.text)
.dc.a .startof.(.text)
+ .dc.a 0
+ .dc.a .startof.(.Text)
+ .dc.a .sizeof.(.TEXT)