Stop the MIPS assembler from accepting ifunc symbols.
PR 25803 gas * config/obj-elf.c (obj_elf_type): Reject ifunc symbols on MIPS targets. * testsuite/gas/elf/elf.exp: Add MIPS targets to the list to skip for the type-2 test. * testsuite/gas/elf/type-noifunc.e: Update to allow for MIPS targets running this test. bfd * elfxx-mips.c (_bfd_mips_elf_adjust_dynamic_symbol): Replace an abort with a more helpful error message.
This commit is contained in:
parent
7a1a12f4d1
commit
8e4979ac1e
@ -1,3 +1,9 @@
|
||||
2020-04-16 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR 25803
|
||||
* elfxx-mips.c (_bfd_mips_elf_adjust_dynamic_symbol): Replace an
|
||||
abort with a more helpful error message.
|
||||
|
||||
2020-04-16 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 25827
|
||||
|
@ -9311,12 +9311,21 @@ _bfd_mips_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||
hmips = (struct mips_elf_link_hash_entry *) h;
|
||||
|
||||
/* Make sure we know what is going on here. */
|
||||
BFD_ASSERT (dynobj != NULL
|
||||
&& (h->needs_plt
|
||||
|| h->is_weakalias
|
||||
|| (h->def_dynamic
|
||||
&& h->ref_regular
|
||||
&& !h->def_regular)));
|
||||
if (dynobj == NULL
|
||||
|| (! h->needs_plt
|
||||
&& ! h->is_weakalias
|
||||
&& (! h->def_dynamic
|
||||
|| ! h->ref_regular
|
||||
|| h->def_regular)))
|
||||
{
|
||||
if (h->type == STT_GNU_IFUNC)
|
||||
_bfd_error_handler (_("IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"),
|
||||
h->root.root.string);
|
||||
else
|
||||
_bfd_error_handler (_("non-dynamic symbol %s in dynamic symbol table"),
|
||||
h->root.root.string);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
hmips = (struct mips_elf_link_hash_entry *) h;
|
||||
|
||||
|
@ -1,3 +1,14 @@
|
||||
2020-04-16 Gagan Singh Sidhu <broly@mac.com>
|
||||
Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR 25803
|
||||
* config/obj-elf.c (obj_elf_type): Reject ifunc symbols on MIPS
|
||||
targets.
|
||||
* testsuite/gas/elf/elf.exp: Add MIPS targets to the list to skip
|
||||
for the type-2 test.
|
||||
* testsuite/gas/elf/type-noifunc.e: Update to allow for MIPS
|
||||
targets running this test.
|
||||
|
||||
2020-02-16 David Faust <david.faust@oracle.com>
|
||||
|
||||
* testsuite/gas/bpf/bpf.exp: Run jump32 tests.
|
||||
|
@ -2177,6 +2177,10 @@ obj_elf_type (int ignore ATTRIBUTE_UNUSED)
|
||||
&& bed->elf_osabi != ELFOSABI_FREEBSD)
|
||||
as_bad (_("symbol type \"%s\" is supported only by GNU "
|
||||
"and FreeBSD targets"), type_name);
|
||||
/* MIPS targets do not support IFUNCS. */
|
||||
else if (bed->target_id == MIPS_ELF_DATA)
|
||||
as_bad (_("symbol type \"%s\" is not supported by "
|
||||
"MIPS targets"), type_name);
|
||||
elf_tdata (stdoutput)->has_gnu_osabi |= elf_gnu_osabi_ifunc;
|
||||
type = BSF_FUNCTION | BSF_GNU_INDIRECT_FUNCTION;
|
||||
}
|
||||
|
@ -221,6 +221,7 @@ if { [is_elf_format] } then {
|
||||
# We also need to exclude targets that do not support unique objects.
|
||||
if { [istarget "*-*-hpux*"]
|
||||
|| [istarget "arm*-*-*"]
|
||||
|| [istarget "mips*-*-*"]
|
||||
|| [istarget "msp*-*-*"]
|
||||
|| [istarget "visium-*-*"]
|
||||
|| ![supports_gnu_unique]
|
||||
|
@ -1,5 +1,5 @@
|
||||
+.: 0+0 +1 +FUNC +LOCAL +DEFAULT +. function
|
||||
+.: 0+0 +1 +OBJECT +LOCAL +DEFAULT +. object
|
||||
+.: 0+1 +1 +TLS +LOCAL +DEFAULT +. tls_object
|
||||
+[0-9]+: 0+1 +1 +TLS +LOCAL +DEFAULT +. tls_object
|
||||
+..: 0+2 +1 +NOTYPE +LOCAL +DEFAULT +. notype
|
||||
+..: 0+1 +1 +(COMMON|OBJECT) +GLOBAL +DEFAULT +(ANSI_|)COM common
|
||||
|
Loading…
Reference in New Issue
Block a user