mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-19 23:23:38 -04:00
[lib/MC] - Set SHF_EXCLUDE flag for .dwo sections.
DWARF5 spec says about single file split case: "The sections that do not require relocation, however, can be written to the relocatable object (.o) file but ignored by the the linker or they can be written to a separate DWARF object (.dwo) file that need not be accessed by the linker." Nice way to make linker to ignore them is to set SHF_EXCLUDE flag. It seems to be not harmful to always set it for .dwo sections. That is what this patch does. Differential revision: https://reviews.llvm.org/D52303 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342800 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
+11
-11
@@ -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 =
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user