Here's what's to be done for maintaining glibc.

General information

Sources

Debian Cheat Sheet

Configuration

Last reviewed up to the Git mirror's d40c5d54cb551acba4ef1617464760c5b3d41a14 (2012-02-28) sources.

  • t/dup3

    tschwinge is not convinced that 22542dcc89805af8d9bd9209129259d2737372b5 (and then also ff3f3a789ba08b656dbaa3901091b6410bb883f8) are correct.

    • 94b7cc3711b0b74c1d3ae18b9a2e019e51a8e0bf -- dup3 changes; relevant for t/dup3: hidden def. ed690b2f24bbc4d9c541fc81a7c67e6dc5678a96 -- why not for dup3, too? Because it is a syscall (that is always inlined)?
  • t/hurdsig-fixes

    hurdsig.c: In function '_hurd_internal_post_signal':
    hurdsig.c:1188:26: warning: 'pending' may be used uninitialized in this function [-Wmaybe-uninitialized]
    hurdsig.c:1168:12: note: 'pending' was declared here
    
  • t/init-first.c

    Follow up here: id:"20070722171859.GN25744@fencepost.gnu.org" or id:"87mxe4kwws.fsf@gnu.org". Close GNU Savannah bug #17647. Debian: id:"E1Qup1U-0006Zc-39@vasks.debian.org" (part of Ludo's patch; the part that is not harmful to GCC 4.4).

  • t/kernel-features.h_includes

    Before running tg update, review for additional changes:

    $ git log --reverse --pretty=fuller --stat=$COLUMNS,$COLUMNS -p -C --cc -S__ASSUME_ top-bases/t/kernel-features.h_includes..baseline
    
  • t/sysvshm

    ../sysdeps/mach/hurd/shmat.c: In function '__shmat':
    ../sysdeps/mach/hurd/shmat.c:57:7: warning: implicit declaration of function '__close' [-Wimplicit-function-declaration]
    ../sysdeps/mach/hurd/shmget.c: In function 'get_exclusive':
    ../sysdeps/mach/hurd/shmget.c:85:8: warning: variable 'is_private' set but not used [-Wunused-but-set-variable]
    ../sysdeps/mach/hurd/shmget.c:102:8: warning: 'dir' may be used uninitialized in this function [-Wmaybe-uninitialized]
    ../sysdeps/mach/hurd/shmget.c:102:8: warning: 'file' may be used uninitialized in this function [-Wmaybe-uninitialized]
    
  • t/tls

  • t/tls-threadvar

  • t/verify.h

    People didn't like this too much.

    Other examples:

    • 11988f8f9656042c3dfd9002ac85dff33173b9bd -- static_assert
  • cross-gnu, without --disable-multi-arch

    i686-pc-gnu-gcc ../sysdeps/i386/i686/multiarch/strcmp.S -c [...]
    ../sysdeps/i386/i686/multiarch/../strcmp.S: Assembler messages:
    ../sysdeps/i386/i686/multiarch/../strcmp.S:31: Error: symbol `strcmp' is already defined
    make[2]: *** [/media/boole-data/thomas/tmp/gnu-0/src/glibc.obj/string/strcmp.o] Error 1
    make[2]: Leaving directory `/media/boole-data/thomas/tmp/gnu-0/src/glibc/string'
    

    Might simply be a missing patch(es) from master.

  • --build=X

    long double test: due to cross_compiling = maybe wants to execute a file, which fails. Thus --build=X has to be set.

  • Check what all these are:

    running configure fragment for sysdeps/mach/hurd
    checking Hurd header version... ok
    running configure fragment for sysdeps/mach
    checking for i586-pc-gnu-mig... i586-pc-gnu-mig
    checking for mach/mach_types.h... yes
    checking for mach/mach_types.defs... yes
    checking for task_t in mach/mach_types.h... task_t
    checking for thread_t in mach/mach_types.h... thread_t
    checking for creation_time in task_basic_info... yes
    checking for mach/mach.defs... yes
    checking for mach/mach4.defs... yes
    checking for mach/clock.defs... no
    checking for mach/clock_priv.defs... no
    checking for mach/host_priv.defs... no
    checking for mach/host_security.defs... no
    checking for mach/ledger.defs... no
    checking for mach/lock_set.defs... no
    checking for mach/processor.defs... no
    checking for mach/processor_set.defs... no
    checking for mach/task.defs... no
    checking for mach/thread_act.defs... no
    checking for mach/vm_map.defs... no
    checking for mach/memory_object.defs... yes
    checking for mach/memory_object_default.defs... yes
    checking for mach/default_pager.defs... yes
    checking for mach/i386/mach_i386.defs... yes
    checking for egrep... grep -E
    checking for host_page_size in mach_host.defs... no
    checking for mach/machine/ndr_def.h... no
    checking for machine/ndr_def.h... no
    checking for i386_io_perm_modify in mach_i386.defs... yes
    checking for i386_set_gdt in mach_i386.defs... yes
    checking whether i586-pc-gnu-mig supports the retcode keyword... yes
    
  • elf/stackguard-macros.h

    See t/tls.

  • Verify 77c84aeb81808c3109665949448dba59965c391e against ~/shared/glibc/make_TAGS.patch.

  • HP_SMALL_TIMING_AVAIL not defined anywhere.

  • Unify CPUCLOCK_WHICH stuff in clock_* files.

  • Not all tests are re-run in a make -k tests; make tests-clean; make -k tests cycle. For example, after make tests-clean:

    $ find ./ -name \*.out
    ./localedata/tst-locale.out
    ./localedata/sort-test.out
    ./localedata/de_DE.out
    ./localedata/en_US.out
    ./localedata/da_DK.out
    ./localedata/hr_HR.out
    ./localedata/sv_SE.out
    ./localedata/tr_TR.out
    ./localedata/fr_FR.out
    ./localedata/si_LK.out
    ./localedata/tst-mbswcs.out
    ./iconvdata/iconv-test.out
    ./iconvdata/tst-tables.out
    ./stdlib/isomac.out
    ./posix/wordexp-tst.out
    ./posix/annexc.out
    ./posix/tst-getconf.out
    ./elf/check-textrel.out
    ./elf/check-execstack.out
    ./elf/check-localplt.out
    ./c++-types-check.out
    ./check-local-headers.out
    ./begin-end-check.out
    
  • CPUCLOCK_WHICH, t/cpuclock

    /media/boole-data/thomas/tmp/gnu-0/src/glibc.obj/rt/librt_pic.a(clock_settime.os): In function `clock_settime':
    /media/boole-data/thomas/tmp/gnu-0/src/glibc/rt/../sysdeps/unix/clock_settime.c:113: undefined reference to `CPUCLOCK_WHICH'
    /media/boole-data/thomas/tmp/gnu-0/src/glibc/rt/../sysdeps/unix/clock_settime.c:114: undefined reference to `CPUCLOCK_WHICH'
    collect2: error: ld returned 1 exit status
    make[2]: *** [/media/boole-data/thomas/tmp/gnu-0/src/glibc.obj/rt/librt.so] Error 1
    make[2]: Leaving directory `/media/boole-data/thomas/tmp/gnu-0/src/glibc/rt'
    make[1]: *** [rt/others] Error 2
    make[1]: Leaving directory `/media/boole-data/thomas/tmp/gnu-0/src/glibc'
    make: *** [all] Error 2
    
  • Missing interfaces, amongst many more.

    Many more are missing, some of which have been announced in NEWS, others typically haven't (like new flags to existing functions). Typically, porters will notice missing functionaly. But in case you're looking for something to work on, here's a list.

    AT_EMPTY_PATH, CLOCK_BOOTTIME, CLOCK_BOOTTIME_ALARM, CLOCK_REALTIME_ALARM, O_PATH, PTRACE_* (for example, cbff0d9689c4d68578b6a4f0a17807232506ea27), RLIMIT_RTTIME, SEEK_DATA (unistd.h), SEEK_HOLE (unistd.h) clock_adjtime, fallocate, fallocate64, getcontext (and setcontext), name_to_handle_at, open_by_handle_at, process_vm_readv, process_vm_writev, sendmmsg, setns, sync_file_range

    • syncfs

      We should be easily able to implement that one.

    • futimesat, readlinkat, renameat

      If we have all of 'em (check Linux kernel), #define __ASSUME_ATFCTS.

    • bits/stat.h [__USE_ATFILE]: UTIME_NOW, UTIME_OMIT

    • io/fcntl.h [__USE_ATFILE]

      Do we support AT_FDCWD et al.?

    • MAP_POPULATE (mmap, sys/mman.h) -- Populate (prefault) pagetables.

      Some Linux kernel version, mm/mmap.c:

          if (vm_flags & VM_LOCKED) {
                  if (!mlock_vma_pages_range(vma, addr, addr + len))
                          mm->locked_vm += (len >> PAGE_SHIFT);
          } else if ((flags & MAP_POPULATE) && !(flags & MAP_NONBLOCK))
                  make_pages_present(addr, addr + len);
          return addr;
      

      t/mmap.

      Is only advisory, so can worked around with #define 0.

    • t/opendirat: opendirat (scandirat, scandirat64)

      Need changes equivalent to c55fbd1ea768f9fdef34a01377702c0d72cbc213 + 14d96785125abee5e9a49a1c3037f35a581750bd.

    • madvise, MADV_DONTNEED

      glibc madvise vs static linking.

    • msync

      Then define _POSIX_MAPPED_FILES, _POSIX_SYNCHRONIZED_IO.

    • sys/epoll.h

      Used by wayland, for example.

    • sys/eventfd.h

    • sys/inotify.h

    • sys/signalfd.h

    • sys/timerfd.h

    • timespec_get (74033a2507841cf077e31221de2481ff30b43d51)

  • Create t/cleanup_kernel-features.h.

  • Add tests from Linux kernel commit messages for t/dup3 et al.

  • In sysdeps/unix/sysv/linux/Makefile, there are a bunch of -DHAVE_SENDFILE -- but we do have sendfile, too.

  • /usr/include/pthread.h overwrite issue

    make, after editing nss/nss_db/db-initgroups.c:

    [...]
    make[2]: Leaving directory `/media/erich/home/thomas/tmp/glibc/tschwinge/Roger_Whittaker/resolv'
    make  subdir=nss -C nss ..=../ others
    make[2]: Entering directory `/media/erich/home/thomas/tmp/glibc/tschwinge/Roger_Whittaker/nss'
    /usr/bin/install -c -m 644 ../include/pthread.h /usr/include/pthread.h
    /usr/bin/install: cannot remove `/usr/include/pthread.h': Permission denied
    make[2]: *** [/usr/include/pthread.h] Error 1
    make[2]: Leaving directory `/media/erich/home/thomas/tmp/glibc/tschwinge/Roger_Whittaker/nss'
    make[1]: *** [nss/others] Error 2
    make[1]: Leaving directory `/media/erich/home/thomas/tmp/glibc/tschwinge/Roger_Whittaker'
    make: *** [all] Error 2
    

    See id:"871uv99c59.fsf@kepler.schwinge.homeip.net". Passing install_root=/INVALID to make/make check is a cheap cure. For make install, prepending an additional slash to install_root (that is, install_root=//[...]) is enough to obfuscate the Makefile rules.

  • sysdeps/unix/sysv/linux/syslog.c

  • Verify baseline changes, if we need any follow-up changes:

    • a11ec63713ea3903c482dc907a108be404191a02
    • 7e2b0c8562b35155820f87b5ff02a8b6850344cc
    • 8c0677fe5d91b7269364ca08fa08ed09e4c2d8c9
    • 5a2a1d75043138e696222ced4560de2fb90b8024
    • 5ae958d74180e2572d198bd7872c86f391de6da7
    • 5b08ac571ff8e94fe96511a532f0d20997de5f52
    • 3d04ff3a5d3ce3616837e1d15e03b6e1b360cf26
    • b2ef2c014b9c66995a3eb4f310ae7c5c510279bf
    • 63c4ed22b5048c8701d8806026c23cc95f0df756
    • ac2b484c02b01307ab6bbe5d45ddbf16d64edf8c
    • e35fcef8b739ed24e083ff8a3078ac14e101cf67
    • 6fb8cbcb58a29fff73eb2101b34caa19a7f88eba
    • 8a492a675e566dc1e666df0a86cbf541442cb179
    • 5dbc3b6cc0b759bf4b22d851ccb9cbf3e3cbc6ef
    • c86434ccb576a3ce35b5a74f72b9f03bd45b522a
    • d22e4cc9397ed41534c9422d0b0ffef8c77bfa53
    • 15bac72bac03faeb3b725b1d208c62160f0c3ad7
    • c08fb0d7bba4015078406b28d3906ccc5fda9d5a
    • 10b3bedcb03386cc280113f552479793e4bac35f
    • 754f7da38b0904b4b989d3500cc8dd5be625cf6a
    • 3cdaa6adb113a088fdfb87aa6d7747557eccc58d
    • 962dba7828cf251a9025ccb43bc6effa30379b72
    • 3162f12e58c3a848db883916843b332b9f8c9d39
    • 1c06ba3100847da6bd1f2e011dc24fa8debd9615
    • 84b9230c404aed4fd3a7bb3d045ca367043dde8c
    • 090555538d4347a52807ba9f08cf20ed13206afe
    • 817328eea788c746131cf151b64fd250200da333
    • c3758feebf7c8786231465da664743c6f0ec79cc
    • 1ac7a2c7b448c851eb8976fcc290a906a4075203
    • c21cc9bcb38a87ff638d1099ca871d94a2192b31
    • 6484ba5ef092b62b7d2112c0d976dbd6d1a40fde
    • b8b4863d78bf26b39918fc753b03ed98ef262903
    • b76b818e6fe2061e778b3a9bbe63c554c3f9b3c1
    • 8e9f92e9d5d7737afdacf79b76d98c4c42980508 -- _dl_map_object in sysdeps/mach/hurd/dl-sysdep.c
    • 0e516e0e14f2f9783a21cd1727bc53776341f857
    • a1fb5e3ebe9d38b5ae6c5bfbfaa04882d52355bc
    • cf7c9078a5acdbb435498ace92cd81009637a971
    • db753e2cfb2051ebf20dc089f87c5b1297cc2cff
    • 4a531bb0b3b582cb693de9f76d2d97d970f9a5d5 -- looks good.
    • 5bd6dc5c2c68fe98691db9b40f87d9b68ea9565b
    • 451f001b50870604e1f2daef12f04f9f460d3997 + a85b5cb4d4a5fc56e2b38638d270bf2daa67eb6c -- BZ10484. nptl/Versions [libc] (GLIBC_PRIVATE): Export __libc_alloca_cutoff. We don't even define it yet. Also see glibc libc alloca cutoff should be lowered.
    • 1086d70d916fd0eb969b3d89ff88abd35f6a5c34
    • cfa28e560ef69372b9e15e9a2d924a0fbcfc7bca
    • 8cf8ce1702c354a8266e3cfa6ab54c2467d1873f
    • 68dc949774cb651d53541df4abdc60327f7e096b
    • 70181fddf1467996bea393d13294ffe76b8a0853
    • a77e8cbc394ab098aa1fc3f0a6645a38348d21ca
    • 32465c3ea007065acd8ca8199f130cdf4068130d
    • 18ba70a559c52719fd94a713cc380514d9d19125
    • 620a05296fe3380b7441ba7720e8b25c48a8c28c
    • [low] e6c61494125126d2ba77e5d99f83887a2ed49783 -- Fix memory leak in TLS of loaded objects. Do we need to replicate nptl/allocatestack.c hunk?
    • 6e04cbbe79f5965809fdbf1f28d7ae8b4af74d31 + 1bfbe0d335d3fc44a492648b974a0db19975f6d8 -- Fix pathconf(_PC_BUF_SIZE).
    • 28377d1bf58625172a1734b92e835591d4d23a18 -- Optimize fdopendir a bit.
    • 7fb90fb89bbdf273ab7ab96517fe1b156cd7aee1 + 6fb2dde3f1aa3a1419cb6c2dfa53dd1d506722a4 -- Fix Linux getcwd for long paths
    • [low] open issue libpthread 5bdcc10322c488f53557440acf71623d8b313ab5 -- return EAGAIN instead of ENOMEM.
    • f574184a0e4b6ed69a5d9a3234543fba6d2a7367 -- Fix sched_setscheduler call in spawn implementation
    • 3b85df27870a47ed1db84e948e37a5a50a178a92 + f50ef8f1efdd1f2b040acbb8324604f168e8832a -- sysconf
    • 68a3f91fcad464c4737c1eaed4ae0bf539801fb2 -- Fix reporting of invalid timeouts in emulated pselect
    • ea389b12b3b65c4a7fa91fa76f8c99867eb37865 -- strndup -> __strndup; strndupa?
    • 7e4afad5bcf49e03c3b987399c6a8f66a9018660 -- Nicer output for negative error numbers in strerror_r. Change needed for sysdeps/mach/_strerror.c?
    • 7ea72f99966a65a56aedba817ee2413ff9b1f23c + adcd5c15d2a37794d021104160b425ff61f88219 -- Always fill output buffer in XPG strerror function. Change needed for sysdeps/mach/xpg-strerror.c?
    • a91710475294c66d0005bdaae0919d36ef8ce3d2 -- sotruss. Does it work?
    • b1ebd700c5295a449f8d114740f0d1fb6e6b2eb5 + 80e2212d8e59933a1641f029ebd360526ff0e074 + 4997db742946d08be4378cf91221f558f928bc73 -- Don't document si_code used for raise(). Also for bits/siginfo.h?
    • 11988f8f9656042c3dfd9002ac85dff33173b9bd -- pldd, Does it work? Probably not: needs /proc/[PID]/auxv, /proc/[PID]/exe, /proc/[PID]/mem (, procfs).
    • 9113ea1f3f29b3aee710efc829e85a9772bcb836 -- --experimental-malloc. Watch what happens.
    • 4e34ac6a1e256f40ab0d8eeed37aa1ea83440e76 -- -defsym=_begin=0. Watch what happens. Native build: apparently OK.
    • f781ef4015504e8a1da649c266584976238aa079 (--with-default-link) + 1b74661a6b93a892ecb1c717dedeedba5c2a976c + fd5e21c75d8e9221d766f4bc922a237265514ec2. Watch what happens. Native build: use-default-link = no.
    • de283087c74f720cf8a7171972e72b5fa2b45e79 (Handle Lustre filesystem), 4e5f31c847982997c856f03bbc35134e9fd0f61f (Handle ext4 in {,f}pathconf). What about stuff like that for us?
    • d30cf5bb00bfb286ff14d931fb69f5b53724bcdc (Find readelf with AC_CHECK_TOOL). Aren't there more in other configure.in and Makefile files?
    • 7a03a9c8c4b37b88ac5e82b557d974f3161ddaf9 (Add read barriers in cancellation initialization). Is this needed in other places, too?
    • [low] 5744c68d78f6ca6c6500e2c8d3d85b3a31f4ed2a (Align x86 TCB to 64 bytes). Probably we have hidden somewhere such a constant, too (in libpthread).
    • d96de9634a334af16c0ac711074c15ac1762b23c + ecb1482ffd85fd3279642b1dc045aa867ad4d415 (Try shell in posix_spawn* only in compat mode). Change looks good, but what about SPAWN_XFLAGS_TRY_SHELL for us?
    • 3ce1f2959437e952b9db4eaeed2407424f11a4d1 (Make several tool features mandatory and simplify the code.). Generally looks good.
      • locale/global-locale.c: Apparently, no one is using _HURD_THREADVAR_LOCALE. But it is exported via hurd/threadvar.h.
      • mach/devstream.c: reversed. Fixed in t/repair-mach_devstream.c.
      • malloc/arena.c: should be OK.
    • Remove support for !USE___THREAD. d063d164335938d557460bebaa7cfe388157b627 (generally looks good; csu/errno-loc.c (should be OK); include/errno.h (fixed)) + (de82006d43e198fd162807c9adc720c7ebd728a3 + 037e9fe21c92216ef7032ea2796781ec27ca182a) + 995a80dfbcb443ead5aa22682c884ec5c827a2ea (discussing) + bc7e1c3667b577ad418f7520df2a7dbccea04ee9 (should be ok).
    • [OK] 22a89187139a9083ca73989bfd11597e0f85cb61 (malloc: Remove all kinds of unused configuration options and dead code.). NO_STARTER changes (should be OK).
    • [high] pagesize, 02d46fc4b969e25e4ba0c54aa95fa98d7279bd05 (Simplify malloc initialization); aebae0537dcb408100b88c6b7647a7e858c43237, BZ 11929. Is this all kosher for us? See id:"87mxd9hl2n.fsf@kepler.schwinge.homeip.net".
    • [OK] 83cd14204559abbb52635006832eaf4d2f42514a (Remove --wth-tls option, TLS support is required).
    • a7c8e6a1478de9f990b11e5e853318ccbe4330f2 (Fix invalid conversion in __cmsg_nxthdr). Probably just a C++ thing and not relevant for us; see id:"87r52nk1kx.fsf@kepler.schwinge.homeip.net".
    • [low] mmap, 110946e473b38fc3896212e416d9d7064fecd5b7. Kosher with respect to our mmap peculiarities?
    • [OK] __attribute__ ((__leaf__)), BZ #13344, aa78043a4aafe5db1a1a76d544a833b63b4c5f5c + 49a43d80ec5c97cf6136b1ee2687414773b2d5aa + 3871f58f065dac3917eb18220a479e9591769c8c + 9beb2334930db81ceada5aa6051fe5ac0554db32 + 0ffc4f3ebaace42cd545db55a2ac50b6e0cc7d89 + edc5984d4d18296d7aa3d8f4ed8f7336a743170e + 57769839788e2c62b68d9dfbf4b35052321278ba. http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html.
    • baseline
    • [low] conformtest, 3134156779108fe8b46e0f4cd60d837572faaa93 + 4efeffc1d583597e4f52985b9747269e47b754e2 + d94a4670800de6e8f088b8630ad5142866127980 -- what does it do for us?

Build

Here's a log of a glibc build run; this is from our Git repository's 001500ab4e25e6b8cf83eb9539e362ed4803d2c1 (2012-04-05; 2012-02-25) sources, run on coulomb.SCHWINGE.

$ export LC_ALL=C
$ ../Roger_Whittaker/configure AUTOCONF=: --prefix=/usr --disable-profile --disable-multi-arch --build=i486-gnu --host=i486-gnu CC=gcc-4.6 CXX=g++-4.6 2>&1 | tee log_build
[...]
$ make install_root=/INVALID 2>&1 | tee log_build_
[...]

This takes up around 500 MiB and needs roughly X min on kepler.SCHWINGE and 110 min on coulomb.SCHWINGE (GCC 4.4/4.5/4.6).

Analysis

TODO.

  • With GCC 4.5, there's a ton of these warnings:

    hurd/hurd.h: In function '__hurd_fail':
    hurd/hurd.h:73: warning: case value '0' not in enumerated type 'error_t'
    

    ... as well as a few individual instances:

    hurdselect.c: In function '_hurd_select':
    hurdselect.c:265: warning: case value '0' not in enumerated type 'error_t'
    get-host.c: In function '_hurd_get_host_config':
    get-host.c:38: warning: case value '0' not in enumerated type 'error_t'
    hurdmsg.c: In function '_S_msg_get_init_ints':
    hurdmsg.c:186: warning: case value '0' not in enumerated type 'error_t'
    hurdmsg.c: In function '_S_msg_set_init_ints':
    hurdmsg.c:273: warning: case value '0' not in enumerated type 'error_t'
    intr-msg.c: In function '_hurd_intr_rpc_mach_msg':
    intr-msg.c:363: warning: case value '0' not in enumerated type 'error_t'
    sysdeps/mach/hurd/setitimer.c: In function 'timer_thread':
    sysdeps/mach/hurd/setitimer.c:117: warning: case value '0' not in enumerated type 'error_t'
    sysdeps/mach/hurd/wait4.c: In function '__wait4':
    sysdeps/mach/hurd/wait4.c:40: warning: case value '0' not in enumerated type 'error_t'
    sysdeps/mach/hurd/fork.c: In function '__fork':
    sysdeps/mach/hurd/fork.c:423: warning: case value '0' not in enumerated type 'error_t'
    sysdeps/mach/hurd/spawni.c: In function '__spawni':
    sysdeps/mach/hurd/spawni.c:600: warning: case value '0' not in enumerated type 'error_t'
    sysdeps/mach/hurd/setpriority.c: In function 'setonepriority':
    sysdeps/mach/hurd/setpriority.c:66: warning: case value '0' not in enumerated type 'error_t'
    sysdeps/mach/hurd/ioctl.c: In function 'send_rpc':
    sysdeps/mach/hurd/ioctl.c:177: warning: case value '0' not in enumerated type 'error_t'
    sysdeps/mach/hurd/ioctl.c: In function '__ioctl':
    sysdeps/mach/hurd/ioctl.c:306: warning: case value '0' not in enumerated type 'error_t'
    
  • baseline fd5bdc0924e0cfd1688b632068c1b26f3b0c88da..2ba92745c36eb3c3f3af0ce1b0aebd255c63a13b introduces:

    genops.c: In function '_IO_flush_all_lockp':
    genops.c:869:3: warning: passing argument 1 of '__save_FCT' makes pointer from integer without a cast [enabled by default]
    genops.c:869:3: note: expected 'void *' but argument is of type 'int'
    

    A similar warning has already been (and still is) seen here:

    dl-iteratephdr.c:83:3: warning: passing argument 1 of '__save_FCT' makes pointer from integer without a cast [enabled by default]
    dl-iteratephdr.c:83:3: note: expected 'void *' but argument is of type 'int'
    
  • baseline fd5bdc0924e0cfd1688b632068c1b26f3b0c88da..2ba92745c36eb3c3f3af0ce1b0aebd255c63a13b (or probably Samuel's mmap backport) introduces:

    ../sysdeps/mach/hurd/mmap.c: In function '__mmap':
    ../sysdeps/mach/hurd/mmap.c:54:15: warning: comparison between pointer and integer [enabled by default]
    ../sysdeps/mach/hurd/mmap.c:66:21: warning: comparison between pointer and integer [enabled by default]
    ../sysdeps/mach/hurd/mmap.c:143:13: warning: comparison between pointer and integer [enabled by default]
    ../sysdeps/mach/hurd/mmap.c:165:24: warning: comparison between pointer and integer [enabled by default]
    
  • baseline fd5bdc0924e0cfd1688b632068c1b26f3b0c88da..2ba92745c36eb3c3f3af0ce1b0aebd255c63a13b introduces:

    ../sysdeps/i386/fpu/bits/fenv.h: Assembler messages:
    ../sysdeps/i386/fpu/bits/fenv.h:125: Warning: translating to `fdivp %st,%st(1)'
    
  • baseline fd5bdc0924e0cfd1688b632068c1b26f3b0c88da..2ba92745c36eb3c3f3af0ce1b0aebd255c63a13b introduces:

    nscd_gethst_r.c: In function '__nscd_get_nl_timestamp':
    nscd_gethst_r.c:112:4: warning: implicit declaration of function 'time' [-Wimplicit-function-declaration]
    

    This was already present before:

    nscd_gethst_r.c: In function 'nscd_gethst_r':
    nscd_gethst_r.c:426:5: warning: implicit declaration of function '__close' [-Wimplicit-function-declaration]
    
  • baseline 2ba92745c36eb3c3f3af0ce1b0aebd255c63a13b..7a270350a9bc3110cd5ba12bbd8c5c8c365e0032 introduces:

    In file included from regex.c:62:0:
    regcomp.c: In function 'init_word_char':
    regcomp.c:935:4: warning: large integer implicitly truncated to unsigned type [-Woverflow]
    regcomp.c:936:4: warning: large integer implicitly truncated to unsigned type [-Woverflow]
    
    
    In file included from pldd.c:230:0:
    pldd-xx.c:26:0: warning: "static_assert" redefined [enabled by default]
    ../assert/assert.h:119:0: note: this is the location of the previous definition
    
    
    tst-relsort1.c:6:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
    

Install

TODO.

$ make install_root="$PWD".install install 2>&1 | tee log_install
[...]

This takes up around 100 MiB, and needs roughly X min on kepler.SCHWINGE and 18 min on coulomb.SCHWINGE.

Analysis

TODO.

Testsuite

$ make -k install_root=/INVALID check 2>&1 | tee log_check
[...]

This needs roughly 60 min on coulomb.SCHWINGE.

Analysis

There is quite a baseline of failures.

Additional Failures Compared to Debian

$ bash ~/tmp/glibc/debian/eglibc-2.13/debian/testsuite-checking/convertlog.sh log_check  > log_check.filtered
$ bash ~/tmp/glibc/debian/eglibc-2.13/debian/testsuite-checking/compare.sh ~/tmp/glibc/debian/eglibc-2.13/debian/testsuite-checking/expected-results-i486-gnu-libc log_check.filtered
  • bug-atexit3.out, debug/tst-chk4, debug/tst-chk5, debug/tst-chk6, debug/tst-lfschk4, debug/tst-lfschk5, debug/tst-lfschk6

    dlopen failed: libstdc++.so.6: cannot open shared object file: No such file or directory
    

    See id:"20090420002344.11798.qmail@s461.sureserver.com". Hacked around with ln -s /usr/lib/i386-*gnu/libstdc++.so.6 /lib/i386-*gnu/libpthread-stubs.so.0 /lib/i386-*gnu/libgcc_s.so.1 ./. This is a bug in the glibc test harness. Should probably use some configure magic akin to the fixincludes stuff (gcc-4.4 -print-file-name=libstdc++.so.6, etc.).

  • debug/tst-chk4, debug/tst-chk5, debug/tst-chk6, debug/tst-lfschk4, debug/tst-lfschk5, debug/tst-lfschk6

    Fail in the same way as the C ones, tst-chk1..3.

  • io/ftwtest, posix/globtest, iconvdata/iconv-test, intl/tst-gettext, malloc/tst-mtrace, elf/tst-pathopt, iconvdata/tst-tables, grp/tst_fgetgrent, dlfcn/tststatic, dlfcn/tststatic2, posix/wordexp-tst, localedata/bug-setlocale1.out, posix/tst-getconf

    /home/thomas/tmp/glibc/tschwinge/Roger_Whittaker.build-gcc-4.4-486.O/io/ftwtest: error while loading shared libraries: libmachuser.so.1: cannot open shared object file: No such file or directory
    

    Looking into localedata/bug-setlocale1.c, it is clear what it going on: only the root of the build directory is added for --library-path, but none of the other directories that are additionally used. This is a bug in the glibc test harness. Hacked around by ln -s mach/libmachuser.so.1 hurd/libhurduser.so.0.3 ./. Hopefully the other instances are similar.

  • posix/tst-getconf

    Ends with:

    getconf POSIX_ALLOC_SIZE_MIN /: /home/thomas/tmp/glibc/tschwinge/Roger_Whittaker.build-gcc-4.4-486/posix/getconf: pathconf: /: Invalid argument
    
  • dlfcn/tststatic, dlfcn/tststatic2

    No output, SEGFAULT.

  • math/test-idouble, math/test-ifloat, math/test-ildoubl, math/test-ldouble

    SIGSEGV.

  • rt/tst-aio10, rt/tst-aio9

    /home/thomas/tmp/glibc/tschwinge/Roger_Whittaker.build-gcc-4.4-486.O/rt/tst-aio10.o: In function `do_test':
    tst-aio10.c:(.text+0x1b): undefined reference to `pthread_self'
    tst-aio10.c:(.text+0x78): undefined reference to `pthread_barrier_init'
    tst-aio10.c:(.text+0xf7): undefined reference to `pthread_create'
    tst-aio10.c:(.text+0x10b): undefined reference to `pthread_barrier_wait'
    /home/thomas/tmp/glibc/tschwinge/Roger_Whittaker.build-gcc-4.4-486.O/rt/tst-aio10.o: In function `tf':
    tst-aio10.c:(.text+0x5ae): undefined reference to `pthread_barrier_wait'
    tst-aio10.c:(.text+0x5ef): undefined reference to `pthread_kill'
    collect2: ld returned 1 exit status
    make[2]: *** [/home/thomas/tmp/glibc/tschwinge/Roger_Whittaker.build-gcc-4.4-486.O/rt/tst-aio10] Error 1
    
  • rt-tst-aio2, rt-tst-aio3, rt/tst-mqueue3, rt/tst-mqueue6, rt/tst-mqueue8, elf/tst-thrlock, rt/tst-timer3, nss//libnss_test1.so

    Compilation: missing pthread_attr_init, pthread_barrier_init, pthread_create, etc.

  • elf/tst-audit1, elf/tst-audit2

    SIGKILL.

  • inet/tst-ether_line

    tst-ether_line.c:19: error: 'ETH_ALEN' undeclared (first use in this function)
    

    Will either need a hurd/netinet/if_ether.h that includes <net/if_ether.h>, or can do that in the generic netinet/if_ether.h? See also sourceware.org bug #11142.

  • gmon/tst-sprofil

    Floating point exception
    
  • posix/bug-regex31-mem, posix/tst-fnmatch-mem

    output files: some memory not freed.

  • assert/test-assert.out

    Fails sometimes...

  • stdlib/bug-getcontext.out

    getcontext failed, errno: 1073741902.
    

    Is not implemented; see above.

  • elf/tst-unique3lib.so, elf/tst-unique3lib2.so, elf/tst-unique4lib.so

    Only with GCC 4.4; no longer with 4.5 or 4.6:

    /home/thomas/tmp/glibc/tschwinge/Roger_Whittaker.build-gcc-4.4-486/elf/tst-unique3lib.os:(.data.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0): undefined reference to `__gxx_personality_v0'
    
  • math/test-fenv.out

    Used to fail (is listed in Debian eglibc-2.13-21's expected-results-i486-gnu-libc), but something between 22bcba37dd3b782b1a1ec7bf51da468e48f4d2eb and 005b7594ffe209639dd1ef2b9ed9a4c22307dec1 causes it to passe -- very likely Jérémie's signaling work.

  • posix/tst-waitid.out

    Fails sometimes (is listed in Debian eglibc-2.13-21's expected-results-i486-gnu-libc).

OLD

configure --without-cvs --prefix= --disable-profile --build=i486-gnu --host=i486-gnu

make -k check changes from 538603af899057a9ef9583cc447804ec602a45e5 to c9fd33ef070def49c078c94f8d9bc9f8a8e267f7.

Configured with --prefix=/usr instead of --prefix=.

Resolved failures:

  • localedata/tst_mblen.out
  • localedata/tst_mbrlen.out
  • localedata/tst_mbrtowc.out
  • localedata/tst_mbsrtowcs.out
  • localedata/tst_mbstowcs.out
  • localedata/tst_mbtowc.out
  • localedata/tst_swscanf.out
  • localedata/tst_wcrtomb.out
  • localedata/tst_wcsrtombs.out
  • localedata/tst_wcstombs.out
  • localedata/tst_wctob.out
  • localedata/tst_wctomb.out
  • localedata/bug-iconv-trans.out
  • localedata/tst-wctype.out
  • math/test-float.out
  • math/test-double.out
  • posix/tst-vfork3-mem
  • io/tst-mkdirat.out

New:

  • A lot of error while loading shared libraries: libmachuser.so.1: cannot open shared object file: No such file or directory. Is it perhaps picking that library up from $prefix/lib/?

    New failures; likely due to that:

    • iconvdata/iconv-test.out
    • iconvdata/tst-tables.out
    • malloc/tst-mtrace.out
    • grp/tst_fgetgrent.out
    • posix/globtest.out
    • posix/wordexp-tst.out
    • io/ftwtest.out
    • elf/tst-pathopt.out

    Changed failures; likely due to that:

    • debug/tst-chk4.out / debug/tst-chk5.out

      -error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
      +error while loading shared libraries: libpthread-stubs.so.0: cannot open shared object file: No such file or directory
      

Changes to b367d4f996512af6841c3cefdb943cb0a826a6a1: nothing interesting.


Changes to b85c54a1f7e5241c1ef99dfeaecbd1bf4117564f: nothing interesting.

New failures:

  • posix/bug-glob3.out (SEGFAULT; but also on Linux)
  • wctype/bug-wctypeh.o (compile error; but also on Linux)