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
This commit is contained in:
Mateusz Guzik 2020-01-15 01:30:32 +00:00
parent a107ddbb83
commit da8e950a27
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=356741
2 changed files with 3 additions and 25 deletions

View File

@ -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 \

View File

@ -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)