aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@polymtl.ca>2022-02-23 16:26:17 -0500
committerSimon Marchi <simon.marchi@polymtl.ca>2022-02-24 07:29:08 -0500
commit0b313e95a73ad567915c9c1135d3d49f39236325 (patch)
treee512fbbb90af7158f1c26fb0aad5889091a2785c
parent11659552768f6b915a6bf5aa98dfb11ba0f004d0 (diff)
downloadfsf-binutils-gdb-0b313e95a73ad567915c9c1135d3d49f39236325.zip
fsf-binutils-gdb-0b313e95a73ad567915c9c1135d3d49f39236325.tar.gz
fsf-binutils-gdb-0b313e95a73ad567915c9c1135d3d49f39236325.tar.bz2
gdb/linux-tdep: move "Perms" column right
Commit 29ef4c0699e1 ("gdb/linux-tdep.c: Add Perms to the 'info proc mappings' output") has broken test gdb.base/info-proc.exp on Linux, because it changes the output of "info proc mappings" in a way that the test does not expect (my bad for not testing before pushing). I looked at how FreeBSD handles this, since I remembered it did show permission flags. It looks like this: Start Addr End Addr Size Offset Flags File 0x200000 0x243000 0x43000 0x0 r-- CN-- /usr/local/bin/tmux (I think that `Flags` and the flags not being aligned is not intentional) The test passes on FreeBSD, because the test looks for four hex numbers in a row and ignores the rest: ".*Mapped address spaces:.*${hex}${ws}${hex}${ws}${hex}${ws}${hex}.*" I suggest fixing it on Linux by moving the flags column to the same place as in the FreeBSD output. It makes things a bit more consistent between OSes, and we don't have to touch the test. At the same time, make use of the actual length of the permission's string to specify the number of characters to print. Before this patch, the output looks like: Start Addr End Addr Perms Size Offset objfile 0x55dd4b544000 0x55dd4b546000 r--p 0x2000 0x0 /usr/bin/sleep and after, it looks like: Start Addr End Addr Size Offset Perms objfile 0x5622ae662000 0x5622ae664000 0x2000 0x0 r--p /usr/bin/sleep Change-Id: If0fc167b010b25f97a3c54e2f491df4973ccde8f
-rw-r--r--gdb/linux-tdep.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
index 83bd423..d486890 100644
--- a/gdb/linux-tdep.c
+++ b/gdb/linux-tdep.c
@@ -892,15 +892,15 @@ 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 %7s %10s %10s %s\n",
- "Start Addr", " End Addr", "Perms",
- " Size", " Offset", "objfile");
+ printf_filtered ("\t%10s %10s %10s %10s %s %s\n",
+ "Start Addr", " End Addr", " Size",
+ " Offset", "Perms ", "objfile");
}
else
{
- printf_filtered (" %18s %18s %7s %10s %10s %s\n",
- "Start Addr", " End Addr", "Perms",
- " Size", " Offset", "objfile");
+ printf_filtered (" %18s %18s %10s %10s %s %s\n",
+ "Start Addr", " End Addr", " Size",
+ " Offset", "Perms ", "objfile");
}
char *saveptr;
@@ -912,22 +912,24 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args,
if (gdbarch_addr_bit (gdbarch) == 32)
{
- printf_filtered ("\t%10s %10s %7.5s %10s %10s %s\n",
+ printf_filtered ("\t%10s %10s %10s %10s %-5.*s %s\n",
paddress (gdbarch, m.addr),
paddress (gdbarch, m.endaddr),
- m.permissions.data (),
hex_string (m.endaddr - m.addr),
hex_string (m.offset),
+ (int) m.permissions.size (),
+ m.permissions.data (),
m.filename);
}
else
{
- printf_filtered (" %18s %18s %7.5s %10s %10s %s\n",
+ printf_filtered (" %18s %18s %10s %10s %-5.*s %s\n",
paddress (gdbarch, m.addr),
paddress (gdbarch, m.endaddr),
- m.permissions.data (),
hex_string (m.endaddr - m.addr),
hex_string (m.offset),
+ (int) m.permissions.size (),
+ m.permissions.data (),
m.filename);
}
}