oracle / souffle

DEPRECATED. Soufflé is a translator of declarative Datalog programs into the C++ language.
https://github.com/souffle-lang
Universal Permissive License v1.0
49 stars 17 forks source link

Investigate if sample code can be made compatible with Doop extractor #22

Open nkeynes-oracle opened 7 years ago

nkeynes-oracle commented 7 years ago

The sample files reference relations such as BasicBlockRef that are not generated by the Doop extractor. These references should be removed if possible so that the sample code can work with Doop-extracted fact tables.

nkeynes-oracle commented 7 years ago

It looks like there's a few separate issues involved here - a) Doop doesn't appear to write out fact files that would otherwise be empty b) Some fact files are expected to have slightly different names (e.g. MethodSignature-Descriptor.facts vs MethodSignatureDescriptor.facts) c) Some expected fact files are not generated by Doop at all (e.g. BasicBlockEntry) d) It looks like the generated facts have changed between the binary Doop release and current tip-of-tree. For the moment focusing on the released version.

With respect to (c) we appear to be missing the following relations: BasicBlockEntry BasicBlockIn ExternalHeapAllocation FieldSignatureRef HeapAllocationRefDebugInfo LoadInstanceFieldIndex NestedClass StoreInstanceFieldIndex UnknownReturnedHeapAllocation

b-scholz commented 7 years ago

A lot of this work is already done here:

https://github.com/souffle-lang/java-pts

Changing the spec from open-world to closed-world needs to be done.

paddykrishnan commented 7 years ago

It would require some effort to get the new version of Doop to work with Souffle. The tool-chain used by Doop has become more sophisticated and the underlying schema for some of the relations have changed.

thomasgilray commented 7 years ago

I can run the version in the /logic/ folder of the souffle-lang/java-pts repo, but still get various missing files (e.g. ClassModifier.facts) from that version too. Is there an older version where this was in a working state? (Although maybe it requires an older souffle.)

FYI: I have to run java7 and use the extractor in build/libs/ instead of build/lib/ but otherwise I followed the readme.