|
From: <sv...@va...> - 2009-08-03 13:29:56
|
Author: sewardj
Date: 2009-08-03 14:29:42 +0100 (Mon, 03 Aug 2009)
New Revision: 10696
Log:
Use Dwarf3 section version numbers as specified in Appendix F of the
Dwarf3 standard. (Jakub Jelinek). This is #200029, patch in comment
#1.
Modified:
trunk/coregrind/m_debuginfo/readdwarf.c
trunk/coregrind/m_debuginfo/readdwarf3.c
Modified: trunk/coregrind/m_debuginfo/readdwarf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf.c 2009-08-03 08:50:58 UTC (rev 10695)
+++ trunk/coregrind/m_debuginfo/readdwarf.c 2009-08-03 13:29:42 UTC (rev 10696)
@@ -512,9 +512,9 @@
VG_(printf)(" DWARF Version: %d\n",
(Int)info.li_version);
- if (info.li_version != 2) {
+ if (info.li_version != 2 && info.li_version != 3) {
ML_(symerr)(di, True,
- "Only DWARF version 2 line info "
+ "Only DWARF version 2 and 3 line info "
"is currently supported.");
goto out;
}
@@ -1162,9 +1162,9 @@
/* version should be 2 */
ver = *((UShort*)( block_img + blklen_len ));
- if ( ver != 2 ) {
+ if ( ver != 2 && ver != 3 ) {
ML_(symerr)( di, True,
- "Ignoring non-dwarf2 block in .debug_info" );
+ "Ignoring non-Dwarf2/3 block in .debug_info" );
continue;
}
@@ -3575,8 +3575,8 @@
VG_(printf)("cie.version = %d\n", (Int)cie_version);
if (di->ddump_frames)
VG_(printf)(" Version: %d\n", (Int)cie_version);
- if (cie_version != 1) {
- how = "unexpected CIE version (not 1)";
+ if (cie_version != 1 && cie_version != 3) {
+ how = "unexpected CIE version (not 1 nor 3)";
goto bad;
}
Modified: trunk/coregrind/m_debuginfo/readdwarf3.c
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf3.c 2009-08-03 08:50:58 UTC (rev 10695)
+++ trunk/coregrind/m_debuginfo/readdwarf3.c 2009-08-03 13:29:42 UTC (rev 10696)
@@ -1322,8 +1322,8 @@
get_Initial_Length( &is_dw64, &c,
"read_filename_table: invalid initial-length field" );
version = get_UShort( &c );
- if (version != 2)
- cc->barf("read_filename_table: Only DWARF version 2 line info "
+ if (version != 2 && version != 3)
+ cc->barf("read_filename_table: Only DWARF version 2 and 3 line info "
"is currently supported.");
/*header_length = (ULong)*/ get_Dwarfish_UWord( &c, is_dw64 );
/*minimum_instruction_length = */ get_UChar( &c );
|