Hi,
I was looking at fixing my code for ctf pprinting arrays in ddb(4),
and came across ctf in section 5 man pages for freebsd with google,
which lead me to wondering about this, and even think about possibility
of an bug here, since the ctf(5)[0] mostly matches what i've seen so
far in OpenBSD otherwise(didn't see direct asserts/ifs yet to make
sure CTF_K_ARRAY is always handled in the ctf_stype short form thought).
In it, under "Type Encoding" vlen is described like:
+o The length of the variable data
and under "Encoding of Arrays" has this:
"Arrays, which are of type CTF_K_ARRAY, have no variable length arguments."
so the above doesn't hold currently, should it?
While nearly on-topic, is there any definitive docs for CTF?
+ typofix for making up the use of bugs@; sorry:)
-Artturi
[0] https://www.freebsd.org/cgi/man.cgi?query=ctf
diff --git usr.bin/ctfconv/generate.c usr.bin/ctfconv/generate.c
index e19094fe231..299c0d12eb6 100644
--- usr.bin/ctfconv/generate.c
+++ usr.bin/ctfconv/generate.c
@@ -183,7 +183,7 @@ imcs_add_type(struct imcs *imcs, struct itype *it)
assert(it->it_type != CTF_K_UNKNOWN && it->it_type != CTF_K_FORWARD);
- vlen = it->it_nelems;
+ vlen = it->it_type != CTF_K_ARRAY ? it->it_nelems : 0;
size = it->it_size;
kind = it->it_type;
root = 0;
diff --git usr.bin/ctfconv/itype.h usr.bin/ctfconv/itype.h
index 408a2140558..c4878f2783e 100644
--- usr.bin/ctfconv/itype.h
+++ usr.bin/ctfconv/itype.h
@@ -36,7 +36,7 @@ struct itype {
TAILQ_ENTRY(itype) it_symb; /* itype: global queue of symbol */
RB_ENTRY(itype) it_node; /* itype: per-type tree of types */
- SIMPLEQ_HEAD(, itref) it_refs; /* itpye: backpointing refs */
+ SIMPLEQ_HEAD(, itref) it_refs; /* itype: backpointing refs */
TAILQ_HEAD(, imember) it_members;/* itype: members of struct/union */