summaryrefslogtreecommitdiff
path: root/patches/glibc/2.25/961-sparc-extra-plt-call.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/glibc/2.25/961-sparc-extra-plt-call.patch')
-rw-r--r--patches/glibc/2.25/961-sparc-extra-plt-call.patch65
1 files changed, 0 insertions, 65 deletions
diff --git a/patches/glibc/2.25/961-sparc-extra-plt-call.patch b/patches/glibc/2.25/961-sparc-extra-plt-call.patch
deleted file mode 100644
index 3781cf0..0000000
--- a/patches/glibc/2.25/961-sparc-extra-plt-call.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-commit bdc543e338281da051b3dc06eae96c330a485ce6
-Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
-Date: Thu Mar 16 09:15:57 2017 -0300
-
- sparc: Fix .udiv plt on libc
-
- With the removal of divdi3 object from sparcv9-linux-gnu build, its
- definition came from libgcc and its functions internall calls .udiv.
- Since glibc also exports these symbols for compatibility reasons, it
- will end up creating PLT calls internally in libc.so.
-
- To avoid it, this patch uses the linker option --wrap to replace all
- the internal libc.so .udiv calls to the wrapper __wrap_.udiv. Along
- with strong alias in the udiv implementations, it makes linker do
- local calls.
-
- Checked on sparcv9-linux-gnu.
-
- * sysdeps/sparc/sparc32/Makefile (libc.so-gnulib): New rule.
- * sysdeps/sparc/sparc32/sparcv8/udiv.S (.udiv): Make a strong_alias
- to __wrap_.udiv.
- * sysdeps/sparc/sparc32/sparcv9/udiv.S (.udiv): Likewise.
- * sysdeps/sparc/sparc32/udiv.S (.udiv): Likewise.
-
-diff --git a/sysdeps/sparc/sparc32/Makefile b/sysdeps/sparc/sparc32/Makefile
-index da205898cf..14d6e03c6f 100644
---- a/sysdeps/sparc/sparc32/Makefile
-+++ b/sysdeps/sparc/sparc32/Makefile
-@@ -47,3 +47,9 @@ $(divrem:%=$(sysdep_dir)/sparc/sparc32/%.S): $(sysdep_dir)/sparc/sparc32/divrem.
- mv -f $@-tmp $@
-
- sysdep-realclean := $(sysdep-realclean) $(divrem:%=sysdeps/sparc/sparc32/%.S)
-+
-+# libgcc __divdi3 and __moddi3 uses .udiv and since it is also exported by
-+# libc.so linker will create PLTs for the symbol. To avoid it we strong alias
-+# the exported libc one to __wrap_.udiv and use linker option --wrap to make any
-+# call to .udiv to call the wrapper symbol.
-+libc.so-gnulib += -Wl,--wrap=.udiv
-diff --git a/sysdeps/sparc/sparc32/sparcv8/udiv.S b/sysdeps/sparc/sparc32/sparcv8/udiv.S
-index d71954351e..e9cab4e4ef 100644
---- a/sysdeps/sparc/sparc32/sparcv8/udiv.S
-+++ b/sysdeps/sparc/sparc32/sparcv8/udiv.S
-@@ -13,3 +13,4 @@ ENTRY(.udiv)
- udiv %o0, %o1, %o0
-
- END(.udiv)
-+strong_alias (.udiv, __wrap_.udiv)
-diff --git a/sysdeps/sparc/sparc32/sparcv9/udiv.S b/sysdeps/sparc/sparc32/sparcv9/udiv.S
-index de79899756..368f85ede2 100644
---- a/sysdeps/sparc/sparc32/sparcv9/udiv.S
-+++ b/sysdeps/sparc/sparc32/sparcv9/udiv.S
-@@ -15,3 +15,4 @@ ENTRY(.udiv)
- udiv %o0, %o1, %o0
-
- END(.udiv)
-+strong_alias (.udiv, __wrap_.udiv)
-diff --git a/sysdeps/sparc/sparc32/udiv.S b/sysdeps/sparc/sparc32/udiv.S
-index 8dfff66158..ade0afdf40 100644
---- a/sysdeps/sparc/sparc32/udiv.S
-+++ b/sysdeps/sparc/sparc32/udiv.S
-@@ -344,3 +344,4 @@ LOC(got_result):
- mov %o2, %o0
-
- END(.udiv)
-+strong_alias (.udiv, __wrap_.udiv)