diff options
author | Jim Laskey <jlaskey@mac.com> | 2006-06-15 20:51:43 +0000 |
---|---|---|
committer | Jim Laskey <jlaskey@mac.com> | 2006-06-15 20:51:43 +0000 |
commit | f8a01a966120a041fe96300271573a8bf5a3e668 (patch) | |
tree | b9470b8d3bd8be4edbffa9928f0b2016e87487e5 /lib | |
parent | d5a932b92af122209bfb53fc3198698a4af18371 (diff) | |
download | external_llvm-f8a01a966120a041fe96300271573a8bf5a3e668.zip external_llvm-f8a01a966120a041fe96300271573a8bf5a3e668.tar.gz external_llvm-f8a01a966120a041fe96300271573a8bf5a3e668.tar.bz2 |
1. Support standard dwarf format (was bootstrapping in Apple format.)
2. Add vector support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28807 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/CodeGen/DwarfWriter.cpp | 16 | ||||
-rw-r--r-- | lib/CodeGen/MachineDebugInfo.cpp | 2 | ||||
-rw-r--r-- | lib/Support/Dwarf.cpp | 7 | ||||
-rw-r--r-- | lib/Target/PowerPC/PPCAsmPrinter.cpp | 22 |
4 files changed, 32 insertions, 15 deletions
diff --git a/lib/CodeGen/DwarfWriter.cpp b/lib/CodeGen/DwarfWriter.cpp index 3aadd97..7805bbc 100644 --- a/lib/CodeGen/DwarfWriter.cpp +++ b/lib/CodeGen/DwarfWriter.cpp @@ -1265,7 +1265,7 @@ DIE *DwarfWriter::NewType(DIE *Context, TypeDesc *TyDesc, CompileUnit *Unit) { // Fundamental types like int, float, bool Slot = Ty = new DIE(DW_TAG_base_type); unsigned Encoding = BasicTy->getEncoding(); - Ty->AddUInt (DW_AT_encoding, DW_FORM_data1, Encoding); + Ty->AddUInt(DW_AT_encoding, DW_FORM_data1, Encoding); } else if (DerivedTypeDesc *DerivedTy = dyn_cast<DerivedTypeDesc>(TyDesc)) { // Create specific DIE. Slot = Ty = new DIE(DerivedTy->getTag()); @@ -1287,6 +1287,12 @@ DIE *DwarfWriter::NewType(DIE *Context, TypeDesc *TyDesc, CompileUnit *Unit) { Ty->AddDIEntry(DW_AT_type, DW_FORM_ref4, NewType(Context, FromTy, Unit)); } + + // check for vector type + if (CompTy->isVector()) { + Ty->AddUInt(DW_AT_GNU_vector, DW_FORM_flag, 1); + } + // Don't emit size attribute. Size = 0; @@ -1419,7 +1425,8 @@ CompileUnit *DwarfWriter::NewCompileUnit(CompileUnitDesc *UnitDesc, unsigned ID) { // Construct debug information entry. DIE *Die = new DIE(DW_TAG_compile_unit); - Die->AddLabel (DW_AT_stmt_list, DW_FORM_data4, DWLabel("line", 0)); + Die->AddDelta (DW_AT_stmt_list, DW_FORM_data4, DWLabel("line", 0), + DWLabel("section_line", 0)); Die->AddLabel (DW_AT_high_pc, DW_FORM_addr, DWLabel("text_end", 0)); Die->AddLabel (DW_AT_low_pc, DW_FORM_addr, DWLabel("text_begin", 0)); Die->AddString(DW_AT_producer, DW_FORM_string, UnitDesc->getProducer()); @@ -1842,7 +1849,7 @@ void DwarfWriter::EmitFrameMoves(const char *BaseLabel, unsigned BaseLabelID, int stackGrowth = Asm->TM.getFrameInfo()->getStackGrowthDirection() == TargetFrameInfo::StackGrowsUp ? - AddressSize : -AddressSize; + AddressSize : -AddressSize; EmitULEB128Bytes(Src.getOffset() / stackGrowth); EOL("Offset"); @@ -1875,7 +1882,8 @@ void DwarfWriter::EmitDebugInfo() const { EmitInt32(ContentSize); EOL("Length of Compilation Unit Info"); EmitInt16(DWARF_VERSION); EOL("DWARF version number"); - EmitReference("abbrev_begin", 0); EOL("Offset Into Abbrev. Section"); + EmitDifference("abbrev_begin", 0, "section_abbrev", 0); + EOL("Offset Into Abbrev. Section"); EmitInt8(AddressSize); EOL("Address Size (in bytes)"); EmitDIE(Die); diff --git a/lib/CodeGen/MachineDebugInfo.cpp b/lib/CodeGen/MachineDebugInfo.cpp index fcdf30d..a3013e9 100644 --- a/lib/CodeGen/MachineDebugInfo.cpp +++ b/lib/CodeGen/MachineDebugInfo.cpp @@ -817,6 +817,7 @@ void DerivedTypeDesc::dump() { CompositeTypeDesc::CompositeTypeDesc(unsigned T) : DerivedTypeDesc(T) +, IsVector(false) , Elements() {} @@ -839,6 +840,7 @@ bool CompositeTypeDesc::classof(const DebugInfoDesc *D) { void CompositeTypeDesc::ApplyToFields(DIVisitor *Visitor) { DerivedTypeDesc::ApplyToFields(Visitor); + Visitor->Apply(IsVector); Visitor->Apply(Elements); } diff --git a/lib/Support/Dwarf.cpp b/lib/Support/Dwarf.cpp index 1f2eef4..409eadd 100644 --- a/lib/Support/Dwarf.cpp +++ b/lib/Support/Dwarf.cpp @@ -188,6 +188,13 @@ const char *AttributeString(unsigned Attribute) { case DW_AT_elemental: return "AT_elemental"; case DW_AT_pure: return "AT_pure"; case DW_AT_recursive: return "AT_recursive"; + case DW_AT_sf_names: return "AT_sf_names"; + case DW_AT_src_info: return "AT_src_info"; + case DW_AT_mac_info: return "AT_mac_info"; + case DW_AT_src_coords: return "AT_src_coords"; + case DW_AT_body_begin: return "AT_body_begin"; + case DW_AT_body_end: return "AT_body_end"; + case DW_AT_GNU_vector: return "AT_GNU_vector"; case DW_AT_lo_user: return "AT_lo_user"; case DW_AT_hi_user: return "AT_hi_user"; } diff --git a/lib/Target/PowerPC/PPCAsmPrinter.cpp b/lib/Target/PowerPC/PPCAsmPrinter.cpp index 44ab7f8..6d78a5d 100644 --- a/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -246,17 +246,17 @@ namespace { : DwarfWriter(o, ap) { needsSet = true; - DwarfAbbrevSection = ".section __DWARFA,__debug_abbrev"; - DwarfInfoSection = ".section __DWARFA,__debug_info"; - DwarfLineSection = ".section __DWARFA,__debug_line"; - DwarfFrameSection = ".section __DWARFA,__debug_frame"; - DwarfPubNamesSection = ".section __DWARFA,__debug_pubnames"; - DwarfPubTypesSection = ".section __DWARFA,__debug_pubtypes"; - DwarfStrSection = ".section __DWARFA,__debug_str"; - DwarfLocSection = ".section __DWARFA,__debug_loc"; - DwarfARangesSection = ".section __DWARFA,__debug_aranges"; - DwarfRangesSection = ".section __DWARFA,__debug_ranges"; - DwarfMacInfoSection = ".section __DWARFA,__debug_macinfo"; + DwarfAbbrevSection = ".section __DWARF,__debug_abbrev"; + DwarfInfoSection = ".section __DWARF,__debug_info"; + DwarfLineSection = ".section __DWARF,__debug_line"; + DwarfFrameSection = ".section __DWARF,__debug_frame"; + DwarfPubNamesSection = ".section __DWARF,__debug_pubnames"; + DwarfPubTypesSection = ".section __DWARF,__debug_pubtypes"; + DwarfStrSection = ".section __DWARF,__debug_str"; + DwarfLocSection = ".section __DWARF,__debug_loc"; + DwarfARangesSection = ".section __DWARF,__debug_aranges"; + DwarfRangesSection = ".section __DWARF,__debug_ranges"; + DwarfMacInfoSection = ".section __DWARF,__debug_macinfo"; TextSection = ".text"; DataSection = ".data"; } |