Re: Fwd: vdso
vijay nag <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <CAKhyrx9nUCTs7KyFP5QGwbbALFtXih1XGSCoxwiy9TJ+__xQxg@mail.gmail.com> |
On Sat, Jul 6, 2013 at 12:12 AM, Jan Kratochvil <[email protected]> wrote: > On Fri, 05 Jul 2013 08:12:29 +0200, vijay nag wrote: >> The function linux_proc_xfer_partial() is returning result zero when >> trying to pread64 /proc/<pid>/mem and errno is set to -EIO. > > And what is 'offset' (and 'len') that time and what is in /proc/PID/maps that > time? > Isn't there also some incorrect signed extension of 32-bit address to 64-bit > address, for example? > > >> Does that mean kernel doesn't support pread64 on /proc/xxx/mem files ? > > I do not think so. > > > Jan Well the problem is not with pread64 and the same problem is observed with (lseek, read) pair. Offset 0xffffe000 doesn't correspond to any mapping in the process address space and probably is that reason why read is returning EIO ? Breakpoint 1, linux_proc_xfer_partial (ops=0x8499230, object=TARGET_OBJECT_MEMORY, annex=0x0, readbuf=0xbffff250 "\r", writebuf=0x0, offset=4294967296, len=4294959104) at linux-nat.c:4386 4386 if (object != TARGET_OBJECT_MEMORY || !readbuf) (gdb) p /x offset $3 = 0xffffe000 (gdb) p /x len $4 = 0x34 (gdb) smap details of VDSO b7fff000-b8000000 r-xp b7fff000 00:00 0 [vdso] Size: 4 kB Rss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB /proc/xxx/maps 08048000-1829a000 r-xp 00000000 00:15 85524508 vdso_trial 1829a000-1befa000 rwxp 10252000 00:15 85524508 vdso_trial 1befa000-1dea0000 rwxp 1befa000 00:00 0 [heap] b7fff000-b8000000 r-xp b7fff000 00:00 0 [vdso] bffeb000-c0000000 rwxp bffeb000 00:00 0 [stack]