mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
Add the suffix to the Win64 EH data sections' names if given. Add a test for
this. XFAIL'd, because the COFF AsmParser can't handle .section yet. llvm-svn: 132220
This commit is contained in:
parent
531aa71d22
commit
cb20ea9935
@ -213,12 +213,8 @@ public:
|
||||
virtual void Initialize(MCContext &Ctx, const TargetMachine &TM);
|
||||
|
||||
virtual const MCSection *getEHFrameSection() const;
|
||||
virtual const MCSection *getWin64EHFuncTableSection(StringRef) const {
|
||||
return PDataSection;
|
||||
}
|
||||
virtual const MCSection *getWin64EHTableSection(StringRef) const {
|
||||
return XDataSection;
|
||||
}
|
||||
virtual const MCSection *getWin64EHFuncTableSection(StringRef) const;
|
||||
virtual const MCSection *getWin64EHTableSection(StringRef) const;
|
||||
|
||||
virtual const MCSection *getDrectveSection() const { return DrectveSection; }
|
||||
|
||||
|
@ -1014,6 +1014,28 @@ const MCSection *TargetLoweringObjectFileCOFF::getEHFrameSection() const {
|
||||
SectionKind::getDataRel());
|
||||
}
|
||||
|
||||
const MCSection *TargetLoweringObjectFileCOFF::getWin64EHFuncTableSection(
|
||||
StringRef suffix) const {
|
||||
if (suffix == "")
|
||||
return PDataSection;
|
||||
return getContext().getCOFFSection((".pdata"+suffix).str(),
|
||||
COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
|
||||
COFF::IMAGE_SCN_MEM_READ |
|
||||
COFF::IMAGE_SCN_MEM_WRITE,
|
||||
SectionKind::getDataRel());
|
||||
}
|
||||
|
||||
const MCSection *TargetLoweringObjectFileCOFF::getWin64EHTableSection(
|
||||
StringRef suffix) const {
|
||||
if (suffix == "")
|
||||
return XDataSection;
|
||||
return getContext().getCOFFSection((".xdata"+suffix).str(),
|
||||
COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
|
||||
COFF::IMAGE_SCN_MEM_READ |
|
||||
COFF::IMAGE_SCN_MEM_WRITE,
|
||||
SectionKind::getDataRel());
|
||||
}
|
||||
|
||||
|
||||
static unsigned
|
||||
getCOFFSectionFlags(SectionKind K) {
|
||||
|
37
test/MC/COFF/seh-section.s
Normal file
37
test/MC/COFF/seh-section.s
Normal file
@ -0,0 +1,37 @@
|
||||
// This test ensures that, if the section containing a function has a suffix
|
||||
// (e.g. .text$foo), its unwind info section also has a suffix (.xdata$foo).
|
||||
// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | coff-dump.py | FileCheck %s
|
||||
// XFAIL: *
|
||||
|
||||
// CHECK: Name = .xdata$foo
|
||||
// CHECK-NEXT: VirtualSize
|
||||
// CHECK-NEXT: VirtualAddress
|
||||
// CHECK-NEXT: SizeOfRawData = 8
|
||||
// CHECK-NEXT: PointerToRawData
|
||||
// CHECK-NEXT: PointerToRelocations
|
||||
// CHECK-NEXT: PointerToLineNumbers
|
||||
// CHECK-NEXT: NumberOfRelocations = 0
|
||||
// CHECK-NEXT: NumberOfLineNumbers = 0
|
||||
// CHECK-NEXT: Charateristics
|
||||
// CHECK-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA
|
||||
// CHECK-NEXT: IMAGE_SCN_ALIGN_4BYTES
|
||||
// CHECK-NEXT: IMAGE_SCN_MEM_READ
|
||||
// CHECK-NEXT: IMAGE_SCN_MEM_WRITE
|
||||
// CHECK-NEXT: SectionData
|
||||
// CHECK-NEXT: 01 05 02 00 05 50 04 02
|
||||
|
||||
.section .text$foo,"x"
|
||||
.globl foo
|
||||
.def foo; .scl 2; .type 32; .endef
|
||||
.seh_proc foo
|
||||
foo:
|
||||
subq $8, %rsp
|
||||
.seh_stackalloc 8
|
||||
pushq %rbp
|
||||
.seh_pushreg %rbp
|
||||
.seh_endprologue
|
||||
popq %rbp
|
||||
addq $8, %rsp
|
||||
ret
|
||||
.seh_endproc
|
||||
|
Loading…
Reference in New Issue
Block a user