diff options
author | Dominik 'Disconnect3d' Czarnota <dominik.b.czarnota@gmail.com> | 2022-02-23 00:43:25 +0100 |
---|---|---|
committer | Simon Marchi <simon.marchi@polymtl.ca> | 2022-02-23 09:10:43 -0500 |
commit | 29ef4c0699e1b46d41ade00ae07a54f979ea21cc (patch) | |
tree | d658df2d8acdca50335f28c836e5f877fc82769d /gdb/linux-tdep.c | |
parent | e4028336b19998e74a51dd0918a8b3922e08a537 (diff) | |
download | binutils-29ef4c0699e1b46d41ade00ae07a54f979ea21cc.zip binutils-29ef4c0699e1b46d41ade00ae07a54f979ea21cc.tar.gz binutils-29ef4c0699e1b46d41ade00ae07a54f979ea21cc.tar.bz2 |
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
Diffstat (limited to 'gdb/linux-tdep.c')
-rw-r--r-- | gdb/linux-tdep.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c index 1b48b7f..060f60e 100644 --- a/gdb/linux-tdep.c +++ b/gdb/linux-tdep.c @@ -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 : ""); |