summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Schuetze <r.sagitario@gmx.de>2015-02-17 07:27:59 (GMT)
committerRainer Schuetze <r.sagitario@gmx.de>2015-02-17 07:30:18 (GMT)
commit804e6a3d3a2e0f93339c9cdca0768a4b3af6f28f (patch)
tree8523394e017d39111fd3bcf49fdcc0c6082ac374
parent51e4674fbb8dcfb0c5025cb9ecb209d32563163a (diff)
downloadcv2pdb-804e6a3d3a2e0f93339c9cdca0768a4b3af6f28f.zip
cv2pdb-804e6a3d3a2e0f93339c9cdca0768a4b3af6f28f.tar.gz
cv2pdb-804e6a3d3a2e0f93339c9cdca0768a4b3af6f28f.tar.bz2
* DWARF: fixed issues with DW_FORM_ref_addr, DW_AT_upper_bound and DW_AT_lower_bound
* DWARF: translate __int128 to CV code 0x14, just a wild guesss
-rw-r--r--CHANGES6
-rw-r--r--VERSION2
-rw-r--r--src/cv2pdb_vs12.sln192
-rw-r--r--src/dwarf2pdb.cpp1
-rw-r--r--src/readDwarf.cpp22
5 files changed, 120 insertions, 103 deletions
diff --git a/CHANGES b/CHANGES
index d922864..3f700f3 100644
--- a/CHANGES
+++ b/CHANGES
@@ -209,4 +209,8 @@ unreleased Version 0.22
2014-12-19 Version 0.33
* DWARF: revamped location expression evaluator by Vadim Chugunov
- * \ No newline at end of file
+
+2015-02-17 Version 0.34
+
+ * DWARF: fixed issues with DW_FORM_ref_addr, DW_AT_upper_bound and DW_AT_lower_bound
+ * DWARF: translate __int128 to CV code 0x14, just a wild guesss
diff --git a/VERSION b/VERSION
index 444d19f..41cf16f 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-VERSION = 0.33
+VERSION = 0.34
diff --git a/src/cv2pdb_vs12.sln b/src/cv2pdb_vs12.sln
index 059df1d..240fcee 100644
--- a/src/cv2pdb_vs12.sln
+++ b/src/cv2pdb_vs12.sln
@@ -1,96 +1,96 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.21005.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{7F4A9B6A-05A2-45D0-AFC3-3754B7FB77B9}"
- ProjectSection(SolutionItems) = preProject
- ..\autoexp.expand = ..\autoexp.expand
- ..\autoexp.visualizer = ..\autoexp.visualizer
- ..\CHANGES = ..\CHANGES
- ..\FEATURES = ..\FEATURES
- ..\INSTALL = ..\INSTALL
- ..\LICENSE = ..\LICENSE
- ..\Makefile = ..\Makefile
- ..\README = ..\README
- ..\TODO = ..\TODO
- ..\VERSION = ..\VERSION
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cv2pdb", "cv2pdb.vcxproj", "{5E2BD27D-446A-4C99-9829-135F7C000D90}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dviewhelper", "dviewhelper\dviewhelper.vcxproj", "{E4424774-A7A0-4502-8626-2723904D70EA}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cvtest", "..\test\cvtest.vcxproj", "{CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}"
-EndProject
-Project("{002A2DE9-8BB6-484D-9802-7E4AD4084715}") = "test", "..\test\test.visualdproj", "{370E7494-D0CB-450F-B74A-4CEEDB19FBAE}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug GDC|Win32 = Debug GDC|Win32
- Debug GDC|x64 = Debug GDC|x64
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- Win32 COFF|Win32 = Win32 COFF|Win32
- Win32 COFF|x64 = Win32 COFF|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {5E2BD27D-446A-4C99-9829-135F7C000D90}.Debug GDC|Win32.ActiveCfg = Debug|Win32
- {5E2BD27D-446A-4C99-9829-135F7C000D90}.Debug GDC|Win32.Build.0 = Debug|Win32
- {5E2BD27D-446A-4C99-9829-135F7C000D90}.Debug GDC|x64.ActiveCfg = Debug|Win32
- {5E2BD27D-446A-4C99-9829-135F7C000D90}.Debug|Win32.ActiveCfg = Debug|Win32
- {5E2BD27D-446A-4C99-9829-135F7C000D90}.Debug|Win32.Build.0 = Debug|Win32
- {5E2BD27D-446A-4C99-9829-135F7C000D90}.Debug|x64.ActiveCfg = Debug|Win32
- {5E2BD27D-446A-4C99-9829-135F7C000D90}.Release|Win32.ActiveCfg = Release|Win32
- {5E2BD27D-446A-4C99-9829-135F7C000D90}.Release|Win32.Build.0 = Release|Win32
- {5E2BD27D-446A-4C99-9829-135F7C000D90}.Release|x64.ActiveCfg = Release|Win32
- {5E2BD27D-446A-4C99-9829-135F7C000D90}.Win32 COFF|Win32.ActiveCfg = Debug|Win32
- {5E2BD27D-446A-4C99-9829-135F7C000D90}.Win32 COFF|Win32.Build.0 = Debug|Win32
- {5E2BD27D-446A-4C99-9829-135F7C000D90}.Win32 COFF|x64.ActiveCfg = Release|Win32
- {E4424774-A7A0-4502-8626-2723904D70EA}.Debug GDC|Win32.ActiveCfg = Debug|Win32
- {E4424774-A7A0-4502-8626-2723904D70EA}.Debug GDC|Win32.Build.0 = Debug|Win32
- {E4424774-A7A0-4502-8626-2723904D70EA}.Debug GDC|x64.ActiveCfg = Debug|Win32
- {E4424774-A7A0-4502-8626-2723904D70EA}.Debug|Win32.ActiveCfg = Debug|Win32
- {E4424774-A7A0-4502-8626-2723904D70EA}.Debug|Win32.Build.0 = Debug|Win32
- {E4424774-A7A0-4502-8626-2723904D70EA}.Debug|x64.ActiveCfg = Debug|Win32
- {E4424774-A7A0-4502-8626-2723904D70EA}.Release|Win32.ActiveCfg = Release|Win32
- {E4424774-A7A0-4502-8626-2723904D70EA}.Release|Win32.Build.0 = Release|Win32
- {E4424774-A7A0-4502-8626-2723904D70EA}.Release|x64.ActiveCfg = Release|Win32
- {E4424774-A7A0-4502-8626-2723904D70EA}.Win32 COFF|Win32.ActiveCfg = Debug|Win32
- {E4424774-A7A0-4502-8626-2723904D70EA}.Win32 COFF|Win32.Build.0 = Debug|Win32
- {E4424774-A7A0-4502-8626-2723904D70EA}.Win32 COFF|x64.ActiveCfg = Release|Win32
- {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Debug GDC|Win32.ActiveCfg = Debug|Win32
- {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Debug GDC|Win32.Build.0 = Debug|Win32
- {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Debug GDC|x64.ActiveCfg = Debug|Win32
- {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Debug|Win32.ActiveCfg = Debug|Win32
- {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Debug|Win32.Build.0 = Debug|Win32
- {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Debug|x64.ActiveCfg = Debug|Win32
- {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Release|Win32.ActiveCfg = Release|Win32
- {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Release|Win32.Build.0 = Release|Win32
- {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Release|x64.ActiveCfg = Release|Win32
- {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Win32 COFF|Win32.ActiveCfg = Debug|Win32
- {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Win32 COFF|Win32.Build.0 = Debug|Win32
- {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Win32 COFF|x64.ActiveCfg = Release|Win32
- {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Debug GDC|Win32.ActiveCfg = Debug GDC|Win32
- {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Debug GDC|Win32.Build.0 = Debug GDC|Win32
- {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Debug GDC|x64.ActiveCfg = Debug GDC|x64
- {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Debug GDC|x64.Build.0 = Debug GDC|x64
- {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Debug|Win32.ActiveCfg = Debug|Win32
- {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Debug|Win32.Build.0 = Debug|Win32
- {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Debug|x64.ActiveCfg = Debug GDC|x64
- {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Debug|x64.Build.0 = Debug GDC|x64
- {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Release|Win32.ActiveCfg = Release|Win32
- {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Release|Win32.Build.0 = Release|Win32
- {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Release|x64.ActiveCfg = Release|x64
- {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Release|x64.Build.0 = Release|x64
- {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Win32 COFF|Win32.ActiveCfg = Win32 COFF|Win32
- {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Win32 COFF|Win32.Build.0 = Win32 COFF|Win32
- {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Win32 COFF|x64.ActiveCfg = Win32 COFF|x64
- {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Win32 COFF|x64.Build.0 = Win32 COFF|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.21005.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{7F4A9B6A-05A2-45D0-AFC3-3754B7FB77B9}"
+ ProjectSection(SolutionItems) = preProject
+ ..\autoexp.expand = ..\autoexp.expand
+ ..\autoexp.visualizer = ..\autoexp.visualizer
+ ..\CHANGES = ..\CHANGES
+ ..\FEATURES = ..\FEATURES
+ ..\INSTALL = ..\INSTALL
+ ..\LICENSE = ..\LICENSE
+ ..\Makefile = ..\Makefile
+ ..\README = ..\README
+ ..\TODO = ..\TODO
+ ..\VERSION = ..\VERSION
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cv2pdb", "cv2pdb.vcxproj", "{5E2BD27D-446A-4C99-9829-135F7C000D90}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dviewhelper", "dviewhelper\dviewhelper.vcxproj", "{E4424774-A7A0-4502-8626-2723904D70EA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cvtest", "..\test\cvtest.vcxproj", "{CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}"
+EndProject
+Project("{002A2DE9-8BB6-484D-9802-7E4AD4084715}") = "test", "..\test\test.visualdproj", "{370E7494-D0CB-450F-B74A-4CEEDB19FBAE}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug GDC|Win32 = Debug GDC|Win32
+ Debug GDC|x64 = Debug GDC|x64
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ Win32 COFF|Win32 = Win32 COFF|Win32
+ Win32 COFF|x64 = Win32 COFF|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {5E2BD27D-446A-4C99-9829-135F7C000D90}.Debug GDC|Win32.ActiveCfg = Debug|Win32
+ {5E2BD27D-446A-4C99-9829-135F7C000D90}.Debug GDC|Win32.Build.0 = Debug|Win32
+ {5E2BD27D-446A-4C99-9829-135F7C000D90}.Debug GDC|x64.ActiveCfg = Debug|Win32
+ {5E2BD27D-446A-4C99-9829-135F7C000D90}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5E2BD27D-446A-4C99-9829-135F7C000D90}.Debug|Win32.Build.0 = Debug|Win32
+ {5E2BD27D-446A-4C99-9829-135F7C000D90}.Debug|x64.ActiveCfg = Debug|Win32
+ {5E2BD27D-446A-4C99-9829-135F7C000D90}.Release|Win32.ActiveCfg = Release|Win32
+ {5E2BD27D-446A-4C99-9829-135F7C000D90}.Release|Win32.Build.0 = Release|Win32
+ {5E2BD27D-446A-4C99-9829-135F7C000D90}.Release|x64.ActiveCfg = Release|Win32
+ {5E2BD27D-446A-4C99-9829-135F7C000D90}.Win32 COFF|Win32.ActiveCfg = Debug|Win32
+ {5E2BD27D-446A-4C99-9829-135F7C000D90}.Win32 COFF|Win32.Build.0 = Debug|Win32
+ {5E2BD27D-446A-4C99-9829-135F7C000D90}.Win32 COFF|x64.ActiveCfg = Release|Win32
+ {E4424774-A7A0-4502-8626-2723904D70EA}.Debug GDC|Win32.ActiveCfg = Debug|Win32
+ {E4424774-A7A0-4502-8626-2723904D70EA}.Debug GDC|Win32.Build.0 = Debug|Win32
+ {E4424774-A7A0-4502-8626-2723904D70EA}.Debug GDC|x64.ActiveCfg = Debug|Win32
+ {E4424774-A7A0-4502-8626-2723904D70EA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E4424774-A7A0-4502-8626-2723904D70EA}.Debug|Win32.Build.0 = Debug|Win32
+ {E4424774-A7A0-4502-8626-2723904D70EA}.Debug|x64.ActiveCfg = Debug|Win32
+ {E4424774-A7A0-4502-8626-2723904D70EA}.Release|Win32.ActiveCfg = Release|Win32
+ {E4424774-A7A0-4502-8626-2723904D70EA}.Release|Win32.Build.0 = Release|Win32
+ {E4424774-A7A0-4502-8626-2723904D70EA}.Release|x64.ActiveCfg = Release|Win32
+ {E4424774-A7A0-4502-8626-2723904D70EA}.Win32 COFF|Win32.ActiveCfg = Debug|Win32
+ {E4424774-A7A0-4502-8626-2723904D70EA}.Win32 COFF|Win32.Build.0 = Debug|Win32
+ {E4424774-A7A0-4502-8626-2723904D70EA}.Win32 COFF|x64.ActiveCfg = Release|Win32
+ {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Debug GDC|Win32.ActiveCfg = Debug|Win32
+ {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Debug GDC|Win32.Build.0 = Debug|Win32
+ {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Debug GDC|x64.ActiveCfg = Debug|Win32
+ {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Debug|Win32.Build.0 = Debug|Win32
+ {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Debug|x64.ActiveCfg = Debug|Win32
+ {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Release|Win32.ActiveCfg = Release|Win32
+ {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Release|Win32.Build.0 = Release|Win32
+ {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Release|x64.ActiveCfg = Release|Win32
+ {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Win32 COFF|Win32.ActiveCfg = Debug|Win32
+ {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Win32 COFF|Win32.Build.0 = Debug|Win32
+ {CCC0643D-7D3F-4D5E-AE0E-C871776E86AF}.Win32 COFF|x64.ActiveCfg = Release|Win32
+ {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Debug GDC|Win32.ActiveCfg = Debug GDC|Win32
+ {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Debug GDC|Win32.Build.0 = Debug GDC|Win32
+ {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Debug GDC|x64.ActiveCfg = Debug GDC|x64
+ {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Debug GDC|x64.Build.0 = Debug GDC|x64
+ {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Debug|Win32.ActiveCfg = Debug|Win32
+ {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Debug|Win32.Build.0 = Debug|Win32
+ {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Debug|x64.ActiveCfg = Debug|x64
+ {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Debug|x64.Build.0 = Debug|x64
+ {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Release|Win32.ActiveCfg = Release|Win32
+ {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Release|Win32.Build.0 = Release|Win32
+ {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Release|x64.ActiveCfg = Release|x64
+ {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Release|x64.Build.0 = Release|x64
+ {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Win32 COFF|Win32.ActiveCfg = Win32 COFF|Win32
+ {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Win32 COFF|Win32.Build.0 = Win32 COFF|Win32
+ {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Win32 COFF|x64.ActiveCfg = Win32 COFF|x64
+ {370E7494-D0CB-450F-B74A-4CEEDB19FBAE}.Win32 COFF|x64.Build.0 = Win32 COFF|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/src/dwarf2pdb.cpp b/src/dwarf2pdb.cpp
index 28365ee..80d64a4 100644
--- a/src/dwarf2pdb.cpp
+++ b/src/dwarf2pdb.cpp
@@ -539,6 +539,7 @@ int CV2PDB::addDWARFBasicType(const char*name, int encoding, int byte_size)
case 2: size = 1; break;
case 4: size = 2; break;
case 8: size = 3; break;
+ case 16: size = 4; break; // __int128? experimental, type exists with GCC for Win64
default:
setError("unsupported integer type size");
}
diff --git a/src/readDwarf.cpp b/src/readDwarf.cpp
index 42af041..d7a9dc0 100644
--- a/src/readDwarf.cpp
+++ b/src/readDwarf.cpp
@@ -426,7 +426,7 @@ bool DIECursor::readNext(DWARF_InfoData& id, bool stopAtNull)
case DW_FORM_sdata: a.type = Const; a.cons = SLEB128(ptr); break;
case DW_FORM_udata: a.type = Const; a.cons = LEB128(ptr); break;
case DW_FORM_string: a.type = String; a.string = (const char*)ptr; ptr += strlen(a.string) + 1; break;
- case DW_FORM_strp: a.type = String; a.string = (const char*)(img->debug_str + RDsize(ptr, cu->address_size)); break;
+ case DW_FORM_strp: a.type = String; a.string = (const char*)(img->debug_str + RDsize(ptr, cu->isDWARF64() ? 8 : 4)); break;
case DW_FORM_flag: a.type = Flag; a.flag = (*ptr++ != 0); break;
case DW_FORM_flag_present: a.type = Flag; a.flag = true; break;
case DW_FORM_ref1: a.type = Ref; a.ref = (byte*)cu + *ptr++; break;
@@ -444,7 +444,11 @@ bool DIECursor::readNext(DWARF_InfoData& id, bool stopAtNull)
switch (attr)
{
- case DW_AT_byte_size: assert(a.type == Const); id.byte_size = a.cons; break;
+ case DW_AT_byte_size:
+ assert(a.type == Const || a.type == Ref || a.type == ExprLoc);
+ if (a.type == Const) // TODO: other types not supported yet
+ id.byte_size = a.cons;
+ break;
case DW_AT_sibling: assert(a.type == Ref); id.sibling = a.ref; break;
case DW_AT_encoding: assert(a.type == Const); id.encoding = a.cons; break;
case DW_AT_name: assert(a.type == String); id.name = a.string; break;
@@ -458,13 +462,21 @@ bool DIECursor::readNext(DWARF_InfoData& id, bool stopAtNull)
id.pchi = id.pclo + a.cons;
else
assert(false);
- break;
+ break;
case DW_AT_ranges: assert(a.type == SecOffset); id.ranges = a.sec_offset; break;
case DW_AT_type: assert(a.type == Ref); id.type = a.ref; break;
case DW_AT_inline: assert(a.type == Const); id.inlined = a.cons; break;
case DW_AT_external: assert(a.type == Flag); id.external = a.flag; break;
- case DW_AT_upper_bound: assert(a.type == Const); id.upper_bound = a.cons; break;
- case DW_AT_lower_bound: assert(a.type == Const); id.lower_bound = a.cons; break;
+ case DW_AT_upper_bound:
+ assert(a.type == Const || a.type == Ref || a.type == ExprLoc);
+ if (a.type == Const) // TODO: other types not supported yet
+ id.upper_bound = a.cons;
+ break;
+ case DW_AT_lower_bound:
+ assert(a.type == Const || a.type == Ref || a.type == ExprLoc);
+ if (a.type == Const) // TODO: other types not supported yet
+ id.lower_bound = a.cons;
+ break;
case DW_AT_containing_type: assert(a.type == Ref); id.containing_type = a.ref; break;
case DW_AT_specification: assert(a.type == Ref); id.specification = a.ref; break;
case DW_AT_data_member_location: id.member_location = a; break;