read() wont allow me to read files larger than 2 gig (on a 64bit)
glide creme
glidecreme at gmail.com
Fri Dec 25 08:29:35 UTC 2009
Hi
Sorry if I'm asking on the wrong mailinglist,
but I've asked on various forums and I havn't found a solution.
I can't read files larger than 2 gig on my ubuntu64bit using 'read()',
the problem is not related to the allocation itself, which works.
Attached is a sample program that illustrates this.
I've tried with various, compiler flags like
-D_FILE_OFFSET_BITS=64
According to man 2 read, the maximum is limited by SSIZE_MAX
which is defined in
/usr/include/bits/posix1_lim.h
# define SSIZE_MAX LONG_MAX
And LONG_MAX is defined in /usr/include/limits.h as
# if __WORDSIZE == 64
# define LONG_MAX 9223372036854775807L
# else
# define LONG_MAX 2147483647L
# endif
# define LONG_MIN (-LONG_MAX - 1L)
Is this the expected behaviour for the read function on a 64bit platform,
or is something broken
Thanks in advance
edit:
by the way
readelf -h ./a.out
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x400750
Start of program headers: 64 (bytes into file)
Start of section headers: 5312 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 9
Size of section headers: 64 (bytes)
Number of section headers: 37
Section header string table index: 34
ldd ./a.out
linux-vdso.so.1 => (0x00007fff689ff000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007ffee433e000)
libm.so.6 => /lib/libm.so.6 (0x00007ffee40ba000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007ffee3ea3000)
libc.so.6 => /lib/libc.so.6 (0x00007ffee3b34000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffee464e000)
uname -a
Linux csi 2.6.31-15-generic #50-Ubuntu SMP Tue Nov 10 14:53:52 UTC
2009 x86_64 GNU/Linux
-------------- next part --------------
A non-text attachment was scrubbed...
Name: read.cpp
Type: application/octet-stream
Size: 861 bytes
Desc: not available
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20091225/742122e8/attachment.obj>
More information about the kernel-team
mailing list