[PATCH] Fix for 'struct -o' option to display the offsets of struct fields

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Currently, the 'struct -o' command does not display the offsets
of struct fields like this:

  crash> struct page -ox ffffce98870a0d40
  struct page {
    [ffffce98870a0d40] unsigned long flags;
           union {
               struct {...};
               struct {...};
               struct {...};
               struct {...};
               struct {...};
               struct {...};
               struct {...};
    [ffffce98870a0d48]     struct callback_head callback_head;
           };
    ...
  }
  SIZE: 0x40

The gdb-10.2 added a new option '/o' for the 'ptype' command, which
prints the offsets and sizes of struct fields, let's use it now to
fix the above issue.

Signed-off-by: Lianbo Jiang <lijiang@xxxxxxxxxx>
---
 symbols.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/symbols.c b/symbols.c
index 5d12a021c769..9ba43dee61c8 100644
--- a/symbols.c
+++ b/symbols.c
@@ -6845,6 +6845,16 @@ do_datatype_declaration(struct datatype_member *dm, ulong flags)
 	len = dm->size;
 	multiline = NULL;
         while (fgets(buf, BUFSIZE, pc->tmpfile)) {
+		char *p = NULL;
+
+		p =  strstr(buf, "*/");
+		if (p) {
+			p += strlen("*/");
+			shift_string_left(buf, p - buf);
+			if (strstr(buf, "type = "))
+				strip_beginning_whitespace(buf);
+		}
+
                 if (STRNEQ(buf, "type = ")) {
 			multiline = strstr(buf, "{");
 			if (flags & TYPEDEF)
@@ -7802,7 +7812,7 @@ whatis_datatype(char *st, ulong flags, FILE *ofp)
         else if (flags & UNION_REQUEST)
                 sprintf(lookbuf, "ptype union %s", st);
         else if (flags & STRUCT_REQUEST)
-                sprintf(lookbuf, "ptype struct %s", st);
+                sprintf(lookbuf, "ptype /o struct %s", st);
         else
                 return;
 
-- 
2.20.1

--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://listman.redhat.com/mailman/listinfo/crash-utility
Contribution Guidelines: https://github.com/crash-utility/crash/wiki




[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux