| Anonymous | Login | Signup for a new account | 11-10-2008 11:46 PST |
| Main | My View | View Issues | Change Log | Docs |
| Viewing Issue Simple Details [ Jump to Notes ] | [ View Advanced ] [ Issue History ] [ Print ] | ||||||||
| ID | Category | Severity | Reproducibility | Date Submitted | Last Update | ||||
| 0002454 | [uClibc] Architecture Specific | major | always | 03-06-08 04:12 | 10-16-08 07:47 | ||||
| Reporter | Joe Lin | View Status | public | ||||||
| Assigned To | uClibc | ||||||||
| Priority | normal | Resolution | unable to reproduce | ||||||
| Status | closed | Product Version | 0.9.28.1 | ||||||
| Summary | 0002454: 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 -------------------------------------------------------------- |
||||||||
| Additional Information | |||||||||
| Attached Files | |||||||||
|
|
|||||||||
| Copyright © 2000 - 2006 Mantis Group |