diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp --- a/llvm/lib/Object/MachOObjectFile.cpp +++ b/llvm/lib/Object/MachOObjectFile.cpp @@ -1596,6 +1596,9 @@ if ((Err = checkTwoLevelHintsCommand(*this, Load, I, &TwoLevelHintsLoadCmd, Elements))) return; + } else if (Load.C.cmd == MachO::LC_IDENT) { + // Note: LC_IDENT is ignored. + continue; } else if (isLoadCommandObsolete(Load.C.cmd)) { Err = malformedError("load command " + Twine(I) + " for cmd value of: " + Twine(Load.C.cmd) + " is obsolete and not " diff --git a/llvm/test/Object/Inputs/macho-invalid-ident-obsolete b/llvm/test/Object/Inputs/macho-invalid-ident-obsolete deleted file mode 100644 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@&1 | FileCheck --check-prefix=INVALID-PREBOUND_DYLIB-OBSOLETE %s INVALID-PREBOUND_DYLIB-OBSOLETE: macho-invalid-prebound_dylib-obsolete': truncated or malformed object (load command 0 for cmd value of: 16 is obsolete and not supported) -RUN: not llvm-objdump --macho --private-headers %p/Inputs/macho-invalid-ident-obsolete 2>&1 | FileCheck --check-prefix=INVALID-IDENT-OBSOLETE %s -INVALID-IDENT-OBSOLETE: macho-invalid-ident-obsolete': truncated or malformed object (load command 0 for cmd value of: 8 is obsolete and not supported) - RUN: not llvm-objdump --macho --private-headers %p/Inputs/macho-invalid-fvmfile-obsolete 2>&1 | FileCheck --check-prefix=INVALID-FVMFILE-OBSOLETE %s INVALID-FVMFILE-OBSOLETE: macho-invalid-fvmfile-obsolete': truncated or malformed object (load command 0 for cmd value of: 9 is obsolete and not supported) diff --git a/llvm/test/ObjectYAML/MachO/lc-ident.yaml b/llvm/test/ObjectYAML/MachO/lc-ident.yaml new file mode 100644 --- /dev/null +++ b/llvm/test/ObjectYAML/MachO/lc-ident.yaml @@ -0,0 +1,22 @@ +# RUN: yaml2obj %s | obj2yaml | FileCheck %s + +--- !mach-o +FileHeader: + magic: 0xFEEDFACF + cputype: 0x01000007 + cpusubtype: 0x80000003 + filetype: 0x00000002 + ncmds: 1 + sizeofcmds: 16 + flags: 0x00218085 + reserved: 0x00000000 +LoadCommands: + - cmd: LC_IDENT + cmdsize: 16 + PayloadBytes: [ 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7 ] +... + +# CHECK: LoadCommands: +# CHECK-NEXT: - cmd: LC_IDENT +# CHECK-NEXT: cmdsize: 16 +# CHECK-NEXT: PayloadBytes: [ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 ]