[llvm-dev] Extending llvm-objcopy to support Mach-O

James Henderson via llvm-dev
Tue, 02 Oct 2018 09:19:15 -0000

This sounds reasonable to me. I have no objection on this being
pursued currently. I may have some comments about the design once we
have a first version of a patch up for review, though, as it'll be
easier to visualise.

James
On Tue, 2 Oct 2018 at 00:27, Jake Ehrlich <jakehehrlich at google.com>
wrote:
>
> This organization is what I've had in mind for a while. I'd like to
see a good proposal for how to reorganize HandleArgs to work for different
architectures so that CopyConfig and friends can be shared across different fipe
formats. That can be worked out in review though.
>
> I'm in full support.
>
> On Mon, Oct 1, 2018, 4:11 PM Alexander Shaposhnikov
<alexander.v.shaposhnikov at gmail.com> wrote:
>>
>> Hey everyone! Objcopy is a powerful tool that allows one to modify
object files in various manners, for example, modify symbols / symbol tables or
copy / remove particular parts of a binary. It also serves as a basis for the
strip tool.
>> Currently, llvm-objcopy only supports ELF files while binutils'
objcopy can handle Mach-O files as well. Besides extending the existing tool to
support Mach-O binaries this would enable us to build LLVM-based replacements
for cctools' install_name_tool (for changing rpath(s), identification name
etc) and lipo / libtool (for manipulating "fat" binaries) similarly to
how llvm-strip was implemented on top of llvm-objcopy. Regarding the code
organization, probably, in this case we will have separate folders: ELF, MachO
and maybe a few top-level files (ObjcopyOpts.td, StripOpts.td). Any thoughts,
concerns, or strong preferences ? Kind regards, Alex