[uClibc 0002064]: Library assumes presence of several syscalls

bugs at busybox.net bugs at busybox.net
Thu Mar 13 12:14:01 UTC 2008


A NOTE has been added to this issue. 
====================================================================== 
http://busybox.net/bugs/view.php?id=2064 
====================================================================== 
Reported By:                michael_d
Assigned To:                uClibc
====================================================================== 
Project:                    uClibc
Issue ID:                   2064
Category:                   Other
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     assigned
====================================================================== 
Date Submitted:             02-07-2008 19:30 PST
Last Modified:              03-13-2008 05:14 PDT
====================================================================== 
Summary:                    Library assumes presence of several syscalls
Description: 
When compiled against unmodified Linux-2.0.40 headers, uClibc fails to
compile because it assumes several 2.2+ syscalls are present.

The syscalls in question are __NR_lchown, __NR_prctl, __NR_sendfile,
__NR_setresuid, __NR_setresgid, __NR_sched_getaffinity, and
__NR_sched_setaffinity.

(I'm aware there's already a patch in buildroot for the last two.)

It looks like there was an attempt to conditionally include setresuid()
and setresgid().  But it doesn't work, as compilation fails with
"'__EI_setresuid' aliased to undefined symbol '__GI_setresuid'".

I've worked around the problem by modifying <asm/unistd.h> before building
uClibc.  For all syscalls except lchown(), letting them fail with ENOSYS
produces results no more broken than glibc on the same kernel.  lchown()
wasn't a problem for me, as I've privately backported syscall 182 to my
kernel.

Note that problem http://busybox.net/bugs/view.php?id=1874 also needs to be
fixed before compilation on Linux
2.0.40 can complete.
====================================================================== 

---------------------------------------------------------------------- 
 vapier - 02-15-08 15:35  
---------------------------------------------------------------------- 
ive updated the FAQ to cover our policy for things older than linux-2.4 is:
we dont care

that is to say, we arent going to fix it ourselves.  if you can post a
nice patch that works for you, we'll look at merging it. 

---------------------------------------------------------------------- 
 michael_d - 03-13-08 05:14  
---------------------------------------------------------------------- 
I've uploaded a patch to make most of the syscalls conditional.

Left out are lchown(), which I've addressed locally at the kernel side,
and sched_*(), which are already handled in a buildroot patch.

Note that this patch isn't enough to make a threaded build on a
setresuid()-less platform -- there are functions in libpthread that use
setresuid() and setresgid() unconditionally. 

Issue History 
Date Modified   Username       Field                    Change               
====================================================================== 
02-07-08 19:30  michael_d      New Issue                                    
02-07-08 19:30  michael_d      Status                   new => assigned     
02-07-08 19:30  michael_d      Assigned To               => uClibc          
02-15-08 15:35  vapier         Note Added: 0004914                          
03-13-08 05:09  michael_d      File Added: uClibc-0.9.29-condcalls.diff         
          
03-13-08 05:14  michael_d      Note Added: 0005694                          
======================================================================




More information about the uClibc-cvs mailing list