+2021-01-05 Nick Alcock <nick.alcock@oracle.com>
+
+ * testsuite/ld-ctf/array.d: Adjust for dumper changes.
+ * testsuite/ld-ctf/conflicting-cycle-1.B-1.d: Likewise.
+ * testsuite/ld-ctf/conflicting-cycle-1.B-2.d: Likewise.
+ * testsuite/ld-ctf/conflicting-cycle-1.parent.d: Likewise.
+ * testsuite/ld-ctf/conflicting-cycle-2.A-1.d: Likewise.
+ * testsuite/ld-ctf/conflicting-cycle-2.A-2.d: Likewise.
+ * testsuite/ld-ctf/conflicting-cycle-2.parent.d: Likewise.
+ * testsuite/ld-ctf/conflicting-cycle-3.C-1.d: Likewise.
+ * testsuite/ld-ctf/conflicting-cycle-3.C-2.d: Likewise.
+ * testsuite/ld-ctf/conflicting-cycle-3.parent.d: Likewise.
+ * testsuite/ld-ctf/conflicting-enums.d: Likewise.
+ * testsuite/ld-ctf/conflicting-typedefs.d: Likewise.
+ * testsuite/ld-ctf/cross-tu-cyclic-conflicting.d: Likewise.
+ * testsuite/ld-ctf/cross-tu-cyclic-nonconflicting.d: Likewise.
+ * testsuite/ld-ctf/cross-tu-into-cycle.d: Likewise.
+ * testsuite/ld-ctf/cross-tu-noncyclic.d: Likewise.
+ * testsuite/ld-ctf/cycle-1.d: Likewise.
+ * testsuite/ld-ctf/cycle-2.A.d: Likewise.
+ * testsuite/ld-ctf/cycle-2.B.d: Likewise.
+ * testsuite/ld-ctf/cycle-2.C.d: Likewise.
+ * testsuite/ld-ctf/data-func-conflicted.d: Likewise.
+ * testsuite/ld-ctf/diag-cttname-null.d: Likewise.
+ * testsuite/ld-ctf/diag-cuname.d: Likewise.
+ * testsuite/ld-ctf/diag-parlabel.d: Likewise.
+ * testsuite/ld-ctf/diag-wrong-magic-number-mixed.d: Likewise.
+ * testsuite/ld-ctf/function.d: Likewise.
+ * testsuite/ld-ctf/slice.d: Likewise.
+ * testsuite/ld-ctf/super-sub-cycles.d: Likewise.
+
2021-01-05 Alan Modra <amodra@gmail.com>
* testsuite/ld-scripts/sysroot-prefix.exp: Exclude some targets.
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Data object section: .* \(0x8 bytes\)
Types:
#...
- [0-9a-f]*: .*\[10\] .*
+ 0x[0-9a-f]*: .*\[10\] .*
#...
- [0-9a-f]*: .*\[10\] .*
+ 0x[0-9a-f]*: .*\[10\] .*
#...
CTF archive member: .*/B.c:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Parent name: .ctf
Function objects:
Variables:
- b -> 80000001: struct B \(size 0x[0-9]*\)
+ b -> 0x80000001: struct B \(size 0x[0-9]*\)
Types:
- 8[0-9a-f]*: struct B .*
- \[0x0\] \(ID 0x8[0-9a-f]*\) \(kind 6\) struct B \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct C \* c \(.*
+ 0x8[0-9a-f]*: struct B .*
+ *\[0x0\] \(ID 0x8[0-9a-f]*\) \(kind 6\) struct B \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct C \* c \(.*
Strings:
#...
CTF archive member: .*/B-2.c:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Parent name: .ctf
Function objects:
Variables:
- b -> 80000001: struct B \(.*
+ b -> 0x80000001: struct B \(.*
Types:
- 8[0-9a-f]*: struct B \(.*
- \[0x0\] \(ID 0x8[0-9a-f]*\) \(kind 6\) struct B \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct C \* c \(.*
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 1\) int wombat:32 \(aligned at 0x[0-9a-f]*, format 0x1, offset:bits 0x0:0x[0-9a-f]*\)
+ 0x8[0-9a-f]*: struct B \(.*
+ *\[0x0\] \(ID 0x8[0-9a-f]*\) \(kind 6\) struct B \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct C \* c \(.*
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 1\) int wombat:32 \(aligned at 0x[0-9a-f]*, format 0x1, offset:bits 0x0:0x[0-9a-f]*\)
Strings:
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Type section: .* \(0xac bytes\)
#...
Types:
#...
- [0-9a-f]*: struct B \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 9\) struct B \(.*
+ 0x[0-9a-f]*: struct B \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 9\) struct B \(.*
#...
CTF archive member: .*:
#...
CTF archive member: .*/A.c:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Parent name: .*
Function objects:
Variables:
- a -> 80000001: struct A \(size 0x[0-9a-f]*\)
+ a -> 0x80000001: struct A \(size 0x[0-9a-f]*\)
Types:
- 8[0-9a-f]*: struct A \(size 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x8[0-9a-f]*\) \(kind 6\) struct A \(aligned at 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(aligned at 0x[0-9a-f]*\)
+ 0x8[0-9a-f]*: struct A \(size 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x8[0-9a-f]*\) \(kind 6\) struct A \(aligned at 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(aligned at 0x[0-9a-f]*\)
Strings:
- 0:
+ 0x0:
#...
CTF archive member: .*/A-2.c:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Parent name: .*
Function objects:
Variables:
- a -> 80000001: struct A \(size 0x[0-9a-f]*\)
+ a -> 0x80000001: struct A \(size 0x[0-9a-f]*\)
Types:
- 8[0-9a-f]*: struct A \(size 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x8[0-9a-f]*\) \(kind 6\) struct A \(aligned at 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(aligned at 0x[0-9a-f]*\)
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 1\) int wombat:32 \(aligned at 0x[0-9a-f]*, format 0x1, offset:bits 0x0:0x[0-9a-f]*\)
+ 0x8[0-9a-f]*: struct A \(size 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x8[0-9a-f]*\) \(kind 6\) struct A \(aligned at 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(aligned at 0x[0-9a-f]*\)
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 1\) int wombat:32 \(aligned at 0x[0-9a-f]*, format 0x1, offset:bits 0x0:0x[0-9a-f]*\)
Strings:
- 0:
+ 0x0:
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Type section: .* \(0x94 bytes\)
Function objects:
Variables:
- cycle_1 -> [0-9a-f]*: struct cycle_1 \* \(size 0x[0-9a-f]*\) -> [0-9a-f]*: struct cycle_1 \(size 0x[0-9a-f]*\)
+ cycle_1 -> 0x[0-9a-f]*: struct cycle_1 \* \(size 0x[0-9a-f]*\) -> 0x[0-9a-f]*: struct cycle_1 \(size 0x[0-9a-f]*\)
Types:
#...
- [0-9a-f]*: struct cycle_1 \(size 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct cycle_1 \(aligned at 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* a \(aligned at 0x[0-9a-f]*\)
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(aligned at 0x[0-9a-f]*\)
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct cycle_1 \* next \(aligned at 0x[0-9a-f]*\)
+ 0x[0-9a-f]*: struct cycle_1 \(size 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct cycle_1 \(aligned at 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* a \(aligned at 0x[0-9a-f]*\)
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(aligned at 0x[0-9a-f]*\)
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct cycle_1 \* next \(aligned at 0x[0-9a-f]*\)
#...
CTF archive member: .*/C.c:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Parent name: .*
Function objects:
Variables:
- c -> 80000001: struct C \(size 0x[0-9a-f]*\)
+ c -> 0x80000001: struct C \(size 0x[0-9a-f]*\)
Types:
- 8[0-9a-f]*: struct C \(size 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x8[0-9a-f]*\) \(kind 6\) struct C \(aligned at 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* a \(aligned at 0x[0-9a-f]*\)
+ 0x8[0-9a-f]*: struct C \(size 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x8[0-9a-f]*\) \(kind 6\) struct C \(aligned at 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* a \(aligned at 0x[0-9a-f]*\)
Strings:
- 0:
+ 0x0:
#...
CTF archive member: .*/C-2.c:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Parent name: .*
Function objects:
Variables:
- c -> 80000001: struct C \(size 0x[0-9a-f]*\)
+ c -> 0x80000001: struct C \(size 0x[0-9a-f]*\)
Types:
- 8[0-9a-f]*: struct C \(size 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x8[0-9a-f]*\) \(kind 6\) struct C \(aligned at 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* a \(aligned at 0x[0-9a-f]*\)
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 1\) int wombat:[0-9]* \(aligned at 0x[0-9a-f]*, format 0x1, offset:bits 0x0:0x[0-9a-f]*\)
+ 0x8[0-9a-f]*: struct C \(size 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x8[0-9a-f]*\) \(kind 6\) struct C \(aligned at 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* a \(aligned at 0x[0-9a-f]*\)
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 1\) int wombat:[0-9]* \(aligned at 0x[0-9a-f]*, format 0x1, offset:bits 0x0:0x[0-9a-f]*\)
Strings:
- 0:
+ 0x0:
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Type section: 0x0 -- 0x57 \(0x58 bytes\)
Types:
#...
- [0-9a-f]*: int \[0x0:0x[0-9a-f]*\] \(size 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) int:[0-9]* \(aligned at 0x[0-9a-f]*, format 0x1, offset:bits 0x0:0x[0-9a-f]*\)
+ 0x[0-9a-f]*: int \[0x0:0x[0-9a-f]*\] \(size 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) int:[0-9]* \(aligned at 0x[0-9a-f]*, format 0x1, offset:bits 0x0:0x[0-9a-f]*\)
#...
Strings:
- 0:
+ 0x0:
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Types:
CTF archive member: .*enum.*\.c:
#...
Types:
- 8[0-9a-f]*: enum day_of_the_week \(size 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x8[0-9a-f]*\) \(kind 8\) enum day_of_the_week \(aligned at 0x[0-9a-f]*\)
+ 0x8[0-9a-f]*: enum day_of_the_week \(size 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x8[0-9a-f]*\) \(kind 8\) enum day_of_the_week \(aligned at 0x[0-9a-f]*\)
Strings:
#...
CTF archive member: .*enum.*\.c:
#...
Types:
- 8[0-9a-f]*: enum day_of_the_week \(size 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x8[0-9a-f]*\) \(kind 8\) enum day_of_the_week \(aligned at 0x[0-9a-f]*\)
+ 0x8[0-9a-f]*: enum day_of_the_week \(size 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x8[0-9a-f]*\) \(kind 8\) enum day_of_the_week \(aligned at 0x[0-9a-f]*\)
Strings:
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Types:
- 1: .*int .*
- .*
- [0-9]:.*int .*
- .*
- [0-9]: word .*
- \[0x0\] \(ID 0x[0-9]\) \(kind 10\) word \(aligned at 0x[48]\)
+ 0x1: .*int .*
+ .*
+ 0x[0-9]:.*int .*
+ .*
+ 0x[0-9]: word .*
+ *\[0x0\] \(ID 0x[0-9]\) \(kind 10\) word \(aligned at 0x[48]\)
Strings:
#...
CTF archive member: .*typedef.*\.c:
#...
Types:
- 80000001: word .*
- \[0x0\] \(ID 0x80000001\) \(kind 10\) word \(aligned at 0x[48]\)
+ 0x80000001: word .*
+ *\[0x0\] \(ID 0x80000001\) \(kind 10\) word \(aligned at 0x[48]\)
Strings:
#...
#...
Types:
#...
- [0-9a-f]*: long int \[0x0:0x[0-9a-f]*\] \(size 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) long int:[0-9]* \(aligned at 0x[0-9a-f]*, format 0x1, offset:bits 0x0:0x[0-9a-f]*\)
+ 0x[0-9a-f]*: long int \[0x0:0x[0-9a-f]*\] \(size 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) long int:[0-9]* \(aligned at 0x[0-9a-f]*, format 0x1, offset:bits 0x0:0x[0-9a-f]*\)
#...
- [0-9a-f]*: struct B .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct B .*
+ 0x[0-9a-f]*: struct B .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct B .*
#...
- [0-9a-f]*: int \[0x0:0x[0-9a-f]*\] \(size 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) int:[0-9]* \(aligned at 0x[0-9a-f]*, format 0x1, offset:bits 0x0:0x[0-9a-f]*\)
+ 0x[0-9a-f]*: int \[0x0:0x[0-9a-f]*\] \(size 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) int:[0-9]* \(aligned at 0x[0-9a-f]*, format 0x1, offset:bits 0x0:0x[0-9a-f]*\)
#...
- [0-9a-f]*: struct A .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 9\) struct A .*
+ 0x[0-9a-f]*: struct A .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 9\) struct A .*
#...
- [0-9a-f]*: struct C .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct C .*
+ 0x[0-9a-f]*: struct C .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct C .*
#...
Strings:
CTF archive member: .*/ld/testsuite/ld-ctf/cross-tu-cyclic-1\.c:
#...
Types:
- 80.*[0-9a-f]*: struct A .*
- \[0x0\] \(ID 0x80.*\) \(kind 6\) struct A .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) long int a:.*
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* foo .*
+ 0x80.*[0-9a-f]*: struct A .*
+ *\[0x0\] \(ID 0x80.*\) \(kind 6\) struct A .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) long int a:.*
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* foo .*
Strings:
#...
CTF archive member: .*/ld/testsuite/ld-ctf/cross-tu-cyclic-2\.c:
#...
Types:
- 80.*[0-9a-f]*: struct A .*
- \[0x0\] \(ID 0x80.*\) \(kind 6\) struct A .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) long int a:.*
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* foo .*
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct C \* bar .*
+ 0x80.*[0-9a-f]*: struct A .*
+ *\[0x0\] \(ID 0x80.*\) \(kind 6\) struct A .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) long int a:.*
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* foo .*
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct C \* bar .*
Strings:
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Types:
#...
- [0-9a-f]*: struct A \(size 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x[0-9a-f]\) \(kind 6\) struct A \(aligned at 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) long int a:[0-9]* \(aligned at 0x[0-9a-f]*, format 0x1, offset:bits 0x0:0x[0-9a-f]*\)
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* foo \(aligned at 0x[0-9a-f]*\)
- [0-9a-f]*: long int .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) long int:[0-9].*
- [0-9a-f]*: struct B \(size 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct B \(aligned at 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) int foo:[0-9]* \(aligned at 0x[0-9a-f]*, format 0x1, offset:bits 0x0:0x[0-9a-f]*\)
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* bar \(aligned at 0x[0-9a-f]*\)
- [0-9a-f]*: struct B \* \(size 0x[0-9a-f]*\) -> [0-9a-f]*: struct B \(size 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* \(aligned at 0x[0-9a-f]*\)
- [0-9a-f]*: struct A \* \(size 0x[0-9a-f]*\) -> [0-9a-f]*: struct A \(size 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* \(aligned at 0x[0-9a-f]*\)
- [0-9a-f]*: int .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) int:.*
+ 0x[0-9a-f]*: struct A \(size 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x[0-9a-f]\) \(kind 6\) struct A \(aligned at 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) long int a:[0-9]* \(aligned at 0x[0-9a-f]*, format 0x1, offset:bits 0x0:0x[0-9a-f]*\)
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* foo \(aligned at 0x[0-9a-f]*\)
+ 0x[0-9a-f]*: long int .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) long int:[0-9].*
+ 0x[0-9a-f]*: struct B \(size 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct B \(aligned at 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) int foo:[0-9]* \(aligned at 0x[0-9a-f]*, format 0x1, offset:bits 0x0:0x[0-9a-f]*\)
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* bar \(aligned at 0x[0-9a-f]*\)
+ 0x[0-9a-f]*: struct B \* \(size 0x[0-9a-f]*\) -> 0x[0-9a-f]*: struct B \(size 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* \(aligned at 0x[0-9a-f]*\)
+ 0x[0-9a-f]*: struct A \* \(size 0x[0-9a-f]*\) -> 0x[0-9a-f]*: struct A \(size 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* \(aligned at 0x[0-9a-f]*\)
+ 0x[0-9a-f]*: int .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) int:.*
Strings:
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
conflicty -> .*
Types:
- [0-9a-f]*: struct A .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct A .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* foo .*
- [0-9a-f]*: struct B .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct B .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* next .*
- [0-9a-f]*: struct B \* .*
- \[0x0\] .*
- [0-9a-f]*: struct A \* .*
- \[0x0\] .*
+ 0x[0-9a-f]*: struct A .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct A .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* foo .*
+ 0x[0-9a-f]*: struct B .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct B .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* next .*
+ 0x[0-9a-f]*: struct B \* .*
+ *\[0x0\] .*
+ 0x[0-9a-f]*: struct A \* .*
+ *\[0x0\] .*
Strings:
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Type section: .* \(0x74 bytes\)
Types:
#...
- [0-9a-f]*: struct A .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct A .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) long int a:[0-9]* .*
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* foo .*
+ 0x[0-9a-f]*: struct A .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct A .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) long int a:[0-9]* .*
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* foo .*
#...
- [0-9a-f]*: struct B .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct B .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) int foo:[0-9]* .*
+ 0x[0-9a-f]*: struct B .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct B .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) int foo:[0-9]* .*
#...
- [0-9a-f]*: struct B \* \(size 0x[0-9a-f]*\) -\> [0-9a-f]*: struct B .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* .*
+ 0x[0-9a-f]*: struct B \* \(size 0x[0-9a-f]*\) -> 0x[0-9a-f]*: struct B .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* .*
#...
- [0-9a-f]*: struct A \* \(size 0x[0-9a-f]*\) -> [0-9a-f]*: struct A .*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* .*
+ 0x[0-9a-f]*: struct A \* \(size 0x[0-9a-f]*\) -> 0x[0-9a-f]*: struct A .*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* .*
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Type section: .* \(0xa8 bytes\)
#...
Types:
#...
- [0-9a-f]*: struct cycle_1 \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct cycle_1 \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* a \(.*
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(.*
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct cycle_1 \* next \(.*
+ 0x[0-9a-f]*: struct cycle_1 \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct cycle_1 \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* a \(.*
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(.*
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct cycle_1 \* next \(.*
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Type section: .* \(0x6c bytes\)
Variables:
#...
- a -> [0-9a-f]*: struct A \(.*
+ a -> 0x[0-9a-f]*: struct A \(.*
#...
Types:
#...
- [0-9a-f]*: struct A \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct A \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(.*
+ 0x[0-9a-f]*: struct A \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct A \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(.*
#...
Strings:
- 0:
+ 0x0:
#...
- [0-9a-f]*: A
+ 0x[0-9a-f]*: A
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Type section: .* \(0x6c bytes\)
Variables:
#...
- b -> [0-9a-f]*: struct B \(.*
+ b -> 0x[0-9a-f]*: struct B \(.*
#...
Types:
#...
- [0-9a-f]*: struct B \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct B \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct C \* c \(.*
+ 0x[0-9a-f]*: struct B \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct B \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct C \* c \(.*
#...
Strings:
- 0:
+ 0x0:
#...
- [0-9a-f]*: B
+ 0x[0-9a-f]*: B
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Type section: .* \(0x6c bytes\)
Variables:
#...
- c -> [0-9a-f]*: struct C \(.*
+ c -> 0x[0-9a-f]*: struct C \(.*
#...
Types:
#...
- [0-9a-f]*: struct C \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct C \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* a \(.*
+ 0x[0-9a-f]*: struct C \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct C \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* a \(.*
#...
Strings:
- 0:
+ 0x0:
#...
- [0-9a-f]*: C
+ 0x[0-9a-f]*: C
#...
Contents of CTF section \.ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Data object section: .* \(0xc bytes\)
CTF archive member: .*/data-func-1\.c:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Parent name: \.ctf
Variables:
Types:
- 80000001: foo_t .* -> .* int .*
+ 0x80000001: foo_t .* -> .* int .*
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Data objects:
#...
Types:
#...
- [0-9a-f]*: struct \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(.*
+ 0x[0-9a-f]*: struct \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(.*
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Compilation unit name: \(\?\)
Types:
#...
- [0-9a-f]*: struct A \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct A \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(.*
+ 0x[0-9a-f]*: struct A \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct A \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(.*
#...
Strings:
- 0:
+ 0x0:
#...
- [0-9a-f]*: \(\?\)
+ 0x[0-9a-f]*: \(\?\)
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Compilation unit name: .*A.c
Types:
#...
- [0-9a-f]*: struct A \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct A \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(.*
+ 0x[0-9a-f]*: struct A \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct A \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(.*
#...
Strings:
- 0:
+ 0x0:
#...
- [0-9a-f]*: A
+ 0x[0-9a-f]*: A
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Variable section: 0x0 -- 0x17 \(0x18 bytes\)
Variables:
#...
- b -> [0-9a-f]*: struct B \(.*
+ b -> 0x[0-9a-f]*: struct B \(.*
#...
Types:
#...
- [0-9a-f]*: struct B \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct B \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct C \* c \(.*
+ 0x[0-9a-f]*: struct B \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct B \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct C \* c \(.*
#...
Strings:
- 0:
+ 0x0:
#...
- [0-9a-f]*: B
+ 0x[0-9a-f]*: B
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Compilation unit name: .*function.c
#...
Types:
#...
- [0-9a-f]*: int \(\*\) \(char, int, float, void \*, void \(\*\)\(\*\) \(int\)\) \(size 0x0\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 5\) int \(\*\) \(char, int[0-9]*, float, void \*, void \(\*\)\(\*\) \(int\)\) \(aligned at 0x[0-9a-f]*\)
+ 0x[0-9a-f]*: int \(\*\) \(char, int, float, void \*, void \(\*\)\(\*\) \(int\)\) \(size 0x0\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 5\) int \(\*\) \(char, int[0-9]*, float, void \*, void \(\*\)\(\*\) \(int\)\) \(aligned at 0x[0-9a-f]*\)
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Compilation unit name: .*slice.c
#...
Types:
#...
- [0-9a-f]*: struct slices \(size 0x[0-9a-f]*\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct slices \(aligned at 0x1\)
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) int one:1 \(aligned at 0x1, format 0x1, offset:bits 0x0:0x1\)
- \[0x1\] \(ID 0x[0-9a-f]*\) \(kind 1\) int two:2 \(aligned at 0x1, format 0x1, offset:bits 0x1:0x2\)
- \[0x3\] \(ID 0x[0-9a-f]*\) \(kind 1\) int six:6 \(aligned at 0x1, format 0x1, offset:bits 0x3:0x6\)
- \[0x9\] \(ID 0x[0-9a-f]*\) \(kind 1\) int ten:10 \(aligned at 0x2, format 0x1, offset:bits 0x9:0xa\)
+ 0x[0-9a-f]*: struct slices \(size 0x[0-9a-f]*\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct slices \(aligned at 0x1\)
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 1\) int one:1 \(aligned at 0x1, format 0x1, offset:bits 0x0:0x1\)
+ *\[0x1\] \(ID 0x[0-9a-f]*\) \(kind 1\) int two:2 \(aligned at 0x1, format 0x1, offset:bits 0x1:0x2\)
+ *\[0x3\] \(ID 0x[0-9a-f]*\) \(kind 1\) int six:6 \(aligned at 0x1, format 0x1, offset:bits 0x3:0x6\)
+ *\[0x9\] \(ID 0x[0-9a-f]*\) \(kind 1\) int ten:10 \(aligned at 0x2, format 0x1, offset:bits 0x9:0xa\)
#...
Contents of CTF section .ctf:
Header:
- Magic number: dff2
+ Magic number: 0xdff2
Version: 4 \(CTF_VERSION_3\)
#...
Compilation unit name: .*super-sub-cycles.c
#...
Types:
#...
- [0-9a-f]*: struct A \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct A \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct B b \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct C c \(.*
- \[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* a \(.*
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct D d \(.*
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(.*
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct D d \(.*
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(.*
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct X x \(.*
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct Y y \(.*
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct Z z \(.*
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct Y \* y \(.*
- \[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct D \* d \(.*
+ 0x[0-9a-f]*: struct A \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct A \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct B b \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct C c \(.*
+ *\[0x0\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct A \* a \(.*
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct D d \(.*
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(.*
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct D d \(.*
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct B \* b \(.*
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct X x \(.*
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct Y y \(.*
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 6\) struct Z z \(.*
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct Y \* y \(.*
+ *\[0x[0-9a-f]*\] \(ID 0x[0-9a-f]*\) \(kind 3\) struct D \* d \(.*
#...
+2021-01-05 Nick Alcock <nick.alcock@oracle.com>
+
+ * ctf-dump.c (ctf_dump_format_type): Add 0x to hex type IDs.
+ (ctf_dump_header): Add 0x to the hex magic number.
+ (ctf_dump_str): Add 0x to the hex string offsets.
+ (ctf_dump_membstate_t) <cdm_toplevel_indent>: New.
+ (ctf_dump_type): Adjust. Free it when we're done.
+ (type_hex_digits): New.
+ (ctf_dump_member): Align output depending on the width of the type
+ ID being generated. Use printf padding, not a loop, to generate
+ indentation.
+
2021-01-05 Nick Alcock <nick.alcock@oracle.com>
* ctf-decl.c (ctf_decl_push): Don't print array decls backwards.
{
char **cdm_str;
ctf_dict_t *cdm_fp;
+ char *cdm_toplevel_indent;
} ctf_dump_membstate_t;
static int
goto err;
}
- if (asprintf (&bit, " %s%lx: ", nonroot_leader, id) < 0)
+ if (asprintf (&bit, " %s0x%lx: ", nonroot_leader, id) < 0)
goto oom;
str = str_append (str, bit);
free (bit);
};
const char *verstr = NULL;
- if (asprintf (&str, "Magic number: %x\n", hp->cth_magic) < 0)
+ if (asprintf (&str, "Magic number: 0x%x\n", hp->cth_magic) < 0)
goto err;
ctf_dump_append (state, str);
return 0;
}
+/* Report the number of digits in the hexadecimal representation of a type
+ ID. */
+
+static int
+type_hex_digits (ctf_id_t id)
+{
+ int i = 0;
+
+ if (id == 0)
+ return 1;
+
+ for (; id > 0; id >>= 4, i++);
+ return i;
+}
+
/* Dump a single member into the string in the membstate. */
static int
ctf_dump_member (const char *name, ctf_id_t id, unsigned long offset,
- int depth, void *arg)
+ int depth, void *arg)
{
ctf_dump_membstate_t *state = arg;
char *typestr = NULL;
char *bit = NULL;
ctf_encoding_t ep;
int has_encoding = 0;
- ssize_t i;
- for (i = 0; i < depth; i++)
- *state->cdm_str = str_append (*state->cdm_str, " ");
+ /* Align neatly. */
+
+ if (depth == 0)
+ {
+ if (asprintf (&state->cdm_toplevel_indent, " %*s",
+ type_hex_digits (id), "") < 0)
+ goto oom;
+ }
+
+ if (asprintf (&bit, "%s%*s", state->cdm_toplevel_indent, depth * 4, "") < 0)
+ goto oom;
+ *state->cdm_str = str_append (*state->cdm_str, bit);
+ free (bit);
if ((typestr = ctf_type_aname (state->cdm_fp, id)) == NULL)
{
if (id == 0 || ctf_errno (state->cdm_fp) == ECTF_NONREPRESENTABLE)
{
- if (asprintf (&bit, " [0x%lx] (type not represented in CTF)",
+ if (asprintf (&bit, "[0x%lx] (type not represented in CTF)",
offset) < 0)
goto oom;
has_encoding = 1;
ctf_type_encoding (state->cdm_fp, id, &ep);
- if (asprintf (&bit, " [0x%lx] (ID 0x%lx) (kind %i) %s%s%s:%i "
+ if (asprintf (&bit, "[0x%lx] (ID 0x%lx) (kind %i) %s%s%s:%i "
"(aligned at 0x%lx", offset, id,
ctf_type_kind (state->cdm_fp, id), typestr,
(name[0] != 0 && typestr[0] != 0) ? " " : "", name,
}
else
{
- if (asprintf (&bit, " [0x%lx] (ID 0x%lx) (kind %i) %s%s%s "
+ if (asprintf (&bit, "[0x%lx] (ID 0x%lx) (kind %i) %s%s%s "
"(aligned at 0x%lx", offset, id,
ctf_type_kind (state->cdm_fp, id), typestr,
(name[0] != 0 && typestr[0] != 0) ? " " : "", name,
{
char *str;
ctf_dump_state_t *state = arg;
- ctf_dump_membstate_t membstate = { &str, state->cds_fp };
+ ctf_dump_membstate_t membstate = { &str, state->cds_fp, NULL };
size_t len;
if ((str = ctf_dump_format_type (state->cds_fp, id, flag)) == NULL)
_("cannot visit members dumping type 0x%lx"), id);
goto err;
}
+ free (membstate.cdm_toplevel_indent);
/* Trim off the last linefeed added by ctf_dump_member(). */
len = strlen (str);
return 0;
err:
+ free (membstate.cdm_toplevel_indent);
free (str);
return 0; /* Swallow the error. */
}
fp->ctf_str[CTF_STRTAB_0].cts_len;)
{
char *str;
- if (asprintf (&str, "%lx: %s",
+ if (asprintf (&str, "0x%lx: %s",
(unsigned long) (s - fp->ctf_str[CTF_STRTAB_0].cts_strs),
s) < 0)
return (ctf_set_errno (fp, errno));