summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/common/lseek.c
AgeCommit message (Collapse)Author
2014-08-18lseek: Correct order of offset argumentsAnton Kolesov
There was a runtime error in systems without large file support. Call fseek(fd, 4096, SEEK_SET) has been failing with EINVAL, though it was succeeding for offset = 4092. This has been happening because llseek system call accepts 64-bit value as an offset argument and lseek function has been ordering 32-bits words that form this offset value, according to the endianness. However this ordering to match endianness is not required, because llseek doesn't accept one 64-bit offset argument, it accepts two 32-bit offset argument, then stitches them into one following its endianness. As a result on little endian system, order of words has been swapped two time: in libc and in kernel. Thus call to fseek with offset 4096 (0x1000) was doing a system call to llseek with offset 0x1000_0000_0000. I'm not entirely sure why then offset = 4092 hasn't been failing then. This patch removes malicious swap of words when calling llseek. Signed-off-by: Anton Kolesov <Anton.Kolesov@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2013-03-14leek: if lseek syscall is not available, use lseek64 even for !LFSVineet Gupta
With Busybox and uClibc - both built w/o LFS, this caused ash to be completely broken, as lseek was simply returning error. Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Cc: Markos Chandras <markos.chandras@imgtec.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2013-02-20lseek: Use lseek64 is arch does not have the lseek syscallMarkos Chandras
Signed-off-by: Markos Chandras <markos.chandras@imgtec.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2013-01-14LT.old: reinstate buildBernhard Reutner-Fischer
As noted by Florian Fainelli: LD libpthread-0.9.34-git.so libpthread/linuxthreads.old/libpthread_so.a(wrapsyscall.oS): In function `fcntl64': wrapsyscall.c:(.text+0xd8): undefined reference to `__libc_fcntl64' libpthread/linuxthreads.old/libpthread_so.a(wrapsyscall.oS): In function `lseek64': wrapsyscall.c:(.text+0x190): undefined reference to `__libc_lseek64' libpthread/linuxthreads.old/libpthread_so.a(wrapsyscall.oS): In function `pread64': wrapsyscall.c:(.text+0x39c): undefined reference to `__libc_pread64' Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2012-07-24Accept either __NR__lseek or __NR_lseekBernd Schmidt
In llseek.c, we already allow both variants; the same needs to be done here to avoid duplicate definitions of lseek64_nocancel. Signed-off-by: Bernd Schmidt <bernds@codesourcery.com>
2012-06-15lseek, lseek64: add cancellation for all THREADSPeter S. Mazinger
LT_OLD provides cancellable versions, do it for all THREADS. llseek.c: use newly added macros for offset handling. Add a comment about endianness issue around offset. Compile llseek.c only on 32bit archs. Provide aliases for 64bit archs or if syscall is not available. Signed-off-by: Peter S. Mazinger <ps.m@gmx.net> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2012-06-15avoid circular dependency in lseek and llseek, providing a stub lseekPeter S. Mazinger
Signed-off-by: Peter S. Mazinger <ps.m@gmx.net> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2009-02-25Reinstate __libc_foo's needed for linuxthreads.old.Denis Vlasenko
Now they are only enabled if linuxthreads.old are selected.
2008-12-10*: remove some __libc_XXX functions:Denis Vlasenko
__libc_accept __libc_close __libc_connect __libc_creat __libc_creat64 __libc_fsync __libc_lseek __libc_lseek64 __libc_msync __libc_nanosleep __libc_open __libc_open64 __libc_pause __libc_read __libc_readv __libc_recv __libc_recvfrom __libc_recvmsg __libc_send __libc_sendmsg __libc_sendto __libc_tcdrain __libc_wait __libc_waitpid __libc_write __libc_writev They were removed from glibc 1 May 2004: http://sources.redhat.com/ml/libc-hacker/2004-05/msg00001.html
2008-11-20Last portion of libc_hidden_proto removal.Denis Vlasenko
Appears to build fine (several .configs tried)
2008-11-20next portion of libc_hidden_proto removalDenis Vlasenko
2008-10-22- remove superfluous ';'. No objcode changes.Bernhard Reutner-Fischer
2006-12-14if __NR_lseek is not defined, then we fall back to calling the 64bit lseekMike Frysinger
2006-12-08Take Mike Frysinger's comments into account -- make certain that userEric Andersen
applications stop using _syscall#() and use syscall() instead. Cleanup internal handling of syscall includes to use the correct header file.
2006-02-13Weaken all that I remember being used in libpthreadPeter S. Mazinger
2006-01-24Convert all the strong_aliases to weak that are cancelable in libpthreadPeter S. Mazinger
2006-01-21Convert l*seek too to use __typeofPeter S. Mazinger
2006-01-15make gcc4 happy w/ hidden_def/proto, correct some typosPeter S. Mazinger
2006-01-14make DODEBUG=y happy, update sysdeps/common/* copyrightPeter S. Mazinger
2006-01-14hidden_def/hidden_proto: convert all users (I hope) termios split, add some ↵Peter S. Mazinger
missing headers, other jump relocs removed
2005-12-16Some undefs to be pedanticPeter S. Mazinger
2005-12-13Hidden lseek[64], disabled llseek and _llseek for now, not in any headersPeter S. Mazinger
2005-01-05fix eriks e-mail addressMike Frysinger
2004-01-21Split up syscalls.c, since it had grown to be quite large and ugly.Eric Andersen
-Erik