diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-06-09 02:06:59 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-06-09 02:06:59 +0200 |
commit | aef463c050add77d72259c5c9b630adbfb0409bb (patch) | |
tree | 76e598c2ad57db9704e9d3e764add53e84c9b1c6 /open_issues/binutils.mdwn | |
parent | af4e2bc8f1b5c450b22c19ff8e06ded02ef08cba (diff) | |
parent | 0d9f8a5a6246924c5ac6f79cedd507b74477f06e (diff) | |
download | web-aef463c050add77d72259c5c9b630adbfb0409bb.tar.gz web-aef463c050add77d72259c5c9b630adbfb0409bb.tar.bz2 web-aef463c050add77d72259c5c9b630adbfb0409bb.zip |
Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/web
Diffstat (limited to 'open_issues/binutils.mdwn')
-rw-r--r-- | open_issues/binutils.mdwn | 147 |
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. |