Enable StackMap Serialization for COFF

Summary

This change turns on the emission of 
__LLVM_Stackmaps section when generating COFF binaries.

Test Plan

Added a scenario to the test case: 
test\CodeGen\X86\statepoint-stackmap-format.ll.

Code Review:

http://reviews.llvm.org/D10680

llvm-svn: 240613
This commit is contained in:
Swaroop Sridhar 2015-06-25 00:28:42 +00:00
parent 89c36fab4b
commit c6d536f7a9
3 changed files with 10 additions and 2 deletions

View File

@ -733,6 +733,11 @@ void MCObjectFileInfo::initCOFFMCObjectFileInfo(Triple T) {
".tls$", COFF::IMAGE_SCN_CNT_INITIALIZED_DATA | COFF::IMAGE_SCN_MEM_READ |
COFF::IMAGE_SCN_MEM_WRITE,
SectionKind::getDataRel());
StackMapSection = Ctx->getCOFFSection(".llvm_stackmaps",
COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
COFF::IMAGE_SCN_MEM_READ,
SectionKind::getReadOnly());
}
void MCObjectFileInfo::InitMCObjectFileInfo(const Triple &TheTriple,

View File

@ -725,6 +725,8 @@ void X86AsmPrinter::EmitEndOfAsmFile(Module &M) {
for (auto & Symbol : DLLExportedFns)
GenerateExportDirective(Symbol, /*IsData=*/false);
}
SM.serializeToStackMapSection();
}
if (TT.isOSBinFormatELF()) {

View File

@ -1,10 +1,11 @@
; RUN: llc < %s | FileCheck %s
; RUN: llc < %s -mtriple="x86_64-pc-linux-gnu" | FileCheck %s
; RUN: llc < %s -mtriple="x86_64-pc-win64-coff" | FileCheck %s
; This test is a sanity check to ensure statepoints are generating StackMap
; sections correctly. This is not intended to be a rigorous test of the
; StackMap format (see the stackmap tests for that).
target datalayout = "e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"
declare zeroext i1 @return_i1()