Comment # 7 on bug 1155108 from
While there is a .fini section in libomp.so, the FINI tag in .dynamic is 0x0:

$ readelf -d /usr/lib64/libomp.so

Dynamic section at offset 0xeec80 contains 32 entries:
  Tag        Type                         Name/Value
 [...]
 0x000000000000000c (INIT)               0x1af00
 0x000000000000000d (FINI)               0x0
 [...]

That's why we are reading an offset of zero. Now why does that happen? In
openmp/runtime/cmake/LibompHandleFlags.cmake there is a flag added to LDFLAGS:

    -Wl,-fini=__kmp_internal_end_fini

Now without ThinLTO (which I activated with LLVM 9), this works fine, but with
ThinLTO the FINI either doesn't appear (with ld.bfd and ld.lld) or is 0x0 (with
ld.gold). That could be a bug in the ThinLTO linker plugin, or maybe -fini is
not supported there. I'm a bit puzzled that the symbol doesn't appear at all in
the final binary, and I fear that it might be optimized out. (LTO has a habit
of doing that, but in this case it shouldn't...)


You are receiving this mail because: