summaryrefslogtreecommitdiffstats
path: root/build/build-clang/D151864.patch
diff options
context:
space:
mode:
Diffstat (limited to 'build/build-clang/D151864.patch')
-rw-r--r--build/build-clang/D151864.patch308
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
+