public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] ld: Disable ifunc tests on Solaris
@ 2020-04-01 11:14 Rainer Orth
  2020-04-01 11:26 ` H.J. Lu
  0 siblings, 1 reply; 4+ messages in thread
From: Rainer Orth @ 2020-04-01 11:14 UTC (permalink / raw)
  To: binutils

[-- Attachment #1: Type: text/plain, Size: 5452 bytes --]

A couple of ld ifunc tests currently FAIL on 64-bit Solaris/x86:

FAIL: ld-ifunc/ifunc-10-x86-64
FAIL: ld-ifunc/ifunc-11-x86-64
FAIL: ld-ifunc/ifunc-12-x86-64
FAIL: ld-ifunc/ifunc-13-x86-64
FAIL: ld-ifunc/ifunc-14a-x86-64
FAIL: ld-ifunc/ifunc-14b-x86-64
FAIL: ld-ifunc/ifunc-14c-x86-64
FAIL: ld-ifunc/ifunc-14d-x86-64
FAIL: ld-ifunc/ifunc-14e-x86-64
FAIL: ld-ifunc/ifunc-14f-x86-64
FAIL: ld-ifunc/ifunc-15-x86-64
FAIL: ld-ifunc/ifunc-17a-x86-64
FAIL: ld-ifunc/ifunc-17b-x86-64
FAIL: ld-ifunc/ifunc-2-local-x86-64-now
FAIL: ld-ifunc/ifunc-2-local-x86-64
FAIL: ld-ifunc/ifunc-2-x86-64-now
FAIL: ld-ifunc/ifunc-2-x86-64
FAIL: ld-ifunc/ifunc-20-x86-64
FAIL: ld-ifunc/pr17154-x86-64-now
FAIL: ld-ifunc/pr17154-x86-64

For one, the actuall error is weird:

./ld-new: target elf64-x86-64 not found
failed with: <./ld-new: target elf64-x86-64 not found>, no expected output
FAIL: ld-ifunc/ifunc-10-x86-64

although ld -V does report the elf_x86_64 emulation as supported:

$ ./ld/ld-new -V
GNU ld (GNU Binutils) 2.34.50.20200328
  Supported emulations:
   elf_x86_64_sol2
   elf_x86_64
[...]

When using ld -m elf_x86_64_sol2 instead, one of the testcases links
successfully.

However, there's no point in pursuing this: Solaris does not support
ifunc, as can be seen in <sys/elf.h>:

/*
 * GNU/Linux specific symbol type not used by Solaris
 */
#define STT_GNU_IFUNC   10

and never will, given that it has symbol capabilities as solution to
effectively the same problem:

http://www.linker-aliens.org/blogs/rie/entry/symbol_capabilitie/

Therefore I'd like to disable ifunc testing on Solaris completely.
There are two possible solutions:

* Explicitly reject Solaris in ld/testsuite/ld-ifunc/ifunc.exp.

* Remove Solaris from binutils/testsuite/lib/binutils-common.exp
  (supports_gnu_osabi).  The comment there seems confusing:

# True if the ELF target supports setting the ELF header OSABI field
# to ELFOSABI_GNU or ELFOSABI_FREEBSD, a requirement for STT_GNU_IFUNC
# symbol and SHF_GNU_MBIND section support.

  Why wouldn't one be able to set the OSABI field?  It's a file after
  all ;-)  Isn't the question if the extensions covered by ELFOSABI_GNU
  are handled at runtime?

  Whatever the case, it seems right to disable this on Solaris: the
  ifunc part is covered above.  SHF_GNU_MBIND is in the OS-specific
  range and conflicts with

#define SHF_SUNW_REALLOC        0x01000000      /* internal: krtld realloc */

  While the comment suggests this might be relocatable without too much
  problems, the description of mbind (no formal spec AFAICS, just the
  comment in the binutils patch submission) strongly suggests that this
  isn't relevant to Solaris at all.

  Indirectly, clearing supports_gnu_osabi on Solaris disables
  supports_gnu_unique.  Again, Solaris <sys/elf.h> has

/*
 * GNU/Linux specific binding not used by Solaris
 */
#define STB_GNU_UNIQUE  10

  so this seems the right thing to do.

* Either way, one can remove the explicit mentions of *-*-solaris2* in
  quite a number of (but not all) the ld-ifunc dump file notarget lists.
  I suspect a similar solution is possible for the other targets
  routinely listed there (*-*-lynxos *-*-nacl* *-*-nto*), but I know
  nothing about those and will thus leave them alone.

I went for the supports_gnu_osabi solution, but there's one fallout: two
gas tests now XPASS because the are xfail'ed for !supports_gnu_osabi:

XPASS: mbind sections 12
XPASS: mbind section contents 16
XPASS: mbind sections 16
XPASS: mbind section contents 16

I could either add notarget: *-*-solaris2* to those or (seems to make
more sense to me) just change

#xfail: ![supports_gnu_osabi]

to notarget (if that works).

Tested on x86_64-pc-solaris2.11, i386-pc-solaris2.11,
x86_64-pc-linux-gnu, and i686-pc-linux-gnu.

	Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


2020-04-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	ld:
	* testsuite/ld-ifunc/ifunc-10-i386.d: Remove *-*-solaris2* from
	notarget.
	* ifunc-11-i386.d: Likewise.
	* ifunc-12-i386.d: Likewise.
	* ifunc-13-i386.d: Likewise.
	* ifunc-14a-i386.d: Likewise.
	* ifunc-14b-i386.d: Likewise.
	* ifunc-14c-i386.d: Likewise.
	* ifunc-14d-i386.d: Likewise.
	* ifunc-14e-i386.d: Likewise.
	* ifunc-14f-i386.d: Likewise.
	* ifunc-15-i386.d: Likewise.
	* ifunc-16-i386-now.d: Likewise.
	* ifunc-16-i386.d: Likewise.
	* ifunc-17a-i386.d: Likewise.
	* ifunc-17b-i386.d: Likewise.
	* ifunc-18a-i386.d: Likewise.
	* ifunc-18b-i386.d: Likewise.
	* ifunc-19a-i386.d: Likewise.
	* ifunc-19b-i386.d: Likewise.
	* ifunc-2-i386-now.d: Likewise.
	* ifunc-2-i386.d: Likewise.
	* ifunc-2-local-i386-now.d: Likewise.
	* ifunc-2-local-i386.d: Likewise.
	* ifunc-20-i386.d: Likewise.
	* ifunc-21-i386.d: Likewise.
	* ifunc-22-i386.d: Likewise.
	* ifunc-5a-i386.d: Likewise.
	* ifunc-5a-local-i386.d: Likewise.
	* ifunc-5b-i386.d: Likewise.
	* ifunc-5b-local-i386.d: Likewise.
	* ifunc-5r-local-i386.d: Likewise.
	* ifunc-6a-i386.d: Likewise.
	* ifunc-6b-i386.d: Likewise.
	* ifunc-7a-i386.d: Likewise.
	* ifunc-7b-i386.d: Likewise.
	* ifunc-8-i386.d: Likewise.
	* ifunc-9-i386.d: Likewise.
	* pr17154-i386-now.d: Likewise.
	* pr17154-i386.d: Likewise.

	* ifunc-23a-x86.d: Remove notarget.
	* ifunc-24a-x86.d: Likewise.
	* ifunc-25a-x86.d: Likewise.

	binutils:
	* testsuite/lib/binutils-common.exp (supports_gnu_osabi): Don't
	enable on *-*-solaris*.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: ld-sol2-no-ifunc-tests.patch --]
[-- Type: text/x-patch, Size: 18142 bytes --]

# HG changeset patch
# Parent  1e5b3bca7b34c0413b4d80e4f6aaa3ebbfd58f65
ld: Disable ifunc tests on Solaris

diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
--- a/binutils/testsuite/lib/binutils-common.exp
+++ b/binutils/testsuite/lib/binutils-common.exp
@@ -201,8 +201,7 @@ proc supports_gnu_osabi {} {
 	 || ( [istarget *-*-nto*] && ![istarget arm*-*-*] )
 	 || [istarget *-*-irix*]
 	 || [istarget *-*-*eabi*]
-	 || [istarget *-*-rtems*]
-	 || [istarget *-*-solaris*] } {
+	 || [istarget *-*-rtems*] } {
 	return 1
     }
     if { [istarget "wasm32*-*-*"] } {
diff --git a/ld/testsuite/ld-ifunc/ifunc-10-i386.d b/ld/testsuite/ld-ifunc/ifunc-10-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-10-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-10-i386.d
@@ -2,6 +2,6 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 There are no relocations in this file.
diff --git a/ld/testsuite/ld-ifunc/ifunc-11-i386.d b/ld/testsuite/ld-ifunc/ifunc-11-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-11-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-11-i386.d
@@ -2,6 +2,6 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 There are no relocations in this file.
diff --git a/ld/testsuite/ld-ifunc/ifunc-12-i386.d b/ld/testsuite/ld-ifunc/ifunc-12-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-12-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-12-i386.d
@@ -2,6 +2,6 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 There are no relocations in this file.
diff --git a/ld/testsuite/ld-ifunc/ifunc-13-i386.d b/ld/testsuite/ld-ifunc/ifunc-13-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-13-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-13-i386.d
@@ -4,7 +4,7 @@
 #as: --32 -mrelax-relocations=yes
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.ifunc' at offset 0x[0-9a-f]+ contains 1 entry:
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-14a-i386.d b/ld/testsuite/ld-ifunc/ifunc-14a-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-14a-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-14a-i386.d
@@ -4,7 +4,7 @@
 #as: --32
 #readelf: -d --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 #failif
 #...
diff --git a/ld/testsuite/ld-ifunc/ifunc-14b-i386.d b/ld/testsuite/ld-ifunc/ifunc-14b-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-14b-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-14b-i386.d
@@ -4,7 +4,7 @@
 #as: --32
 #readelf: -d --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 #failif
 #...
diff --git a/ld/testsuite/ld-ifunc/ifunc-14c-i386.d b/ld/testsuite/ld-ifunc/ifunc-14c-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-14c-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-14c-i386.d
@@ -4,7 +4,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 #failif
 #...
diff --git a/ld/testsuite/ld-ifunc/ifunc-14d-i386.d b/ld/testsuite/ld-ifunc/ifunc-14d-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-14d-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-14d-i386.d
@@ -4,7 +4,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 #failif
 #...
diff --git a/ld/testsuite/ld-ifunc/ifunc-14e-i386.d b/ld/testsuite/ld-ifunc/ifunc-14e-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-14e-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-14e-i386.d
@@ -5,7 +5,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 #failif
 #...
diff --git a/ld/testsuite/ld-ifunc/ifunc-14f-i386.d b/ld/testsuite/ld-ifunc/ifunc-14f-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-14f-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-14f-i386.d
@@ -5,7 +5,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 #failif
 #...
diff --git a/ld/testsuite/ld-ifunc/ifunc-15-i386.d b/ld/testsuite/ld-ifunc/ifunc-15-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-15-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-15-i386.d
@@ -3,7 +3,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.got' at offset 0x[0-9a-f]+ contains 1 entry:
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-16-i386-now.d b/ld/testsuite/ld-ifunc/ifunc-16-i386-now.d
--- a/ld/testsuite/ld-ifunc/ifunc-16-i386-now.d
+++ b/ld/testsuite/ld-ifunc/ifunc-16-i386-now.d
@@ -3,7 +3,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.plt' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-16-i386.d b/ld/testsuite/ld-ifunc/ifunc-16-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-16-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-16-i386.d
@@ -3,7 +3,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.plt' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-17a-i386.d b/ld/testsuite/ld-ifunc/ifunc-17a-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-17a-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-17a-i386.d
@@ -4,7 +4,7 @@
 #as: --32
 #readelf: -s --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 #...
  +[0-9]+: +[0-9a-f]+ +4 +OBJECT +GLOBAL +DEFAULT +[1-9] foo
diff --git a/ld/testsuite/ld-ifunc/ifunc-17b-i386.d b/ld/testsuite/ld-ifunc/ifunc-17b-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-17b-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-17b-i386.d
@@ -4,7 +4,7 @@
 #as: --32
 #readelf: -s --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 #...
  +[0-9]+: +[0-9a-f]+ +4 +OBJECT +GLOBAL +DEFAULT +[1-9] foo
diff --git a/ld/testsuite/ld-ifunc/ifunc-18a-i386.d b/ld/testsuite/ld-ifunc/ifunc-18a-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-18a-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-18a-i386.d
@@ -4,7 +4,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.ifunc' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-18b-i386.d b/ld/testsuite/ld-ifunc/ifunc-18b-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-18b-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-18b-i386.d
@@ -4,7 +4,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.ifunc' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-19a-i386.d b/ld/testsuite/ld-ifunc/ifunc-19a-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-19a-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-19a-i386.d
@@ -4,7 +4,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.ifunc' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-19b-i386.d b/ld/testsuite/ld-ifunc/ifunc-19b-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-19b-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-19b-i386.d
@@ -4,7 +4,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.ifunc' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-2-i386-now.d b/ld/testsuite/ld-ifunc/ifunc-2-i386-now.d
--- a/ld/testsuite/ld-ifunc/ifunc-2-i386-now.d
+++ b/ld/testsuite/ld-ifunc/ifunc-2-i386-now.d
@@ -3,7 +3,7 @@
 #as: --32
 #objdump: -dw
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 .*: +file format .*
 
diff --git a/ld/testsuite/ld-ifunc/ifunc-2-i386.d b/ld/testsuite/ld-ifunc/ifunc-2-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-2-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-2-i386.d
@@ -2,7 +2,7 @@
 #as: --32
 #objdump: -dw
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 #...
 [ \t0-9a-f]+:[ \t0-9a-f]+call[ \t0-9a-f]+<\*ABS\*@plt>
diff --git a/ld/testsuite/ld-ifunc/ifunc-2-local-i386-now.d b/ld/testsuite/ld-ifunc/ifunc-2-local-i386-now.d
--- a/ld/testsuite/ld-ifunc/ifunc-2-local-i386-now.d
+++ b/ld/testsuite/ld-ifunc/ifunc-2-local-i386-now.d
@@ -3,7 +3,7 @@
 #as: --32
 #objdump: -dw
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 .*: +file format .*
 
diff --git a/ld/testsuite/ld-ifunc/ifunc-2-local-i386.d b/ld/testsuite/ld-ifunc/ifunc-2-local-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-2-local-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-2-local-i386.d
@@ -2,7 +2,7 @@
 #as: --32
 #objdump: -dw
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 #...
 [ \t0-9a-f]+:[ \t0-9a-f]+call[ \t0-9a-f]+<\*ABS\*@plt>
diff --git a/ld/testsuite/ld-ifunc/ifunc-20-i386.d b/ld/testsuite/ld-ifunc/ifunc-20-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-20-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-20-i386.d
@@ -3,7 +3,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.ifunc' at offset 0x[0-9a-f]+ contains 1 entry:
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-21-i386.d b/ld/testsuite/ld-ifunc/ifunc-21-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-21-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-21-i386.d
@@ -2,7 +2,7 @@
 #as: --32 -mrelax-relocations=yes
 #objdump: -dw
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 .*: +file format .*
 
diff --git a/ld/testsuite/ld-ifunc/ifunc-22-i386.d b/ld/testsuite/ld-ifunc/ifunc-22-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-22-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-22-i386.d
@@ -2,7 +2,7 @@
 #as: --32 -mrelax-relocations=yes
 #objdump: -dw
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 .*: +file format .*
 
diff --git a/ld/testsuite/ld-ifunc/ifunc-23a-x86.d b/ld/testsuite/ld-ifunc/ifunc-23a-x86.d
--- a/ld/testsuite/ld-ifunc/ifunc-23a-x86.d
+++ b/ld/testsuite/ld-ifunc/ifunc-23a-x86.d
@@ -2,7 +2,6 @@
 #ld:
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-solaris*
 
 Relocation section '.rel(a|).plt' at offset 0x[0-9a-f]+ contains 1 entry:
  +Offset +Info +Type +Sym.* Value +Symbol's Name.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-24a-x86.d b/ld/testsuite/ld-ifunc/ifunc-24a-x86.d
--- a/ld/testsuite/ld-ifunc/ifunc-24a-x86.d
+++ b/ld/testsuite/ld-ifunc/ifunc-24a-x86.d
@@ -2,7 +2,6 @@
 #ld:
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-solaris*
 
 Relocation section '.rel(a|).plt' at offset 0x[0-9a-f]+ contains 1 entry:
  +Offset +Info +Type +Sym.* Value +Symbol's Name.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-25a-x86.d b/ld/testsuite/ld-ifunc/ifunc-25a-x86.d
--- a/ld/testsuite/ld-ifunc/ifunc-25a-x86.d
+++ b/ld/testsuite/ld-ifunc/ifunc-25a-x86.d
@@ -2,7 +2,6 @@
 #ld:
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-solaris*
 
 Relocation section '.rel(a|).plt' at offset 0x[0-9a-f]+ contains 1 entry:
  +Offset +Info +Type +Sym.* Value +Symbol's Name.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-5a-i386.d b/ld/testsuite/ld-ifunc/ifunc-5a-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-5a-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-5a-i386.d
@@ -3,7 +3,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.plt' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-5a-local-i386.d b/ld/testsuite/ld-ifunc/ifunc-5a-local-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-5a-local-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-5a-local-i386.d
@@ -3,7 +3,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.plt' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-5b-i386.d b/ld/testsuite/ld-ifunc/ifunc-5b-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-5b-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-5b-i386.d
@@ -3,7 +3,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.got' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-5b-local-i386.d b/ld/testsuite/ld-ifunc/ifunc-5b-local-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-5b-local-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-5b-local-i386.d
@@ -3,7 +3,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.plt' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-5r-local-i386.d b/ld/testsuite/ld-ifunc/ifunc-5r-local-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-5r-local-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-5r-local-i386.d
@@ -3,7 +3,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.text' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-6a-i386.d b/ld/testsuite/ld-ifunc/ifunc-6a-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-6a-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-6a-i386.d
@@ -3,7 +3,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.plt' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-6b-i386.d b/ld/testsuite/ld-ifunc/ifunc-6b-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-6b-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-6b-i386.d
@@ -3,7 +3,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.got' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-7a-i386.d b/ld/testsuite/ld-ifunc/ifunc-7a-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-7a-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-7a-i386.d
@@ -3,7 +3,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.plt' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-7b-i386.d b/ld/testsuite/ld-ifunc/ifunc-7b-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-7b-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-7b-i386.d
@@ -3,7 +3,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.plt' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-8-i386.d b/ld/testsuite/ld-ifunc/ifunc-8-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-8-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-8-i386.d
@@ -4,7 +4,7 @@
 #as: --32
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.plt' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/ifunc-9-i386.d b/ld/testsuite/ld-ifunc/ifunc-9-i386.d
--- a/ld/testsuite/ld-ifunc/ifunc-9-i386.d
+++ b/ld/testsuite/ld-ifunc/ifunc-9-i386.d
@@ -3,7 +3,7 @@
 #ld: -m elf_i386 --export-dynamic
 #readelf: -r --wide
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 Relocation section '.rel.plt' at .*
 [ ]+Offset[ ]+Info[ ]+Type[ ]+.*
diff --git a/ld/testsuite/ld-ifunc/pr17154-i386-now.d b/ld/testsuite/ld-ifunc/pr17154-i386-now.d
--- a/ld/testsuite/ld-ifunc/pr17154-i386-now.d
+++ b/ld/testsuite/ld-ifunc/pr17154-i386-now.d
@@ -3,7 +3,7 @@
 #as: --32
 #objdump: -dw
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 .*: +file format .*
 
diff --git a/ld/testsuite/ld-ifunc/pr17154-i386.d b/ld/testsuite/ld-ifunc/pr17154-i386.d
--- a/ld/testsuite/ld-ifunc/pr17154-i386.d
+++ b/ld/testsuite/ld-ifunc/pr17154-i386.d
@@ -3,7 +3,7 @@
 #as: --32
 #objdump: -dw
 #target: x86_64-*-* i?86-*-*
-#notarget: *-*-lynxos *-*-nacl* *-*-nto* *-*-solaris2*
+#notarget: *-*-lynxos *-*-nacl* *-*-nto*
 
 #...
 0+180 <.*>:

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] ld: Disable ifunc tests on Solaris
  2020-04-01 11:14 [PATCH] ld: Disable ifunc tests on Solaris Rainer Orth
@ 2020-04-01 11:26 ` H.J. Lu
  2020-04-01 13:46   ` Rainer Orth
  0 siblings, 1 reply; 4+ messages in thread
From: H.J. Lu @ 2020-04-01 11:26 UTC (permalink / raw)
  To: Rainer Orth; +Cc: Binutils

On Wed, Apr 1, 2020 at 4:16 AM Rainer Orth <ro@cebitec.uni-bielefeld.de> wrote:
>
> A couple of ld ifunc tests currently FAIL on 64-bit Solaris/x86:
>
> FAIL: ld-ifunc/ifunc-10-x86-64
> FAIL: ld-ifunc/ifunc-11-x86-64
> FAIL: ld-ifunc/ifunc-12-x86-64
> FAIL: ld-ifunc/ifunc-13-x86-64
> FAIL: ld-ifunc/ifunc-14a-x86-64
> FAIL: ld-ifunc/ifunc-14b-x86-64
> FAIL: ld-ifunc/ifunc-14c-x86-64
> FAIL: ld-ifunc/ifunc-14d-x86-64
> FAIL: ld-ifunc/ifunc-14e-x86-64
> FAIL: ld-ifunc/ifunc-14f-x86-64
> FAIL: ld-ifunc/ifunc-15-x86-64
> FAIL: ld-ifunc/ifunc-17a-x86-64
> FAIL: ld-ifunc/ifunc-17b-x86-64
> FAIL: ld-ifunc/ifunc-2-local-x86-64-now
> FAIL: ld-ifunc/ifunc-2-local-x86-64
> FAIL: ld-ifunc/ifunc-2-x86-64-now
> FAIL: ld-ifunc/ifunc-2-x86-64
> FAIL: ld-ifunc/ifunc-20-x86-64
> FAIL: ld-ifunc/pr17154-x86-64-now
> FAIL: ld-ifunc/pr17154-x86-64
>
> For one, the actuall error is weird:
>
> ./ld-new: target elf64-x86-64 not found
> failed with: <./ld-new: target elf64-x86-64 not found>, no expected output
> FAIL: ld-ifunc/ifunc-10-x86-64
>
> although ld -V does report the elf_x86_64 emulation as supported:
>
> $ ./ld/ld-new -V
> GNU ld (GNU Binutils) 2.34.50.20200328
>   Supported emulations:
>    elf_x86_64_sol2
>    elf_x86_64
> [...]
>
> When using ld -m elf_x86_64_sol2 instead, one of the testcases links
> successfully.
>
> However, there's no point in pursuing this: Solaris does not support
> ifunc, as can be seen in <sys/elf.h>:
>
> /*
>  * GNU/Linux specific symbol type not used by Solaris
>  */
> #define STT_GNU_IFUNC   10
>
> and never will, given that it has symbol capabilities as solution to
> effectively the same problem:
>
> http://www.linker-aliens.org/blogs/rie/entry/symbol_capabilitie/
>
> Therefore I'd like to disable ifunc testing on Solaris completely.
> There are two possible solutions:
>
> * Explicitly reject Solaris in ld/testsuite/ld-ifunc/ifunc.exp.
>
> * Remove Solaris from binutils/testsuite/lib/binutils-common.exp
>   (supports_gnu_osabi).  The comment there seems confusing:
>
> # True if the ELF target supports setting the ELF header OSABI field
> # to ELFOSABI_GNU or ELFOSABI_FREEBSD, a requirement for STT_GNU_IFUNC
> # symbol and SHF_GNU_MBIND section support.
>
>   Why wouldn't one be able to set the OSABI field?  It's a file after
>   all ;-)  Isn't the question if the extensions covered by ELFOSABI_GNU
>   are handled at runtime?
>
>   Whatever the case, it seems right to disable this on Solaris: the
>   ifunc part is covered above.  SHF_GNU_MBIND is in the OS-specific
>   range and conflicts with
>
> #define SHF_SUNW_REALLOC        0x01000000      /* internal: krtld realloc */
>
>   While the comment suggests this might be relocatable without too much
>   problems, the description of mbind (no formal spec AFAICS, just the
>   comment in the binutils patch submission) strongly suggests that this
>   isn't relevant to Solaris at all.
>
>   Indirectly, clearing supports_gnu_osabi on Solaris disables
>   supports_gnu_unique.  Again, Solaris <sys/elf.h> has
>
> /*
>  * GNU/Linux specific binding not used by Solaris
>  */
> #define STB_GNU_UNIQUE  10
>
>   so this seems the right thing to do.
>
> * Either way, one can remove the explicit mentions of *-*-solaris2* in
>   quite a number of (but not all) the ld-ifunc dump file notarget lists.
>   I suspect a similar solution is possible for the other targets
>   routinely listed there (*-*-lynxos *-*-nacl* *-*-nto*), but I know
>   nothing about those and will thus leave them alone.
>
> I went for the supports_gnu_osabi solution, but there's one fallout: two
> gas tests now XPASS because the are xfail'ed for !supports_gnu_osabi:
>
> XPASS: mbind sections 12
> XPASS: mbind section contents 16
> XPASS: mbind sections 16
> XPASS: mbind section contents 16
>
> I could either add notarget: *-*-solaris2* to those or (seems to make
> more sense to me) just change
>
> #xfail: ![supports_gnu_osabi]
>
> to notarget (if that works).
>
> Tested on x86_64-pc-solaris2.11, i386-pc-solaris2.11,
> x86_64-pc-linux-gnu, and i686-pc-linux-gnu.
>
>         Rainer
>
> --
> -----------------------------------------------------------------------------
> Rainer Orth, Center for Biotechnology, Bielefeld University
>
>
> 2020-04-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
>
>         ld:
>         * testsuite/ld-ifunc/ifunc-10-i386.d: Remove *-*-solaris2* from
>         notarget.
>         * ifunc-11-i386.d: Likewise.
>         * ifunc-12-i386.d: Likewise.
>         * ifunc-13-i386.d: Likewise.
>         * ifunc-14a-i386.d: Likewise.
>         * ifunc-14b-i386.d: Likewise.
>         * ifunc-14c-i386.d: Likewise.
>         * ifunc-14d-i386.d: Likewise.
>         * ifunc-14e-i386.d: Likewise.
>         * ifunc-14f-i386.d: Likewise.
>         * ifunc-15-i386.d: Likewise.
>         * ifunc-16-i386-now.d: Likewise.
>         * ifunc-16-i386.d: Likewise.
>         * ifunc-17a-i386.d: Likewise.
>         * ifunc-17b-i386.d: Likewise.
>         * ifunc-18a-i386.d: Likewise.
>         * ifunc-18b-i386.d: Likewise.
>         * ifunc-19a-i386.d: Likewise.
>         * ifunc-19b-i386.d: Likewise.
>         * ifunc-2-i386-now.d: Likewise.
>         * ifunc-2-i386.d: Likewise.
>         * ifunc-2-local-i386-now.d: Likewise.
>         * ifunc-2-local-i386.d: Likewise.
>         * ifunc-20-i386.d: Likewise.
>         * ifunc-21-i386.d: Likewise.
>         * ifunc-22-i386.d: Likewise.
>         * ifunc-5a-i386.d: Likewise.
>         * ifunc-5a-local-i386.d: Likewise.
>         * ifunc-5b-i386.d: Likewise.
>         * ifunc-5b-local-i386.d: Likewise.
>         * ifunc-5r-local-i386.d: Likewise.
>         * ifunc-6a-i386.d: Likewise.
>         * ifunc-6b-i386.d: Likewise.
>         * ifunc-7a-i386.d: Likewise.
>         * ifunc-7b-i386.d: Likewise.
>         * ifunc-8-i386.d: Likewise.
>         * ifunc-9-i386.d: Likewise.
>         * pr17154-i386-now.d: Likewise.
>         * pr17154-i386.d: Likewise.
>
>         * ifunc-23a-x86.d: Remove notarget.
>         * ifunc-24a-x86.d: Likewise.
>         * ifunc-25a-x86.d: Likewise.

The above is OK.

>         binutils:
>         * testsuite/lib/binutils-common.exp (supports_gnu_osabi): Don't
>         enable on *-*-solaris*.
>

This makes senses to me.  Since you are Solaris owner, I think it is OK.

Thanks.

-- 
H.J.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] ld: Disable ifunc tests on Solaris
  2020-04-01 11:26 ` H.J. Lu
@ 2020-04-01 13:46   ` Rainer Orth
  2020-04-01 13:51     ` H.J. Lu
  0 siblings, 1 reply; 4+ messages in thread
From: Rainer Orth @ 2020-04-01 13:46 UTC (permalink / raw)
  To: H.J. Lu; +Cc: Binutils

[-- Attachment #1: Type: text/plain, Size: 7152 bytes --]

Hi H.J.,

> On Wed, Apr 1, 2020 at 4:16 AM Rainer Orth <ro@cebitec.uni-bielefeld.de> wrote:
>>
>> A couple of ld ifunc tests currently FAIL on 64-bit Solaris/x86:
>>
>> FAIL: ld-ifunc/ifunc-10-x86-64
>> FAIL: ld-ifunc/ifunc-11-x86-64
>> FAIL: ld-ifunc/ifunc-12-x86-64
>> FAIL: ld-ifunc/ifunc-13-x86-64
>> FAIL: ld-ifunc/ifunc-14a-x86-64
>> FAIL: ld-ifunc/ifunc-14b-x86-64
>> FAIL: ld-ifunc/ifunc-14c-x86-64
>> FAIL: ld-ifunc/ifunc-14d-x86-64
>> FAIL: ld-ifunc/ifunc-14e-x86-64
>> FAIL: ld-ifunc/ifunc-14f-x86-64
>> FAIL: ld-ifunc/ifunc-15-x86-64
>> FAIL: ld-ifunc/ifunc-17a-x86-64
>> FAIL: ld-ifunc/ifunc-17b-x86-64
>> FAIL: ld-ifunc/ifunc-2-local-x86-64-now
>> FAIL: ld-ifunc/ifunc-2-local-x86-64
>> FAIL: ld-ifunc/ifunc-2-x86-64-now
>> FAIL: ld-ifunc/ifunc-2-x86-64
>> FAIL: ld-ifunc/ifunc-20-x86-64
>> FAIL: ld-ifunc/pr17154-x86-64-now
>> FAIL: ld-ifunc/pr17154-x86-64
>>
>> For one, the actuall error is weird:
>>
>> ./ld-new: target elf64-x86-64 not found
>> failed with: <./ld-new: target elf64-x86-64 not found>, no expected output
>> FAIL: ld-ifunc/ifunc-10-x86-64
>>
>> although ld -V does report the elf_x86_64 emulation as supported:
>>
>> $ ./ld/ld-new -V
>> GNU ld (GNU Binutils) 2.34.50.20200328
>>   Supported emulations:
>>    elf_x86_64_sol2
>>    elf_x86_64
>> [...]
>>
>> When using ld -m elf_x86_64_sol2 instead, one of the testcases links
>> successfully.
>>
>> However, there's no point in pursuing this: Solaris does not support
>> ifunc, as can be seen in <sys/elf.h>:
>>
>> /*
>>  * GNU/Linux specific symbol type not used by Solaris
>>  */
>> #define STT_GNU_IFUNC   10
>>
>> and never will, given that it has symbol capabilities as solution to
>> effectively the same problem:
>>
>> http://www.linker-aliens.org/blogs/rie/entry/symbol_capabilitie/
>>
>> Therefore I'd like to disable ifunc testing on Solaris completely.
>> There are two possible solutions:
>>
>> * Explicitly reject Solaris in ld/testsuite/ld-ifunc/ifunc.exp.
>>
>> * Remove Solaris from binutils/testsuite/lib/binutils-common.exp
>>   (supports_gnu_osabi).  The comment there seems confusing:
>>
>> # True if the ELF target supports setting the ELF header OSABI field
>> # to ELFOSABI_GNU or ELFOSABI_FREEBSD, a requirement for STT_GNU_IFUNC
>> # symbol and SHF_GNU_MBIND section support.
>>
>>   Why wouldn't one be able to set the OSABI field?  It's a file after
>>   all ;-)  Isn't the question if the extensions covered by ELFOSABI_GNU
>>   are handled at runtime?
>>
>>   Whatever the case, it seems right to disable this on Solaris: the
>>   ifunc part is covered above.  SHF_GNU_MBIND is in the OS-specific
>>   range and conflicts with
>>
>> #define SHF_SUNW_REALLOC        0x01000000      /* internal: krtld realloc */
>>
>>   While the comment suggests this might be relocatable without too much
>>   problems, the description of mbind (no formal spec AFAICS, just the
>>   comment in the binutils patch submission) strongly suggests that this
>>   isn't relevant to Solaris at all.
>>
>>   Indirectly, clearing supports_gnu_osabi on Solaris disables
>>   supports_gnu_unique.  Again, Solaris <sys/elf.h> has
>>
>> /*
>>  * GNU/Linux specific binding not used by Solaris
>>  */
>> #define STB_GNU_UNIQUE  10
>>
>>   so this seems the right thing to do.
>>
>> * Either way, one can remove the explicit mentions of *-*-solaris2* in
>>   quite a number of (but not all) the ld-ifunc dump file notarget lists.
>>   I suspect a similar solution is possible for the other targets
>>   routinely listed there (*-*-lynxos *-*-nacl* *-*-nto*), but I know
>>   nothing about those and will thus leave them alone.
>>
>> I went for the supports_gnu_osabi solution, but there's one fallout: two
>> gas tests now XPASS because the are xfail'ed for !supports_gnu_osabi:
>>
>> XPASS: mbind sections 12
>> XPASS: mbind section contents 16
>> XPASS: mbind sections 16
>> XPASS: mbind section contents 16
>>
>> I could either add notarget: *-*-solaris2* to those or (seems to make
>> more sense to me) just change
>>
>> #xfail: ![supports_gnu_osabi]
>>
>> to notarget (if that works).
>>
>> Tested on x86_64-pc-solaris2.11, i386-pc-solaris2.11,
>> x86_64-pc-linux-gnu, and i686-pc-linux-gnu.
>>
>>         Rainer
>>
>> --
>> -----------------------------------------------------------------------------
>> Rainer Orth, Center for Biotechnology, Bielefeld University
>>
>>
>> 2020-04-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
>>
>>         ld:
>>         * testsuite/ld-ifunc/ifunc-10-i386.d: Remove *-*-solaris2* from
>>         notarget.
>>         * ifunc-11-i386.d: Likewise.
>>         * ifunc-12-i386.d: Likewise.
>>         * ifunc-13-i386.d: Likewise.
>>         * ifunc-14a-i386.d: Likewise.
>>         * ifunc-14b-i386.d: Likewise.
>>         * ifunc-14c-i386.d: Likewise.
>>         * ifunc-14d-i386.d: Likewise.
>>         * ifunc-14e-i386.d: Likewise.
>>         * ifunc-14f-i386.d: Likewise.
>>         * ifunc-15-i386.d: Likewise.
>>         * ifunc-16-i386-now.d: Likewise.
>>         * ifunc-16-i386.d: Likewise.
>>         * ifunc-17a-i386.d: Likewise.
>>         * ifunc-17b-i386.d: Likewise.
>>         * ifunc-18a-i386.d: Likewise.
>>         * ifunc-18b-i386.d: Likewise.
>>         * ifunc-19a-i386.d: Likewise.
>>         * ifunc-19b-i386.d: Likewise.
>>         * ifunc-2-i386-now.d: Likewise.
>>         * ifunc-2-i386.d: Likewise.
>>         * ifunc-2-local-i386-now.d: Likewise.
>>         * ifunc-2-local-i386.d: Likewise.
>>         * ifunc-20-i386.d: Likewise.
>>         * ifunc-21-i386.d: Likewise.
>>         * ifunc-22-i386.d: Likewise.
>>         * ifunc-5a-i386.d: Likewise.
>>         * ifunc-5a-local-i386.d: Likewise.
>>         * ifunc-5b-i386.d: Likewise.
>>         * ifunc-5b-local-i386.d: Likewise.
>>         * ifunc-5r-local-i386.d: Likewise.
>>         * ifunc-6a-i386.d: Likewise.
>>         * ifunc-6b-i386.d: Likewise.
>>         * ifunc-7a-i386.d: Likewise.
>>         * ifunc-7b-i386.d: Likewise.
>>         * ifunc-8-i386.d: Likewise.
>>         * ifunc-9-i386.d: Likewise.
>>         * pr17154-i386-now.d: Likewise.
>>         * pr17154-i386.d: Likewise.
>>
>>         * ifunc-23a-x86.d: Remove notarget.
>>         * ifunc-24a-x86.d: Likewise.
>>         * ifunc-25a-x86.d: Likewise.
>
> The above is OK.

