[MIPS] PR gas/14798: Limit IRIX5 specific default typing to IRIX targets
authorFaraz Shahbazker <fshahbazker@wavecomp.com>
Mon, 6 May 2019 16:09:02 +0000 (09:09 -0700)
committerFaraz Shahbazker <fshahbazker@wavecomp.com>
Mon, 20 May 2019 18:08:23 +0000 (11:08 -0700)
On IRIX 5, every global symbol that is not explicitly labelled as
being a function is assumed to be an object.  There is no reason
why IRIX behaviour should extend to all MIPS targets, so limit this
to only IRIX targets.

gas/
PR 14798
* config/tc-mips.c (s_mips_globl): Only treat symbols that are
not explicitly labelled as BSF_OBJECTs for IRIX targets.
* testsuite/gas/mips/pr14798.s: New test source.
* testsuite/gas/mips/pr14798-irix.d: New test.
* testsuite/gas/mips/pr14798.d: Likewise.
* testsuite/gas/mips/mips.exp: Run the new tests.

binutils/
PR 14798
* testsuite/binutils-all/readelf.ss-mips: Update reference output.
* testsuite/binutils-all/readelf.ss-tmips: Likewise.

ld/
PR 14798
* testsuite/ld-mips-elf/reloc-6a.s: Specify .text section for
global code symbols.
* testsuite/ld-mips-elf/reloc-6b.s: Likewise.

12 files changed:
binutils/ChangeLog
binutils/testsuite/binutils-all/readelf.ss-mips
binutils/testsuite/binutils-all/readelf.ss-tmips
gas/ChangeLog
gas/config/tc-mips.c
gas/testsuite/gas/mips/mips.exp
gas/testsuite/gas/mips/pr14798-irix.d [new file with mode: 0644]
gas/testsuite/gas/mips/pr14798.d [new file with mode: 0644]
gas/testsuite/gas/mips/pr14798.s [new file with mode: 0644]
ld/ChangeLog
ld/testsuite/ld-mips-elf/reloc-6a.s
ld/testsuite/ld-mips-elf/reloc-6b.s

index 7960939567c7ea086bdaaae9e91a3e66b99afd42..184c93accd842c82365c20047825bb6f201d8fa5 100644 (file)
@@ -1,3 +1,9 @@
+2019-05-20  Faraz Shahbazker  <fshahbazker@wavecomp.com>
+
+       PR 14798
+       * testsuite/binutils-all/readelf.ss-mips: Update reference output.
+       * testsuite/binutils-all/readelf.ss-tmips: Likewise.
+
 2019-05-20  Nick Clifton  <nickc@redhat.com>
 
        * po/ca.po: Updated Catalan translation.
index 9f4cfa52de11809696773c0bdc06e4714c0f75a9..c49416bab40d8c7fbe33cdb64c3de8cd22383b89 100644 (file)
@@ -9,11 +9,11 @@ Symbol table '.symtab' contains 16 entries:
  +5: 00000000 +0 +SECTION +LOCAL +DEFAULT +. (|\.MIPS\.abiflags)
  +6: 00000000 +0 +SECTION +LOCAL +DEFAULT +. (|\.pdr)
  +7: 00000000 +0 +SECTION +LOCAL +DEFAULT +. (|\.gnu\.attributes)
- +8: 00000000 +0 +OBJECT +GLOBAL +DEFAULT +. text_symbol
+ +8: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +. text_symbol
  +9: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +. static_text_symbol
  +10: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +UND external_symbol
- +11: 00000000 +0 +OBJECT +GLOBAL +DEFAULT +. data_symbol
+ +11: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +. data_symbol
  +12: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +. static_data_symbol
  +13: 00000004 +4 +(COMMON|OBJECT) +GLOBAL +DEFAULT +(PRC|COM) common_symbol
- +14: 00000008 +0 +OBJECT +GLOBAL +DEFAULT +. text_symbol2
- +15: 0000000c +0 +OBJECT +GLOBAL +DEFAULT +. text_symbol3
+ +14: 00000008 +0 +NOTYPE +GLOBAL +DEFAULT +. text_symbol2
+ +15: 0000000c +0 +NOTYPE +GLOBAL +DEFAULT +. text_symbol3
index d22fc083d85496e2118bf38962455fb0cbb04a81..4fd7fe02786febc27bd21763565828e8971919a6 100644 (file)
@@ -11,9 +11,9 @@ Symbol table '.symtab' contains 16 entries:
  +7: 00000000 +0 +SECTION +LOCAL +DEFAULT +6 
  +8: 00000000 +0 +SECTION +LOCAL +DEFAULT +7 
  +9: 00000000 +0 +SECTION +LOCAL +DEFAULT +8 
- +10: 00000000 +0 +OBJECT +GLOBAL +DEFAULT +1 text_symbol
+ +10: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 text_symbol
  +11: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +UND external_symbol
- +12: 00000000 +0 +OBJECT +GLOBAL +DEFAULT +3 data_symbol
+ +12: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +3 data_symbol
  +13: 00000004 +4 +(COMMON|OBJECT) +GLOBAL +DEFAULT +(PRC|COM) common_symbol
