Re: [PATCH 0/3 v3] Create secil2tree to write CIL AST

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 21, 2021 at 7:21 PM James Carter <jwcart2@xxxxxxxxx> wrote:
>
> For debugging purposes it would be useful to be able to write out
> the CIL AST at various points in the build process.
>
> This patch set creates secil2tree which can write the CIL parse tree,
> the CIL AST after the build phase, or the CIL AST after the resolve
> phase (with names fully-qualified).
>
> Within CIL the function cil_print_tree() has existed from early in
> CIL's development, but it was not exported in libsepol and there was no
> way to use it except by adding a call to it where you wanted to print
> out the CIL AST and then recompiling everything. It also used cil_log()
> as its output, so other messages could be mixed in with the output. This
> patch set moves all of this code to its own file, updates it, renames it
> as cil_write_ast(), and adds libsepol functions that can be used to call
> it after each one of the phases mentioned above.
>
> Both the parse and build CIL AST are valid CIL policies that can be
> compiled with secilc, but the resolve CIL AST is not always a valid CIL
> policy. The biggest problem is that fully-qualified names can contain
> dots and CIL does not allow dots in declaration names. There are other
> problems as well. It would be nice to get to the point where the output
> for all of the trees are valid CIL, but that is a goal for the future.
>
> v3:
> - -use "-ast-phase=<phase>" in the usage message and man pages instead
> of "-ast-phase <phase>"
>
> v2:
> - Remove whitespace errors in cil_write_ast.h
> - Use "const char*" instead of just "char*" when dealing with string
> literals to satisfy clang.
>
> James Carter (3):
>   libsepol/cil: Create functions to write the CIL AST
>   libsepol/cil: Add functions to make use of cil_write_ast()
>   secilc: Create the new program called secil2tree to write out CIL AST
>
>  libsepol/cil/include/cil/cil.h   |    3 +
>  libsepol/cil/src/cil.c           |   92 ++
>  libsepol/cil/src/cil_tree.c      | 1471 ----------------------------
>  libsepol/cil/src/cil_tree.h      |    2 -
>  libsepol/cil/src/cil_write_ast.c | 1573 ++++++++++++++++++++++++++++++
>  libsepol/cil/src/cil_write_ast.h |   46 +
>  libsepol/src/libsepol.map.in     |    3 +
>  secilc/.gitignore                |    2 +
>  secilc/Makefile                  |   20 +-
>  secilc/secil2tree.8.xml          |   81 ++
>  secilc/secil2tree.c              |  206 ++++
>  11 files changed, 2024 insertions(+), 1475 deletions(-)
>  create mode 100644 libsepol/cil/src/cil_write_ast.c
>  create mode 100644 libsepol/cil/src/cil_write_ast.h
>  create mode 100644 secilc/secil2tree.8.xml
>  create mode 100644 secilc/secil2tree.c
>
> --
> 2.26.3
>

I indeed missed the v2, sorry for this.
These patches look good to me, thanks!

Acked-by: Nicolas Iooss <nicolas.iooss@xxxxxxx>




[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux