[llvm] f101738 - [llvm-objdump/mac] Add support for LC_ATOM_INFO
Keith Smiley via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 13 14:29:45 PDT 2023
Author: Keith Smiley
Date: 2023-06-13T14:29:15-07:00
New Revision: f1017389103b99f20ddb1cb6da0e5faa8a43c43b
URL: https://github.com/llvm/llvm-project/commit/f1017389103b99f20ddb1cb6da0e5faa8a43c43b
DIFF: https://github.com/llvm/llvm-project/commit/f1017389103b99f20ddb1cb6da0e5faa8a43c43b.diff
LOG: [llvm-objdump/mac] Add support for LC_ATOM_INFO
This is a new load command first supported in Xcode 15's tools
Differential Revision: https://reviews.llvm.org/D152847
Added:
llvm/test/tools/llvm-objdump/MachO/atom-info.yaml
Modified:
llvm/include/llvm/BinaryFormat/MachO.def
llvm/tools/llvm-objdump/MachODump.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/BinaryFormat/MachO.def b/llvm/include/llvm/BinaryFormat/MachO.def
index 6d1ddda3bfa9a..d841b42ee808b 100644
--- a/llvm/include/llvm/BinaryFormat/MachO.def
+++ b/llvm/include/llvm/BinaryFormat/MachO.def
@@ -77,6 +77,7 @@ HANDLE_LOAD_COMMAND(LC_BUILD_VERSION, 0x00000032u, build_version_command)
HANDLE_LOAD_COMMAND(LC_DYLD_EXPORTS_TRIE, 0x80000033u, linkedit_data_command)
HANDLE_LOAD_COMMAND(LC_DYLD_CHAINED_FIXUPS, 0x80000034u, linkedit_data_command)
HANDLE_LOAD_COMMAND(LC_FILESET_ENTRY, 0x80000035u, fileset_entry_command)
+HANDLE_LOAD_COMMAND(LC_ATOM_INFO, 0x00000036u, linkedit_data_command)
#endif
diff --git a/llvm/test/tools/llvm-objdump/MachO/atom-info.yaml b/llvm/test/tools/llvm-objdump/MachO/atom-info.yaml
new file mode 100644
index 0000000000000..49924f8740ba2
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/MachO/atom-info.yaml
@@ -0,0 +1,184 @@
+# RUN: yaml2obj %s -o %t
+# RUN: llvm-objdump -p %t | FileCheck %s
+# RUN: llvm-otool -l %t | FileCheck %s
+#
+# CHECK: LC_ATOM_INFO
+#
+# Created with:
+# echo 'void foo() {}' > foo.c
+# clang -dynamiclib foo.c -Wl,-make_mergeable -Wl,-no_adhoc_codesign
+
+--- !mach-o
+FileHeader:
+ magic: 0xFEEDFACF
+ cputype: 0x100000C
+ cpusubtype: 0x0
+ filetype: 0x6
+ ncmds: 14
+ sizeofcmds: 648
+ flags: 0x100085
+ reserved: 0x0
+LoadCommands:
+ - cmd: LC_SEGMENT_64
+ cmdsize: 232
+ segname: __TEXT
+ vmaddr: 0
+ vmsize: 16384
+ fileoff: 0
+ filesize: 16384
+ maxprot: 5
+ initprot: 5
+ nsects: 2
+ flags: 0
+ Sections:
+ - sectname: __text
+ segname: __TEXT
+ addr: 0x3FB8
+ size: 4
+ offset: 0x3FB8
+ align: 2
+ reloff: 0x0
+ nreloc: 0
+ flags: 0x80000400
+ reserved1: 0x0
+ reserved2: 0x0
+ reserved3: 0x0
+ content: C0035FD6
+ - sectname: __unwind_info
+ segname: __TEXT
+ addr: 0x3FBC
+ size: 68
+ offset: 0x3FBC
+ align: 2
+ reloff: 0x0
+ nreloc: 0
+ flags: 0x0
+ reserved1: 0x0
+ reserved2: 0x0
+ reserved3: 0x0
+ content: 010000001C000000000000001C000000000000001C00000002000000B83F00003400000034000000BD3F000000000000340000000200000008000100B83F000000000002
+ - cmd: LC_SEGMENT_64
+ cmdsize: 72
+ segname: __LINKEDIT
+ vmaddr: 16384
+ vmsize: 16384
+ fileoff: 16384
+ filesize: 592
+ maxprot: 1
+ initprot: 1
+ nsects: 0
+ flags: 0
+ - cmd: LC_ID_DYLIB
+ cmdsize: 32
+ dylib:
+ name: 24
+ timestamp: 1
+ current_version: 0
+ compatibility_version: 0
+ Content: obj
+ ZeroPadBytes: 5
+ - cmd: LC_DYLD_CHAINED_FIXUPS
+ cmdsize: 16
+ dataoff: 16384
+ datasize: 56
+ - cmd: LC_DYLD_EXPORTS_TRIE
+ cmdsize: 16
+ dataoff: 16440
+ datasize: 24
+ - cmd: LC_SYMTAB
+ cmdsize: 24
+ symoff: 16952
+ nsyms: 1
+ stroff: 16968
+ strsize: 8
+ - cmd: LC_DYSYMTAB
+ cmdsize: 80
+ ilocalsym: 0
+ nlocalsym: 0
+ iextdefsym: 0
+ nextdefsym: 1
+ iundefsym: 1
+ nundefsym: 0
+ tocoff: 0
+ ntoc: 0
+ modtaboff: 0
+ nmodtab: 0
+ extrefsymoff: 0
+ nextrefsyms: 0
+ indirectsymoff: 0
+ nindirectsyms: 0
+ extreloff: 0
+ nextrel: 0
+ locreloff: 0
+ nlocrel: 0
+ - cmd: LC_UUID
+ cmdsize: 24
+ uuid: F30F2ED6-99E3-3BF0-B9A9-A4DAEEF9EA65
+ - cmd: LC_BUILD_VERSION
+ cmdsize: 32
+ platform: 1
+ minos: 851968
+ sdk: 917504
+ ntools: 1
+ Tools:
+ - tool: 3
+ version: 66062080
+ - cmd: LC_SOURCE_VERSION
+ cmdsize: 16
+ version: 0
+ - cmd: LC_LOAD_DYLIB
+ cmdsize: 56
+ dylib:
+ name: 24
+ timestamp: 2
+ current_version: 87556096
+ compatibility_version: 65536
+ Content: '/usr/lib/libSystem.B.dylib'
+ ZeroPadBytes: 6
+ - cmd: LC_FUNCTION_STARTS
+ cmdsize: 16
+ dataoff: 16464
+ datasize: 8
+ - cmd: LC_DATA_IN_CODE
+ cmdsize: 16
+ dataoff: 16472
+ datasize: 0
+ - cmd: LC_ATOM_INFO
+ cmdsize: 16
+ dataoff: 16472
+ datasize: 480
+LinkEditData:
+ ExportTrie:
+ TerminalSize: 0
+ NodeOffset: 0
+ Name: ''
+ Flags: 0x0
+ Address: 0x0
+ Other: 0x0
+ ImportName: ''
+ Children:
+ - TerminalSize: 0
+ NodeOffset: 12
+ Name: _foo
+ Flags: 0x0
+ Address: 0x0
+ Other: 0x0
+ ImportName: ''
+ NameList:
+ - n_strx: 2
+ n_type: 0xF
+ n_sect: 1
+ n_desc: 0
+ n_value: 16312
+ StringTable:
+ - ' '
+ - _foo
+ - ''
+ FunctionStarts: [ 0x3FB8 ]
+ ChainedFixups: [ 0x0, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x30, 0x0,
+ 0x0, 0x0, 0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 ]
+...
diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp
index 5253943e333bf..d1bfcb709ac93 100644
--- a/llvm/tools/llvm-objdump/MachODump.cpp
+++ b/llvm/tools/llvm-objdump/MachODump.cpp
@@ -10358,6 +10358,8 @@ static void PrintLinkEditDataCommand(MachO::linkedit_data_command ld,
outs() << " cmd LC_DYLD_EXPORTS_TRIE\n";
else if (ld.cmd == MachO::LC_DYLD_CHAINED_FIXUPS)
outs() << " cmd LC_DYLD_CHAINED_FIXUPS\n";
+ else if (ld.cmd == MachO::LC_ATOM_INFO)
+ outs() << " cmd LC_ATOM_INFO\n";
else
outs() << " cmd " << ld.cmd << " (?)\n";
outs() << " cmdsize " << ld.cmdsize;
@@ -10503,7 +10505,8 @@ static void PrintLoadCommands(const MachOObjectFile *Obj, uint32_t filetype,
Command.C.cmd == MachO::LC_DYLIB_CODE_SIGN_DRS ||
Command.C.cmd == MachO::LC_LINKER_OPTIMIZATION_HINT ||
Command.C.cmd == MachO::LC_DYLD_EXPORTS_TRIE ||
- Command.C.cmd == MachO::LC_DYLD_CHAINED_FIXUPS) {
+ Command.C.cmd == MachO::LC_DYLD_CHAINED_FIXUPS ||
+ Command.C.cmd == MachO::LC_ATOM_INFO) {
MachO::linkedit_data_command Ld =
Obj->getLinkeditDataLoadCommand(Command);
PrintLinkEditDataCommand(Ld, Buf.size());
More information about the llvm-commits
mailing list