I'm trying to read some pointers from a 64-bit address space file (from /proc/pid/as) while running in a 32-bit process - all this on Solaris. To do this I'm using the transitional large file compilation environment, i.e. where you get both open()/pread() and open64()/pread64() since I still want to be able to read a 32-bit core. However when doing the pread64() call on the address space I keep getting EOVERFLOW, no matter what values I put in - even trying to read the first byte of the core. And reading the first byte of a 64-bit core using simply pread(), which as far as I can tell should work, fails too. EOVERFLOW whatever I do.
Is this simply Solaris stopping me from reading a core from a 64-bit proc? But why wouldn't it stop me at the time I do the open64() call in that case? Any clues would be appreciated.