- +14: 00000008 +0 +OBJECT +GLOBAL +DEFAULT +. text_symbol2
- +15: 0000000c +0 +OBJECT +GLOBAL +DEFAULT +. text_symbol3
+ +14: 00000008 +0 +NOTYPE +GLOBAL +DEFAULT +. text_symbol2
+ +15: 0000000c +0 +NOTYPE +GLOBAL +DEFAULT +. text_symbol3
index bc2b906a247386ac29ad5106010bdd037dc2d452..2230f44e550da3a9cf5d850f4eca02cc95e49c98 100644 (file)
@@ -1,3 +1,13 @@
+2019-05-20  Faraz Shahbazker  <fshahbazker@wavecomp.com>
+
+       PR 14798
+       * config/tc-mips.c (s_mips_globl): Only treat symbols that are
+       not explicitly labelled as BSF_OBJECTs for IRIX targets.
+       * testsuite/gas/mips/pr14798.s: New test source.
+       * testsuite/gas/mips/pr14798-irix.d: New test.
+       * testsuite/gas/mips/pr14798.d: Likewise.
+       * testsuite/gas/mips/mips.exp: Run the new tests.
+
 2019-05-17  John Darrington  <john@darrington.wattle.id.au>
 
        * doc/c-arm.texi (ARM Options): Remove "(r)" and "(tm)"
index 1c5dc7a8830b8c71eee78a6feb5b8c65058a52a5..0f0ace5180018d007959d2f901867345d566d8b7 100644 (file)
@@ -16454,9 +16454,13 @@ s_mips_globl (int x ATTRIBUTE_UNUSED)
       *input_line_pointer = c;
       SKIP_WHITESPACE_AFTER_NAME ();
 
+#ifdef TE_IRIX
       /* On Irix 5, every global symbol that is not explicitly labelled as
          being a function is apparently labelled as being an object.  */
       flag = BSF_OBJECT;
+#else
+      flag = BSF_NO_FLAGS;
+#endif
 
       if (!is_end_of_line[(unsigned char) *input_line_pointer]
          && (*input_line_pointer != ','))
index 4db66833d0106a5c34b5dbdd372e903f3ec7e173..c8ecd04e9433264c5d8406fdc00010250088f76f 100644 (file)
@@ -2087,4 +2087,10 @@ if { [istarget mips*-*-vxworks*] } {
 
     run_dump_test_arches "llpscp-32" [mips_arch_list_matching mips32r6]
     run_dump_test_arch "llpscp-64" "" mips64r6
+
+    if [istarget *-*-irix*] {
+       run_dump_test "pr14798-irix"
+    } else {
+       run_dump_test "pr14798"
+    }
 }
diff --git a/gas/testsuite/gas/mips/pr14798-irix.d b/gas/testsuite/gas/mips/pr14798-irix.d
new file mode 100644 (file)
index 0000000..155a10c
--- /dev/null
@@ -0,0 +1,6 @@
+#DUMPPROG: readelf
+#readelf: -s
+#source: pr14798.s
+#...
+ *[0-9]+: +[0-9]+ +[0-9]+ +OBJECT +GLOBAL +DEFAULT +[0-9]+ foo
+#pass
diff --git a/gas/testsuite/gas/mips/pr14798.d b/gas/testsuite/gas/mips/pr14798.d
new file mode 100644 (file)
index 0000000..cfdef3e
--- /dev/null
@@ -0,0 +1,5 @@
+#DUMPPROG: readelf
+#readelf: -s
+#...
+ *[0-9]+: +[0-9]+ +[0-9]+ +NOTYPE +GLOBAL +DEFAULT +[0-9]+ foo
+#pass
diff --git a/gas/testsuite/gas/mips/pr14798.s b/gas/testsuite/gas/mips/pr14798.s
new file mode 100644 (file)
index 0000000..1ee2486
--- /dev/null
@@ -0,0 +1,4 @@
+       .text
+       .globl foo
+foo:
+       nop
index 90216dae56d64801b8d783bcaa2188a29c20bd47..594a3043cf30017f11c2f0c6aa3b23880c7b328d 100644 (file)
@@ -1,3 +1,10 @@
+2019-05-20  Faraz Shahbazker  <fshahbazker@wavecomp.com>
+
+       PR 14798
+       * testsuite/ld-mips-elf/reloc-6a.s: Specify .text section for
+       global code symbols.
+       * testsuite/ld-mips-elf/reloc-6b.s: Likewise.
+
 2019-05-17  Alan Modra  <amodra@gmail.com>
 
        PR 24567
index 4d84e837e5cc8f5e9447d5c955fb6d3ca7e350c1..da8ec116006678a044b395675e3bf53c4acb3fd1 100644 (file)
@@ -1,5 +1,5 @@
-       .globl  us
-       .globl  gs
+       .globl  us .text
+       .globl  gs .text
 us:
 gs:
 ls:
index aa2a726cf9525c5c652bd1c2600fbf4a19ba6dd6..ae4e9bcf8a9dc05abfd3313b3b0854252706d83b 100644 (file)
@@ -1,5 +1,5 @@
-       .globl  __start
-       .globl  gs
+       .globl  __start .text
+       .globl  gs .text
 __start:
 gs:
 ls: