forked from OSchip/llvm-project
Revert r221150, as it broke sanitizer tests
llvm-svn: 221151
This commit is contained in:
parent
652ec6ee89
commit
cf6bfb1dd0
|
@ -41,8 +41,7 @@ class MCObjectStreamer : public MCStreamer {
|
|||
SmallVector<MCSymbolData *, 2> PendingLabels;
|
||||
|
||||
virtual void EmitInstToData(const MCInst &Inst, const MCSubtargetInfo&) = 0;
|
||||
void EmitCFIStartProcImpl(MCDwarfFrameInfo &Frame,
|
||||
MCSymbol *FuncSym) override;
|
||||
void EmitCFIStartProcImpl(MCDwarfFrameInfo &Frame) override;
|
||||
void EmitCFIEndProcImpl(MCDwarfFrameInfo &Frame) override;
|
||||
|
||||
// If any labels have been emitted but not assigned fragments, ensure that
|
||||
|
|
|
@ -198,7 +198,7 @@ class MCStreamer {
|
|||
protected:
|
||||
MCStreamer(MCContext &Ctx);
|
||||
|
||||
virtual void EmitCFIStartProcImpl(MCDwarfFrameInfo &Frame, MCSymbol *FuncSym);
|
||||
virtual void EmitCFIStartProcImpl(MCDwarfFrameInfo &Frame);
|
||||
virtual void EmitCFIEndProcImpl(MCDwarfFrameInfo &CurFrame);
|
||||
|
||||
WinEH::FrameInfo *getCurrentWinFrameInfo() {
|
||||
|
@ -661,7 +661,7 @@ public:
|
|||
|
||||
virtual MCSymbol *getDwarfLineTableSymbol(unsigned CUID);
|
||||
virtual void EmitCFISections(bool EH, bool Debug);
|
||||
void EmitCFIStartProc(bool IsSimple, MCSymbol *FuncSym);
|
||||
void EmitCFIStartProc(bool IsSimple);
|
||||
void EmitCFIEndProc();
|
||||
virtual void EmitCFIDefCfa(int64_t Register, int64_t Offset);
|
||||
virtual void EmitCFIDefCfaOffset(int64_t Offset);
|
||||
|
|
|
@ -66,7 +66,7 @@ void ARMException::beginFunction(const MachineFunction *MF) {
|
|||
"non-EH CFI not yet supported in prologue with EHABI lowering");
|
||||
if (MoveType == AsmPrinter::CFI_M_Debug) {
|
||||
shouldEmitCFI = true;
|
||||
Asm->OutStreamer.EmitCFIStartProc(false, Asm->CurrentFnSym);
|
||||
Asm->OutStreamer.EmitCFIStartProc(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@ void DwarfCFIException::beginFunction(const MachineFunction *MF) {
|
|||
if (!shouldEmitPersonality && !shouldEmitMoves)
|
||||
return;
|
||||
|
||||
Asm->OutStreamer.EmitCFIStartProc(/*IsSimple=*/false, Asm->CurrentFnSym);
|
||||
Asm->OutStreamer.EmitCFIStartProc(/*IsSimple=*/false);
|
||||
|
||||
// Indicate personality routine, if any.
|
||||
if (!shouldEmitPersonality)
|
||||
|
|
|
@ -54,8 +54,7 @@ private:
|
|||
unsigned UseDwarfDirectory : 1;
|
||||
|
||||
void EmitRegisterName(int64_t Register);
|
||||
void EmitCFIStartProcImpl(MCDwarfFrameInfo &Frame,
|
||||
MCSymbol *FuncSym) override;
|
||||
void EmitCFIStartProcImpl(MCDwarfFrameInfo &Frame) override;
|
||||
void EmitCFIEndProcImpl(MCDwarfFrameInfo &Frame) override;
|
||||
|
||||
public:
|
||||
|
@ -926,8 +925,7 @@ void MCAsmStreamer::EmitCFISections(bool EH, bool Debug) {
|
|||
EmitEOL();
|
||||
}
|
||||
|
||||
void MCAsmStreamer::EmitCFIStartProcImpl(MCDwarfFrameInfo &Frame,
|
||||
MCSymbol *FuncSym) {
|
||||
void MCAsmStreamer::EmitCFIStartProcImpl(MCDwarfFrameInfo &Frame) {
|
||||
OS << "\t.cfi_startproc";
|
||||
if (Frame.IsSimple)
|
||||
OS << " simple";
|
||||
|
|
|
@ -128,13 +128,10 @@ void MCObjectStreamer::EmitValueImpl(const MCExpr *Value, unsigned Size,
|
|||
DF->getContents().resize(DF->getContents().size() + Size, 0);
|
||||
}
|
||||
|
||||
void MCObjectStreamer::EmitCFIStartProcImpl(MCDwarfFrameInfo &Frame,
|
||||
MCSymbol *FuncSym) {
|
||||
if (!FuncSym) {
|
||||
FuncSym = getContext().CreateTempSymbol();
|
||||
EmitLabel(FuncSym);
|
||||
}
|
||||
Frame.Begin = FuncSym;
|
||||
void MCObjectStreamer::EmitCFIStartProcImpl(MCDwarfFrameInfo &Frame) {
|
||||
// We need to create a local symbol to avoid relocations.
|
||||
Frame.Begin = getContext().CreateTempSymbol();
|
||||
EmitLabel(Frame.Begin);
|
||||
}
|
||||
|
||||
void MCObjectStreamer::EmitCFIEndProcImpl(MCDwarfFrameInfo &Frame) {
|
||||
|
|
|
@ -172,9 +172,6 @@ private:
|
|||
/// \brief Are we parsing ms-style inline assembly?
|
||||
bool ParsingInlineAsm;
|
||||
|
||||
/// \brief The last symbol we emitted, used for call frame information.
|
||||
MCSymbol *LastFuncSymbol;
|
||||
|
||||
public:
|
||||
AsmParser(SourceMgr &SM, MCContext &Ctx, MCStreamer &Out,
|
||||
const MCAsmInfo &MAI);
|
||||
|
@ -494,8 +491,7 @@ AsmParser::AsmParser(SourceMgr &_SM, MCContext &_Ctx, MCStreamer &_Out,
|
|||
: Lexer(_MAI), Ctx(_Ctx), Out(_Out), MAI(_MAI), SrcMgr(_SM),
|
||||
PlatformParser(nullptr), CurBuffer(_SM.getMainFileID()),
|
||||
MacrosEnabledFlag(true), HadError(false), CppHashLineNumber(0),
|
||||
AssemblerDialect(~0U), IsDarwin(false), ParsingInlineAsm(false),
|
||||
LastFuncSymbol(nullptr) {
|
||||
AssemblerDialect(~0U), IsDarwin(false), ParsingInlineAsm(false) {
|
||||
// Save the old handler.
|
||||
SavedDiagHandler = SrcMgr.getDiagHandler();
|
||||
SavedDiagContext = SrcMgr.getDiagContext();
|
||||
|
@ -1309,9 +1305,6 @@ bool AsmParser::parseStatement(ParseStatementInfo &Info,
|
|||
if (!ParsingInlineAsm)
|
||||
Out.EmitLabel(Sym);
|
||||
|
||||
// Record the symbol, so that it can be used for call frame information
|
||||
LastFuncSymbol = Sym;
|
||||
|
||||
// If we are generating dwarf for assembly source files then gather the
|
||||
// info to make a dwarf label entry for this label if needed.
|
||||
if (getContext().getGenDwarfForAssembly())
|
||||
|
@ -2968,7 +2961,7 @@ bool AsmParser::parseDirectiveCFIStartProc() {
|
|||
if (parseIdentifier(Simple) || Simple != "simple")
|
||||
return TokError("unexpected token in .cfi_startproc directive");
|
||||
|
||||
getStreamer().EmitCFIStartProc(!Simple.empty(), LastFuncSymbol);
|
||||
getStreamer().EmitCFIStartProc(!Simple.empty());
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -211,14 +211,14 @@ void MCStreamer::EmitCFISections(bool EH, bool Debug) {
|
|||
assert(EH || Debug);
|
||||
}
|
||||
|
||||
void MCStreamer::EmitCFIStartProc(bool IsSimple, MCSymbol *FuncSym) {
|
||||
void MCStreamer::EmitCFIStartProc(bool IsSimple) {
|
||||
MCDwarfFrameInfo *CurFrame = getCurrentDwarfFrameInfo();
|
||||
if (CurFrame && !CurFrame->End)
|
||||
report_fatal_error("Starting a frame before finishing the previous one!");
|
||||
|
||||
MCDwarfFrameInfo Frame;
|
||||
Frame.IsSimple = IsSimple;
|
||||
EmitCFIStartProcImpl(Frame, FuncSym);
|
||||
EmitCFIStartProcImpl(Frame);
|
||||
|
||||
const MCAsmInfo* MAI = Context.getAsmInfo();
|
||||
if (MAI) {
|
||||
|
@ -233,8 +233,8 @@ void MCStreamer::EmitCFIStartProc(bool IsSimple, MCSymbol *FuncSym) {
|
|||
DwarfFrameInfos.push_back(Frame);
|
||||
}
|
||||
|
||||
void MCStreamer::EmitCFIStartProcImpl(MCDwarfFrameInfo &Frame,
|
||||
MCSymbol *FuncSym) {}
|
||||
void MCStreamer::EmitCFIStartProcImpl(MCDwarfFrameInfo &Frame) {
|
||||
}
|
||||
|
||||
void MCStreamer::EmitCFIEndProc() {
|
||||
EnsureValidDwarfFrame();
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
// RUN: llvm-mc -triple aarch64-none-linux-gnu -filetype=obj %s -o %t
|
||||
// RUN: llvm-objdump -s %t | FileCheck %s --check-prefix=CHECK
|
||||
// RUN: llvm-readobj -r %t | FileCheck %s --check-prefix=RELOC
|
||||
// RUN: llvm-objdump -s %t | FileCheck %s
|
||||
.text
|
||||
.globl foo
|
||||
.type foo,@function
|
||||
|
@ -47,11 +46,3 @@ foo:
|
|||
// 00000000: PC begin for this FDE is at 00000000 (relocation is applied here)
|
||||
// 04000000: FDE applies up to PC begin+0x14
|
||||
// 00: Augmentation string length 0 for this FDE
|
||||
|
||||
|
||||
// Check the relocations applied to the .eh_frame section.
|
||||
// These must not contain section-relative relocations to a section which
|
||||
// is part of a group, as it could be removed.
|
||||
// RELOC: Section ({{[0-9]+}}) .rela.eh_frame {
|
||||
// RELOC-NEXT: 0x{{[0-9A-F]+}} R_AARCH64_PREL32 foo 0x0
|
||||
// RELOC-NEXT: }
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
; RUN: llc -verify-machineinstrs -mtriple=aarch64-none-linux-gnu %s -filetype=obj -o %t
|
||||
; RUN: llvm-objdump -s %t | FileCheck %s --check-prefix=CHECK
|
||||
; RUN: llvm-readobj -r %t | FileCheck %s --check-prefix=RELOC
|
||||
; RUN: llvm-objdump -s %t | FileCheck %s
|
||||
|
||||
declare i32 @__gxx_personality_v0(...)
|
||||
|
||||
|
@ -45,12 +44,3 @@ clean:
|
|||
; 00: Second part of aug (language-specific data): absolute pointer format used
|
||||
; 1b: pointer format: pc-relative signed 4-byte. Just like GNU.
|
||||
; 0c 1f 00: Initial instructions ("DW_CFA_def_cfa x31 ofs 0" in this case)
|
||||
|
||||
; Check the relocations applied to the .eh_frame section.
|
||||
; These must not contain section-relative relocations to a section which
|
||||
; is part of a group, as it could be removed.
|
||||
; RELOC: Section ({{[0-9]+}}) .rela.eh_frame {
|
||||
; RELOC-NEXT: 0x{{[0-9A-F]+}} R_AARCH64_ABS64 __gxx_personality_v0 0x0
|
||||
; RELOC-NEXT: 0x{{[0-9A-F]+}} R_AARCH64_PREL32 foo 0x0
|
||||
; RELOC-NEXT: 0x{{[0-9A-F]+}} R_AARCH64_ABS64 .gcc_except_table 0x0
|
||||
; RELOC-NEXT: }
|
||||
|
|
Loading…
Reference in New Issue