[llvm] c2d2094 - [llvm-objcopy][MachO] Add support for LC_DYLIB_CODE_SIGN_DRS
Keith Smiley via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 14 15:41:35 PDT 2022
Author: Keith Smiley
Date: 2022-10-14T15:41:19-07:00
New Revision: c2d209476c494b3b3194e80bcd3062444eb41993
URL: https://github.com/llvm/llvm-project/commit/c2d209476c494b3b3194e80bcd3062444eb41993
DIFF: https://github.com/llvm/llvm-project/commit/c2d209476c494b3b3194e80bcd3062444eb41993.diff
LOG: [llvm-objcopy][MachO] Add support for LC_DYLIB_CODE_SIGN_DRS
This allows binaries containing the LC_DYLIB_CODE_SIGN_DRS to be
objcopy'd and stripped.
Differential Revision: https://reviews.llvm.org/D135988
Added:
llvm/test/tools/llvm-objcopy/MachO/Inputs/strip-all-with-codesignature.yaml
Modified:
llvm/lib/ObjCopy/MachO/MachOLayoutBuilder.cpp
llvm/lib/ObjCopy/MachO/MachOObject.cpp
llvm/lib/ObjCopy/MachO/MachOObject.h
llvm/lib/ObjCopy/MachO/MachOReader.cpp
llvm/lib/ObjCopy/MachO/MachOReader.h
llvm/lib/ObjCopy/MachO/MachOWriter.cpp
llvm/lib/ObjCopy/MachO/MachOWriter.h
llvm/test/tools/llvm-objcopy/MachO/strip-all.test
Removed:
################################################################################
diff --git a/llvm/lib/ObjCopy/MachO/MachOLayoutBuilder.cpp b/llvm/lib/ObjCopy/MachO/MachOLayoutBuilder.cpp
index 6b731abd9ed9..7edce6e42c0c 100644
--- a/llvm/lib/ObjCopy/MachO/MachOLayoutBuilder.cpp
+++ b/llvm/lib/ObjCopy/MachO/MachOLayoutBuilder.cpp
@@ -238,7 +238,7 @@ Error MachOLayoutBuilder::layoutTail(uint64_t Offset) {
// The order of LINKEDIT elements is as follows:
// rebase info, binding info, weak binding info, lazy binding info, export
// trie, data-in-code, symbol table, indirect symbol table, symbol table
- // strings, code signature.
+ // strings, dylib codesign drs, code signature.
uint64_t NListSize = Is64Bit ? sizeof(MachO::nlist_64) : sizeof(MachO::nlist);
uint64_t StartOfLinkEdit = Offset;
uint64_t StartOfRebaseInfo = StartOfLinkEdit;
@@ -264,8 +264,10 @@ Error MachOLayoutBuilder::layoutTail(uint64_t Offset) {
uint64_t StartOfSymbolStrings =
StartOfIndirectSymbols +
sizeof(uint32_t) * O.IndirectSymTable.Symbols.size();
- uint64_t StartOfCodeSignature =
+ uint64_t StartOfDylibCodeSignDRs =
StartOfSymbolStrings + StrTableBuilder.getSize();
+ uint64_t StartOfCodeSignature =
+ StartOfDylibCodeSignDRs + O.DylibCodeSignDRs.Data.size();
uint32_t CodeSignatureSize = 0;
if (O.CodeSignatureCommandIndex) {
StartOfCodeSignature = alignTo(StartOfCodeSignature, 16);
@@ -320,6 +322,10 @@ Error MachOLayoutBuilder::layoutTail(uint64_t Offset) {
MLC.linkedit_data_command_data.dataoff = StartOfCodeSignature;
MLC.linkedit_data_command_data.datasize = CodeSignatureSize;
break;
+ case MachO::LC_DYLIB_CODE_SIGN_DRS:
+ MLC.linkedit_data_command_data.dataoff = StartOfDylibCodeSignDRs;
+ MLC.linkedit_data_command_data.datasize = O.DylibCodeSignDRs.Data.size();
+ break;
case MachO::LC_SYMTAB:
MLC.symtab_command_data.symoff = StartOfSymbols;
MLC.symtab_command_data.nsyms = O.SymTable.Symbols.size();
diff --git a/llvm/lib/ObjCopy/MachO/MachOObject.cpp b/llvm/lib/ObjCopy/MachO/MachOObject.cpp
index 1303d6685d52..015ba1496397 100644
--- a/llvm/lib/ObjCopy/MachO/MachOObject.cpp
+++ b/llvm/lib/ObjCopy/MachO/MachOObject.cpp
@@ -75,6 +75,9 @@ void Object::updateLoadCommandIndexes() {
case MachO::LC_FUNCTION_STARTS:
FunctionStartsCommandIndex = Index;
break;
+ case MachO::LC_DYLIB_CODE_SIGN_DRS:
+ DylibCodeSignDRsIndex = Index;
+ break;
case MachO::LC_DYLD_CHAINED_FIXUPS:
ChainedFixupsCommandIndex = Index;
break;
diff --git a/llvm/lib/ObjCopy/MachO/MachOObject.h b/llvm/lib/ObjCopy/MachO/MachOObject.h
index 15877eff33b0..9f356d6279c1 100644
--- a/llvm/lib/ObjCopy/MachO/MachOObject.h
+++ b/llvm/lib/ObjCopy/MachO/MachOObject.h
@@ -312,11 +312,14 @@ struct Object {
LinkData FunctionStarts;
LinkData ExportsTrie;
LinkData ChainedFixups;
+ LinkData DylibCodeSignDRs;
Optional<uint32_t> SwiftVersion;
/// The index of LC_CODE_SIGNATURE load command if present.
Optional<size_t> CodeSignatureCommandIndex;
+ /// The index of LC_DYLIB_CODE_SIGN_DRS load command if present.
+ Optional<size_t> DylibCodeSignDRsIndex;
/// The index of LC_SYMTAB load command if present.
Optional<size_t> SymTabCommandIndex;
/// The index of LC_DYLD_INFO or LC_DYLD_INFO_ONLY load command if present.
diff --git a/llvm/lib/ObjCopy/MachO/MachOReader.cpp b/llvm/lib/ObjCopy/MachO/MachOReader.cpp
index 94459a436094..b9bb02db2392 100644
--- a/llvm/lib/ObjCopy/MachO/MachOReader.cpp
+++ b/llvm/lib/ObjCopy/MachO/MachOReader.cpp
@@ -174,6 +174,9 @@ Error MachOReader::readLoadCommands(Object &O) const {
case MachO::LC_FUNCTION_STARTS:
O.FunctionStartsCommandIndex = O.LoadCommands.size();
break;
+ case MachO::LC_DYLIB_CODE_SIGN_DRS:
+ O.DylibCodeSignDRsIndex = O.LoadCommands.size();
+ break;
case MachO::LC_DYLD_EXPORTS_TRIE:
O.ExportsTrieCommandIndex = O.LoadCommands.size();
break;
@@ -307,6 +310,10 @@ void MachOReader::readFunctionStartsData(Object &O) const {
return readLinkData(O, O.FunctionStartsCommandIndex, O.FunctionStarts);
}
+void MachOReader::readDylibCodeSignDRs(Object &O) const {
+ return readLinkData(O, O.DylibCodeSignDRsIndex, O.DylibCodeSignDRs);
+}
+
void MachOReader::readExportsTrie(Object &O) const {
return readLinkData(O, O.ExportsTrieCommandIndex, O.ExportsTrie);
}
@@ -366,6 +373,7 @@ Expected<std::unique_ptr<Object>> MachOReader::create() const {
readDataInCodeData(*Obj);
readLinkerOptimizationHint(*Obj);
readFunctionStartsData(*Obj);
+ readDylibCodeSignDRs(*Obj);
readExportsTrie(*Obj);
readChainedFixups(*Obj);
readIndirectSymbolTable(*Obj);
diff --git a/llvm/lib/ObjCopy/MachO/MachOReader.h b/llvm/lib/ObjCopy/MachO/MachOReader.h
index ef374aa9efae..9f55411f1ab4 100644
--- a/llvm/lib/ObjCopy/MachO/MachOReader.h
+++ b/llvm/lib/ObjCopy/MachO/MachOReader.h
@@ -44,6 +44,7 @@ class MachOReader : public Reader {
void readDataInCodeData(Object &O) const;
void readLinkerOptimizationHint(Object &O) const;
void readFunctionStartsData(Object &O) const;
+ void readDylibCodeSignDRs(Object &O) const;
void readExportsTrie(Object &O) const;
void readChainedFixups(Object &O) const;
void readIndirectSymbolTable(Object &O) const;
diff --git a/llvm/lib/ObjCopy/MachO/MachOWriter.cpp b/llvm/lib/ObjCopy/MachO/MachOWriter.cpp
index 84db941fb423..80a8b2904709 100644
--- a/llvm/lib/ObjCopy/MachO/MachOWriter.cpp
+++ b/llvm/lib/ObjCopy/MachO/MachOWriter.cpp
@@ -95,9 +95,10 @@ size_t MachOWriter::totalSize() const {
}
for (Optional<size_t> LinkEditDataCommandIndex :
- {O.CodeSignatureCommandIndex, O.DataInCodeCommandIndex,
- O.LinkerOptimizationHintCommandIndex, O.FunctionStartsCommandIndex,
- O.ChainedFixupsCommandIndex, O.ExportsTrieCommandIndex})
+ {O.CodeSignatureCommandIndex, O.DylibCodeSignDRsIndex,
+ O.DataInCodeCommandIndex, O.LinkerOptimizationHintCommandIndex,
+ O.FunctionStartsCommandIndex, O.ChainedFixupsCommandIndex,
+ O.ExportsTrieCommandIndex})
if (LinkEditDataCommandIndex) {
const MachO::linkedit_data_command &LinkEditDataCommand =
O.LoadCommands[*LinkEditDataCommandIndex]
@@ -559,6 +560,10 @@ void MachOWriter::writeFunctionStartsData() {
return writeLinkData(O.FunctionStartsCommandIndex, O.FunctionStarts);
}
+void MachOWriter::writeDylibCodeSignDRsData() {
+ return writeLinkData(O.DylibCodeSignDRsIndex, O.DylibCodeSignDRs);
+}
+
void MachOWriter::writeChainedFixupsData() {
return writeLinkData(O.ChainedFixupsCommandIndex, O.ChainedFixups);
}
@@ -615,6 +620,7 @@ void MachOWriter::writeTail() {
std::initializer_list<std::pair<Optional<size_t>, WriteHandlerType>>
LinkEditDataCommandWriters = {
{O.CodeSignatureCommandIndex, &MachOWriter::writeCodeSignatureData},
+ {O.DylibCodeSignDRsIndex, &MachOWriter::writeDylibCodeSignDRsData},
{O.DataInCodeCommandIndex, &MachOWriter::writeDataInCodeData},
{O.LinkerOptimizationHintCommandIndex,
&MachOWriter::writeLinkerOptimizationHint},
diff --git a/llvm/lib/ObjCopy/MachO/MachOWriter.h b/llvm/lib/ObjCopy/MachO/MachOWriter.h
index a54c10294246..446ed7199293 100644
--- a/llvm/lib/ObjCopy/MachO/MachOWriter.h
+++ b/llvm/lib/ObjCopy/MachO/MachOWriter.h
@@ -53,6 +53,7 @@ class MachOWriter {
void writeDataInCodeData();
void writeLinkerOptimizationHint();
void writeFunctionStartsData();
+ void writeDylibCodeSignDRsData();
void writeChainedFixupsData();
void writeExportsTrieData();
void writeTail();
diff --git a/llvm/test/tools/llvm-objcopy/MachO/Inputs/strip-all-with-codesignature.yaml b/llvm/test/tools/llvm-objcopy/MachO/Inputs/strip-all-with-codesignature.yaml
new file mode 100644
index 000000000000..298ce4502b64
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/MachO/Inputs/strip-all-with-codesignature.yaml
@@ -0,0 +1,361 @@
+--- !mach-o
+FileHeader:
+ magic: 0xFEEDFACF
+ cputype: 0x1000007
+ cpusubtype: 0x80000003
+ filetype: 0x2
+ ncmds: 17
+ sizeofcmds: 1312
+ flags: 0x200085
+ reserved: 0x0
+LoadCommands:
+ - cmd: LC_SEGMENT_64
+ cmdsize: 72
+ segname: __PAGEZERO
+ vmaddr: 0
+ vmsize: 4294967296
+ fileoff: 0
+ filesize: 0
+ maxprot: 0
+ initprot: 0
+ nsects: 0
+ flags: 0
+ - cmd: LC_SEGMENT_64
+ cmdsize: 552
+ segname: __TEXT
+ vmaddr: 4294967296
+ vmsize: 4096
+ fileoff: 0
+ filesize: 4096
+ maxprot: 7
+ initprot: 5
+ nsects: 6
+ flags: 0
+ Sections:
+ - sectname: __text
+ segname: __TEXT
+ addr: 0x100000F30
+ size: 59
+ offset: 0xF30
+ align: 4
+ reloff: 0x0
+ nreloc: 0
+ flags: 0x80000400
+ reserved1: 0x0
+ reserved2: 0x0
+ reserved3: 0x0
+ content: 554889E54883EC20488D054F000000C745FC00000000897DF8488975F0488955E84889C7B000E811000000B9000000008945E489C84883C4205DC3
+ - sectname: __stubs
+ segname: __TEXT
+ addr: 0x100000F6C
+ size: 6
+ offset: 0xF6C
+ align: 1
+ reloff: 0x0
+ nreloc: 0
+ flags: 0x80000408
+ reserved1: 0x0
+ reserved2: 0x6
+ reserved3: 0x0
+ content: FF259E000000
+ - sectname: __stub_helper
+ segname: __TEXT
+ addr: 0x100000F74
+ size: 26
+ offset: 0xF74
+ align: 2
+ reloff: 0x0
+ nreloc: 0
+ flags: 0x80000400
+ reserved1: 0x0
+ reserved2: 0x0
+ reserved3: 0x0
+ content: 4C8D1D8D0000004153FF257D000000906800000000E9E6FFFFFF
+ - sectname: __cstring
+ segname: __TEXT
+ addr: 0x100000F8E
+ size: 13
+ offset: 0xF8E
+ align: 0
+ reloff: 0x0
+ nreloc: 0
+ flags: 0x2
+ reserved1: 0x0
+ reserved2: 0x0
+ reserved3: 0x0
+ content: 48656C6C6F20776F726C640A00
+ - sectname: __unwind_info
+ segname: __TEXT
+ addr: 0x100000F9B
+ size: 72
+ offset: 0xF9B
+ align: 0
+ reloff: 0x0
+ nreloc: 0
+ flags: 0x0
+ reserved1: 0x0
+ reserved2: 0x0
+ reserved3: 0x0
+ content: 010000001C000000000000001C000000000000001C00000002000000300F000034000000340000006C0F00000000000034000000030000000C000100100001000000000000000001
+ - sectname: __eh_frame
+ segname: __TEXT
+ addr: 0x100000FE8
+ size: 24
+ offset: 0xFE8
+ align: 3
+ reloff: 0x0
+ nreloc: 0
+ flags: 0x0
+ reserved1: 0x0
+ reserved2: 0x0
+ reserved3: 0x0
+ content: 1400000000000000017A520001781001100C070890010000
+ - cmd: LC_SEGMENT_64
+ cmdsize: 232
+ segname: __DATA
+ vmaddr: 4294971392
+ vmsize: 4096
+ fileoff: 4096
+ filesize: 4096
+ maxprot: 7
+ initprot: 3
+ nsects: 2
+ flags: 0
+ Sections:
+ - sectname: __nl_symbol_ptr
+ segname: __DATA
+ addr: 0x100001000
+ size: 16
+ offset: 0x1000
+ align: 3
+ reloff: 0x0
+ nreloc: 0
+ flags: 0x6
+ reserved1: 0x1
+ reserved2: 0x0
+ reserved3: 0x0
+ content: '00000000000000000000000000000000'
+ - sectname: __la_symbol_ptr
+ segname: __DATA
+ addr: 0x100001010
+ size: 8
+ offset: 0x1010
+ align: 3
+ reloff: 0x0
+ nreloc: 0
+ flags: 0x7
+ reserved1: 0x3
+ reserved2: 0x0
+ reserved3: 0x0
+ content: 840F000001000000
+ - cmd: LC_SEGMENT_64
+ cmdsize: 72
+ segname: __LINKEDIT
+ vmaddr: 4294975488
+ vmsize: 32768
+ fileoff: 8192
+ filesize: 18960
+ maxprot: 7
+ initprot: 1
+ nsects: 0
+ flags: 0
+ - cmd: LC_DYLD_INFO_ONLY
+ cmdsize: 48
+ rebase_off: 8192
+ rebase_size: 8
+ bind_off: 8200
+ bind_size: 24
+ weak_bind_off: 0
+ weak_bind_size: 0
+ lazy_bind_off: 8224
+ lazy_bind_size: 16
+ export_off: 8240
+ export_size: 48
+ - cmd: LC_SYMTAB
+ cmdsize: 24
+ symoff: 8360
+ nsyms: 4
+ stroff: 8440
+ strsize: 56
+ - cmd: LC_DYSYMTAB
+ cmdsize: 80
+ ilocalsym: 0
+ nlocalsym: 0
+ iextdefsym: 0
+ nextdefsym: 2
+ iundefsym: 2
+ nundefsym: 2
+ tocoff: 0
+ ntoc: 0
+ modtaboff: 0
+ nmodtab: 0
+ extrefsymoff: 0
+ nextrefsyms: 0
+ indirectsymoff: 8424
+ nindirectsyms: 4
+ extreloff: 0
+ nextrel: 0
+ locreloff: 0
+ nlocrel: 0
+ - cmd: LC_LOAD_DYLINKER
+ cmdsize: 32
+ name: 12
+ Content: '/usr/lib/dyld'
+ ZeroPadBytes: 7
+ - cmd: LC_UUID
+ cmdsize: 24
+ uuid: 65C2DD41-79B0-3B34-871B-8CB3446AB762
+ - cmd: LC_VERSION_MIN_MACOSX
+ cmdsize: 16
+ version: 657664
+ sdk: 657664
+ - cmd: LC_SOURCE_VERSION
+ cmdsize: 16
+ version: 0
+ - cmd: LC_MAIN
+ cmdsize: 24
+ entryoff: 3888
+ stacksize: 0
+ - cmd: LC_LOAD_DYLIB
+ cmdsize: 56
+ dylib:
+ name: 24
+ timestamp: 2
+ current_version: 78446849
+ compatibility_version: 65536
+ Content: '/usr/lib/libSystem.B.dylib'
+ ZeroPadBytes: 6
+ - cmd: LC_FUNCTION_STARTS
+ cmdsize: 16
+ dataoff: 8288
+ datasize: 8
+ - cmd: LC_DATA_IN_CODE
+ cmdsize: 16
+ dataoff: 8296
+ datasize: 0
+ - cmd: LC_DYLIB_CODE_SIGN_DRS
+ cmdsize: 16
+ dataoff: 8296
+ datasize: 64
+ - cmd: LC_CODE_SIGNATURE
+ cmdsize: 16
+ dataoff: 8496
+ datasize: 18656
+LinkEditData:
+ RebaseOpcodes:
+ - Opcode: REBASE_OPCODE_SET_TYPE_IMM
+ Imm: 1
+ - Opcode: REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ExtraData: [ 0x10 ]
+ - Opcode: REBASE_OPCODE_DO_REBASE_IMM_TIMES
+ Imm: 1
+ - Opcode: REBASE_OPCODE_DONE
+ Imm: 0
+ BindOpcodes:
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 1
+ Symbol: ''
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: dyld_stub_binder
+ - Opcode: BIND_OPCODE_SET_TYPE_IMM
+ Imm: 1
+ Symbol: ''
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData: [ 0x0 ]
+ Symbol: ''
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ Symbol: ''
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ Symbol: ''
+ LazyBindOpcodes:
+ - Opcode: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+ Imm: 2
+ ULEBExtraData: [ 0x10 ]
+ Symbol: ''
+ - Opcode: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+ Imm: 1
+ Symbol: ''
+ - Opcode: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+ Imm: 0
+ Symbol: _printf
+ - Opcode: BIND_OPCODE_DO_BIND
+ Imm: 0
+ Symbol: ''
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ Symbol: ''
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ Symbol: ''
+ - Opcode: BIND_OPCODE_DONE
+ Imm: 0
+ Symbol: ''
+ ExportTrie:
+ TerminalSize: 0
+ NodeOffset: 0
+ Name: ''
+ Flags: 0x0
+ Address: 0x0
+ Other: 0x0
+ ImportName: ''
+ Children:
+ - TerminalSize: 0
+ NodeOffset: 5
+ Name: _
+ Flags: 0x0
+ Address: 0x0
+ Other: 0x0
+ ImportName: ''
+ Children:
+ - TerminalSize: 2
+ NodeOffset: 33
+ Name: _mh_execute_header
+ Flags: 0x0
+ Address: 0x0
+ Other: 0x0
+ ImportName: ''
+ - TerminalSize: 3
+ NodeOffset: 37
+ Name: main
+ Flags: 0x0
+ Address: 0xF30
+ Other: 0x0
+ ImportName: ''
+ NameList:
+ - n_strx: 2
+ n_type: 0xF
+ n_sect: 1
+ n_desc: 16
+ n_value: 4294967296
+ - n_strx: 22
+ n_type: 0xF
+ n_sect: 1
+ n_desc: 0
+ n_value: 4294971184
+ - n_strx: 28
+ n_type: 0x1
+ n_sect: 0
+ n_desc: 256
+ n_value: 0
+ - n_strx: 36
+ n_type: 0x1
+ n_sect: 0
+ n_desc: 256
+ n_value: 0
+ StringTable:
+ - ' '
+ - __mh_execute_header
+ - _main
+ - _printf
+ - dyld_stub_binder
+ - ''
+ - ''
+ - ''
+ IndirectSymbols: [ 0x2, 0x3, 0x40000000, 0x2 ]
+ FunctionStarts: [ 0xF30 ]
+...
diff --git a/llvm/test/tools/llvm-objcopy/MachO/strip-all.test b/llvm/test/tools/llvm-objcopy/MachO/strip-all.test
index 5cea836b3ba2..103957462247 100644
--- a/llvm/test/tools/llvm-objcopy/MachO/strip-all.test
+++ b/llvm/test/tools/llvm-objcopy/MachO/strip-all.test
@@ -3,6 +3,7 @@
# RUN: yaml2obj %p/Inputs/strip-all.yaml -o %t.exec
# RUN: yaml2obj %p/Inputs/strip-all-with-dwarf.yaml -o %t.dwarf
# RUN: yaml2obj %p/Inputs/strip-chained-fixups.yaml -o %t.fixups
+# RUN: yaml2obj %p/Inputs/strip-all-with-codesignature.yaml -o %t.codesignature
## Check that the symbol list satisfies the order: local / defined external /
## undefined external, otherwise llvm-objcopy will fail.
@@ -42,6 +43,25 @@
# RUN: cmp %t7 %t.fixups.stripped
# RUN: cmp %t8 %t.fixups.stripped
+# RUN: llvm-objcopy --strip-all %t.codesignature %t9
+# RUN: llvm-otool -l %t9 | FileCheck --check-prefix=CODESIGNATURE %s
+# RUN: llvm-strip %t.codesignature -o %t10
+# RUN: llvm-otool -l %t10 | FileCheck --check-prefix=CODESIGNATURE %s
+# RUN: llvm-strip --strip-all %t.codesignature -o %t11
+# RUN: llvm-otool -l %t11 | FileCheck --check-prefix=CODESIGNATURE %s
+
+## Make sure that code signatures are preserved
+
+# CODESIGNATURE: cmd LC_DYLIB_CODE_SIGN_DRS
+# CODESIGNATURE-NEXT: cmdsize 16
+# CODESIGNATURE-NEXT: dataoff 8408
+# CODESIGNATURE-NEXT: datasize 64
+# CODESIGNATURE-NEXT: Load command
+# CODESIGNATURE-NEXT: cmd LC_CODE_SIGNATURE
+# CODESIGNATURE-NEXT: cmdsize 16
+# CODESIGNATURE-NEXT: dataoff 8480
+# CODESIGNATURE-NEXT: datasize 240
+
## Make sure that debug sections are removed.
# DWARF: Sections [
# DWARF-NOT: Name: __debug_str
More information about the llvm-commits
mailing list