[uClibc 0002454]: Fixing ARM EABI support bug in syscall()
bugs at busybox.net
bugs at busybox.net
Thu Oct 16 14:47:38 UTC 2008
The following issue has been CLOSED
======================================================================
http://busybox.net/bugs/view.php?id=2454
======================================================================
Reported By: Joe Lin
Assigned To: uClibc
======================================================================
Project: uClibc
Issue ID: 2454
Category: Architecture Specific
Reproducibility: always
Severity: major
Priority: normal
Status: closed
Resolution: unable to reproduce
Fixed in Version: 0.9.30
======================================================================
Date Submitted: 03-06-2008 04:12 PST
Last Modified: 10-16-2008 07:47 PDT
======================================================================
Summary: Fixing ARM EABI support bug in syscall()
Description:
When making an EABI syscall() system call, the library does not correctly
pass requesting system number to the Linux kernel.
For example, the ping facility in Busybox will issue a syscall() to get
monotonic time (see monotonic_us() in libbb/time.c). The syscall() in
syscall-eabi.S passes R7 value verbatim. But the kernel (see linux's
vector_swi routine in arch/arm/kernel/entry-common.S) expects R7 a number
without __NR_SYSCALL_BASE.
This bug caused a Segmentation Fault.
Below is the patch.
--------------------------------------------------------------
diff -Naurd uClibc-0.9.29/libc/sysdeps/linux/arm/syscall-eabi.S
uClibc-0.9.29-p1/libc/sysdeps/linux/arm/syscall-eabi.S
--- uClibc-0.9.29/libc/sysdeps/linux/arm/syscall-eabi.S 2006-02-11
12:29:52.000000000 +0800
+++ uClibc-0.9.29-p1/libc/sysdeps/linux/arm/syscall-eabi.S 2008-03-06
19:53:15.000000000 +0800
@@ -29,7 +29,7 @@
syscall:
mov ip, sp
stmfd sp!, {r4, r5, r6, r7}
- mov r7, r0
+ sub r7, r0, #SYS_SYSCALL_BASE
mov r0, r1
mov r1, r2
mov r2, r3
--------------------------------------------------------------
======================================================================
----------------------------------------------------------------------
khem - 04-09-08 00:07
----------------------------------------------------------------------
is your kernel compiled with AEABI ?
Are you compiling uclibc also with EABI turned on in toolchain ?
----------------------------------------------------------------------
Joe Lin - 04-09-08 19:22
----------------------------------------------------------------------
Yes, I compiled both kernel and uClibc with EABI turned on. If uClibc was
compiled in OABI, it would go through different path in kernel, which got
no problem. If kernel was not compiled to process EABI executables, EABI
programs would not work.
----------------------------------------------------------------------
khem - 04-10-08 19:12
----------------------------------------------------------------------
I do not get segmentation fault on using busybox applet ping.
----------------------------------------------------------------------
Joe Lin - 04-13-08 18:39
----------------------------------------------------------------------
No segmentation fault? My code runs with the patch ok, which means it
should get the fault if without the patch.
I'll take a time to review the exact point of problem using my hardware
ICE. For now I just can't remember where the instruction is in the
arch/arm/kernel/entry-common.S. Will report the point then.
----------------------------------------------------------------------
bernhardf - 10-03-08 08:04
----------------------------------------------------------------------
Any update?
----------------------------------------------------------------------
khem - 10-11-08 02:33
----------------------------------------------------------------------
ping works fine on EABI system running kernel 2.6.25 and latest uClibc SVN.
So I am closing this issue as we can not reproduce it. If there is more
information to reproduce this problem feel free to reopen it.
----------------------------------------------------------------------
bernhardf - 10-16-08 07:47
----------------------------------------------------------------------
This is closed, so close it.
Issue History
Date Modified Username Field Change
======================================================================
03-06-08 04:12 Joe Lin New Issue
03-06-08 04:12 Joe Lin Status new => assigned
03-06-08 04:12 Joe Lin Assigned To => uClibc
04-09-08 00:07 khem Note Added: 0006484
04-09-08 19:22 Joe Lin Note Added: 0006504
04-10-08 19:12 khem Note Added: 0006554
04-13-08 18:39 Joe Lin Note Added: 0006604
10-03-08 08:04 bernhardf Note Added: 0012664
10-11-08 02:33 khem Status assigned => resolved
10-11-08 02:33 khem Fixed in Version => 0.9.30
10-11-08 02:33 khem Resolution open => unable to
reproduce
10-11-08 02:33 khem Note Added: 0013234
10-16-08 07:47 bernhardf Status resolved => closed
10-16-08 07:47 bernhardf Note Added: 0013714
======================================================================
More information about the uClibc-cvs
mailing list