mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-10 22:43:53 +00: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 llvm-svn: 342800
This commit is contained in:
parent
ec7fbb8ed9
commit
b65edffc2d
@ -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 =
|
||||
|
32
test/MC/ELF/exclude-debug-dwo.s
Normal file
32
test/MC/ELF/exclude-debug-dwo.s
Normal file
@ -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
|
Loading…
x
Reference in New Issue
Block a user