[MIPS] PR gas/14798: Limit IRIX5 specific default typing to IRIX targets

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.
This commit is contained in:
Faraz Shahbazker 2019-05-06 09:09:02 -07:00
parent cffc205c9e
commit d87343802b
12 changed files with 60 additions and 12 deletions

View 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.

View 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

View 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

View 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)"

View 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 != ','))

View 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"
}
}

View File

@ -0,0 +1,6 @@
#DUMPPROG: readelf
#readelf: -s
#source: pr14798.s
#...
*[0-9]+: +[0-9]+ +[0-9]+ +OBJECT +GLOBAL +DEFAULT +[0-9]+ foo
#pass

View File

@ -0,0 +1,5 @@
#DUMPPROG: readelf
#readelf: -s
#...
*[0-9]+: +[0-9]+ +[0-9]+ +NOTYPE +GLOBAL +DEFAULT +[0-9]+ foo
#pass

View File

@ -0,0 +1,4 @@
.text
.globl foo
foo:
nop

View 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

View File

@ -1,5 +1,5 @@
.globl us
.globl gs
.globl us .text
.globl gs .text
us:
gs:
ls:

View File

@ -1,5 +1,5 @@
.globl __start
.globl gs
.globl __start .text
.globl gs .text
__start:
gs:
ls: