Opened 6 years ago
#791 new defect
dlsym/dl_get_public_fib_var test fails on ppc32
Reported by: | Jiri Svoboda | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | helenos/unspecified | Version: | mainline |
Keywords: | Cc: | ||
Blocker for: | Depends on: | ||
See also: |
Description
On ppc32 with optimization -O2/-O3 and a static thread-local variable, the compiler/linker generates code that subtracts 32 K bias from address returned from function __tls_get_addr
. This seems to be consistent with the PowerPC SysV ABI.
However, for non-static thread-local variable, the bias is not subtracted. This leads to dltest failing or crashing in the public fibril var test(s).
Also for -O0 there is no bias subtracted.
I can reproduce this with a simple code snippet compiled by hand with trivial compiler arguments and either using ppc-helenos or ppc-linux-gnu (from upstream gcc-8.2.0) cross-compiler.
I believe this is a bug in GCC. I filed GCC bug 88962.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88962
This ticket is for tracking purposes.