[lld-macho] Implement -dependency_info (partially - more opcodes needed)
authorVy Nguyen <vyng@google.com>
Fri, 12 Mar 2021 22:40:37 +0000 (17:40 -0500)
committerVy Nguyen <vyng@google.com>
Sun, 21 Mar 2021 18:35:46 +0000 (14:35 -0400)
commitc53a1322f329e29446c7625da423f58f09ec1a55
treecee17b44e003539abfc727312642c1f1188c1390
parent30080b003e75969155b5baa993b6ffdab602a5ff
[lld-macho] Implement -dependency_info (partially - more opcodes needed)

Bug: https://bugs.llvm.org/show_bug.cgi?id=49278
The flag is not well documented, so this implementation is based on observed behaviour.

When specified, `-dependency_info <path>` produced a text file containing information pertaining to the current linkage, such as input files, output file, linker version, etc.

This file's layout is also not documented, but it seems to be a series of null ('\0') terminated strings in the form `<op code><path>`

`<op code>` could be:
   `0x00` : linker version
   `0x10` : input
   `0x11` : files not found(??)
   `0x40` : output

`<path>` : is the file path, except for the linker-version case.

(??) This part is a bit unclear. I think it means all the files the linker attempted to look at, but could not find.

Differential Revision: https://reviews.llvm.org/D98559
lld/MachO/Driver.cpp
lld/MachO/Driver.h
lld/MachO/DriverUtils.cpp
lld/MachO/Options.td
lld/test/MachO/Inputs/DependencyDump.py [new file with mode: 0644]
lld/test/MachO/dependency-info.s [new file with mode: 0644]