[Vm-dev] latest sources removal platforms/unix/vm/sunos.h
K K Subbu
kksubbu.ml at gmail.com
Sun Nov 8 16:55:52 UTC 2020
On 08/11/20 3:30 pm, stes at PANDORA.BE wrote:
> #ifndef __sun__
> #define ftell(s) ftello(s)
> #define fseek(s,o,w) fseeko(s,o,w)
> #endif /* __sun__ */
>
> I don't know what the reasoning behind that was.
It dates back to a transitional period when 32-bit kernels just started
handling 64-bit file sizes. ISO C99 specified 32-bit offsets in
ftell/fseek while POSIX large file extensions mapped them to calls with
64-bit offsets. I doubt if these are required anymore because modern
toolchains use POSIX LFS by default.
See
http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
> Also there exists a lseek64() function.
>
> I have no idea whether this is correct, but if I change:
>
> - --- a/platforms/unix/vm/sqImageFileAccess.h
> +++ b/platforms/unix/vm/sqImageFileAccess.h
> @@ -108,7 +108,7 @@ sqImageFileWrite(void *ptr_arg, size_t sz, size_t count, sqImageFile f)
> static inline off_t
> sqImageFilePosition(sqImageFile f)
> {
> - - off_t pos = lseek(f, 0, SEEK_CUR);
> .....
> Then the VM compiles in 32bit mode (as before) but now it succesfully loads
> a 32bit VM image.
But it will use 32-bit offsets and can't handle images larger than 2GB :-(.
This shouldn't be required if compiles use -D_FILE_OFFSET_BITS=64
through autoconf or make scripts. The description for _FILE_OFFSET_BITS
in the URL above has more detail.
HTH .. Subbu
More information about the Vm-dev
mailing list