Skip to content

Commit 2989c21

Browse files
committed
chore: merge debian packaging 3.25.1-3
without bumping the rules requireing debheper 13
1 parent f3f3acf commit 2989c21

12 files changed

Lines changed: 335 additions & 43 deletions

debian/README.Debian

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,6 @@ valgrind for Debian
88

99
-- Alessandro Ghedini <ghedo@debian.org> Sun, 05 Nov 2014 00:00:00 +0100
1010

11-
Debian's valgrind package comes stripped of any debug symbols, which are
12-
provided by the valgrind-dbg package. Note that it's recommended to install
13-
such package because without those symbols valgrind may generate less
14-
helpful error messages in certain situations, or not work at all.
15-
16-
-- Alessandro Ghedini <ghedo@debian.org> Sun, 09 Mar 2014 00:00:00 +0100
17-
1811
Debian's valgrind package ships with a suppression file named "debian.supp"
1912
along with upstream's "default.supp", under /usr/lib/valgrind. Note though
2013
that by default, valgrind only loads "default.supp".

debian/changelog

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
valgrind (1:3.25.1-3-codspeed1) UNRELEASED; urgency=medium
2+
3+
* Merge 3.25.1 from valgrind upstream and debian patches
4+
5+
-- Arthur Pastel <arthur@codspeed.io> Tue, 18 Oct 2025 20:37:13 +0000
6+
17
valgrind (1:3.24.0-0codspeed1) UNRELEASED; urgency=medium
28

