Also fix some ix86 fails.
* testsuite/ld-ifunc/ifunc.exp: Enable for more targets, specifying
targets that don't support ifunc rather than ones that do.
(contains_irelative_reloc): Match R_PARISC_IPLT.
* testsuite/ld-ifunc/lib.c: Don't use .set in asm.
* testsuite/ld-ifunc/ifunc-23-x86.s,
* testsuite/ld-ifunc/ifunc-24-x86.s,
* testsuite/ld-ifunc/ifunc-25-x86.s,
* testsuite/ld-ifunc/ifunc-4-local-x86.s,
* testsuite/ld-ifunc/ifunc-4-x86.s: Define _main.
* testsuite/ld-ifunc/ifunc-10-i386.d,
* testsuite/ld-ifunc/ifunc-11-i386.d,
* testsuite/ld-ifunc/ifunc-12-i386.d,
* testsuite/ld-ifunc/ifunc-13-i386.d,
* testsuite/ld-ifunc/ifunc-14a-i386.d,
* testsuite/ld-ifunc/ifunc-14b-i386.d,
* testsuite/ld-ifunc/ifunc-14c-i386.d,
* testsuite/ld-ifunc/ifunc-14d-i386.d,
* testsuite/ld-ifunc/ifunc-14e-i386.d,
* testsuite/ld-ifunc/ifunc-14f-i386.d,
* testsuite/ld-ifunc/ifunc-15-i386.d,
* testsuite/ld-ifunc/ifunc-16-i386-now.d,
* testsuite/ld-ifunc/ifunc-16-i386.d,
* testsuite/ld-ifunc/ifunc-17a-i386.d,
* testsuite/ld-ifunc/ifunc-17b-i386.d,
* testsuite/ld-ifunc/ifunc-18a-i386.d,
* testsuite/ld-ifunc/ifunc-18b-i386.d,
* testsuite/ld-ifunc/ifunc-19a-i386.d,
* testsuite/ld-ifunc/ifunc-19b-i386.d,
* testsuite/ld-ifunc/ifunc-2-i386-now.d,
* testsuite/ld-ifunc/ifunc-2-i386.d,
* testsuite/ld-ifunc/ifunc-2-local-i386-now.d,
* testsuite/ld-ifunc/ifunc-2-local-i386.d,
* testsuite/ld-ifunc/ifunc-20-i386.d,
* testsuite/ld-ifunc/ifunc-21-i386.d,
* testsuite/ld-ifunc/ifunc-22-i386.d,
* testsuite/ld-ifunc/ifunc-26.d,
* testsuite/ld-ifunc/ifunc-5a-i386.d,
* testsuite/ld-ifunc/ifunc-5a-local-i386.d,
* testsuite/ld-ifunc/ifunc-5b-i386.d,
* testsuite/ld-ifunc/ifunc-5b-local-i386.d,
* testsuite/ld-ifunc/ifunc-5r-local-i386.d,
* testsuite/ld-ifunc/ifunc-6a-i386.d,
* testsuite/ld-ifunc/ifunc-6b-i386.d,
* testsuite/ld-ifunc/ifunc-7a-i386.d,
* testsuite/ld-ifunc/ifunc-7b-i386.d,
* testsuite/ld-ifunc/ifunc-8-i386.d,
* testsuite/ld-ifunc/ifunc-9-i386.d,
* testsuite/ld-ifunc/pr17154-i386-now.d,
* testsuite/ld-ifunc/pr17154-i386.d: xfail lynxos, nto, and solaris.
+2020-02-06 Alan Modra <amodra@gmail.com>
+
+ * testsuite/ld-ifunc/ifunc.exp: Enable for more targets, specifying
+ targets that don't support ifunc rather than ones that do.
+ (contains_irelative_reloc): Match R_PARISC_IPLT.
+ * testsuite/ld-ifunc/lib.c: Don't use .set in asm.
+ * testsuite/ld-ifunc/ifunc-23-x86.s,
+ * testsuite/ld-ifunc/ifunc-24-x86.s,
+ * testsuite/ld-ifunc/ifunc-25-x86.s,
+ * testsuite/ld-ifunc/ifunc-4-local-x86.s,
+ * testsuite/ld-ifunc/ifunc-4-x86.s: Define _main.
+ * testsuite/ld-ifunc/ifunc-10-i386.d,
+ * testsuite/ld-ifunc/ifunc-11-i386.d,
+ * testsuite/ld-ifunc/ifunc-12-i386.d,
+ * testsuite/ld-ifunc/ifunc-13-i386.d,
+ * testsuite/ld-ifunc/ifunc-14a-i386.d,
+ * testsuite/ld-ifunc/ifunc-14b-i386.d,
+ * testsuite/ld-ifunc/ifunc-14c-i386.d,
+ * testsuite/ld-ifunc/ifunc-14d-i386.d,
+ * testsuite/ld-ifunc/ifunc-14e-i386.d,
+ * testsuite/ld-ifunc/ifunc-14f-i386.d,
+ * testsuite/ld-ifunc/ifunc-15-i386.d,
+ * testsuite/ld-ifunc/ifunc-16-i386-now.d,
+ * testsuite/ld-ifunc/ifunc-16-i386.d,
+ * testsuite/ld-ifunc/ifunc-17a-i386.d,
+ * testsuite/ld-ifunc/ifunc-17b-i386.d,
+ * testsuite/ld-ifunc/ifunc-18a-i386.d,
+ * testsuite/ld-ifunc/ifunc-18b-i386.d,
+ * testsuite/ld-ifunc/ifunc-19a-i386.d,
+ * testsuite/ld-ifunc/ifunc-19b-i386.d,
+ * testsuite/ld-ifunc/ifunc-2-i386-now.d,
+ * testsuite/ld-ifunc/ifunc-2-i386.d,
+ * testsuite/ld-ifunc/ifunc-2-local-i386-now.d,
+ * testsuite/ld-ifunc/ifunc-2-local-i386.d,
+ * testsuite/ld-ifunc/ifunc-20-i386.d,
+ * testsuite/ld-ifunc/ifunc-21-i386.d,
+ * testsuite/ld-ifunc/ifunc-22-i386.d,
+ * testsuite/ld-ifunc/ifunc-26.d,
+ * testsuite/ld-ifunc/ifunc-5a-i386.d,
+ * testsuite/ld-ifunc/ifunc-5a-local-i386.d,
+ * testsuite/ld-ifunc/ifunc-5b-i386.d,
+ * testsuite/ld-ifunc/ifunc-5b-local-i386.d,
+ * testsuite/ld-ifunc/ifunc-5r-local-i386.d,
+ * testsuite/ld-ifunc/ifunc-6a-i386.d,
+ * testsuite/ld-ifunc/ifunc-6b-i386.d,
+ * testsuite/ld-ifunc/ifunc-7a-i386.d,
+ * testsuite/ld-ifunc/ifunc-7b-i386.d,
+ * testsuite/ld-ifunc/ifunc-8-i386.d,
+ * testsuite/ld-ifunc/ifunc-9-i386.d,
+ * testsuite/ld-ifunc/pr17154-i386-now.d,
+ * testsuite/ld-ifunc/pr17154-i386.d: xfail lynxos, nto, and solaris.
+
2020-02-06 Alan Modra <amodra@gmail.com>
* testsuite/lib/ld-lib.exp (is_generic): Delete.
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
There are no relocations in this file.
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
There are no relocations in this file.
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
There are no relocations in this file.
#as: --32 -mrelax-relocations=yes
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.ifunc' at offset 0x[0-9a-f]+ contains 1 entry:
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#readelf: -d --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
#failif
#...
#as: --32
#readelf: -d --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
#failif
#...
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
#failif
#...
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
#failif
#...
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
#failif
#...
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
#failif
#...
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.got' at offset 0x[0-9a-f]+ contains 1 entry:
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.plt' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.plt' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#readelf: -s --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
#...
+[0-9]+: +[0-9a-f]+ +4 +OBJECT +GLOBAL +DEFAULT +[1-9] foo
#as: --32
#readelf: -s --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
#...
+[0-9]+: +[0-9a-f]+ +4 +OBJECT +GLOBAL +DEFAULT +[1-9] foo
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.ifunc' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.ifunc' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.ifunc' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.ifunc' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#objdump: -dw
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
.*: +file format .*
#as: --32
#objdump: -dw
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
#...
[ \t0-9a-f]+:[ \t0-9a-f]+call[ \t0-9a-f]+<\*ABS\*@plt>
#as: --32
#objdump: -dw
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
.*: +file format .*
#as: --32
#objdump: -dw
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
#...
[ \t0-9a-f]+:[ \t0-9a-f]+call[ \t0-9a-f]+<\*ABS\*@plt>
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.ifunc' at offset 0x[0-9a-f]+ contains 1 entry:
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32 -mrelax-relocations=yes
#objdump: -dw
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
.*: +file format .*
#as: --32 -mrelax-relocations=yes
#objdump: -dw
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
.*: +file format .*
ret
.globl __start
__start:
+ .global _main
+_main:
.data
.dc.a foo
call foo@PLT
.globl __start
__start:
+ .global _main
+_main:
.data
.dc.a foo
call foo@PLT
.globl __start
__start:
+ .global _main
+_main:
.data
.dc.a foo
#ld: -shared
#readelf: -h
+#xfail: alpha-*-*
ELF Header:
#...
- OS/ABI: UNIX - GNU
+ +OS/ABI: +UNIX - (GNU|FreeBSD)
#pass
.type __start,"function"
.global __start
__start:
- .type __start,"function"
+ .type _main,"function"
+ .global _main
+_main:
call foo
movl $foo,%eax
.type __start,"function"
.global __start
__start:
- .type __start,"function"
+ .type _main,"function"
+ .global _main
+_main:
call foo
movl $foo,%eax
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.plt' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.plt' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.got' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.plt' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.text' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.plt' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.got' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.plt' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.plt' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#as: --32
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.plt' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
#ld: -m elf_i386 --export-dynamic
#readelf: -r --wide
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
Relocation section '.rel.plt' at .*
[ ]+Offset[ ]+Info[ ]+Type[ ]+.*
# Written by Nick Clifton <nickc@redhat.com>
-# IFUNC support has only been implemented for the ix86, x86_64, powerpc,
-# aarch64, sparc, and S/390 so far.
-if {!(([istarget "i?86-*-*"]
- || [istarget "x86_64-*-*"]
- || [istarget "powerpc*-*-*"]
- || [istarget "aarch64*-*-*"]
- || [istarget "sparc*-*-*"]
- || [istarget "s390*-*-*"])
- && ([istarget "*-*-elf*"]
- || [istarget "*-*-nacl*"]
- || [istarget "*-*-linux*"]
- || [istarget "*-*-gnu*"])) } {
+if { ![is_elf_format] || ![supports_gnu_osabi]
+ || [istarget arc*-*-*]
+ || [istarget am33*-*-*]
+ || [istarget bfin-*-*]
+ || [istarget cris*-*-*]
+ || [istarget frv-*-*]
+ || [istarget lm32-*-*]
+ || [istarget m32r-*-*]
+ || [istarget m68k-*-*]
+ || [istarget microblaze-*-*]
+ || [istarget mips*-*-*]
+ || [istarget mn10300-*-*]
+ || [istarget nds32*-*-*]
+ || [istarget nios2-*-*]
+ || [istarget or1k-*-*]
+ || [istarget riscv*-*-*]
+ || [istarget score*-*-*]
+ || [istarget sh*-*-*]
+ || [istarget tic6x-*-*]
+ || [istarget tile*-*-*]
+ || [istarget vax-*-*] } {
verbose "IFUNC tests not run - target does not support IFUNC"
return
}
# 080496f4 0000002a R_386_IRELATIVE
- if { ![regexp "\[0-9a-f\]+\[ \]+\[0-9a-f\]+\[ \]+R_\[_0-9A-Z\]+_IREL(|ATIVE)\[ \]*\[0-9a-f\]*\n" [file_contents readelf.out]] } {
+ if { ![regexp "\[0-9a-f\]+\[ \]+\[0-9a-f\]+\[ \]+R_(\[_0-9A-Z\]+_IREL(|ATIVE)|PARISC_IPLT)\[ \]*\[0-9a-f\]*\n" [file_contents readelf.out]] } {
return 0
}
__asm__(".global __GI_library_func2");
__asm__(".hidden __GI_library_func2");
-__asm__(".set __GI_library_func2, library_func2");
+__asm__("__GI_library_func2 = library_func2");
int
library_func (int x)
#as: --32
#objdump: -dw
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
.*: +file format .*
#as: --32
#objdump: -dw
#target: x86_64-*-* i?86-*-*
-#notarget: x86_64-*-nacl* i?86-*-nacl*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
#...
0+180 <.*>: