[llvm] 57dc16f - [llvm] Strip stabs symbols in Mach-O when stripping debug info

via llvm-commits llvm-commits at lists.llvm.org
Sat Jun 3 00:32:08 PDT 2023


Author: Mike Hommey
Date: 2023-06-03T09:31:42+02:00
New Revision: 57dc16fbe3078b4f27e804a2a3a6594e46897c3c

URL: https://github.com/llvm/llvm-project/commit/57dc16fbe3078b4f27e804a2a3a6594e46897c3c
DIFF: https://github.com/llvm/llvm-project/commit/57dc16fbe3078b4f27e804a2a3a6594e46897c3c.diff

LOG: [llvm] Strip stabs symbols in Mach-O when stripping debug info

Added: 
    llvm/test/tools/llvm-objcopy/MachO/Inputs/strip-stabs.yaml
    llvm/test/tools/llvm-objcopy/MachO/strip-stabs.test

Modified: 
    llvm/lib/ObjCopy/MachO/MachOObjcopy.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/ObjCopy/MachO/MachOObjcopy.cpp b/llvm/lib/ObjCopy/MachO/MachOObjcopy.cpp
index d37241682efee..e26b363df21cc 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 0000000000000..3259aa228fedb
--- /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 0000000000000..90c00f60a152a
--- /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:     ]


        


More information about the llvm-commits mailing list