gdb/linux-tdep.c: Add Perms to the 'info proc mappings' output
Fixes #28914 and so it adds a 'Perms' (permissions) column to the 'info proc mappings' command output. This will allow users to know the memory pages permissions right away from GDB instead of having to fetch them from the /proc/$pid/maps file (which is also what GDB does internally, but it just did not print that column). Below I am also showing how an example output looks like before and after this commit in case someone wonders. On i386 targets - before this commit: ``` (gdb) info proc mappings process 3461464 Mapped address spaces: Start Addr End Addr Size Offset objfile 0x56555000 0x56556000 0x1000 0x0 /home/dc/src/binutils-gdb/build/a.out 0x56556000 0x56557000 0x1000 0x1000 /home/dc/src/binutils-gdb/build/a.out 0x56557000 0x56558000 0x1000 0x2000 /home/dc/src/binutils-gdb/build/a.out 0x56558000 0x5655a000 0x2000 0x2000 /home/dc/src/binutils-gdb/build/a.out 0xf7fc4000 0xf7fc8000 0x4000 0x0 [vvar] 0xf7fc8000 0xf7fca000 0x2000 0x0 [vdso] 0xf7fca000 0xf7fcb000 0x1000 0x0 /usr/lib/i386-linux-gnu/ld-2.33.so 0xf7fcb000 0xf7fee000 0x23000 0x1000 /usr/lib/i386-linux-gnu/ld-2.33.so 0xf7fee000 0xf7ffb000 0xd000 0x24000 /usr/lib/i386-linux-gnu/ld-2.33.so 0xf7ffb000 0xf7ffe000 0x3000 0x30000 /usr/lib/i386-linux-gnu/ld-2.33.so 0xfffdc000 0xffffe000 0x22000 0x0 [stack] (gdb) ``` On i386 targets - after this commit: ``` (gdb) info proc mappings process 3461464 Mapped address spaces: Start Addr End Addr Perms Size Offset objfile 0x56555000 0x56556000 r--p 0x1000 0x0 /home/dc/src/binutils-gdb/build/a.out 0x56556000 0x56557000 r-xp 0x1000 0x1000 /home/dc/src/binutils-gdb/build/a.out 0x56557000 0x56558000 r--p 0x1000 0x2000 /home/dc/src/binutils-gdb/build/a.out 0x56558000 0x5655a000 rw-p 0x2000 0x2000 /home/dc/src/binutils-gdb/build/a.out 0xf7fc4000 0xf7fc8000 r--p 0x4000 0x0 [vvar] 0xf7fc8000 0xf7fca000 r-xp 0x2000 0x0 [vdso] 0xf7fca000 0xf7fcb000 r--p 0x1000 0x0 /usr/lib/i386-linux-gnu/ld-2.33.so 0xf7fcb000 0xf7fee000 r-xp 0x23000 0x1000 /usr/lib/i386-linux-gnu/ld-2.33.so 0xf7fee000 0xf7ffb000 r--p 0xd000 0x24000 /usr/lib/i386-linux-gnu/ld-2.33.so 0xf7ffb000 0xf7ffe000 rw-p 0x3000 0x30000 /usr/lib/i386-linux-gnu/ld-2.33.so 0xfffdc000 0xffffe000 rw-p 0x22000 0x0 [stack] (gdb) ``` On amd64 targets - after this commit: ``` (gdb) info proc mappings process 3461869 Mapped address spaces: Start Addr End Addr Perms Size Offset objfile 0x555555554000 0x555555555000 r--p 0x1000 0x0 /home/dc/src/binutils-gdb/build/a.out 0x555555555000 0x555555556000 r-xp 0x1000 0x1000 /home/dc/src/binutils-gdb/build/a.out 0x555555556000 0x555555557000 r--p 0x1000 0x2000 /home/dc/src/binutils-gdb/build/a.out 0x555555557000 0x555555559000 rw-p 0x2000 0x2000 /home/dc/src/binutils-gdb/build/a.out 0x7ffff7fc3000 0x7ffff7fc7000 r--p 0x4000 0x0 [vvar] 0x7ffff7fc7000 0x7ffff7fc9000 r-xp 0x2000 0x0 [vdso] 0x7ffff7fc9000 0x7ffff7fca000 r--p 0x1000 0x0 /usr/lib/x86_64-linux-gnu/ld-2.33.so 0x7ffff7fca000 0x7ffff7ff1000 r-xp 0x27000 0x1000 /usr/lib/x86_64-linux-gnu/ld-2.33.so 0x7ffff7ff1000 0x7ffff7ffb000 r--p 0xa000 0x28000 /usr/lib/x86_64-linux-gnu/ld-2.33.so 0x7ffff7ffb000 0x7ffff7fff000 rw-p 0x4000 0x31000 /usr/lib/x86_64-linux-gnu/ld-2.33.so 0x7ffffffdd000 0x7ffffffff000 rw-p 0x22000 0x0 [stack] 0xffffffffff600000 0xffffffffff601000 --xp 0x1000 0x0 [vsyscall] (gdb) ``` Signed-off-by: Dominik 'Disconnect3d' Czarnota <dominik.b.czarnota@gmail.com> Change-Id: I4991f6cc758cd532eae3ae98c29d22e7bd9d9c36
This commit is contained in:
parent
e4028336b1
commit
29ef4c0699
1 changed files with 8 additions and 8 deletions
|
@ -879,16 +879,14 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args,
|
|||
printf_filtered (_("Mapped address spaces:\n\n"));
|
||||
if (gdbarch_addr_bit (gdbarch) == 32)
|
||||
{
|
||||
printf_filtered ("\t%10s %10s %10s %10s %s\n",
|
||||
"Start Addr",
|
||||
" End Addr",
|
||||
printf_filtered ("\t%10s %10s %7s %10s %10s %s\n",
|
||||
"Start Addr", " End Addr", "Perms",
|
||||
" Size", " Offset", "objfile");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf_filtered (" %18s %18s %10s %10s %s\n",
|
||||
"Start Addr",
|
||||
" End Addr",
|
||||
printf_filtered (" %18s %18s %7s %10s %10s %s\n",
|
||||
"Start Addr", " End Addr", "Perms",
|
||||
" Size", " Offset", "objfile");
|
||||
}
|
||||
|
||||
|
@ -908,18 +906,20 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args,
|
|||
|
||||
if (gdbarch_addr_bit (gdbarch) == 32)
|
||||
{
|
||||
printf_filtered ("\t%10s %10s %10s %10s %s\n",
|
||||
printf_filtered ("\t%10s %10s %7.5s %10s %10s %s\n",
|
||||
paddress (gdbarch, addr),
|
||||
paddress (gdbarch, endaddr),
|
||||
permissions,
|
||||
hex_string (endaddr - addr),
|
||||
hex_string (offset),
|
||||
*mapping_filename ? mapping_filename : "");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf_filtered (" %18s %18s %10s %10s %s\n",
|
||||
printf_filtered (" %18s %18s %7.5s %10s %10s %s\n",
|
||||
paddress (gdbarch, addr),
|
||||
paddress (gdbarch, endaddr),
|
||||
permissions,
|
||||
hex_string (endaddr - addr),
|
||||
hex_string (offset),
|
||||
*mapping_filename ? mapping_filename : "");
|
||||
|
|
Loading…
Add table
Reference in a new issue