GSoC status report - #3 of 10

Srikavin Ramkumar srikavinramkumar at
Tue Jun 22 06:22:42 UTC 2021



Last week I continued working on the code generation. Right now, basic system
call descriptions with basic (non-pointer, non-struct) argument types are
supported. I'm currently improving support for generating decoders for pointer 
and structure types.

As a simple example, the syzlang description for the close syscall

    close(fd fd)

is automatically transformed into the following decoder:

    // Debug Location: defs/example.syzlang:6:1 Node Type: AST_SYSCALL
        /* arg: fd (fd) */
        printfd(tcp, tcp->u_arg[0]);
        return RVAL_DECODED;

I also improved the error messages that are displayed on syntactic and semantic
errors. They look like the following now:

    error 0: defs/example.syzlang: line 1 column 21
            open(file ptr[string], flags xor_flags[open_flags], mode or_flags[open_mode]) fd
                                ^ type 'ptr' expects 2 type options; got 1
    error 1: defs/example.syzlang: line 2 column 6
            read((fd fd, buf ptr[out, stringnoz[ref[count]]], count size_t)
                 ^ syntax error, unexpected (, expecting ) or IDENTIFIER

 - Continue working on the code generation
   - Improve support for pointer types
   - Add support for return flags (RVAL_FD, RVAL_TID, etc.)
   - Add support for variant syscall types where argument types depend on the
     first argument (like prctl and ioctl))
   - Add support for flags (xor_flags and or_flags) which can reference existing 
     xlat definitions
   - Add way to define decoders for specified types in syzlang files
   - Automatically generate struct decoding for simple structs
   - Emit warnings for possible incorrect behavior
 - Incorporate code generation with the build process
 - Finalize CLI arguments, and add usage documentation

-- Srikavin

More information about the Strace-devel mailing list