Open FrozenCaribou opened 8 years ago
Yeah, that does look like a bug. There's are some tests for making sure things work across imports, but this may not be covered. Thanks for reporting.
Hello,
In fact it exists an unit test https://github.com/rsmmr/hilti/blob/master/tests/binpac/unit/external-hooks-import.pac2 that tests hooks of imported types. However this test gives the both modules in parameters to pac-driver.
If we take the previous case, hooks are well executed if we run:
echo "A" | pac-driver test.pac2 p.pac2
AAA
<c=4, a=b"TEST", b=65>
I do not know if it is the behaviour excepted but it could be interesting to not have to specify all files included because we still give the "pac2 include paths" with -I argument. It is useful if we use a pac2 files library with many pac2 modules.
I tried to correct that by compiling all (recursives) dependencies of a pac2 module and link them into a final llvm module. I implemented a dependencies
method that returns all pac2 file path dependencies of a binpac context.
https://github.com/FrozenCaribou/hilti/tree/fix_pac2_import The branch fixes binpac++ and pac-driver.
I tried to import "parses/asn1.pac" but it did not work. It seems that hooks (like "on %done") of imported types are not executed.
Here a simple test :
test.pac2
p.pac2
We notice that "c" is not modified and "a" is not defined.