summaryrefslogtreecommitdiff
path: root/Force-DT_RPATH-for-enable-hardcoded-path-in-tests.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-10-09 03:36:26 +0000
committerCoprDistGit <infra@openeuler.org>2024-10-09 03:36:26 +0000
commitdb43dfdfa8bc2b938582aef3d87e43594c13ee50 (patch)
tree47b95b2f6ac8d8b7e6fa373a5bd7d661bf7234df /Force-DT_RPATH-for-enable-hardcoded-path-in-tests.patch
parentb933872de72b006230559f77acc3ccfb38a1f343 (diff)
automatic import of glibcopeneuler20.03
Diffstat (limited to 'Force-DT_RPATH-for-enable-hardcoded-path-in-tests.patch')
-rw-r--r--Force-DT_RPATH-for-enable-hardcoded-path-in-tests.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/Force-DT_RPATH-for-enable-hardcoded-path-in-tests.patch b/Force-DT_RPATH-for-enable-hardcoded-path-in-tests.patch
new file mode 100644
index 0000000..aff97d9
--- /dev/null
+++ b/Force-DT_RPATH-for-enable-hardcoded-path-in-tests.patch
@@ -0,0 +1,50 @@
+From 249646f12b08f3dbd9a8e8b8021e5c0e3a0b7e1e Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Thu, 9 May 2024 20:07:01 -0700
+Subject: [PATCH] Force DT_RPATH for --enable-hardcoded-path-in-tests
+
+On Fedora 40/x86-64, linker enables --enable-new-dtags by default which
+generates DT_RUNPATH instead of DT_RPATH. Unlike DT_RPATH, DT_RUNPATH
+only applies to DT_NEEDED entries in the executable and doesn't applies
+to DT_NEEDED entries in shared libraries which are loaded via DT_NEEDED
+entries in the executable. Some glibc tests have libstdc++.so.6 in
+DT_NEEDED, which has libm.so.6 in DT_NEEDED. When DT_RUNPATH is generated,
+/lib64/libm.so.6 is loaded for such tests. If the newly built glibc is
+older than glibc 2.36, these tests fail with
+
+assert/tst-assert-c++: /export/build/gnu/tools-build/glibc-gitlab-release/build-x86_64-linux/libc.so.6: version `GLIBC_2.36' not found (required by /lib64/libm.so.6)
+assert/tst-assert-c++: /export/build/gnu/tools-build/glibc-gitlab-release/build-x86_64-linux/libc.so.6: version `GLIBC_ABI_DT_RELR' not found (required by /lib64/libm.so.6)
+
+Pass -Wl,--disable-new-dtags to linker when building glibc tests with
+--enable-hardcoded-path-in-tests. This fixes BZ #31719.
+
+Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
+(cherry picked from commit 2dcaf70643710e22f92a351e36e3cff8b48c60dc)
+---
+ Makeconfig | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/Makeconfig b/Makeconfig
+index 77d7fd14df..3f8acff459 100644
+--- a/Makeconfig
++++ b/Makeconfig
+@@ -586,10 +586,13 @@ link-libc-rpath-link = -Wl,-rpath-link=$(rpath-link)
+ # before the expansion of LDLIBS-* variables).
+
+ # Tests use -Wl,-rpath instead of -Wl,-rpath-link for
+-# build-hardcoded-path-in-tests.
++# build-hardcoded-path-in-tests. Add -Wl,--disable-new-dtags to force
++# DT_RPATH instead of DT_RUNPATH which only applies to DT_NEEDED entries
++# in the executable and doesn't applies to DT_NEEDED entries in shared
++# libraries which are loaded via DT_NEEDED entries in the executable.
+ ifeq (yes,$(build-hardcoded-path-in-tests))
+-link-libc-tests-rpath-link = $(link-libc-rpath)
+-link-test-modules-rpath-link = $(link-libc-rpath)
++link-libc-tests-rpath-link = $(link-libc-rpath) -Wl,--disable-new-dtags
++link-test-modules-rpath-link = $(link-libc-rpath) -Wl,--disable-new-dtags
+ else
+ link-libc-tests-rpath-link = $(link-libc-rpath-link)
+ link-test-modules-rpath-link =
+--
+2.33.0
+