From 87b4b8f7b437ab39f055bf4d740f0ca906aa122d Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Tue, 31 Jul 2018 21:26:35 +0000 Subject: [PATCH] [llvm-objcopy] Make --strip-debug strip .gdb_index Summary: See binutils-gdb/bfd/elf.c, GNU objcopy also strips .stab* (STABS) .line* (DWARF 1) .gnu.linkonce.wi.* (linkonce section for .debug_info) but I'm not sure we need to be compatible with it. Reviewers: dblaikie, alexshap, jakehehrlich, jhenderson Reviewed By: alexshap, jakehehrlich Subscribers: aprantl, JDevlieghere, jakehehrlich, llvm-commits Differential Revision: https://reviews.llvm.org/D50100 llvm-svn: 338443 --- llvm/test/tools/llvm-objcopy/strip-debug.test | 8 +++++++- llvm/tools/llvm-objcopy/llvm-objcopy.cpp | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/llvm/test/tools/llvm-objcopy/strip-debug.test b/llvm/test/tools/llvm-objcopy/strip-debug.test index c8f90d9ca19eb1..6c833f301c7fca 100644 --- a/llvm/test/tools/llvm-objcopy/strip-debug.test +++ b/llvm/test/tools/llvm-objcopy/strip-debug.test @@ -67,7 +67,7 @@ # RUN: llvm-objcopy --strip-debug %t.thin.a %t2.thin.a # RUN: cat %t.thin.a | FileCheck %s --check-prefix=VERIFY-THIN-ARCHIVE # RUN: cat %t2.thin.a | FileCheck %s --check-prefix=VERIFY-THIN-ARCHIVE - + # VERIFY-THIN-ARCHIVE: ! # Verify that the member of a thin archive was properly modified. @@ -94,6 +94,12 @@ Sections: - Name: .debugfoo Type: SHT_PROGBITS Content: "00000000" + - Name: .zdebugfoo + Type: SHT_PROGBITS + Content: "00000000" + - Name: .gdb_index + Type: SHT_PROGBITS + Content: "00000000" - Name: .text Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] diff --git a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp index e903e57ad5f48e..21a1622db76526 100644 --- a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp +++ b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp @@ -186,7 +186,8 @@ LLVM_ATTRIBUTE_NORETURN void reportError(StringRef File, Error E) { } // end namespace llvm static bool IsDebugSection(const SectionBase &Sec) { - return Sec.Name.startswith(".debug") || Sec.Name.startswith(".zdebug"); + return Sec.Name.startswith(".debug") || Sec.Name.startswith(".zdebug") || + Sec.Name == ".gdb_index"; } static bool IsDWOSection(const SectionBase &Sec) {