Here a copy of my pull request on github. Please consider these patches.
On 17.11.2017 21:03, [email protected] wrote:
Hello, i found a lot of problems in ltrace testsuite and probably
found some solutions.
Please check https://github.com/dkogan/ltrace for my pull requests and
issue.
Thanks for regarding my problem!
_______________________________________________
Ltrace-devel mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/ltrace-devel
>From eabab14cba3a0071f8e4b743cc0b2ee698865cae Mon Sep 17 00:00:00 2001
From: Grigory Ustinov <[email protected]>
Date: Fri, 17 Nov 2017 19:05:49 +0300
Subject: [PATCH 1/5] Fix FAIL in attach process tests
When made tests, they dropped with following error:
Cannot attach to pid $PID: Operation not permitted
---
testsuite/ltrace.minor/attach-process-dlopen.exp | 2 ++
testsuite/ltrace.minor/attach-process.exp | 2 ++
2 files changed, 4 insertions(+)
diff --git a/testsuite/ltrace.minor/attach-process-dlopen.exp b/testsuite/ltrace.minor/attach-process-dlopen.exp
index ac61347..afb8b75 100644
--- a/testsuite/ltrace.minor/attach-process-dlopen.exp
+++ b/testsuite/ltrace.minor/attach-process-dlopen.exp
@@ -29,7 +29,9 @@ spawn [ltraceCompile exe -ldl [ltraceSource c {
#include <assert.h>
#include <stdio.h>
#include <string.h>
+ #include <sys/prctl.h>
int main(int argc, char **argv) {
+ (void) prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY);
assert(argc == 2);
#define FN "libll.so"
char buf[strlen(argv[1]) + 1 + sizeof FN];
diff --git a/testsuite/ltrace.minor/attach-process.exp b/testsuite/ltrace.minor/attach-process.exp
index 1249bd3..e6ccdf5 100644
--- a/testsuite/ltrace.minor/attach-process.exp
+++ b/testsuite/ltrace.minor/attach-process.exp
@@ -18,7 +18,9 @@
set bin [ltraceCompile {} [ltraceSource c {
#include <unistd.h>
+ #include <sys/prctl.h>
int main(void) {
+ (void) prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY);
sleep(5);
sleep(1);
return 0;
--
2.10.4
>From 685324799ab7d97650e584f83595f50647ad9749 Mon Sep 17 00:00:00 2001
From: Grigory Ustinov <[email protected]>
Date: Fri, 17 Nov 2017 19:33:23 +0300
Subject: [PATCH 2/5] Fix FAIL in wchar.exp test
turn off test due Ltrace doesn't support long double
see: etc/libc.so-types.conf:XXX ltrace misses long double and long long support
---
testsuite/ltrace.minor/wchar.exp | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/testsuite/ltrace.minor/wchar.exp b/testsuite/ltrace.minor/wchar.exp
index ab909de..d7e8f4f 100644
--- a/testsuite/ltrace.minor/wchar.exp
+++ b/testsuite/ltrace.minor/wchar.exp
@@ -18,6 +18,7 @@
set bin [ltraceCompile {} [ltraceSource c {
#define _XOPEN_SOURCE
+ #define LONGDOUBLETEST_DISABLE
#include <sys/time.h>
#include <assert.h>
#include <locale.h>
@@ -124,7 +125,9 @@ set bin [ltraceCompile {} [ltraceSource c {
{ wchar_t *ptr = NULL; wcstod(wcsstr(wbuf, L"â¢") + 2, &ptr); }
wcsncpy(wbuf, L"1234â¢", 64);
{ wchar_t *ptr = NULL; wcstof(wbuf, &ptr); }
+ #ifndef LONGDOUBLETEST_DISABLE
{ wchar_t *ptr = NULL; wcstold(wbuf, &ptr); }
+ #endif
{ wchar_t *ptr = NULL; wcstol(wbuf, &ptr, 10); }
{ wchar_t *ptr = NULL; wcstoll(wbuf, &ptr, 10); }
{ wchar_t *ptr = NULL; wcstoul(wbuf, &ptr, 10); }
@@ -195,7 +198,9 @@ ltraceMatch [ltraceRun -F $srcdir/../etc/ -- $bin] {
{{^wcstod\(".*»", ".*»"\).*= [0-9]+} == 1}
{{^wcsncpy\(.*, "1234â¢", 64\).*= .*} == 1}
{{^wcstof\("1234â¢", "â¢"\).*= 1234} == 1}
+ #ifndef LONGDOUBLETEST_DISABLE
{{^wcstold\("1234â¢", "â¢"\).*= 1234} == 1}
+ #endif
{{^wcstol\("1234â¢", "â¢", 10\).*= 1234} == 1}
{{^wcstoll\("1234â¢", "â¢", 10\).*= 1234} == 1}
{{^wcstoul\("1234â¢", "â¢", 10\).*= 1234} == 1}
--
2.10.4
>From 99db0d14e03b7f25ab124e1ebb65c2e17291619d Mon Sep 17 00:00:00 2001
From: Grigory Ustinov <[email protected]>
Date: Fri, 17 Nov 2017 19:39:02 +0300
Subject: [PATCH 3/5] Fix readdir_r deprecated error
---
sysdeps/linux-gnu/proc.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/sysdeps/linux-gnu/proc.c b/sysdeps/linux-gnu/proc.c
index 953fd86..5cf110f 100644
--- a/sysdeps/linux-gnu/proc.c
+++ b/sysdeps/linux-gnu/proc.c
@@ -242,16 +242,20 @@ process_tasks(pid_t pid, pid_t **ret_tasks, size_t *ret_n)
size_t alloc = 0;
while (1) {
- struct dirent entry;
- struct dirent *result;
- if (readdir_r(d, &entry, &result) != 0) {
- fail:
+ struct dirent *result = NULL;
+ errno = 0;
+ result = readdir(d);
+ if (result == NULL)
+ {
+ if (errno == 0)
+ break;
+ else {
+ fail:
free(tasks);
closedir(d);
return -1;
- }
- if (result == NULL)
- break;
+ }
+ }
if (result->d_type == DT_DIR && all_digits(result->d_name)) {
pid_t npid = atoi(result->d_name);
if (n >= alloc) {
--
2.10.4
>From 35e258e47b0f25a21501b4f242503dd6ae563a04 Mon Sep 17 00:00:00 2001
From: Grigory Ustinov <[email protected]>
Date: Wed, 22 Nov 2017 09:55:41 +0300
Subject: [PATCH 4/5] Fix errors in tests
- Add printf for disable compiler optimization even with -O0
- Correct output of function treetest
- Add more "-x" options to exclude __x86.get_pc_thunk calls
---
testsuite/ltrace.main/dwarf.exp | 20 ++++++++++----------
testsuite/ltrace.main/dwarflib.c | 4 ++--
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/testsuite/ltrace.main/dwarf.exp b/testsuite/ltrace.main/dwarf.exp
index 7af7d99..faa6d39 100644
--- a/testsuite/ltrace.main/dwarf.exp
+++ b/testsuite/ltrace.main/dwarf.exp
@@ -56,10 +56,10 @@ set ltrace_opts_l {"-A5" "-l" "libdwarftest.so"}
set ref_output_l [subst -nocommands -novariables {
dwarf->linkedlisttest({ 5, nil }) * = <void>
dwarf->treetest({ 1, { 2, nil, nil }, { 3, nil, { 4, nil, nil } } } <unfinished ...>
-libdwarftest.so->treetest({ 2, nil, nil }) * = nil
+libdwarftest.so->treetest({ 2, nil, nil }) * = { 3, nil, nil }
libdwarftest.so->treetest({ 3, nil, { 4, nil, nil } } <unfinished ...>
-libdwarftest.so->treetest({ 4, nil, nil }) * = nil
-<... treetest resumed> ) * = { 5, nil, nil }
+libdwarftest.so->treetest({ 4, nil, nil }) * = { 5, nil, nil }
+<... treetest resumed> ) * = { 4, nil, { 5, nil, nil } }
<... treetest resumed> ) * = { 2, { 3, nil, nil }, { 4, nil, { 5, nil, nil } } }
dwarf->looptest({ { recurse^, 6 }, 5 }) * = <void>
dwarf->enumtest(A, B) * = 0
@@ -84,14 +84,14 @@ libdwarftest.so->f55(Colors5)(RED5) * = RED5
} ]
run_dwarf_test $ref_output_demangling $ltrace_opts_demangling
-set ltrace_opts_x {"-A5" "-L" "-x" "@libdwarftest.so"}
+set ltrace_opts_x {"-A5" "-L" "-x" "*test*@libdwarftest.so" "-x" "*Color*@libdwarftest.so" "-x" "*void*@libdwarftest.so"}
set ref_output_x [subst -nocommands -novariables {
[email protected]({ 5, nil }) * = <void>
[email protected]({ 1, { 2, nil, nil }, { 3, nil, { 4, nil, nil } } } <unfinished ...>
[email protected]({ 2, nil, nil }) * = nil
[email protected]({ 2, nil, nil }) * = { 3, nil, nil }
[email protected]({ 3, nil, { 4, nil, nil } } <unfinished ...>
[email protected]({ 4, nil, nil }) * = nil
-<... treetest resumed> ) * = { 5, nil, nil }
[email protected]({ 4, nil, nil }) * = { 5, nil, nil }
+<... treetest resumed> ) * = { 4, nil, { 5, nil, nil } }
<... treetest resumed> ) * = { 2, { 3, nil, nil }, { 4, nil, { 5, nil, nil } } }
[email protected]({ { recurse^, 6 }, 5 }) * = <void>
[email protected](A, B) * = 0
@@ -110,10 +110,10 @@ run_dwarf_test $ref_output_x $ltrace_opts_x
set ltrace_opts_e {"-A5" "-e" "@libdwarftest.so"}
set ref_output_e [subst -nocommands -novariables {
-libdwarftest.so->treetest({ 2, nil, nil }) * = nil
+libdwarftest.so->treetest({ 2, nil, nil }) * = { 3, nil, nil }
libdwarftest.so->treetest({ 3, nil, { 4, nil, nil } } <unfinished ...>
-libdwarftest.so->treetest({ 4, nil, nil }) * = nil
-<... treetest resumed> ) * = { 5, nil, nil }
+libdwarftest.so->treetest({ 4, nil, nil }) * = { 5, nil, nil }
+<... treetest resumed> ) * = { 4, nil, { 5, nil, nil } }
libdwarftest.so->_Z3f127Colors2(GREEN2) * = RED1
libdwarftest.so->_Z3f347Colors4(BLUE4) * = RED3
libdwarftest.so->_Z3f557Colors5(RED5) * = RED5
diff --git a/testsuite/ltrace.main/dwarflib.c b/testsuite/ltrace.main/dwarflib.c
index 2402400..85b171e 100644
--- a/testsuite/ltrace.main/dwarflib.c
+++ b/testsuite/ltrace.main/dwarflib.c
@@ -24,8 +24,8 @@ void linkedlisttest( struct list* l )
struct tree treetest(struct tree* t)
{
- if(t->left != NULL) treetest(t->left);
- if(t->right != NULL) treetest(t->right);
+ if(t->left != NULL) printf("%d",treetest(t->left).x);
+ if(t->right != NULL) printf("%d",treetest(t->right).x);
t->x++;
return *t;
--
2.10.4
>From 27d4c892c22d4848f9ffdb6df143505a1b5885a6 Mon Sep 17 00:00:00 2001
From: Grigory Ustinov <[email protected]>
Date: Wed, 22 Nov 2017 10:17:15 +0300
Subject: [PATCH 5/5] Disable glibc-core-debuginfo tests
---
testsuite/ltrace.main/dwarf.exp | 26 +++++++++++---------------
1 file changed, 11 insertions(+), 15 deletions(-)
diff --git a/testsuite/ltrace.main/dwarf.exp b/testsuite/ltrace.main/dwarf.exp
index faa6d39..aa148da 100644
--- a/testsuite/ltrace.main/dwarf.exp
+++ b/testsuite/ltrace.main/dwarf.exp
@@ -9,7 +9,6 @@
# built without elfutils. You'll still be able to run this test directly (with
# runtest) and see it fail
-
proc run_dwarf_test {ref_output ltrace_opts} {
global srcdir subdir objdir
@@ -132,7 +131,6 @@ run_dwarf_test $ref_output_e $ltrace_opts_e
# was called and not anything particular about the arguments
set ltrace_opts_e {"-l" "libc.so*"}
set ref_output_e [subst -nocommands -novariables {
-dwarf->usleep(33) * = 0
dwarf->nanosleep(.*
} ]
run_dwarf_test $ref_output_e $ltrace_opts_e
@@ -141,23 +139,21 @@ set ltrace_opts_e {"-L" "-x" "@libc.so*[email protected]"}
set ref_output_e [subst -nocommands -novariables {
[email protected](0x[0-9a-z]*
[email protected](.*
[email protected](33 <unfinished ...>
[email protected](.*
-<... usleep resumed> ) * = 0
[email protected](.*
} ]
run_dwarf_test $ref_output_e $ltrace_opts_e
# Make sure the DWARF filtering and the alias finding work well together
-set ltrace_opts_e {"-L" "-x" "[email protected]*"}
-set ref_output_e [subst -nocommands -novariables {
[email protected](0x[0-9a-z]*) * = -1
-} ]
-run_dwarf_test $ref_output_e $ltrace_opts_e
-
-set ltrace_opts_e {"-L" "-x" "*[email protected]*"}
-set ref_output_e [subst -nocommands -novariables {
[email protected](0x[0-9a-z]*) * = -1
-} ]
-run_dwarf_test $ref_output_e $ltrace_opts_e
+#set ltrace_opts_e {"-L" "-x" "[email protected]*"}
+#set ref_output_e [subst -nocommands -novariables {
+#[email protected](0x[0-9a-z]*) * = -1
+#} ]
+#run_dwarf_test $ref_output_e $ltrace_opts_e
+
+#set ltrace_opts_e {"-L" "-x" "*[email protected]*"}
+#set ref_output_e [subst -nocommands -novariables {
+#[email protected](0x[0-9a-z]*) * = -1
+#} ]
+#run_dwarf_test $ref_output_e $ltrace_opts_e
--
2.10.4
_______________________________________________
Ltrace-devel mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/ltrace-devel