Skip to content
  • Eric Blake's avatar
    qapi: Add comments to aid debugging generated introspection · 8c643361
    Eric Blake authored
    We consciously chose in commit 1a9a507b to hide QAPI type names
    from the introspection output on the wire, but added a command
    line option -u to unmask the type name when doing a debug build.
    The unmask option still remains useful to some other forms of
    automated analysis, so it will not be removed; however, when it
    is not in use, the generated .c file can be hard to read.  At
    the time when we first introduced masking, the generated file
    consisted only of a monolithic C string, so there was no clean
    way to inject any comments.
    
    Later, in commit 7d0f982b, we switched the generation to output
    a QLit object, in part to make it easier for future addition of
    conditional compilation.  In fact, commit d626b6c1
    
     took advantage
    of this by passing a tuple instead of a bare object for encoding
    the output of conditionals.  By extending that tuple, we can now
    interject strategic comments.
    
    For now, type name debug aid comments are only output once per
    meta-type, rather than at all uses of the number used to encode
    the type within the introspection data.  But this is still a lot
    more convenient than having to regenerate the file with the
    unmask operation temporarily turned on - merely search the
    generated file for '"NNN" =' to learn the corresponding source
    name and associated definition of type NNN.
    
    The generated qapi-introspect.c changes only with the addition
    of comments, such as:
    
    | @@ -14755,6 +15240,7 @@
    |          { "name", QLIT_QSTR("[485]"), },
    |          {}
    |      })),
    | +    /* "485" = QCryptoBlockInfoLUKSSlot */
    |      QLIT_QDICT(((QLitDictEntry[]) {
    |          { "members", QLIT_QLIST(((QLitObject[]) {
    |              QLIT_QDICT(((QLitDictEntry[]) {
    
    Signed-off-by: default avatarEric Blake <eblake@redhat.com>
    Message-Id: <20180827213943.33524-3-eblake@redhat.com>
    Reviewed-by: default avatarMarkus Armbruster <armbru@redhat.com>
    [Rebased, update to qapi-code-gen.txt corrected]
    Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
    8c643361