From 7a04b26015c23cfcee5e0d44add178fd77c130d2 Mon Sep 17 00:00:00 2001 From: Julian Seward Date: Mon, 3 Aug 2009 13:29:42 +0000 Subject: [PATCH] Use Dwarf3 section version numbers as specified in Appendix F of the Dwarf3 standard. (Jakub Jelinek). This is #200029, patch in comment #1. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10696 --- coregrind/m_debuginfo/readdwarf.c | 12 ++++++------ coregrind/m_debuginfo/readdwarf3.c | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/coregrind/m_debuginfo/readdwarf.c b/coregrind/m_debuginfo/readdwarf.c index 02716576d..3dfe6d49c 100644 --- a/coregrind/m_debuginfo/readdwarf.c +++ b/coregrind/m_debuginfo/readdwarf.c @@ -512,9 +512,9 @@ void read_dwarf2_lineblock ( struct _DebugInfo* di, 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 @@ void ML_(read_debuginfo_dwarf3) /* 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 @@ void ML_(read_callframe_info_dwarf3) 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; } diff --git a/coregrind/m_debuginfo/readdwarf3.c b/coregrind/m_debuginfo/readdwarf3.c index 09dd3c87e..b6c628949 100644 --- a/coregrind/m_debuginfo/readdwarf3.c +++ b/coregrind/m_debuginfo/readdwarf3.c @@ -1322,8 +1322,8 @@ void read_filename_table( /*MOD*/D3VarParser* parser, 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 );