mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-24 21:00:36 +00:00
For COFF only: dwarf debug info output a label reference as a section relative item only when it's one of dw_from strp, sec_offset, ref_addr or op_call_ref instead of going by size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188296 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a036a31d94
commit
e05a304e5a
@ -359,13 +359,15 @@ namespace llvm {
|
||||
/// where the size in bytes of the directive is specified by Size and Label
|
||||
/// specifies the label. This implicitly uses .set if it is available.
|
||||
void EmitLabelPlusOffset(const MCSymbol *Label, uint64_t Offset,
|
||||
unsigned Size) const;
|
||||
unsigned Size,
|
||||
bool IsSectionRelative = false) const;
|
||||
|
||||
/// EmitLabelReference - Emit something like ".long Label"
|
||||
/// where the size in bytes of the directive is specified by Size and Label
|
||||
/// specifies the label.
|
||||
void EmitLabelReference(const MCSymbol *Label, unsigned Size) const {
|
||||
EmitLabelPlusOffset(Label, 0, Size);
|
||||
void EmitLabelReference(const MCSymbol *Label, unsigned Size,
|
||||
bool IsSectionRelative = false) const {
|
||||
EmitLabelPlusOffset(Label, 0, Size, IsSectionRelative);
|
||||
}
|
||||
|
||||
//===------------------------------------------------------------------===//
|
||||
|
@ -1415,9 +1415,9 @@ void AsmPrinter::EmitLabelOffsetDifference(const MCSymbol *Hi, uint64_t Offset,
|
||||
/// where the size in bytes of the directive is specified by Size and Label
|
||||
/// specifies the label. This implicitly uses .set if it is available.
|
||||
void AsmPrinter::EmitLabelPlusOffset(const MCSymbol *Label, uint64_t Offset,
|
||||
unsigned Size)
|
||||
unsigned Size, bool IsSectionRelative)
|
||||
const {
|
||||
if (MAI->needsDwarfSectionOffsetDirective() && Size == 4) { // secrel32 ONLY works for 32bits.
|
||||
if (MAI->needsDwarfSectionOffsetDirective() && IsSectionRelative) {
|
||||
OutStreamer.EmitCOFFSecRel32(Label);
|
||||
return;
|
||||
}
|
||||
|
@ -293,7 +293,9 @@ void DIEExpr::print(raw_ostream &O) const {
|
||||
/// EmitValue - Emit label value.
|
||||
///
|
||||
void DIELabel::EmitValue(AsmPrinter *AP, uint16_t Form) const {
|
||||
AP->EmitLabelReference(Label, SizeOf(AP, Form));
|
||||
AP->EmitLabelReference(Label, SizeOf(AP, Form), Form == dwarf::DW_FORM_strp
|
||||
|| Form == dwarf::DW_FORM_sec_offset || Form == dwarf::DW_OP_call_ref
|
||||
|| Form == dwarf::DW_FORM_ref_addr);
|
||||
}
|
||||
|
||||
/// SizeOf - Determine size of label value in bytes.
|
||||
|
Loading…
x
Reference in New Issue
Block a user