memoize access to /etc/ld.so.nohwcap ?
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
eglibc (Ubuntu) |
Confirmed
|
Undecided
|
Unassigned |
Bug Description
Is it really necessary to check for ld.so.nohwcap for each required library of a program ?
See for example: `strace ls /dev/null`, it's called 8 times for no benefits.
-------------
execve("/bin/ls", ["ls", "/dev/null"], [/* 17 vars */]) = 0
brk(0) = 0x8e9b000
access(
mmap2(NULL, 8192, PROT_READ|
access(
open("/
fstat64(3, {st_mode=
mmap2(NULL, 22877, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb770c000
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat64(3, {st_mode=
mmap2(NULL, 33364, PROT_READ|
mmap2(0xb770a000, 8192, PROT_READ|
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat64(3, {st_mode=
mmap2(NULL, 109432, PROT_READ|
mmap2(0xb7701000, 8192, PROT_READ|
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat64(3, {st_mode=
mmap2(NULL, 4096, PROT_READ|
mmap2(NULL, 28964, PROT_READ|
mmap2(0xb76e5000, 8192, PROT_READ|
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat64(3, {st_mode=
mmap2(NULL, 1415592, PROT_READ|
mprotect(
mmap2(0xb76d9000, 12288, PROT_READ|
mmap2(0xb76dc000, 10664, PROT_READ|
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat64(3, {st_mode=
mmap2(NULL, 98792, PROT_READ|
mmap2(0xb7581000, 8192, PROT_READ|
mmap2(0xb7583000, 4584, PROT_READ|
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat64(3, {st_mode=
mmap2(NULL, 12408, PROT_READ|
mmap2(0xb756a000, 8192, PROT_READ|
close(3) = 0
access(
open("/
read(3, "\177ELF\
fstat64(3, {st_mode=
mmap2(NULL, 20588, PROT_READ|
mmap2(0xb7566000, 8192, PROT_READ|
close(3) = 0
mmap2(NULL, 4096, PROT_READ|
mmap2(NULL, 4096, PROT_READ|
set_thread_
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(
mprotect(0x8060000, 4096, PROT_READ) = 0
mprotect(
munmap(0xb770c000, 22877) = 0
set_tid_
set_robust_
futex(0xbfbcdc90, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0xbfbcdc90, FUTEX_WAIT_
rt_sigaction(
rt_sigaction(
rt_sigprocmask(
getrlimit(
uname({sys="Linux", node="vagrantup", ...}) = 0
statfs64(
brk(0) = 0x8e9b000
brk(0x8ebc000) = 0x8ebc000
open("/
fstat64(3, {st_mode=
mmap2(NULL, 4096, PROT_READ|
read(3, "nodev\
read(3, "", 1024) = 0
close(3) = 0
munmap(0xb7711000, 4096) = 0
open("/
open("/
fstat64(3, {st_mode=
mmap2(NULL, 4096, PROT_READ|
read(3, "# Locale name alias data base.\n#"..., 4096) = 2570
read(3, "", 4096) = 0
close(3) = 0
munmap(0xb7711000, 4096) = 0
open("/
open("/
fstat64(3, {st_mode=
mmap2(NULL, 373, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7711000
close(3) = 0
open("/
fstat64(3, {st_mode=
mmap2(NULL, 26048, PROT_READ, MAP_SHARED, 3, 0) = 0xb7559000
close(3) = 0
futex(0xb76dba8c, FUTEX_WAKE_PRIVATE, 2147483647) = 0
open("/
open("/
fstat64(3, {st_mode=
mmap2(NULL, 23, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7710000
close(3) = 0
open("/
open("/
fstat64(3, {st_mode=
mmap2(NULL, 59, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb770f000
close(3) = 0
open("/
open("/
fstat64(3, {st_mode=
mmap2(NULL, 155, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb770e000
close(3) = 0
open("/
open("/
fstat64(3, {st_mode=
mmap2(NULL, 77, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb770d000
close(3) = 0
open("/
open("/
fstat64(3, {st_mode=
mmap2(NULL, 34, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb770c000
close(3) = 0
open("/
open("/
fstat64(3, {st_mode=
close(3) = 0
open("/
fstat64(3, {st_mode=
mmap2(NULL, 57, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7558000
close(3) = 0
open("/
open("/
fstat64(3, {st_mode=
mmap2(NULL, 286, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7557000
close(3) = 0
open("/
open("/
fstat64(3, {st_mode=
mmap2(NULL, 1170770, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7439000
close(3) = 0
open("/
open("/
fstat64(3, {st_mode=
mmap2(NULL, 2454, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7438000
close(3) = 0
open("/
open("/
fstat64(3, {st_mode=
mmap2(NULL, 54, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7437000
close(3) = 0
open("/
open("/
fstat64(3, {st_mode=
mmap2(NULL, 256324, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb73f8000
close(3) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfbcdb28) = -1 ENOTTY (Inappropriate ioctl for device)
ioctl(1, TIOCGWINSZ, 0xbfbcdc80) = -1 ENOTTY (Inappropriate ioctl for device)
stat64("/dev/null", {st_mode=
lstat64(
fstat64(1, {st_mode=
mmap2(NULL, 4096, PROT_READ|
write(1, "/dev/null\n", 10/dev/null
) = 10
close(1) = 0
munmap(0xb73f7000, 4096) = 0
close(2) = 0
exit_group(0) = ?
Changed in eglibc (Ubuntu): | |
status: | New → Confirmed |