[PATCH RFC] Support newer kernels lacking noat syscalls
Mark Salter
msalter at redhat.com
Thu Apr 26 13:32:44 UTC 2012
On Tue, 2012-04-24 at 17:48 +0200, Bernhard Reutner-Fischer wrote:
> On 24 April 2012 17:35, Mark Salter <msalter at redhat.com> wrote:
> > On Tue, 2012-04-24 at 17:00 +0200, Bernhard Reutner-Fischer wrote:
> >> On 24 April 2012 16:50, Mark Salter <msalter at redhat.com> wrote:
> >> > Upstream Linux kernel development is requiring new architecture ports to
> >> > use only the default set of generic syscalls. This means familiar syscalls
> >>
> >> http://lists.uclibc.org/pipermail/uclibc/2011-September/045726.html
> >>
> >
> > Heh. I knew there had to be patch out there. I saw some other older ones
> > for specific syscalls, but never saw yours in my searching.
> >
> > Looks pretty close to what I've been using but doesn't seem to have
> > generated much interest. I missed the no_cancel bits, but I figured
> > there would be such things broken in my patch too.
> >
> > So, is there any other concerns besides the cancellation? I saw some
> > concern about bloat, but if the approach is to use the noat syscalls
> > if they exist, it shouldn't bloat ports using older kernels.
>
> Do you have size(1) measures for using the *at() versus noat?
>
So, I partitioned the patch into 7 patches. 3 for things not directly
related to the missing syscalls, and 1 each to match the syscall
groups controlled by kernel defines:
__ARCH_WANT_SYSCALL_{DEPRECATED,OFF_T,NO_FLAGS,NO_AT}
Only ldso, libc, and libpthread had size changes during testing. I
tried with and without the full patch using a kernel with all the
old syscalls. Then I measured the effect of turning off the
__ARCH_WANT_SYSCALL_foo syscalls. None of the sizes changed more
than a couple hundred byte overall. Interestingly, turning off
the NO_FLAG and NO_AT syscalls resulted in smaller library sizes.
I'm going to repost the patches individually so we can discuss
them separately.
without full patch, kernel with old syscalls
text data bss dec hex filename
45329 1176 172 46677 b655 ld-uClibc-0.9.34-git.so
52881 18524 8640 80045 138ad libpthread-0.9.34-git.so
469182 5692 10120 484994 76682 libuClibc-0.9.34-git.so
with full patch, kernel with old syscalls
text data bss dec hex filename
45329 1176 172 46677 b655 ld-uClibc-0.9.34-git.so
52881 18524 8640 80045 138ad libpthread-0.9.34-git.so
469278 5692 10120 485090 766e2 libuClibc-0.9.34-git.so
with full patch, no __ARCH_WANT_SYSCALL_DEPRECATED
45329 1176 172 46677 b655 ld-uClibc-0.9.34-git.so
52717 18520 8640 79877 13805 libpthread-0.9.34-git.so
470392 5696 10128 486216 76b48 libuClibc-0.9.34-git.so
with full patch, no __ARCH_WANT_SYSCALL_{DEPRECATED,OFF_T}
text data bss dec hex filename
45393 1176 172 46741 b695 ld-uClibc-0.9.34-git.so
52717 18520 8640 79877 13805 libpthread-0.9.34-git.so
470717 5716 10128 486561 76ca1 libuClibc-0.9.34-git.so
with full patch, no __ARCH_WANT_SYSCALL_{DEPRECATED,OFF_T,NO_FLAGS}
45393 1176 172 46741 b695 ld-uClibc-0.9.34-git.so
52717 18520 8640 79877 13805 libpthread-0.9.34-git.so
470441 5720 10128 486289 76b91 libuClibc-0.9.34-git.so
with full patch, no __ARCH_WANT_SYSCALL_{DEPRECATED,OFF_T,NO_AT}
text data bss dec hex filename
45393 1176 172 46741 b695 ld-uClibc-0.9.34-git.so
52717 18520 8640 79877 13805 libpthread-0.9.34-git.so
470017 5760 10128 485905 76a11 libuClibc-0.9.34-git.so
More information about the uClibc
mailing list