import CS valgrind-3.25.1-3.el9
This commit is contained in:
parent
6dc6ae194f
commit
1dd908a440
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
SOURCES/valgrind-3.24.0.tar.bz2
|
SOURCES/valgrind-3.25.1.tar.bz2
|
||||||
|
@ -1 +1 @@
|
|||||||
6fc0470fedc0d85dae3e042297cabd13c6100749 SOURCES/valgrind-3.24.0.tar.bz2
|
4d2cc4d527213f81af573bca4d2cb93ccac7f274 SOURCES/valgrind-3.25.1.tar.bz2
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
From cc09f61e56e90c9d3a0e7231cc69b2a499d1205f Mon Sep 17 00:00:00 2001
|
From 2e92839f77ad5b1e2db95887185eca3b4e70a4d5 Mon Sep 17 00:00:00 2001
|
||||||
From: Mark Wielaard <mark@klomp.org>
|
From: Mark Wielaard <mark@klomp.org>
|
||||||
Date: Sat, 23 Nov 2024 02:09:27 +0100
|
Date: Tue, 5 Aug 2025 22:05:30 +0200
|
||||||
Subject: [PATCH 01/11] Prepare NEWS for branch 3.24 fixes
|
Subject: [PATCH 1/2] Prepare NEWS for branch 3.25.x fixes
|
||||||
|
|
||||||
---
|
---
|
||||||
NEWS | 11 +++++++++++
|
NEWS | 12 ++++++++++++
|
||||||
1 file changed, 11 insertions(+)
|
1 file changed, 12 insertions(+)
|
||||||
|
|
||||||
diff --git a/NEWS b/NEWS
|
diff --git a/NEWS b/NEWS
|
||||||
index 49b4647d4295..8362e1d2df41 100644
|
index 741329a68170..5043e7008bf0 100644
|
||||||
--- a/NEWS
|
--- a/NEWS
|
||||||
+++ b/NEWS
|
+++ b/NEWS
|
||||||
@@ -1,3 +1,14 @@
|
@@ -1,3 +1,15 @@
|
||||||
+Branch 3.24
|
+Branch 3.25.x
|
||||||
+~~~~~~~~~~~
|
+~~~~~~~~~~~~~
|
||||||
+
|
+
|
||||||
+* ==================== FIXED BUGS ====================
|
+* ==================== FIXED BUGS ====================
|
||||||
+
|
+
|
||||||
@ -23,9 +23,10 @@ index 49b4647d4295..8362e1d2df41 100644
|
|||||||
+ https://bugs.kde.org/show_bug.cgi?id=XXXXXX
|
+ https://bugs.kde.org/show_bug.cgi?id=XXXXXX
|
||||||
+where XXXXXX is the bug number as listed above.
|
+where XXXXXX is the bug number as listed above.
|
||||||
+
|
+
|
||||||
Release 3.24.0 (31 Oct 2024)
|
+
|
||||||
|
Release 3.25.1 (20 May 2025)
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
--
|
--
|
||||||
2.47.0
|
2.50.1
|
||||||
|
|
@ -0,0 +1,539 @@
|
|||||||
|
From 2ad8efa8f31c7e8733e430dad4f93541797d6792 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andreas Arnez <arnez@linux.ibm.com>
|
||||||
|
Date: Wed, 25 Jun 2025 16:35:04 +0200
|
||||||
|
Subject: [PATCH 2/2] Bug 503241 - s390x: Support z17 changes to the NNPA
|
||||||
|
instruction
|
||||||
|
|
||||||
|
This adds support for the NNPA enhancements that are implemented with z17.
|
||||||
|
|
||||||
|
(cherry picked from commit 24b634e8ce04de70d4aa6c61a12149df223f9c68)
|
||||||
|
---
|
||||||
|
NEWS | 2 +
|
||||||
|
coregrind/m_extension/extension-s390x.c | 346 ++++++++++++++----------
|
||||||
|
2 files changed, 209 insertions(+), 139 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index 5043e7008bf0..4e6e6c6d2387 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -5,6 +5,8 @@ Branch 3.25.x
|
||||||
|
|
||||||
|
The following bugs have been fixed or resolved on this branch.
|
||||||
|
|
||||||
|
+503241 s390x: Support z17 changes to the NNPA instruction
|
||||||
|
+
|
||||||
|
To see details of a given bug, visit
|
||||||
|
https://bugs.kde.org/show_bug.cgi?id=XXXXXX
|
||||||
|
where XXXXXX is the bug number as listed above.
|
||||||
|
diff --git a/coregrind/m_extension/extension-s390x.c b/coregrind/m_extension/extension-s390x.c
|
||||||
|
index 85b99ad08687..98b825d9b5d2 100644
|
||||||
|
--- a/coregrind/m_extension/extension-s390x.c
|
||||||
|
+++ b/coregrind/m_extension/extension-s390x.c
|
||||||
|
@@ -301,11 +301,17 @@ typedef enum {
|
||||||
|
S390_NNPA_MAX = 0x15,
|
||||||
|
S390_NNPA_LOG = 0x20,
|
||||||
|
S390_NNPA_EXP = 0x21,
|
||||||
|
+ S390_NNPA_SQRT = 0x22,
|
||||||
|
+ S390_NNPA_INVSQRT = 0x23,
|
||||||
|
S390_NNPA_RELU = 0x31,
|
||||||
|
S390_NNPA_TANH = 0x32,
|
||||||
|
S390_NNPA_SIGMOID = 0x33,
|
||||||
|
S390_NNPA_SOFTMAX = 0x34,
|
||||||
|
+ S390_NNPA_GELU = 0x35,
|
||||||
|
S390_NNPA_BATCHNORM = 0x40,
|
||||||
|
+ S390_NNPA_MOMENTS = 0x41,
|
||||||
|
+ S390_NNPA_LAYERNORM = 0x42,
|
||||||
|
+ S390_NNPA_NORM = 0x43,
|
||||||
|
S390_NNPA_MAXPOOL2D = 0x50,
|
||||||
|
S390_NNPA_AVGPOOL2D = 0x51,
|
||||||
|
S390_NNPA_LSTMACT = 0x60,
|
||||||
|
@@ -313,6 +319,9 @@ typedef enum {
|
||||||
|
S390_NNPA_CONVOLUTION = 0x70,
|
||||||
|
S390_NNPA_MATMUL_OP = 0x71,
|
||||||
|
S390_NNPA_MATMUL_OP_BCAST23 = 0x72,
|
||||||
|
+ S390_NNPA_MATMUL_OP_BCAST1 = 0x73,
|
||||||
|
+ S390_NNPA_TRANSFORM = 0xf0,
|
||||||
|
+ S390_NNPA_REDUCE = 0xf1,
|
||||||
|
} s390_nnpa_function_t;
|
||||||
|
|
||||||
|
/* Suported NNPA functions */
|
||||||
|
@@ -321,30 +330,51 @@ static const ULong NNPA_functions[] = {
|
||||||
|
S390_SETBIT(S390_NNPA_SUB) | S390_SETBIT(S390_NNPA_MUL) |
|
||||||
|
S390_SETBIT(S390_NNPA_DIV) | S390_SETBIT(S390_NNPA_MIN) |
|
||||||
|
S390_SETBIT(S390_NNPA_MAX) | S390_SETBIT(S390_NNPA_LOG) |
|
||||||
|
- S390_SETBIT(S390_NNPA_EXP) | S390_SETBIT(S390_NNPA_RELU) |
|
||||||
|
+ S390_SETBIT(S390_NNPA_EXP) | S390_SETBIT(S390_NNPA_SQRT) |
|
||||||
|
+ S390_SETBIT(S390_NNPA_INVSQRT) | S390_SETBIT(S390_NNPA_RELU) |
|
||||||
|
S390_SETBIT(S390_NNPA_TANH) | S390_SETBIT(S390_NNPA_SIGMOID) |
|
||||||
|
- S390_SETBIT(S390_NNPA_SOFTMAX)),
|
||||||
|
- (S390_SETBIT(S390_NNPA_BATCHNORM) | S390_SETBIT(S390_NNPA_MAXPOOL2D) |
|
||||||
|
- S390_SETBIT(S390_NNPA_AVGPOOL2D) | S390_SETBIT(S390_NNPA_LSTMACT) |
|
||||||
|
- S390_SETBIT(S390_NNPA_GRUACT) | S390_SETBIT(S390_NNPA_CONVOLUTION) |
|
||||||
|
- S390_SETBIT(S390_NNPA_MATMUL_OP) |
|
||||||
|
- S390_SETBIT(S390_NNPA_MATMUL_OP_BCAST23)),
|
||||||
|
+ S390_SETBIT(S390_NNPA_SOFTMAX) | S390_SETBIT(S390_NNPA_GELU)),
|
||||||
|
+ (S390_SETBIT(S390_NNPA_BATCHNORM) | S390_SETBIT(S390_NNPA_MOMENTS) |
|
||||||
|
+ S390_SETBIT(S390_NNPA_LAYERNORM) | S390_SETBIT(S390_NNPA_NORM) |
|
||||||
|
+ S390_SETBIT(S390_NNPA_MAXPOOL2D) | S390_SETBIT(S390_NNPA_AVGPOOL2D) |
|
||||||
|
+ S390_SETBIT(S390_NNPA_LSTMACT) | S390_SETBIT(S390_NNPA_GRUACT) |
|
||||||
|
+ S390_SETBIT(S390_NNPA_CONVOLUTION) | S390_SETBIT(S390_NNPA_MATMUL_OP) |
|
||||||
|
+ S390_SETBIT(S390_NNPA_MATMUL_OP_BCAST23) |
|
||||||
|
+ S390_SETBIT(S390_NNPA_MATMUL_OP_BCAST1)),
|
||||||
|
+ 0,
|
||||||
|
+ (S390_SETBIT(S390_NNPA_TRANSFORM) | S390_SETBIT(S390_NNPA_REDUCE)),
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Supported parameter block formats */
|
||||||
|
static const ULong NNPA_ipbf[] = {
|
||||||
|
- (S390_SETBIT(0)),
|
||||||
|
+ (S390_SETBIT(0) | S390_SETBIT(1)),
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Supported data types and data layout formats */
|
||||||
|
+enum {
|
||||||
|
+ S390_NNPA_TYPE_1 = 0, // data type 1 (16 bit)
|
||||||
|
+ S390_NNPA_TYPE_BFP32 = 6,
|
||||||
|
+ S390_NNPA_TYPE_INT8 = 8,
|
||||||
|
+ S390_NNPA_TYPE_INT32 = 10,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+enum {
|
||||||
|
+ S390_NNPA_4D_FEATURE_TENSOR = 0,
|
||||||
|
+ S390_NNPA_4D_KERNEL_TENSOR = 1,
|
||||||
|
+ S390_NNPA_4D_WEIGHTS_TENSOR = 2,
|
||||||
|
+ S390_NNPA_4D_GENERIC_TENSOR = 31,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
static const ULong NNPA_dtypes_layouts[] = {
|
||||||
|
/* Data types */
|
||||||
|
- (S390_SETBIT(0) | // data type 1 (16 bit)
|
||||||
|
+ (S390_SETBIT(S390_NNPA_TYPE_1) | S390_SETBIT(S390_NNPA_TYPE_BFP32) |
|
||||||
|
+ S390_SETBIT(S390_NNPA_TYPE_INT8) | S390_SETBIT(S390_NNPA_TYPE_INT32) |
|
||||||
|
|
||||||
|
/* Data layout formats */
|
||||||
|
- S390_SETBIT(32 + 0) | // 4D-feature tensor
|
||||||
|
- S390_SETBIT(32 + 1) // 4D-kernel tensor
|
||||||
|
- ),
|
||||||
|
+ S390_SETBIT(32 + S390_NNPA_4D_FEATURE_TENSOR) |
|
||||||
|
+ S390_SETBIT(32 + S390_NNPA_4D_KERNEL_TENSOR) |
|
||||||
|
+ S390_SETBIT(32 + S390_NNPA_4D_WEIGHTS_TENSOR) |
|
||||||
|
+ S390_SETBIT(32 + S390_NNPA_4D_GENERIC_TENSOR)),
|
||||||
|
};
|
||||||
|
|
||||||
|
static const ULong NNPA_conversions[] = {
|
||||||
|
@@ -360,10 +390,15 @@ struct s390_NNPA_parms_qaf {
|
||||||
|
UInt mdis;
|
||||||
|
ULong mts;
|
||||||
|
ULong conversions;
|
||||||
|
- ULong reserved2[22];
|
||||||
|
+ ULong reserved2;
|
||||||
|
+ UInt mdnis[4];
|
||||||
|
+ struct {
|
||||||
|
+ ULong reserved[19];
|
||||||
|
+ } reserved3;
|
||||||
|
};
|
||||||
|
|
||||||
|
-struct s390_NNPA_tensor0 {
|
||||||
|
+/* Tensor descriptor, common for all data-layout formats */
|
||||||
|
+struct s390_NNPA_tensor {
|
||||||
|
UChar layout;
|
||||||
|
UChar dtype;
|
||||||
|
UShort reserved1;
|
||||||
|
@@ -372,21 +407,21 @@ struct s390_NNPA_tensor0 {
|
||||||
|
ULong address;
|
||||||
|
};
|
||||||
|
|
||||||
|
-struct s390_NNPA_parms0 {
|
||||||
|
- ULong pbvn : 16;
|
||||||
|
- ULong mvn : 8;
|
||||||
|
- ULong ribm : 24;
|
||||||
|
- ULong reserved0 : 15;
|
||||||
|
- ULong cf : 1;
|
||||||
|
- ULong reserved1[6];
|
||||||
|
- ULong save_area_address;
|
||||||
|
- struct s390_NNPA_tensor0 out[2];
|
||||||
|
- struct s390_NNPA_tensor0 reserved2[2];
|
||||||
|
- struct s390_NNPA_tensor0 in[3];
|
||||||
|
- ULong reserved3[12];
|
||||||
|
- UInt param[5];
|
||||||
|
- UInt reserved4;
|
||||||
|
- ULong reserved5[13];
|
||||||
|
+/* Parameter block format 0 or 1 */
|
||||||
|
+struct s390_NNPA_parms {
|
||||||
|
+ ULong pbvn : 16;
|
||||||
|
+ ULong mvn : 8;
|
||||||
|
+ ULong ribm : 24;
|
||||||
|
+ ULong reserved0 : 15;
|
||||||
|
+ ULong cf : 1;
|
||||||
|
+ ULong reserved1[6];
|
||||||
|
+ ULong save_area_address;
|
||||||
|
+ struct s390_NNPA_tensor out[2];
|
||||||
|
+ struct s390_NNPA_tensor reserved2[2];
|
||||||
|
+ struct s390_NNPA_tensor in[3];
|
||||||
|
+ ULong reserved3[12];
|
||||||
|
+ UInt param[16];
|
||||||
|
+ ULong reserved4[8];
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
@@ -418,135 +453,145 @@ static const char* const s390_NNPA_errmsg_access[s390_NNPA_message_n] = {
|
||||||
|
|
||||||
|
struct s390_NNPA_mem_dimensions {
|
||||||
|
UChar layout;
|
||||||
|
- ULong dim[5]; // total dimensions
|
||||||
|
- ULong used[4]; // used dimensions, without padding
|
||||||
|
- ULong step[5];
|
||||||
|
- ULong last_dim4_size;
|
||||||
|
+ ULong dim[4];
|
||||||
|
+ ULong total_size;
|
||||||
|
+ ULong used_sticks; // occupied sticks per next-higher dimension
|
||||||
|
+ ULong stick_fill;
|
||||||
|
+ ULong last_stick_fill;
|
||||||
|
};
|
||||||
|
|
||||||
|
-/* Determine the 5 dimensions used to represent the tensor data in memory */
|
||||||
|
+/* Determine the dimensions used to represent the tensor data in memory */
|
||||||
|
static enum ExtensionError
|
||||||
|
-NNPA_tensor0_size(const struct s390_NNPA_tensor0* t,
|
||||||
|
- UInt msg_idx,
|
||||||
|
- struct s390_NNPA_mem_dimensions* out_md)
|
||||||
|
+NNPA_tensor_size(const struct s390_NNPA_tensor* t,
|
||||||
|
+ UInt msg_idx,
|
||||||
|
+ struct s390_NNPA_mem_dimensions* out_md)
|
||||||
|
{
|
||||||
|
struct s390_NNPA_mem_dimensions md;
|
||||||
|
ULong elem_size;
|
||||||
|
+ ULong eps;
|
||||||
|
|
||||||
|
- md.layout = t->layout;
|
||||||
|
- if (t->dtype == 0)
|
||||||
|
+ switch (t->dtype) {
|
||||||
|
+ case S390_NNPA_TYPE_INT8:
|
||||||
|
+ elem_size = 1;
|
||||||
|
+ break;
|
||||||
|
+ case S390_NNPA_TYPE_1:
|
||||||
|
elem_size = 2;
|
||||||
|
- else
|
||||||
|
+ break;
|
||||||
|
+ case S390_NNPA_TYPE_BFP32:
|
||||||
|
+ case S390_NNPA_TYPE_INT32:
|
||||||
|
+ elem_size = 4;
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
return INSN_ERR(s390_NNPA_errmsg_dtype[msg_idx]);
|
||||||
|
+ }
|
||||||
|
+ eps = 128 / elem_size;
|
||||||
|
|
||||||
|
+ md.layout = t->layout;
|
||||||
|
switch (t->layout) {
|
||||||
|
- case 0: // 4D-feature tensor
|
||||||
|
- md.dim[0] = md.used[0] = t->dim4;
|
||||||
|
- md.dim[1] = md.used[1] = (t->dim1 + 63) / 64;
|
||||||
|
- md.dim[2] = md.used[2] = t->dim3;
|
||||||
|
- md.dim[3] = (t->dim2 + 31) / 32 * 32;
|
||||||
|
- md.used[3] = t->dim2;
|
||||||
|
- md.dim[4] = 64;
|
||||||
|
- md.last_dim4_size = elem_size * (t->dim1 % 64);
|
||||||
|
+ case S390_NNPA_4D_FEATURE_TENSOR:
|
||||||
|
+ md.dim[0] = t->dim4;
|
||||||
|
+ md.dim[1] = (t->dim1 + eps - 1) / eps;
|
||||||
|
+ md.used_sticks = t->dim2;
|
||||||
|
+ goto common_tensor_dimensions;
|
||||||
|
+ case S390_NNPA_4D_KERNEL_TENSOR:
|
||||||
|
+ md.dim[0] = (t->dim1 + eps - 1) / eps;
|
||||||
|
+ md.dim[1] = t->dim4;
|
||||||
|
+ md.used_sticks = t->dim2;
|
||||||
|
+ goto common_tensor_dimensions;
|
||||||
|
+ case S390_NNPA_4D_WEIGHTS_TENSOR:
|
||||||
|
+ elem_size *= 2;
|
||||||
|
+ eps /= 2;
|
||||||
|
+ md.dim[0] = t->dim4;
|
||||||
|
+ md.dim[1] = (t->dim1 + eps - 1) / eps;
|
||||||
|
+ md.used_sticks = (t->dim2 + 1) / 2;
|
||||||
|
+ common_tensor_dimensions:
|
||||||
|
+ md.dim[2] = t->dim3;
|
||||||
|
+ md.dim[3] = (md.used_sticks + 31) / 32 * 32;
|
||||||
|
+ md.stick_fill = elem_size * (t->dim1 >= eps ? eps : t->dim1);
|
||||||
|
+ md.last_stick_fill = elem_size * ((t->dim1 - 1) % eps + 1);
|
||||||
|
break;
|
||||||
|
- case 1: // 4D-kernel tensor
|
||||||
|
- md.dim[0] = md.used[0] = (t->dim1 + 63) / 64;
|
||||||
|
- md.dim[1] = md.used[1] = t->dim4;
|
||||||
|
- md.dim[2] = md.used[2] = t->dim3;
|
||||||
|
- md.dim[3] = (t->dim2 + 31) / 32 * 32;
|
||||||
|
- md.used[3] = t->dim2;
|
||||||
|
- md.dim[4] = 64;
|
||||||
|
- md.last_dim4_size = elem_size * (t->dim1 % 64);
|
||||||
|
+ case S390_NNPA_4D_GENERIC_TENSOR:
|
||||||
|
+ md.dim[0] = t->dim4;
|
||||||
|
+ md.dim[1] = t->dim3;
|
||||||
|
+ md.dim[2] = t->dim2;
|
||||||
|
+ md.dim[3] = t->dim1;
|
||||||
|
+ eps = 1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return INSN_ERR(s390_NNPA_errmsg_layout[msg_idx]);
|
||||||
|
}
|
||||||
|
- md.step[4] = elem_size * md.dim[4];
|
||||||
|
- md.step[3] = md.step[4] * md.dim[3];
|
||||||
|
- md.step[2] = md.step[3] * md.dim[2];
|
||||||
|
- md.step[1] = md.step[2] * md.dim[1];
|
||||||
|
- md.step[0] = md.step[1] * md.dim[0]; // total size
|
||||||
|
- *out_md = md;
|
||||||
|
+ md.total_size =
|
||||||
|
+ elem_size * eps * md.dim[3] * md.dim[2] * md.dim[1] * md.dim[0];
|
||||||
|
+ *out_md = md;
|
||||||
|
return ExtErr_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
-/* Determine the size of the non-pad elements in the last dimension */
|
||||||
|
-static ULong NNPA_mem_dim4_size(const struct s390_NNPA_mem_dimensions* md,
|
||||||
|
- ULong d0,
|
||||||
|
- ULong d1)
|
||||||
|
-{
|
||||||
|
- switch (md->layout) {
|
||||||
|
- case 0: // 4D-feature tensor
|
||||||
|
- return d1 + 1 == md->dim[1] ? md->last_dim4_size : md->step[4];
|
||||||
|
- case 1: // 4D-kernel tensor
|
||||||
|
- return d0 + 1 == md->dim[0] ? md->last_dim4_size : md->step[4];
|
||||||
|
- }
|
||||||
|
- return 0;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static enum ExtensionError NNPA_pre_read_tensor0(
|
||||||
|
- ThreadState* tst, UInt msg_idx, const struct s390_NNPA_tensor0* t)
|
||||||
|
+/* Track a tensor's memory regions with PRE_MEM_READ or POST_MEM_WRITE */
|
||||||
|
+static enum ExtensionError NNPA_track_tensor(ThreadState* tst,
|
||||||
|
+ UInt msg_idx,
|
||||||
|
+ const struct s390_NNPA_tensor* t,
|
||||||
|
+ Bool do_write)
|
||||||
|
{
|
||||||
|
struct s390_NNPA_mem_dimensions md;
|
||||||
|
enum ExtensionError ret;
|
||||||
|
+ ULong addr = t->address;
|
||||||
|
|
||||||
|
- ret = NNPA_tensor0_size(t, msg_idx, &md);
|
||||||
|
+ ret = NNPA_tensor_size(t, msg_idx, &md);
|
||||||
|
if (ret != ExtErr_OK)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
- for (ULong d0 = 0; d0 < md.used[0]; d0++) {
|
||||||
|
- for (ULong d1 = 0; d1 < md.used[1]; d1++) {
|
||||||
|
- for (ULong d2 = 0; d2 < md.used[2]; d2++) {
|
||||||
|
- for (ULong d3 = 0; d3 < md.used[3]; d3++) {
|
||||||
|
- ULong addr = t->address + d0 * md.step[1] + d1 * md.step[2] +
|
||||||
|
- d2 * md.step[3] + d3 * md.step[4];
|
||||||
|
- ULong len = NNPA_mem_dim4_size(&md, d0, d1);
|
||||||
|
- PRE_MEM_READ(tst, s390_NNPA_errmsg_access[msg_idx], addr, len);
|
||||||
|
+ switch (md.layout) {
|
||||||
|
+ case S390_NNPA_4D_FEATURE_TENSOR:
|
||||||
|
+ case S390_NNPA_4D_KERNEL_TENSOR:
|
||||||
|
+ case S390_NNPA_4D_WEIGHTS_TENSOR:
|
||||||
|
+ for (ULong d0 = 0; d0 < md.dim[0]; d0++) {
|
||||||
|
+ for (ULong d1 = 0; d1 < md.dim[1]; d1++) {
|
||||||
|
+ ULong len;
|
||||||
|
+ switch (md.layout) {
|
||||||
|
+ case S390_NNPA_4D_FEATURE_TENSOR:
|
||||||
|
+ case S390_NNPA_4D_WEIGHTS_TENSOR:
|
||||||
|
+ len = d1 + 1 == md.dim[1] ? md.last_stick_fill : md.stick_fill;
|
||||||
|
+ break;
|
||||||
|
+ case S390_NNPA_4D_KERNEL_TENSOR:
|
||||||
|
+ len = d0 + 1 == md.dim[0] ? md.last_stick_fill : md.stick_fill;
|
||||||
|
+ break;
|
||||||
|
}
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- return ExtErr_OK;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static UWord NNPA_pre_write_tensor0(ThreadState* tst,
|
||||||
|
- UInt msg_idx,
|
||||||
|
- const struct s390_NNPA_tensor0* t)
|
||||||
|
-{
|
||||||
|
- struct s390_NNPA_mem_dimensions md;
|
||||||
|
- enum ExtensionError ret;
|
||||||
|
-
|
||||||
|
- ret = NNPA_tensor0_size(t, msg_idx, &md);
|
||||||
|
- if (ret != ExtErr_OK)
|
||||||
|
- return ret;
|
||||||
|
-
|
||||||
|
- PRE_MEM_WRITE(tst, "NNPA(out_tensor)", t->address, md.step[0]);
|
||||||
|
- return ExtErr_OK;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static void NNPA_post_write_tensor0(ThreadState* tst,
|
||||||
|
- UInt msg_idx,
|
||||||
|
- const struct s390_NNPA_tensor0* t)
|
||||||
|
-{
|
||||||
|
- struct s390_NNPA_mem_dimensions md;
|
||||||
|
- enum ExtensionError ret;
|
||||||
|
-
|
||||||
|
- ret = NNPA_tensor0_size(t, msg_idx, &md);
|
||||||
|
- if (ret != ExtErr_OK)
|
||||||
|
- return;
|
||||||
|
-
|
||||||
|
- for (ULong d0 = 0; d0 < md.used[0]; d0++) {
|
||||||
|
- for (ULong d1 = 0; d1 < md.used[1]; d1++) {
|
||||||
|
- for (ULong d2 = 0; d2 < md.used[2]; d2++) {
|
||||||
|
- for (ULong d3 = 0; d3 < md.used[3]; d3++) {
|
||||||
|
- ULong addr = t->address + d0 * md.step[1] + d1 * md.step[2] +
|
||||||
|
- d2 * md.step[3] + d3 * md.step[4];
|
||||||
|
- ULong len = NNPA_mem_dim4_size(&md, d0, d1);
|
||||||
|
- POST_MEM_WRITE(tst, addr, len);
|
||||||
|
+ for (ULong d2 = 0; d2 < md.dim[2]; d2++) {
|
||||||
|
+ for (ULong d3 = 0; d3 < md.used_sticks; d3++) {
|
||||||
|
+ if (md.layout == S390_NNPA_4D_WEIGHTS_TENSOR &&
|
||||||
|
+ d3 == md.used_sticks - 1 && t->dim2 % 2 != 0) {
|
||||||
|
+ // even elements only
|
||||||
|
+ for (ULong i = 0; i < len - 1; i += 2) {
|
||||||
|
+ if (do_write) {
|
||||||
|
+ POST_MEM_WRITE(tst, addr + i, 1);
|
||||||
|
+ } else {
|
||||||
|
+ PRE_MEM_READ(tst, s390_NNPA_errmsg_access[msg_idx],
|
||||||
|
+ addr + i, 1);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ } else if (do_write) {
|
||||||
|
+ POST_MEM_WRITE(tst, addr, len);
|
||||||
|
+ } else {
|
||||||
|
+ PRE_MEM_READ(tst, s390_NNPA_errmsg_access[msg_idx], addr,
|
||||||
|
+ len);
|
||||||
|
+ }
|
||||||
|
+ addr += 128;
|
||||||
|
+ }
|
||||||
|
+ addr += 128 * (md.dim[3] - md.used_sticks);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ break;
|
||||||
|
+ case S390_NNPA_4D_GENERIC_TENSOR:
|
||||||
|
+ if (do_write) {
|
||||||
|
+ POST_MEM_WRITE(tst, t->address, md.total_size);
|
||||||
|
+ } else {
|
||||||
|
+ PRE_MEM_READ(tst, s390_NNPA_errmsg_access[msg_idx], t->address,
|
||||||
|
+ md.total_size);
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
}
|
||||||
|
+ return ExtErr_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static enum ExtensionError do_extension_NNPA(ThreadState* tst, ULong variant)
|
||||||
|
@@ -571,16 +616,21 @@ static enum ExtensionError do_extension_NNPA(ThreadState* tst, ULong variant)
|
||||||
|
NNPA_dtypes_layouts, sizeof(NNPA_dtypes_layouts));
|
||||||
|
s390_filter_functions(&parms->conversions, sizeof(ULong),
|
||||||
|
NNPA_conversions, sizeof(NNPA_conversions));
|
||||||
|
+ // Clear reserved fields
|
||||||
|
+ parms->reserved1 = 0;
|
||||||
|
+ parms->reserved2 = 0;
|
||||||
|
+ parms->reserved3 = (__typeof__(parms->reserved3)){0};
|
||||||
|
} else {
|
||||||
|
- struct s390_NNPA_parms0* parms = (void*)parms_addr;
|
||||||
|
- const struct s390_NNPA_parms0 orig_parms = *parms;
|
||||||
|
- ULong save_area_size = 0;
|
||||||
|
- UInt in_tensors;
|
||||||
|
- UInt out_tensors;
|
||||||
|
+ struct s390_NNPA_parms* parms = (void*)parms_addr;
|
||||||
|
+ const struct s390_NNPA_parms orig_parms = *parms;
|
||||||
|
+ ULong save_area_size = 0;
|
||||||
|
+ UInt in_tensors;
|
||||||
|
+ UInt out_tensors;
|
||||||
|
+ enum ExtensionError retval;
|
||||||
|
|
||||||
|
parms_len = 4096;
|
||||||
|
PRE_MEM_READ(tst, "NNPA(parms)", parms_addr,
|
||||||
|
- sizeof(struct s390_NNPA_parms0));
|
||||||
|
+ sizeof(struct s390_NNPA_parms));
|
||||||
|
if (parms->cf) {
|
||||||
|
PRE_MEM_READ(tst, "NNPA(parms.csb)", parms_addr + 512,
|
||||||
|
parms_len - 512);
|
||||||
|
@@ -594,28 +644,39 @@ static enum ExtensionError do_extension_NNPA(ThreadState* tst, ULong variant)
|
||||||
|
case S390_NNPA_DIV:
|
||||||
|
case S390_NNPA_MIN:
|
||||||
|
case S390_NNPA_MAX:
|
||||||
|
+ case S390_NNPA_NORM:
|
||||||
|
in_tensors = 2;
|
||||||
|
out_tensors = 1;
|
||||||
|
break;
|
||||||
|
case S390_NNPA_LOG:
|
||||||
|
case S390_NNPA_EXP:
|
||||||
|
+ case S390_NNPA_SQRT:
|
||||||
|
+ case S390_NNPA_INVSQRT:
|
||||||
|
case S390_NNPA_RELU:
|
||||||
|
case S390_NNPA_TANH:
|
||||||
|
case S390_NNPA_SIGMOID:
|
||||||
|
+ case S390_NNPA_GELU:
|
||||||
|
in_tensors = 1;
|
||||||
|
out_tensors = 1;
|
||||||
|
break;
|
||||||
|
case S390_NNPA_SOFTMAX:
|
||||||
|
+ case S390_NNPA_REDUCE:
|
||||||
|
in_tensors = 1;
|
||||||
|
out_tensors = 1;
|
||||||
|
save_area_size = 8192;
|
||||||
|
break;
|
||||||
|
case S390_NNPA_BATCHNORM:
|
||||||
|
+ case S390_NNPA_LAYERNORM:
|
||||||
|
in_tensors = 3;
|
||||||
|
out_tensors = 1;
|
||||||
|
break;
|
||||||
|
+ case S390_NNPA_MOMENTS:
|
||||||
|
+ in_tensors = 1;
|
||||||
|
+ out_tensors = 2;
|
||||||
|
+ break;
|
||||||
|
case S390_NNPA_MAXPOOL2D:
|
||||||
|
case S390_NNPA_AVGPOOL2D:
|
||||||
|
+ case S390_NNPA_TRANSFORM:
|
||||||
|
in_tensors = 1;
|
||||||
|
out_tensors = 1;
|
||||||
|
break;
|
||||||
|
@@ -627,6 +688,7 @@ static enum ExtensionError do_extension_NNPA(ThreadState* tst, ULong variant)
|
||||||
|
case S390_NNPA_CONVOLUTION:
|
||||||
|
case S390_NNPA_MATMUL_OP:
|
||||||
|
case S390_NNPA_MATMUL_OP_BCAST23:
|
||||||
|
+ case S390_NNPA_MATMUL_OP_BCAST1:
|
||||||
|
in_tensors = 3;
|
||||||
|
out_tensors = 1;
|
||||||
|
break;
|
||||||
|
@@ -635,16 +697,20 @@ static enum ExtensionError do_extension_NNPA(ThreadState* tst, ULong variant)
|
||||||
|
}
|
||||||
|
|
||||||
|
for (UInt i = 0; i < in_tensors; i++) {
|
||||||
|
- enum ExtensionError retval =
|
||||||
|
- NNPA_pre_read_tensor0(tst, s390_NNPA_message_in + i, &parms->in[i]);
|
||||||
|
+ retval = NNPA_track_tensor(tst, s390_NNPA_message_in + i,
|
||||||
|
+ &parms->in[i], False);
|
||||||
|
if (retval != ExtErr_OK)
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
for (UInt i = 0; i < out_tensors; i++) {
|
||||||
|
- enum ExtensionError retval = NNPA_pre_write_tensor0(
|
||||||
|
- tst, s390_NNPA_message_out + i, &parms->out[i]);
|
||||||
|
+ UInt msg_idx = s390_NNPA_message_out + i;
|
||||||
|
+ struct s390_NNPA_mem_dimensions md;
|
||||||
|
+
|
||||||
|
+ retval = NNPA_tensor_size(&parms->out[i], msg_idx, &md);
|
||||||
|
if (retval != ExtErr_OK)
|
||||||
|
return retval;
|
||||||
|
+ PRE_MEM_WRITE(tst, s390_NNPA_errmsg_access[msg_idx],
|
||||||
|
+ parms->out[i].address, md.total_size);
|
||||||
|
}
|
||||||
|
if (save_area_size != 0) {
|
||||||
|
PRE_MEM_WRITE(tst, "NNPA(save_area)", parms->save_area_address,
|
||||||
|
@@ -653,8 +719,10 @@ static enum ExtensionError do_extension_NNPA(ThreadState* tst, ULong variant)
|
||||||
|
cc = do_NNPA_insn(&gpr0, parms_addr);
|
||||||
|
if (cc == 0) {
|
||||||
|
for (UInt i = 0; i < out_tensors; i++) {
|
||||||
|
- NNPA_post_write_tensor0(tst, s390_NNPA_message_out + i,
|
||||||
|
- &orig_parms.out[i]);
|
||||||
|
+ retval = NNPA_track_tensor(tst, s390_NNPA_message_out + i,
|
||||||
|
+ &orig_parms.out[i], True);
|
||||||
|
+ if (retval != ExtErr_OK)
|
||||||
|
+ return retval;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.50.1
|
||||||
|
|
@ -1,37 +0,0 @@
|
|||||||
From 2cb0bee2d7722b57956f66a0795b5b9106f88afc Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Wielaard <mark@klomp.org>
|
|
||||||
Date: Tue, 12 Nov 2024 13:23:03 +0100
|
|
||||||
Subject: [PATCH 02/11] vgdb.c (fork_and_exec_valgrind): Fix off-by-one error
|
|
||||||
write
|
|
||||||
|
|
||||||
commit 646978d9adc5 ("vgdb: Handle EINTR and EAGAIN more
|
|
||||||
consistently") introduced an off-by-one issue trying to write back the
|
|
||||||
error from child to parent.
|
|
||||||
|
|
||||||
Instead of +1 it should have been +written (which initially is zero).
|
|
||||||
|
|
||||||
This is in an "should never happen" path, so hopefully didn't really
|
|
||||||
cause issues. But if it did happen the parent would have gotten the
|
|
||||||
wrong error code.
|
|
||||||
|
|
||||||
(cherry picked from commit f4fe5faf3d0f45b3824bbb9070232682df52a582)
|
|
||||||
---
|
|
||||||
coregrind/vgdb.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/coregrind/vgdb.c b/coregrind/vgdb.c
|
|
||||||
index 786ead160d34..112f23fe6ba1 100644
|
|
||||||
--- a/coregrind/vgdb.c
|
|
||||||
+++ b/coregrind/vgdb.c
|
|
||||||
@@ -1368,7 +1368,7 @@ int fork_and_exec_valgrind (int argc, char **argv, const char *working_dir,
|
|
||||||
// We try to write the result to the parent, but always exit.
|
|
||||||
size_t written = 0;
|
|
||||||
while (written < sizeof (int)) {
|
|
||||||
- ssize_t nrw = write (pipefd[1], ((char *) &err) + 1,
|
|
||||||
+ ssize_t nrw = write (pipefd[1], ((char *) &err) + written,
|
|
||||||
sizeof (int) - written);
|
|
||||||
if (nrw == -1) {
|
|
||||||
if (errno == EINTR || errno == EAGAIN)
|
|
||||||
--
|
|
||||||
2.47.0
|
|
||||||
|
|
@ -0,0 +1,102 @@
|
|||||||
|
From 5c912fcfaff2c7c34232562a118fa5722c6df995 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Martin Cermak <mcermak@redhat.com>
|
||||||
|
Date: Fri, 8 Aug 2025 23:46:53 +0200
|
||||||
|
Subject: [PATCH 3/3] Add several missing syscall hooks to ppc64-linux
|
||||||
|
|
||||||
|
Specifically:
|
||||||
|
|
||||||
|
sys_getrlimit
|
||||||
|
sys_mincore
|
||||||
|
sys_tkill
|
||||||
|
sys_unshare
|
||||||
|
sys_splice
|
||||||
|
sys_tee
|
||||||
|
sys_vmsplice
|
||||||
|
sys_fanotify_init
|
||||||
|
sys_fanotify_mark
|
||||||
|
sys_kcmp
|
||||||
|
sys_bpf
|
||||||
|
|
||||||
|
https://bugs.kde.org/show_bug.cgi?id=508030
|
||||||
|
(cherry picked from commit 4363549490ecaeaa6c3048beeb8c5edcec33ec06)
|
||||||
|
---
|
||||||
|
NEWS | 1 +
|
||||||
|
coregrind/m_syswrap/syswrap-ppc64-linux.c | 14 +++++++++++---
|
||||||
|
2 files changed, 12 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index 4e6e6c6d2387..3eea6bb1b709 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -6,6 +6,7 @@ Branch 3.25.x
|
||||||
|
The following bugs have been fixed or resolved on this branch.
|
||||||
|
|
||||||
|
503241 s390x: Support z17 changes to the NNPA instruction
|
||||||
|
+508030 Add several missing syscall hooks to ppc64-linux
|
||||||
|
|
||||||
|
To see details of a given bug, visit
|
||||||
|
https://bugs.kde.org/show_bug.cgi?id=XXXXXX
|
||||||
|
diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
||||||
|
index 007fa6336c0e..03a5e6a822c1 100644
|
||||||
|
--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
||||||
|
+++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
||||||
|
@@ -691,7 +691,7 @@ static SyscallTableEntry syscall_table[] = {
|
||||||
|
// _____(__NR_sethostname, sys_sethostname), // 74
|
||||||
|
|
||||||
|
GENX_(__NR_setrlimit, sys_setrlimit), // 75
|
||||||
|
-// _____(__NR_getrlimit, sys_getrlimit), // 76
|
||||||
|
+ GENXY(__NR_getrlimit, sys_getrlimit), // 76
|
||||||
|
GENXY(__NR_getrusage, sys_getrusage), // 77
|
||||||
|
GENXY(__NR_gettimeofday, sys_gettimeofday), // 78
|
||||||
|
// _____(__NR_settimeofday, sys_settimeofday), // 79
|
||||||
|
@@ -847,9 +847,9 @@ static SyscallTableEntry syscall_table[] = {
|
||||||
|
LINXY(__NR_fcntl64, sys_fcntl64), // 204 !!!!?? 32bit only */
|
||||||
|
|
||||||
|
GENX_(__NR_madvise, sys_madvise), // 205
|
||||||
|
-// _____(__NR_mincore, sys_mincore), // 206
|
||||||
|
+ GENXY(__NR_mincore, sys_mincore), // 206
|
||||||
|
LINX_(__NR_gettid, sys_gettid), // 207
|
||||||
|
-// _____(__NR_tkill, sys_tkill), // 208
|
||||||
|
+ LINXY(__NR_tkill, sys_tkill), // 208
|
||||||
|
LINX_(__NR_setxattr, sys_setxattr), // 209
|
||||||
|
|
||||||
|
LINX_(__NR_lsetxattr, sys_lsetxattr), // 210
|
||||||
|
@@ -934,6 +934,10 @@ static SyscallTableEntry syscall_table[] = {
|
||||||
|
|
||||||
|
LINXY(__NR_pselect6, sys_pselect6), // 280
|
||||||
|
LINXY(__NR_ppoll, sys_ppoll), // 281
|
||||||
|
+ LINX_(__NR_unshare, sys_unshare), // 282
|
||||||
|
+ LINX_(__NR_splice, sys_splice), // 283
|
||||||
|
+ LINX_(__NR_tee, sys_tee), // 284
|
||||||
|
+ LINXY(__NR_vmsplice, sys_vmsplice), // 285
|
||||||
|
|
||||||
|
LINXY(__NR_openat, sys_openat), // 286
|
||||||
|
LINX_(__NR_mkdirat, sys_mkdirat), // 287
|
||||||
|
@@ -972,6 +976,8 @@ static SyscallTableEntry syscall_table[] = {
|
||||||
|
LINXY(__NR_preadv, sys_preadv), // 320
|
||||||
|
LINX_(__NR_pwritev, sys_pwritev), // 321
|
||||||
|
LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo),// 322
|
||||||
|
+ LINXY(__NR_fanotify_init, sys_fanotify_init), // 323
|
||||||
|
+ LINX_(__NR_fanotify_mark, sys_fanotify_mark), // 324
|
||||||
|
|
||||||
|
LINXY(__NR_prlimit64, sys_prlimit64), // 325
|
||||||
|
LINXY(__NR_socket, sys_socket), // 326
|
||||||
|
@@ -1001,6 +1007,7 @@ static SyscallTableEntry syscall_table[] = {
|
||||||
|
|
||||||
|
LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 351
|
||||||
|
LINX_(__NR_process_vm_writev, sys_process_vm_writev),// 352
|
||||||
|
+ LINX_(__NR_kcmp, sys_kcmp), // 354
|
||||||
|
|
||||||
|
LINX_(__NR_sched_setattr, sys_sched_setattr), // 355
|
||||||
|
LINXY(__NR_sched_getattr, sys_sched_getattr), // 356
|
||||||
|
@@ -1008,6 +1015,7 @@ static SyscallTableEntry syscall_table[] = {
|
||||||
|
|
||||||
|
LINXY(__NR_getrandom, sys_getrandom), // 359
|
||||||
|
LINXY(__NR_memfd_create, sys_memfd_create), // 360
|
||||||
|
+ LINXY(__NR_bpf, sys_bpf), // 361
|
||||||
|
|
||||||
|
LINX_(__NR_execveat, sys_execveat), // 362
|
||||||
|
|
||||||
|
--
|
||||||
|
2.50.1
|
||||||
|
|
@ -1,36 +0,0 @@
|
|||||||
From 8b08da73cf3d72439c4f750c96ed2f088ef1bbec Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Wielaard <mark@klomp.org>
|
|
||||||
Date: Tue, 12 Nov 2024 13:34:09 +0100
|
|
||||||
Subject: [PATCH 03/11] vgdb.c (fork_and_exec_valgrind): Fix another off-by-one
|
|
||||||
error write
|
|
||||||
|
|
||||||
commit 646978d9adc5 ("vgdb: Handle EINTR and EAGAIN more
|
|
||||||
consistently") introduced another off-by-one issue trying to write
|
|
||||||
back the error from child to parent.
|
|
||||||
|
|
||||||
Instead of +1 it should have been +written (which initially is zero).
|
|
||||||
|
|
||||||
This is when the child needs to do a chdir and that chdir fails. If
|
|
||||||
that happens the parent would have gotten the wrong error code.
|
|
||||||
|
|
||||||
(cherry picked from commit 747ca4eb5fed5dd58a14391a997bb9e658e3b1c8)
|
|
||||||
---
|
|
||||||
coregrind/vgdb.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/coregrind/vgdb.c b/coregrind/vgdb.c
|
|
||||||
index 112f23fe6ba1..cc945c8dfafa 100644
|
|
||||||
--- a/coregrind/vgdb.c
|
|
||||||
+++ b/coregrind/vgdb.c
|
|
||||||
@@ -1289,7 +1289,7 @@ int fork_and_exec_valgrind (int argc, char **argv, const char *working_dir,
|
|
||||||
// We try to write the result to the parent, but always exit.
|
|
||||||
size_t written = 0;
|
|
||||||
while (written < sizeof (int)) {
|
|
||||||
- int nrw = write (pipefd[1], ((char *)&err) + 1,
|
|
||||||
+ int nrw = write (pipefd[1], ((char *)&err) + written,
|
|
||||||
sizeof (int) - written);
|
|
||||||
if (nrw == -1) {
|
|
||||||
if (errno == EINTR || errno == EAGAIN)
|
|
||||||
--
|
|
||||||
2.47.0
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
|||||||
From 7e79bb6e6b80eb43138cbbb64737433f9e036cd4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Paul Floyd <pjfloyd@wanadoo.fr>
|
|
||||||
Date: Thu, 21 Nov 2024 08:44:04 +0100
|
|
||||||
Subject: [PATCH 04/11] regtest: add a fdleak filter for write on write on
|
|
||||||
linux arm64
|
|
||||||
|
|
||||||
(cherry picked from commit 9150b3c7cfad2fdbeb7cf707175c359ee12d8f75)
|
|
||||||
---
|
|
||||||
none/tests/filter_fdleak | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/none/tests/filter_fdleak b/none/tests/filter_fdleak
|
|
||||||
index d26937bccd38..72923aa730c8 100755
|
|
||||||
--- a/none/tests/filter_fdleak
|
|
||||||
+++ b/none/tests/filter_fdleak
|
|
||||||
@@ -19,6 +19,8 @@ perl -p -e 's/socket\.c:[1-9][0-9]*/in \/...libc.../' |
|
|
||||||
# arm systems substitute open for creat
|
|
||||||
perl -p -e 's/open \(open64\.c:[1-9][0-9]*\)/creat (in \/...libc...)/' |
|
|
||||||
perl -p -e "s/: open \(/: creat (/" |
|
|
||||||
+# arm64 write resolved to file:line with debuginfo
|
|
||||||
+perl -p -e "s/write\.c:[1-9][0-9]*/in \/...libc.../" |
|
|
||||||
|
|
||||||
# FreeBSD specific fdleak filters
|
|
||||||
perl -p -e 's/ _close / close /;s/ _openat / creat /;s/internet/AF_INET socket 4: 127.0.0.1:... <-> 127.0.0.1:.../' |
|
|
||||||
--
|
|
||||||
2.47.0
|
|
||||||
|
|
@ -1,491 +0,0 @@
|
|||||||
From ba15b8fe7d6fabfb73424a616de18a752a56430a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Wielaard <mark@klomp.org>
|
|
||||||
Date: Sat, 23 Nov 2024 21:28:13 +0100
|
|
||||||
Subject: [PATCH 05/11] Add exp and supp patterns for missing main frame for
|
|
||||||
ppc64le
|
|
||||||
|
|
||||||
In some cases on ppc64le we are missing the main frame.
|
|
||||||
Add alternative .exp-ppc64le variants for socket_close_xml,
|
|
||||||
fdleak_cmsg_xml and fdleak_ipv4_xml. And extra suppressions
|
|
||||||
without a main frame for fdleak_cmsg_supp.
|
|
||||||
|
|
||||||
See also commit 04d30049b "Filter away "main" differences in filter_fdleak"
|
|
||||||
|
|
||||||
(cherry picked from commit e6960c2e41b103ab8d393cbe13dc6473fb89bffc)
|
|
||||||
---
|
|
||||||
none/tests/fdleak_cmsg_supp.supp | 47 ++++++
|
|
||||||
none/tests/fdleak_cmsg_xml.stderr.exp-ppc64le | 147 ++++++++++++++++++
|
|
||||||
none/tests/fdleak_ipv4_xml.stderr.exp-ppc64le | 139 +++++++++++++++++
|
|
||||||
.../tests/socket_close_xml.stderr.exp-ppc64le | 98 ++++++++++++
|
|
||||||
4 files changed, 431 insertions(+)
|
|
||||||
create mode 100644 none/tests/fdleak_cmsg_xml.stderr.exp-ppc64le
|
|
||||||
create mode 100644 none/tests/fdleak_ipv4_xml.stderr.exp-ppc64le
|
|
||||||
create mode 100644 none/tests/socket_close_xml.stderr.exp-ppc64le
|
|
||||||
|
|
||||||
diff --git a/none/tests/fdleak_cmsg_supp.supp b/none/tests/fdleak_cmsg_supp.supp
|
|
||||||
index 92fbacabdb78..a169fd888bcc 100644
|
|
||||||
--- a/none/tests/fdleak_cmsg_supp.supp
|
|
||||||
+++ b/none/tests/fdleak_cmsg_supp.supp
|
|
||||||
@@ -12,6 +12,13 @@
|
|
||||||
fun:server
|
|
||||||
fun:main
|
|
||||||
}
|
|
||||||
+{
|
|
||||||
+ sup2-ppc64le
|
|
||||||
+ CoreError:FdNotClosed
|
|
||||||
+ fun:socket
|
|
||||||
+ fun:server
|
|
||||||
+ #fun:main
|
|
||||||
+}
|
|
||||||
{
|
|
||||||
sup3
|
|
||||||
CoreError:FdNotClosed
|
|
||||||
@@ -42,3 +49,43 @@
|
|
||||||
fun:client
|
|
||||||
fun:main
|
|
||||||
}
|
|
||||||
+{
|
|
||||||
+ sup6-ppc64le
|
|
||||||
+ CoreError:FdNotClosed
|
|
||||||
+ fun:socket
|
|
||||||
+ fun:client
|
|
||||||
+ #fun:main
|
|
||||||
+}
|
|
||||||
+{
|
|
||||||
+ sup7
|
|
||||||
+ CoreError:FdNotClosed
|
|
||||||
+ fun:_so_socket
|
|
||||||
+ fun:__xnet_socket
|
|
||||||
+ fun:client
|
|
||||||
+ fun:main
|
|
||||||
+}
|
|
||||||
+{
|
|
||||||
+ sup8
|
|
||||||
+ CoreError:FdNotClosed
|
|
||||||
+ fun:__so_recvmsg
|
|
||||||
+ fun:__xnet_recvmsg
|
|
||||||
+ fun:client
|
|
||||||
+ fun:main
|
|
||||||
+}
|
|
||||||
+{
|
|
||||||
+ sup9
|
|
||||||
+ CoreError:FdNotClosed
|
|
||||||
+ fun:_so_socket
|
|
||||||
+ fun:__xnet_socket
|
|
||||||
+ fun:server
|
|
||||||
+ fun:main
|
|
||||||
+}
|
|
||||||
+{
|
|
||||||
+ sup10
|
|
||||||
+ CoreError:FdNotClosed
|
|
||||||
+ fun:__so_accept
|
|
||||||
+ fun:accept
|
|
||||||
+ fun:server
|
|
||||||
+ fun:main
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
diff --git a/none/tests/fdleak_cmsg_xml.stderr.exp-ppc64le b/none/tests/fdleak_cmsg_xml.stderr.exp-ppc64le
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..6294094eb92e
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/none/tests/fdleak_cmsg_xml.stderr.exp-ppc64le
|
|
||||||
@@ -0,0 +1,147 @@
|
|
||||||
+<?xml version="1.0"?>
|
|
||||||
+
|
|
||||||
+<valgrindoutput>
|
|
||||||
+
|
|
||||||
+<protocolversion>5</protocolversion>
|
|
||||||
+<protocoltool>none</protocoltool>
|
|
||||||
+
|
|
||||||
+<preamble>
|
|
||||||
+ <line>Nulgrind, the minimal Valgrind tool</line>
|
|
||||||
+ <line>Copyright...</line>
|
|
||||||
+ <line>Using Valgrind...</line>
|
|
||||||
+ <line>Command: ./fdleak_cmsg</line>
|
|
||||||
+</preamble>
|
|
||||||
+
|
|
||||||
+<pid>...</pid>
|
|
||||||
+<ppid>...</ppid>
|
|
||||||
+<tool>none</tool>
|
|
||||||
+
|
|
||||||
+<args>
|
|
||||||
+ <vargv>
|
|
||||||
+ <exe>...</exe>
|
|
||||||
+ <arg>--command-line-only=yes</arg>
|
|
||||||
+ <arg>--memcheck:leak-check=no</arg>
|
|
||||||
+ <arg>--tool=none</arg>
|
|
||||||
+ <arg>--track-fds=all</arg>
|
|
||||||
+ <arg>--xml=yes</arg>
|
|
||||||
+ <arg>--xml-fd=2</arg>
|
|
||||||
+ <arg>--child-silent-after-fork=yes</arg>
|
|
||||||
+ </vargv>
|
|
||||||
+ <argv>
|
|
||||||
+ <exe>...</exe>
|
|
||||||
+ </argv>
|
|
||||||
+</args>
|
|
||||||
+
|
|
||||||
+<status>
|
|
||||||
+ <state>RUNNING</state>
|
|
||||||
+ <time>...</time>
|
|
||||||
+</status>
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+<status>
|
|
||||||
+ <state>FINISHED</state>
|
|
||||||
+ <time>...</time>
|
|
||||||
+</status>
|
|
||||||
+
|
|
||||||
+<error>
|
|
||||||
+ <unique>0x........</unique>
|
|
||||||
+ <tid>...</tid>
|
|
||||||
+ <kind>FdNotClosed</kind>
|
|
||||||
+ <fd>5</fd>
|
|
||||||
+ <path>...</path>
|
|
||||||
+ <what>...</what>
|
|
||||||
+ <stack>
|
|
||||||
+ <frame>
|
|
||||||
+ <ip>0x........</ip>
|
|
||||||
+ <obj>...</obj>
|
|
||||||
+ <fn>client</fn>
|
|
||||||
+ <dir>...</dir>
|
|
||||||
+ <file>fdleak_cmsg.c</file>
|
|
||||||
+ <line>133</line>
|
|
||||||
+ </frame>
|
|
||||||
+ <frame>
|
|
||||||
+ <ip>0x........</ip>
|
|
||||||
+ <obj>...</obj>
|
|
||||||
+ <fn>main</fn>
|
|
||||||
+ <dir>...</dir>
|
|
||||||
+ <file>fdleak_cmsg.c</file>
|
|
||||||
+ <line>174</line>
|
|
||||||
+ </frame>
|
|
||||||
+ </stack>
|
|
||||||
+</error>
|
|
||||||
+
|
|
||||||
+<error>
|
|
||||||
+ <unique>0x........</unique>
|
|
||||||
+ <tid>...</tid>
|
|
||||||
+ <kind>FdNotClosed</kind>
|
|
||||||
+ <fd>4</fd>
|
|
||||||
+ <path>...</path>
|
|
||||||
+ <what>...</what>
|
|
||||||
+ <stack>
|
|
||||||
+ <frame>
|
|
||||||
+ <ip>0x........</ip>
|
|
||||||
+ <obj>...</obj>
|
|
||||||
+ <fn>client</fn>
|
|
||||||
+ <dir>...</dir>
|
|
||||||
+ <file>fdleak_cmsg.c</file>
|
|
||||||
+ <line>133</line>
|
|
||||||
+ </frame>
|
|
||||||
+ <frame>
|
|
||||||
+ <ip>0x........</ip>
|
|
||||||
+ <obj>...</obj>
|
|
||||||
+ <fn>main</fn>
|
|
||||||
+ <dir>...</dir>
|
|
||||||
+ <file>fdleak_cmsg.c</file>
|
|
||||||
+ <line>174</line>
|
|
||||||
+ </frame>
|
|
||||||
+ </stack>
|
|
||||||
+</error>
|
|
||||||
+
|
|
||||||
+<error>
|
|
||||||
+ <unique>0x........</unique>
|
|
||||||
+ <tid>...</tid>
|
|
||||||
+ <kind>FdNotClosed</kind>
|
|
||||||
+ <fd>3</fd>
|
|
||||||
+ <what>...</what>
|
|
||||||
+ <stack>
|
|
||||||
+ <frame>
|
|
||||||
+ <ip>0x........</ip>
|
|
||||||
+ <obj>...</obj>
|
|
||||||
+ <fn>client</fn>
|
|
||||||
+ <dir>...</dir>
|
|
||||||
+ <file>fdleak_cmsg.c</file>
|
|
||||||
+ <line>112</line>
|
|
||||||
+ </frame>
|
|
||||||
+ </stack>
|
|
||||||
+</error>
|
|
||||||
+
|
|
||||||
+<error>
|
|
||||||
+ <unique>0x........</unique>
|
|
||||||
+ <tid>...</tid>
|
|
||||||
+ <kind>FdNotClosed</kind>
|
|
||||||
+ <fd>2</fd>
|
|
||||||
+ <path>...</path>
|
|
||||||
+ <what>...</what>
|
|
||||||
+</error>
|
|
||||||
+
|
|
||||||
+<error>
|
|
||||||
+ <unique>0x........</unique>
|
|
||||||
+ <tid>...</tid>
|
|
||||||
+ <kind>FdNotClosed</kind>
|
|
||||||
+ <fd>1</fd>
|
|
||||||
+ <path>...</path>
|
|
||||||
+ <what>...</what>
|
|
||||||
+</error>
|
|
||||||
+
|
|
||||||
+<error>
|
|
||||||
+ <unique>0x........</unique>
|
|
||||||
+ <tid>...</tid>
|
|
||||||
+ <kind>FdNotClosed</kind>
|
|
||||||
+ <fd>0</fd>
|
|
||||||
+ <path>...</path>
|
|
||||||
+ <what>...</what>
|
|
||||||
+</error>
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+</valgrindoutput>
|
|
||||||
+
|
|
||||||
diff --git a/none/tests/fdleak_ipv4_xml.stderr.exp-ppc64le b/none/tests/fdleak_ipv4_xml.stderr.exp-ppc64le
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..df413b62895c
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/none/tests/fdleak_ipv4_xml.stderr.exp-ppc64le
|
|
||||||
@@ -0,0 +1,139 @@
|
|
||||||
+<?xml version="1.0"?>
|
|
||||||
+
|
|
||||||
+<valgrindoutput>
|
|
||||||
+
|
|
||||||
+<protocolversion>5</protocolversion>
|
|
||||||
+<protocoltool>none</protocoltool>
|
|
||||||
+
|
|
||||||
+<preamble>
|
|
||||||
+ <line>Nulgrind, the minimal Valgrind tool</line>
|
|
||||||
+ <line>Copyright...</line>
|
|
||||||
+ <line>Using Valgrind...</line>
|
|
||||||
+ <line>Command: ./fdleak_ipv4</line>
|
|
||||||
+</preamble>
|
|
||||||
+
|
|
||||||
+<pid>...</pid>
|
|
||||||
+<ppid>...</ppid>
|
|
||||||
+<tool>none</tool>
|
|
||||||
+
|
|
||||||
+<args>
|
|
||||||
+ <vargv>
|
|
||||||
+ <exe>...</exe>
|
|
||||||
+ <arg>--command-line-only=yes</arg>
|
|
||||||
+ <arg>--memcheck:leak-check=no</arg>
|
|
||||||
+ <arg>--tool=none</arg>
|
|
||||||
+ <arg>--track-fds=yes</arg>
|
|
||||||
+ <arg>--xml=yes</arg>
|
|
||||||
+ <arg>--xml-fd=2</arg>
|
|
||||||
+ <arg>--child-silent-after-fork=yes</arg>
|
|
||||||
+ </vargv>
|
|
||||||
+ <argv>
|
|
||||||
+ <exe>...</exe>
|
|
||||||
+ </argv>
|
|
||||||
+</args>
|
|
||||||
+
|
|
||||||
+<status>
|
|
||||||
+ <state>RUNNING</state>
|
|
||||||
+ <time>...</time>
|
|
||||||
+</status>
|
|
||||||
+
|
|
||||||
+<error>
|
|
||||||
+ <unique>0x........</unique>
|
|
||||||
+ <tid>...</tid>
|
|
||||||
+ <kind>FdBadClose</kind>
|
|
||||||
+ <fd>4</fd>
|
|
||||||
+ <what>...</what>
|
|
||||||
+ <stack>
|
|
||||||
+ <frame>
|
|
||||||
+ <ip>0x........</ip>
|
|
||||||
+ <obj>...</obj>
|
|
||||||
+ <fn>client</fn>
|
|
||||||
+ <dir>...</dir>
|
|
||||||
+ <file>fdleak_ipv4.c</file>
|
|
||||||
+ <line>70</line>
|
|
||||||
+ </frame>
|
|
||||||
+ <frame>
|
|
||||||
+ <ip>0x........</ip>
|
|
||||||
+ <obj>...</obj>
|
|
||||||
+ <fn>main</fn>
|
|
||||||
+ <dir>...</dir>
|
|
||||||
+ <file>fdleak_ipv4.c</file>
|
|
||||||
+ <line>90</line>
|
|
||||||
+ </frame>
|
|
||||||
+ </stack>
|
|
||||||
+ <auxwhat>Previously closed</auxwhat>
|
|
||||||
+ <stack>
|
|
||||||
+ <frame>
|
|
||||||
+ <ip>0x........</ip>
|
|
||||||
+ <obj>...</obj>
|
|
||||||
+ <fn>client</fn>
|
|
||||||
+ <dir>...</dir>
|
|
||||||
+ <file>fdleak_ipv4.c</file>
|
|
||||||
+ <line>69</line>
|
|
||||||
+ </frame>
|
|
||||||
+ <frame>
|
|
||||||
+ <ip>0x........</ip>
|
|
||||||
+ <obj>...</obj>
|
|
||||||
+ <fn>main</fn>
|
|
||||||
+ <dir>...</dir>
|
|
||||||
+ <file>fdleak_ipv4.c</file>
|
|
||||||
+ <line>90</line>
|
|
||||||
+ </frame>
|
|
||||||
+ </stack>
|
|
||||||
+ <auxwhat>Originally opened</auxwhat>
|
|
||||||
+ <stack>
|
|
||||||
+ <frame>
|
|
||||||
+ <ip>0x........</ip>
|
|
||||||
+ <obj>...</obj>
|
|
||||||
+ <fn>client</fn>
|
|
||||||
+ <dir>...</dir>
|
|
||||||
+ <file>fdleak_ipv4.c</file>
|
|
||||||
+ <line>68</line>
|
|
||||||
+ </frame>
|
|
||||||
+ <frame>
|
|
||||||
+ <ip>0x........</ip>
|
|
||||||
+ <obj>...</obj>
|
|
||||||
+ <fn>main</fn>
|
|
||||||
+ <dir>...</dir>
|
|
||||||
+ <file>fdleak_ipv4.c</file>
|
|
||||||
+ <line>90</line>
|
|
||||||
+ </frame>
|
|
||||||
+ </stack>
|
|
||||||
+</error>
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+<status>
|
|
||||||
+ <state>FINISHED</state>
|
|
||||||
+ <time>...</time>
|
|
||||||
+</status>
|
|
||||||
+
|
|
||||||
+<error>
|
|
||||||
+ <unique>0x........</unique>
|
|
||||||
+ <tid>...</tid>
|
|
||||||
+ <kind>FdNotClosed</kind>
|
|
||||||
+ <fd>3</fd>
|
|
||||||
+ <what>...</what>
|
|
||||||
+ <stack>
|
|
||||||
+ <frame>
|
|
||||||
+ <ip>0x........</ip>
|
|
||||||
+ <obj>...</obj>
|
|
||||||
+ <fn>client</fn>
|
|
||||||
+ <dir>...</dir>
|
|
||||||
+ <file>fdleak_ipv4.c</file>
|
|
||||||
+ <line>51</line>
|
|
||||||
+ </frame>
|
|
||||||
+ </stack>
|
|
||||||
+</error>
|
|
||||||
+
|
|
||||||
+<errorcounts>
|
|
||||||
+ <pair>
|
|
||||||
+ <count>1</count>
|
|
||||||
+ <unique>0x........</unique>
|
|
||||||
+ </pair>
|
|
||||||
+</errorcounts>
|
|
||||||
+
|
|
||||||
+<suppcounts>
|
|
||||||
+</suppcounts>
|
|
||||||
+
|
|
||||||
+</valgrindoutput>
|
|
||||||
+
|
|
||||||
diff --git a/none/tests/socket_close_xml.stderr.exp-ppc64le b/none/tests/socket_close_xml.stderr.exp-ppc64le
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..2f2bc9831e79
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/none/tests/socket_close_xml.stderr.exp-ppc64le
|
|
||||||
@@ -0,0 +1,98 @@
|
|
||||||
+<?xml version="1.0"?>
|
|
||||||
+
|
|
||||||
+<valgrindoutput>
|
|
||||||
+
|
|
||||||
+<protocolversion>5</protocolversion>
|
|
||||||
+<protocoltool>none</protocoltool>
|
|
||||||
+
|
|
||||||
+<preamble>
|
|
||||||
+ <line>Nulgrind, the minimal Valgrind tool</line>
|
|
||||||
+ <line>Copyright...</line>
|
|
||||||
+ <line>Using Valgrind...</line>
|
|
||||||
+ <line>Command: ./socket_close</line>
|
|
||||||
+</preamble>
|
|
||||||
+
|
|
||||||
+<pid>...</pid>
|
|
||||||
+<ppid>...</ppid>
|
|
||||||
+<tool>none</tool>
|
|
||||||
+
|
|
||||||
+<args>
|
|
||||||
+ <vargv>
|
|
||||||
+ <exe>...</exe>
|
|
||||||
+ <arg>--command-line-only=yes</arg>
|
|
||||||
+ <arg>--memcheck:leak-check=no</arg>
|
|
||||||
+ <arg>--tool=none</arg>
|
|
||||||
+ <arg>-q</arg>
|
|
||||||
+ <arg>--track-fds=yes</arg>
|
|
||||||
+ <arg>--xml=yes</arg>
|
|
||||||
+ <arg>--xml-fd=2</arg>
|
|
||||||
+ </vargv>
|
|
||||||
+ <argv>
|
|
||||||
+ <exe>...</exe>
|
|
||||||
+ </argv>
|
|
||||||
+</args>
|
|
||||||
+
|
|
||||||
+<status>
|
|
||||||
+ <state>RUNNING</state>
|
|
||||||
+ <time>...</time>
|
|
||||||
+</status>
|
|
||||||
+
|
|
||||||
+Open socket 3
|
|
||||||
+close socket_fd 3
|
|
||||||
+and close the socket again 3
|
|
||||||
+<error>
|
|
||||||
+ <unique>0x........</unique>
|
|
||||||
+ <tid>...</tid>
|
|
||||||
+ <kind>FdBadClose</kind>
|
|
||||||
+ <fd>3</fd>
|
|
||||||
+ <what>...</what>
|
|
||||||
+ <stack>
|
|
||||||
+ <frame>
|
|
||||||
+ <ip>0x........</ip>
|
|
||||||
+ <obj>...</obj>
|
|
||||||
+ <fn>main</fn>
|
|
||||||
+ <dir>...</dir>
|
|
||||||
+ <file>socket_close.c</file>
|
|
||||||
+ <line>40</line>
|
|
||||||
+ </frame>
|
|
||||||
+ </stack>
|
|
||||||
+ <auxwhat>Previously closed</auxwhat>
|
|
||||||
+ <stack>
|
|
||||||
+ <frame>
|
|
||||||
+ <ip>0x........</ip>
|
|
||||||
+ <obj>...</obj>
|
|
||||||
+ <fn>main</fn>
|
|
||||||
+ <dir>...</dir>
|
|
||||||
+ <file>socket_close.c</file>
|
|
||||||
+ <line>36</line>
|
|
||||||
+ </frame>
|
|
||||||
+ </stack>
|
|
||||||
+ <auxwhat>Originally opened</auxwhat>
|
|
||||||
+ <stack>
|
|
||||||
+ <frame>
|
|
||||||
+ <ip>0x........</ip>
|
|
||||||
+ <obj>...</obj>
|
|
||||||
+ <fn>open_socket</fn>
|
|
||||||
+ <dir>...</dir>
|
|
||||||
+ <file>socket_close.c</file>
|
|
||||||
+ <line>17</line>
|
|
||||||
+ </frame>
|
|
||||||
+ </stack>
|
|
||||||
+</error>
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+<status>
|
|
||||||
+ <state>FINISHED</state>
|
|
||||||
+ <time>...</time>
|
|
||||||
+</status>
|
|
||||||
+
|
|
||||||
+<errorcounts>
|
|
||||||
+ <pair>
|
|
||||||
+ <count>1</count>
|
|
||||||
+ <unique>0x........</unique>
|
|
||||||
+ </pair>
|
|
||||||
+</errorcounts>
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+</valgrindoutput>
|
|
||||||
+
|
|
||||||
--
|
|
||||||
2.47.0
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
|||||||
From 42f196574aebea451c7e4138b476e042ba302745 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Paul Floyd <pjfloyd@wanadoo.fr>
|
|
||||||
Date: Sun, 24 Nov 2024 08:10:51 +0100
|
|
||||||
Subject: [PATCH 06/11] Add additional exp-ppc64le files to EXTRA_DIST
|
|
||||||
|
|
||||||
(cherry picked from commit 7241959ebb88a588eebe5a9fd35d1642db71474b)
|
|
||||||
---
|
|
||||||
none/tests/Makefile.am | 3 +++
|
|
||||||
1 file changed, 3 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/none/tests/Makefile.am b/none/tests/Makefile.am
|
|
||||||
index 59be79e57920..53a6e1f6bc95 100644
|
|
||||||
--- a/none/tests/Makefile.am
|
|
||||||
+++ b/none/tests/Makefile.am
|
|
||||||
@@ -135,6 +135,7 @@ EXTRA_DIST = \
|
|
||||||
faultstatus.vgtest faultstatus.stderr.exp faultstatus.stderr.exp-s390x \
|
|
||||||
fcntl_setown.vgtest fcntl_setown.stdout.exp fcntl_setown.stderr.exp \
|
|
||||||
fdleak_cmsg.stderr.exp fdleak_cmsg.vgtest \
|
|
||||||
+ fdleak_cmsg_xml.stderr.exp-ppc64le \
|
|
||||||
fdleak_cmsg_xml.stderr.exp fdleak_cmsg_xml.vgtest \
|
|
||||||
fdleak_cmsg_supp.stderr.exp fdleak_cmsg_supp.supp \
|
|
||||||
fdleak_cmsg_supp.vgtest \
|
|
||||||
@@ -149,6 +150,7 @@ EXTRA_DIST = \
|
|
||||||
fdleak_fcntl.stderr.exp fdleak_fcntl.vgtest \
|
|
||||||
fdleak_fcntl_xml.stderr.exp fdleak_fcntl_xml.vgtest \
|
|
||||||
fdleak_ipv4.stderr.exp fdleak_ipv4.stdout.exp fdleak_ipv4.vgtest \
|
|
||||||
+ fdleak_ipv4_xml.stderr.exp-ppc64le \
|
|
||||||
fdleak_ipv4_xml.stderr.exp fdleak_ipv4_xml.stdout.exp \
|
|
||||||
fdleak_ipv4_xml.vgtest fdleak_ipv4_xml.stderr.exp-nomain \
|
|
||||||
fdleak_open.stderr.exp fdleak_open.vgtest \
|
|
||||||
@@ -248,6 +250,7 @@ EXTRA_DIST = \
|
|
||||||
process_vm_readv_writev.stderr.exp process_vm_readv_writev.vgtest \
|
|
||||||
sigprocmask.stderr.exp sigprocmask.vgtest \
|
|
||||||
socket_close.stderr.exp socket_close.vgtest \
|
|
||||||
+ socket_close_xml.stderr.exp-ppc64le \
|
|
||||||
socket_close_xml.stderr.exp socket_close_xml.vgtest \
|
|
||||||
file_dclose.stderr.exp file_dclose.vgtest \
|
|
||||||
file_dclose_xml.stderr.exp file_dclose_xml.vgtest \
|
|
||||||
--
|
|
||||||
2.47.0
|
|
||||||
|
|
@ -1,358 +0,0 @@
|
|||||||
From 3d72dd780be97bd19331403da60908f295712fc7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Seiderer <ps.report@gmx.net>
|
|
||||||
Date: Mon, 8 Jul 2024 11:05:47 +0200
|
|
||||||
Subject: [PATCH 07/11] Add support for landlock_create_ruleset (444),
|
|
||||||
landlock_add_rule (445) and landlock_restrict_self (446) syscalls
|
|
||||||
|
|
||||||
- add support for landlock_create_ruleset (444) syscall
|
|
||||||
- add support for landlock_add_rule (445) syscall
|
|
||||||
- add support for landlock_restrict_self (446) syscall
|
|
||||||
|
|
||||||
https://bugs.kde.org/show_bug.cgi?id=489913
|
|
||||||
|
|
||||||
Signed-off-by: Peter Seiderer <ps.report@gmx.net>
|
|
||||||
|
|
||||||
(cherry picked from commit b1453546fe7396e7d4b4b2fc8ec7e64b71d18611)
|
|
||||||
---
|
|
||||||
NEWS | 2 +
|
|
||||||
coregrind/m_syswrap/priv_syswrap-linux.h | 5 ++
|
|
||||||
coregrind/m_syswrap/syswrap-amd64-linux.c | 4 ++
|
|
||||||
coregrind/m_syswrap/syswrap-arm-linux.c | 4 ++
|
|
||||||
coregrind/m_syswrap/syswrap-arm64-linux.c | 4 ++
|
|
||||||
coregrind/m_syswrap/syswrap-linux.c | 48 ++++++++++++++++++++
|
|
||||||
coregrind/m_syswrap/syswrap-mips32-linux.c | 4 ++
|
|
||||||
coregrind/m_syswrap/syswrap-mips64-linux.c | 5 +-
|
|
||||||
coregrind/m_syswrap/syswrap-nanomips-linux.c | 3 ++
|
|
||||||
coregrind/m_syswrap/syswrap-ppc32-linux.c | 4 ++
|
|
||||||
coregrind/m_syswrap/syswrap-ppc64-linux.c | 4 ++
|
|
||||||
coregrind/m_syswrap/syswrap-s390x-linux.c | 4 ++
|
|
||||||
coregrind/m_syswrap/syswrap-x86-linux.c | 4 ++
|
|
||||||
include/Makefile.am | 3 +-
|
|
||||||
include/pub_tool_vki.h | 1 +
|
|
||||||
include/vki/vki-linux-landlock.h | 37 +++++++++++++++
|
|
||||||
include/vki/vki-scnums-shared-linux.h | 4 ++
|
|
||||||
17 files changed, 138 insertions(+), 2 deletions(-)
|
|
||||||
create mode 100644 include/vki/vki-linux-landlock.h
|
|
||||||
|
|
||||||
diff --git a/NEWS b/NEWS
|
|
||||||
index 8362e1d2df41..68cd0c6fa603 100644
|
|
||||||
--- a/NEWS
|
|
||||||
+++ b/NEWS
|
|
||||||
@@ -5,6 +5,8 @@ Branch 3.24
|
|
||||||
|
|
||||||
The following bugs have been fixed or resolved on this branch.
|
|
||||||
|
|
||||||
+489913 WARNING: unhandled amd64-linux syscall: 444 (landlock_create_ruleset)
|
|
||||||
+
|
|
||||||
To see details of a given bug, visit
|
|
||||||
https://bugs.kde.org/show_bug.cgi?id=XXXXXX
|
|
||||||
where XXXXXX is the bug number as listed above.
|
|
||||||
diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h
|
|
||||||
index d50cdcc981b9..221439a0ec33 100644
|
|
||||||
--- a/coregrind/m_syswrap/priv_syswrap-linux.h
|
|
||||||
+++ b/coregrind/m_syswrap/priv_syswrap-linux.h
|
|
||||||
@@ -328,6 +328,11 @@ DECL_TEMPLATE(linux, sys_pidfd_open);
|
|
||||||
DECL_TEMPLATE(linux, sys_close_range);
|
|
||||||
DECL_TEMPLATE(linux, sys_openat2);
|
|
||||||
|
|
||||||
+// Linux-specific (new in Linux 5.13)
|
|
||||||
+DECL_TEMPLATE(linux, sys_landlock_create_ruleset)
|
|
||||||
+DECL_TEMPLATE(linux, sys_landlock_add_rule)
|
|
||||||
+DECL_TEMPLATE(linux, sys_landlock_restrict_self)
|
|
||||||
+
|
|
||||||
// Linux-specific (new in Linux 5.14)
|
|
||||||
DECL_TEMPLATE(linux, sys_memfd_secret);
|
|
||||||
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c
|
|
||||||
index 2230baf772b0..9488d3090e80 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-amd64-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-amd64-linux.c
|
|
||||||
@@ -887,6 +887,10 @@ static SyscallTableEntry syscall_table[] = {
|
|
||||||
|
|
||||||
LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441
|
|
||||||
|
|
||||||
+ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444
|
|
||||||
+ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445
|
|
||||||
+ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446
|
|
||||||
+
|
|
||||||
LINXY(__NR_memfd_secret, sys_memfd_secret), // 447
|
|
||||||
|
|
||||||
LINX_(__NR_fchmodat2, sys_fchmodat2), // 452
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c
|
|
||||||
index d326fdb9eeda..65f64af99bb7 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-arm-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-arm-linux.c
|
|
||||||
@@ -1062,6 +1062,10 @@ static SyscallTableEntry syscall_main_table[] = {
|
|
||||||
|
|
||||||
LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441
|
|
||||||
|
|
||||||
+ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444
|
|
||||||
+ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445
|
|
||||||
+ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446
|
|
||||||
+
|
|
||||||
LINX_(__NR_fchmodat2, sys_fchmodat2), // 452
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c
|
|
||||||
index 05e0e421fa6c..151ae0640b10 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-arm64-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-arm64-linux.c
|
|
||||||
@@ -840,6 +840,10 @@ static SyscallTableEntry syscall_main_table[] = {
|
|
||||||
|
|
||||||
LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441
|
|
||||||
|
|
||||||
+ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444
|
|
||||||
+ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445
|
|
||||||
+ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446
|
|
||||||
+
|
|
||||||
LINXY(__NR_memfd_secret, sys_memfd_secret), // 447
|
|
||||||
|
|
||||||
LINX_(__NR_fchmodat2, sys_fchmodat2), // 452
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c
|
|
||||||
index eec8388224ba..70ae837a9454 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-linux.c
|
|
||||||
@@ -4163,6 +4163,54 @@ POST(sys_memfd_create)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+PRE(sys_landlock_create_ruleset)
|
|
||||||
+{
|
|
||||||
+ PRINT("sys_landlock_create_ruleset ( %#" FMT_REGWORD "x, %lu, %lu )",
|
|
||||||
+ ARG1, ARG2, ARG3);
|
|
||||||
+ PRE_REG_READ3(long, "landlock_create_ruleset",
|
|
||||||
+ const struct vki_landlock_ruleset_attr*, attr,
|
|
||||||
+ vki_size_t, size, vki_uint32_t, flags);
|
|
||||||
+ PRE_MEM_READ( "landlock_create_ruleset(value)", ARG1, ARG2 );
|
|
||||||
+
|
|
||||||
+ /* XXX Alternatively we could always fail with EOPNOTSUPP
|
|
||||||
+ since the rules might interfere with valgrind itself. */
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+POST(sys_landlock_create_ruleset)
|
|
||||||
+{
|
|
||||||
+ /* Returns either the abi version or a file descriptor. */
|
|
||||||
+ if (ARG3 != VKI_LANDLOCK_CREATE_RULESET_VERSION) {
|
|
||||||
+ if (!ML_(fd_allowed)(RES, "landlock_create_ruleset", tid, True)) {
|
|
||||||
+ VG_(close)(RES);
|
|
||||||
+ SET_STATUS_Failure( VKI_EMFILE );
|
|
||||||
+ } else {
|
|
||||||
+ if (VG_(clo_track_fds))
|
|
||||||
+ ML_(record_fd_open_nameless)(tid, RES);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+PRE(sys_landlock_add_rule)
|
|
||||||
+{
|
|
||||||
+ PRINT("sys_landlock_add_rule ( %ld, %lu, %#" FMT_REGWORD "x, %lu )",
|
|
||||||
+ SARG1, ARG2, ARG3, ARG4);
|
|
||||||
+ PRE_REG_READ4(long, "landlock_add_rule",
|
|
||||||
+ int, ruleset_fd, enum vki_landlock_rule_type, rule_type,
|
|
||||||
+ const void*, rule_attr, vki_uint32_t, flags);
|
|
||||||
+ if (!ML_(fd_allowed)(ARG1, "landlock_add_rule", tid, False))
|
|
||||||
+ SET_STATUS_Failure(VKI_EBADF);
|
|
||||||
+ /* XXX Depending on rule_type we should also check the given rule_attr. */
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+PRE(sys_landlock_restrict_self)
|
|
||||||
+{
|
|
||||||
+ PRINT("sys_landlock_restrict_self ( %ld, %lu )", SARG1, ARG2);
|
|
||||||
+ PRE_REG_READ2(long, "landlock_create_ruleset",
|
|
||||||
+ int, ruleset_fd, vki_uint32_t, flags);
|
|
||||||
+ if (!ML_(fd_allowed)(ARG1, "landlock_restrict_self", tid, False))
|
|
||||||
+ SET_STATUS_Failure(VKI_EBADF);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
PRE(sys_memfd_secret)
|
|
||||||
{
|
|
||||||
PRINT("sys_memfd_secret ( %#" FMT_REGWORD "x )", ARG1);
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-mips32-linux.c b/coregrind/m_syswrap/syswrap-mips32-linux.c
|
|
||||||
index 421344213676..757b637ba986 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-mips32-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-mips32-linux.c
|
|
||||||
@@ -1147,6 +1147,10 @@ static SyscallTableEntry syscall_main_table[] = {
|
|
||||||
|
|
||||||
LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441
|
|
||||||
|
|
||||||
+ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444
|
|
||||||
+ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445
|
|
||||||
+ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446
|
|
||||||
+
|
|
||||||
LINX_(__NR_fchmodat2, sys_fchmodat2), // 452
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-mips64-linux.c b/coregrind/m_syswrap/syswrap-mips64-linux.c
|
|
||||||
index e9bb5c54c59c..f0c5f7e04f4e 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-mips64-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-mips64-linux.c
|
|
||||||
@@ -824,7 +824,10 @@ static SyscallTableEntry syscall_main_table[] = {
|
|
||||||
LINXY (__NR_openat2, sys_openat2),
|
|
||||||
LINXY (__NR_pidfd_getfd, sys_pidfd_getfd),
|
|
||||||
LINX_ (__NR_faccessat2, sys_faccessat2),
|
|
||||||
- LINXY(__NR_epoll_pwait2, sys_epoll_pwait2),
|
|
||||||
+ LINXY (__NR_epoll_pwait2, sys_epoll_pwait2),
|
|
||||||
+ LINXY (__NR_landlock_create_ruleset, sys_landlock_create_ruleset),
|
|
||||||
+ LINX_ (__NR_landlock_add_rule, sys_landlock_add_rule),
|
|
||||||
+ LINX_ (__NR_landlock_restrict_self, sys_landlock_restrict_self),
|
|
||||||
LINX_ (__NR_fchmodat2, sys_fchmodat2),
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-nanomips-linux.c b/coregrind/m_syswrap/syswrap-nanomips-linux.c
|
|
||||||
index 36a5c0ca002d..f466aca147e0 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-nanomips-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-nanomips-linux.c
|
|
||||||
@@ -831,6 +831,9 @@ static SyscallTableEntry syscall_main_table[] = {
|
|
||||||
LINXY(__NR_pidfd_getfd, sys_pidfd_getfd),
|
|
||||||
LINX_ (__NR_faccessat2, sys_faccessat2),
|
|
||||||
LINXY (__NR_epoll_pwait2, sys_epoll_pwait2),
|
|
||||||
+ LINXY (__NR_landlock_create_ruleset,sys_landlock_create_ruleset),
|
|
||||||
+ LINX_ (__NR_landlock_add_rule, sys_landlock_add_rule),
|
|
||||||
+ LINX_ (__NR_landlock_restrict_self, sys_landlock_restrict_self),
|
|
||||||
LINX_ (__NR_fchmodat2, sys_fchmodat2),
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c
|
|
||||||
index f7a90c753060..634f288ce0d1 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-ppc32-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c
|
|
||||||
@@ -1069,6 +1069,10 @@ static SyscallTableEntry syscall_table[] = {
|
|
||||||
|
|
||||||
LINXY (__NR_epoll_pwait2, sys_epoll_pwait2), // 441
|
|
||||||
|
|
||||||
+ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444
|
|
||||||
+ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445
|
|
||||||
+ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446
|
|
||||||
+
|
|
||||||
LINX_ (__NR_fchmodat2, sys_fchmodat2), // 452
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
|
||||||
index 8de95624fa7c..2c2def330ad7 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
|
||||||
@@ -1035,6 +1035,10 @@ static SyscallTableEntry syscall_table[] = {
|
|
||||||
|
|
||||||
LINXY (__NR_epoll_pwait2, sys_epoll_pwait2), // 441
|
|
||||||
|
|
||||||
+ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444
|
|
||||||
+ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445
|
|
||||||
+ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446
|
|
||||||
+
|
|
||||||
LINX_ (__NR_fchmodat2, sys_fchmodat2), // 452
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c
|
|
||||||
index 8a1be8cbef54..ca571f0f1a7c 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-s390x-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-s390x-linux.c
|
|
||||||
@@ -875,6 +875,10 @@ static SyscallTableEntry syscall_table[] = {
|
|
||||||
|
|
||||||
LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441
|
|
||||||
|
|
||||||
+ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444
|
|
||||||
+ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445
|
|
||||||
+ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446
|
|
||||||
+
|
|
||||||
LINXY(__NR_memfd_secret, sys_memfd_secret), // 447
|
|
||||||
|
|
||||||
LINX_ (__NR_fchmodat2, sys_fchmodat2), // 452
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c
|
|
||||||
index 31243a0db373..a23743743abe 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-x86-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-x86-linux.c
|
|
||||||
@@ -1656,6 +1656,10 @@ static SyscallTableEntry syscall_table[] = {
|
|
||||||
|
|
||||||
LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441
|
|
||||||
|
|
||||||
+ LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444
|
|
||||||
+ LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445
|
|
||||||
+ LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446
|
|
||||||
+
|
|
||||||
LINXY(__NR_memfd_secret, sys_memfd_secret), // 447
|
|
||||||
|
|
||||||
LINX_(__NR_fchmodat2, sys_fchmodat2), // 452
|
|
||||||
diff --git a/include/Makefile.am b/include/Makefile.am
|
|
||||||
index 8012d73749b3..5d5162a46eb6 100644
|
|
||||||
--- a/include/Makefile.am
|
|
||||||
+++ b/include/Makefile.am
|
|
||||||
@@ -107,4 +107,5 @@ nobase_pkginclude_HEADERS = \
|
|
||||||
vki/vki-xen-xsm.h \
|
|
||||||
vki/vki-xen-x86.h \
|
|
||||||
vki/vki-linux-drm.h \
|
|
||||||
- vki/vki-linux-io_uring.h
|
|
||||||
+ vki/vki-linux-io_uring.h \
|
|
||||||
+ vki/vki-linux-landlock.h
|
|
||||||
diff --git a/include/pub_tool_vki.h b/include/pub_tool_vki.h
|
|
||||||
index 24f99cc09f16..7b6e71e11eb4 100644
|
|
||||||
--- a/include/pub_tool_vki.h
|
|
||||||
+++ b/include/pub_tool_vki.h
|
|
||||||
@@ -47,6 +47,7 @@
|
|
||||||
# include "vki/vki-linux.h"
|
|
||||||
# include "vki/vki-linux-drm.h"
|
|
||||||
# include "vki/vki-linux-io_uring.h"
|
|
||||||
+# include "vki/vki-linux-landlock.h"
|
|
||||||
#elif defined(VGO_darwin)
|
|
||||||
# include "vki/vki-darwin.h"
|
|
||||||
#elif defined(VGO_solaris)
|
|
||||||
diff --git a/include/vki/vki-linux-landlock.h b/include/vki/vki-linux-landlock.h
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..e549ae93eff9
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/include/vki/vki-linux-landlock.h
|
|
||||||
@@ -0,0 +1,37 @@
|
|
||||||
+/*
|
|
||||||
+ This file is part of Valgrind, a dynamic binary instrumentation framework.
|
|
||||||
+
|
|
||||||
+ Copyright (C) 2024 Peter Seiderer <ps.report@gmx.net>
|
|
||||||
+
|
|
||||||
+ This program is free software; you can redistribute it and/or
|
|
||||||
+ modify it under the terms of the GNU General Public License as
|
|
||||||
+ published by the Free Software Foundation; either version 2 of the
|
|
||||||
+ License, or (at your option) any later version.
|
|
||||||
+
|
|
||||||
+ This program is distributed in the hope that it will be useful, but
|
|
||||||
+ WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
+ General Public License for more details.
|
|
||||||
+
|
|
||||||
+ You should have received a copy of the GNU General Public License
|
|
||||||
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
||||||
+
|
|
||||||
+ The GNU General Public License is contained in the file COPYING.
|
|
||||||
+*/
|
|
||||||
+#ifndef __VKI_LANDLOCK_H
|
|
||||||
+#define __VKI_LANDLOCK_H
|
|
||||||
+
|
|
||||||
+// Derived from linux-6.9.7/include/uapi/linux/landlock.h
|
|
||||||
+struct vki_landlock_ruleset_attr {
|
|
||||||
+ __vki_u64 handled_access_fs;
|
|
||||||
+ __vki_u64 handled_access_net;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+enum vki_landlock_rule_type {
|
|
||||||
+ VKI_LANDLOCK_RULE_PATH_BENEATH = 1,
|
|
||||||
+ VKI_LANDLOCK_RULE_NET_PORT,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+#define VKI_LANDLOCK_CREATE_RULESET_VERSION 1
|
|
||||||
+
|
|
||||||
+#endif
|
|
||||||
diff --git a/include/vki/vki-scnums-shared-linux.h b/include/vki/vki-scnums-shared-linux.h
|
|
||||||
index 068a2cd12bd6..20346ca71678 100644
|
|
||||||
--- a/include/vki/vki-scnums-shared-linux.h
|
|
||||||
+++ b/include/vki/vki-scnums-shared-linux.h
|
|
||||||
@@ -48,6 +48,10 @@
|
|
||||||
|
|
||||||
#define __NR_epoll_pwait2 441
|
|
||||||
|
|
||||||
+#define __NR_landlock_create_ruleset 444
|
|
||||||
+#define __NR_landlock_add_rule 445
|
|
||||||
+#define __NR_landlock_restrict_self 446
|
|
||||||
+
|
|
||||||
#define __NR_memfd_secret 447
|
|
||||||
|
|
||||||
#define __NR_fchmodat2 452
|
|
||||||
--
|
|
||||||
2.47.0
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
From 459fa5b82df0d07cf871fc7359a060410052b82e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Wielaard <mark@klomp.org>
|
|
||||||
Date: Sat, 23 Nov 2024 22:37:14 +0100
|
|
||||||
Subject: [PATCH 08/11] helgrind/tests/tc17_sembar.c: Remove bool typedef
|
|
||||||
|
|
||||||
Since C23 bool is a keyword. Also bool wasn't actually used.
|
|
||||||
|
|
||||||
tc17_sembar.c:45:14: error: both 'long' and '_Bool' in declaration specifiers
|
|
||||||
45 | typedef long bool;
|
|
||||||
| ^~~~
|
|
||||||
tc17_sembar.c:45:1: warning: useless type name in empty declaration
|
|
||||||
45 | typedef long bool;
|
|
||||||
| ^~~~~~~
|
|
||||||
|
|
||||||
(cherry picked from commit 932bf2c027579c8d933b57ed80bb5842b390bdb3)
|
|
||||||
---
|
|
||||||
helgrind/tests/tc17_sembar.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/helgrind/tests/tc17_sembar.c b/helgrind/tests/tc17_sembar.c
|
|
||||||
index 36412a07e206..ee40160b082d 100644
|
|
||||||
--- a/helgrind/tests/tc17_sembar.c
|
|
||||||
+++ b/helgrind/tests/tc17_sembar.c
|
|
||||||
@@ -42,7 +42,7 @@ typedef struct
|
|
||||||
sem_t* xxx;
|
|
||||||
} gomp_barrier_t;
|
|
||||||
|
|
||||||
-typedef long bool;
|
|
||||||
+
|
|
||||||
|
|
||||||
void
|
|
||||||
gomp_barrier_init (gomp_barrier_t *bar, unsigned count)
|
|
||||||
--
|
|
||||||
2.47.0
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
|||||||
From c08e155fdf6641a569053b3a70c52bfae09dd34c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Wielaard <mark@klomp.org>
|
|
||||||
Date: Sat, 23 Nov 2024 22:48:03 +0100
|
|
||||||
Subject: [PATCH 09/11] drd/tests/swapcontext.c: Rename typedef struct
|
|
||||||
thread_local to threadlocal
|
|
||||||
|
|
||||||
Since C23 thread_local is a keyword (thread storage duration).
|
|
||||||
|
|
||||||
swapcontext.c:23:16: error: expected '{' before 'thread_local'
|
|
||||||
23 | typedef struct thread_local {
|
|
||||||
| ^~~~~~~~~~~~
|
|
||||||
swapcontext.c:23:16: warning: 'thread_local' is not at beginning of declaration [-Wold-style-declaration]
|
|
||||||
swapcontext.c:23:16: error: 'thread_local' used with 'typedef'
|
|
||||||
swapcontext.c:26:3: warning: data definition has no type or storage class
|
|
||||||
26 | } thread_local_t;
|
|
||||||
| ^~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
(cherry picked from commit 907b985725805f1537396a6d76539bf490cc6c7e)
|
|
||||||
---
|
|
||||||
drd/tests/swapcontext.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drd/tests/swapcontext.c b/drd/tests/swapcontext.c
|
|
||||||
index 2cb969a5eafa..ec191968cab1 100644
|
|
||||||
--- a/drd/tests/swapcontext.c
|
|
||||||
+++ b/drd/tests/swapcontext.c
|
|
||||||
@@ -20,7 +20,7 @@
|
|
||||||
|
|
||||||
#define STACKSIZE (PTHREAD_STACK_MIN + 4096)
|
|
||||||
|
|
||||||
-typedef struct thread_local {
|
|
||||||
+typedef struct threadlocal {
|
|
||||||
ucontext_t uc[3];
|
|
||||||
size_t nrsw;
|
|
||||||
} thread_local_t;
|
|
||||||
--
|
|
||||||
2.47.0
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
|||||||
From 53d667789d369042b1fe45f72102ecb5c16e5d12 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Wielaard <mark@klomp.org>
|
|
||||||
Date: Sat, 23 Nov 2024 22:59:21 +0100
|
|
||||||
Subject: [PATCH 10/11] none/tests/bug234814.c: sa_handler take an int as
|
|
||||||
argument
|
|
||||||
|
|
||||||
GCC15 will turn this warning into an error:
|
|
||||||
|
|
||||||
bug234814.c: In function 'main':
|
|
||||||
bug234814.c:20:18: error: assignment to '__sighandler_t' {aka 'void (*)(int)'} from incompatible pointer type 'void (*)(void)' [-Wincompatible-pointer-types]
|
|
||||||
20 | sa.sa_handler = mysigbus;
|
|
||||||
| ^
|
|
||||||
|
|
||||||
(cherry picked from commit 8f6cef269b91739f6a2e7f3b4b1e0a429db3e748)
|
|
||||||
---
|
|
||||||
none/tests/bug234814.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/none/tests/bug234814.c b/none/tests/bug234814.c
|
|
||||||
index 16b561fde6b0..11e0f6779162 100644
|
|
||||||
--- a/none/tests/bug234814.c
|
|
||||||
+++ b/none/tests/bug234814.c
|
|
||||||
@@ -9,7 +9,7 @@ const char kSigbus[] = "I caught the SIGBUS signal!\n";
|
|
||||||
|
|
||||||
int GLOB = 3;
|
|
||||||
|
|
||||||
-void mysigbus() {
|
|
||||||
+void mysigbus(int signum) {
|
|
||||||
write(1, kSigbus, sizeof(kSigbus)-1);
|
|
||||||
GLOB--;
|
|
||||||
return;
|
|
||||||
--
|
|
||||||
2.47.0
|
|
||||||
|
|
@ -1,398 +0,0 @@
|
|||||||
From 349b57d3a8c8d2df23128d4b03eca91b629629e1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Wielaard <mark@klomp.org>
|
|
||||||
Date: Tue, 26 Nov 2024 19:00:34 +0100
|
|
||||||
Subject: [PATCH 11/11] Add open_tree, move_mount, fsopen, fsconfig, fsmount,
|
|
||||||
fspick linux syswraps
|
|
||||||
|
|
||||||
Shared linux syscalls implementing various file system mount tasks.
|
|
||||||
Since linux kernel version 5.2.
|
|
||||||
|
|
||||||
Check arguments and track file descriptors.
|
|
||||||
|
|
||||||
https://bugs.kde.org/show_bug.cgi?id=494246
|
|
||||||
|
|
||||||
(cherry picked from commit 4044bcea0427853fc44a3d02a0fc0b2a81935452)
|
|
||||||
---
|
|
||||||
NEWS | 1 +
|
|
||||||
coregrind/m_syswrap/priv_syswrap-linux.h | 8 +
|
|
||||||
coregrind/m_syswrap/syswrap-amd64-linux.c | 6 +
|
|
||||||
coregrind/m_syswrap/syswrap-arm-linux.c | 7 +-
|
|
||||||
coregrind/m_syswrap/syswrap-arm64-linux.c | 7 +-
|
|
||||||
coregrind/m_syswrap/syswrap-linux.c | 146 +++++++++++++++++++
|
|
||||||
coregrind/m_syswrap/syswrap-mips32-linux.c | 7 +-
|
|
||||||
coregrind/m_syswrap/syswrap-mips64-linux.c | 6 +
|
|
||||||
coregrind/m_syswrap/syswrap-nanomips-linux.c | 6 +
|
|
||||||
coregrind/m_syswrap/syswrap-ppc32-linux.c | 7 +-
|
|
||||||
coregrind/m_syswrap/syswrap-ppc64-linux.c | 7 +-
|
|
||||||
coregrind/m_syswrap/syswrap-s390x-linux.c | 7 +-
|
|
||||||
coregrind/m_syswrap/syswrap-x86-linux.c | 7 +-
|
|
||||||
13 files changed, 215 insertions(+), 7 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/NEWS b/NEWS
|
|
||||||
index 68cd0c6fa603..7f1334aa0f07 100644
|
|
||||||
--- a/NEWS
|
|
||||||
+++ b/NEWS
|
|
||||||
@@ -6,6 +6,7 @@ Branch 3.24
|
|
||||||
The following bugs have been fixed or resolved on this branch.
|
|
||||||
|
|
||||||
489913 WARNING: unhandled amd64-linux syscall: 444 (landlock_create_ruleset)
|
|
||||||
+494246 syscall fsopen not wrapped
|
|
||||||
|
|
||||||
To see details of a given bug, visit
|
|
||||||
https://bugs.kde.org/show_bug.cgi?id=XXXXXX
|
|
||||||
diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h
|
|
||||||
index 221439a0ec33..1bdd9a94ec19 100644
|
|
||||||
--- a/coregrind/m_syswrap/priv_syswrap-linux.h
|
|
||||||
+++ b/coregrind/m_syswrap/priv_syswrap-linux.h
|
|
||||||
@@ -321,6 +321,14 @@ DECL_TEMPLATE(linux, sys_io_uring_setup);
|
|
||||||
DECL_TEMPLATE(linux, sys_io_uring_enter);
|
|
||||||
DECL_TEMPLATE(linux, sys_io_uring_register);
|
|
||||||
|
|
||||||
+// open_tree and friends (shared linux syscalls)
|
|
||||||
+DECL_TEMPLATE(linux, sys_open_tree);
|
|
||||||
+DECL_TEMPLATE(linux, sys_move_mount);
|
|
||||||
+DECL_TEMPLATE(linux, sys_fsopen);
|
|
||||||
+DECL_TEMPLATE(linux, sys_fsconfig);
|
|
||||||
+DECL_TEMPLATE(linux, sys_fsmount);
|
|
||||||
+DECL_TEMPLATE(linux, sys_fspick);
|
|
||||||
+
|
|
||||||
// Linux-specific (new in Linux 5.3)
|
|
||||||
DECL_TEMPLATE(linux, sys_pidfd_open);
|
|
||||||
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c
|
|
||||||
index 9488d3090e80..bdba41826ad8 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-amd64-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-amd64-linux.c
|
|
||||||
@@ -877,6 +877,12 @@ static SyscallTableEntry syscall_table[] = {
|
|
||||||
LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425
|
|
||||||
LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426
|
|
||||||
LINXY(__NR_io_uring_register, sys_io_uring_register), // 427
|
|
||||||
+ LINXY(__NR_open_tree, sys_open_tree), // 428
|
|
||||||
+ LINX_(__NR_move_mount, sys_move_mount), // 429
|
|
||||||
+ LINXY(__NR_fsopen, sys_fsopen), // 430
|
|
||||||
+ LINX_(__NR_fsconfig, sys_fsconfig), // 431
|
|
||||||
+ LINXY(__NR_fsmount, sys_fsmount), // 432
|
|
||||||
+ LINXY(__NR_fspick, sys_fspick), // 433
|
|
||||||
|
|
||||||
LINXY(__NR_pidfd_open, sys_pidfd_open), // 434
|
|
||||||
GENX_(__NR_clone3, sys_ni_syscall), // 435
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c
|
|
||||||
index 65f64af99bb7..108e1f91e5e9 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-arm-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-arm-linux.c
|
|
||||||
@@ -1052,7 +1052,12 @@ static SyscallTableEntry syscall_main_table[] = {
|
|
||||||
LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425
|
|
||||||
LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426
|
|
||||||
LINXY(__NR_io_uring_register, sys_io_uring_register), // 427
|
|
||||||
-
|
|
||||||
+ LINXY(__NR_open_tree, sys_open_tree), // 428
|
|
||||||
+ LINX_(__NR_move_mount, sys_move_mount), // 429
|
|
||||||
+ LINXY(__NR_fsopen, sys_fsopen), // 430
|
|
||||||
+ LINX_(__NR_fsconfig, sys_fsconfig), // 431
|
|
||||||
+ LINXY(__NR_fsmount, sys_fsmount), // 432
|
|
||||||
+ LINXY(__NR_fspick, sys_fspick), // 433
|
|
||||||
LINXY(__NR_pidfd_open, sys_pidfd_open), // 434
|
|
||||||
GENX_(__NR_clone3, sys_ni_syscall), // 435
|
|
||||||
LINXY(__NR_close_range, sys_close_range), // 436
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c
|
|
||||||
index 151ae0640b10..23b0b6b51c10 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-arm64-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-arm64-linux.c
|
|
||||||
@@ -830,7 +830,12 @@ static SyscallTableEntry syscall_main_table[] = {
|
|
||||||
LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425
|
|
||||||
LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426
|
|
||||||
LINXY(__NR_io_uring_register, sys_io_uring_register), // 427
|
|
||||||
-
|
|
||||||
+ LINXY(__NR_open_tree, sys_open_tree), // 428
|
|
||||||
+ LINX_(__NR_move_mount, sys_move_mount), // 429
|
|
||||||
+ LINXY(__NR_fsopen, sys_fsopen), // 430
|
|
||||||
+ LINX_(__NR_fsconfig, sys_fsconfig), // 431
|
|
||||||
+ LINXY(__NR_fsmount, sys_fsmount), // 432
|
|
||||||
+ LINXY(__NR_fspick, sys_fspick), // 433
|
|
||||||
LINXY(__NR_pidfd_open, sys_pidfd_open), // 434
|
|
||||||
GENX_(__NR_clone3, sys_ni_syscall), // 435
|
|
||||||
LINXY(__NR_close_range, sys_close_range), // 436
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c
|
|
||||||
index 70ae837a9454..57672f167126 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-linux.c
|
|
||||||
@@ -13836,6 +13836,152 @@ POST(sys_pidfd_getfd)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* int open_tree (int dfd, const char *filename, unsigned int flags) */
|
|
||||||
+PRE(sys_open_tree)
|
|
||||||
+{
|
|
||||||
+ PRINT("sys_open_tree ( %ld, %#" FMT_REGWORD "x(%s), %ld",
|
|
||||||
+ SARG1, ARG2, (HChar*)(Addr)ARG2, SARG3);
|
|
||||||
+ PRE_REG_READ3(long, "open_tree",
|
|
||||||
+ int, dfd, const char *, filename, int, flags);
|
|
||||||
+ PRE_MEM_RASCIIZ( "open_tree(filename)", ARG2);
|
|
||||||
+ /* For absolute filenames, dfd is ignored. If dfd is AT_FDCWD,
|
|
||||||
+ filename is relative to cwd. When comparing dfd against AT_FDCWD,
|
|
||||||
+ be sure only to compare the bottom 32 bits. */
|
|
||||||
+ if (ML_(safe_to_deref)( (void*)(Addr)ARG2, 1 )
|
|
||||||
+ && *(Char *)(Addr)ARG2 != '/'
|
|
||||||
+ && ((Int)ARG1) != ((Int)VKI_AT_FDCWD)
|
|
||||||
+ && !ML_(fd_allowed)(ARG1, "open_tree", tid, False))
|
|
||||||
+ SET_STATUS_Failure( VKI_EBADF );
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+POST(sys_open_tree)
|
|
||||||
+{
|
|
||||||
+ if (!ML_(fd_allowed)(RES, "open_tree", tid, True)) {
|
|
||||||
+ VG_(close)(RES);
|
|
||||||
+ SET_STATUS_Failure( VKI_EMFILE );
|
|
||||||
+ } else {
|
|
||||||
+ if (VG_(clo_track_fds))
|
|
||||||
+ ML_(record_fd_open_with_given_name)(tid, RES, (HChar*)(Addr)ARG2);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* int move_mount (int from_dfd, const char *from_pathname,
|
|
||||||
+ int to_dfd, const char *to_pathname,
|
|
||||||
+ unsigned int flags) */
|
|
||||||
+PRE(sys_move_mount)
|
|
||||||
+{
|
|
||||||
+ PRINT("sys_move_mount ( %ld, %#" FMT_REGWORD "x(%s), "
|
|
||||||
+ "%ld, %#" FMT_REGWORD "x(%s), %ld",
|
|
||||||
+ SARG1, ARG2, (HChar*)(Addr)ARG2,
|
|
||||||
+ SARG3, ARG4, (HChar*)(Addr)ARG4, SARG5);
|
|
||||||
+ PRE_REG_READ5(long, "mount_move",
|
|
||||||
+ int, from_dfd, const char *, from_pathname,
|
|
||||||
+ int, to_dfd, const char*, to_pathname, int, flags);
|
|
||||||
+ PRE_MEM_RASCIIZ( "mount_move(from_pathname)", ARG2);
|
|
||||||
+ /* For absolute filenames, from_dfd is ignored. If from_dfd is AT_FDCWD,
|
|
||||||
+ from_pathname is relative to cwd. When comparing from_dfd against
|
|
||||||
+ AT_FDCWD, be sure only to compare the bottom 32 bits. */
|
|
||||||
+ if (ML_(safe_to_deref)( (void*)(Addr)ARG2, 1 )
|
|
||||||
+ && *(Char *)(Addr)ARG2 != '/'
|
|
||||||
+ && ((Int)ARG1) != ((Int)VKI_AT_FDCWD)
|
|
||||||
+ && !ML_(fd_allowed)(ARG1, "mount_move", tid, False))
|
|
||||||
+ SET_STATUS_Failure( VKI_EBADF );
|
|
||||||
+ PRE_MEM_RASCIIZ( "mount_move(from_pathname)", ARG4);
|
|
||||||
+ /* For absolute filenames, to_dfd is ignored. If to_dfd is AT_FDCWD,
|
|
||||||
+ to_pathname is relative to cwd. When comparing to_dfd against
|
|
||||||
+ AT_FDCWD, be sure only to compare the bottom 32 bits. */
|
|
||||||
+ if (ML_(safe_to_deref)( (void*)(Addr)ARG4, 1 )
|
|
||||||
+ && *(Char *)(Addr)ARG4 != '/'
|
|
||||||
+ && ((Int)ARG4) != ((Int)VKI_AT_FDCWD)
|
|
||||||
+ && !ML_(fd_allowed)(ARG3, "mount_move", tid, False))
|
|
||||||
+ SET_STATUS_Failure( VKI_EBADF );
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* int fsopen (const char *fs_name, unsigned int flags) */
|
|
||||||
+PRE(sys_fsopen)
|
|
||||||
+{
|
|
||||||
+ PRINT("sys_fsopen ( %#" FMT_REGWORD "x(%s), %ld",
|
|
||||||
+ ARG1, (HChar*)(Addr)ARG1, SARG2);
|
|
||||||
+ PRE_REG_READ2(long, "fsopen", const char *, fs_name, int, flags);
|
|
||||||
+ PRE_MEM_RASCIIZ( "fsopen(filename)", ARG1);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+POST(sys_fsopen)
|
|
||||||
+{
|
|
||||||
+ if (!ML_(fd_allowed)(RES, "fsopen", tid, True)) {
|
|
||||||
+ VG_(close)(RES);
|
|
||||||
+ SET_STATUS_Failure( VKI_EMFILE );
|
|
||||||
+ } else {
|
|
||||||
+ if (VG_(clo_track_fds))
|
|
||||||
+ ML_(record_fd_open_with_given_name)(tid, RES, (HChar*)(Addr)ARG1);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* int fsmount (int fd, unsigned int flags, unsigned int ms_flags) */
|
|
||||||
+PRE(sys_fsmount)
|
|
||||||
+{
|
|
||||||
+ PRINT("sys_fsmount ( %ld, %ld, %ld", SARG1, SARG2, SARG3);
|
|
||||||
+ PRE_REG_READ3(long, "fsmount", int, fd, int, flags, int, ms_flags);
|
|
||||||
+ if (!ML_(fd_allowed)(ARG1, "fsmount", tid, False))
|
|
||||||
+ SET_STATUS_Failure( VKI_EBADF );
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+POST(sys_fsmount)
|
|
||||||
+{
|
|
||||||
+ if (!ML_(fd_allowed)(RES, "fsmount", tid, True)) {
|
|
||||||
+ VG_(close)(RES);
|
|
||||||
+ SET_STATUS_Failure( VKI_EMFILE );
|
|
||||||
+ } else {
|
|
||||||
+ if (VG_(clo_track_fds))
|
|
||||||
+ ML_(record_fd_open_nameless)(tid, RES);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* int fsconfig (int fd, unsigned int cmd, const char *key,
|
|
||||||
+ const void *value, int aux) */
|
|
||||||
+PRE(sys_fsconfig)
|
|
||||||
+{
|
|
||||||
+ PRINT("sys_fsconfig ( %ld, %ld, %#" FMT_REGWORD "x(%s), "
|
|
||||||
+ "%#" FMT_REGWORD "x, %ld )",
|
|
||||||
+ SARG1, SARG2, ARG3, (HChar*)(Addr)ARG3, ARG4, SARG6);
|
|
||||||
+ PRE_REG_READ5(long, "fsconfig", int, fd, int, cmd,
|
|
||||||
+ const char *, key, const void *, value, int, aux);
|
|
||||||
+ if (ARG3)
|
|
||||||
+ PRE_MEM_RASCIIZ( "fsconfig(key)", ARG3);
|
|
||||||
+ if (!ML_(fd_allowed)(ARG1, "fsconfig", tid, False))
|
|
||||||
+ SET_STATUS_Failure( VKI_EBADF );
|
|
||||||
+ /* XXX we could also check the value based on the cmd FSCONFIG_... */
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* int fspick (int dfd, const char *path, unsigned int flags) */
|
|
||||||
+PRE(sys_fspick)
|
|
||||||
+{
|
|
||||||
+ PRINT("sys_fspick ( %ld, %#" FMT_REGWORD "x(%s), %ld",
|
|
||||||
+ SARG1, ARG2, (HChar*)(Addr)ARG2, SARG3);
|
|
||||||
+ PRE_REG_READ3(long, "fspick",
|
|
||||||
+ int, dfd, const char *, filename, int, flags);
|
|
||||||
+ PRE_MEM_RASCIIZ( "fspick(path)", ARG2);
|
|
||||||
+ /* For absolute filenames, dfd is ignored. If dfd is AT_FDCWD,
|
|
||||||
+ path is relative to cwd. When comparing dfd against AT_FDCWD,
|
|
||||||
+ be sure only to compare the bottom 32 bits. */
|
|
||||||
+ if (ML_(safe_to_deref)( (void*)(Addr)ARG2, 1 )
|
|
||||||
+ && *(Char *)(Addr)ARG2 != '/'
|
|
||||||
+ && ((Int)ARG1) != ((Int)VKI_AT_FDCWD)
|
|
||||||
+ && !ML_(fd_allowed)(ARG1, "fspick", tid, False))
|
|
||||||
+ SET_STATUS_Failure( VKI_EBADF );
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+POST(sys_fspick)
|
|
||||||
+{
|
|
||||||
+ if (!ML_(fd_allowed)(RES, "fspick", tid, True)) {
|
|
||||||
+ VG_(close)(RES);
|
|
||||||
+ SET_STATUS_Failure( VKI_EMFILE );
|
|
||||||
+ } else {
|
|
||||||
+ if (VG_(clo_track_fds))
|
|
||||||
+ ML_(record_fd_open_with_given_name)(tid, RES, (HChar*)(Addr)ARG2);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
#undef PRE
|
|
||||||
#undef POST
|
|
||||||
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-mips32-linux.c b/coregrind/m_syswrap/syswrap-mips32-linux.c
|
|
||||||
index 757b637ba986..39ba911aa5e4 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-mips32-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-mips32-linux.c
|
|
||||||
@@ -1137,7 +1137,12 @@ static SyscallTableEntry syscall_main_table[] = {
|
|
||||||
LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425
|
|
||||||
LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426
|
|
||||||
LINXY(__NR_io_uring_register, sys_io_uring_register), // 427
|
|
||||||
-
|
|
||||||
+ LINXY(__NR_open_tree, sys_open_tree), // 428
|
|
||||||
+ LINX_(__NR_move_mount, sys_move_mount), // 429
|
|
||||||
+ LINXY(__NR_fsopen, sys_fsopen), // 430
|
|
||||||
+ LINX_(__NR_fsconfig, sys_fsconfig), // 431
|
|
||||||
+ LINXY(__NR_fsmount, sys_fsmount), // 432
|
|
||||||
+ LINXY(__NR_fspick, sys_fspick), // 433
|
|
||||||
LINXY(__NR_pidfd_open, sys_pidfd_open), // 434
|
|
||||||
GENX_(__NR_clone3, sys_ni_syscall), // 435
|
|
||||||
LINXY(__NR_close_range, sys_close_range), // 436
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-mips64-linux.c b/coregrind/m_syswrap/syswrap-mips64-linux.c
|
|
||||||
index f0c5f7e04f4e..d603924c5566 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-mips64-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-mips64-linux.c
|
|
||||||
@@ -818,6 +818,12 @@ static SyscallTableEntry syscall_main_table[] = {
|
|
||||||
LINXY (__NR_io_uring_setup, sys_io_uring_setup),
|
|
||||||
LINXY (__NR_io_uring_enter, sys_io_uring_enter),
|
|
||||||
LINXY (__NR_io_uring_register, sys_io_uring_register),
|
|
||||||
+ LINXY (__NR_open_tree, sys_open_tree),
|
|
||||||
+ LINX_ (__NR_move_mount, sys_move_mount),
|
|
||||||
+ LINXY (__NR_fsopen, sys_fsopen),
|
|
||||||
+ LINX_ (__NR_fsconfig, sys_fsconfig),
|
|
||||||
+ LINXY (__NR_fsmount, sys_fsmount),
|
|
||||||
+ LINXY (__NR_fspick, sys_fspick),
|
|
||||||
LINXY (__NR_pidfd_open, sys_pidfd_open),
|
|
||||||
GENX_ (__NR_clone3, sys_ni_syscall),
|
|
||||||
LINXY (__NR_close_range, sys_close_range),
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-nanomips-linux.c b/coregrind/m_syswrap/syswrap-nanomips-linux.c
|
|
||||||
index f466aca147e0..853495e981b1 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-nanomips-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-nanomips-linux.c
|
|
||||||
@@ -824,6 +824,12 @@ static SyscallTableEntry syscall_main_table[] = {
|
|
||||||
LINXY (__NR_io_uring_setup, sys_io_uring_setup),
|
|
||||||
LINXY (__NR_io_uring_enter, sys_io_uring_enter),
|
|
||||||
LINXY (__NR_io_uring_register, sys_io_uring_register),
|
|
||||||
+ LINXY (__NR_open_tree, sys_open_tree),
|
|
||||||
+ LINX_ (__NR_move_mount, sys_move_mount),
|
|
||||||
+ LINXY (__NR_fsopen, sys_fsopen),
|
|
||||||
+ LINX_ (__NR_fsconfig, sys_fsconfig),
|
|
||||||
+ LINXY (__NR_fsmount, sys_fsmount),
|
|
||||||
+ LINXY (__NR_fspick, sys_fspick),
|
|
||||||
LINXY (__NR_pidfd_open, sys_pidfd_open),
|
|
||||||
GENX_ (__NR_clone3, sys_ni_syscall),
|
|
||||||
LINXY (__NR_close_range, sys_close_range),
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c
|
|
||||||
index 634f288ce0d1..24d8eb213190 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-ppc32-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c
|
|
||||||
@@ -1059,7 +1059,12 @@ static SyscallTableEntry syscall_table[] = {
|
|
||||||
LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425
|
|
||||||
LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426
|
|
||||||
LINXY(__NR_io_uring_register, sys_io_uring_register), // 427
|
|
||||||
-
|
|
||||||
+ LINXY(__NR_open_tree, sys_open_tree), // 428
|
|
||||||
+ LINX_(__NR_move_mount, sys_move_mount), // 429
|
|
||||||
+ LINXY(__NR_fsopen, sys_fsopen), // 430
|
|
||||||
+ LINX_(__NR_fsconfig, sys_fsconfig), // 431
|
|
||||||
+ LINXY(__NR_fsmount, sys_fsmount), // 432
|
|
||||||
+ LINXY(__NR_fspick, sys_fspick), // 433
|
|
||||||
LINXY(__NR_pidfd_open, sys_pidfd_open), // 434
|
|
||||||
GENX_(__NR_clone3, sys_ni_syscall), // 435
|
|
||||||
LINXY(__NR_close_range, sys_close_range), // 436
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
|
||||||
index 2c2def330ad7..2a3ed8b92481 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
|
||||||
@@ -1025,7 +1025,12 @@ static SyscallTableEntry syscall_table[] = {
|
|
||||||
LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425
|
|
||||||
LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426
|
|
||||||
LINXY(__NR_io_uring_register, sys_io_uring_register), // 427
|
|
||||||
-
|
|
||||||
+ LINXY(__NR_open_tree, sys_open_tree), // 428
|
|
||||||
+ LINX_(__NR_move_mount, sys_move_mount), // 429
|
|
||||||
+ LINXY(__NR_fsopen, sys_fsopen), // 430
|
|
||||||
+ LINX_(__NR_fsconfig, sys_fsconfig), // 431
|
|
||||||
+ LINXY(__NR_fsmount, sys_fsmount), // 432
|
|
||||||
+ LINXY(__NR_fspick, sys_fspick), // 433
|
|
||||||
LINXY(__NR_pidfd_open, sys_pidfd_open), // 434
|
|
||||||
GENX_(__NR_clone3, sys_ni_syscall), // 435
|
|
||||||
LINXY(__NR_close_range, sys_close_range), // 436
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c
|
|
||||||
index ca571f0f1a7c..893306bbdae3 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-s390x-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-s390x-linux.c
|
|
||||||
@@ -865,7 +865,12 @@ static SyscallTableEntry syscall_table[] = {
|
|
||||||
LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425
|
|
||||||
LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426
|
|
||||||
LINXY(__NR_io_uring_register, sys_io_uring_register), // 427
|
|
||||||
-
|
|
||||||
+ LINXY(__NR_open_tree, sys_open_tree), // 428
|
|
||||||
+ LINX_(__NR_move_mount, sys_move_mount), // 429
|
|
||||||
+ LINXY(__NR_fsopen, sys_fsopen), // 430
|
|
||||||
+ LINX_(__NR_fsconfig, sys_fsconfig), // 431
|
|
||||||
+ LINXY(__NR_fsmount, sys_fsmount), // 432
|
|
||||||
+ LINXY(__NR_fspick, sys_fspick), // 433
|
|
||||||
LINXY(__NR_pidfd_open, sys_pidfd_open), // 434
|
|
||||||
GENX_(__NR_clone3, sys_ni_syscall), // 435
|
|
||||||
LINXY(__NR_close_range, sys_close_range), // 436
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c
|
|
||||||
index a23743743abe..50384817dbe5 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-x86-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-x86-linux.c
|
|
||||||
@@ -1646,7 +1646,12 @@ static SyscallTableEntry syscall_table[] = {
|
|
||||||
LINXY(__NR_io_uring_setup, sys_io_uring_setup), // 425
|
|
||||||
LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426
|
|
||||||
LINXY(__NR_io_uring_register, sys_io_uring_register),// 427
|
|
||||||
-
|
|
||||||
+ LINXY(__NR_open_tree, sys_open_tree), // 428
|
|
||||||
+ LINX_(__NR_move_mount, sys_move_mount), // 429
|
|
||||||
+ LINXY(__NR_fsopen, sys_fsopen), // 430
|
|
||||||
+ LINX_(__NR_fsconfig, sys_fsconfig), // 431
|
|
||||||
+ LINXY(__NR_fsmount, sys_fsmount), // 432
|
|
||||||
+ LINXY(__NR_fspick, sys_fspick), // 433
|
|
||||||
LINXY(__NR_pidfd_open, sys_pidfd_open), // 434
|
|
||||||
GENX_(__NR_clone3, sys_ni_syscall), // 435
|
|
||||||
LINXY(__NR_close_range, sys_close_range), // 436
|
|
||||||
--
|
|
||||||
2.47.0
|
|
||||||
|
|
@ -1,144 +0,0 @@
|
|||||||
From a2c30f44ac39eb36baa4e831b041fe7cdf25e481 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Wielaard <mark@klomp.org>
|
|
||||||
Date: Fri, 6 Dec 2024 15:39:25 +0100
|
|
||||||
Subject: [PATCH 12/14] Recognize new DWARF5 DW_LANG constants
|
|
||||||
|
|
||||||
When using --read-var-info=yes readdwarf3 will try to read and
|
|
||||||
interpret the CU DW_AT_langauge attribute. Since DWARF5 was released a
|
|
||||||
number if new language constants have been introduced. See
|
|
||||||
https://dwarfstd.org/languages.html
|
|
||||||
|
|
||||||
GCC15 might start emitting some of these when switching to C23 by
|
|
||||||
default.
|
|
||||||
|
|
||||||
When valgrind --read-var-info=yes encounters an unknown DW_LANG
|
|
||||||
constant it will produce an error and stop processing any further
|
|
||||||
DWARF.
|
|
||||||
|
|
||||||
Recognize all currently known language constants. In particular
|
|
||||||
recognize DW_LANG_C17, DW_LANG_C23, DW_LANG_C_plus_plus_17,
|
|
||||||
DW_LANG_C_plus_plus_20, DW_LANG_C_plus_plus_23, DW_LANG_Fortran18,
|
|
||||||
DW_LANG_Fortran23, DW_LANG_Ada2005, DW_LANG_Ada2012 and DW_LANG_Rust.
|
|
||||||
|
|
||||||
https://bugs.kde.org/show_bug.cgi?id=497130
|
|
||||||
|
|
||||||
(cherry picked from commit 7136316123c54aba37fdab166e1bf860e452a4ae)
|
|
||||||
---
|
|
||||||
NEWS | 1 +
|
|
||||||
coregrind/m_debuginfo/priv_d3basics.h | 31 +++++++++++++++++++++++++++
|
|
||||||
coregrind/m_debuginfo/readdwarf3.c | 27 +++++++++++++++++++++--
|
|
||||||
3 files changed, 57 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/NEWS b/NEWS
|
|
||||||
index 7f1334aa0f07..a25f9b663098 100644
|
|
||||||
--- a/NEWS
|
|
||||||
+++ b/NEWS
|
|
||||||
@@ -7,6 +7,7 @@ The following bugs have been fixed or resolved on this branch.
|
|
||||||
|
|
||||||
489913 WARNING: unhandled amd64-linux syscall: 444 (landlock_create_ruleset)
|
|
||||||
494246 syscall fsopen not wrapped
|
|
||||||
+497130 Recognize new DWARF5 DW_LANG constants
|
|
||||||
|
|
||||||
To see details of a given bug, visit
|
|
||||||
https://bugs.kde.org/show_bug.cgi?id=XXXXXX
|
|
||||||
diff --git a/coregrind/m_debuginfo/priv_d3basics.h b/coregrind/m_debuginfo/priv_d3basics.h
|
|
||||||
index 3f6e5c72c9e4..34c98728711c 100644
|
|
||||||
--- a/coregrind/m_debuginfo/priv_d3basics.h
|
|
||||||
+++ b/coregrind/m_debuginfo/priv_d3basics.h
|
|
||||||
@@ -179,6 +179,7 @@ typedef enum dwarf_source_language
|
|
||||||
/* DWARF 4. */
|
|
||||||
DW_LANG_Python = 0x0014,
|
|
||||||
/* DWARF 5. */
|
|
||||||
+ DW_LANG_OpenCL = 0x0015,
|
|
||||||
DW_LANG_Go = 0x0016,
|
|
||||||
DW_LANG_Modula3 = 0x0017,
|
|
||||||
DW_LANG_Haskell = 0x0018,
|
|
||||||
@@ -195,6 +196,36 @@ typedef enum dwarf_source_language
|
|
||||||
DW_LANG_Fortran08 = 0x0023,
|
|
||||||
DW_LANG_RenderScript = 0x0024,
|
|
||||||
DW_LANG_BLISS = 0x0025,
|
|
||||||
+ /* Language codes added since DWARF 5.
|
|
||||||
+ https://dwarfstd.org/languages.html */
|
|
||||||
+ DW_LANG_Kotlin = 0x0026,
|
|
||||||
+ DW_LANG_Zig = 0x0027,
|
|
||||||
+ DW_LANG_Crystal = 0x0028,
|
|
||||||
+ DW_LANG_C_plus_plus_17 = 0x002a,
|
|
||||||
+ DW_LANG_C_plus_plus_20 = 0x002b,
|
|
||||||
+ DW_LANG_C17 = 0x002c,
|
|
||||||
+ DW_LANG_Fortran18 = 0x002d,
|
|
||||||
+ DW_LANG_Ada2005 = 0x002e,
|
|
||||||
+ DW_LANG_Ada2012 = 0x002f,
|
|
||||||
+ DW_LANG_HIP = 0x0030,
|
|
||||||
+ DW_LANG_Assembly = 0x0031,
|
|
||||||
+ DW_LANG_C_sharp = 0x0032,
|
|
||||||
+ DW_LANG_Mojo = 0x0033,
|
|
||||||
+ DW_LANG_GLSL = 0x0034,
|
|
||||||
+ DW_LANG_GLSL_ES = 0x0035,
|
|
||||||
+ DW_LANG_HLSL = 0x0036,
|
|
||||||
+ DW_LANG_OpenCL_CPP = 0x0037,
|
|
||||||
+ DW_LANG_CPP_for_OpenCL = 0x0038,
|
|
||||||
+ DW_LANG_SYCL = 0x0039,
|
|
||||||
+ DW_LANG_C_plus_plus_23 = 0x003a,
|
|
||||||
+ DW_LANG_Odin = 0x003b,
|
|
||||||
+ DW_LANG_P4 = 0x003c,
|
|
||||||
+ DW_LANG_Metal = 0x003d,
|
|
||||||
+ DW_LANG_C23 = 0x003e,
|
|
||||||
+ DW_LANG_Fortran23 = 0x003f,
|
|
||||||
+ DW_LANG_Ruby = 0x0040,
|
|
||||||
+ DW_LANG_Move = 0x0041,
|
|
||||||
+ DW_LANG_Hylo = 0x0042,
|
|
||||||
/* MIPS. */
|
|
||||||
DW_LANG_Mips_Assembler = 0x8001,
|
|
||||||
/* UPC. */
|
|
||||||
diff --git a/coregrind/m_debuginfo/readdwarf3.c b/coregrind/m_debuginfo/readdwarf3.c
|
|
||||||
index a4b75a8c532b..735896f7c0d3 100644
|
|
||||||
--- a/coregrind/m_debuginfo/readdwarf3.c
|
|
||||||
+++ b/coregrind/m_debuginfo/readdwarf3.c
|
|
||||||
@@ -3972,19 +3972,42 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents,
|
|
||||||
case DW_LANG_C_plus_plus: case DW_LANG_ObjC:
|
|
||||||
case DW_LANG_ObjC_plus_plus: case DW_LANG_UPC:
|
|
||||||
case DW_LANG_Upc: case DW_LANG_C99: case DW_LANG_C11:
|
|
||||||
+ case DW_LANG_C17: case DW_LANG_C23:
|
|
||||||
case DW_LANG_C_plus_plus_11: case DW_LANG_C_plus_plus_14:
|
|
||||||
+ case DW_LANG_C_plus_plus_17: case DW_LANG_C_plus_plus_20:
|
|
||||||
+ case DW_LANG_C_plus_plus_23:
|
|
||||||
parser->language = 'C'; break;
|
|
||||||
case DW_LANG_Fortran77: case DW_LANG_Fortran90:
|
|
||||||
case DW_LANG_Fortran95: case DW_LANG_Fortran03:
|
|
||||||
- case DW_LANG_Fortran08:
|
|
||||||
+ case DW_LANG_Fortran08: case DW_LANG_Fortran18:
|
|
||||||
+ case DW_LANG_Fortran23:
|
|
||||||
parser->language = 'F'; break;
|
|
||||||
case DW_LANG_Ada83: case DW_LANG_Ada95:
|
|
||||||
+ case DW_LANG_Ada2005: case DW_LANG_Ada2012:
|
|
||||||
parser->language = 'A'; break;
|
|
||||||
case DW_LANG_Cobol74:
|
|
||||||
case DW_LANG_Cobol85: case DW_LANG_Pascal83:
|
|
||||||
case DW_LANG_Modula2: case DW_LANG_Java:
|
|
||||||
case DW_LANG_PLI:
|
|
||||||
- case DW_LANG_D: case DW_LANG_Python: case DW_LANG_Go:
|
|
||||||
+ case DW_LANG_D: case DW_LANG_Python:
|
|
||||||
+ case DW_LANG_OpenCL: case DW_LANG_Go:
|
|
||||||
+ case DW_LANG_Modula3: case DW_LANG_Haskell:
|
|
||||||
+ case DW_LANG_OCaml: case DW_LANG_Rust: case DW_LANG_Swift:
|
|
||||||
+ case DW_LANG_Julia: case DW_LANG_Dylan:
|
|
||||||
+ case DW_LANG_RenderScript: case DW_LANG_BLISS:
|
|
||||||
+ case DW_LANG_Kotlin: case DW_LANG_Zig:
|
|
||||||
+ case DW_LANG_Crystal: case DW_LANG_HIP:
|
|
||||||
+ case DW_LANG_Assembly: case DW_LANG_C_sharp:
|
|
||||||
+ case DW_LANG_Mojo: case DW_LANG_GLSL:
|
|
||||||
+ case DW_LANG_GLSL_ES: case DW_LANG_HLSL:
|
|
||||||
+ case DW_LANG_OpenCL_CPP: case DW_LANG_CPP_for_OpenCL:
|
|
||||||
+ case DW_LANG_SYCL:
|
|
||||||
+ case DW_LANG_Odin:
|
|
||||||
+ case DW_LANG_P4:
|
|
||||||
+ case DW_LANG_Metal:
|
|
||||||
+ case DW_LANG_Ruby:
|
|
||||||
+ case DW_LANG_Move:
|
|
||||||
+ case DW_LANG_Hylo:
|
|
||||||
case DW_LANG_Mips_Assembler:
|
|
||||||
parser->language = '?'; break;
|
|
||||||
default:
|
|
||||||
--
|
|
||||||
2.47.1
|
|
||||||
|
|
@ -1,147 +0,0 @@
|
|||||||
From febe1ccef09f70777b086f938c03f3e71989a7c8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Paul Floyd <pjfloyd@wanadoo.fr>
|
|
||||||
Date: Tue, 7 Jan 2025 08:05:20 +0100
|
|
||||||
Subject: [PATCH 13/14] Bug 498317 - FdBadUse is not a valid CoreError type in
|
|
||||||
a suppression even though it's generated by --gen-suppressions=yes
|
|
||||||
|
|
||||||
https://bugs.kde.org/show_bug.cgi?id=498317
|
|
||||||
|
|
||||||
(cherry picked from commit 47bdc4a6f3de8e2071561d349fdd5f830388c489)
|
|
||||||
---
|
|
||||||
NEWS | 2 ++
|
|
||||||
coregrind/m_errormgr.c | 7 +++++--
|
|
||||||
coregrind/m_syswrap/syswrap-freebsd.c | 4 ++++
|
|
||||||
none/tests/freebsd/Makefile.am | 4 +++-
|
|
||||||
none/tests/freebsd/bug498317.c | 7 +++++++
|
|
||||||
none/tests/freebsd/bug498317.stderr.exp | 0
|
|
||||||
none/tests/freebsd/bug498317.supp | 8 ++++++++
|
|
||||||
none/tests/freebsd/bug498317.vgtest | 2 ++
|
|
||||||
9 files changed, 32 insertions(+), 3 deletions(-)
|
|
||||||
create mode 100644 none/tests/freebsd/bug498317.c
|
|
||||||
create mode 100644 none/tests/freebsd/bug498317.stderr.exp
|
|
||||||
create mode 100644 none/tests/freebsd/bug498317.supp
|
|
||||||
create mode 100644 none/tests/freebsd/bug498317.vgtest
|
|
||||||
|
|
||||||
diff --git a/NEWS b/NEWS
|
|
||||||
index a25f9b663098..2fb8ce5c724b 100644
|
|
||||||
--- a/NEWS
|
|
||||||
+++ b/NEWS
|
|
||||||
@@ -8,6 +8,8 @@ The following bugs have been fixed or resolved on this branch.
|
|
||||||
489913 WARNING: unhandled amd64-linux syscall: 444 (landlock_create_ruleset)
|
|
||||||
494246 syscall fsopen not wrapped
|
|
||||||
497130 Recognize new DWARF5 DW_LANG constants
|
|
||||||
+498317 FdBadUse is not a valid CoreError type in a suppression
|
|
||||||
+ even though it's generated by --gen-suppressions=yes
|
|
||||||
|
|
||||||
To see details of a given bug, visit
|
|
||||||
https://bugs.kde.org/show_bug.cgi?id=XXXXXX
|
|
||||||
diff --git a/coregrind/m_errormgr.c b/coregrind/m_errormgr.c
|
|
||||||
index 4bbcea02474c..2ce919482f77 100644
|
|
||||||
--- a/coregrind/m_errormgr.c
|
|
||||||
+++ b/coregrind/m_errormgr.c
|
|
||||||
@@ -206,7 +206,8 @@ typedef
|
|
||||||
// example should new core errors ever be added.
|
|
||||||
ThreadSupp = -1, /* Matches ThreadErr */
|
|
||||||
FdBadCloseSupp = -2,
|
|
||||||
- FdNotClosedSupp = -3
|
|
||||||
+ FdNotClosedSupp = -3,
|
|
||||||
+ FdBadUseSupp = -4
|
|
||||||
}
|
|
||||||
CoreSuppKind;
|
|
||||||
|
|
||||||
@@ -1033,7 +1034,7 @@ static Bool core_error_matches_suppression(const Error* err, const Supp* su)
|
|
||||||
return err->ekind == FdBadClose;
|
|
||||||
case FdNotClosedSupp:
|
|
||||||
return err->ekind == FdNotClosed;
|
|
||||||
- case FdBadUse:
|
|
||||||
+ case FdBadUseSupp:
|
|
||||||
return err->ekind == FdBadUse;
|
|
||||||
default:
|
|
||||||
VG_(umsg)("FATAL: unknown core suppression kind: %d\n", su->skind );
|
|
||||||
@@ -1522,6 +1523,8 @@ static void load_one_suppressions_file ( Int clo_suppressions_i )
|
|
||||||
supp->skind = FdBadCloseSupp;
|
|
||||||
else if (VG_STREQ(supp_name, "FdNotClosed"))
|
|
||||||
supp->skind = FdNotClosedSupp;
|
|
||||||
+ else if (VG_STREQ(supp_name, "FdBadUse"))
|
|
||||||
+ supp->skind = FdBadUseSupp;
|
|
||||||
else
|
|
||||||
BOMB("unknown core suppression type");
|
|
||||||
}
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-freebsd.c b/coregrind/m_syswrap/syswrap-freebsd.c
|
|
||||||
index 685eb6be076c..a2b79545594e 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-freebsd.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-freebsd.c
|
|
||||||
@@ -1400,6 +1400,10 @@ PRE(sys_fcntl)
|
|
||||||
PRINT("sys_fcntl[UNKNOWN] ( %lu, %lu, %lu )", ARG1,ARG2,ARG3);
|
|
||||||
I_die_here;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ if (!ML_(fd_allowed)(ARG1, "fcntl", tid, False)) {
|
|
||||||
+ SET_STATUS_Failure (VKI_EBADF);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
POST(sys_fcntl)
|
|
||||||
diff --git a/none/tests/freebsd/Makefile.am b/none/tests/freebsd/Makefile.am
|
|
||||||
index fe4f8db69824..1ccfefb57fe2 100644
|
|
||||||
--- a/none/tests/freebsd/Makefile.am
|
|
||||||
+++ b/none/tests/freebsd/Makefile.am
|
|
||||||
@@ -11,6 +11,8 @@ EXTRA_DIST = \
|
|
||||||
auxv.stderr.exp-freebsd131 \
|
|
||||||
auxv.stderr.exp-freebsd14 \
|
|
||||||
auxv.stderr.exp-arm64 \
|
|
||||||
+ bug498317.vgtest bug498317.stderr.exp \
|
|
||||||
+ bug498317.supp \
|
|
||||||
cp.vgtest \
|
|
||||||
cp.stderr.exp \
|
|
||||||
osrel.vgtest \
|
|
||||||
@@ -61,7 +63,7 @@ EXTRA_DIST = \
|
|
||||||
usrstack.stdout.exp
|
|
||||||
|
|
||||||
check_PROGRAMS = \
|
|
||||||
- auxv osrel swapcontext hello_world fexecve 452275 usrstack \
|
|
||||||
+ auxv bug498317 osrel swapcontext hello_world fexecve 452275 usrstack \
|
|
||||||
proc_pid_file sanity_level_thread umtx_shm_creat
|
|
||||||
|
|
||||||
AM_CFLAGS += $(AM_FLAG_M3264_PRI)
|
|
||||||
diff --git a/none/tests/freebsd/bug498317.c b/none/tests/freebsd/bug498317.c
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..36a1a5a1365e
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/none/tests/freebsd/bug498317.c
|
|
||||||
@@ -0,0 +1,7 @@
|
|
||||||
+#include <fcntl.h>
|
|
||||||
+
|
|
||||||
+int main(void) {
|
|
||||||
+ fcntl(-1, F_GETFD);
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
diff --git a/none/tests/freebsd/bug498317.stderr.exp b/none/tests/freebsd/bug498317.stderr.exp
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..e69de29bb2d1
|
|
||||||
diff --git a/none/tests/freebsd/bug498317.supp b/none/tests/freebsd/bug498317.supp
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..b3a99447c2a4
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/none/tests/freebsd/bug498317.supp
|
|
||||||
@@ -0,0 +1,8 @@
|
|
||||||
+{
|
|
||||||
+ test suppression of FdBadUse
|
|
||||||
+ CoreError:FdBadUse
|
|
||||||
+ fun:_fcntl
|
|
||||||
+ fun:fcntl
|
|
||||||
+ fun:main
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
diff --git a/none/tests/freebsd/bug498317.vgtest b/none/tests/freebsd/bug498317.vgtest
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..6579ebce8c56
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/none/tests/freebsd/bug498317.vgtest
|
|
||||||
@@ -0,0 +1,2 @@
|
|
||||||
+prog: bug498317
|
|
||||||
+vgopts: -q
|
|
||||||
--
|
|
||||||
2.47.1
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
|||||||
From b732f86998e39ca8714330f487804428b54c481c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Wielaard <mark@klomp.org>
|
|
||||||
Date: Wed, 8 Jan 2025 16:52:03 +0100
|
|
||||||
Subject: [PATCH 14/14] linux: support EVIOCGRAB ioctl
|
|
||||||
|
|
||||||
EVIOCGRAB just takes an int argument.
|
|
||||||
|
|
||||||
https://bugs.kde.org/show_bug.cgi?id=498143
|
|
||||||
|
|
||||||
(cherry picked from commit 59eb5a4af60d4beb2c6910a1fa6cdf8d1f3a56f2)
|
|
||||||
---
|
|
||||||
NEWS | 1 +
|
|
||||||
coregrind/m_syswrap/syswrap-linux.c | 4 ++++
|
|
||||||
include/vki/vki-linux.h | 3 +++
|
|
||||||
3 files changed, 8 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/NEWS b/NEWS
|
|
||||||
index 2fb8ce5c724b..7f9e005c59f4 100644
|
|
||||||
--- a/NEWS
|
|
||||||
+++ b/NEWS
|
|
||||||
@@ -10,6 +10,7 @@ The following bugs have been fixed or resolved on this branch.
|
|
||||||
497130 Recognize new DWARF5 DW_LANG constants
|
|
||||||
498317 FdBadUse is not a valid CoreError type in a suppression
|
|
||||||
even though it's generated by --gen-suppressions=yes
|
|
||||||
+498143 False positive on EVIOCGRAB ioctl
|
|
||||||
|
|
||||||
To see details of a given bug, visit
|
|
||||||
https://bugs.kde.org/show_bug.cgi?id=XXXXXX
|
|
||||||
diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c
|
|
||||||
index 57672f167126..87ab82e6e342 100644
|
|
||||||
--- a/coregrind/m_syswrap/syswrap-linux.c
|
|
||||||
+++ b/coregrind/m_syswrap/syswrap-linux.c
|
|
||||||
@@ -10397,6 +10397,10 @@ PRE(sys_ioctl)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ case VKI_EVIOCGRAB:
|
|
||||||
+ /* This just takes an int argument. */
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
default:
|
|
||||||
/* EVIOC* are variable length and return size written on success */
|
|
||||||
switch (ARG2 & ~(_VKI_IOC_SIZEMASK << _VKI_IOC_SIZESHIFT)) {
|
|
||||||
diff --git a/include/vki/vki-linux.h b/include/vki/vki-linux.h
|
|
||||||
index 006f16d92201..d4e1908e1e9c 100644
|
|
||||||
--- a/include/vki/vki-linux.h
|
|
||||||
+++ b/include/vki/vki-linux.h
|
|
||||||
@@ -3226,6 +3226,9 @@ struct vki_getcpu_cache {
|
|
||||||
|
|
||||||
#define VKI_EVIOCGBIT(ev,len) _VKI_IOC(_VKI_IOC_READ, 'E', 0x20 + ev, len) /* get event bits */
|
|
||||||
|
|
||||||
+#define VKI_EVIOCGRAB _VKI_IOW('E', 0x90, int)
|
|
||||||
+/* grab device */
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Event types
|
|
||||||
*/
|
|
||||||
--
|
|
||||||
2.47.1
|
|
||||||
|
|
87
SOURCES/ppc64-strcmp-ld.patch
Normal file
87
SOURCES/ppc64-strcmp-ld.patch
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c
|
||||||
|
index 63172b971..857f910cb 100644
|
||||||
|
--- a/coregrind/m_redir.c
|
||||||
|
+++ b/coregrind/m_redir.c
|
||||||
|
@@ -1508,6 +1508,12 @@ void VG_(redir_initialise) ( void )
|
||||||
|
NULL /* not mandatory - so why bother at all? */
|
||||||
|
/* glibc-2.5 (FC6, ppc64) seems fine without it */
|
||||||
|
);
|
||||||
|
+
|
||||||
|
+ add_hardwired_spec(
|
||||||
|
+ "ld64.so.2", "strcmp",
|
||||||
|
+ (Addr)&VG_(ppc64_linux_REDIR_FOR_strcmp),
|
||||||
|
+ NULL
|
||||||
|
+ );
|
||||||
|
}
|
||||||
|
|
||||||
|
# elif defined(VGP_arm_linux)
|
||||||
|
diff --git a/coregrind/m_trampoline.S b/coregrind/m_trampoline.S
|
||||||
|
index 2c2cc0dc2..5e1f2f147 100644
|
||||||
|
--- a/coregrind/m_trampoline.S
|
||||||
|
+++ b/coregrind/m_trampoline.S
|
||||||
|
@@ -602,8 +602,52 @@ VG_(ppc64_linux_REDIR_FOR_strchr):
|
||||||
|
.long 0
|
||||||
|
.byte 0,0,0,0,0,0,0,0
|
||||||
|
.L1end:
|
||||||
|
-
|
||||||
|
|
||||||
|
+ /* this function is written using the "dotless" ABI convention */
|
||||||
|
+ .align 2
|
||||||
|
+ .globl VG_(ppc64_linux_REDIR_FOR_strcmp)
|
||||||
|
+#if !defined VGP_ppc64be_linux || _CALL_ELF == 2
|
||||||
|
+ /* Little Endian uses ELF version 2 */
|
||||||
|
+ .type VG_(ppc64_linux_REDIR_FOR_strcmp),@function
|
||||||
|
+VG_(ppc64_linux_REDIR_FOR_strcmp):
|
||||||
|
+#else
|
||||||
|
+ /* Big Endian uses ELF version 1 */
|
||||||
|
+ .section ".opd","aw"
|
||||||
|
+ .align 3
|
||||||
|
+VG_(ppc64_linux_REDIR_FOR_strcmp):
|
||||||
|
+ .quad .L.VG_(ppc64_linux_REDIR_FOR_strcmp),.TOC.@tocbase,0
|
||||||
|
+ .previous
|
||||||
|
+ .size VG_(ppc64_linux_REDIR_FOR_strcmp), \
|
||||||
|
+ .LFE0-.L.VG_(ppc64_linux_REDIR_FOR_strcmp)
|
||||||
|
+ .type VG_(ppc64_linux_REDIR_FOR_strcmp), @function
|
||||||
|
+
|
||||||
|
+.L.VG_(ppc64_linux_REDIR_FOR_strcmp):
|
||||||
|
+#endif
|
||||||
|
+#if _CALL_ELF == 2
|
||||||
|
+0: addis 2,12,.TOC.-0b@ha
|
||||||
|
+ addi 2,2,.TOC.-0b@l
|
||||||
|
+ .localentry VG_(ppc64_linux_REDIR_FOR_strcmp), .-VG_(ppc64_linux_REDIR_FOR_strcmp)
|
||||||
|
+#endif
|
||||||
|
+.LFB0:
|
||||||
|
+ .cfi_startproc
|
||||||
|
+ li 10,0
|
||||||
|
+.L3:
|
||||||
|
+ lbzx 8,3,10
|
||||||
|
+ lbzx 9,4,10
|
||||||
|
+ cmpwi 0,8,0
|
||||||
|
+ beq 0,.L2
|
||||||
|
+ cmpw 0,8,9
|
||||||
|
+ addi 10,10,1
|
||||||
|
+ beq 0,.L3
|
||||||
|
+.L2:
|
||||||
|
+ subf 3,9,8
|
||||||
|
+ extsw 3,3
|
||||||
|
+ blr
|
||||||
|
+ .long 0
|
||||||
|
+ .byte 0,0,0,0,0,0,0,0
|
||||||
|
+ .cfi_endproc
|
||||||
|
+.LFE0:
|
||||||
|
+
|
||||||
|
.global VG_(trampoline_stuff_end)
|
||||||
|
VG_(trampoline_stuff_end):
|
||||||
|
|
||||||
|
diff --git a/coregrind/pub_core_trampoline.h b/coregrind/pub_core_trampoline.h
|
||||||
|
index 11d791df7..92b4fc67b 100644
|
||||||
|
--- a/coregrind/pub_core_trampoline.h
|
||||||
|
+++ b/coregrind/pub_core_trampoline.h
|
||||||
|
@@ -97,6 +97,7 @@ extern void* VG_(ppc32_linux_REDIR_FOR_strchr)( void*, Int );
|
||||||
|
#if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
|
||||||
|
extern Addr VG_(ppc64_linux_SUBST_FOR_rt_sigreturn);
|
||||||
|
extern UInt VG_(ppc64_linux_REDIR_FOR_strlen)( void* );
|
||||||
|
+extern UInt VG_(ppc64_linux_REDIR_FOR_strcmp)( void*, void* );
|
||||||
|
extern void* VG_(ppc64_linux_REDIR_FOR_strchr)( void*, Int );
|
||||||
|
/* A label (sans dot) marking the ultra-magical return stub via which
|
||||||
|
all redirected and wrapped functions are made to "return" on
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Summary: Dynamic analysis tools to detect memory or thread bugs and profile
|
Summary: Dynamic analysis tools to detect memory or thread bugs and profile
|
||||||
Name: %{?scl_prefix}valgrind
|
Name: %{?scl_prefix}valgrind
|
||||||
Version: 3.24.0
|
Version: 3.25.1
|
||||||
Release: 3%{?dist}
|
Release: 3%{?dist}
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
@ -78,21 +78,14 @@ Patch3: valgrind-3.16.0-some-stack-protector.patch
|
|||||||
# Add some -Wl,z,now.
|
# Add some -Wl,z,now.
|
||||||
Patch4: valgrind-3.16.0-some-Wl-z-now.patch
|
Patch4: valgrind-3.16.0-some-Wl-z-now.patch
|
||||||
|
|
||||||
# VALGRIND_3_24_BRANCH patches
|
# VALGRIND_3_25_BRANCH patches
|
||||||
Patch5: 0001-Prepare-NEWS-for-branch-3.24-fixes.patch
|
Patch5: 0001-Prepare-NEWS-for-branch-3.25.x-fixes.patch
|
||||||
Patch6: 0002-vgdb.c-fork_and_exec_valgrind-Fix-off-by-one-error-w.patch
|
Patch6: 0002-Bug-503241-s390x-Support-z17-changes-to-the-NNPA-ins.patch
|
||||||
Patch7: 0003-vgdb.c-fork_and_exec_valgrind-Fix-another-off-by-one.patch
|
Patch7: 0003-Add-several-missing-syscall-hooks-to-ppc64-linux.patch
|
||||||
Patch8: 0004-regtest-add-a-fdleak-filter-for-write-on-write-on-li.patch
|
|
||||||
Patch9: 0005-Add-exp-and-supp-patterns-for-missing-main-frame-for.patch
|
# Proposed upstream patches
|
||||||
Patch10: 0006-Add-additional-exp-ppc64le-files-to-EXTRA_DIST.patch
|
# https://bugs.kde.org/show_bug.cgi?id=508145
|
||||||
Patch11: 0007-Add-support-for-landlock_create_ruleset-444-landlock.patch
|
Patch101: ppc64-strcmp-ld.patch
|
||||||
Patch12: 0008-helgrind-tests-tc17_sembar.c-Remove-bool-typedef.patch
|
|
||||||
Patch13: 0009-drd-tests-swapcontext.c-Rename-typedef-struct-thread.patch
|
|
||||||
Patch14: 0010-none-tests-bug234814.c-sa_handler-take-an-int-as-arg.patch
|
|
||||||
Patch15: 0011-Add-open_tree-move_mount-fsopen-fsconfig-fsmount-fsp.patch
|
|
||||||
Patch16: 0012-Recognize-new-DWARF5-DW_LANG-constants.patch
|
|
||||||
Patch17: 0013-Bug-498317-FdBadUse-is-not-a-valid-CoreError-type-in.patch
|
|
||||||
Patch18: 0014-linux-support-EVIOCGRAB-ioctl.patch
|
|
||||||
|
|
||||||
BuildRequires: make
|
BuildRequires: make
|
||||||
BuildRequires: glibc-devel
|
BuildRequires: glibc-devel
|
||||||
@ -132,6 +125,11 @@ BuildRequires: elfutils-debuginfod-client
|
|||||||
Recommends: elfutils-debuginfod-client
|
Recommends: elfutils-debuginfod-client
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
# Optional subpackages
|
||||||
|
Recommends: %{?scl_prefix}valgrind-docs = %{epoch}:%{version}-%{release}
|
||||||
|
Recommends: %{?scl_prefix}valgrind-scripts = %{epoch}:%{version}-%{release}
|
||||||
|
Recommends: %{?scl_prefix}valgrind-gdb = %{epoch}:%{version}-%{release}
|
||||||
|
|
||||||
# For running the testsuite.
|
# For running the testsuite.
|
||||||
# Some of the python scripts require python 3.9+
|
# Some of the python scripts require python 3.9+
|
||||||
BuildRequires: python3-devel
|
BuildRequires: python3-devel
|
||||||
@ -141,7 +139,7 @@ BuildRequires: python3-devel
|
|||||||
# We could use %%valgrind_arches as defined in redhat-rpm-config
|
# We could use %%valgrind_arches as defined in redhat-rpm-config
|
||||||
# But that is really for programs using valgrind, it defines the
|
# But that is really for programs using valgrind, it defines the
|
||||||
# set of architectures that valgrind works correctly on.
|
# set of architectures that valgrind works correctly on.
|
||||||
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
|
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64 riscv64
|
||||||
|
|
||||||
# Define valarch, the architecture name that valgrind uses
|
# Define valarch, the architecture name that valgrind uses
|
||||||
# And only_arch, the configure option to only build for that arch.
|
# And only_arch, the configure option to only build for that arch.
|
||||||
@ -177,6 +175,10 @@ ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
|
|||||||
%define valarch arm64
|
%define valarch arm64
|
||||||
%define only_arch --enable-only64bit
|
%define only_arch --enable-only64bit
|
||||||
%endif
|
%endif
|
||||||
|
%ifarch riscv64
|
||||||
|
%define valarch riscv64
|
||||||
|
%define only_arch --enable-only64bit
|
||||||
|
%endif
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Valgrind is an instrumentation framework for building dynamic analysis
|
Valgrind is an instrumentation framework for building dynamic analysis
|
||||||
@ -191,11 +193,43 @@ profiler (callgrind), and a heap profiler (massif).
|
|||||||
|
|
||||||
%package devel
|
%package devel
|
||||||
Summary: Development files for valgrind aware programs
|
Summary: Development files for valgrind aware programs
|
||||||
Requires: %{?scl_prefix}valgrind = %{epoch}:%{version}-%{release}
|
# These are just the header files, so strictly speaking you don't
|
||||||
|
# need valgrind itself unless you are testing your builds. This used
|
||||||
|
# to be a Requires, so people might depend on the package pulling in
|
||||||
|
# the core valgrind package, so make it at least a weak dependency.
|
||||||
|
Recommends: %{?scl_prefix}valgrind = %{epoch}:%{version}-%{release}
|
||||||
|
|
||||||
%description devel
|
%description devel
|
||||||
Header files and libraries for development of valgrind aware programs.
|
Header files and libraries for development of valgrind aware programs.
|
||||||
|
|
||||||
|
%package docs
|
||||||
|
Summary: Documentation for valgrind tools, scripts and gdb integration
|
||||||
|
License: GFDL-1.2-or-later
|
||||||
|
|
||||||
|
%description docs
|
||||||
|
Documentation in html and pdf, plus man pages for valgrind tools and scripts.
|
||||||
|
|
||||||
|
%package scripts
|
||||||
|
Summary: Scripts for post-processing valgrind tool output
|
||||||
|
License: GPL-2.0-or-later
|
||||||
|
# Most scripts can be used as is for post-processing a valgrind tool run.
|
||||||
|
# But callgrind_control uses vgdb.
|
||||||
|
Recommends: %{?scl_prefix}valgrind-gdb = %{epoch}:%{version}-%{release}
|
||||||
|
|
||||||
|
%description scripts
|
||||||
|
Perl and Python scripts for post-processing valgrind tool output.
|
||||||
|
|
||||||
|
%package gdb
|
||||||
|
Summary: Tools for integrating valgrind and gdb
|
||||||
|
License: GPL-2.0-or-later
|
||||||
|
Requires: %{?scl_prefix}valgrind = %{epoch}:%{version}-%{release}
|
||||||
|
# vgdb can be used without gdb, just to control valgrind.
|
||||||
|
# But normally you use it together with both valgrind and gdb.
|
||||||
|
Recommends: gdb
|
||||||
|
|
||||||
|
%description gdb
|
||||||
|
Tools and support files for integrating valgrind and gdb.
|
||||||
|
|
||||||
%if %{build_tools_devel}
|
%if %{build_tools_devel}
|
||||||
%package tools-devel
|
%package tools-devel
|
||||||
Summary: Development files for building valgrind tools.
|
Summary: Development files for building valgrind tools.
|
||||||
@ -228,17 +262,8 @@ Valgrind User Manual for details.
|
|||||||
%patch -P5 -p1
|
%patch -P5 -p1
|
||||||
%patch -P6 -p1
|
%patch -P6 -p1
|
||||||
%patch -P7 -p1
|
%patch -P7 -p1
|
||||||
%patch -P8 -p1
|
|
||||||
%patch -P9 -p1
|
%patch -P101 -p1
|
||||||
%patch -P10 -p1
|
|
||||||
%patch -P11 -p1
|
|
||||||
%patch -P12 -p1
|
|
||||||
%patch -P13 -p1
|
|
||||||
%patch -P14 -p1
|
|
||||||
%patch -P15 -p1
|
|
||||||
%patch -P16 -p1
|
|
||||||
%patch -P17 -p1
|
|
||||||
%patch -P18 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
# LTO triggers undefined symbols in valgrind. But valgrind has a
|
# LTO triggers undefined symbols in valgrind. But valgrind has a
|
||||||
@ -409,18 +434,41 @@ echo ===============END TESTING===============
|
|||||||
%{!?_licensedir:%global license %%doc}
|
%{!?_licensedir:%global license %%doc}
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%license COPYING COPYING.DOCS
|
%license COPYING
|
||||||
%doc NEWS README_*
|
%{_bindir}/valgrind
|
||||||
%doc docs/installed/html docs/installed/*.pdf
|
|
||||||
%{_bindir}/*
|
|
||||||
%dir %{_libexecdir}/valgrind
|
%dir %{_libexecdir}/valgrind
|
||||||
# Install everything in the libdir except the .so.
|
# Install just the core tools, default suppression and vgpreload libraries.
|
||||||
# The vgpreload so files might need file mode adjustment.
|
%{_libexecdir}/valgrind/default.supp
|
||||||
%{_libexecdir}/valgrind/*[^o]
|
%{_libexecdir}/valgrind/*-*-linux
|
||||||
# Turn on executable bit again for vgpreload libraries.
|
# Turn on executable bit again for vgpreload libraries.
|
||||||
# Was disabled in %%install to prevent debuginfo stripping.
|
# Was disabled in %%install to prevent debuginfo stripping.
|
||||||
%attr(0755,root,root) %{_libexecdir}/valgrind/vgpreload*-%{valarch}-*so
|
%attr(0755,root,root) %{_libexecdir}/valgrind/vgpreload_*-%{valarch}-linux.so
|
||||||
|
|
||||||
|
%files docs
|
||||||
|
%license COPYING.DOCS
|
||||||
|
%doc NEWS README_*
|
||||||
|
%doc docs/installed/html docs/installed/*.pdf
|
||||||
%{_mandir}/man1/*
|
%{_mandir}/man1/*
|
||||||
|
|
||||||
|
%files scripts
|
||||||
|
%license COPYING
|
||||||
|
%{_bindir}/callgrind_annotate
|
||||||
|
%{_bindir}/callgrind_control
|
||||||
|
%{_bindir}/cg_annotate
|
||||||
|
%{_bindir}/cg_diff
|
||||||
|
%{_bindir}/cg_merge
|
||||||
|
%{_bindir}/ms_print
|
||||||
|
%{_libexecdir}/valgrind/dh_view.css
|
||||||
|
%{_libexecdir}/valgrind/dh_view.html
|
||||||
|
%{_libexecdir}/valgrind/dh_view.js
|
||||||
|
|
||||||
|
%files gdb
|
||||||
|
%license COPYING
|
||||||
|
%{_bindir}/valgrind-di-server
|
||||||
|
%{_bindir}/valgrind-listener
|
||||||
|
%{_bindir}/vgdb
|
||||||
|
# gdb register descriptions
|
||||||
|
%{_libexecdir}/valgrind/*.xml
|
||||||
%{_datadir}/gdb/auto-load/valgrind-monitor.py
|
%{_datadir}/gdb/auto-load/valgrind-monitor.py
|
||||||
%{_datadir}/gdb/auto-load/valgrind-monitor-def.py
|
%{_datadir}/gdb/auto-load/valgrind-monitor-def.py
|
||||||
|
|
||||||
@ -453,24 +501,41 @@ echo ===============END TESTING===============
|
|||||||
%{_libdir}/valgrind/libmpiwrap*.so
|
%{_libdir}/valgrind/libmpiwrap*.so
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if 0%{?rhel} == 6
|
|
||||||
%post
|
|
||||||
# There is a bug in rpm (rhbz#214737) that might cause post to be run
|
|
||||||
# even thought the binary isn't installed when installing two multilib
|
|
||||||
# versions at the same time.
|
|
||||||
if [ -x %{_bindir}/valgrind ]; then
|
|
||||||
# On RHEL6 the fs equivalency should be setup by the devtoolset meta
|
|
||||||
# package, but because of a rpm bug (rhbz#924044) it might not work.
|
|
||||||
%{?scl:/sbin/restorecon %{_bindir}/valgrind}%{!?scl:true}
|
|
||||||
fi
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Aug 18 2025 Mark Wielaard <mjw@redhat.com> - 3.25.1-3
|
||||||
|
- Add ppc64-strcmp-ld.patch
|
||||||
|
- Add 0003-Add-several-missing-syscall-hooks-to-ppc64-linux.patch
|
||||||
|
|
||||||
|
* Tue Aug 5 2025 Mark Wielaard <mjw@redhat.com> - 3.25.1-2
|
||||||
|
- Add VALGRIND_3_25_BRANCH patches
|
||||||
|
- 0001-Prepare-NEWS-for-branch-3.25.x-fixes.patch
|
||||||
|
- 0002-Bug-503241-s390x-Support-z17-changes-to-the-NNPA-ins.patch
|
||||||
|
|
||||||
|
* Thu May 22 2025 Mark Wielaard <mjw@redhat.com> - 3.25.1-1
|
||||||
|
- Valgrind 3.25.1 final
|
||||||
|
|
||||||
|
* Fri Apr 25 2025 Mark Wielaard <mjw@redhat.com> - 3.25.0-1
|
||||||
|
- Valgrind 3.25.0 final
|
||||||
|
|
||||||
|
* Wed Feb 26 2025 Mark Wielaard <mjw@redhat.com> - 3.24.0-4
|
||||||
|
- Split main valgrind package into several subpackages:
|
||||||
|
- valgrind now contains just the core tools.
|
||||||
|
- valgrind-scripts contains the post-processing scripts for callgrind,
|
||||||
|
cachegrind, massif and dhat which depend on perl and python.
|
||||||
|
- valgrind-gdb contains the debuginfo client/server and (v)gdb support.
|
||||||
|
- valgrind-docs contains the man pages, html and pdf manual.
|
||||||
|
- Adjust Requires/Recommends to subpackages can be installed independently.
|
||||||
|
- valgrind-devel now Recommends, instead of Requires, valgrind.
|
||||||
|
- valgrind-gdb Requires valgrind
|
||||||
|
- valgrind-scripts Recommends valgrind-gdb
|
||||||
|
- valgrind-gdb Recommends gdb
|
||||||
|
|
||||||
* Tue Jan 14 2025 Mark Wielaard <mjw@redhat.com> - 3.24.0-3
|
* Tue Jan 14 2025 Mark Wielaard <mjw@redhat.com> - 3.24.0-3
|
||||||
- Add more VALGRIND_3_24_BRANCH patches
|
- Add more VALGRIND_3_24_BRANCH patches
|
||||||
0012-Recognize-new-DWARF5-DW_LANG-constants.patch
|
0012-Recognize-new-DWARF5-DW_LANG-constants.patch
|
||||||
0013-Bug-498317-FdBadUse-is-not-a-valid-CoreError-type-in.patch
|
0013-Bug-498317-FdBadUse-is-not-a-valid-CoreError-type-in.patch
|
||||||
0014-linux-support-EVIOCGRAB-ioctl.patch
|
0014-linux-support-EVIOCGRAB-ioctl.patch
|
||||||
|
|
||||||
* Tue Nov 26 2024 Mark Wielaard <mjw@redhat.com> - 3.24.0-2
|
* Tue Nov 26 2024 Mark Wielaard <mjw@redhat.com> - 3.24.0-2
|
||||||
- Add VALGRIND_3_24_BRANCH patches
|
- Add VALGRIND_3_24_BRANCH patches
|
||||||
0001-Prepare-NEWS-for-branch-3.24-fixes.patch
|
0001-Prepare-NEWS-for-branch-3.24-fixes.patch
|
||||||
|
Loading…
Reference in New Issue
Block a user