https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99814
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Last reconfirmed| |2021-03-30 --- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> --- Thanks for the report. Hm, it's strange as we should request exactly this version of the symbol through the following code path: COMMON_INTERCEPT_FUNCTION_GLIBC_VER_MIN(regexec, "GLIBC_2.3.4"); \ #ifdef __GLIBC__ // If we could not find the versioned symbol, fall back to an unversioned // lookup. This is needed to work around a GLibc bug that causes dlsym // with RTLD_NEXT to return the oldest versioned symbol. // See https://sourceware.org/bugzilla/show_bug.cgi?id=14932. // For certain symbols (e.g. regexec) we have to perform a versioned lookup, // but that versioned symbol will only exist for architectures where the // oldest Glibc version pre-dates support for that architecture. // For example, regexec@GLIBC_2.3.4 exists on x86_64, but not RISC-V. // See also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98920. #define COMMON_INTERCEPT_FUNCTION_GLIBC_VER_MIN(fn, ver) \ COMMON_INTERCEPT_FUNCTION_VER_UNVERSIONED_FALLBACK(fn, ver) #else #define COMMON_INTERCEPT_FUNCTION_GLIBC_VER_MIN(fn, ver) \ COMMON_INTERCEPT_FUNCTION(fn) #endif #define ASAN_INTERCEPT_FUNC_VER_UNVERSIONED_FALLBACK(name, ver) \ do { \ if (!INTERCEPT_FUNCTION_VER(name, ver) && !INTERCEPT_FUNCTION(name)) \ VReport(1, "AddressSanitizer: failed to intercept '%s@@%s' or '%s'\n", \ #name, #ver, #name); \ } while (0) Can you please debug if INTERCEPT_FUNCTION_VER really fails? I'm sorry but I don't have a handy s390 machine.