thanks.

>>         binutils:
>>         * testsuite/lib/binutils-common.exp (supports_gnu_osabi): Don't
>>         enable on *-*-solaris*.
>>
>
> This makes senses to me.  Since you are Solaris owner, I think it is OK.

Except that I'm not ;-)  Even so, there remains the matter of the gas
tests XPASSing now.  I've since verified that the attached patchlet
works, making the affected tests UNSUPPORTED.  This change affects
non-Solaris targets, too, of course.

Is this ok, together with the binutils-common.exp change?

Thanks.
        Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


	gas:
	* testsuite/gas/elf/section12a.d: Use notarget instead of xfail.
	* testsuite/gas/elf/section12b.d: Likewise.
	* testsuite/gas/elf/section16a.d: Likewise.
	* testsuite/gas/elf/section16b.d: Likewise.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: gas-mbind.patch --]
[-- Type: text/x-patch, Size: 1632 bytes --]

diff --git a/gas/testsuite/gas/elf/section12a.d b/gas/testsuite/gas/elf/section12a.d
--- a/gas/testsuite/gas/elf/section12a.d
+++ b/gas/testsuite/gas/elf/section12a.d
@@ -3,7 +3,7 @@
 #readelf: -Sg --wide
 #name: mbind sections 12
 # A number of targets do not support SHF_GNU_MBIND
