Commit graph

8 commits

Author SHA1 Message Date
Bojan Novković
1cbd613f33 db_pprint: Properly handle complex pointer types
The existing pretty-printing code fails to properly print complex
pointer types. This commit fixes this behaviour by traversing the
chain of CTF types until a base type is encountered.

Approved by: markj (mentor)
Fixes: c21bc6f3c2
2024-07-21 19:31:59 +02:00
Bojan Novković
82f5dfc121 db_pprint: Fix offset calculation for struct members
The struct pretty-printing code uses the ctm_offset field in
struct ctf_member_v3 to calculate the address of a struct member.
However, the code treats this as a byte offset rather than the
offset in bits, leading to wrong values being printed.
Fix this by diving with ctm_offset by NBBY.

Approved by: markj (mentor)
Fixes: c21bc6f3c2
2024-07-21 19:31:48 +02:00
Mark Johnston
d627293f03 ddb: Fix format string errors in db_pprint.c
Reported by:	bapt
Fixes:	aada453dcb ("ddb: Properly pretty-print non-labeled enum values")
2024-04-03 14:14:13 -04:00
Bojan Novković
872c4402af ddb: Don't throw away qualifier when pretty-printing unnamed pointers
Reported by:	jrtc27
Fixes:	c21bc6f ("ddb: Add CTF-based pretty printing")
Approved by:	markj (mentor)
2024-04-03 18:17:54 +02:00
Bojan Novković
aada453dcb ddb: Properly pretty-print non-labeled enum values
The ddb pretty-printer currently does not print out enum values that
are not labeled (e.g. X | Y).
The enum printer was reworked to print non-labeled values.

Reported by:	jrtc27
Fixes:	c21bc6f ("ddb: Add CTF-based pretty printing")
Approved by:	markj (mentor)
2024-04-03 18:17:11 +02:00
Bojan Novković
637e67e032 ddb: Drop obsolete -FreeBSD identifier from license
Reported by:	jrtc27
Fixes:	c21bc6f3c2 ("ddb: Add CTF-based pretty printing")
Approved by:	markj (mentor)
2024-03-28 20:32:52 +01:00
Mark Johnston
d722901fa3 ddb: Fix format string errors in db_pprint.c
For some reason, db_expr_t is defined as "long" on 64-bit platforms and
"int" on others.  When printing values of this type, simply cast them to
long to suppress compilation errors on 32-bit systems.

Reviewed by:	bnovkov
Fixes:	c21bc6f3c2 ("ddb: Add CTF-based pretty printing")
2024-03-22 02:11:03 -04:00
Bojan Novković
c21bc6f3c2 ddb: Add CTF-based pretty printing
Add basic CTF support and a CTF-powered pretty-printer to ddb.

The db_ctf.* files expose a basic interface for fetching type
data for ELF symbols, interacting with the CTF string table,
and translating type identifiers to type data.

The db_pprint.c file uses those interfaces to implement
a pretty-printer for all kernel ELF symbols.
The pretty-printer works with symbol names and arbitrary addresses:
pprint struct thread 0xffffffff8194ad90

Pretty-printing currently only works after the root filesystem
gets mounted because the CTF info is not available during
early boot.

Differential Revision:	https://reviews.freebsd.org/D37899
Approved by: markj (mentor)
2024-03-22 04:03:33 +01:00