diff --git a/llvm/include/llvm/Object/XCOFFObjectFile.h b/llvm/include/llvm/Object/XCOFFObjectFile.h --- a/llvm/include/llvm/Object/XCOFFObjectFile.h +++ b/llvm/include/llvm/Object/XCOFFObjectFile.h @@ -338,6 +338,7 @@ bool isSectionText(DataRefImpl Sec) const override; bool isSectionData(DataRefImpl Sec) const override; bool isSectionBSS(DataRefImpl Sec) const override; + bool isDebugSection(DataRefImpl Sec) const override; bool isSectionVirtual(DataRefImpl Sec) const override; relocation_iterator section_rel_begin(DataRefImpl Sec) const override; diff --git a/llvm/lib/Object/XCOFFObjectFile.cpp b/llvm/lib/Object/XCOFFObjectFile.cpp --- a/llvm/lib/Object/XCOFFObjectFile.cpp +++ b/llvm/lib/Object/XCOFFObjectFile.cpp @@ -311,6 +311,11 @@ return Flags & (XCOFF::STYP_BSS | XCOFF::STYP_TBSS); } +bool XCOFFObjectFile::isDebugSection(DataRefImpl Sec) const { + uint32_t Flags = getSectionFlags(Sec); + return Flags & (XCOFF::STYP_DEBUG | XCOFF::STYP_DWARF); +} + bool XCOFFObjectFile::isSectionVirtual(DataRefImpl Sec) const { return is64Bit() ? toSection64(Sec)->FileOffsetToRawData == 0 : toSection32(Sec)->FileOffsetToRawData == 0; diff --git a/llvm/test/tools/llvm-objdump/XCOFF/section-headers.test b/llvm/test/tools/llvm-objdump/XCOFF/section-headers.test --- a/llvm/test/tools/llvm-objdump/XCOFF/section-headers.test +++ b/llvm/test/tools/llvm-objdump/XCOFF/section-headers.test @@ -11,6 +11,8 @@ # CHECK-NEXT: 2 .bss 00000000 00000010 BSS # CHECK-NEXT: 3 .tdata 00000004 00000000 DATA # CHECK-NEXT: 4 .tbss 00000000 00000000 BSS +# CHECK-NEXT: 5 .dwline 00000046 00000000 DEBUG +# CHECK-NEXT: 6 .debug 00000046 00000000 DEBUG --- !XCOFF FileHeader: @@ -33,6 +35,12 @@ - Name: .tbss Size: 0x0 Flags: [ STYP_TBSS ] + - Name: .dwline + Size: 0x46 + Flags: [ STYP_DWARF ] + - Name: .debug + Size: 0x46 + Flags: [ STYP_DEBUG ] ## Check the -h/--section-headers option prints long section names. # RUN: yaml2obj %s --docnum=2 -o %t-longname.o