http://oss.sgi.com/bugzilla/show_bug.cgi?id=786
Summary: libattr (2.4.23) has wrong syscall values for Linux
mips64
Product: Linux XFS
Version: Current
Platform: Other
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: xfsprogs
AssignedTo: xfs-master@xxxxxxxxxxx
ReportedBy: kelledin@xxxxxxxxxxxx
Current libattr/syscalls.c depends on the arch-specific macro "__mips64__" to be
definedand bases its syscall definitions on that. However, this macro does NOT
exist as of gcc-4.1.2 (it defines "__mips64" instead, in addition to
"__mips__"). In addition, syscalls.c makes no differentiation between the n32
and n64 ABI (yes, both are MIPS64, and the syscalls are different). On top of
that, the syscall numbers it defines based on the "__mips64__" macro are
completely wrong for either ABI, so anything using libattr to manage extended
attributes on mips64 frequently produces bad results or gets nonsensical errors
(for example, coreutils-6.12 linked against libacl/libattr gets "Bad address"
when trying to do "cp -pr").
I'm attaching a patch based on examining the arch/mips/kernel/scall64*.S files
for a somewhat tweaked 2.6.21.7 kernel. This seems to work for my case (using
ext3 on mips64 with pure n64 ABI). I don't have the opportunity to test the n32
ABI bits at the moment, so that could use some further testing. FWIW, the
mips32 syscall definitions (under "__mips__") appear to already be correct.
--
Configure bugmail: http://oss.sgi.com/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
|