[llvm] r342800 - [lib/MC] - Set SHF_EXCLUDE flag for .dwo sections.

George Rimar via llvm-commits llvm-commits at lists.llvm.org
Sat Sep 22 00:36:21 PDT 2018


Author: grimar
Date: Sat Sep 22 00:36:20 2018
New Revision: 342800

URL: http://llvm.org/viewvc/llvm-project?rev=342800&view=rev
Log:
[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

Added:
    llvm/trunk/test/MC/ELF/exclude-debug-dwo.s
Modified:
    llvm/trunk/lib/MC/MCObjectFileInfo.cpp

Modified: llvm/trunk/lib/MC/MCObjectFileInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCObjectFileInfo.cpp?rev=342800&r1=342799&r2=342800&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCObjectFileInfo.cpp (original)
+++ llvm/trunk/lib/MC/MCObjectFileInfo.cpp Sat Sep 22 00:36:20 2018
@@ -435,22 +435,22 @@ void MCObjectFileInfo::initELFMCObjectFi
 
   // 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 =

Added: llvm/trunk/test/MC/ELF/exclude-debug-dwo.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/exclude-debug-dwo.s?rev=342800&view=auto
==============================================================================
--- llvm/trunk/test/MC/ELF/exclude-debug-dwo.s (added)
+++ llvm/trunk/test/MC/ELF/exclude-debug-dwo.s Sat Sep 22 00:36:20 2018
@@ -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




More information about the llvm-commits mailing list