Ramkumar Ramachandra
2014-Dec-29 00:43 UTC
[LLVMdev] Symlink to llvm-config returns wrong results on Linux
It should be noted that a symlink to the built llvm-config will return the paths for the system llvm instead of the built llvm; it's fine on OS X though. Some differences in realpath?
Ramkumar Ramachandra
2014-Dec-29 01:47 UTC
[LLVMdev] Symlink to llvm-config returns wrong results on Linux
The strace doesn't make any sense either. $ strace llvm-config --src-root execve("/home/artagnon/bin/llvm-config", ["llvm-config", "--src-root"], [/* 40 vars */]) = 0 brk(0) = 0x19f7000 readlink("/proc/self/exe", "/home/artagnon/src/rhine/llvm/De"..., 4096) = 59 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7e48f49000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/home/artagnon/src/rhine/llvm/Debug+Asserts/bin/../lib/tls/x86_64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/home/artagnon/src/rhine/llvm/Debug+Asserts/bin/../lib/tls/x86_64", 0x7fff283fb470) = -1 ENOENT (No such file or directory) open("/home/artagnon/src/rhine/llvm/Debug+Asserts/bin/../lib/tls/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/home/artagnon/src/rhine/llvm/Debug+Asserts/bin/../lib/tls", 0x7fff283fb470) = -1 ENOENT (No such file or directory) open("/home/artagnon/src/rhine/llvm/Debug+Asserts/bin/../lib/x86_64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/home/artagnon/src/rhine/llvm/Debug+Asserts/bin/../lib/x86_64", 0x7fff283fb470) = -1 ENOENT (No such file or directory) open("/home/artagnon/src/rhine/llvm/Debug+Asserts/bin/../lib/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/home/artagnon/src/rhine/llvm/Debug+Asserts/bin/../lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 open("/usr/local/lib/tls/x86_64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/local/lib/tls/x86_64", 0x7fff283fb470) = -1 ENOENT (No such file or directory) open("/usr/local/lib/tls/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/local/lib/tls", 0x7fff283fb470) = -1 ENOENT (No such file or directory) open("/usr/local/lib/x86_64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/local/lib/x86_64", 0x7fff283fb470) = -1 ENOENT (No such file or directory) open("/usr/local/lib/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/local/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 open("/home/artagnon/src/linux/tools/perf/tls/x86_64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/home/artagnon/src/linux/tools/perf/tls/x86_64", 0x7fff283fb470) = -1 ENOENT (No such file or directory) open("/home/artagnon/src/linux/tools/perf/tls/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/home/artagnon/src/linux/tools/perf/tls", 0x7fff283fb470) = -1 ENOENT (No such file or directory) open("/home/artagnon/src/linux/tools/perf/x86_64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/home/artagnon/src/linux/tools/perf/x86_64", 0x7fff283fb470) -1 ENOENT (No such file or directory) open("/home/artagnon/src/linux/tools/perf/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/home/artagnon/src/linux/tools/perf", 0x7fff283fb470) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=34644, ...}) = 0 mmap(NULL, 34644, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f7e48f40000 close(3) = 0 open("/usr/lib/libz.so.1", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000#\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=88592, ...}) = 0 mmap(NULL, 2183688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7e48b17000 mprotect(0x7f7e48b2c000, 2093056, PROT_NONE) = 0 mmap(0x7f7e48d2b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7f7e48d2b000 close(3) = 0 open("/home/artagnon/src/rhine/llvm/Debug+Asserts/bin/../lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/local/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300`\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=138242, ...}) = 0 mmap(NULL, 2208912, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7e488fb000 mprotect(0x7f7e48912000, 2093056, PROT_NONE) = 0 mmap(0x7f7e48b11000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7f7e48b11000 mmap(0x7f7e48b13000, 13456, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f7e48b13000 close(3) = 0 open("/home/artagnon/src/rhine/llvm/Debug+Asserts/bin/../lib/libedit.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/local/lib/libedit.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/lib/libedit.so.0", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \326\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=230080, ...}) = 0 mmap(NULL, 2340544, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7e486bf000 mprotect(0x7f7e486f5000, 2093056, PROT_NONE) = 0 mmap(0x7f7e488f4000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x35000) = 0x7f7e488f4000 mmap(0x7f7e488f7000, 14016, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f7e488f7000 close(3) = 0 open("/home/artagnon/src/rhine/llvm/Debug+Asserts/bin/../lib/libncursesw.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/local/lib/libncursesw.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/lib/libncursesw.so.5", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0P\1\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=411648, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7e48f3f000 mmap(NULL, 2508816, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7e4845a000 mprotect(0x7f7e484b9000, 2097152, PROT_NONE) = 0 mmap(0x7f7e486b9000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5f000) = 0x7f7e486b9000 close(3) = 0 open("/home/artagnon/src/rhine/llvm/Debug+Asserts/bin/../lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/local/lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\16\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=14648, ...}) = 0 mmap(NULL, 2109712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7e48256000 mprotect(0x7f7e48259000, 2093056, PROT_NONE) = 0 mmap(0x7f7e48458000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f7e48458000 close(3) = 0 open("/home/artagnon/src/rhine/llvm/Debug+Asserts/bin/../lib/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/local/lib/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/lib/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\271\5\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1486871, ...}) = 0 mmap(NULL, 3204768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7e47f47000 mprotect(0x7f7e48037000, 2097152, PROT_NONE) = 0 mmap(0x7f7e48237000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xf0000) = 0x7f7e48237000 mmap(0x7f7e48241000, 83616, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f7e48241000 close(3) = 0 open("/home/artagnon/src/rhine/llvm/Debug+Asserts/bin/../lib/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/local/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200U\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1067432, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7e48f3e000 mmap(NULL, 3162456, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7e47c42000 mprotect(0x7f7e47d45000, 2097152, PROT_NONE) = 0 mmap(0x7f7e47f45000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x103000) = 0x7f7e47f45000 close(3) = 0 open("/home/artagnon/src/rhine/llvm/Debug+Asserts/bin/../lib/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/local/lib/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/lib/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260*\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=544468, ...}) = 0 mmap(NULL, 2185952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7e47a2c000 mprotect(0x7f7e47a42000, 2093056, PROT_NONE) = 0 mmap(0x7f7e47c41000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7f7e47c41000 close(3) = 0 open("/home/artagnon/src/rhine/llvm/Debug+Asserts/bin/../lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/local/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\1\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1984416, ...}) = 0 mmap(NULL, 3813200, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7e47689000 mprotect(0x7f7e47822000, 2097152, PROT_NONE) = 0 mmap(0x7f7e47a22000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x199000) = 0x7f7e47a22000 mmap(0x7f7e47a28000, 16208, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f7e47a28000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7e48f3d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7e48f3c000 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7e48f3a000 arch_prctl(ARCH_SET_FS, 0x7f7e48f3a740) = 0 mprotect(0x7f7e47a22000, 16384, PROT_READ) = 0 mprotect(0x7f7e47f45000, 4096, PROT_READ) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7e48f39000 mprotect(0x7f7e48237000, 32768, PROT_READ) = 0 mprotect(0x7f7e48458000, 4096, PROT_READ) = 0 mprotect(0x7f7e486b9000, 16384, PROT_READ) = 0 mprotect(0x7f7e488f4000, 8192, PROT_READ) = 0 mprotect(0x7f7e48b11000, 4096, PROT_READ) = 0 mprotect(0x7f7e48d2b000, 4096, PROT_READ) = 0 mprotect(0x7f7e48f4e000, 4096, PROT_READ) = 0 munmap(0x7f7e48f40000, 34644) = 0 set_tid_address(0x7f7e48f3aa10) = 24365 set_robust_list(0x7f7e48f3aa20, 24) = 0 rt_sigaction(SIGRTMIN, {0x7f7e48900b90, [], SA_RESTORER|SA_SIGINFO, 0x7f7e4890b210}, NULL, 8) = 0 rt_sigaction(SIGRT_1, {0x7f7e48900c20, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7f7e4890b210}, NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 brk(0) = 0x19f7000 brk(0x1a18000) = 0x1a18000 access("/proc/self/exe", F_OK) = 0 readlink("/proc/self/exe", "/home/artagnon/src/rhine/llvm/De"..., 4096) = 59 stat("/home/artagnon/src/rhine/llvm/Debug+Asserts", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 stat("/home/artagnon/src/rhine/llvm/Debug+Asserts", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 lseek(1, 0, SEEK_CUR) = 11998 fstat(1, {st_mode=S_IFREG|0644, st_size=12035, ...}) = 0 write(1, "/home/artagnon/src/rhine/llvm\n", 30/home/artagnon/src/rhine/llvm ) = 30 rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0 close(1) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 exit_group(0) = ? +++ exited with 0 +++ $ llvm-config --src-root /build/llvm/src/llvm-3.5.0.src
Eric Christopher
2015-Jan-05 19:51 UTC
[LLVMdev] Symlink to llvm-config returns wrong results on Linux
Either I'm not seeing this or not sure what you mean, could you post an example set of commands that shows what you're trying to highlight? -eric On Sun Dec 28 2014 at 4:44:14 PM Ramkumar Ramachandra <artagnon at gmail.com> wrote:> It should be noted that a symlink to the built llvm-config will return > the paths for the system llvm instead of the built llvm; it's fine on > OS X though. Some differences in realpath? >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150105/3d671f9b/attachment.html>
Ramkumar Ramachandra
2015-Jan-05 20:15 UTC
[LLVMdev] Symlink to llvm-config returns wrong results on Linux
It seemed to be a very strange caching issue: on my VM, in two sequential commands, one call to llvm-config would go to the system-built one (when I tried it plain), and another would go to the symlink in my PATH (when I tried it with strace). I can't reproduce it anymore, and I still don't know what caused the Linux system to behave so unpredictably. Anyway, it's not an LLVM issue. Thanks for prodding me to post a conclusion.