[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