summaryrefslogtreecommitdiff
path: root/open_issues/binutils.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'open_issues/binutils.mdwn')
-rw-r--r--open_issues/binutils.mdwn147
1 files changed, 123 insertions, 24 deletions
diff --git a/open_issues/binutils.mdwn b/open_issues/binutils.mdwn
index d20cee9a..e024ace8 100644
--- a/open_issues/binutils.mdwn
+++ b/open_issues/binutils.mdwn
@@ -1,5 +1,5 @@
-[[!meta copyright="Copyright © 2007, 2008, 2010, 2011, 2012, 2013, 2014, 2015
-Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2010, 2011, 2012, 2013, 2014, 2015,
+2016 Free Software Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
@@ -47,8 +47,8 @@ git diff --patience --stat=$COLUMNS,$COLUMNS --patch --src-prefix=./ --dst-prefi
-->
-Last reviewed up to Git commit e49433d22dae92a56ae15a8b5742cbf1f31d5fd1
-(2015-08-19).
+Last reviewed up to Git commit 9ef9e6a6a0dd8f948708cb67c9afcfd0be40cb0a
+(2016-02-10).
* Globally
@@ -96,17 +96,6 @@ Last reviewed up to Git commit e49433d22dae92a56ae15a8b5742cbf1f31d5fd1
* `gas/`
- * `config/tc-i386.c`
-
- #ifdef TE_LINUX
- /* Default to compress debug sections for Linux. */
- enum compressed_debug_section_type flag_compress_debug
- = COMPRESS_DEBUG_GABI_ZLIB;
- #endif
-
- This has received quite some criticism, but it has not yet been
- corrected.
-
* `config/te-gnu.h`
C.f. `te-linux.h`; search tree for `TE_LINUX` vs. `TE_GNU` usage.
@@ -330,11 +319,29 @@ Last reviewed up to Git commit e49433d22dae92a56ae15a8b5742cbf1f31d5fd1
* [low] b27caf75c311991772b316fe7c0eecfd5788eeaf, ld, `Add HOSTING_SLIBS and
use it for -pie`. For us, too?
+ * [high] `gdb/remote.c`: `PATH_MAX` usage. Probably,
+ `gdb/gdbserver/remote-utils.c` is the producer, whose `PATH_MAX` might
+ differ from the consumer's.
+
+ * [high] In
+ 96f9814df23564e16909bb5ba00de4a202c63417..9ef9e6a6a0dd8f948708cb67c9afcfd0be40cb0a:
+
+ ../../W._C._Handy/gdb/gnu-nat.c: In function 'set_sig_thread_cmd':
+ ../../W._C._Handy/gdb/gnu-nat.c:2973:7: warning: implicit declaration of function 'thread_id_to_pid' [-Wimplicit-function-declaration]
+ ptid_t ptid = thread_id_to_pid (atoi (args));
+ ^
+ ../../W._C._Handy/gdb/gnu-nat.c:2973:7: error: invalid initializer
+
+ Commit 5d5658a1d3c3eb2a09c03f2f0662a1c01963c869 renamed `thread_id_to_pid`
+ to `global_thread_id_to_ptid`.
+
# Build
Here's a log of a binutils-gdb build run; this is from Git commit
-e49433d22dae92a56ae15a8b5742cbf1f31d5fd1 (2015-08-19), run on kepler.SCHWINGE
+9ef9e6a6a0dd8f948708cb67c9afcfd0be40cb0a (2016-02-10), plus `PATH_MAX`
+hard-coded in `gdb/remote.c`, and `global_thread_id_to_ptid` used instead of
+`thread_id_to_pid` in `gdb/gnu-nat.c`, run on kepler.SCHWINGE
and laplace.SCHWINGE.
$ export LC_ALL=C
@@ -350,8 +357,8 @@ so we need to configure with support for plugins and
sysroots. In the GDB build, there are compiler diagnostics reported in the
MIG-generated stub files; thus no `-Werror` until that is resolved.
-This takes up around 1.4 GiB, and runs for [[22 min|performance#measure]] on
-kepler.SCHWINGE and [[23 min|performance#measure]] on laplace.SCHWINGE.
+This takes up around 1.5 GiB, and runs for [[17 min|performance#measure]] on
+kepler.SCHWINGE and [[19 min|performance#measure]] on laplace.SCHWINGE.
<!--
@@ -430,14 +437,41 @@ formats, and more emulation vectors.
- -e 's|@''REPLACE_RENAME''@|0|g' \
+ -e 's|@''REPLACE_RENAME''@|1|g' \
+ * Some MIG change causes generated code, `gdb/msg_U.c` to change as follows:
+
+ const mach_msg_type_t portType = {
+ - /* msgt_name = */ -1,
+ + /* msgt_name = */ MACH_MSG_TYPE_POLYMORPHIC,
+
+ ... which looks like an improvement indeed. But given
+ `mach/message.h`:`#define MACH_MSG_TYPE_POLYMORPHIC ((mach_msg_type_name_t)
+ -1)`, this causes:
+
+ msg_U.c: In function 'msg_set_init_port':
+ msg_U.c:777:22: warning: large integer implicitly truncated to unsigned type [-Woverflow]
+ /* msgt_name = */ MACH_MSG_TYPE_POLYMORPHIC,
+ ^
+ msg_U.c: In function 'msg_set_init_ports':
+ msg_U.c:1043:22: warning: large integer implicitly truncated to unsigned type [-Woverflow]
+ /* msgtl_name = */ MACH_MSG_TYPE_POLYMORPHIC,
+ ^
+ msg_U.c: In function 'msg_set_dtable':
+ msg_U.c:1837:22: warning: large integer implicitly truncated to unsigned type [-Woverflow]
+ /* msgtl_name = */ MACH_MSG_TYPE_POLYMORPHIC,
+ ^
+ msg_U.c: In function 'msg_set_fd':
+ msg_U.c:2108:22: warning: large integer implicitly truncated to unsigned type [-Woverflow]
+ /* msgt_name = */ MACH_MSG_TYPE_POLYMORPHIC,
+ ^
+
# Install
$ make install 2>&1 | tee log_install
[...]
-This takes up around 210 MiB, and runs for [[1 min|performance#measure]] on
-kepler.SCHWINGE and [[2 min|performance#measure]] on laplace.SCHWINGE.
+This takes up around 220 MiB, and runs for [[0 min|performance#measure]] on
+kepler.SCHWINGE and [[1 min|performance#measure]] on laplace.SCHWINGE.
## Analysis
@@ -452,16 +486,14 @@ kepler.SCHWINGE and [[2 min|performance#measure]] on laplace.SCHWINGE.
$ make -k check 2>&1 | tee log_test
[...]
-This runs for [[46 min|performance#measure]] on kepler.SCHWINGE and [[67
+This runs for [[26 min|performance#measure]] on kepler.SCHWINGE and [[89
min|performance#measure]] on laplace.SCHWINGE.
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: `gdb.linespec/explicit`, previously generally `gdb.base/sigaltstack`,
-`gdb.base/siginfo`, and `gdb.threads/watchthreads`.
+these (`SIGKILL` may be needed), makes the `tee` process terminate, too.
On laplace.SCHWINGE, running with
`LD_PRELOAD=$HOME/fopen,unlink-NULL-wrapper.so` to get past [[!message-id
@@ -1199,6 +1231,73 @@ like `gdb/testsuite/boards/cc-with-tweaks.exp` would help, or setting
TODO.
+ * In
+ 96f9814df23564e16909bb5ba00de4a202c63417..9ef9e6a6a0dd8f948708cb67c9afcfd0be40cb0a:
+
+ Running [...]/gdb/testsuite/gdb.arch/i386-size-overlap.exp ...
+ [-PASS:-]{+FAIL:+} gdb.arch/i386-size-overlap.exp: run past main
+ PASS: gdb.arch/i386-size-overlap.exp: backtrace shows the outer function
+
+ ..., and:
+
+ Running [...]/gdb/testsuite/gdb.arch/i386-unwind.exp ...
+ [-PASS-]{+FAIL:+} gdb.arch/i386-unwind.exp: run past gdb1435
+ PASS: gdb.arch/i386-unwind.exp: backtrace past gdb1435
+
+ PASS: gdb.cp/cpexprs.exp: list tclass<int>::do_something
+ PASS: gdb.cp/cpexprs.exp: list tclass<long>::do_something
+ PASS: gdb.cp/cpexprs.exp: list tclass<short>::do_something
+ PASS: gdb.cp/cpexprs.exp: list test_function
+ [-PASS:-]{+FAIL: gdb.cp/cpexprs.exp: continue+}
+ {+FAIL:+} gdb.cp/cpexprs.exp: continue to {+test_function for+} base1::a_function
+ [-PASS:-]{+FAIL: gdb.cp/cpexprs.exp: continue+}
+ {+FAIL:+} gdb.cp/cpexprs.exp: continue to {+test_function for+} base1::base1(int)
+ [-PASS:-]{+FAIL: gdb.cp/cpexprs.exp: continue+}
+ [...]
+
+ From a quick look, the problem appears to be that we print `Thread 4 hit
+ Breakpoint 2, test_function [...]`, but the test harness doesn't expect to
+ see the `Thread 4 hit` prefix.
+
+ That might also explain the several other `continue` regressions, where
+ only the `continue` itself "FAILs", but otherwise the test case still
+ works, so the breakpoint has actually been hit as expected.
+
+ System vs new GDB:
+
+ @@ -1,31 +1,27 @@
+ $ [-gdb-]{+gdb/gdb+} -q bfd/doc/chew
+ Reading symbols from bfd/doc/chew...done.
+ (gdb) show version
+ GNU gdb [-(Debian 7.10-1+b1) 7.10-]{+(GDB) 7.10.50.20160210-git+}
+ [...]
+ (gdb) break main
+ Breakpoint 1 at 0x8048730: file ../../../W._C._Handy/bfd/doc/chew.c, line 1494.
+ (gdb) r
+ Starting program: /media/erich/home/thomas/tmp/binutils-gdb/tschwinge/W._C._Handy.build/bfd/doc/chew
+ [New Thread [-6718.3]-]{+6737.5]+}
+
+ {+Thread 4 hit+} Breakpoint 1, main (ac=1, av=0x102cda4) at ../../../W._C._Handy/bfd/doc/chew.c:1494
+ 1494 {
+ (gdb) info threads
+ Id Target Id Frame
+ [- 3 Thread 6718.3 0x0105d4fc in mach_msg_trap () at /build/glibc-2.22/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2-]
+ [-* 2 Thread 6718.2 main (ac=1, av=0x102cda4) at ../../../W._C._Handy/bfd/doc/chew.c:1494-]
+ 1 bogus thread id 1 Can't fetch registers from thread bogus thread id 1: No such thread
+ (gdb) r
+ The program being debugged has been started already.
+ Start it from the beginning? (y or n) y
+ Starting program: /media/erich/home/thomas/tmp/binutils-gdb/tschwinge/W._C._Handy.build/bfd/doc/chew
+ [New Thread [-6719.8]-]{+6738.10]+}
+
+ {+Thread 4 hit+} Breakpoint 1, main (ac=1, av=0x102cda4) at ../../../W._C._Handy/bfd/doc/chew.c:1494
+ 1494 {
+ (gdb) info threads
+ Id Target Id Frame
+ [-5 Thread 6719.8 0x0105d4fc in mach_msg_trap () at /build/glibc-2.22/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2-]
+ [-* 4 Thread 6719.7 main (ac=1, av=0x102cda4) at ../../../W._C._Handy/bfd/doc/chew.c:1494-]
+ [- 3-]{+1+} bogus thread id 6 Can't fetch registers from thread bogus thread id 6: No such thread
+
TODO.