svn commit: r356741 - in head/libexec/rtld-elf: . rtld-libc
Mateusz Guzik
mjg at FreeBSD.org
Wed Jan 15 01:30:33 UTC 2020
Author: mjg
Date: Wed Jan 15 01:30:32 2020
New Revision: 356741
URL: https://svnweb.freebsd.org/changeset/base/356741
Log:
rtld: remove hand rolled memset and bzero
They were introduced to take care of ifunc, but right now no architecture
provides ifunc'ed variants. Since rtld uses memset extensively this results in
a pessmization. Should someone want to use ifunc here they should provide a
mandatory symbol (e.g., rtld_memset).
See the review for profiling data.
Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D23176
Modified:
head/libexec/rtld-elf/rtld-libc/Makefile.inc
head/libexec/rtld-elf/rtld.c
Modified: head/libexec/rtld-elf/rtld-libc/Makefile.inc
==============================================================================
--- head/libexec/rtld-elf/rtld-libc/Makefile.inc Wed Jan 15 00:45:05 2020 (r356740)
+++ head/libexec/rtld-elf/rtld-libc/Makefile.inc Wed Jan 15 01:30:32 2020 (r356741)
@@ -40,9 +40,9 @@ CFLAGS.errlst.c+=-I${LIBC_SRCTOP}/include
# Use the string and memory .o files from libc instead of rebuilding them (they
# might be using optimized assembly and duplicating that logic here is awkward).
-_libc_string_objects= bcmp bcopy memchr memcmp memcpy memmove stpncpy strcat \
- strchr strcmp stpcpy strcpy strcspn strdup strlcat strlcpy strlen strncmp \
- strncpy strrchr strsep strspn strstr strtok
+_libc_string_objects= bcmp bcopy bzero memset memchr memcmp memcpy memmove \
+ stpncpy strcat strchr strcmp stpcpy strcpy strcspn strdup strlcat strlcpy \
+ strlen strncmp strncpy strrchr strsep strspn strstr strtok
# Also use all the syscall .o files from libc_nossp_pic:
_libc_other_objects= sigsetjmp lstat stat fstat fstatat fstatfs syscall \
cerror geteuid getegid munmap mprotect sysarch __sysctl issetugid __getcwd \
Modified: head/libexec/rtld-elf/rtld.c
==============================================================================
--- head/libexec/rtld-elf/rtld.c Wed Jan 15 00:45:05 2020 (r356740)
+++ head/libexec/rtld-elf/rtld.c Wed Jan 15 01:30:32 2020 (r356741)
@@ -5729,28 +5729,6 @@ rtld_strerror(int errnum)
return (sys_errlist[errnum]);
}
-/*
- * No ifunc relocations.
- */
-void *
-memset(void *dest, int c, size_t len)
-{
- size_t i;
-
- for (i = 0; i < len; i++)
- ((char *)dest)[i] = c;
- return (dest);
-}
-
-void
-bzero(void *dest, size_t len)
-{
- size_t i;
-
- for (i = 0; i < len; i++)
- ((char *)dest)[i] = 0;
-}
-
/* malloc */
void *
malloc(size_t nbytes)
More information about the svn-src-all
mailing list