diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | sysdeps/sparc/sparc32/Makefile | 6 | ||||
-rw-r--r-- | sysdeps/sparc/sparc32/sparcv8/udiv.S | 1 | ||||
-rw-r--r-- | sysdeps/sparc/sparc32/sparcv9/udiv.S | 1 | ||||
-rw-r--r-- | sysdeps/sparc/sparc32/udiv.S | 1 |
5 files changed, 15 insertions, 0 deletions
@@ -1,5 +1,11 @@ 2017-04-05 Adhemerval Zanella <adhemerval.zanella@linaro.org> + * 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. + * sysdeps/i386/symbol-hacks.h: New file. * sysdeps/m68k/symbol-hacks.h: New file. * sysdeps/powerpc/powerpc32/symbol-hacks.h: New file. 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) |