From: Keith Smiley Date: Tue, 13 Jun 2023 18:32:30 +0000 (-0700) Subject: [llvm-objdump/mac] Add support for LC_ATOM_INFO X-Git-Tag: upstream/17.0.6~5208 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f1017389103b99f20ddb1cb6da0e5faa8a43c43b;p=platform%2Fupstream%2Fllvm.git [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 --- diff --git a/llvm/include/llvm/BinaryFormat/MachO.def b/llvm/include/llvm/BinaryFormat/MachO.def index 6d1ddda..d841b42 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 0000000..49924f8 --- /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 5253943..d1bfcb7 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());