valgrind.diff (5452B)
1 diff -Nru valgrind-3.20.0/debian/changelog valgrind-3.20.0/debian/changelog 2 --- valgrind-3.20.0/debian/changelog 2023-01-11 00:51:40.000000000 +0900 3 +++ valgrind-3.20.0/debian/changelog 2024-09-10 08:52:50.000000000 +0900 4 @@ -1,3 +1,9 @@ 5 +valgrind (1:3.20.0-1moz1) UNRELEASED; urgency=medium 6 + 7 + * Apply fix for https://bugs.kde.org/show_bug.cgi?id=492663 8 + 9 + -- Mike Hommey <mhommey@mozilla.com> Tue, 10 Sep 2024 08:52:50 +0900 10 + 11 valgrind (1:3.20.0-1) experimental; urgency=medium 12 13 * New upstream release. 14 diff -Nru valgrind-3.20.0/debian/patches/fix-upstream-bug492663 valgrind-3.20.0/debian/patches/fix-upstream-bug492663 15 --- valgrind-3.20.0/debian/patches/fix-upstream-bug492663 1970-01-01 09:00:00.000000000 +0900 16 +++ valgrind-3.20.0/debian/patches/fix-upstream-bug492663 2024-09-10 08:52:39.000000000 +0900 17 @@ -0,0 +1,96 @@ 18 +--- valgrind-3.20.0.orig/coregrind/m_debuginfo/debuginfo.c 19 ++++ valgrind-3.20.0/coregrind/m_debuginfo/debuginfo.c 20 +@@ -1073,7 +1073,8 @@ static ULong di_notify_ACHIEVE_ACCEPT_ST 21 + load_client -> VG_(do_exec) -> VG_(do_exec_inner) -> 22 + exe_handlers->load_fn ( == VG_(load_ELF) ). 23 + 24 +- This does the mmap'ing and creats the associated NSegments. 25 ++ This does the mmap'ing with VG_(am_do_mmap_NO_NOTIFY) 26 ++ and creates the associated NSegments. 27 + 28 + The NSegments may get merged, (see maybe_merge_nsegments) 29 + so there could be more PT_LOADs than there are NSegments. 30 +@@ -1124,7 +1125,7 @@ static ULong di_notify_ACHIEVE_ACCEPT_ST 31 + ULong VG_(di_notify_mmap)( Addr a, Bool allow_SkFileV, Int use_fd ) 32 + { 33 + NSegment const * seg; 34 +- Int rw_load_count; 35 ++ Int expected_rw_load_count; 36 + const HChar* filename; 37 + Bool is_rx_map, is_rw_map, is_ro_map; 38 + 39 +@@ -1348,9 +1349,9 @@ ULong VG_(di_notify_mmap)( Addr a, Bool 40 + /* We're only interested in mappings of object files. */ 41 + # if defined(VGO_linux) || defined(VGO_solaris) || defined(VGO_freebsd) 42 + 43 +- rw_load_count = 0; 44 ++ expected_rw_load_count = 0; 45 + 46 +- elf_ok = ML_(check_elf_and_get_rw_loads) ( actual_fd, filename, &rw_load_count ); 47 ++ elf_ok = ML_(check_elf_and_get_rw_loads) ( actual_fd, filename, &expected_rw_load_count, use_fd == -1 ); 48 + 49 + if (use_fd == -1) { 50 + VG_(close)( actual_fd ); 51 +@@ -1363,7 +1364,7 @@ ULong VG_(di_notify_mmap)( Addr a, Bool 52 + # elif defined(VGO_darwin) 53 + if (!ML_(is_macho_object_file)( buf1k, (SizeT)sr_Res(preadres) )) 54 + return 0; 55 +- rw_load_count = 1; 56 ++ expected_rw_load_count = 1; 57 + # else 58 + # error "unknown OS" 59 + # endif 60 +@@ -1423,8 +1424,8 @@ ULong VG_(di_notify_mmap)( Addr a, Bool 61 + /* So, finally, are we in an accept state? */ 62 + vg_assert(!di->have_dinfo); 63 + if (di->fsm.have_rx_map && 64 +- rw_load_count >= 1 && 65 +- di->fsm.rw_map_count == rw_load_count) { 66 ++ expected_rw_load_count >= 1 && 67 ++ di->fsm.rw_map_count == expected_rw_load_count) { 68 + /* Ok, so, finally, we found what we need, and we haven't 69 + already read debuginfo for this object. So let's do so now. 70 + Yee-ha! */ 71 +@@ -1437,7 +1438,8 @@ ULong VG_(di_notify_mmap)( Addr a, Bool 72 + /* If we don't have an rx and rw mapping, go no further. */ 73 + if (debug) 74 + VG_(dmsg)("di_notify_mmap-6: " 75 +- "no dinfo loaded %s (no rx or no rw mapping)\n", filename); 76 ++ "no dinfo loaded %s (no rx or rw mappings (%d) not reached expected count (%d))\n", 77 ++ filename, di->fsm.rw_map_count, expected_rw_load_count); 78 + return 0; 79 + } 80 + } 81 +--- valgrind-3.20.0.orig/coregrind/m_debuginfo/priv_readelf.h 82 ++++ valgrind-3.20.0/coregrind/m_debuginfo/priv_readelf.h 83 +@@ -52,7 +52,8 @@ extern Bool ML_(is_elf_object_file)( con 84 + */ 85 + extern Bool ML_(read_elf_debug_info) ( DebugInfo* di ); 86 + 87 +-extern Bool ML_(check_elf_and_get_rw_loads) ( Int fd, const HChar* filename, Int * rw_load_count ); 88 ++extern Bool ML_(check_elf_and_get_rw_loads) ( Int fd, const HChar* filename, 89 ++ Int * rw_load_count, Bool from_nsegments ); 90 + 91 + 92 + #endif /* ndef __PRIV_READELF_H */ 93 +--- valgrind-3.20.0.orig/coregrind/m_debuginfo/readelf.c 94 ++++ valgrind-3.20.0/coregrind/m_debuginfo/readelf.c 95 +@@ -3650,7 +3650,8 @@ Bool ML_(read_elf_debug_info) ( struct _ 96 + /* NOTREACHED */ 97 + } 98 + 99 +-Bool ML_(check_elf_and_get_rw_loads) ( Int fd, const HChar* filename, Int * rw_load_count ) 100 ++Bool ML_(check_elf_and_get_rw_loads) ( Int fd, const HChar* filename, 101 ++ Int * rw_load_count, Bool from_nsegments ) 102 + { 103 + Bool res, ok; 104 + UWord i; 105 +@@ -3719,7 +3720,7 @@ Bool ML_(check_elf_and_get_rw_loads) ( I 106 + * second PT_LOAD falls exactly on 0x1000) then the NSegements 107 + * will get merged and VG_(di_notify_mmap) only gets called once. */ 108 + if (*rw_load_count == 2 && 109 +- ehdr_m.e_type == ET_EXEC && 110 ++ from_nsegments && 111 + a_phdr.p_offset == VG_PGROUNDDN(a_phdr.p_offset) ) 112 + { 113 + *rw_load_count = 1; 114 diff -Nru valgrind-3.20.0/debian/patches/series valgrind-3.20.0/debian/patches/series 115 --- valgrind-3.20.0/debian/patches/series 2022-11-11 00:49:21.000000000 +0900 116 +++ valgrind-3.20.0/debian/patches/series 2024-09-10 08:52:21.000000000 +0900 117 @@ -7,3 +7,4 @@ 118 11_arm64-cache-flush.patch 119 13_fix-path-to-vgdb.patch 120 armhf_neon.patch 121 +fix-upstream-bug492663