summaryrefslogtreecommitdiff
path: root/open_issues/gdb.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'open_issues/gdb.mdwn')
-rw-r--r--open_issues/gdb.mdwn228
1 files changed, 208 insertions, 20 deletions
diff --git a/open_issues/gdb.mdwn b/open_issues/gdb.mdwn
index 1652031b..f5daff48 100644
--- a/open_issues/gdb.mdwn
+++ b/open_issues/gdb.mdwn
@@ -24,8 +24,17 @@ Here's what's to be done for maintaining GNU GDB.
# Configuration
-Last reviewed up to the [[Git mirror's ea9812279fe436be9a010d07ef1dbe465199a3d7
-(2011-09-07) sources|source_repositories/gdb]].
+<!--
+
+git checkout reviewed
+git log --reverse --topo-order --pretty=fuller --stat=$COLUMNS,$COLUMNS -w -p -C --cc ..sourceware/master
+-i
+/^commit |^merge:|^---$|hurd|linux|nacl|nptl|glibc|gs:|gnu-nat|i386gnu
+
+-->
+
+Last reviewed up to the [[Git mirror's ded7dfe6274b281d92a6ed76cedf29d06c918dec
+(2012-12-10) sources|source_repositories/gdb]].
* Globally
@@ -51,15 +60,22 @@ Last reviewed up to the [[Git mirror's ea9812279fe436be9a010d07ef1dbe465199a3d7
* [[gdbserver]]
+ * 82763a3d329b0d342d0273941b1521be9ef0c604 »MODIFIED is unknown, pass it as
+ true.«
+
+ * Configure so that Debian system's `/usr/lib/debug/[...]` will be loaded
+ automatically.
+
# Build
-Here's a log of a GDB build run; this is from our [[Git repository's
-695f61ff0f378e1680964128585044799de27015 (2011-09-06)
-sources|source_repositories/gdb]], run on kepler.SCHWINGE and coulomb.SCHWINGE.
+Here's a log of a GDB build run; this is from our [[Git
+repository|source_repositories/gdb]]'s `tschwinge/Ferry_Tagscherer` branch,
+commit ded7dfe6274b281d92a6ed76cedf29d06c918dec (2012-12-10), run on
+kepler.SCHWINGE and coulomb.SCHWINGE.
$ export LC_ALL=C
- $ ../master/configure --prefix="$PWD".install SHELL=/bin/dash CC=gcc-4.6 CXX=g++-4.6 --disable-werror 2>&1 | tee log_build
+ $ ../Ferry_Tagscherer/configure --prefix="$PWD".install SHELL=/bin/dash CC=gcc-4.6 CXX=g++-4.6 --disable-werror 2>&1 | tee log_build
[...]
$ make 2>&1 | tee log_build_
[...]
@@ -71,9 +87,15 @@ There are several occurences of *error: dereferencing type-punned pointer will
break strict-aliasing rules* in the MIG-generated stub files; thus no `-Werror`
until that is resolved ([[strict_aliasing]]).
-This takes up around 140 MiB and needs roughly 6 min on kepler.SCHWINGE and 30
+This takes up around 200 MiB and needs roughly 7 min on kepler.SCHWINGE and 23
min on coulomb.SCHWINGE.
+<!--
+
+ $ (make && touch .go-install) 2>&1 | tee log_build_ && test -f .go-install && (make install && touch .go-test) 2>&1 | tee log_install && test -f .go-test && make -k check 2>&1 | tee log_test
+
+-->
+
## Analysis
@@ -81,12 +103,86 @@ x86 GNU/Linux' and GNU/Hurd's configurations are slightly different, thus mask
out most of the differences that are due to GNU/Linux supporting more core file
formats and more emulation vectors.
- $ ssh kepler.SCHWINGE 'cd tmp/source/gdb/ && cat hurd/master.build/log_build* | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' > toolchain/logs/gdb/linux/log_build
- $ ssh coulomb.SCHWINGE 'cd tmp/gdb/ && cat hurd/master.build/log_build* | sed -e "s%\(/media/erich\)\?${PWD}%[...]%g"' > toolchain/logs/gdb/hurd/log_build
- $ diff -wu <(sed -f toolchain/logs/gdb/linux/log_build.sed < toolchain/logs/gdb/linux/log_build) <(sed -f toolchain/logs/gdb/hurd/log_build.sed < toolchain/logs/gdb/hurd/log_build) > toolchain/logs/gdb/log_build.diff
+ $ toolchain/logs/process gdb build
* Why do we specify `-D_GNU_SOURCE`, and GNU/Linux doesn't?
+ * GNU/Linux: `gdb/symfile-mem.c` for vDSO.
+
+ * GNU/Linux: `gdb/i386-nat.c` for hardware breakpoints, etc. -- we should
+ probably use that, too. Related to Samuel's Hurd GDB patch?
+
+ * `gdb/gnu-nat.c`
+
+ gnu-nat.c: In function 'proc_set_exception_port':
+ gnu-nat.c:409:3: warning: format '%d' expects argument of type 'int', but argument 8 has type 'mach_port_t' [-Wformat]
+ gnu-nat.c: In function 'proc_steal_exc_port':
+ gnu-nat.c:449:7: warning: format '%d' expects argument of type 'int', but argument 8 has type 'mach_port_t' [-Wformat]
+ gnu-nat.c:470:7: warning: format '%d' expects argument of type 'int', but argument 8 has type 'mach_port_t' [-Wformat]
+ gnu-nat.c: In function 'make_proc':
+ gnu-nat.c:583:7: warning: format '%d' expects argument of type 'int', but argument 2 has type 'mach_port_t' [-Wformat]
+ gnu-nat.c:586:7: warning: format '%d' expects argument of type 'int', but argument 8 has type 'mach_port_t' [-Wformat]
+ gnu-nat.c: In function 'inf_set_pid':
+ gnu-nat.c:761:3: warning: format '%d' expects argument of type 'int', but argument 7 has type 'task_t' [-Wformat]
+ gnu-nat.c: In function 'inf_validate_procs':
+ gnu-nat.c:1085:6: warning: format '%d' expects argument of type 'int', but argument 8 has type 'thread_t' [-Wformat]
+ gnu-nat.c: In function 'inf_signal':
+ gnu-nat.c:1349:4: warning: format '%d' expects argument of type 'int', but argument 7 has type 'thread_t' [-Wformat]
+ gnu-nat.c:1349:4: warning: format '%d' expects argument of type 'int', but argument 8 has type 'thread_t' [-Wformat]
+ gnu-nat.c: In function 'S_exception_raise_request':
+ gnu-nat.c:1668:3: warning: format '%d' expects argument of type 'int', but argument 7 has type 'thread_t' [-Wformat]
+ gnu-nat.c:1668:3: warning: format '%d' expects argument of type 'int', but argument 8 has type 'task_t' [-Wformat]
+ gnu-nat.c:1705:8: warning: format '%d' expects argument of type 'int', but argument 7 has type 'mach_port_t' [-Wformat]
+ gnu-nat.c:1711:8: warning: format '%d' expects argument of type 'int', but argument 7 has type 'mach_port_t' [-Wformat]
+ gnu-nat.c: In function 'do_mach_notify_dead_name':
+ gnu-nat.c:1762:3: warning: format '%d' expects argument of type 'int', but argument 7 has type 'mach_port_t' [-Wformat]
+ gnu-nat.c: In function 'gnu_write_inferior':
+ gnu-nat.c:2383:8: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'vm_address_t' [-Wformat]
+ gnu-nat.c:2393:8: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'vm_address_t' [-Wformat]
+ gnu-nat.c: In function 'steal_exc_port':
+ gnu-nat.c:2864:5: warning: format '%d' expects argument of type 'int', but argument 2 has type 'mach_port_t' [-Wformat]
+
+
+ * fe19822761b4635f392875a186e48af446b40f41..7a63e9515491f21eaf07301df87d389def20e317):
+
+ `-Wmissing-prototypes`
+
+ gnu-nat.c: At top level:
+ gnu-nat.c:643:1: warning: no previous prototype for 'make_inf' []
+ gnu-nat.c: At top level:
+ gnu-nat.c:879:1: warning: no previous prototype for 'inf_set_traced' []
+ gnu-nat.c:980:1: warning: no previous prototype for 'inf_port_to_thread' []
+ gnu-nat.c: At top level:
+ gnu-nat.c:1748:1: warning: no previous prototype for 'inf_task_died_status' []
+ gnu-nat.c: At top level:
+ gnu-nat.c:2273:1: warning: no previous prototype for 'gnu_read_inferior' []
+ gnu-nat.c:2319:1: warning: no previous prototype for 'gnu_write_inferior' []
+ gnu-nat.c: At top level:
+ gnu-nat.c:3415:1: warning: no previous prototype for '_initialize_gnu_nat' []
+ notify_S.c:305:24: warning: no previous prototype for 'notify_server' []
+ notify_S.c:341:28: warning: no previous prototype for 'notify_server_routine' []
+ process_reply_S.c:343:24: warning: no previous prototype for 'process_reply_server' []
+ process_reply_S.c:379:28: warning: no previous prototype for 'process_reply_server_routine' []
+ msg_reply_S.c:165:24: warning: no previous prototype for 'msg_reply_server' []
+ msg_reply_S.c:201:28: warning: no previous prototype for 'msg_reply_server_routine' []
+ exc_request_S.c:157:24: warning: no previous prototype for 'exc_server' []
+ exc_request_S.c:193:28: warning: no previous prototype for 'exc_server_routine' []
+
+ * `dlopen`/`-ldl`
+
+ -checking for library containing dlopen... none required
+ +checking for library containing dlopen... -ldl
+
+ * `O_NOFOLLOW`
+
+ First seen in
+ 20f498edfd7e57d3297febcf9c7c7d667cc74239..69a5e2b022c7d15ec4c7c49e6f53a8d924d3b72b:
+
+ -checking for working fcntl.h... yes
+ +checking for working fcntl.h... no (bad O_NOFOLLOW)
+
+ [[!taglink open_issue_glibc]]?
+
* Why does GNU/Linux have an additional `-ldl -rdynamic` when linking `gdb`?
@@ -95,33 +191,125 @@ formats and more emulation vectors.
$ make install 2>&1 | tee log_install
[...]
-This takes up around 50 MiB, and needs roughly 1 min on kepler.SCHWINGE and 3
+This takes up around 50 MiB, and needs roughly 1 min on kepler.SCHWINGE and 2
min on coulomb.SCHWINGE.
## Analysis
- $ ssh kepler.SCHWINGE 'cd tmp/source/gdb/ && cat hurd/master.build/log_install | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' > toolchain/logs/gdb/linux/log_install
- $ ssh coulomb.SCHWINGE 'cd tmp/gdb/ && cat hurd/master.build/log_install | sed -e "s%\(/media/erich\)\?${PWD}%[...]%g"' > toolchain/logs/gdb/hurd/log_install
- $ diff -wu <(sed -f toolchain/logs/gdb/linux/log_install.sed < toolchain/logs/gdb/linux/log_install) <(sed -f toolchain/logs/gdb/hurd/log_install.sed < toolchain/logs/gdb/hurd/log_install) > toolchain/logs/gdb/log_install.diff
+ $ toolchain/logs/process gdb install
* `libtool: finish`: `ldconfig` is not run for the Hurd.
# Testsuite
-On GNU/Hurd, hampered by the [[term_blocking]] issue.
-
$ make -k check
[...]
-This needs roughly 45 min on kepler.SCHWINGE and TODO min on coulomb.SCHWINGE.
+This needs roughly 14 min on kepler.SCHWINGE and 110 min on coulomb.SCHWINGE.
- $ ssh kepler.SCHWINGE 'cd tmp/source/gdb/ && sed -e "s%\(/media/data\)\?${PWD}%[...]%g" < hurd/master.build/gdb/testsuite/gdb.sum' > toolchain/logs/gdb/linux/sum
- $ ssh coulomb.SCHWINGE 'cd tmp/gdb/ && sed -e "s%\(/media/erich\)\?${PWD}%[...]%g" < hurd/master.build/gdb/testsuite/gdb.sum' > toolchain/logs/gdb/hurd/sum
- $ diff -u -F ^Running toolchain/logs/gdb/linux/sum toolchain/logs/gdb/hurd/sum > toolchain/logs/gdb/sum.diff
+When running `make -k check 2>&1 | tee log_test`, at the end of the testsuite
+the `tee` process does not terminate if there are still stray leftover
+processes that [have their stdout/stderr
+open](http://sourceware.org/ml/gdb-patches/2012-10/msg00489.html). `kill`ing
+these (`SIGKILL` may be needed), makes the `tee` process terminate, too. On
+GNU/Hurd, these generally are `gdb.multi/watchpoint-multi`, and an unknown
+(`?`) one ("57 PIDs before" `expect [...] gdb.cp`).
## Analysis
+ $ toolchain/logs/process gdb test
+
+ * Disabled
+
+ * `gdb.base/readline.exp`
+
+ [[term_blocking]] issue.
+
+ * `gdb.base/sigall.exp`
+
+ From `send signal TSTP` on, all FAIL running into timeouts.
+
+ * `gdb.python/py-inferior.exp` (mostly disabled)
+
+ Running ../../../Ferry_Tagscherer/gdb/testsuite/gdb.python/py-inferior.exp ...
+ [...]
+ python print 'result =', i0.was_attached
+ result = False
+ (gdb) PASS: gdb.python/py-inferior.exp: test Inferior.was_attached
+ python print i0.threads ()
+ (<gdb.InferiorThread object at 0x61170>, <gdb.InferiorThread object at 0x61160>)
+ (gdb) FAIL: gdb.python/py-inferior.exp: test Inferior.threads
+ break check_threads
+ Breakpoint 2 at 0x8048869: file ../../../Ferry_Tagscherer/gdb/testsuite/gdb.python/py-inferior.c, line 61.
+ (gdb) continue
+ Continuing.
+ [New Thread 25670.6]
+ [New Thread 25670.7]
+ [New Thread 25670.8]
+ [New Thread 25670.9]
+ [New Thread 25670.10]
+ [New Thread 25670.11]
+ [New Thread 25670.12]
+ [New Thread 25670.13]
+
+ Breakpoint 2, check_threads (barrier=0x15ff144) at ../../../Ferry_Tagscherer/gdb/testsuite/gdb.python/py-inferior.c:61
+ 61 pthread_barrier_wait (barrier);
+ (gdb) PASS: gdb.python/py-inferior.exp: continue to breakpoint: cont to check_threads
+ python print len (i0.threads ())
+ 10
+ (gdb) FAIL: gdb.python/py-inferior.exp: test Inferior.threads 2
+ break 28
+ Breakpoint 3 at 0x80487c2: file ../../../Ferry_Tagscherer/gdb/testsuite/gdb.python/py-inferior.c, line 28.
+ (gdb) continue
+ Continuing.
+ FAIL: gdb.python/py-inferior.exp: continue to breakpoint: cont to Break here. (timeout)
+ python addr = gdb.selected_frame ().read_var ('str')
+ FAIL: gdb.python/py-inferior.exp: read str address (timeout)
+ [All following tests FAIL with timeout.]
+ FAIL: gdb.python/py-inferior.exp: Switch to first inferior (timeout)
+ remove-inferiors 3
+ FAIL: gdb.python/py-inferior.exp: Remove second inferior (timeout)
+
+ At this point, the system hangs; no new processes can be spawned, so
+ perhaps an issue with the exec server.
+
+ * `UNSUPPORTED: gdb.threads/ia64-sigill.exp: Couldn't compile ../../../master/gdb/testsuite/gdb.threads/ia64-sigill.c: unrecognized error`
+
+ ../../../master/gdb/testsuite/gdb.threads/ia64-sigill.c:29:24: fatal error: asm/unistd.h: No such file or directory
+
+ * `UNSUPPORTED: gdb.threads/multi-create.exp: Couldn't compile ../../../master/gdb/testsuite/gdb.threads/multi-create.c: unrecognized error`
+ ../../../master/gdb/testsuite/gdb.threads/multi-create.c: In function 'create_function':
+ ../../../master/gdb/testsuite/gdb.threads/multi-create.c:46:39: error: 'PTHREAD_STACK_MIN' undeclared (first use in this function)
+ ../../../master/gdb/testsuite/gdb.threads/multi-create.c:46:39: note: each undeclared identifier is reported only once for each function it appears in
+ ../../../master/gdb/testsuite/gdb.threads/multi-create.c: In function 'main':
+ ../../../master/gdb/testsuite/gdb.threads/multi-create.c:73:39: error: 'PTHREAD_STACK_MIN' undeclared (first use in this function)
+
+ * `UNSUPPORTED: gdb.threads/staticthreads.exp: Couldn't compile ../../../master/gdb/testsuite/gdb.threads/staticthreads.c: unrecognized error`
+
+ ../../../master/gdb/testsuite/gdb.threads/staticthreads.c: In function 'main':
+ ../../../master/gdb/testsuite/gdb.threads/staticthreads.c:52:37: error: 'PTHREAD_STACK_MIN' undeclared (first use in this function)
+ ../../../master/gdb/testsuite/gdb.threads/staticthreads.c:52:37: note: each undeclared identifier is reported only once for each function it appears in
+
+ * `UNSUPPORTED: gdb.threads/watchpoint-fork.exp: parent: multithreaded: Couldn't compile ../../../Ferry_Tagscherer/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c ../../../Ferry_Tagscherer/gdb/testsuite/gdb.threads/watchpoint-fork-parent.c: unrecognized error`
+
+ ../../../Ferry_Tagscherer/gdb/testsuite/gdb.threads/watchpoint-fork-mt.c:29:24: fatal error: asm/unistd.h: No such file or directory
+
+ * `UNSUPPORTED: gdb.threads/create-fail.exp: Couldn't compile ../../../Ferry_Tagscherer/gdb/testsuite/gdb.threads/create-fail.c: unrecognized error`
+
+ [...]/gdb.threads/create-fail.c:77: undefined reference to `pthread_attr_setaffinity_np'
+ [...]/gdb.threads/create-fail.c:83: undefined reference to `pthread_create'
+
+ * `UNSUPPORTED: gdb.threads/siginfo-threads.exp: Couldn't compile ../../../Ferry_Tagscherer/gdb/testsuite/gdb.threads/siginfo-threads.c: unrecognized error`
+
+ ../../../Ferry_Tagscherer/gdb/testsuite/gdb.threads/sigstep-threads.c:22:24: fatal error: asm/unistd.h: No such file or directory
+
+ * `UNTESTED: gdb.base/longest-types.exp: longest-types.exp`
+
+ ../../../Ferry_Tagscherer/gdb/testsuite/gdb.base/longest-types.c:20:8: error: size of array 'buf' is too large
+
+ Also on GNU/Linux.
+
TODO.