Here's what's to be done for maintaining GNU GDB.
General information
Sources
Configuration
Last reviewed up to the Git mirror's ea9812279fe436be9a010d07ef1dbe465199a3d7 (2011-09-07) sources.
Globally
a.out, COFF, PE image support and 64 bit support are not interesting.
In the testsuites,
.expand.dfiles very likely should not only care for*-*-linux*, but also*-*-gnu*. (If the need to be conditionalized like this at all.)
bfd/See binutils.
libdecnumber/Should/can probably align to GNU/Linux.
Have a look at config/i386/i386gnu.mh.
configure.tgt
- glibc-tdep et al. also for GNU/Hurd?
Build
Here's a log of a GDB build run; this is from our Git repository's 695f61ff0f378e1680964128585044799de27015 (2011-09-06) sources, 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
[...]
$ make 2>&1 | tee log_build_
[...]
Different hosts may default to different shells and compiler versions; thus harmonized.
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.
This takes up around 140 MiB and needs roughly 6 min on kepler.SCHWINGE and 30 min on coulomb.SCHWINGE.
Analysis
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.
$ diff -wu <(ssh kepler.SCHWINGE 'cd tmp/source/gdb/ && cat hurd/master.build/log_build* | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' | sed -f open_issues/gdb/log_build-linux.sed) <(ssh coulomb.SCHWINGE 'cd tmp/gdb/ && cat hurd/master.build/log_build* | sed "s%\(/media/erich\)\?${PWD}%[...]%g"' | sed -f open_issues/gdb/log_build-hurd.sed) > open_issues/gdb/log_build.diff
Why do we specify
-D_GNU_SOURCE, and GNU/Linux doesn't?Why does GNU/Linux have an additional
-ldl -rdynamicwhen linkinggdb?
Install
$ make install 2>&1 | tee log_install
[...]
This takes up around 50 MiB, and needs roughly 1 min on kepler.SCHWINGE and 3 min on coulomb.SCHWINGE.
Analysis
$ diff -wu <(ssh kepler.SCHWINGE 'cd tmp/source/gdb/ && cat hurd/master.build/log_install | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' | sed -f open_issues/gdb/log_install-linux.sed) <(ssh coulomb.SCHWINGE 'cd tmp/gdb/ && cat hurd/master.build/log_install | sed "s%\(/media/erich\)\?${PWD}%[...]%g"' | sed -f open_issues/gdb/log_install-hurd.sed) > open_issues/gdb/log_install.diff
libtool: finish:ldconfigis 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.
$ ssh kepler.SCHWINGE 'cd tmp/source/gdb/ && sed < hurd/master.build/gdb/testsuite/gdb.sum -e "s%\(/media/data\)\?${PWD}%[...]%g"' > open_issues/gdb/sum_linux
$ ssh coulomb.SCHWINGE 'cd tmp/gdb/ && sed < hurd/master.build/gdb/testsuite/gdb.sum -e "s%\(/media/erich\)\?${PWD}%[...]%g"' > open_issues/gdb/sum_hurd
Comparing the results files, sum linux to ?sum hurd:
$ diff -u -F ^Running open_issues/gdb/sum_linux open_issues/gdb/sum_hurd > open_issues/gdb/sum.diff
?sum.diff.
Analysis
TODO.
