[llvm-dev] contributing llvm-install-name-tool

Alexander Shaposhnikov via llvm-dev llvm-dev at lists.llvm.org
Fri Oct 11 10:31:42 PDT 2019

Hey everyone!
Recently there has been some progress on LLVM-based tools for manipulating
MachO binaries: llvm-objcopy has been gaining a lot of important bits to
support MachO (it's relatively close to the point where one can implement
the strip-like functionality), llvm-lipo is functional and supports most of
cctools' lipo options (https://llvm.org/docs/CommandGuide/llvm-lipo.html).
There is another useful utility called install_name_tool (see e.g.
https://www.unix.com/man-page/osx/1/install_name_tool/ ),
this tool is capable of changing the rpaths, the names of the dependent
shared libraries, etc. The way it works -  install-name-tool (from cctools)
generates the new list of MachO load commands and the new MachO header, the
other parts of the binary are copied over (in particular, if I'm not
mistaken, it assumes that the new "prefix" (MachO header + load commands)
fits into the binary so the offsets don't need to be recalculated,
otherwise suggests to relink the binary with -headerpad /
-headerpad_max_install_names / reports an error).  One possible (and
simple) approach is to implement llvm-install-name-tool in a similar
fashion: use libObject to parse the input binary and rebuild the list of
load commands (analogously to what cctools' install_name_tool does (and
with the same limitations)). I'd like to ask for your general feedback /
thoughts / suggestions on contributing llvm-install-name-tool to LLVM with
the goal to be a drop-in replacement for cctools' install_name_tool.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20191011/66af9dc4/attachment.html>

More information about the llvm-dev mailing list