-#xfail: ![supports_gnu_osabi]
+#notarget: ![supports_gnu_osabi]
 
 #...
   \[[ 0-9]+\] \.mbind\.data[ 	]+PROGBITS[ 	]+0+0 0+[0-9a-f]+ 0+1 00 WAD  0   0  1
diff --git a/gas/testsuite/gas/elf/section12b.d b/gas/testsuite/gas/elf/section12b.d
--- a/gas/testsuite/gas/elf/section12b.d
+++ b/gas/testsuite/gas/elf/section12b.d
@@ -6,7 +6,7 @@
 # expected below.
 #xfail: rx-*-*
 # A number of targets do not support SHF_GNU_MBIND
-#xfail: ![supports_gnu_osabi]
+#notarget: ![supports_gnu_osabi]
 
 #...
 Contents of section .mbind.data:
diff --git a/gas/testsuite/gas/elf/section16a.d b/gas/testsuite/gas/elf/section16a.d
--- a/gas/testsuite/gas/elf/section16a.d
+++ b/gas/testsuite/gas/elf/section16a.d
@@ -3,7 +3,7 @@
 #readelf: -Sg --wide
 #name: mbind sections 16
 # A number of targets do not support SHF_GNU_MBIND
-#xfail: ![supports_gnu_osabi]
+#notarget: ![supports_gnu_osabi]
 
 #...
   \[[ 0-9]+\] \.mbind\.data[ 	]+PROGBITS[ 	]+0+0 0+[0-9a-f]+ 0+1 00 WAD  0   0  1
diff --git a/gas/testsuite/gas/elf/section16b.d b/gas/testsuite/gas/elf/section16b.d
--- a/gas/testsuite/gas/elf/section16b.d
+++ b/gas/testsuite/gas/elf/section16b.d
@@ -6,7 +6,7 @@
 # expected below.
 #xfail: rx-*-*
 # A number of targets do not support SHF_GNU_MBIND
-#xfail: ![supports_gnu_osabi]
+#notarget: ![supports_gnu_osabi]
 
 #...
 Contents of section .mbind.data:

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] ld: Disable ifunc tests on Solaris
  2020-04-01 13:46   ` Rainer Orth
@ 2020-04-01 13:51     ` H.J. Lu
  0 siblings, 0 replies; 4+ messages in thread
From: H.J. Lu @ 2020-04-01 13:51 UTC (permalink / raw)
  To: Rainer Orth; +Cc: Binutils

On Wed, Apr 1, 2020 at 6:46 AM Rainer Orth <ro@cebitec.uni-bielefeld.de> wrote:
>
> Hi H.J.,
>
> > On Wed, Apr 1, 2020 at 4:16 AM Rainer Orth <ro@cebitec.uni-bielefeld.de> wrote:
> >>
> >> A couple of ld ifunc tests currently FAIL on 64-bit Solaris/x86:
> >>
> >> FAIL: ld-ifunc/ifunc-10-x86-64
> >> FAIL: ld-ifunc/ifunc-11-x86-64
> >> FAIL: ld-ifunc/ifunc-12-x86-64
> >> FAIL: ld-ifunc/ifunc-13-x86-64
> >> FAIL: ld-ifunc/ifunc-14a-x86-64
> >> FAIL: ld-ifunc/ifunc-14b-x86-64
> >> FAIL: ld-ifunc/ifunc-14c-x86-64
> >> FAIL: ld-ifunc/ifunc-14d-x86-64
> >> FAIL: ld-ifunc/ifunc-14e-x86-64
> >> FAIL: ld-ifunc/ifunc-14f-x86-64
> >> FAIL: ld-ifunc/ifunc-15-x86-64
> >> FAIL: ld-ifunc/ifunc-17a-x86-64
> >> FAIL: ld-ifunc/ifunc-17b-x86-64
> >> FAIL: ld-ifunc/ifunc-2-local-x86-64-now
> >> FAIL: ld-ifunc/ifunc-2-local-x86-64
> >> FAIL: ld-ifunc/ifunc-2-x86-64-now
> >> FAIL: ld-ifunc/ifunc-2-x86-64
> >> FAIL: ld-ifunc/ifunc-20-x86-64
> >> FAIL: ld-ifunc/pr17154-x86-64-now
> >> FAIL: ld-ifunc/pr17154-x86-64
> >>
> >> For one, the actuall error is weird:
> >>
> >> ./ld-new: target elf64-x86-64 not found
> >> failed with: <./ld-new: target elf64-x86-64 not found>, no expected output
> >> FAIL: ld-ifunc/ifunc-10-x86-64
> >>
> >> although ld -V does report the elf_x86_64 emulation as supported:
> >>
> >> $ ./ld/ld-new -V
> >> GNU ld (GNU Binutils) 2.34.50.20200328
> >>   Supported emulations:
> >>    elf_x86_64_sol2
> >>    elf_x86_64
> >> [...]
> >>
> >> When using ld -m elf_x86_64_sol2 instead, one of the testcases links
> >> successfully.
> >>
> >> However, there's no point in pursuing this: Solaris does not support
> >> ifunc, as can be seen in <sys/elf.h>:
> >>
> >> /*
> >>  * GNU/Linux specific symbol type not used by Solaris
> >>  */
> >> #define STT_GNU_IFUNC   10
> >>
> >> and never will, given that it has symbol capabilities as solution to
> >> effectively the same problem:
> >>
> >> http://www.linker-aliens.org/blogs/rie/entry/symbol_capabilitie/
> >>
> >> Therefore I'd like to disable ifunc testing on Solaris completely.
> >> There are two possible solutions:
> >>
> >> * Explicitly reject Solaris in ld/testsuite/ld-ifunc/ifunc.exp.
> >>
> >> * Remove Solaris from binutils/testsuite/lib/binutils-common.exp
> >>   (supports_gnu_osabi).  The comment there seems confusing:
> >>
> >> # True if the ELF target supports setting the ELF header OSABI field
> >> # to ELFOSABI_GNU or ELFOSABI_FREEBSD, a requirement for STT_GNU_IFUNC
> >> # symbol and SHF_GNU_MBIND section support.
> >>
> >>   Why wouldn't one be able to set the OSABI field?  It's a file after
> >>   all ;-)  Isn't the question if the extensions covered by ELFOSABI_GNU
> >>   are handled at runtime?
> >>
> >>   Whatever the case, it seems right to disable this on Solaris: the
> >>   ifunc part is covered above.  SHF_GNU_MBIND is in the OS-specific
> >>   range and conflicts with
> >>
> >> #define SHF_SUNW_REALLOC        0x01000000      /* internal: krtld realloc */
> >>
> >>   While the comment suggests this might be relocatable without too much
> >>   problems, the description of mbind (no formal spec AFAICS, just the
> >>   comment in the binutils patch submission) strongly suggests that this
> >>   isn't relevant to Solaris at all.
> >>
> >>   Indirectly, clearing supports_gnu_osabi on Solaris disables
> >>   supports_gnu_unique.  Again, Solaris <sys/elf.h> has
> >>
> >> /*
> >>  * GNU/Linux specific binding not used by Solaris
> >>  */
> >> #define STB_GNU_UNIQUE  10
> >>
> >>   so this seems the right thing to do.
> >>
> >> * Either way, one can remove the explicit mentions of *-*-solaris2* in
> >>   quite a number of (but not all) the ld-ifunc dump file notarget lists.
> >>   I suspect a similar solution is possible for the other targets
> >>   routinely listed there (*-*-lynxos *-*-nacl* *-*-nto*), but I know
> >>   nothing about those and will thus leave them alone.
> >>
> >> I went for the supports_gnu_osabi solution, but there's one fallout: two
> >> gas tests now XPASS because the are xfail'ed for !supports_gnu_osabi:
> >>
> >> XPASS: mbind sections 12
> >> XPASS: mbind section contents 16
> >> XPASS: mbind sections 16
> >> XPASS: mbind section contents 16
> >>
> >> I could either add notarget: *-*-solaris2* to those or (seems to make
> >> more sense to me) just change
> >>
> >> #xfail: ![supports_gnu_osabi]
> >>
> >> to notarget (if that works).
> >>
> >> Tested on x86_64-pc-solaris2.11, i386-pc-solaris2.11,
> >> x86_64-pc-linux-gnu, and i686-pc-linux-gnu.
> >>
> >>         Rainer
> >>
> >> --
> >> -----------------------------------------------------------------------------
> >> Rainer Orth, Center for Biotechnology, Bielefeld University
> >>
> >>
> >> 2020-04-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
> >>
> >>         ld:
> >>         * testsuite/ld-ifunc/ifunc-10-i386.d: Remove *-*-solaris2* from
> >>         notarget.
> >>         * ifunc-11-i386.d: Likewise.
> >>         * ifunc-12-i386.d: Likewise.
> >>         * ifunc-13-i386.d: Likewise.
> >>         * ifunc-14a-i386.d: Likewise.
> >>         * ifunc-14b-i386.d: Likewise.
> >>         * ifunc-14c-i386.d: Likewise.
> >>         * ifunc-14d-i386.d: Likewise.
> >>         * ifunc-14e-i386.d: Likewise.
> >>         * ifunc-14f-i386.d: Likewise.
> >>         * ifunc-15-i386.d: Likewise.
> >>         * ifunc-16-i386-now.d: Likewise.
> >>         * ifunc-16-i386.d: Likewise.
> >>         * ifunc-17a-i386.d: Likewise.
> >>         * ifunc-17b-i386.d: Likewise.
> >>         * ifunc-18a-i386.d: Likewise.
> >>         * ifunc-18b-i386.d: Likewise.
> >>         * ifunc-19a-i386.d: Likewise.
> >>         * ifunc-19b-i386.d: Likewise.
> >>         * ifunc-2-i386-now.d: Likewise.
> >>         * ifunc-2-i386.d: Likewise.
> >>         * ifunc-2-local-i386-now.d: Likewise.
> >>         * ifunc-2-local-i386.d: Likewise.
> >>         * ifunc-20-i386.d: Likewise.
> >>         * ifunc-21-i386.d: Likewise.
> >>         * ifunc-22-i386.d: Likewise.
> >>         * ifunc-5a-i386.d: Likewise.
> >>         * ifunc-5a-local-i386.d: Likewise.
> >>         * ifunc-5b-i386.d: Likewise.
> >>         * ifunc-5b-local-i386.d: Likewise.
> >>         * ifunc-5r-local-i386.d: Likewise.
> >>         * ifunc-6a-i386.d: Likewise.
> >>         * ifunc-6b-i386.d: Likewise.
> >>         * ifunc-7a-i386.d: Likewise.
> >>         * ifunc-7b-i386.d: Likewise.
> >>         * ifunc-8-i386.d: Likewise.
> >>         * ifunc-9-i386.d: Likewise.
> >>         * pr17154-i386-now.d: Likewise.
> >>         * pr17154-i386.d: Likewise.
> >>
> >>         * ifunc-23a-x86.d: Remove notarget.
> >>         * ifunc-24a-x86.d: Likewise.
> >>         * ifunc-25a-x86.d: Likewise.
> >
> > The above is OK.
>
> thanks.
>
> >>         binutils:
> >>         * testsuite/lib/binutils-common.exp (supports_gnu_osabi): Don't
> >>         enable on *-*-solaris*.
> >>
> >
> > This makes senses to me.  Since you are Solaris owner, I think it is OK.
>
> Except that I'm not ;-)  Even so, there remains the matter of the gas

We should make you the Solaris owner.

> tests XPASSing now.  I've since verified that the attached patchlet
> works, making the affected tests UNSUPPORTED.  This change affects
> non-Solaris targets, too, of course.
>
> Is this ok, together with the binutils-common.exp change?

That is OK.

Thanks.

> Thanks.
>         Rainer
>
> --
> -----------------------------------------------------------------------------
> Rainer Orth, Center for Biotechnology, Bielefeld University
>
>
>         gas:
>         * testsuite/gas/elf/section12a.d: Use notarget instead of xfail.
>         * testsuite/gas/elf/section12b.d: Likewise.
>         * testsuite/gas/elf/section16a.d: Likewise.
>         * testsuite/gas/elf/section16b.d: Likewise.
>


-- 
H.J.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-04-01 13:52 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-01 11:14 [PATCH] ld: Disable ifunc tests on Solaris Rainer Orth
2020-04-01 11:26 ` H.J. Lu
2020-04-01 13:46   ` Rainer Orth
2020-04-01 13:51     ` H.J. Lu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).