[2/2] ld: Add PR ld/31710 tests

Message ID 20240508132220.3809117-2-hjl.tools@gmail.com
State New
Headers
Series [1/2] ld: Run --wrap tests only if supported |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 fail Patch failed to apply
linaro-tcwg-bot/tcwg_binutils_build--master-arm fail Patch failed to apply

Commit Message

H.J. Lu May 8, 2024, 1:22 p.m. UTC
  PR ld/31710
	* testsuite/ld-elf/wrap.exp: Run ld/31710 tests.
	* testsuite/ld-elf/wrap2.h: New file.
	* testsuite/ld-elf/wrap2a.c: Likewise.
	* testsuite/ld-elf/wrap2b.c: Likewise.
---
 ld/testsuite/ld-elf/wrap.exp | 26 ++++++++++++++++++++++++++
 ld/testsuite/ld-elf/wrap2.h  |  6 ++++++
 ld/testsuite/ld-elf/wrap2a.c | 11 +++++++++++
 ld/testsuite/ld-elf/wrap2b.c | 20 ++++++++++++++++++++
 4 files changed, 63 insertions(+)
 create mode 100644 ld/testsuite/ld-elf/wrap2.h
 create mode 100644 ld/testsuite/ld-elf/wrap2a.c
 create mode 100644 ld/testsuite/ld-elf/wrap2b.c
  

Patch

diff --git a/ld/testsuite/ld-elf/wrap.exp b/ld/testsuite/ld-elf/wrap.exp
index 90e2d60e67d..efc44bc013f 100644
--- a/ld/testsuite/ld-elf/wrap.exp
+++ b/ld/testsuite/ld-elf/wrap.exp
@@ -52,3 +52,29 @@  if [check_shared_lib_support] {
   run_cc_link_tests $build_tests
   run_ld_link_exec_tests $run_tests
 }
+
+run_ld_link_tests [list \
+    [list \
+	"Build libwrap2.a" \
+	"" \
+	"" \
+	"" \
+	{wrap2a.c} \
+	{} \
+	"libwrap2.a" \
+	"-g" \
+    ] \
+]
+
+# Test very simple native Linux/x86 programs with linux-x86.S.
+run_ld_link_exec_tests [list \
+    [list \
+	"Run wrap2" \
+	"-Wl,--wrap=impl" \
+	"" \
+	{ wrap2b.c } \
+	"wrap2" \
+	"pass.out" \
+	"-g" \
+    ] \
+]
diff --git a/ld/testsuite/ld-elf/wrap2.h b/ld/testsuite/ld-elf/wrap2.h
new file mode 100644
index 00000000000..8fd9495f6f4
--- /dev/null
+++ b/ld/testsuite/ld-elf/wrap2.h
@@ -0,0 +1,6 @@ 
+struct ops
+{
+  void (*loaded)(void);
+};
+
+extern struct ops impl;
diff --git a/ld/testsuite/ld-elf/wrap2a.c b/ld/testsuite/ld-elf/wrap2a.c
new file mode 100644
index 00000000000..a37655fccad
--- /dev/null
+++ b/ld/testsuite/ld-elf/wrap2a.c
@@ -0,0 +1,11 @@ 
+#include "wrap2.h"
+
+static void
+loaded (void)
+{
+}
+
+struct ops impl =
+{
+  .loaded = loaded
+};
diff --git a/ld/testsuite/ld-elf/wrap2b.c b/ld/testsuite/ld-elf/wrap2b.c
new file mode 100644
index 00000000000..c1f4444a08a
--- /dev/null
+++ b/ld/testsuite/ld-elf/wrap2b.c
@@ -0,0 +1,20 @@ 
+#include <stdio.h>
+#include "wrap2.h"
+
+static void
+loaded(void)
+{
+  printf ("PASS\n");
+}
+
+struct ops __wrap_impl =
+{
+  .loaded = loaded,
+};
+
+int
+main()
+{
+  impl.loaded ();
+  return 0;
+}