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, .exp and .d files 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?
  • gdbserver

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

log build.diff.

  • Why do we specify -D_GNU_SOURCE, and GNU/Linux doesn't?

  • Why does GNU/Linux have an additional -ldl -rdynamic when linking gdb?

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

log install.diff.

  • 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.

$ 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.