From 9142b8600ea95094c2d946ae8bed2bcdcb2d02d1 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Nov 15 2021 10:28:05 +0000 Subject: import devtoolset-11-strace-5.13-3.el7 --- diff --git a/.devtoolset-11-strace.metadata b/.devtoolset-11-strace.metadata new file mode 100644 index 0000000..4c2d4b4 --- /dev/null +++ b/.devtoolset-11-strace.metadata @@ -0,0 +1 @@ +0f48c474de7d34009d3455f589efe790d24050b5 SOURCES/strace-5.13.tar.xz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a2c5d2d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/strace-5.13.tar.xz diff --git a/SOURCES/0139-tests-relax-a-check-in-prlimit64-test.patch b/SOURCES/0139-tests-relax-a-check-in-prlimit64-test.patch new file mode 100644 index 0000000..0fe8cfd --- /dev/null +++ b/SOURCES/0139-tests-relax-a-check-in-prlimit64-test.patch @@ -0,0 +1,38 @@ +From a476b4c86dc8f916f9de6ab27857818dfd1f1781 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Wed, 21 Jul 2021 10:06:57 +0200 +Subject: [PATCH] tests: relax -a check in prlimit64 test + +The initial "-a48" check was too strict as it has hit some false +positives on 32-bit arches: + + -prlimit64(15083, RLIMIT_AS, NULL, 0xf7ff4ff0) = -1 ENOSYS (Function not implemented) + +prlimit64(15083, RLIMIT_AS, NULL, 0xf7ff4ff0) = -1 ENOSYS (Function not implemented)l + +Reduce it to the theoretical limit (width of "prlimit(0, RLIMIT_AS, NULL, NULL)" +string). Also, add the same check to prlimit64--pidns-translation. + +* tests/gen_tests.in (prlimit64, prlimit64--pidns-translation): Set +alignment check to -a28. +--- + tests/gen_tests.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tests/gen_tests.in b/tests/gen_tests.in +index 8b4e2e9..e03d421 100644 +--- a/tests/gen_tests.in ++++ b/tests/gen_tests.in +@@ -599,8 +599,8 @@ printstr -e trace=writev + printstrn-umoven -s4096 -e signal=none -e trace=add_key + printstrn-umoven-peekdata -e signal=none -e trace=add_key + printstrn-umoven-undumpable -e signal=none -e trace=add_key +-prlimit64 -a48 "QUIRK:START-OF-TEST-OUTPUT:prlimit64(0, 0x10 /* RLIMIT_??? */, NULL, NULL)" +-prlimit64--pidns-translation test_pidns -e trace=prlimit64 "QUIRK:START-OF-TEST-OUTPUT:prlimit64(0, 0x10 /* RLIMIT_??? */, NULL, NULL)" ++prlimit64 -a28 "QUIRK:START-OF-TEST-OUTPUT:prlimit64(0, 0x10 /* RLIMIT_??? */, NULL, NULL)" ++prlimit64--pidns-translation test_pidns -a28 -e trace=prlimit64 "QUIRK:START-OF-TEST-OUTPUT:prlimit64(0, 0x10 /* RLIMIT_??? */, NULL, NULL)" + process_madvise + process_madvise-y --trace=process_madvise -y + process_madvise-yy --trace=process_madvise -yy +-- +2.1.4 + diff --git a/SOURCES/0140-tests-move-DIAG_PUSH_IGNORE_NONNULL-DIAG_POP_IGNORE_.patch b/SOURCES/0140-tests-move-DIAG_PUSH_IGNORE_NONNULL-DIAG_POP_IGNORE_.patch new file mode 100644 index 0000000..e618166 --- /dev/null +++ b/SOURCES/0140-tests-move-DIAG_PUSH_IGNORE_NONNULL-DIAG_POP_IGNORE_.patch @@ -0,0 +1,221 @@ +From 4b7f39f71c6e5832df7904c18df5023a7c549d87 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Tue, 20 Jul 2021 20:47:49 +0200 +Subject: [PATCH] tests: move DIAG_PUSH_IGNORE_NONNULL/DIAG_POP_IGNORE_NONNULL + outside main + +Otherwise, gcc-4.4.7 (at least) complains: + + preadv.c:69: error: #pragma GCC diagnostic not allowed inside functions + preadv.c:72: error: #pragma GCC diagnostic not allowed inside functions + pwritev.c:112: error: #pragma GCC diagnostic not allowed inside functions + pwritev.c:114: error: #pragma GCC diagnostic not allowed inside functions +--- + tests/preadv.c | 7 +++++-- + tests/pwritev.c | 7 +++++-- + 2 files changed, 10 insertions(+), 4 deletions(-) + +diff --git a/tests/preadv.c b/tests/preadv.c +index 3ccefc1..d03dfd0 100644 +--- a/tests/preadv.c ++++ b/tests/preadv.c +@@ -42,6 +42,9 @@ print_iovec(const struct iovec *iov, unsigned int cnt) + putchar(']'); + } + ++/* for preadv(0, NULL, 1, -2) */ ++DIAG_PUSH_IGNORE_NONNULL ++ + int + main(void) + { +@@ -66,10 +69,8 @@ main(void) + printf("preadv(0, [{iov_base=%p, iov_len=%zu}], 1, -1) = " + "-1 EINVAL (%m)\n", iov->iov_base, iov->iov_len); + +- DIAG_PUSH_IGNORE_NONNULL + if (preadv(0, NULL, 1, -2) != -1) + perror_msg_and_fail("preadv"); +- DIAG_POP_IGNORE_NONNULL + printf("preadv(0, NULL, 1, -2) = -1 EINVAL (%m)\n"); + + if (preadv(0, iov, 0, -3) != -1) +@@ -132,6 +133,8 @@ main(void) + return 0; + } + ++DIAG_POP_IGNORE_NONNULL ++ + #else + + SKIP_MAIN_UNDEFINED("HAVE_PREADV") +diff --git a/tests/pwritev.c b/tests/pwritev.c +index ea85397..2b1c67a 100644 +--- a/tests/pwritev.c ++++ b/tests/pwritev.c +@@ -58,6 +58,9 @@ print_iovec(const struct iovec *iov, unsigned int cnt, unsigned int size) + putchar(']'); + } + ++/* for pwritev(0, NULL, 1, -3) */ ++DIAG_PUSH_IGNORE_NONNULL ++ + int + main(void) + { +@@ -109,9 +112,7 @@ main(void) + printf("pwritev(0, %p, 42, -2) = %ld %s (%m)\n", + iov, rc, errno2name()); + +- DIAG_PUSH_IGNORE_NONNULL + rc = pwritev(0, NULL, 1, -3); +- DIAG_POP_IGNORE_NONNULL + printf("pwritev(0, NULL, 1, -3) = %ld %s (%m)\n", + rc, errno2name()); + +@@ -123,6 +124,8 @@ main(void) + return 0; + } + ++DIAG_POP_IGNORE_NONNULL ++ + #else + + SKIP_MAIN_UNDEFINED("HAVE_PWRITEV") +diff --git a/tests-m32/preadv.c b/tests-m32/preadv.c +index 3ccefc1..d03dfd0 100644 +--- a/tests-m32/preadv.c ++++ b/tests-m32/preadv.c +@@ -42,6 +42,9 @@ print_iovec(const struct iovec *iov, unsigned int cnt) + putchar(']'); + } + ++/* for preadv(0, NULL, 1, -2) */ ++DIAG_PUSH_IGNORE_NONNULL ++ + int + main(void) + { +@@ -66,10 +69,8 @@ main(void) + printf("preadv(0, [{iov_base=%p, iov_len=%zu}], 1, -1) = " + "-1 EINVAL (%m)\n", iov->iov_base, iov->iov_len); + +- DIAG_PUSH_IGNORE_NONNULL + if (preadv(0, NULL, 1, -2) != -1) + perror_msg_and_fail("preadv"); +- DIAG_POP_IGNORE_NONNULL + printf("preadv(0, NULL, 1, -2) = -1 EINVAL (%m)\n"); + + if (preadv(0, iov, 0, -3) != -1) +@@ -132,6 +133,8 @@ main(void) + return 0; + } + ++DIAG_POP_IGNORE_NONNULL ++ + #else + + SKIP_MAIN_UNDEFINED("HAVE_PREADV") +diff --git a/tests-m32/pwritev.c b/tests-m32/pwritev.c +index ea85397..2b1c67a 100644 +--- a/tests-m32/pwritev.c ++++ b/tests-m32/pwritev.c +@@ -58,6 +58,9 @@ print_iovec(const struct iovec *iov, unsigned int cnt, unsigned int size) + putchar(']'); + } + ++/* for pwritev(0, NULL, 1, -3) */ ++DIAG_PUSH_IGNORE_NONNULL ++ + int + main(void) + { +@@ -109,9 +112,7 @@ main(void) + printf("pwritev(0, %p, 42, -2) = %ld %s (%m)\n", + iov, rc, errno2name()); + +- DIAG_PUSH_IGNORE_NONNULL + rc = pwritev(0, NULL, 1, -3); +- DIAG_POP_IGNORE_NONNULL + printf("pwritev(0, NULL, 1, -3) = %ld %s (%m)\n", + rc, errno2name()); + +@@ -123,6 +124,8 @@ main(void) + return 0; + } + ++DIAG_POP_IGNORE_NONNULL ++ + #else + + SKIP_MAIN_UNDEFINED("HAVE_PWRITEV") +diff --git a/tests-mx32/preadv.c b/tests-mx32/preadv.c +index 3ccefc1..d03dfd0 100644 +--- a/tests-mx32/preadv.c ++++ b/tests-mx32/preadv.c +@@ -42,6 +42,9 @@ print_iovec(const struct iovec *iov, unsigned int cnt) + putchar(']'); + } + ++/* for preadv(0, NULL, 1, -2) */ ++DIAG_PUSH_IGNORE_NONNULL ++ + int + main(void) + { +@@ -66,10 +69,8 @@ main(void) + printf("preadv(0, [{iov_base=%p, iov_len=%zu}], 1, -1) = " + "-1 EINVAL (%m)\n", iov->iov_base, iov->iov_len); + +- DIAG_PUSH_IGNORE_NONNULL + if (preadv(0, NULL, 1, -2) != -1) + perror_msg_and_fail("preadv"); +- DIAG_POP_IGNORE_NONNULL + printf("preadv(0, NULL, 1, -2) = -1 EINVAL (%m)\n"); + + if (preadv(0, iov, 0, -3) != -1) +@@ -132,6 +133,8 @@ main(void) + return 0; + } + ++DIAG_POP_IGNORE_NONNULL ++ + #else + + SKIP_MAIN_UNDEFINED("HAVE_PREADV") +diff --git a/tests-mx32/pwritev.c b/tests-mx32/pwritev.c +index ea85397..2b1c67a 100644 +--- a/tests-mx32/pwritev.c ++++ b/tests-mx32/pwritev.c +@@ -58,6 +58,9 @@ print_iovec(const struct iovec *iov, unsigned int cnt, unsigned int size) + putchar(']'); + } + ++/* for pwritev(0, NULL, 1, -3) */ ++DIAG_PUSH_IGNORE_NONNULL ++ + int + main(void) + { +@@ -109,9 +112,7 @@ main(void) + printf("pwritev(0, %p, 42, -2) = %ld %s (%m)\n", + iov, rc, errno2name()); + +- DIAG_PUSH_IGNORE_NONNULL + rc = pwritev(0, NULL, 1, -3); +- DIAG_POP_IGNORE_NONNULL + printf("pwritev(0, NULL, 1, -3) = %ld %s (%m)\n", + rc, errno2name()); + +@@ -123,6 +124,8 @@ main(void) + return 0; + } + ++DIAG_POP_IGNORE_NONNULL ++ + #else + + SKIP_MAIN_UNDEFINED("HAVE_PWRITEV") +-- +2.1.4 + diff --git a/SOURCES/0150-filter_qualify-free-allocated-data-on-the-error-path.patch b/SOURCES/0150-filter_qualify-free-allocated-data-on-the-error-path.patch new file mode 100644 index 0000000..7043b2f --- /dev/null +++ b/SOURCES/0150-filter_qualify-free-allocated-data-on-the-error-path.patch @@ -0,0 +1,77 @@ +From a034f8a50cbe15d250457ed2eefbf9db059f724f Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Wed, 18 Aug 2021 21:48:38 +0200 +Subject: [PATCH 147/150] filter_qualify: free allocated data on the error path + exit of parse_poke_token + +While not terribly required due to the fact that issues with option +parsing lead to program termination, these changes avoid leaking data +allocated in the function's scope and not stored elsewhere, which might +come handy if it ever be used dynamically during the runtime. + +This also has been reported as resource leaks by covscan, and these +changes should calm it. + +* src/filter_qualify.c (parse_poke_token): Go to err label instead of +returning right away; free poke->data, poke, and str_tokenized before +returning false. + +References: https://bugzilla.redhat.com/show_bug.cgi?id=1995509 +--- + src/filter_qualify.c | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +diff --git a/src/filter_qualify.c b/src/filter_qualify.c +index df05496..a1a6471 100644 +--- a/src/filter_qualify.c ++++ b/src/filter_qualify.c +@@ -169,34 +169,40 @@ parse_poke_token(const char *input, struct inject_opts *fopts, bool isenter) + poke->is_enter = isenter; + + if ((val = STR_STRIP_PREFIX(token, "@arg")) == token) +- return false; ++ goto err; + if ((val[0] >= '1') && (val[0] <= '7')) { + poke->arg_no = val[0] - '0'; + } else { +- return false; ++ goto err; + } + if (val[1] != '=') +- return false; ++ goto err; + val += 2; + + data_len = strlen(val); + if ((data_len == 0) || (data_len % 2) || (data_len > 2048)) +- return false; ++ goto err; + data_len /= 2; + poke->data_len = data_len; + poke->data = xmalloc(data_len); + + for (size_t i = 0; i < data_len; i++) + if (sscanf(&val[2 * i], "%2hhx", &poke->data[i]) != 1) +- return false; ++ goto err; + + if (poke_add(fopts->data.poke_idx, poke)) +- return false; ++ goto err; + } + free(str_tokenized); + + fopts->data.flags |= flag; + return true; ++ ++err: ++ free(poke->data); ++ free(poke); ++ free(str_tokenized); ++ return false; + } + + static bool +-- +2.1.4 + diff --git a/SOURCES/0151-macros-expand-BIT-macros-add-MASK-macros-add-_SAFE-m.patch b/SOURCES/0151-macros-expand-BIT-macros-add-MASK-macros-add-_SAFE-m.patch new file mode 100644 index 0000000..6ee45fb --- /dev/null +++ b/SOURCES/0151-macros-expand-BIT-macros-add-MASK-macros-add-_SAFE-m.patch @@ -0,0 +1,70 @@ +From 3f3dd44f1964c54b55e8c84343579bd7c1924df5 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Wed, 18 Aug 2021 21:49:12 +0200 +Subject: [PATCH 148/150] macros: expand BIT macros, add MASK macros; add + *_SAFE macros + +These macros might make reading a code that often converts between powers +of 2 and values/masks a bit easier; moreover, the *_SAFE versions should +help in cases where the shift values are expected to be equal to the type +bit width (which lead to UB otherwise). + +Switching from BIT to BIT32 should also clarify bitness, which may be somewhat +murky at times (cf. printxval, printflags, and printxvals). + +* src/macros.h [!BIT] (BIT): Rename to... +[!BIT32] (BIT32): ...this. +[!BIT64] (BIT64): New macro. +[!MASK32] (MASK32): Likewise. +[!MASK64] (MASK64): Likewise. +(BIT32_SAFE, BIT64_SAFE, MASK32_SAFE, MASK64_SAFE): New macros. +(FLAG): Use BIT32. +--- + src/macros.h | 30 +++++++++++++++++++++++++++--- + 1 file changed, 27 insertions(+), 3 deletions(-) + +diff --git a/src/macros.h b/src/macros.h +index 467f5d0..2d7a83d 100644 +--- a/src/macros.h ++++ b/src/macros.h +@@ -78,10 +78,34 @@ is_filled(const char *ptr, char fill, size_t size) + # define IS_ARRAY_ZERO(arr_) \ + is_filled((const char *) (arr_), 0, sizeof(arr_) + MUST_BE_ARRAY(arr_)) + +-# ifndef BIT +-# define BIT(x_) (1U << (x_)) ++# ifndef BIT32 ++# define BIT32(x_) (1U << (x_)) + # endif + +-# define FLAG(name_) name_ = BIT(name_##_BIT) ++# ifndef BIT64 ++# define BIT64(x_) (1ULL << (x_)) ++# endif ++ ++# ifndef MASK32 ++# define MASK32(x_) (BIT32(x_) - 1U) ++# endif ++ ++# ifndef MASK64 ++# define MASK64(x_) (BIT64(x_) - 1ULL) ++# endif ++ ++/* ++ * "Safe" versions that avoid UB for values that are >= type bit size ++ * (the usually expected behaviour of the bit shift in that case is zero, ++ * but at least powerpc is notorious for returning the input value when shift ++ * by 64 bits is performed). ++ */ ++ ++# define BIT32_SAFE(x_) ((x_) < 32 ? BIT32(x_) : 0) ++# define BIT64_SAFE(x_) ((x_) < 64 ? BIT64(x_) : 0) ++# define MASK32_SAFE(x_) (BIT32_SAFE(x_) - 1U) ++# define MASK64_SAFE(x_) (BIT64_SAFE(x_) - 1ULL) ++ ++# define FLAG(name_) name_ = BIT32(name_##_BIT) + + #endif /* !STRACE_MACROS_H */ +-- +2.1.4 + diff --git a/SOURCES/0152-trie-use-BIT-and-MASK-macros.patch b/SOURCES/0152-trie-use-BIT-and-MASK-macros.patch new file mode 100644 index 0000000..91c6fe3 --- /dev/null +++ b/SOURCES/0152-trie-use-BIT-and-MASK-macros.patch @@ -0,0 +1,151 @@ +From 8ef5456338a947944cc03b95c22c837af5884ddc Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Wed, 18 Aug 2021 21:51:22 +0200 +Subject: [PATCH 149/150] trie: use BIT* and MASK* macros + +This makes reading the code a bit easier. It also solves some issues +where there is a hypothertical possibility of having bit shifts of size +64, by virtue of using the *_SAFE macros (that should silence some +reported "left shifting by more than 63 bits has undefined behavior" +covscan issues). + +* src/trie.c (trie_create): Use BIT32, MASK64. +(trie_create_data_block): Use BIT32, change iterator variable type +to size_t. +(trie_get_node): Use BIT64, MASK64. +(trie_data_block_calc_pos): Use BIT32, MASK64, MASK64_SAFE. +(trie_iterate_keys_node): Use BIT64, MASK64, MASK64_SAFE. +(trie_free_node): Use BIT64. +--- + src/trie.c | 34 +++++++++++++++++----------------- + 1 file changed, 17 insertions(+), 17 deletions(-) + +diff --git a/src/trie.c b/src/trie.c +index 586ff25..0a231e4 100644 +--- a/src/trie.c ++++ b/src/trie.c +@@ -15,6 +15,7 @@ + #include + + #include "trie.h" ++#include "macros.h" + #include "xmalloc.h" + + static const uint8_t ptr_sz_lg = (sizeof(void *) == 8 ? 6 : 5); +@@ -87,7 +88,7 @@ trie_create(uint8_t key_size, uint8_t item_size_lg, uint8_t node_key_bits, + / t->node_key_bits; + + if (item_size_lg != 6) +- t->empty_value &= (((uint64_t) 1 << (1 << t->item_size_lg)) - 1); ++ t->empty_value &= MASK64(BIT32(t->item_size_lg)); + + return t; + } +@@ -96,8 +97,8 @@ static void * + trie_create_data_block(struct trie *t) + { + uint64_t fill_value = t->empty_value; +- for (int i = 1; i < 1 << (6 - t->item_size_lg); i++) { +- fill_value <<= (1 << t->item_size_lg); ++ for (size_t i = 1; i < BIT32(6 - t->item_size_lg); i++) { ++ fill_value <<= BIT32(t->item_size_lg); + fill_value |= t->empty_value; + } + +@@ -105,7 +106,7 @@ trie_create_data_block(struct trie *t) + if (sz < 6) + sz = 6; + +- size_t count = 1 << (sz - 6); ++ size_t count = BIT32(sz - 6); + uint64_t *data_block = xcalloc(count, 8); + + for (size_t i = 0; i < count; i++) +@@ -119,7 +120,7 @@ trie_get_node(struct trie *t, uint64_t key, bool auto_create) + { + void **cur_node = &(t->data); + +- if (t->key_size < 64 && key > (uint64_t) 1 << t->key_size) ++ if (t->key_size < 64 && key > MASK64(t->key_size)) + return NULL; + + for (uint8_t cur_depth = 0; cur_depth <= t->max_depth; cur_depth++) { +@@ -133,13 +134,13 @@ trie_get_node(struct trie *t, uint64_t key, bool auto_create) + if (cur_depth == t->max_depth) + *cur_node = trie_create_data_block(t); + else +- *cur_node = xcalloc(1 << sz, 1); ++ *cur_node = xcalloc(BIT64(sz), 1); + } + + if (cur_depth == t->max_depth) + break; + +- size_t pos = (key >> offs) & ((1 << (sz - ptr_sz_lg)) - 1); ++ size_t pos = (key >> offs) & MASK64(sz - ptr_sz_lg); + cur_node = (((void **) (*cur_node)) + pos); + } + +@@ -152,7 +153,7 @@ trie_data_block_calc_pos(struct trie *t, uint64_t key, + { + uint64_t key_mask; + +- key_mask = (1 << t->data_block_key_bits) - 1; ++ key_mask = MASK64(t->data_block_key_bits); + *pos = (key & key_mask) >> (6 - t->item_size_lg); + + if (t->item_size_lg == 6) { +@@ -161,10 +162,10 @@ trie_data_block_calc_pos(struct trie *t, uint64_t key, + return; + } + +- key_mask = (1 << (6 - t->item_size_lg)) - 1; +- *offs = (key & key_mask) * (1 << t->item_size_lg); ++ key_mask = MASK64(6 - t->item_size_lg); ++ *offs = (key & key_mask) << t->item_size_lg; + +- *mask = (((uint64_t) 1 << (1 << t->item_size_lg)) - 1) << *offs; ++ *mask = MASK64_SAFE(BIT32(t->item_size_lg)) << *offs; + } + + bool +@@ -211,7 +212,7 @@ trie_iterate_keys_node(struct trie *t, + return 0; + + if (t->key_size < 64) { +- uint64_t key_max = ((uint64_t) 1 << t->key_size) - 1; ++ uint64_t key_max = MASK64(t->key_size); + if (end > key_max) + end = key_max; + } +@@ -228,15 +229,14 @@ trie_iterate_keys_node(struct trie *t, + t->key_size : + trie_get_node_bit_offs(t, depth - 1); + +- uint64_t first_key_in_node = start & +- (uint64_t) -1 << parent_node_bit_off; ++ uint64_t first_key_in_node = start & ~MASK64_SAFE(parent_node_bit_off); + + uint8_t node_bit_off = trie_get_node_bit_offs(t, depth); + uint8_t node_key_bits = parent_node_bit_off - node_bit_off; +- uint64_t mask = ((uint64_t) 1 << (node_key_bits)) - 1; ++ uint64_t mask = MASK64_SAFE(node_key_bits); + uint64_t start_index = (start >> node_bit_off) & mask; + uint64_t end_index = (end >> node_bit_off) & mask; +- uint64_t child_key_count = (uint64_t) 1 << node_bit_off; ++ uint64_t child_key_count = BIT64(node_bit_off); + + uint64_t count = 0; + +@@ -274,7 +274,7 @@ trie_free_node(struct trie *t, void *node, uint8_t depth) + if (depth >= t->max_depth) + goto free_node; + +- size_t sz = 1 << (trie_get_node_size(t, depth) - ptr_sz_lg); ++ size_t sz = BIT64(trie_get_node_size(t, depth) - ptr_sz_lg); + for (size_t i = 0; i < sz; i++) + trie_free_node(t, ((void **) node)[i], depth + 1); + +-- +2.1.4 + diff --git a/SOURCES/0153-tee-rewrite-num_params-access-in-tee_fetch_buf_data.patch b/SOURCES/0153-tee-rewrite-num_params-access-in-tee_fetch_buf_data.patch new file mode 100644 index 0000000..56aa8a1 --- /dev/null +++ b/SOURCES/0153-tee-rewrite-num_params-access-in-tee_fetch_buf_data.patch @@ -0,0 +1,52 @@ +From 3a68f90c2a5a208b475cc2014f85ae04541ec5b6 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Fri, 20 Aug 2021 21:31:01 +0200 +Subject: [PATCH 150/150] tee: rewrite num_params access in tee_fetch_buf_data + +Pointer to num_params field of the fetched structure is passed in a +separate function argument which provokes covscan complaints about +uninitialised accesses and also tingles my aliasing rules senses. +Rewrite to access it via the arg_struct argument which is fetched +earlier in the function flow. + +* src/tee.c (TEE_FETCH_BUF_DATA): Change &arg_.num_params +to offsetof(typeof(arg_), num_params). +(tee_fetch_buf_data): Accept offset of the num_params field instead +of pointer to it; reconstruct the num_params pointer using it. +--- + src/tee.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/src/tee.c b/src/tee.c +index f9eda52..d7e9b15 100644 +--- a/src/tee.c ++++ b/src/tee.c +@@ -33,7 +33,7 @@ struct tee_ioctl_shm_register_fd_data { + + #define TEE_FETCH_BUF_DATA(buf_, arg_, params_) \ + tee_fetch_buf_data(tcp, arg, &buf_, sizeof(arg_), \ +- &arg_, &arg_.num_params, \ ++ &arg_, offsetof(typeof(arg_), num_params), \ + params_) + + /* session id is printed as 0x%x in libteec */ +@@ -56,7 +56,7 @@ tee_fetch_buf_data(struct tcb *const tcp, + struct tee_ioctl_buf_data *buf, + size_t arg_size, + void *arg_struct, +- unsigned *num_params, ++ size_t num_params_offs, + uint64_t *params) + { + if (umove_or_printaddr(tcp, arg, buf)) +@@ -69,6 +69,7 @@ tee_fetch_buf_data(struct tcb *const tcp, + tee_print_buf(buf); + return RVAL_IOCTL_DECODED; + } ++ uint32_t *num_params = (uint32_t *) (arg_struct + num_params_offs); + if (entering(tcp) && + (arg_size + TEE_IOCTL_PARAM_SIZE(*num_params) != buf->buf_len)) { + /* +-- +2.1.4 + diff --git a/SOURCES/2000-strace-provide-O_TMPFILE-fallback-definition.patch b/SOURCES/2000-strace-provide-O_TMPFILE-fallback-definition.patch new file mode 100644 index 0000000..f31cf31 --- /dev/null +++ b/SOURCES/2000-strace-provide-O_TMPFILE-fallback-definition.patch @@ -0,0 +1,19 @@ +Some buildroots provide version of kernel-headers package that do not yet +contains O_TMPFILE definition. Since (looks like) there were none discrepancies +in O_TMPFILE definition in RHEL, work that around by providing a fallback +definition of O_TMPFILE. +Index: strace-5.2/src/open.c +=================================================================== +--- strace-5.2.orig/src/open.c 2019-07-11 19:51:22.000000000 +0200 ++++ strace-5.2/src/open.c 2019-07-22 17:49:41.508766666 +0200 +@@ -32,6 +32,10 @@ + #include + #include + ++#ifndef O_TMPFILE ++# define O_TMPFILE (__O_TMPFILE | O_DIRECTORY) ++#endif ++ + #include "xlat/open_access_modes.h" + #include "xlat/open_mode_flags.h" + #include "xlat/open_resolve_flags.h" diff --git a/SOURCES/2001-limit-qual_fault-scope-on-aarch64.patch b/SOURCES/2001-limit-qual_fault-scope-on-aarch64.patch new file mode 100644 index 0000000..5538d20 --- /dev/null +++ b/SOURCES/2001-limit-qual_fault-scope-on-aarch64.patch @@ -0,0 +1,57 @@ +Index: strace-5.7/tests/qual_fault.test +=================================================================== +--- strace-5.7.orig/tests/qual_fault.test 2020-06-02 10:41:25.870177356 +0200 ++++ strace-5.7/tests/qual_fault.test 2020-06-02 10:48:33.284302800 +0200 +@@ -83,19 +83,34 @@ + done + } + +-for err in '' ENOSYS 22 einval; do ++case "$STRACE_ARCH" in ++ aarch64) ++ ERRS='EnoSys 22' ++ NUMBERS1='2' ++ NUMBERS2='3' ++ NUMBERS3='5' ++ ;; ++ *) ++ ERRS='ENOSYS 22 einval' ++ NUMBERS1='1 2 3 5 7 11' ++ NUMBERS2='1 2 3 5 7 11' ++ NUMBERS3='1 2 3 5 7 11' ++ ;; ++esac ++ ++for err in '' $(echo $ERRS); do + for fault in writev desc,51; do + check_fault_injection \ + writev $fault "$err" '' '' '' 1 -efault=chdir + check_fault_injection \ + writev $fault "$err" '' '' '' 1 -efault=chdir -efault=none +- for F in 1 2 3 5 7 11; do ++ for F in $(echo $NUMBERS1); do + check_fault_injection \ + writev $fault "$err" $F '' '' 1 + check_fault_injection \ + writev $fault "$err" $F '' + 1 + +- for L in 1 2 3 5 7 11; do ++ for L in $(echo $NUMBERS2); do + [ "$L" -ge "$F" ] || + continue + check_fault_injection \ +@@ -104,12 +119,12 @@ + writev $fault "$err" $F $L + 1 + done + +- for S in 1 2 3 5 7 11; do ++ for S in $(echo $NUMBERS2); do + check_fault_injection \ + writev $fault "$err" $F '' $S 1 + check_fault_injection \ + writev $fault "$err" $F '' $S 4 +- for L in 1 2 3 5 7 11; do ++ for L in $(echo $NUMBERS3); do + [ "$L" -ge "$F" ] || + continue + check_fault_injection \ diff --git a/SOURCES/2003-undef-ARRAY_SIZE.patch b/SOURCES/2003-undef-ARRAY_SIZE.patch new file mode 100644 index 0000000..1ac46a4 --- /dev/null +++ b/SOURCES/2003-undef-ARRAY_SIZE.patch @@ -0,0 +1,17 @@ +Index: strace-5.12/src/unwind.c +=================================================================== +--- strace-5.12.orig/src/unwind.c 2018-12-10 01:00:00.000000000 +0100 ++++ strace-5.12/src/unwind.c 2020-06-02 11:13:42.777871147 +0200 +@@ -9,6 +9,12 @@ + #include "unwind.h" + + #ifdef USE_DEMANGLE ++/* ++ * demangle.h defines ARRAY_SIZE without proper guard, and its definition ++ * is "good enough" for us. ++ */ ++#undef ARRAY_SIZE ++ + # if defined HAVE_DEMANGLE_H + # include + # elif defined HAVE_LIBIBERTY_DEMANGLE_H diff --git a/SOURCES/2005-mark-ipc_shm-ipc_msg-XFAIL-on-ppc64.patch b/SOURCES/2005-mark-ipc_shm-ipc_msg-XFAIL-on-ppc64.patch new file mode 100644 index 0000000..56d8a3b --- /dev/null +++ b/SOURCES/2005-mark-ipc_shm-ipc_msg-XFAIL-on-ppc64.patch @@ -0,0 +1,73 @@ +--- i/tests/Makefile.am ++++ w/tests/Makefile.am +@@ -537,6 +537,10 @@ MISC_TESTS = \ + + TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(STACKTRACE_TESTS) + ++## See https://bugzilla.redhat.com/1978412 ++XFAIL_TESTS_powerpc64 = ipc_shm.gen.test ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test ipc_shm-Xverbose.gen.test ++XFAIL_TESTS_powerpc64le = ipc_msg.gen.test ipc_msg-Xabbrev.gen.test ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test ++ + XFAIL_TESTS_ = + XFAIL_TESTS_m32 = $(STACKTRACE_XFAIL_TESTS) + XFAIL_TESTS_mx32 = $(STACKTRACE_XFAIL_TESTS) +--- i/tests-m32/Makefile.am ++++ w/tests-m32/Makefile.am +@@ -537,6 +537,10 @@ MISC_TESTS = \ + + TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(STACKTRACE_TESTS) + ++## See https://bugzilla.redhat.com/1978412 ++XFAIL_TESTS_powerpc64 = ipc_shm.gen.test ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test ipc_shm-Xverbose.gen.test ++XFAIL_TESTS_powerpc64le = ipc_msg.gen.test ipc_msg-Xabbrev.gen.test ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test ++ + XFAIL_TESTS_ = + XFAIL_TESTS_m32 = $(STACKTRACE_XFAIL_TESTS) + XFAIL_TESTS_mx32 = $(STACKTRACE_XFAIL_TESTS) +--- i/tests-mx32/Makefile.am ++++ w/tests-mx32/Makefile.am +@@ -537,6 +537,10 @@ MISC_TESTS = \ + + TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(STACKTRACE_TESTS) + ++## See https://bugzilla.redhat.com/1978412 ++XFAIL_TESTS_powerpc64 = ipc_shm.gen.test ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test ipc_shm-Xverbose.gen.test ++XFAIL_TESTS_powerpc64le = ipc_msg.gen.test ipc_msg-Xabbrev.gen.test ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test ++ + XFAIL_TESTS_ = + XFAIL_TESTS_m32 = $(STACKTRACE_XFAIL_TESTS) + XFAIL_TESTS_mx32 = $(STACKTRACE_XFAIL_TESTS) +--- i/tests/Makefile.in.old 2021-07-01 21:55:52.509065912 +0200 ++++ w/tests/Makefile.in 2021-07-01 21:56:15.296867604 +0200 +@@ -7497,6 +7497,8 @@ + umovestr_cached.test \ + # end of MISC_TESTS + ++XFAIL_TESTS_powerpc64 = ipc_shm.gen.test ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test ipc_shm-Xverbose.gen.test ++XFAIL_TESTS_powerpc64le = ipc_msg.gen.test ipc_msg-Xabbrev.gen.test ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test + XFAIL_TESTS_ = + XFAIL_TESTS_m32 = $(STACKTRACE_XFAIL_TESTS) + XFAIL_TESTS_mx32 = $(STACKTRACE_XFAIL_TESTS) +--- i/tests-m32/Makefile.in.old 2021-07-01 21:46:36.524236568 +0200 ++++ w/tests-m32/Makefile.in 2021-07-01 21:49:15.460241800 +0200 +@@ -7497,6 +7497,8 @@ + umovestr_cached.test \ + # end of MISC_TESTS + ++XFAIL_TESTS_powerpc64 = ipc_shm.gen.test ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test ipc_shm-Xverbose.gen.test ++XFAIL_TESTS_powerpc64le = ipc_msg.gen.test ipc_msg-Xabbrev.gen.test ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test + XFAIL_TESTS_ = + XFAIL_TESTS_m32 = $(STACKTRACE_XFAIL_TESTS) + XFAIL_TESTS_mx32 = $(STACKTRACE_XFAIL_TESTS) +--- i/tests-mx32/Makefile.in.old 2021-07-01 21:46:36.524236568 +0200 ++++ w/tests-mx32/Makefile.in 2021-07-01 21:49:15.460241800 +0200 +@@ -7497,6 +7497,8 @@ + umovestr_cached.test \ + # end of MISC_TESTS + ++XFAIL_TESTS_powerpc64 = ipc_shm.gen.test ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test ipc_shm-Xverbose.gen.test ++XFAIL_TESTS_powerpc64le = ipc_msg.gen.test ipc_msg-Xabbrev.gen.test ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test + XFAIL_TESTS_ = + XFAIL_TESTS_m32 = $(STACKTRACE_XFAIL_TESTS) + XFAIL_TESTS_mx32 = $(STACKTRACE_XFAIL_TESTS) + diff --git a/SPECS/strace.spec b/SPECS/strace.spec new file mode 100644 index 0000000..3e229dc --- /dev/null +++ b/SPECS/strace.spec @@ -0,0 +1,755 @@ +%{?scl:%{?scl_package:%scl_package strace}} + +Summary: Tracks and displays system calls associated with a running process +Name: %{?scl_prefix}strace +Version: 5.13 +Release: 3%{?dist} +# The test suite is GPLv2+, all the rest is LGPLv2.1+. +License: LGPL-2.1+ and GPL-2.0+ +Group: Development/Debuggers +URL: https://strace.io +Source: https://strace.io/files/%{version}/strace-%{version}.tar.xz + +%define alternatives_cmd %{!?scl:%{_sbindir}}%{?scl:%{_root_sbindir}}/alternatives +%define alternatives_cmdline %{alternatives_cmd}%{?scl: --altdir %{_sysconfdir}/alternatives --admindir %{_scl_root}/var/lib/alternatives} + +BuildRequires: libacl-devel, time +%{?scl:Requires:%scl_runtime} + +BuildRequires: gcc gzip make + +# Install Bluetooth headers for AF_BLUETOOTH sockets decoding. +%if 0%{?fedora} >= 18 || 0%{?centos} >= 6 || 0%{?rhel} >= 6 || 0%{?suse_version} >= 1200 +BuildRequires: pkgconfig(bluez) +%endif + +BuildRequires: %{?scl_prefix}elfutils-devel, %{?scl_prefix}binutils-devel +BuildRequires: libselinux-devel +%{?!buildroot:BuildRoot: %_tmppath/buildroot-%name-%version-%release} + +# OBS compatibility +%{?!buildroot:BuildRoot: %_tmppath/buildroot-%name-%version-%release} +%define maybe_use_defattr %{?suse_version:%%defattr(-,root,root)} + +# v5.13-6-gba1ca1e "tests: relax -a check in prlimit64 test" +Patch139: 0139-tests-relax-a-check-in-prlimit64-test.patch +# v5.13-5-ge4feb6b "tests: move DIAG_PUSH_IGNORE_NONNULL/DIAG_POP_IGNORE_NONNULL outside main" +Patch140: 0140-tests-move-DIAG_PUSH_IGNORE_NONNULL-DIAG_POP_IGNORE_.patch +# v5.13-55-g6b2191f "filter_qualify: free allocated data on the error path exit of parse_poke_token" +Patch150: 0150-filter_qualify-free-allocated-data-on-the-error-path.patch +# v5.13-56-g80dc60c "macros: expand BIT macros, add MASK macros; add *_SAFE macros" +Patch151: 0151-macros-expand-BIT-macros-add-MASK-macros-add-_SAFE-m.patch +# v5.13-58-g94ae5c2 "trie: use BIT* and MASK* macros" +Patch152: 0152-trie-use-BIT-and-MASK-macros.patch +# v5.13-65-g41b753e "tee: rewrite num_params access in tee_fetch_buf_data" +Patch153: 0153-tee-rewrite-num_params-access-in-tee_fetch_buf_data.patch + +## RHEL7-only: headers on some builders do not provide O_TMPFILE +Patch2000: 2000-strace-provide-O_TMPFILE-fallback-definition.patch +## RHEL-only: aarch64 brew builders are extremely slow on qual_fault.test +Patch2001: 2001-limit-qual_fault-scope-on-aarch64.patch +## RHEL-only: avoid ARRAY_SIZE macro re-definition in libiberty.h +Patch2003: 2003-undef-ARRAY_SIZE.patch +## RHEL7-only: mark ipc_shm.gen test as XFAIL due to +## https://bugzilla.redhat.com/1978412 +Patch2005: 2005-mark-ipc_shm-ipc_msg-XFAIL-on-ppc64.patch + +# Fallback definitions for make_build/make_install macros +%{?!__make: %global __make %_bindir/make} +%{?!__install: %global __install %_bindir/install} +%{?!make_build: %global make_build %__make %{?_smp_mflags}} +%{?!make_install: %global make_install %__make install DESTDIR="%{?buildroot}" INSTALL="%__install -p"} + +%description +The strace program intercepts and records the system calls called and +received by a running process. Strace can print a record of each +system call, its arguments and its return value. Strace is useful for +diagnosing problems and debugging, as well as for instructional +purposes. + +Install strace if you need a tool to track the system calls made and +received by a process. + +%prep +%setup -q -n strace-%{version} + +%patch139 -p1 +%patch140 -p1 +%patch150 -p1 +%patch151 -p1 +%patch152 -p1 +%patch153 -p1 + +%patch2000 -p1 +%patch2001 -p1 +%patch2003 -p1 +%patch2005 -p1 + +echo -n %version-%release > .tarball-version +echo -n 2020 > .year +echo -n 2021-05-14 > doc/.strace.1.in.date + +%build +echo 'BEGIN OF BUILD ENVIRONMENT INFORMATION' +uname -a |head -1 +libc="$(ldd /bin/sh |sed -n 's|^[^/]*\(/[^ ]*/libc\.so[^ ]*\).*|\1|p' |head -1)" +$libc |head -1 +file -L /bin/sh +gcc --version |head -1 +ld --version |head -1 +kver="$(printf '%%s\n%%s\n' '#include ' 'LINUX_VERSION_CODE' | gcc -E -P -)" +printf 'kernel-headers %%s.%%s.%%s\n' $(($kver/65536)) $(($kver/256%%256)) $(($kver%%256)) +echo 'END OF BUILD ENVIRONMENT INFORMATION' + +LDFLAGS="$RPM_LD_FLAGS -L%{_libdir} -L%{_libdir}/elfutils" +export LDLFAGS + +# -DHAVE_S390_COMPAT_REGS is needed due to lack of v3.10-rc1~201^2~11 +CFLAGS=" $RPM_OPT_FLAGS $LDFLAGS " +# Removing explicit -m64 as it breaks mpers +[ "x${CFLAGS#* -m64 }" = "x${CFLAGS}" ] || CFLAGS=$(echo "$CFLAGS" | sed 's/ -m64 / /g') +export CFLAGS + +CPPFLAGS=" -isystem %{_includedir} %{optflags} " +# Removing explicit -m64 as it breaks mpers +[ "x${CPPFLAGS#* -m64 }" = "x${CPPFLAGS}" ] || CPPFLAGS=$(echo "$CPPFLAGS" | sed 's/ -m64 / /g') +export CPPFLAGS + +CFLAGS_FOR_BUILD="$RPM_OPT_FLAGS"; export CFLAGS_FOR_BUILD +# ac_cv_member_struct_perf_event_attr_context_switch=no is due to +# https://bugzilla.redhat.com/show_bug.cgi?id=1404539 +%configure --enable-mpers=check --with-libdw ac_cv_member_struct_perf_event_attr_context_switch=no +%make_build + +%install +%make_install + +# some say uncompressed changelog files are too big +for f in ChangeLog ChangeLog-CVS; do + gzip -9n < "$f" > "$f".gz & +done +wait + +%check +# This is needed since patch does not set x bit to the newly created files +chmod u+x tests/*.test tests-m32/*.test tests-mx32/*.test + +%{buildroot}%{_bindir}/strace -V + +# Skip tests on s390x el6 kernel, test failures there are covered +# by the following issues: +# * https://bugzilla.redhat.com/show_bug.cgi?id=1220802#c6 +# * Absence of Linux commit v3.2-rc1~109^2~34 +uname_r="$(uname -r)" +if [ "x${uname_r#2.6.32}" != "x${uname_r}" ] && \ + [ "x${uname_r%s390x}" != "x${uname_r}" ] +then + echo "Skipping tests, kernel (${uname_r}) is too broken" +else + # We have to limit concurrent execution of tests as some time-sensitive + # tests start to fail if the reported time is way too off + # from the expected one. + %make_build -j2 -k check VERBOSE=1 V=1 TIMEOUT_DURATION=5400 + echo 'BEGIN OF TEST SUITE INFORMATION' + tail -n 99999 -- tests*/test-suite.log tests*/ksysent.gen.log + find tests* -type f -name '*.log' -print0 | + xargs -r0 grep -H '^KERNEL BUG:' -- ||: + echo 'END OF TEST SUITE INFORMATION' +fi + + +%files +%maybe_use_defattr +%doc CREDITS ChangeLog.gz ChangeLog-CVS.gz COPYING LGPL-2.1-or-later NEWS README +%{_bindir}/strace +%{_bindir}/strace-log-merge +%{_mandir}/man1/* + +%changelog +* Mon Aug 23 2021 Eugene Syromiatnikov - 5.13-3 +- Address some issues reported by covscan (#1996690). + +* Tue Jul 20 2021 Eugene Syromiatnikov - 5.13-1 +- Rebase to v5.13. + +* Fri May 14 2021 Eugene Syromiatnikov - 5.12-1 +- Rebase to v5.12; drop upstream patches on top of 5.7 (#1958328). + +* Wed Sep 09 2020 Eugene Syromiatnikov - 5.7-3 +- Add PID namespace translation support (#1804334). + +* Wed Aug 26 2020 Eugene Syromiatnikov - 5.7-2 +- Explicitly add BuildRequires: bzip2-devel as -ldw needs -lbz2 (#1870580). + +* Tue Jul 28 2020 Eugene Syromiatnikov - 5.7-1 +- Rebase to v5.7; drop upstream patches on top of 5.1 (#1861328). + +* Mon Jan 27 2020 Eugene Syromiatnikov - 5.1-7 +- Do not depend on kernel headers for decoding (#1758201). + +* Mon Jan 27 2020 Eugene Syromiatnikov - 5.1-6 +- Fix expected alignment for IPC tests (#1795273): + 4377e3a1 "tests: fix expected output for some ipc tests", and + a75c7c4b "tests: fix -a argument in ipc_msgbuf-Xraw test". + +* Mon Jan 27 2020 Eugene Syromiatnikov - 5.1-5 +- Fix printing stack traces for early syscalls on process attach (#1790057): + 69b2c33a "unwind-libdw: fix initialization of libdwfl cache", + 35e080ae "syscall: do not capture stack trace while the tracee executes + strace code", and + 8e515c74 "tests: add strace-k-p test". +- Add commit v5.4~97 "xlat: use unsgined type for mount_flags fallback values" + +* Fri Aug 30 2019 Eugene Syromiatnikov - 5.1-4 +- Properly decode struct sockaddr_hci without hci_channel field. +- Include upstream patches that fix issues reported by covscan: + 91281fec "v4l2: avoid shifting left a signed number by 31 bit", + 522ad3a0 "syscall.c: avoid infinite loop in subcalls parsing", and + 9446038e "kvm: avoid bogus vcpu_info assignment in vcpu_register". + +* Thu Aug 29 2019 Eugene Syromiatnikov - 5.1-3 +- Build with Bluetooth headers. +- Resolves: #1746885 + +* Thu Aug 29 2019 Eugene Syromiatnikov - 5.1-2 +- Copy over changes in tests/ioctl_evdev-success.c (from cdd8206a + "tests: test evdev bitset decoding more thoroughly") + to tests-m32/ioctl_evdev-success.c and tests-mx32/ioctl_evdev-success.c +- Resolves: #1746478 + +* Mon Jul 22 2019 Eugene Syromiatnikov - 5.1-1 +- Rebase to v5.1; drop upstream patches on top of 4.24. +- Add upstream commits 7ada13f3 ("evdev: avoid bit vector decoding + on non-successful and 0 return codes"), 96194ed7 ("evdev: fix array size + calculation in decode_bitset_"), and cdd8206a ("tests: test evdev bitset + decoding more thoroughly") as separate patches. +- Resolves: #1666405. + +* Tue Jan 15 2019 Eugene Syromiatnikov - 4.24-5 +- Fix off-by-one errors in indexed xlat handling. +- Remove bogus indexed xlat warning. +- Resolves #1666405. + +* Wed Sep 12 2018 Eugene Syromiatnikov - 4.24-4 +- Add current version of the thread handling unfairness fix. +- Resolves #1610774. + +* Thu Aug 23 2018 Eugene Syromiatnikov - 4.24-3 +- Provide a fallback definition for the O_TMPFILE flag. +- Resolves #1609741. + +* Tue Aug 14 2018 Eugene Syromiatnikov - 4.24-2 +- Remove -DHAVE_S390_COMPAT_REGS=1 from CFLAGS. + +* Tue Aug 14 2018 Eugene Syromiatnikov - 4.24-1 +- Rebase to v4.24. + +* Mon Aug 06 2018 Eugene Syromiatnikov - 4.23-5 +- Provide open mode flags fallback definitions. +- Resolves #1609741. + +* Sun Aug 05 2018 Eugene Syromiatnikov - 4.23-4 +- Enable stack unwinding using DTS version of libelfutils. + +* Wed Jul 18 2018 Eugene Syromiatnikov - 4.23-3 +- Add SCL-specific modifications in order to build for DTS 8.0. +- Resolves #1602841. + +* Mon Jun 18 2018 Eugene Syromiatnikov - 4.23-2 +- Increase test timeout duration. + +* Thu Jun 14 2018 Dmitry V. Levin - 4.23-1 +- v4.22 -> v4.23. +- Enabled libdw backend for -k option (#1568647). + +* Thu Apr 05 2018 Dmitry V. Levin - 4.22-1 +- v4.21 -> v4.22. + +* Tue Feb 13 2018 Dmitry V. Levin - 4.21-1 +- v4.20 -> v4.21. + +* Mon Nov 13 2017 Dmitry V. Levin - 4.20-1 +- v4.19 -> v4.20. + +* Tue Sep 05 2017 Dmitry V. Levin - 4.19-1 +- v4.18 -> v4.19. + +* Wed Jul 05 2017 Dmitry V. Levin - 4.18-1 +- v4.17 -> v4.18. + +* Wed May 24 2017 Dmitry V. Levin - 4.17-1 +- v4.16 -> v4.17. + +* Tue Feb 14 2017 Dmitry V. Levin - 4.16-1 +- v4.15 -> v4.16. + +* Wed Dec 14 2016 Dmitry V. Levin - 4.15-1 +- v4.14-100-g622af42 -> v4.15. + +* Wed Nov 16 2016 Dmitry V. Levin - 4.14.0.100.622a-1 +- v4.14 -> v4.14-100-g622af42: + + implemented syscall fault injection. + +* Tue Oct 04 2016 Dmitry V. Levin - 4.14-1 +- v4.13 -> v4.14: + + added printing of the mode argument of open and openat syscalls + when O_TMPFILE flag is set (#1377846). + +* Tue Jul 26 2016 Dmitry V. Levin - 4.13-1 +- v4.12 -> v4.13. + +* Tue May 31 2016 Dmitry V. Levin - 4.12-1 +- v4.11-163-g972018f -> v4.12. + +* Fri Feb 05 2016 Fedora Release Engineering - 4.11.0.163.9720-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Jan 15 2016 Dmitry V. Levin - 4.11.0.163.9720-1 +- New upstream snapshot v4.11-163-g972018f: + + fixed decoding of syscalls unknown to the kernel on s390/s390x (#1298294). + +* Wed Dec 23 2015 Dmitry V. Levin - 4.11-2 +- Enabled experimental -k option on x86_64 (#1170296). + +* Mon Dec 21 2015 Dmitry V. Levin - 4.11-1 +- New upstream release: + + print nanoseconds along with seconds in stat family syscalls (#1251176). + +* Fri Jun 19 2015 Fedora Release Engineering - 4.10-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon May 11 2015 Marcin Juszkiewicz - 4.10-2 +- Backport set of upstream patches to get it buildable on AArch64 + +* Fri Mar 06 2015 Dmitry V. Levin - 4.10-1 +- New upstream release: + + enhanced ioctl decoding (#902788). + +* Mon Nov 03 2014 Lubomir Rintel - 4.9-3 +- Regenerate ioctl entries with proper kernel headers + +* Mon Aug 18 2014 Fedora Release Engineering - 4.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Aug 15 2014 Dmitry V. Levin - 4.9-1 +- New upstream release: + + fixed build when and conflict (#993384); + + updated CLOCK_* constants (#1088455); + + enabled ppc64le support (#1122323); + + fixed attach to a process on ppc64le (#1129569). + +* Fri Jul 25 2014 Dan HorĂ¡k - 4.8-5 +- update for ppc64 + +* Sun Jun 08 2014 Fedora Release Engineering - 4.8-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Fri Dec 6 2013 Peter Robinson 4.8-3 +- Fix FTBFS + +* Sun Aug 04 2013 Fedora Release Engineering - 4.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Jun 03 2013 Dmitry V. Levin - 4.8-1 +- New upstream release: + + fixed ERESTARTNOINTR leaking to userspace on ancient kernels (#659382); + + fixed decoding of *xattr syscalls (#885233); + + fixed handling of files with 64-bit inode numbers by 32-bit strace (#912790); + + added aarch64 support (#969858). + +* Fri Feb 15 2013 Fedora Release Engineering - 4.7-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Sat Jul 21 2012 Fedora Release Engineering - 4.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed May 02 2012 Dmitry V. Levin 4.7-1 +- New upstream release. + + implemented proper handling of real SIGTRAPs (#162774). + +* Sat Jan 14 2012 Fedora Release Engineering - 4.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Mar 14 2011 Dmitry V. Levin - 4.6-1 +- New upstream release. + + fixed a corner case in waitpid handling (#663547). + +* Wed Feb 09 2011 Fedora Release Engineering - 4.5.20-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Tue Apr 13 2010 Roland McGrath - 4.5.20-1 +- New upstream release, work mostly by Andreas Schwab and Dmitry V. Levin. + + fixed potential stack buffer overflow in select decoder (#556678); + + fixed FTBFS (#539044). + +* Wed Oct 21 2009 Roland McGrath - 4.5.19-1 +- New upstream release, work mostly by Dmitry V. Levin + + exit/kill strace with traced process exitcode/signal (#105371); + + fixed build on ARM EABI (#507576); + + fixed display of 32-bit argv array on 64-bit architectures (#519480); + + fixed display of 32-bit fcntl(F_SETLK) on 64-bit architectures (#471169); + + fixed several bugs in strings decoder, including potential heap + memory corruption (#470529, #478324, #511035). + +* Thu Aug 28 2008 Roland McGrath - 4.5.18-1 +- build fix for newer kernel headers (#457291) +- fix CLONE_VFORK handling (#455078) +- Support new Linux/PPC system call subpage_prot and PROT_SAO flag. +- In sigaction system call, display sa_flags value along with SIG_DFL/SIG_IGN. + +* Mon Jul 21 2008 Roland McGrath - 4.5.17-1 +- handle O_CLOEXEC, MSG_CMSG_CLOEXEC (#365781) +- fix biarch stat64 decoding (#222275) +- fix spurious "..." in printing of environment strings (#358241) +- improve prctl decoding (#364401) +- fix hang wait on exited child with exited child (#354261) +- fix biarch fork/vfork (-f) tracing (#447475) +- fix biarch printing of negative argument kill (#430585) +- fix biarch decoding of error return values (#447587) +- fix -f tracing of CLONE_VFORK (#455078) +- fix ia64 register clobberation in -f tracing (#453438) +- print SO_NODEFER, SA_RESETHAND instead of SA_NOMASK, SA_ONESHOT (#455821) +- fix futex argument decoding (#448628, #448629) + +* Fri Aug 3 2007 Roland McGrath - 4.5.16-1 +- fix multithread issues (#240962, #240961, #247907) +- fix spurious SIGSTOP on early interrupt (#240986) +- fix utime for biarch (#247185) +- fix -u error message (#247170) +- better futex syscall printing (##241467) +- fix argv/envp printing with small -s settings, and for biarch +- new syscalls: getcpu, eventfd, timerfd, signalfd, epoll_pwait, + move_pages, utimensat + +* Tue Jan 16 2007 Roland McGrath - 4.5.15-1 +- biarch fixes (#179740, #192193, #171626, #173050, #218433, #218043) +- fix -ff -o behavior (#204950, #218435, #193808, #219423) +- better quotactl printing (#118696) +- *at, inotify*, pselect6, ppoll and unshare syscalls (#178633, #191275) +- glibc-2.5 build fixes (#209856) +- memory corruption fixes (#200621 +- fix race in child setup under -f (#180293) +- show ipc key values in hex (#198179, #192182) +- disallow -c with -ff (#187847) +- Resolves: RHBZ #179740, RHBZ #192193, RHBZ #204950, RHBZ #218435 +- Resolves: RHBZ #193808, RHBZ #219423, RHBZ #171626, RHBZ #173050 +- Resolves: RHBZ #218433, RHBZ #218043, RHBZ #118696, RHBZ #178633 +- Resolves: RHBZ #191275, RHBZ #209856, RHBZ #200621, RHBZ #180293 +- Resolves: RHBZ #198179, RHBZ #198182, RHBZ #187847 + +* Mon Nov 20 2006 Jakub Jelinek - 4.5.14-4 +- Fix ia64 syscall decoding (#206768) +- Fix build with glibc-2.4.90-33 and up on all arches but ia64 +- Fix build against 2.6.18+ headers + +* Tue Aug 22 2006 Roland McGrath - 4.5.14-3 +- Fix bogus decoding of syscalls >= 300 (#201462, #202620). + +* Fri Jul 14 2006 Jesse Keating - 4.5.14-2 +- rebuild + +* Fri Feb 10 2006 Jesse Keating - 4.5.14-1.2 +- bump again for long double bug on ppc{,64} + +* Tue Feb 07 2006 Jesse Keating - 4.5.14-1.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Mon Jan 16 2006 Roland McGrath - 4.5.14-1 +- Fix biarch decoding of socket syscalls (#174354). +- Fix biarch -e support (#173986). +- Accept numeric syscalls in -e (#174798). +- Fix ipc syscall decoding (#164755). +- Improve msgrcv printing (#164757). +- Man page updates (#165375). +- Improve mount syscall printing (#165377). +- Correct printing of restarting syscalls (#165469). + +* Wed Aug 3 2005 Roland McGrath - 4.5.13-1 +- Fix setsockopt decoding on 64-bit (#162449). +- Fix typos in socket option name strings (#161578). +- Display more IPV6 socket options by name (#162450). +- Don't display inappropriate syscalls for -e trace=file (#159340). +- New selector type -e trace=desc for file-descriptor using calls (#159400). +- Fix 32-bit old_mmap syscall decoding on x86-64 (#162467, #164215). +- Fix errors detaching from multithreaded process on interrupt (#161919). +- Note 4.5.12 fix for crash handling bad signal numbers (#162739). + +* Wed Jun 8 2005 Roland McGrath - 4.5.12-1 +- Fix known syscall recognition for IA32 processes on x86-64 (#158934). +- Fix bad output for ptrace on x86-64 (#159787). +- Fix potential buffer overruns (#151570, #159196). +- Make some diagnostics more consistent (#159308). +- Update PowerPC system calls. +- Better printing for Linux aio system calls. +- Don't truncate statfs64 fields to 32 bits in output (#158243). +- Cosmetic code cleanups (#159688). + +* Tue Mar 22 2005 Roland McGrath - 4.5.11-1 +- Build tweaks. +- Note 4.5.10 select fix (#151570). + +* Mon Mar 14 2005 Roland McGrath - 4.5.10-1 +- Fix select handling on nonstandard fd_set sizes. +- Don't print errors for null file name pointers. +- Fix initial execve output with -i (#143365). + +* Fri Feb 4 2005 Roland McGrath - 4.5.9-2 +- update ia64 syscall list (#146245) +- fix x86_64 syscall argument extraction for 32-bit processes (#146093) +- fix -e signal=NAME parsing (#143362) +- fix x86_64 exit_group syscall handling +- improve socket ioctl printing (#138223) +- code cleanups (#143369, #143370) +- improve mount flags printing (#141932) +- support symbolic printing of x86_64 arch_prctl parameters (#142667) +- fix potential crash in getxattr printing + +* Tue Oct 19 2004 Roland McGrath - 4.5.8-1 +- fix multithreaded exit handling (#132150, #135254) +- fix ioctl name matching (#129808) +- print RTC_* ioctl structure contents (#58606) +- grok epoll_* syscalls (#134463) +- grok new RLIMIT_* values (#133594) +- print struct cmsghdr contents for sendmsg (#131689) +- fix clock_* and timer_* argument output (#131420) + +* Tue Aug 31 2004 Roland McGrath - 4.5.7-2 +- new upstream version, misc fixes and updates (#128091, #129166, #128391, #129378, #130965, #131177) + +* Mon Jul 12 2004 Roland McGrath 4.5.6-1 +- new upstream version, updates ioctl lists (#127398), fixes quotactl (#127393), more ioctl decoding (#126917) + +* Sun Jun 27 2004 Roland McGrath 4.5.5-1 +- new upstream version, fixes x86-64 biarch support (#126547) + +* Tue Jun 15 2004 Elliot Lee 4.5.4-2 +- rebuilt + +* Thu Jun 3 2004 Roland McGrath 4.5.4-0.FC1 +- rebuilt for FC1 update + +* Thu Jun 3 2004 Roland McGrath 4.5.4-1 +- new upstream version, more ioctls (#122257), minor fixes + +* Fri Apr 16 2004 Roland McGrath 4.5.3-1 +- new upstream version, mq_* calls (#120701), -p vs NPTL (#120462), more fixes (#118694, #120541, #118685) + +* Tue Mar 02 2004 Elliot Lee 4.5.2-1.1 +- rebuilt + +* Mon Mar 1 2004 Roland McGrath 4.5.2-1 +- new upstream version, sched_* calls (#116990), show core flag (#112117) + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Thu Nov 13 2003 Roland McGrath 4.5.1-1 +- new upstream version, more fixes (#108012, #105366, #105359, #105358) + +* Tue Sep 30 2003 Roland McGrath 4.5-3 +- revert bogus s390 fix + +* Thu Sep 25 2003 Roland McGrath 4.5-1.2.1AS +- rebuilt for 2.1AS erratum + +* Wed Sep 24 2003 Roland McGrath 4.5-2 +- rebuilt + +* Wed Sep 24 2003 Roland McGrath 4.5-1 +- new upstream version, more fixes (#101499, #104365) + +* Thu Jul 17 2003 Roland McGrath 4.4.99-2 +- rebuilt + +* Thu Jul 17 2003 Roland McGrath 4.4.99-1 +- new upstream version, groks more new system calls, PF_INET6 sockets + +* Tue Jun 10 2003 Roland McGrath 4.4.98-1 +- new upstream version, more fixes (#90754, #91085) + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Sun Mar 30 2003 Roland McGrath 4.4.96-1 +- new upstream version, handles yet more 2.5 syscalls, x86_64 & ia64 fixes + +* Mon Feb 24 2003 Elliot Lee 4.4.95-2 +- rebuilt + +* Mon Feb 24 2003 Roland McGrath 4.4.95-1 +- new upstream version, fixed getresuid/getresgid (#84959) + +* Wed Feb 19 2003 Roland McGrath 4.4.94-1 +- new upstream version, new option -E to set environment variables (#82392) + +* Wed Jan 22 2003 Tim Powers 4.4.93-2 +- rebuilt + +* Tue Jan 21 2003 Roland McGrath 4.4.93-1 +- new upstream version, fixes ppc and s390 bugs, adds missing ptrace requests + +* Fri Jan 10 2003 Roland McGrath 4.4.91-1 +- new upstream version, fixes -f on x86-64 + +* Fri Jan 10 2003 Roland McGrath 4.4.90-1 +- new upstream version, fixes all known bugs modulo ia64 and s390 issues + +* Fri Jan 03 2003 Florian La Roche 4.4-11 +- add further s390 patch from IBM + +* Wed Nov 27 2002 Tim Powers 4.4-10 +- remove unpackaged files from the buildroot + +* Mon Oct 07 2002 Phil Knirsch 4.4-9.1 +- Added latest s390(x) patch. + +* Fri Sep 06 2002 Karsten Hopp 4.4-9 +- preliminary x86_64 support with an ugly patch to help + debugging. Needs cleanup! + +* Mon Sep 2 2002 Jakub Jelinek 4.4-8 +- newer version of the clone fixing patch (Roland McGrath) +- aio syscalls for i386/ia64/ppc (Ben LaHaise) + +* Wed Aug 28 2002 Jakub Jelinek 4.4-7 +- fix strace -f (Roland McGrath, #68994) +- handle ?et_thread_area, SA_RESTORER (Ulrich Drepper) + +* Fri Jun 21 2002 Jakub Jelinek 4.4-6 +- handle futexes, *xattr, sendfile64, etc. (Ulrich Drepper) +- handle modify_ldt (#66894) + +* Thu May 23 2002 Tim Powers +- automated rebuild + +* Tue Apr 16 2002 Jakub Jelinek 4.4-4 +- fix for the last patch by Jeff Law (#62591) + +* Mon Mar 4 2002 Preston Brown 4.4-3 +- integrate patch from Jeff Law to eliminate hang tracing threads + +* Sat Feb 23 2002 Florian La Roche +- minor update from debian tar-ball + +* Wed Jan 02 2002 Florian La Roche +- update to 4.4 + +* Sun Jul 22 2001 Florian La Roche +- disable s390 patches, they are already included + +* Wed Jul 18 2001 Preston Brown 4.3-1 +- new upstream version. Seems to have integrated most new syscalls +- tracing threaded programs is now functional. + +* Mon Jun 11 2001 Than Ngo +- port s390 patches from IBM + +* Wed May 16 2001 Nalin Dahyabhai +- modify new syscall patch to allocate enough heap space in setgroups32() + +* Wed Feb 14 2001 Jakub Jelinek +- #include in addition to + +* Fri Jan 26 2001 Karsten Hopp +- clean up conflicting patches. This happened only + when building on S390 + +* Fri Jan 19 2001 Bill Nottingham +- update to CVS, reintegrate ia64 support + +* Fri Dec 8 2000 Bernhard Rosenkraenzer +- Get S/390 support into the normal package + +* Sat Nov 18 2000 Florian La Roche +- added S/390 patch from IBM, adapting it to not conflict with + IA64 patch + +* Sat Aug 19 2000 Jakub Jelinek +- doh, actually apply the 2.4 syscalls patch +- make it compile with 2.4.0-test7-pre4+ headers, add + getdents64 and fcntl64 + +* Thu Aug 3 2000 Jakub Jelinek +- add a bunch of new 2.4 syscalls (#14036) + +* Wed Jul 12 2000 Prospector +- automatic rebuild +- excludearch ia64 + +* Fri Jun 2 2000 Matt Wilson +- use buildinstall for FHS + +* Wed May 24 2000 Jakub Jelinek +- make things compile on sparc +- fix sigreturn on sparc + +* Fri Mar 31 2000 Bill Nottingham +- fix stat64 misdef (#10485) + +* Tue Mar 21 2000 Michael K. Johnson +- added ia64 patch + +* Thu Feb 03 2000 Cristian Gafton +- man pages are compressed +- version 4.2 (why are we keeping all these patches around?) + +* Sat Nov 27 1999 Jeff Johnson +- update to 4.1 (with sparc socketcall patch). + +* Fri Nov 12 1999 Jakub Jelinek +- fix socketcall on sparc. + +* Thu Sep 02 1999 Cristian Gafton +- fix KERN_SECURELVL compile problem + +* Tue Aug 31 1999 Cristian Gafton +- added alpha patch from HJLu to fix the osf_sigprocmask interpretation + +* Sat Jun 12 1999 Jeff Johnson +- update to 3.99.1. + +* Wed Jun 2 1999 Jeff Johnson +- add (the other :-) jj's sparc patch. + +* Wed May 26 1999 Jeff Johnson +- upgrade to 3.99 in order to +- add new 2.2.x open flags (#2955). +- add new 2.2.x syscalls (#2866). +- strace 3.1 patches carried along for now. + +* Sun May 16 1999 Jeff Johnson +- don't rely on (broken!) rpm %%patch (#2735) + +* Tue Apr 06 1999 Preston Brown +- strip binary + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 16) + +* Tue Feb 9 1999 Jeff Johnson +- vfork est arrive! + +* Tue Feb 9 1999 Christopher Blizzard +- Add patch to follow clone() syscalls, too. + +* Sun Jan 17 1999 Jeff Johnson +- patch to build alpha/sparc with glibc 2.1. + +* Thu Dec 03 1998 Cristian Gafton +- patch to build on ARM + +* Wed Sep 30 1998 Jeff Johnson +- fix typo (printf, not tprintf). + +* Sat Sep 19 1998 Jeff Johnson +- fix compile problem on sparc. + +* Tue Aug 18 1998 Cristian Gafton +- buildroot + +* Mon Jul 20 1998 Cristian Gafton +- added the umoven patch from James Youngman +- fixed build problems on newer glibc releases + +* Mon Jun 08 1998 Prospector System +- translations modified for de, fr, tr