Jakub Jelinek c3c87b
--- valgrind/coregrind/m_debuginfo/readdwarf3.c.jj	2009-07-13 12:15:20.000000000 +0200
Jakub Jelinek c3c87b
+++ valgrind/coregrind/m_debuginfo/readdwarf3.c	2009-07-13 13:16:23.000000000 +0200
Jakub Jelinek a11e79
@@ -1415,8 +1415,8 @@ void read_filename_table( /*MOD*/D3VarPa
Jakub Jelinek a11e79
       = get_Initial_Length( &is_dw64, &c,
Jakub Jelinek c3c87b
            "read_filename_table: invalid initial-length field" );
Jakub Jelinek c3c87b
    version = get_UShort( &c );
Jakub Jelinek c3c87b
-   if (version != 2)
Jakub Jelinek c3c87b
-     cc->barf("read_filename_table: Only DWARF version 2 line info "
Jakub Jelinek c3c87b
+   if (version != 2 && version != 3)
Jakub Jelinek c3c87b
+     cc->barf("read_filename_table: Only DWARF version 2 and 3 line info "
Jakub Jelinek c3c87b
               "is currently supported.");
Jakub Jelinek a11e79
    header_length = (ULong)get_Dwarfish_UWord( &c, is_dw64 );
Jakub Jelinek a11e79
    minimum_instruction_length = get_UChar( &c );
Jakub Jelinek c3c87b
--- valgrind/coregrind/m_debuginfo/readdwarf.c.jj	2009-07-13 12:15:20.000000000 +0200
Jakub Jelinek c3c87b
+++ valgrind/coregrind/m_debuginfo/readdwarf.c	2009-07-13 13:17:52.000000000 +0200
Jakub Jelinek c3c87b
@@ -512,9 +512,9 @@ void read_dwarf2_lineblock ( struct _Deb
Jakub Jelinek c3c87b
       VG_(printf)("  DWARF Version:               %d\n", 
Jakub Jelinek c3c87b
                   (Int)info.li_version);
Jakub Jelinek c3c87b
 
Jakub Jelinek c3c87b
-   if (info.li_version != 2) {
Jakub Jelinek c3c87b
+   if (info.li_version != 2 && info.li_version != 3) {
Jakub Jelinek c3c87b
       ML_(symerr)(di, True,
Jakub Jelinek c3c87b
-                  "Only DWARF version 2 line info "
Jakub Jelinek c3c87b
+                  "Only DWARF version 2 and 3 line info "
Jakub Jelinek c3c87b
                   "is currently supported.");
Jakub Jelinek c3c87b
       goto out;
Jakub Jelinek c3c87b
    }
Jakub Jelinek c3c87b
@@ -1162,7 +1162,7 @@ void ML_(read_debuginfo_dwarf3)
Jakub Jelinek c3c87b
 
Jakub Jelinek c3c87b
       /* version should be 2 */
Jakub Jelinek c3c87b
       ver = *((UShort*)( block_img + blklen_len ));
Jakub Jelinek c3c87b
-      if ( ver != 2 ) {
Jakub Jelinek c3c87b
+      if ( ver != 2 && ver != 3 ) {
Jakub Jelinek c3c87b
          ML_(symerr)( di, True,
Jakub Jelinek c3c87b
                       "Ignoring non-dwarf2 block in .debug_info" );
Jakub Jelinek c3c87b
          continue;
Jakub Jelinek c3c87b
@@ -3575,8 +3575,8 @@ void ML_(read_callframe_info_dwarf3)
Jakub Jelinek c3c87b
             VG_(printf)("cie.version     = %d\n", (Int)cie_version);
Jakub Jelinek c3c87b
          if (di->ddump_frames)
Jakub Jelinek c3c87b
             VG_(printf)("  Version:               %d\n", (Int)cie_version);
Jakub Jelinek c3c87b
-         if (cie_version != 1) {
Jakub Jelinek c3c87b
-            how = "unexpected CIE version (not 1)";
Jakub Jelinek c3c87b
+         if (cie_version != 1 && cie_version != 3) {
Jakub Jelinek c3c87b
+            how = "unexpected CIE version (not 1 nor 3)";
Jakub Jelinek c3c87b
             goto bad;
Jakub Jelinek c3c87b
          }
Jakub Jelinek c3c87b