diff options
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/lib/MC/MCObjectFileInfo.cpp | 22 | ||||
-rw-r--r-- | llvm/test/MC/ELF/exclude-debug-dwo.s | 32 |
2 files changed, 43 insertions, 11 deletions
diff --git a/llvm/lib/MC/MCObjectFileInfo.cpp b/llvm/lib/MC/MCObjectFileInfo.cpp index 76b8ef9fdf4..0f9070bc7dd 100644 --- a/llvm/lib/MC/MCObjectFileInfo.cpp +++ b/llvm/lib/MC/MCObjectFileInfo.cpp @@ -435,22 +435,22 @@ void MCObjectFileInfo::initELFMCObjectFileInfo(const Triple &T, bool Large) { // Fission Sections DwarfInfoDWOSection = - Ctx->getELFSection(".debug_info.dwo", DebugSecType, 0); + Ctx->getELFSection(".debug_info.dwo", DebugSecType, ELF::SHF_EXCLUDE); DwarfTypesDWOSection = - Ctx->getELFSection(".debug_types.dwo", DebugSecType, 0); + Ctx->getELFSection(".debug_types.dwo", DebugSecType, ELF::SHF_EXCLUDE); DwarfAbbrevDWOSection = - Ctx->getELFSection(".debug_abbrev.dwo", DebugSecType, 0); - DwarfStrDWOSection = - Ctx->getELFSection(".debug_str.dwo", DebugSecType, - ELF::SHF_MERGE | ELF::SHF_STRINGS, 1, ""); + Ctx->getELFSection(".debug_abbrev.dwo", DebugSecType, ELF::SHF_EXCLUDE); + DwarfStrDWOSection = Ctx->getELFSection( + ".debug_str.dwo", DebugSecType, + ELF::SHF_MERGE | ELF::SHF_STRINGS | ELF::SHF_EXCLUDE, 1, ""); DwarfLineDWOSection = - Ctx->getELFSection(".debug_line.dwo", DebugSecType, 0); + Ctx->getELFSection(".debug_line.dwo", DebugSecType, ELF::SHF_EXCLUDE); DwarfLocDWOSection = - Ctx->getELFSection(".debug_loc.dwo", DebugSecType, 0); - DwarfStrOffDWOSection = - Ctx->getELFSection(".debug_str_offsets.dwo", DebugSecType, 0); + Ctx->getELFSection(".debug_loc.dwo", DebugSecType, ELF::SHF_EXCLUDE); + DwarfStrOffDWOSection = Ctx->getELFSection(".debug_str_offsets.dwo", + DebugSecType, ELF::SHF_EXCLUDE); DwarfRnglistsDWOSection = - Ctx->getELFSection(".debug_rnglists.dwo", DebugSecType, 0); + Ctx->getELFSection(".debug_rnglists.dwo", DebugSecType, ELF::SHF_EXCLUDE); // DWP Sections DwarfCUIndexSection = diff --git a/llvm/test/MC/ELF/exclude-debug-dwo.s b/llvm/test/MC/ELF/exclude-debug-dwo.s new file mode 100644 index 00000000000..c0f3b863e6e --- /dev/null +++ b/llvm/test/MC/ELF/exclude-debug-dwo.s @@ -0,0 +1,32 @@ +# RUN: llvm-mc -triple x86_64-pc-linux-gnu %s -filetype=obj -o %t.o +# RUN: llvm-readobj -s --elf-output-style=GNU %t.o | FileCheck %s + +## Check we add SHF_EXCLUDE flag for .dwo debug sections. +# CHECK: .debug_info.dwo {{.*}} E +# CHECK: .debug_types.dwo {{.*}} E +# CHECK: .debug_abbrev.dwo {{.*}} E +# CHECK: .debug_str.dwo {{.*}} EMS +# CHECK: .debug_line.dwo {{.*}} E +# CHECK: .debug_loc.dwo {{.*}} E +# CHECK: .debug_str_offsets.dwo {{.*}} E + +.section .debug_info.dwo +nop + +.section .debug_types.dwo +nop + +.section .debug_abbrev.dwo +nop + +.section .debug_str.dwo +nop + +.section .debug_line.dwo +nop + +.section .debug_loc.dwo +nop + +.section .debug_str_offsets.dwo +nop |