[llvm] r321980 - [llvm-readobj] Support -needed-libs option for Mach-O files
Hans Wennborg via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 16 07:30:57 PST 2018
Sounds good to me. Merged in r322561.
On Mon, Jan 8, 2018 at 7:36 AM, Shoaib Meenai <smeenai at fb.com> wrote:
> Would it be possible to cherry-pick this to 6.0? The corresponding COFF side
> change (r321498) made it in before the branch cut, and it would be really
> nice if the 6.0 release was able to handle -needed-libs for all three object
> file formats.
>
>
>
> From: llvm-commits <llvm-commits-bounces at lists.llvm.org> on behalf of Petr
> Hosek via llvm-commits <llvm-commits at lists.llvm.org>
> Reply-To: Petr Hosek <phosek at chromium.org>
> Date: Sunday, January 7, 2018 at 6:24 PM
> To: "llvm-commits at lists.llvm.org" <llvm-commits at lists.llvm.org>
> Subject: [llvm] r321980 - [llvm-readobj] Support -needed-libs option for
> Mach-O files
>
>
>
> Author: phosek
>
> Date: Sun Jan 7 18:23:10 2018
>
> New Revision: 321980
>
>
>
> URL:
> https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D321980-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=E2FMyT23FarZeKRKWBGOndodNlyr-x_bTU7LSCiXUc0&s=LQELnKiBH9s1JnAmAAvCU5GfmaHIlafImC2dApuVIE0&e=
>
> Log:
>
> [llvm-readobj] Support -needed-libs option for Mach-O files
>
>
>
> This implements the -needed-libs option in Mach-O dumper.
>
>
>
> Differential Revision:
> https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D41527&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=E2FMyT23FarZeKRKWBGOndodNlyr-x_bTU7LSCiXUc0&s=oKPFZol1WEcNdf6Bm42mErZkMHAwUhJ0sDfG5RIuXNw&e=
>
>
>
> Added:
>
> llvm/trunk/test/tools/llvm-readobj/macho-needed-libs.test
>
> Modified:
>
> llvm/trunk/tools/llvm-readobj/MachODumper.cpp
>
>
>
> Added: llvm/trunk/test/tools/llvm-readobj/macho-needed-libs.test
>
> URL:
> https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_test_tools_llvm-2Dreadobj_macho-2Dneeded-2Dlibs.test-3Frev-3D321980-26view-3Dauto&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=E2FMyT23FarZeKRKWBGOndodNlyr-x_bTU7LSCiXUc0&s=7tYe3o9epnd9-QpdboQ82TWJNLZADNwK01t60ZP2-RQ&e=
>
> ==============================================================================
>
> --- llvm/trunk/test/tools/llvm-readobj/macho-needed-libs.test (added)
>
> +++ llvm/trunk/test/tools/llvm-readobj/macho-needed-libs.test Sun Jan 7
> 18:23:10 2018
>
> @@ -0,0 +1,26 @@
>
> +# RUN: yaml2obj %s -o %t.o
>
> +# RUN: llvm-readobj -needed-libs %t.o | FileCheck %s
>
> +
>
> +# CHECK: NeededLibraries [
>
> +# CHECK-NEXT: /usr/lib/libSystem.B.dylib
>
> +# CHECK-NEXT: ]
>
> +
>
> +!mach-o
>
> +FileHeader:
>
> + magic: 0xFEEDFACF
>
> + cputype: 0x01000007
>
> + cpusubtype: 0x00000003
>
> + filetype: 0x00000001
>
> + ncmds: 1
>
> + sizeofcmds: 56
>
> + flags: 0x00002000
>
> + reserved: 0x00000000
>
> +LoadCommands:
>
> + - cmd: LC_LOAD_DYLIB
>
> + cmdsize: 56
>
> + dylib:
>
> + name: 24
>
> + timestamp: 2
>
> + current_version: 81985536
>
> + compatibility_version: 65536
>
> + PayloadString: /usr/lib/libSystem.B.dylib
>
>
>
> Modified: llvm/trunk/tools/llvm-readobj/MachODumper.cpp
>
> URL:
> https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_tools_llvm-2Dreadobj_MachODumper.cpp-3Frev-3D321980-26r1-3D321979-26r2-3D321980-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=E2FMyT23FarZeKRKWBGOndodNlyr-x_bTU7LSCiXUc0&s=bsrDlom1RmbOzZR9NRB6uDwxoguVOhlUZ1vRtkeyViU&e=
>
> ==============================================================================
>
> --- llvm/trunk/tools/llvm-readobj/MachODumper.cpp (original)
>
> +++ llvm/trunk/tools/llvm-readobj/MachODumper.cpp Sun Jan 7 18:23:10 2018
>
> @@ -39,6 +39,8 @@ public:
>
> void printUnwindInfo() override;
>
> void printStackMap() const override;
>
> + void printNeededLibraries() override;
>
> +
>
> // MachO-specific.
>
> void printMachODataInCode() override;
>
> void printMachOVersionMin() override;
>
> @@ -675,6 +677,34 @@ void MachODumper::printStackMap() const
>
>
> StackMapV2Parser<support::big>(StackMapContentsArray));
>
> }
>
> +void MachODumper::printNeededLibraries() {
>
> + ListScope D(W, "NeededLibraries");
>
> +
>
> + using LibsTy = std::vector<StringRef>;
>
> + LibsTy Libs;
>
> +
>
> + for (const auto &Command : Obj->load_commands()) {
>
> + if (Command.C.cmd == MachO::LC_LOAD_DYLIB ||
>
> + Command.C.cmd == MachO::LC_ID_DYLIB ||
>
> + Command.C.cmd == MachO::LC_LOAD_WEAK_DYLIB ||
>
> + Command.C.cmd == MachO::LC_REEXPORT_DYLIB ||
>
> + Command.C.cmd == MachO::LC_LAZY_LOAD_DYLIB ||
>
> + Command.C.cmd == MachO::LC_LOAD_UPWARD_DYLIB) {
>
> + MachO::dylib_command Dl = Obj->getDylibIDLoadCommand(Command);
>
> + if (Dl.dylib.name < Dl.cmdsize) {
>
> + auto *P = static_cast<const char*>(Command.Ptr) + Dl.dylib.name;
>
> + Libs.push_back(P);
>
> + }
>
> + }
>
> + }
>
> +
>
> + std::stable_sort(Libs.begin(), Libs.end());
>
> +
>
> + for (const auto &L : Libs) {
>
> + outs() << " " << L << "\n";
>
> + }
>
> +}
>
> +
>
> void MachODumper::printMachODataInCode() {
>
> for (const auto &Load : Obj->load_commands()) {
>
> if (Load.C.cmd == MachO::LC_DATA_IN_CODE) {
>
>
>
>
>
> _______________________________________________
>
> llvm-commits mailing list
>
> llvm-commits at lists.llvm.org
>
> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=E2FMyT23FarZeKRKWBGOndodNlyr-x_bTU7LSCiXUc0&s=TdyNyGmOlGChU1wvZhGFsO2qVNTKL_VS_ZvHHEs5Evg&e=
>
>
More information about the llvm-commits
mailing list