The “patch” program overrides the “canonicalize” function provided by glibc. The function should be renamed, to avoid future problems if other libraries in the same process images try to use this function. Note: The ELF symbol interposition is not visible on all architectures, I only see it on arhmfp.
This is a replacement function only used when the autoconf test detects that it is not already provided. Perhaps it isn't provided on armhfp, which is why you only see the symbol there? In that case, there won't be any conflicts...
(In reply to Tim Waugh from comment #1) > This is a replacement function only used when the autoconf test detects that > it is not already provided. That's for canonicalize_file_name, I think. > Perhaps it isn't provided on armhfp, which is why you only see the symbol > there? In that case, there won't be any conflicts... I think we are dealing with an *object* (STT_OBJECT) called “canonicalize” (which comes from a global variable in the C code). I don't know why the static linker behaves differently on some architectures. My best guess is that some architectures provide richer relocation types which avoid preemption in this case.
Created attachment 1256384 [details] patch-canonicalize.patch Ah, I see. My copy of ISO C99 must be too old as it doesn't mention this function, but it is mentioned here: https://www.gnu.org/software/libc/manual/html_node/FP-Bit-Twiddling.html#index-canonicalize Attached is a patch which renames this global variable.
This was applied upstream.