[PATCH 1/3 trunk] libctf, ld: fix data symbol test with newer GCC

Nick Alcock nick.alcock@oracle.com
Mon Jan 18 12:53:49 GMT 2021


GCC 11+ spots that the extern var_1 and var_666 declarations in this
test are unused, and removes them, thus stopping them from appearing as
conflicted data symbols and rendering the test pointless.  Use them in a
function unique to this TU to prevent them from being eliminated.

ld/ChangeLog
2021-01-06  Nick Alcock  <nick.alcock@oracle.com>

	* testsuite/ld-ctf/data-func-2.c: Stop removal of the extern foo_t
	symbols by the optimizer.
	* testsuite/ld-ctf/data-func-conflicted.d: Adjust accordingly.
---
 ld/testsuite/ld-ctf/data-func-2.c          | 4 ++++
 ld/testsuite/ld-ctf/data-func-conflicted.d | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)

This is going on trunk only because it applies only to unreleased compilers
and affects only the testsuite.

diff --git a/ld/testsuite/ld-ctf/data-func-2.c b/ld/testsuite/ld-ctf/data-func-2.c
index d00d2309692..575b06ef30c 100644
--- a/ld/testsuite/ld-ctf/data-func-2.c
+++ b/ld/testsuite/ld-ctf/data-func-2.c
@@ -3,3 +3,7 @@ typedef char foo_t;
 /* Conflicting, and indexed.  */
 extern foo_t var_1;
 extern foo_t *var_666;
+
+int other_func(foo_t *);
+
+int ignore (void) { other_func (&var_1); other_func (var_666); }
diff --git a/ld/testsuite/ld-ctf/data-func-conflicted.d b/ld/testsuite/ld-ctf/data-func-conflicted.d
index 6b1e9145a02..1e7c19a5b36 100644
--- a/ld/testsuite/ld-ctf/data-func-conflicted.d
+++ b/ld/testsuite/ld-ctf/data-func-conflicted.d
@@ -14,9 +14,9 @@ Contents of CTF section \.ctf:
     Version: 4 \(CTF_VERSION_3\)
 #...
     Data object section:	.* \(0xc bytes\)
-    Function info section:	.* \(0x40 bytes\)
+    Function info section:	.* \(0x44 bytes\)
     Object index section:	.* \(0xc bytes\)
-    Type section:	.* \(0xe8 bytes\)
+    Type section:	.* \(0xf4 bytes\)
     String section:	.*
 #...
   Data objects:
-- 
2.30.0.252.gc27e85e57d



More information about the Binutils mailing list