39
* Merge 3.24.0 from valgrind upstream and ubuntu patches
@@ -2822,4 +2828,3 @@ valgrind (0.0.20020224-1) unstable; urgency=low
28222828
* Initial Release (closes: #135718)
28232829

28242830
-- Cyrille Chepelov <cyrille@chepelov.org> Mon, 25 Feb 2002 20:16:46 +0100
2825-

debian/copyright

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,11 @@ Files: cachegrind/*
8282
Copyright: 2002-2012, Nicholas Nethercote
8383
License: GPL-2.0+
8484

85+
Files: cachegrind/cg_merge.c
86+
Copyright: 2000 Daniel Nagy, Budapest University of Technology and Economics
87+
2002-2012 Nicholas Nethercote
88+
License: GPL-2.0+
89+
8590
Files: coregrind/*
8691
Copyright: 2000-2012, Julian Seward
8792
License: GPL-2.0+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
Description: Fix FTBFS on armhf
2+
Origin: vendor
3+
Author: Michael Stapelberg <stapelberg@debian.org>
4+
5+
diff --git i/configure.ac w/configure.ac
6+
index 095659ac..aab98ce3 100755
7+
--- i/configure.ac
8+
+++ w/configure.ac
9+
@@ -287,7 +287,7 @@ case "${host_cpu}" in
10+
11+
arm*)
12+
AC_MSG_RESULT([ok (${host_cpu})])
13+
- VGCONF_PLATFORM_ARM_ARCH="-march=armv6"
14+
+ VGCONF_PLATFORM_ARM_ARCH="-marm"
15+
ARCH_MAX="arm"
16+
;;
17+
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
From 37d454721a6e3c2c54303bbcb35f0124de9bb51e Mon Sep 17 00:00:00 2001
2+
From: Mark Wielaard <mark@klomp.org>
3+
Date: Mon, 18 Aug 2025 15:30:47 +0200
4+
Subject: [PATCH] Add ppc64le linux hardwire for ld64.so.2 strcmp
5+
6+
When dlopen is used we might end up in an assembly powerpc/strcmp.S
7+
variant that is optimized in a way memcheck cannot proof correct. We
8+
try to intercept strcmp in ld.so, but might fail when strcmp is called
9+
before our interception code is loaded. Having an hardwire for ld.so
10+
strcmp (earlier intercept) would solve this.
11+
12+
https://bugs.kde.org/show_bug.cgi?id=508145
13+
14+
(cherry picked from commit 78fe3625f6b8ed4de28527d71c4a98d70e5b3035)
15+
---
16+
NEWS | 1 +
17+
coregrind/m_redir.c | 6 +++++
18+
coregrind/m_trampoline.S | 45 +++++++++++++++++++++++++++++++++
19+
coregrind/pub_core_trampoline.h | 1 +
20+
4 files changed, 53 insertions(+)
21+
22+
diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c
23+
index 63172b971..857f910cb 100644
24+
--- a/coregrind/m_redir.c
25+
+++ b/coregrind/m_redir.c
26+
@@ -1504,14 +1504,20 @@ void VG_(redir_initialise) ( void )
27+
28+
add_hardwired_spec(
29+
"ld64.so.2", "index",
30+
(Addr)&VG_(ppc64_linux_REDIR_FOR_strchr),
31+
NULL /* not mandatory - so why bother at all? */
32+
/* glibc-2.5 (FC6, ppc64) seems fine without it */
33+
);
34+
+
35+
+ add_hardwired_spec(
36+
+ "ld64.so.2", "strcmp",
37+
+ (Addr)&VG_(ppc64_linux_REDIR_FOR_strcmp),
38+
+ NULL
39+
+ );
40+
}
41+
42+
# elif defined(VGP_arm_linux)
43+
/* If we're using memcheck, use these intercepts right from the
44+
start, otherwise ld.so makes a lot of noise. In most ARM-linux
45+
distros, ld.so's soname is ld-linux.so.3, but Ubuntu 14.04 on
46+
Odroid uses ld-linux-armhf.so.3 for some reason. */
47+
diff --git a/coregrind/m_trampoline.S b/coregrind/m_trampoline.S
48+
index 2c2cc0dc2..af25c8f7a 100644
49+
--- a/coregrind/m_trampoline.S
50+
+++ b/coregrind/m_trampoline.S
51+
@@ -600,14 +600,59 @@ VG_(ppc64_linux_REDIR_FOR_strchr):
52+
li 3,0
53+
blr
54+
.long 0
55+
.byte 0,0,0,0,0,0,0,0
56+
.L1end:
57+
58+
59+
+ /* this function is written using the "dotless" ABI convention */
60+
+ .align 2
61+
+ .globl VG_(ppc64_linux_REDIR_FOR_strcmp)
62+
+#if !defined VGP_ppc64be_linux || _CALL_ELF == 2
63+
+ /* Little Endian uses ELF version 2 */
64+
+ .type VG_(ppc64_linux_REDIR_FOR_strcmp),@function
65+
+VG_(ppc64_linux_REDIR_FOR_strcmp):
66+
+#else
67+
+ /* Big Endian uses ELF version 1 */
68+
+ .section ".opd","aw"
69+
+ .align 3
70+
+VG_(ppc64_linux_REDIR_FOR_strcmp):
71+
+ .quad .L.VG_(ppc64_linux_REDIR_FOR_strcmp),.TOC.@tocbase,0
72+
+ .previous
73+
+ .size VG_(ppc64_linux_REDIR_FOR_strcmp), \
74+
+ .LFE0-.L.VG_(ppc64_linux_REDIR_FOR_strcmp)
75+
+ .type VG_(ppc64_linux_REDIR_FOR_strcmp), @function
76+
+
77+
+.L.VG_(ppc64_linux_REDIR_FOR_strcmp):
78+
+#endif
79+
+#if _CALL_ELF == 2
80+
+0: addis 2,12,.TOC.-0b@ha
81+
+ addi 2,2,.TOC.-0b@l
82+
+ .localentry VG_(ppc64_linux_REDIR_FOR_strcmp), .-VG_(ppc64_linux_REDIR_FOR_strcmp)
83+
+#endif
84+
+.LFB0:
85+
+ .cfi_startproc
86+
+ li 10,0
87+
+.L3:
88+
+ lbzx 8,3,10
89+
+ lbzx 9,4,10
90+
+ cmpwi 0,8,0
91+
+ beq 0,.L2
92+
+ cmpw 0,8,9
93+
+ addi 10,10,1
94+
+ beq 0,.L3
95+
+.L2:
96+
+ subf 3,9,8
97+
+ extsw 3,3
98+
+ blr
99+
+ .long 0
100+
+ .byte 0,0,0,0,0,0,0,0
101+
+ .cfi_endproc
102+
+.LFE0:
103+
+
104+
.global VG_(trampoline_stuff_end)
105+
VG_(trampoline_stuff_end):
106+
107+
/* and a trailing page of unexecutable code */
108+
UD2_PAGE
109+
110+
# undef UD2_16
111+
diff --git a/coregrind/pub_core_trampoline.h b/coregrind/pub_core_trampoline.h
112+
index 11d791df7..92b4fc67b 100644
113+
--- a/coregrind/pub_core_trampoline.h
114+
+++ b/coregrind/pub_core_trampoline.h
115+
@@ -93,14 +93,15 @@ extern UInt VG_(ppc32_linux_REDIR_FOR_strlen)( void* );
116+
extern UInt VG_(ppc32_linux_REDIR_FOR_strcmp)( void*, void* );
117+
extern void* VG_(ppc32_linux_REDIR_FOR_strchr)( void*, Int );
118+
#endif
119+
120+
#if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
121+
extern Addr VG_(ppc64_linux_SUBST_FOR_rt_sigreturn);
122+
extern UInt VG_(ppc64_linux_REDIR_FOR_strlen)( void* );
123+
+extern UInt VG_(ppc64_linux_REDIR_FOR_strcmp)( void*, void* );
124+
extern void* VG_(ppc64_linux_REDIR_FOR_strchr)( void*, Int );
125+
/* A label (sans dot) marking the ultra-magical return stub via which
126+
all redirected and wrapped functions are made to "return" on
127+
ppc64-linux. The one insn at this label is never really
128+
translated. Instead, m_translate generates IR to restore the
129+
thread's LR and R2 registers from a small stack in the ppc64 guest
130+
state structure, and then branch to LR. Convoluted? Confusing?
131+
--
132+
2.51.0
133+

debian/patches/adjust_armhf_cases.patch

Lines changed: 0 additions & 32 deletions
This file was deleted.

debian/patches/armhf_neon.patch

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
Description: Do not require neon on armhf
2+
Author: Richard Earnshaw <Richard.Earnshaw@arm.com>
3+
Bug-Debian: https://bugs.debian.org/928224
4+
Reviewed-By: Mathieu Malaterre <malat@debian.org>
5+
Last-Update: 2025-01-21
6+
7+
--- valgrind-3.24.0.orig/configure.ac
8+
+++ valgrind-3.24.0/configure.ac
9+
@@ -275,13 +275,13 @@ case "${host_cpu}" in
10+
11+
armv8*)
12+
AC_MSG_RESULT([ok (${host_cpu})])
13+
- VGCONF_PLATFORM_ARM_ARCH="-marm -mcpu=cortex-a8"
14+
+ VGCONF_PLATFORM_ARM_ARCH="-marm -mcpu=generic-armv7-a"
15+
ARCH_MAX="arm"
16+
;;
17+
18+
armv7*)
19+
AC_MSG_RESULT([ok (${host_cpu})])
20+
- VGCONF_PLATFORM_ARM_ARCH="-marm -mcpu=cortex-a8"
21+
+ VGCONF_PLATFORM_ARM_ARCH="-marm -mcpu=generic-armv7-a"
22+
ARCH_MAX="arm"
23+
;;
24+

debian/patches/series

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
08_fix-spelling-in-manpage.patch
44
10_mpi-pkg-config.patch
55
13_fix-path-to-vgdb.patch
6-
armv7-illegal-opcode.patch
7-
adjust_armhf_cases.patch
6+
14_fix-armhf-ftbfs.patch
7+
armhf_neon.patch
8+
16_Add-ppc64le-linux-hardwire-for-ld64.so.2-strcmp.patch
89
use-mpich-if-mpic-not-found.patch

debian/supp/armhf-stackclash.supp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
# On armhf, stack-clash-protector is implemented by writing out of stack
3+
# bounds. https://bugzilla.redhat.com/show_bug.cgi?id=1522678
4+
{
5+
stack-clash-protection-armhf
6+
Memcheck:Addr4
7+
obj:*
8+
}

debian/upstream/signing-key.asc

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
-----BEGIN PGP PUBLIC KEY BLOCK-----
2+
3+
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
124+
P5k2kfEuvhslq1ARUrcfpDdltCQx
125+
=sNdq
126+
-----END PGP PUBLIC KEY BLOCK-----

0 commit comments

Comments
 (0)