Currently I'm working to upgrade libfaketime in chromeos package system to the latest version (0.9.10).
However, I'm stumbling upon these linker errors:
ld.lld: error: libfaketimeMT.o: symbol pthread_cond_timedwait@@ has undefined version
ld.lld: error: libfaketimeMT.o: symbol pthread_cond_init@@ has undefined version
ld.lld: error: libfaketimeMT.o: symbol pthread_cond_destroy@@ has undefined version
ld.lld: error: libfaketime.o: symbol pthread_cond_timedwait@@ has undefined version
ld.lld: error: libfaketime.o: symbol pthread_cond_init@@ has undefined version
ld.lld: error: libfaketime.o: symbol pthread_cond_destroy@@ has undefined version
I see that this only happens when cross-compiling (I'm using cross-compilers) for arm target (arm & arm64), and I found this piece of codes that basically saying that all arm target must be using this "FORCE_PTHREAD_NONVER" (since this is the only use of FORCE_PTHREAD_NONVER)
from the linker errors, what I see is the linker just don't understand where to find this "nonversioned" pthread related functions, is this interpretation accurate?
I know that by simply removing FAKE_PTHREAD from the compiler flags will make all these errors disappears ((while also making the fake pthread feature itself disappear)), but I'm very curious about this as from what I see, the codes can compile just fine on debian arm, arm64, etc. I'm wondering if there is something missing from our cross-compilers configuration or something.
I've looked up the documentations of linker version scripts and the .symver pseudo-op, but I just can't seem to understand the "base nonversion" part, do someone mind explaining what is happening in these asm line of codes?
Hi,
Currently I'm working to upgrade libfaketime in chromeos package system to the latest version (0.9.10). However, I'm stumbling upon these linker errors:
I see that this only happens when cross-compiling (I'm using cross-compilers) for arm target (arm & arm64), and I found this piece of codes that basically saying that all arm target must be using this "FORCE_PTHREAD_NONVER" (since this is the only use of FORCE_PTHREAD_NONVER)
from the linker errors, what I see is the linker just don't understand where to find this "nonversioned" pthread related functions, is this interpretation accurate?
I know that by simply removing FAKE_PTHREAD from the compiler flags will make all these errors disappears ((while also making the fake pthread feature itself disappear)), but I'm very curious about this as from what I see, the codes can compile just fine on debian arm, arm64, etc. I'm wondering if there is something missing from our cross-compilers configuration or something.
I've looked up the documentations of linker version scripts and the .symver pseudo-op, but I just can't seem to understand the "base nonversion" part, do someone mind explaining what is happening in these asm line of codes?