diff --git a/valgrind-3.7.0-dwz.patch b/valgrind-3.7.0-dwz.patch index 92e5e03..a7c90c4 100644 --- a/valgrind-3.7.0-dwz.patch +++ b/valgrind-3.7.0-dwz.patch @@ -581,16 +581,16 @@ diff -ru valgrind-3.7.0.orig/coregrind/m_debuginfo/readelf.c valgrind-3.7.0/core + ElfXX_Nhdr* note = (ElfXX_Nhdr*)(image + offset); + Char* name = (Char *)note + sizeof(ElfXX_Nhdr); + UChar *desc = (UChar *)name + ((note->n_namesz + 3) & ~3); -+ Word j; ++ Word j2; + + if (VG_(strcmp)(name, ELF_NOTE_GNU) == 0 && + note->n_type == NT_GNU_BUILD_ID) { + buildid = ML_(dinfo_zalloc)("di.fbi.1", + note->n_descsz * 2 + 1); + -+ for (j = 0; j < note->n_descsz; j++) { ++ for (j2 = 0; j2 < note->n_descsz; j2++) { + VG_(sprintf)(buildid + VG_(strlen)(buildid), -+ "%02x", desc[j]); ++ "%02x", desc[j2]); + } + } + @@ -668,7 +668,7 @@ diff -ru valgrind-3.7.0.orig/coregrind/m_debuginfo/readelf.c valgrind-3.7.0/core Bool res, ok; SysRes fd, sres; - Word i; -+ Word i, j; ++ Word i, i2; Bool dynbss_present = False; Bool sdynbss_present = False; @@ -798,9 +798,9 @@ diff -ru valgrind-3.7.0.orig/coregrind/m_debuginfo/readelf.c valgrind-3.7.0/core + (debugaltlink_sz - buildid_offset) + * 2 + 1); + -+ for (j = 0; j < debugaltlink_sz - buildid_offset; j++) -+ VG_(sprintf)(altbuildid + 2 * j, -+ "%02x", debugaltlink_img[buildid_offset + j]); ++ for (i2 = 0; i2 < debugaltlink_sz - buildid_offset; i2++) ++ VG_(sprintf)(altbuildid + 2 * i2, ++ "%02x", debugaltlink_img[buildid_offset + i2]); + + /* See if we can find a matching debug file */ + find_debug_file( di, di->fsm.filename, altbuildid, diff --git a/valgrind-3.7.0-ref_addr.patch b/valgrind-3.7.0-ref_addr.patch new file mode 100644 index 0000000..d62cb79 --- /dev/null +++ b/valgrind-3.7.0-ref_addr.patch @@ -0,0 +1,29 @@ +r12545 | sewardj | 2012-04-29 13:35:37 +0200 (Sun, 29 Apr 2012) | 3 lines + +Correctly parse DW_FORM_ref_addr -- its format is different in Dwarf2 +vs Dwarf3 and later. Fixes #298864. (Tom Tromey, tromey@redhat.com) + +Index: coregrind/m_debuginfo/readdwarf3.c +=================================================================== +--- valgrind-3.7.0/coregrind/m_debuginfo/readdwarf3.c (revision 12544) ++++ valgrind-3.7.0/coregrind/m_debuginfo/readdwarf3.c (revision 12545) +@@ -1152,9 +1152,17 @@ + So for the moment we merely range-check, to see that they + actually do specify a plausible offset within this + object's .debug_info, and return the value unchanged. ++ ++ In DWARF 2, DW_FORM_ref_addr is address-sized, but in ++ DWARF 3 and later, it is offset-sized. + */ +- *cts = (ULong)(UWord)get_UWord(c); +- *ctsSzB = sizeof(UWord); ++ if (cc->version == 2) { ++ *cts = (ULong)(UWord)get_UWord(c); ++ *ctsSzB = sizeof(UWord); ++ } else { ++ *cts = get_Dwarfish_UWord(c, cc->is_dw64); ++ *ctsSzB = cc->is_dw64 ? sizeof(ULong) : sizeof(UInt); ++ } + TRACE_D3("0x%lx", (UWord)*cts); + if (0) VG_(printf)("DW_FORM_ref_addr 0x%lx\n", (UWord)*cts); + if (/* the following 2 are surely impossible, but ... */ diff --git a/valgrind.spec b/valgrind.spec index df02451..64de49d 100644 --- a/valgrind.spec +++ b/valgrind.spec @@ -1,7 +1,7 @@ Summary: Tool for finding memory management bugs in programs Name: valgrind Version: 3.7.0 -Release: 6%{?dist} +Release: 7%{?dist} Epoch: 1 License: GPLv2 URL: http://www.valgrind.org/ @@ -29,6 +29,7 @@ Patch18: valgrind-3.7.0-addToXA.patch Patch19: valgrind-3.7.0-debug-types.patch Patch20: valgrind-3.7.0-dwz.patch Patch21: valgrind-3.7.0-glibc-2.16.patch +Patch22: valgrind-3.7.0-ref_addr.patch Obsoletes: valgrind-callgrind %ifarch x86_64 ppc64 @@ -129,6 +130,7 @@ for details. %patch19 -p1 %patch20 -p1 %patch21 -p1 +%patch22 -p1 touch memcheck/tests/dw4.stdout.exp %build @@ -224,6 +226,10 @@ echo ===============END TESTING=============== %endif %changelog +* Fri Aug 03 2012 Mark Wielaard 3.7.0-7 +- Fixup shadowing warnings valgrind-3.7.0-dwz.patch +- Add valgrind-3.7.0-ref_addr.patch (#842659, KDE#298864) + * Mon Jul 25 2012 Mark Wielaard 3.7.0-6 - handle dwz DWARF compressor output (#842659, KDE#302901) - allow glibc 2.16.