summaryrefslogtreecommitdiff
path: root/src/string
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2015-04-18 20:45:39 -0400
committerRich Felker <dalias@aerifal.cx>2015-04-18 20:45:39 -0400
commit8ed66ecbcba1dd0f899f22b534aac92a282f42d5 (patch)
tree2ed0c71c33c29f7e6f407a8ca8aa1265c878292c /src/string
parent01d42747118522b7a486ece1736b93c6d5751344 (diff)
downloadmusl-8ed66ecbcba1dd0f899f22b534aac92a282f42d5.tar.gz
musl-8ed66ecbcba1dd0f899f22b534aac92a282f42d5.tar.bz2
musl-8ed66ecbcba1dd0f899f22b534aac92a282f42d5.tar.xz
musl-8ed66ecbcba1dd0f899f22b534aac92a282f42d5.zip
remove the last of possible-textrels from i386 asm
none of these are actual textrels because of ld-time binding performed by -Bsymbolic-functions, but I'm changing them with the goal of making ld-time binding purely an optimization rather than relying on it for semantic purposes. in the case of memmove's call to memcpy, making it explicit that the memmove asm is assuming the forward-copying behavior of the memcpy asm is desirable anyway; in case memcpy is ever changed, the semantic mismatch would be apparent while editing memmcpy.s.
Diffstat (limited to 'src/string')
-rw-r--r--src/string/i386/memcpy.s3
-rw-r--r--src/string/i386/memmove.s3
2 files changed, 5 insertions, 1 deletions
diff --git a/src/string/i386/memcpy.s b/src/string/i386/memcpy.s
index b2977c89..0608dd83 100644
--- a/src/string/i386/memcpy.s
+++ b/src/string/i386/memcpy.s
@@ -1,6 +1,9 @@
.global memcpy
+.global __memcpy_fwd
+.hidden __memcpy_fwd
.type memcpy,@function
memcpy:
+__memcpy_fwd:
push %esi
push %edi
mov 12(%esp),%edi
diff --git a/src/string/i386/memmove.s b/src/string/i386/memmove.s
index 6e6cc8e3..2a6a504b 100644
--- a/src/string/i386/memmove.s
+++ b/src/string/i386/memmove.s
@@ -4,7 +4,8 @@ memmove:
mov 4(%esp),%eax
sub 8(%esp),%eax
cmp 12(%esp),%eax
- jae memcpy
+.hidden __memcpy_fwd
+ jae __memcpy_fwd
push %esi
push %edi
mov 12(%esp),%edi