diff options
| author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2011-01-09 23:34:42 +0100 |
|---|---|---|
| committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2011-01-09 23:34:42 +0100 |
| commit | f3df65ce34153357d28bee621bdf49b61e68b182 (patch) | |
| tree | 25ac416b157b010ca2f942dac5c5ba0b38a924ac /open_issues/binutils.mdwn | |
| parent | 09184ae09c44c052a207aa5c6dc8ce9cf61a343f (diff) | |
| parent | 3bbe62327128ce85829a4cb2fb429bd8f21b4d75 (diff) | |
Merge branch 'master' of flubber:~hurd-web/hurd-web
Diffstat (limited to 'open_issues/binutils.mdwn')
| -rw-r--r-- | open_issues/binutils.mdwn | 276 |
1 files changed, 276 insertions, 0 deletions
diff --git a/open_issues/binutils.mdwn b/open_issues/binutils.mdwn new file mode 100644 index 00000000..81fafaca --- /dev/null +++ b/open_issues/binutils.mdwn @@ -0,0 +1,276 @@ +[[!meta copyright="Copyright © 2007, 2008, 2010 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 +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!tag open_issue_binutils]] + +Here's what's to be done for maintaining GNU Binutils. + +As these tools primarily deal with low-level parts of the target architecture +and the object file format (ELF ABI), which are essentially (at least meant to +be) the same, there shouldn't be many differences comparing the binutils +between the GNU/Hurd and GNU/Linux ports, for example. There are a few, +though, as explained below. + +[[!toc levels=2]] + + +# [[General information|/binutils]] + + +# [[Sources|source_repositories/binutils]] + + +# Configuration + +Last reviewed up to the [[Git mirror's e347ef3b343fc42ed312d5125047d59ae15df795 +(2010-12-20) sources|source_repositories/binutils]]. + + * Globally + + * a.out, COFF, PE image support and 64 bit support are not interesting. + + * In the [[testsuite]]s, `.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/` + + * `config.bfd` + + * `i[3-7]86-*-gnu*` + + Comparing to `i[3-7]86-*-linux-*`: + + * `i386linux_vec` -- a.out. + + * `i386pei_vec` -- PE. + + * 64 bit. + + * `configure.host` + + Souldn't need anything. x86 Linux neither. + + * `configure.in` + + Linux: + + * `COREFILE=trad-core.lo` with `TRAD_HEADER='"hosts/i386linux.h"'` + + We don't have any such core file support configured. TODO: should + we? Where is this core file reading exactly used? GDB? + + * `i386linux_vec` -- a.out. + + * `i386pei_vec` -- PE. + + * `binutils/` + + * `configure.tgt` + + * `gas/` + + * `config/te-gnu.h` + + C.f. `te-linux.h`; search tree for `TE_LINUX` vs. `TE_GNU` usage. + + * `tc-i386.h` + + Sole `TE_LINUX` usage is for a.out. + + * `configure.tgt` + + * `ld/` + + * `configure.host` + + * `*-*-gnu*` + + TODO: resolve `crt0.o` vs. `crt1.o` issue. [[Testsuite + failures|testsuite#static]]. + + * `configure.tgt` + + * `i[3-7]86-*-gnu*` + + Compare to `i[3-7]86-*-linux-*`, but don't need a.out (`i386linux`) + and 64 bit support. + + +# Build + +Here's a log of a binutils build run; this is from our [[Git +repository's 245f62b817ee31135a190793dddb340f04ac95e6 (2010-12-20) +sources|source_repositories/binutils]], run on kepler.SCHWINGE and grubber. + + $ export LC_ALL=C + $ ../master/configure --prefix="$PWD".install 2>&1 | tee log_build + [...] + $ make SHELL=/bin/bash 2>&1 | tee log_build_ + [...] + +(kepler.SCHWINGE defaults to using /bin/sh for libtool, grubber to /bin/bash; +thus harmonized.) + +On grubber, this takes roughly one hour. + + +## Analysis + +x86 GNU/Linux and GNU/Hurd's configurations are [[slightly +different|binutils]], thus mask out most of the differences that are due to +GNU/Linux defining `-DTRAD_CORE`, `-DHAVE_i386linux_vec` +(`-DSELECT_VECS='[...],&i386linux_vec[...]`), `-DHAVE_i386pei_vec` +(`-DSELECT_VECS='[...],&i386pei_vec[...]`). + + $ diff -wu <(ssh kepler.SCHWINGE 'cd tmp/source/binutils/ && cat hurd/master.build/log_build* | sed -e "s%${PWD}%[...]%g" -e s%-DTRAD_CORE%% -e s%-DHAVE_i386linux_vec%% -e s%-DHAVE_i386pei_vec%% -e s%-DSELECT_VECS=\\\('\\\''\\\?\\\)\&bfd_elf32_i386_vec,\&i386linux_vec,\&i386pei_vec,\&bfd_elf32_little_generic_vec,\&bfd_elf32_big_generic_vec'\\\''\\\?%-DSELECT_VECS=\\\1\\\&bfd_elf32_i386_vec,\\\&bfd_elf32_little_generic_vec,\\\&bfd_elf32_big_generic_vec\\\1%') <(ssh grubber 'cd tmp/binutils/ && cat hurd/master.build/log_build* | sed "s%${PWD}%[...]%g"') > open_issues/binutils/log_build-diff + +[[log_build-diff]]. + + +# Install + + $ make SHELL=/bin/bash install 2>&1 | tee log_install + [...] + +(kepler.SCHWINGE defaults to using /bin/sh, grubber to /bin/bash; thus +harmonized.) + +On grubber, this needs roughly 15 minutes, and takes up around 0.7 GiB. + + +## Analysis + + $ diff -wu <(ssh kepler.SCHWINGE 'cd tmp/source/binutils/ && cat hurd/master.build/log_install | sed -e "s%${PWD}%[...]%g" -e "s%i686-pc-linux-gnu%[ARCH]%g"') <(ssh grubber 'cd tmp/binutils/ && cat hurd/master.build/log_install | sed -e "s%${PWD}%[...]%g" -e "s%i686-unknown-gnu0\.3%[ARCH]%g"') > open_issues/binutils/log_install-diff + +[[log_install-diff]]. + + * `libtool: finish`: `ldconfig` is not run for the Hurd. + + +# Testsuite + + $ make -k check + [...] + +On grubber, this takes roughly one hour. + + $ ssh kepler.SCHWINGE 'cd tmp/source/binutils/ && cat hurd/master.build/*/*.sum hurd/master.build/*/*/*.sum | sed "s%${PWD}%[...]%g"' > open_issues/binutils/sum_linux + $ ssh grubber 'cd tmp/binutils/ && cat hurd/master.build/*/*.sum hurd/master.build/*/*/*.sum | sed "s%${PWD}%[...]%g"' > open_issues/binutils/sum_hurd + +Comparing the results files, [[sum_linux]] to [[sum_hurd]]: + + $ diff -u -F ^Running open_issues/binutils/sum_linux open_issues/binutils/sum_hurd + --- open_issues/binutils/sum_linux 2010-12-20 19:01:06.000000000 +0100 + +++ open_issues/binutils/sum_hurd 2010-12-20 19:01:20.000000000 +0100 + @@ -1,5 +1,5 @@ + -Test Run By thomas on Mon Dec 20 11:34:53 2010 + -Native configuration is i686-pc-linux-gnu + +Test Run By tschwinge on Mon Dec 20 11:35:47 2010 + +Native configuration is i686-unknown-gnu0.3 + + === binutils tests === + + @@ -114,8 +114,8 @@ Running [...]/hurd/master/binutils/tests + + # of expected passes 83 + # of unsupported tests 2 + -Test Run By thomas on Mon Dec 20 11:35:19 2010 + -Native configuration is i686-pc-linux-gnu + +Test Run By tschwinge on Mon Dec 20 11:44:29 2010 + +Native configuration is i686-unknown-gnu0.3 + + === ld tests === + + @@ -296,10 +296,10 @@ Running [...]/hurd/master/ld/testsuite/l + PASS: init array + PASS: fini array + PASS: init array mixed + -PASS: static preinit array + -PASS: static init array + -PASS: static fini array + -PASS: static init array mixed + +XFAIL: static preinit array + +XFAIL: static init array + +XFAIL: static fini array + +XPASS: static init array mixed + Running [...]/hurd/master/ld/testsuite/ld-elf/exclude.exp ... + PASS: ld link shared library + PASS: ld export symbols from archive + @@ -553,8 +553,8 @@ Running [...]/hurd/master/ld/testsuite/l + PASS: ELF DSO weak func last DSO + PASS: ELF weak func first + PASS: ELF weak func last + -PASS: ELF weak func first DSO + -PASS: ELF weak func last DSO + +XFAIL: ELF weak func first DSO + +XFAIL: ELF weak func last DSO + PASS: ELF DSO weak data first + PASS: ELF DSO weak data last + PASS: ELF DSO weak data first DSO + @@ -565,10 +565,10 @@ Running [...]/hurd/master/ld/testsuite/l + PASS: ELF weak data last + PASS: ELF weak data first common + PASS: ELF weak data last common + -PASS: ELF weak data first DSO + -PASS: ELF weak data last DSO + -PASS: ELF weak data first DSO common + -PASS: ELF weak data last DSO common + +XFAIL: ELF weak data first DSO + +XFAIL: ELF weak data last DSO + +XFAIL: ELF weak data first DSO common + +XFAIL: ELF weak data last DSO common + PASS: ELF DSO small bar (size) + PASS: ELF DSO foo with small bar (size) + PASS: ELF DSO big bar (size) + @@ -873,13 +873,14 @@ Running [...]/hurd/master/ld/testsuite/l + + === ld Summary === + + -# of expected passes 618 + -# of expected failures 8 + +# of expected passes 608 + +# of unexpected successes 1 + +# of expected failures 17 + # of untested testcases 6 + /media/data[...]/hurd/master.build/ld/ld-new 2.21.51.20101220 + + -Test Run By thomas on Mon Dec 20 11:34:59 2010 + -Native configuration is i686-pc-linux-gnu + +Test Run By tschwinge on Mon Dec 20 11:38:03 2010 + +Native configuration is i686-unknown-gnu0.3 + + === gas tests === + + + +## Analysis + + * <a name="static">`FAIL: static [...]`</a> + + The testsuite isn't prepared for using `crt0.o` instead of `crt1.o` + depending on whether a static or dynamic executable is created. Documented + in `ld/configure.host`. Perhaps we should finally rewrite this messy code + in glibc to avoid this difference... + + * <a name="64ksec">`FAIL: ld-elf/64ksec`</a> + + On the idle grubber, this one takes a few minutes wall time to complete + successfully ([[I/O system + weakness|performance/io_system/binutils_ld_64ksec]]), so assuming some + system load variation, the testsuite's timeout may trigger. + + * <a name="weak">`FAIL: ELF weak [...]`</a> + + [[I|tschwinge]] suppose this is due to us having an override w.r.t. weak + symbol handling in glibc, needed for our external [[/libpthread]]. TODO: + document properly. |
