[llvm] [llvm-symbolizer] Recognize AIX big archive (PR #150401)

James Henderson via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 19 01:21:52 PDT 2025


jh7370 wrote:

> > I've taken a step back and given more thought to this feature in general. Here are some points/questions.
> > Is there an AIX tool that uses this syntax already?
> 
> Yes. This is accepted by the linker for specifying the shared object to expect symbols from at load time (https://www.ibm.com/docs/en/aix/7.3.0?topic=l-ld-command; search for `#! path/file (member)`). Indeed, this is a standard syntax for specifying archive members to utilities (https://pubs.opengroup.org/onlinepubs/9799919799/utilities/make.html; search `lib(member.o)`).

Sounds good, thanks!

> > I've also thought of an edge case for existing behaviour that this breaks, since there's technically nothing stopping an input file having a name in the form `abc(def)`. I _think_ we can probably say that this is unlikely enough that we can ignore it, but if there's a way we could still support this case, that would be ideal. My feeling is that you could try one path (e.g. treating it as an explicit filename) and if that doesn't work, fall back to the other path. Alternatively, adding a command-line option might solve this option. However, I could also be persuaded that it's not worth worrying about this case.
> 
> As the syntax is standard, the same ambiguity exists for POSIX `make`.

Fair enough.
 
> > Finally, what are you actually trying to achieve with this feature? llvm-symbolizer isn't used for symbolizing relocatable objects, which are generally what are stored in archives, it's for symbolizing executable and shared objects, which are not stored in archives normally.
> 
> Shared objects are normally stored in (and loaded from) archives on AIX. By convention, the same (big format) archive contains both 32-bit and 64-bit objects.

Thanks for the info!

https://github.com/llvm/llvm-project/pull/150401


More information about the llvm-commits mailing list