AArch64 patches for glibc master.
Carlos O'Donell
carlos@redhat.com
Mon Dec 9 18:56:00 GMT 2013
Marcus,
Attached are the AArch64 patches I've used to build trunk AArch64 glibc
against trunk Linux kernel.
Problems:
* Ran `make regen-ulps' and used that as the baseline for math failures
with new hardware. New ULPS look OK. Not a problem, per se, but you
need to update ULPS.
* New kernel headers define __NR_pwrite and __NR_pwrite64, which means
glibc doesn't know which to choose so it fails to build pwrite64.
I adjusted the headers so that this only fails if they are distinct
syscall numbers. In AArch64's case they are the same values defined
by the UAPI headers.
* Likewise for pwrite.
* Likewise for pread.
* Likewise for pread64.
* For llseek AArch64 doesn't provide its own llseek.c that does nothing
so the default llseek tries to build and with the UAPI headers
not defining __NR_llseek because compat is disabled it fails to build.
I added code to check for this case. That is to say if it's a 64-bit
machine with no llseek, it means that lseek is already 64-bit ready
so use that.
These are hacks. You'll have to take these and polish them. I'm giving
these to you because I think you'd find them useful and I've already
done the work but don't have further time to cleanup.
To reproduce the environment:
#!/bin/bash
# Install the latest linux kernel headers.
cd linux
make headers_install INSTALL_HDR_PATH="$HOME/build-headers/"
# Copy the required selinux headers.
cp -R /usr/include/selinux "$HOME/build-headers/include/"
# Install syscall.h which is a circular dependency. glibc builds
# it but the tests need it before it's installed.
mkdir $HOME/build-headers/include/bits
cp /usr/include/bits/syscall.h $HOME/build-headers/include/bits
# ... then configure glibc with --with-headers="$HOME/build-headers/include"
For your own information the test results were:
make[2]: *** [/localhome/codonell/build/glibc/math/test-fenv.out] Error 1
make[2]: *** [/localhome/codonell/build/glibc/math/basic-test.out] Error 1
make[2]: *** [/localhome/codonell/build/glibc/math/test-fenv-tls.out] Error 1
make[2]: *** [/localhome/codonell/build/glibc/math/test-ldouble.out] Error 1
make[2]: *** [/localhome/codonell/build/glibc/math/test-ildoubl.out] Error 1
- Unknown.
make[1]: *** [stdio-common/tests] Error 2
make[2]: [/localhome/codonell/build/glibc/posix/annexc.out] Error 1 (ignored)
make[2]: *** [/localhome/codonell/build/glibc/nptl/tst-cond16.out] Error 1 (Carlos: Spurious)
- Unknown.
make[2]: *** [/localhome/codonell/build/glibc/nptl/tst-eintr1.out] Error 1
- Known kernel issue with hitting nproc limit on a fast system.
make[1]: *** [nptl/tests] Error 2
make[2]: *** [/localhome/codonell/build/glibc/rt/tst-mqueue5.out] Error 1 (Carlos: Spurious)
- Unknown.
make[1]: *** [rt/tests] Error 2
Pretty good overall. The two spurious issues are problematic and require
analysis. I've seen tst-mqueue5 on other targets with weakly ordered memory
e.g. ppc64.
You should fix the build failures for 2.19 though. You have until the end
of December to get these fixes in place before the release code freeze.
After the freeze you can still get them in but you need explicit ACK from
the release manager (Allan McRae).
Shout if you need help.
Cheers,
Carlos.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: aarch64.diff
Type: text/x-patch
Size: 87003 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20131209/2696000c/attachment.bin>
More information about the Libc-alpha
mailing list