[libc-commits] [libc] [libc] implement vdso (PR #91572)

Schrodinger ZHU Yifan via libc-commits libc-commits at lists.llvm.org
Thu May 9 09:33:05 PDT 2024


SchrodingerZhu wrote:

```bash
strace ./projects/libc/test/src/__support/OSUtil/linux/libc.test.src.__support.OSUtil.linux.vdso_test.__hermetic__.__build__ 
```
On x86, the above line should generate no `syscall` for `gettimeofday`, which is indeed the case:
```
execve("./projects/libc/test/src/__support/OSUtil/linux/libc.test.src.__support.OSUtil.linux.vdso_test.__hermetic__.__build__", ["./projects/libc/test/src/__suppo"...], 0x7fffea955d20 /* 45 vars */) = 0
gettid()                                = 2701205
mmap(NULL, 41064, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7a9d7cdd6000
getrandom("\xca\x7c\xd2\xa3\x43\x65\x83\xfb", 8, 0) = 8
arch_prctl(ARCH_SET_FS, 0x7a9d7cde0038) = 0
write(2, "\33[32m", 5)                  = 5
write(2, "[ RUN      ] ", 13[ RUN      ] )           = 13
write(2, "\33[0m", 4)                   = 4
write(2, "LlvmLibcOSUtilVDSOTest.SymbolsDe"..., 37LlvmLibcOSUtilVDSOTest.SymbolsDefined) = 37
write(2, "\n", 1
)                       = 1
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {tv_sec=0, tv_nsec=696960}) = 0
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {tv_sec=0, tv_nsec=718680}) = 0
write(2, "\33[32m", 5)                  = 5
write(2, "[       OK ] ", 13[       OK ] )           = 13
write(2, "\33[0m", 4)                   = 4
write(2, "LlvmLibcOSUtilVDSOTest.SymbolsDe"..., 37LlvmLibcOSUtilVDSOTest.SymbolsDefined) = 37
write(2, " (took ", 7 (took )                  = 7
write(2, "22", 222)                       = 2
write(2, " us)\n", 5 us)
)                   = 5
write(2, "\33[32m", 5)                  = 5
write(2, "[ RUN      ] ", 13[ RUN      ] )           = 13
write(2, "\33[0m", 4)                   = 4
write(2, "LlvmLibcOSUtilVDSOTest.GetTimeOf"..., 35LlvmLibcOSUtilVDSOTest.GetTimeOfDay) = 35
write(2, "\n", 1
)                       = 1
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {tv_sec=0, tv_nsec=863630}) = 0
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {tv_sec=0, tv_nsec=883420}) = 0
write(2, "\33[32m", 5)                  = 5
write(2, "[       OK ] ", 13[       OK ] )           = 13
write(2, "\33[0m", 4)                   = 4
write(2, "LlvmLibcOSUtilVDSOTest.GetTimeOf"..., 35LlvmLibcOSUtilVDSOTest.GetTimeOfDay) = 35
write(2, " (took ", 7 (took )                  = 7
write(2, "20", 220)                       = 2
write(2, " us)\n", 5 us)
)                   = 5
write(2, "Ran ", 4Ran )                     = 4
write(2, "2", 12)                        = 1
write(2, " tests. ", 8 tests. )                 = 8
write(2, " PASS: ", 7 PASS: )                  = 7
write(2, "2", 12)                        = 1
write(2, " ", 1 )                        = 1
write(2, " FAIL: ", 7 FAIL: )                  = 7
write(2, "0", 10)                        = 1
write(2, "\n", 1
)                       = 1
munmap(0x7a9d7cde0038, 41064)           = -1 EINVAL (Invalid argument)
exit_group(0)                           = ?
+++ exited with 0 +++
```
 

https://github.com/llvm/llvm-project/pull/91572


More information about the libc-commits mailing list