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

Reply via email to