From d87343802b81ad123a27beccb140d406f54727c6 Mon Sep 17 00:00:00 2001 From: Faraz Shahbazker Date: Mon, 6 May 2019 09:09:02 -0700 Subject: [PATCH] [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. --- binutils/ChangeLog | 6 ++++++ binutils/testsuite/binutils-all/readelf.ss-mips | 8 ++++---- binutils/testsuite/binutils-all/readelf.ss-tmips | 8 ++++---- gas/ChangeLog | 10 ++++++++++ gas/config/tc-mips.c | 4 ++++ gas/testsuite/gas/mips/mips.exp | 6 ++++++ gas/testsuite/gas/mips/pr14798-irix.d | 6 ++++++ gas/testsuite/gas/mips/pr14798.d | 5 +++++ gas/testsuite/gas/mips/pr14798.s | 4 ++++ ld/ChangeLog | 7 +++++++ ld/testsuite/ld-mips-elf/reloc-6a.s | 4 ++-- ld/testsuite/ld-mips-elf/reloc-6b.s | 4 ++-- 12 files changed, 60 insertions(+), 12 deletions(-) create mode 100644 gas/testsuite/gas/mips/pr14798-irix.d create mode 100644 gas/testsuite/gas/mips/pr14798.d create mode 100644 gas/testsuite/gas/mips/pr14798.s diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 7960939567c..184c93accd8 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,9 @@ +2019-05-20 Faraz Shahbazker + + PR 14798 + * testsuite/binutils-all/readelf.ss-mips: Update reference output. + * testsuite/binutils-all/readelf.ss-tmips: Likewise. + 2019-05-20 Nick Clifton * po/ca.po: Updated Catalan translation. diff --git a/binutils/testsuite/binutils-all/readelf.ss-mips b/binutils/testsuite/binutils-all/readelf.ss-mips index 9f4cfa52de1..c49416bab40 100644 --- a/binutils/testsuite/binutils-all/readelf.ss-mips +++ b/binutils/testsuite/binutils-all/readelf.ss-mips @@ -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 diff --git a/binutils/testsuite/binutils-all/readelf.ss-tmips b/binutils/testsuite/binutils-all/readelf.ss-tmips index d22fc083d85..4fd7fe02786 100644 --- a/binutils/testsuite/binutils-all/readelf.ss-tmips +++ b/binutils/testsuite/binutils-all/readelf.ss-tmips @@ -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 diff --git a/gas/ChangeLog b/gas/ChangeLog index bc2b906a247..2230f44e550 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,13 @@ +2019-05-20 Faraz Shahbazker + + 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 * doc/c-arm.texi (ARM Options): Remove "(r)" and "(tm)" diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 1c5dc7a8830..0f0ace51800 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -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 != ',')) diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index 4db66833d01..c8ecd04e943 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -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 index 00000000000..155a10cd5dc --- /dev/null +++ b/gas/testsuite/gas/mips/pr14798-irix.d @@ -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 index 00000000000..cfdef3e3c64 --- /dev/null +++ b/gas/testsuite/gas/mips/pr14798.d @@ -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 index 00000000000..1ee2486b1b7 --- /dev/null +++ b/gas/testsuite/gas/mips/pr14798.s @@ -0,0 +1,4 @@ + .text + .globl foo +foo: + nop diff --git a/ld/ChangeLog b/ld/ChangeLog index 90216dae56d..594a3043cf3 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +2019-05-20 Faraz Shahbazker + + 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 PR 24567 diff --git a/ld/testsuite/ld-mips-elf/reloc-6a.s b/ld/testsuite/ld-mips-elf/reloc-6a.s index 4d84e837e5c..da8ec116006 100644 --- a/ld/testsuite/ld-mips-elf/reloc-6a.s +++ b/ld/testsuite/ld-mips-elf/reloc-6a.s @@ -1,5 +1,5 @@ - .globl us - .globl gs + .globl us .text + .globl gs .text us: gs: ls: diff --git a/ld/testsuite/ld-mips-elf/reloc-6b.s b/ld/testsuite/ld-mips-elf/reloc-6b.s index aa2a726cf95..ae4e9bcf8a9 100644 --- a/ld/testsuite/ld-mips-elf/reloc-6b.s +++ b/ld/testsuite/ld-mips-elf/reloc-6b.s @@ -1,5 +1,5 @@ - .globl __start - .globl gs + .globl __start .text + .globl gs .text __start: gs: ls: -- 2.30.2