aboutsummaryrefslogtreecommitdiff
path: root/gdb/linux-tdep.c
diff options
context:
space:
mode:
authorDominik 'Disconnect3d' Czarnota <dominik.b.czarnota@gmail.com>2022-02-23 00:43:25 +0100
committerSimon Marchi <simon.marchi@polymtl.ca>2022-02-23 09:10:43 -0500
commit29ef4c0699e1b46d41ade00ae07a54f979ea21cc (patch)
treed658df2d8acdca50335f28c836e5f877fc82769d /gdb/linux-tdep.c
parente4028336b19998e74a51dd0918a8b3922e08a537 (diff)
downloadgdb-29ef4c0699e1b46d41ade00ae07a54f979ea21cc.zip
gdb-29ef4c0699e1b46d41ade00ae07a54f979ea21cc.tar.gz
gdb-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.c16
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 : "");