diff options
Diffstat (limited to 'build/build-clang/D151864.patch')
-rw-r--r-- | build/build-clang/D151864.patch | 308 |
1 files changed, 308 insertions, 0 deletions
diff --git a/build/build-clang/D151864.patch b/build/build-clang/D151864.patch new file mode 100644 index 0000000000..000ee2b59d --- /dev/null +++ b/build/build-clang/D151864.patch @@ -0,0 +1,308 @@ +From 49abc88612014eb99580a2870257d2bc70b16333 Mon Sep 17 00:00:00 2001 +From: Mike Hommey <mh@glandium.org> +Date: Thu, 1 Jun 2023 13:26:51 +0900 +Subject: [PATCH] Strip stabs symbols in Mach-O when stripping debug info + +Differential Revision: https://reviews.llvm.org/D151864 +--- + llvm/lib/ObjCopy/MachO/MachOObjcopy.cpp | 3 + + .../MachO/Inputs/strip-stabs.yaml | 248 ++++++++++++++++++ + .../tools/llvm-objcopy/MachO/strip-stabs.test | 17 ++ + 3 files changed, 268 insertions(+) + create mode 100644 llvm/test/tools/llvm-objcopy/MachO/Inputs/strip-stabs.yaml + create mode 100644 llvm/test/tools/llvm-objcopy/MachO/strip-stabs.test + +diff --git a/llvm/lib/ObjCopy/MachO/MachOObjcopy.cpp b/llvm/lib/ObjCopy/MachO/MachOObjcopy.cpp +index d37241682efe..e26b363df21c 100644 +--- a/llvm/lib/ObjCopy/MachO/MachOObjcopy.cpp ++++ b/llvm/lib/ObjCopy/MachO/MachOObjcopy.cpp +@@ -112,6 +112,9 @@ static void updateAndRemoveSymbols(const CommonConfig &Config, + if (Config.DiscardMode == DiscardType::All && !(N->n_type & MachO::N_EXT)) + return true; + // This behavior is consistent with cctools' strip. ++ if (Config.StripDebug && (N->n_type & MachO::N_STAB)) ++ return true; ++ // This behavior is consistent with cctools' strip. + if (MachOConfig.StripSwiftSymbols && + (Obj.Header.Flags & MachO::MH_DYLDLINK) && Obj.SwiftVersion && + *Obj.SwiftVersion && N->isSwiftSymbol()) +diff --git a/llvm/test/tools/llvm-objcopy/MachO/Inputs/strip-stabs.yaml b/llvm/test/tools/llvm-objcopy/MachO/Inputs/strip-stabs.yaml +new file mode 100644 +index 000000000000..3259aa228fed +--- /dev/null ++++ b/llvm/test/tools/llvm-objcopy/MachO/Inputs/strip-stabs.yaml +@@ -0,0 +1,248 @@ ++--- !mach-o ++FileHeader: ++ magic: 0xFEEDFACF ++ cputype: 0x1000007 ++ cpusubtype: 0x80000003 ++ filetype: 0x2 ++ ncmds: 13 ++ sizeofcmds: 808 ++ 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: 312 ++ segname: __TEXT ++ vmaddr: 4294967296 ++ vmsize: 8192 ++ fileoff: 0 ++ filesize: 8192 ++ maxprot: 5 ++ initprot: 5 ++ nsects: 3 ++ flags: 0 ++ Sections: ++ - sectname: __text ++ segname: __TEXT ++ addr: 0x100000370 ++ size: 8 ++ offset: 0x370 ++ align: 4 ++ reloff: 0x0 ++ nreloc: 0 ++ flags: 0x80000400 ++ reserved1: 0x0 ++ reserved2: 0x0 ++ reserved3: 0x0 ++ content: 554889E531C05DC3 ++ - sectname: __unwind_info ++ segname: __TEXT ++ addr: 0x100000378 ++ size: 4152 ++ offset: 0x378 ++ align: 2 ++ reloff: 0x0 ++ nreloc: 0 ++ flags: 0x0 ++ reserved1: 0x0 ++ reserved2: 0x0 ++ reserved3: 0x0 ++ - sectname: __eh_frame ++ segname: __TEXT ++ addr: 0x1000013B0 ++ size: 24 ++ offset: 0x13B0 ++ align: 3 ++ reloff: 0x0 ++ nreloc: 0 ++ flags: 0x6000000B ++ reserved1: 0x0 ++ reserved2: 0x0 ++ reserved3: 0x0 ++ content: 1400000000000000017A520001781001100C070890010000 ++ - cmd: LC_SEGMENT_64 ++ cmdsize: 72 ++ segname: __LINKEDIT ++ vmaddr: 4294975488 ++ vmsize: 272 ++ fileoff: 8192 ++ filesize: 272 ++ maxprot: 1 ++ initprot: 1 ++ nsects: 0 ++ flags: 0 ++ - cmd: LC_DYLD_INFO_ONLY ++ cmdsize: 48 ++ rebase_off: 0 ++ rebase_size: 0 ++ bind_off: 0 ++ bind_size: 0 ++ weak_bind_off: 0 ++ weak_bind_size: 0 ++ lazy_bind_off: 0 ++ lazy_bind_size: 0 ++ export_off: 8192 ++ export_size: 48 ++ - cmd: LC_SYMTAB ++ cmdsize: 24 ++ symoff: 8248 ++ nsyms: 8 ++ stroff: 8376 ++ strsize: 88 ++ - cmd: LC_DYSYMTAB ++ cmdsize: 80 ++ ilocalsym: 0 ++ nlocalsym: 5 ++ iextdefsym: 5 ++ nextdefsym: 2 ++ iundefsym: 7 ++ nundefsym: 1 ++ 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_LOAD_DYLINKER ++ cmdsize: 32 ++ name: 12 ++ Content: '/usr/lib/dyld' ++ ZeroPadBytes: 7 ++ - cmd: LC_UUID ++ cmdsize: 24 ++ uuid: 4C4C44DE-5555-3144-A19D-79B149A02D5F ++ - cmd: LC_BUILD_VERSION ++ cmdsize: 32 ++ platform: 1 ++ minos: 852736 ++ sdk: 852736 ++ ntools: 1 ++ Tools: ++ - tool: 3 ++ version: 1048580 ++ - cmd: LC_MAIN ++ cmdsize: 24 ++ entryoff: 880 ++ stacksize: 0 ++ - cmd: LC_LOAD_DYLIB ++ cmdsize: 56 ++ dylib: ++ name: 24 ++ timestamp: 0 ++ current_version: 86467587 ++ compatibility_version: 65536 ++ Content: '/usr/lib/libSystem.B.dylib' ++ ZeroPadBytes: 6 ++ - cmd: LC_FUNCTION_STARTS ++ cmdsize: 16 ++ dataoff: 8240 ++ datasize: 8 ++ - cmd: LC_DATA_IN_CODE ++ cmdsize: 16 ++ dataoff: 8248 ++ datasize: 0 ++LinkEditData: ++ 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: 3 ++ NodeOffset: 33 ++ Name: main ++ Flags: 0x0 ++ Address: 0x370 ++ Other: 0x0 ++ ImportName: '' ++ - TerminalSize: 2 ++ NodeOffset: 38 ++ Name: _mh_execute_header ++ Flags: 0x0 ++ Address: 0x0 ++ Other: 0x0 ++ ImportName: '' ++ NameList: ++ - n_strx: 45 ++ n_type: 0x64 ++ n_sect: 0 ++ n_desc: 0 ++ n_value: 0 ++ - n_strx: 57 ++ n_type: 0x66 ++ n_sect: 3 ++ n_desc: 1 ++ n_value: 0 ++ - n_strx: 76 ++ n_type: 0x24 ++ n_sect: 1 ++ n_desc: 0 ++ n_value: 4294968176 ++ - n_strx: 1 ++ n_type: 0x24 ++ n_sect: 0 ++ n_desc: 0 ++ n_value: 8 ++ - n_strx: 1 ++ n_type: 0x64 ++ n_sect: 1 ++ n_desc: 0 ++ n_value: 0 ++ - n_strx: 2 ++ n_type: 0xF ++ n_sect: 1 ++ n_desc: 0 ++ n_value: 4294968176 ++ - n_strx: 25 ++ n_type: 0xF ++ n_sect: 1 ++ n_desc: 16 ++ n_value: 4294967296 ++ - n_strx: 8 ++ n_type: 0x1 ++ n_sect: 0 ++ n_desc: 256 ++ n_value: 0 ++ StringTable: ++ - ' ' ++ - _main ++ - dyld_stub_binder ++ - __mh_execute_header ++ - '/tmp/test.c' ++ - '/tmp/test-6aa924.o' ++ - _main ++ - '' ++ - '' ++ - '' ++ - '' ++ - '' ++ - '' ++ FunctionStarts: [ 0x370 ] ++... +diff --git a/llvm/test/tools/llvm-objcopy/MachO/strip-stabs.test b/llvm/test/tools/llvm-objcopy/MachO/strip-stabs.test +new file mode 100644 +index 000000000000..90c00f60a152 +--- /dev/null ++++ b/llvm/test/tools/llvm-objcopy/MachO/strip-stabs.test +@@ -0,0 +1,17 @@ ++## Show that llvm-objcopy/llvm-strip stabs symbols and debug sections. ++ ++# RUN: yaml2obj %p/Inputs/strip-stabs.yaml -o %t ++ ++# RUN: llvm-objcopy --strip-debug %t %t.stripped ++ ++## Make sure that stabs symbols are stripped. ++# RUN: llvm-readobj --symbols %t | FileCheck %s --check-prefix=SYM ++# RUN: llvm-readobj --symbols %t.stripped | FileCheck %s --check-prefix=SYM_STRIP ++ ++# SYM: Symbols [ ++# SYM-COUNT-5: Type: SymDebugTable ({{.*}}) ++# SYM: ] ++ ++# SYM_STRIP: Symbols [ ++# SYM_STRIP-NOT: Type: SymDebugTable ({{.*}}) ++# SYM_STRIP: ] +-- +2.40.0.1.gc689dad23e + |