From 225fb0b028c67f53bc4dcce26f3cc9e83a15713f Mon Sep 17 00:00:00 2001 From: Christian Dietrich <christian.dietrich@informatik.uni-erlangen.de> Date: Wed, 18 Mar 2015 10:57:50 +0100 Subject: [PATCH] generator: big refactoring Rename all parts in a more logical way. The generator is now divided into three main parts: - analysis: Generate GCFG and State Transition graph - transform: Generate Assertions, CFG Regions, FSMs - coder: bring the information collected in the previous steps down to the code. Change-Id: I5cfd48f6a8d195c30b16b425eda010d9b0405dcd --- app/bcc1/alarm1/verify_a.py | 2 +- app/bcc1/alarm1/verify_b.py | 2 +- app/bcc1/alarm1/verify_c.py | 2 +- app/bcc1/alarm1/verify_d.py | 2 +- app/bcc1/alarm1/verify_e.py | 2 +- app/bcc1/alarm3/verify_a.py | 2 +- app/bcc1/alarm3/verify_b.py | 2 +- app/bcc1/alarm3/verify_c.py | 2 +- app/bcc1/alarm3/verify_d.py | 2 +- app/bcc1/alarm3/verify_e.py | 2 +- app/bcc1/complex1/verify_a.py | 2 +- app/bcc1/complex1/verify_b.py | 2 +- app/bcc1/complex1/verify_c.py | 2 +- app/bcc1/complex2/verify_a.py | 2 +- app/bcc1/isr2/verify_a.py | 2 +- app/bcc1/isr2/verify_b.py | 2 +- app/bcc1/isr2/verify_c.py | 2 +- app/bcc1/isr2/verify_d.py | 2 +- app/bcc1/isr2/verify_e.py | 2 +- app/bcc1/resource1/verify_a.py | 2 +- app/bcc1/resource1/verify_b.py | 2 +- app/bcc1/resource1/verify_d.py | 2 +- app/bcc1/resource1/verify_e.py | 2 +- app/bcc1/resource1/verify_f.py | 2 +- app/bcc1/resource1/verify_g.py | 2 +- app/bcc1/resource1/verify_h.py | 2 +- app/bcc1/resource1/verify_k.py | 2 +- app/bcc1/resource2/verify_a.py | 2 +- app/bcc1/resource2/verify_b.py | 2 +- app/bcc1/sse1/verify_a.py | 2 +- app/bcc1/sse1/verify_b.py | 2 +- app/bcc1/sse1/verify_c.py | 2 +- app/bcc1/task1/verify_a.py | 2 +- app/bcc1/task1/verify_b.py | 2 +- app/bcc1/task1/verify_c.py | 2 +- app/bcc1/task1/verify_d.py | 2 +- app/bcc1/task1/verify_e.py | 2 +- app/bcc1/task1/verify_f.py | 2 +- app/bcc1/task1/verify_g.py | 2 +- app/bcc1/task2/verify_a.py | 2 +- app/bcc1/task2/verify_b.py | 2 +- app/ecc1/event1/verify_a.py | 2 +- app/ecc1/event1/verify_b.py | 2 +- app/ecc1/event1/verify_c.py | 2 +- app/ecc1/event1/verify_d.py | 2 +- app/ecc1/event1/verify_e.py | 2 +- app/ecc1/eventisr1/verify_a.py | 2 +- app/ecc1/eventisr1/verify_b.py | 2 +- app/ecc1/eventisr1/verify_c.py | 2 +- app/ecc1/eventisr1/verify_d.py | 2 +- app/sysmodel/1alarm/verify_a.py | 2 +- app/sysmodel/1alarm/verify_aa.py | 2 +- generator/CMakeLists.txt | 2 +- generator/Generator.py | 10 +-- generator/LLVMPYAnalysis.py | 4 +- generator/{graph => analysis}/ABBMergePass.py | 6 +- .../{graph => analysis}/AddFunctionCalls.py | 6 +- generator/{graph => analysis}/Analysis.py | 4 +- .../{graph => analysis}/AtomicBasicBlock.py | 10 +-- .../{graph => analysis}/ConstructGlobalCFG.py | 8 +-- .../{graph => analysis}/DominanceAnalysis.py | 8 +-- .../DynamicPriorityAnalysis.py | 8 +-- generator/{graph => analysis}/Event.py | 0 generator/{graph => analysis}/Function.py | 4 +- .../{graph => analysis}/GlobalAbbInfo.py | 0 .../GlobalControlFlowMetric.py | 4 +- .../InterruptControlAnalysis.py | 4 +- generator/{graph => analysis}/PassManager.py | 4 +- .../{graph => analysis}/PreciseSystemState.py | 10 +-- .../PrioritySpreadingPass.py | 4 +- generator/{graph => analysis}/Resource.py | 0 generator/{graph => analysis}/Sporadic.py | 0 generator/{graph => analysis}/Subtask.py | 6 +- .../SymbolicSystemExecution.py | 10 +-- generator/{graph => analysis}/SystemGraph.py | 18 ++--- generator/{graph => analysis}/SystemObject.py | 0 .../{graph => analysis}/SystemSemantic.py | 10 +-- generator/{graph => analysis}/SystemState.py | 10 +-- .../{graph => analysis}/SystemStateFlow.py | 16 ++--- generator/{graph => analysis}/Task.py | 2 +- generator/analysis/__init__.py | 28 ++++++++ generator/{graph => analysis}/common.py | 0 generator/{graph => analysis}/types.py | 2 +- .../{graph => analysis}/verifier_tools.py | 8 +-- generator/coder/__init__.py | 14 ++++ generator/{rules/arm.py => coder/arch_arm.py} | 15 ++--- generator/coder/arch_generic.py | 62 +++++++++++++++++ .../{rules/posix.py => coder/arch_posix.py} | 12 ++-- generator/{rules/x86.py => coder/arch_x86.py} | 15 ++--- generator/{rules => coder}/base.py | 7 +- .../{ => coder}/elements/DataObjectManager.py | 2 +- .../{ => coder}/elements/FunctionManager.py | 2 +- .../{ => coder}/elements/IncludeManager.py | 2 +- .../{ => coder}/elements/SourceElement.py | 0 generator/{ => coder}/elements/SourceFile.py | 6 +- generator/coder/elements/__init__.py | 9 +++ generator/{ => coder}/elements/template.py | 0 generator/{rules => coder}/implementations.py | 0 .../{rules/encoded.py => coder/os_encoded.py} | 12 ++-- .../{rules/simple.py => coder/os_generic.py} | 66 ++----------------- .../unencoded.py => coder/os_unencoded.py} | 20 +++--- .../syscalls_fsm.py => coder/syscall_fsm.py} | 10 +-- .../syscall_full.py} | 18 +++-- .../syscall_specialized.py} | 10 +-- generator/elements/__init__.py | 9 --- generator/graph/__init__.py | 31 --------- generator/main.py | 11 ++-- generator/rules/__init__.py | 12 ---- generator/rules/fsm_kernel.py | 10 --- generator/{graph => transform}/CFGRegions.py | 6 +- .../FiniteStateMachineBuilder.py | 5 +- .../GenerateAssertions.py | 5 +- generator/transform/__init__.py | 5 ++ .../sage_finite_state_machine.py | 0 114 files changed, 335 insertions(+), 351 deletions(-) rename generator/{graph => analysis}/ABBMergePass.py (98%) rename generator/{graph => analysis}/AddFunctionCalls.py (94%) rename generator/{graph => analysis}/Analysis.py (99%) rename generator/{graph => analysis}/AtomicBasicBlock.py (95%) rename generator/{graph => analysis}/ConstructGlobalCFG.py (98%) rename generator/{graph => analysis}/DominanceAnalysis.py (97%) rename generator/{graph => analysis}/DynamicPriorityAnalysis.py (96%) rename generator/{graph => analysis}/Event.py (100%) rename generator/{graph => analysis}/Function.py (94%) rename generator/{graph => analysis}/GlobalAbbInfo.py (100%) rename generator/{graph => analysis}/GlobalControlFlowMetric.py (94%) rename generator/{graph => analysis}/InterruptControlAnalysis.py (96%) rename generator/{graph => analysis}/PassManager.py (98%) rename generator/{graph => analysis}/PreciseSystemState.py (97%) rename generator/{graph => analysis}/PrioritySpreadingPass.py (93%) rename generator/{graph => analysis}/Resource.py (100%) rename generator/{graph => analysis}/Sporadic.py (100%) rename generator/{graph => analysis}/Subtask.py (92%) rename generator/{graph => analysis}/SymbolicSystemExecution.py (98%) rename generator/{graph => analysis}/SystemGraph.py (97%) rename generator/{graph => analysis}/SystemObject.py (100%) rename generator/{graph => analysis}/SystemSemantic.py (98%) rename generator/{graph => analysis}/SystemState.py (98%) rename generator/{graph => analysis}/SystemStateFlow.py (97%) rename generator/{graph => analysis}/Task.py (97%) create mode 100644 generator/analysis/__init__.py rename generator/{graph => analysis}/common.py (100%) rename generator/{graph => analysis}/types.py (97%) rename generator/{graph => analysis}/verifier_tools.py (96%) create mode 100644 generator/coder/__init__.py rename generator/{rules/arm.py => coder/arch_arm.py} (95%) create mode 100644 generator/coder/arch_generic.py rename generator/{rules/posix.py => coder/arch_posix.py} (92%) rename generator/{rules/x86.py => coder/arch_x86.py} (94%) rename generator/{rules => coder}/base.py (95%) rename generator/{ => coder}/elements/DataObjectManager.py (98%) rename generator/{ => coder}/elements/FunctionManager.py (98%) rename generator/{ => coder}/elements/IncludeManager.py (94%) rename generator/{ => coder}/elements/SourceElement.py (100%) rename generator/{ => coder}/elements/SourceFile.py (84%) create mode 100644 generator/coder/elements/__init__.py rename generator/{ => coder}/elements/template.py (100%) rename generator/{rules => coder}/implementations.py (100%) rename generator/{rules/encoded.py => coder/os_encoded.py} (96%) rename generator/{rules/simple.py => coder/os_generic.py} (77%) rename generator/{rules/unencoded.py => coder/os_unencoded.py} (92%) rename generator/{rules/syscalls_fsm.py => coder/syscall_fsm.py} (96%) rename generator/{rules/syscalls_full.py => coder/syscall_full.py} (97%) rename generator/{rules/syscalls_specialized.py => coder/syscall_specialized.py} (97%) delete mode 100644 generator/elements/__init__.py delete mode 100644 generator/graph/__init__.py delete mode 100644 generator/rules/__init__.py delete mode 100644 generator/rules/fsm_kernel.py rename generator/{graph => transform}/CFGRegions.py (97%) rename generator/{graph => transform}/FiniteStateMachineBuilder.py (99%) rename generator/{graph => transform}/GenerateAssertions.py (98%) create mode 100644 generator/transform/__init__.py rename generator/{graph => transform}/sage_finite_state_machine.py (100%) diff --git a/app/bcc1/alarm1/verify_a.py b/app/bcc1/alarm1/verify_a.py index 510d02f..4a2069a 100644 --- a/app/bcc1/alarm1/verify_a.py +++ b/app/bcc1/alarm1/verify_a.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/alarm1/verify_b.py b/app/bcc1/alarm1/verify_b.py index 072fa65..31e40f4 100644 --- a/app/bcc1/alarm1/verify_b.py +++ b/app/bcc1/alarm1/verify_b.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/alarm1/verify_c.py b/app/bcc1/alarm1/verify_c.py index e93204d..680974b 100644 --- a/app/bcc1/alarm1/verify_c.py +++ b/app/bcc1/alarm1/verify_c.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/alarm1/verify_d.py b/app/bcc1/alarm1/verify_d.py index 006e9f2..be909e1 100644 --- a/app/bcc1/alarm1/verify_d.py +++ b/app/bcc1/alarm1/verify_d.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/alarm1/verify_e.py b/app/bcc1/alarm1/verify_e.py index 994365a..1d36396 100644 --- a/app/bcc1/alarm1/verify_e.py +++ b/app/bcc1/alarm1/verify_e.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/alarm3/verify_a.py b/app/bcc1/alarm3/verify_a.py index e47cc29..5e1c4dc 100644 --- a/app/bcc1/alarm3/verify_a.py +++ b/app/bcc1/alarm3/verify_a.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def computation_blocks(analysis, function): provider = analysis.global_abb_information_provider() diff --git a/app/bcc1/alarm3/verify_b.py b/app/bcc1/alarm3/verify_b.py index 2a6ab5c..bfe905e 100644 --- a/app/bcc1/alarm3/verify_b.py +++ b/app/bcc1/alarm3/verify_b.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * from verify_a import * def after_ConstructGlobalCFG(analysis): diff --git a/app/bcc1/alarm3/verify_c.py b/app/bcc1/alarm3/verify_c.py index 110b65f..069aa2d 100644 --- a/app/bcc1/alarm3/verify_c.py +++ b/app/bcc1/alarm3/verify_c.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * from verify_a import * def after_ConstructGlobalCFG(analysis): diff --git a/app/bcc1/alarm3/verify_d.py b/app/bcc1/alarm3/verify_d.py index 3e2e1ad..c8b8568 100644 --- a/app/bcc1/alarm3/verify_d.py +++ b/app/bcc1/alarm3/verify_d.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * from verify_a import * def after_ConstructGlobalCFG(analysis): diff --git a/app/bcc1/alarm3/verify_e.py b/app/bcc1/alarm3/verify_e.py index 99e919e..6c490ff 100644 --- a/app/bcc1/alarm3/verify_e.py +++ b/app/bcc1/alarm3/verify_e.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * from verify_a import * def after_ConstructGlobalCFG(analysis): diff --git a/app/bcc1/complex1/verify_a.py b/app/bcc1/complex1/verify_a.py index 05bee15..da4a228 100644 --- a/app/bcc1/complex1/verify_a.py +++ b/app/bcc1/complex1/verify_a.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/complex1/verify_b.py b/app/bcc1/complex1/verify_b.py index cbb196b..d927881 100644 --- a/app/bcc1/complex1/verify_b.py +++ b/app/bcc1/complex1/verify_b.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/complex1/verify_c.py b/app/bcc1/complex1/verify_c.py index 1f9f011..3c59404 100644 --- a/app/bcc1/complex1/verify_c.py +++ b/app/bcc1/complex1/verify_c.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/complex2/verify_a.py b/app/bcc1/complex2/verify_a.py index ee9debb..f78c37c 100644 --- a/app/bcc1/complex2/verify_a.py +++ b/app/bcc1/complex2/verify_a.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_ConstructGlobalCFG(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/isr2/verify_a.py b/app/bcc1/isr2/verify_a.py index 3529648..78b5167 100644 --- a/app/bcc1/isr2/verify_a.py +++ b/app/bcc1/isr2/verify_a.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/isr2/verify_b.py b/app/bcc1/isr2/verify_b.py index 4abb4e9..73acbc9 100644 --- a/app/bcc1/isr2/verify_b.py +++ b/app/bcc1/isr2/verify_b.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/isr2/verify_c.py b/app/bcc1/isr2/verify_c.py index 6473891..9ffd846 100644 --- a/app/bcc1/isr2/verify_c.py +++ b/app/bcc1/isr2/verify_c.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/isr2/verify_d.py b/app/bcc1/isr2/verify_d.py index ba92724..6fcfbd6 100644 --- a/app/bcc1/isr2/verify_d.py +++ b/app/bcc1/isr2/verify_d.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/isr2/verify_e.py b/app/bcc1/isr2/verify_e.py index 022073d..1280c07 100644 --- a/app/bcc1/isr2/verify_e.py +++ b/app/bcc1/isr2/verify_e.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/resource1/verify_a.py b/app/bcc1/resource1/verify_a.py index 2a4d520..757d99c 100644 --- a/app/bcc1/resource1/verify_a.py +++ b/app/bcc1/resource1/verify_a.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/resource1/verify_b.py b/app/bcc1/resource1/verify_b.py index a79be35..38193e4 100644 --- a/app/bcc1/resource1/verify_b.py +++ b/app/bcc1/resource1/verify_b.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/resource1/verify_d.py b/app/bcc1/resource1/verify_d.py index acd06ab..b801be5 100644 --- a/app/bcc1/resource1/verify_d.py +++ b/app/bcc1/resource1/verify_d.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/resource1/verify_e.py b/app/bcc1/resource1/verify_e.py index 0e405b8..35af3d7 100644 --- a/app/bcc1/resource1/verify_e.py +++ b/app/bcc1/resource1/verify_e.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/resource1/verify_f.py b/app/bcc1/resource1/verify_f.py index 7eb2959..b98baa8 100644 --- a/app/bcc1/resource1/verify_f.py +++ b/app/bcc1/resource1/verify_f.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/resource1/verify_g.py b/app/bcc1/resource1/verify_g.py index 86f1145..d7e8538 100644 --- a/app/bcc1/resource1/verify_g.py +++ b/app/bcc1/resource1/verify_g.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/resource1/verify_h.py b/app/bcc1/resource1/verify_h.py index 469900e..80e48e4 100644 --- a/app/bcc1/resource1/verify_h.py +++ b/app/bcc1/resource1/verify_h.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/resource1/verify_k.py b/app/bcc1/resource1/verify_k.py index f323e8a..1b7f8e3 100644 --- a/app/bcc1/resource1/verify_k.py +++ b/app/bcc1/resource1/verify_k.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/resource2/verify_a.py b/app/bcc1/resource2/verify_a.py index ba23dbd..6494783 100644 --- a/app/bcc1/resource2/verify_a.py +++ b/app/bcc1/resource2/verify_a.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/resource2/verify_b.py b/app/bcc1/resource2/verify_b.py index 346257b..2b782f2 100644 --- a/app/bcc1/resource2/verify_b.py +++ b/app/bcc1/resource2/verify_b.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/sse1/verify_a.py b/app/bcc1/sse1/verify_a.py index bbf7c47..c901856 100644 --- a/app/bcc1/sse1/verify_a.py +++ b/app/bcc1/sse1/verify_a.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/sse1/verify_b.py b/app/bcc1/sse1/verify_b.py index 3cdfc22..cf37df7 100644 --- a/app/bcc1/sse1/verify_b.py +++ b/app/bcc1/sse1/verify_b.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/sse1/verify_c.py b/app/bcc1/sse1/verify_c.py index 4e96488..5c134ab 100644 --- a/app/bcc1/sse1/verify_c.py +++ b/app/bcc1/sse1/verify_c.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/task1/verify_a.py b/app/bcc1/task1/verify_a.py index 588a21e..5dfed77 100644 --- a/app/bcc1/task1/verify_a.py +++ b/app/bcc1/task1/verify_a.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/task1/verify_b.py b/app/bcc1/task1/verify_b.py index 4b4488b..3f98dc6 100644 --- a/app/bcc1/task1/verify_b.py +++ b/app/bcc1/task1/verify_b.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_CurrentRunningSubtask(analysis): (Handler11, bar) = \ diff --git a/app/bcc1/task1/verify_c.py b/app/bcc1/task1/verify_c.py index fc626b4..b2f9d9c 100644 --- a/app/bcc1/task1/verify_c.py +++ b/app/bcc1/task1/verify_c.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_CurrentRunningSubtask(analysis): (Handler11, bar) = \ diff --git a/app/bcc1/task1/verify_d.py b/app/bcc1/task1/verify_d.py index 6f8a6b0..2c8c2d1 100644 --- a/app/bcc1/task1/verify_d.py +++ b/app/bcc1/task1/verify_d.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_CurrentRunningSubtask(analysis): (Handler11, bar) = \ diff --git a/app/bcc1/task1/verify_e.py b/app/bcc1/task1/verify_e.py index 52f57ac..7ae2686 100644 --- a/app/bcc1/task1/verify_e.py +++ b/app/bcc1/task1/verify_e.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/task1/verify_f.py b/app/bcc1/task1/verify_f.py index 2a11f38..5429420 100644 --- a/app/bcc1/task1/verify_f.py +++ b/app/bcc1/task1/verify_f.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/task1/verify_g.py b/app/bcc1/task1/verify_g.py index d48d67d..b088f59 100644 --- a/app/bcc1/task1/verify_g.py +++ b/app/bcc1/task1/verify_g.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/task2/verify_a.py b/app/bcc1/task2/verify_a.py index 018851d..ca68146 100644 --- a/app/bcc1/task2/verify_a.py +++ b/app/bcc1/task2/verify_a.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/bcc1/task2/verify_b.py b/app/bcc1/task2/verify_b.py index 93bcbfb..0a37afd 100644 --- a/app/bcc1/task2/verify_b.py +++ b/app/bcc1/task2/verify_b.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_SystemStateFlow(analysis): # Find all three systemcall handlers diff --git a/app/ecc1/event1/verify_a.py b/app/ecc1/event1/verify_a.py index 2a328ab..a59ae3c 100644 --- a/app/ecc1/event1/verify_a.py +++ b/app/ecc1/event1/verify_a.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_ConstructGlobalCFG(analysis): # Find all three systemcall handlers diff --git a/app/ecc1/event1/verify_b.py b/app/ecc1/event1/verify_b.py index 7b68613..d843789 100644 --- a/app/ecc1/event1/verify_b.py +++ b/app/ecc1/event1/verify_b.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_ConstructGlobalCFG(analysis): # Find all three systemcall handlers diff --git a/app/ecc1/event1/verify_c.py b/app/ecc1/event1/verify_c.py index 63b684e..bb908a4 100644 --- a/app/ecc1/event1/verify_c.py +++ b/app/ecc1/event1/verify_c.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_ConstructGlobalCFG(analysis): # Find all three systemcall handlers diff --git a/app/ecc1/event1/verify_d.py b/app/ecc1/event1/verify_d.py index 2a643e4..3bc72fe 100644 --- a/app/ecc1/event1/verify_d.py +++ b/app/ecc1/event1/verify_d.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_ConstructGlobalCFG(analysis): # Find all three systemcall handlers diff --git a/app/ecc1/event1/verify_e.py b/app/ecc1/event1/verify_e.py index aba3bc3..9973dd0 100644 --- a/app/ecc1/event1/verify_e.py +++ b/app/ecc1/event1/verify_e.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_ConstructGlobalCFG(analysis): # Find all three systemcall handlers diff --git a/app/ecc1/eventisr1/verify_a.py b/app/ecc1/eventisr1/verify_a.py index 107489e..1690cc3 100644 --- a/app/ecc1/eventisr1/verify_a.py +++ b/app/ecc1/eventisr1/verify_a.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_ConstructGlobalCFG(analysis): # Find all three systemcall handlers diff --git a/app/ecc1/eventisr1/verify_b.py b/app/ecc1/eventisr1/verify_b.py index 752a00b..a396464 100644 --- a/app/ecc1/eventisr1/verify_b.py +++ b/app/ecc1/eventisr1/verify_b.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_ConstructGlobalCFG(analysis): # Find all three systemcall handlers diff --git a/app/ecc1/eventisr1/verify_c.py b/app/ecc1/eventisr1/verify_c.py index b200caa..29e90d5 100644 --- a/app/ecc1/eventisr1/verify_c.py +++ b/app/ecc1/eventisr1/verify_c.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_ConstructGlobalCFG(analysis): # Find all three systemcall handlers diff --git a/app/ecc1/eventisr1/verify_d.py b/app/ecc1/eventisr1/verify_d.py index 9cd36e8..eee5e9d 100644 --- a/app/ecc1/eventisr1/verify_d.py +++ b/app/ecc1/eventisr1/verify_d.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_ConstructGlobalCFG(analysis): # Find all three systemcall handlers diff --git a/app/sysmodel/1alarm/verify_a.py b/app/sysmodel/1alarm/verify_a.py index 0b0ad4d..80461af 100644 --- a/app/sysmodel/1alarm/verify_a.py +++ b/app/sysmodel/1alarm/verify_a.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_ConstructGlobalCFG(analysis): # Find all three systemcall handlers diff --git a/app/sysmodel/1alarm/verify_aa.py b/app/sysmodel/1alarm/verify_aa.py index 23b1003..df9095e 100644 --- a/app/sysmodel/1alarm/verify_aa.py +++ b/app/sysmodel/1alarm/verify_aa.py @@ -1,4 +1,4 @@ -from generator.graph.verifier_tools import * +from generator.analysis.verifier_tools import * def after_ConstructGlobalCFG(analysis): # Find all three systemcall handlers diff --git a/generator/CMakeLists.txt b/generator/CMakeLists.txt index e7b96ef..bfe1469 100644 --- a/generator/CMakeLists.txt +++ b/generator/CMakeLists.txt @@ -1,6 +1,6 @@ set(PYTHON_MODULES_TEST - elements/template + coder/elements/template ) foreach(module ${PYTHON_MODULES_TEST}) diff --git a/generator/Generator.py b/generator/Generator.py index cef1529..0d9f6da 100644 --- a/generator/Generator.py +++ b/generator/Generator.py @@ -1,8 +1,8 @@ -from generator.elements import * -from generator.graph.Function import Function as GraphFunction -from generator.graph.types import S -from .rules.implementations import * -from .rules import SignatureGenerator +from .coder.elements import * +from .analysis.Function import Function as GraphFunction +from .analysis.types import S +from .coder.implementations import * +from .coder import SignatureGenerator import logging diff --git a/generator/LLVMPYAnalysis.py b/generator/LLVMPYAnalysis.py index df5ff02..69c656b 100644 --- a/generator/LLVMPYAnalysis.py +++ b/generator/LLVMPYAnalysis.py @@ -4,8 +4,8 @@ import sys from functools import reduce from llvmpy import api from collections import defaultdict, namedtuple -from generator.graph.AtomicBasicBlock import S, E, ControlFlowEdge -from generator.graph.common import Node, Edge, EdgeType, NodeType +from generator.analysis.AtomicBasicBlock import S, E, ControlFlowEdge +from generator.analysis.common import Node, Edge, EdgeType, NodeType diff --git a/generator/graph/ABBMergePass.py b/generator/analysis/ABBMergePass.py similarity index 98% rename from generator/graph/ABBMergePass.py rename to generator/analysis/ABBMergePass.py index 0607265..973bf64 100644 --- a/generator/graph/ABBMergePass.py +++ b/generator/analysis/ABBMergePass.py @@ -1,7 +1,7 @@ import logging -from generator.graph.Analysis import Analysis, FixpointIteration -from generator.graph.AtomicBasicBlock import E, S -from generator.graph.Function import Function +from .Analysis import Analysis, FixpointIteration +from .AtomicBasicBlock import E, S +from .Function import Function from .DominanceAnalysis import DominanceAnalysis from generator.tools import panic, stack from collections import namedtuple diff --git a/generator/graph/AddFunctionCalls.py b/generator/analysis/AddFunctionCalls.py similarity index 94% rename from generator/graph/AddFunctionCalls.py rename to generator/analysis/AddFunctionCalls.py index 528ba0a..68095a8 100644 --- a/generator/graph/AddFunctionCalls.py +++ b/generator/analysis/AddFunctionCalls.py @@ -1,6 +1,6 @@ -from generator.graph.Analysis import Analysis -from generator.graph.AtomicBasicBlock import E, S -from generator.graph.Function import Function +from .Analysis import Analysis +from .AtomicBasicBlock import E, S +from .Function import Function import logging class AddFunctionCalls(Analysis): diff --git a/generator/graph/Analysis.py b/generator/analysis/Analysis.py similarity index 99% rename from generator/graph/Analysis.py rename to generator/analysis/Analysis.py index 8f491dc..9b7ab58 100644 --- a/generator/graph/Analysis.py +++ b/generator/analysis/Analysis.py @@ -1,7 +1,7 @@ import logging import sys -from generator.graph.common import * -from generator.graph.AtomicBasicBlock import E, S +from .common import * +from .AtomicBasicBlock import E, S from collections import defaultdict from .Event import Event import copy diff --git a/generator/graph/AtomicBasicBlock.py b/generator/analysis/AtomicBasicBlock.py similarity index 95% rename from generator/graph/AtomicBasicBlock.py rename to generator/analysis/AtomicBasicBlock.py index aab55b8..92d0133 100644 --- a/generator/graph/AtomicBasicBlock.py +++ b/generator/analysis/AtomicBasicBlock.py @@ -1,9 +1,9 @@ -from generator.graph.common import Node, Edge, EdgeType, NodeType +from .common import Node, Edge, EdgeType, NodeType import collections -from generator.graph.types import S, E, ControlFlowEdge, SyscallType -from generator.graph.Sporadic import Counter, Alarm, ISR -from generator.graph.Resource import Resource -from generator.graph.Subtask import Subtask +from .types import S, E, ControlFlowEdge, SyscallType +from .Sporadic import Counter, Alarm, ISR +from .Resource import Resource +from .Subtask import Subtask diff --git a/generator/graph/ConstructGlobalCFG.py b/generator/analysis/ConstructGlobalCFG.py similarity index 98% rename from generator/graph/ConstructGlobalCFG.py rename to generator/analysis/ConstructGlobalCFG.py index 3bff99f..998bf80 100644 --- a/generator/graph/ConstructGlobalCFG.py +++ b/generator/analysis/ConstructGlobalCFG.py @@ -1,8 +1,8 @@ -from generator.graph.Analysis import Analysis -from generator.graph.AtomicBasicBlock import E, S +from .Analysis import Analysis +from .AtomicBasicBlock import E, S from generator.tools import panic, stack -from generator.graph.common import Edge -from generator.graph.SymbolicSystemExecution import StateTransition, SavedStateTransition +from .common import Edge +from .SymbolicSystemExecution import StateTransition, SavedStateTransition import logging import hashlib diff --git a/generator/graph/DominanceAnalysis.py b/generator/analysis/DominanceAnalysis.py similarity index 97% rename from generator/graph/DominanceAnalysis.py rename to generator/analysis/DominanceAnalysis.py index 09f9b57..9b1cca1 100644 --- a/generator/graph/DominanceAnalysis.py +++ b/generator/analysis/DominanceAnalysis.py @@ -1,8 +1,8 @@ -from generator.graph.Analysis import Analysis -from generator.graph.common import dfs, GraphObject, Edge, GraphObjectContainer +from .Analysis import Analysis +from .common import dfs, GraphObject, Edge, GraphObjectContainer from generator.tools import stack -from generator.graph.AtomicBasicBlock import E,S -from generator.graph.Function import Function +from .AtomicBasicBlock import E,S +from .Function import Function import logging from functools import reduce diff --git a/generator/graph/DynamicPriorityAnalysis.py b/generator/analysis/DynamicPriorityAnalysis.py similarity index 96% rename from generator/graph/DynamicPriorityAnalysis.py rename to generator/analysis/DynamicPriorityAnalysis.py index 1a34b09..ca7dd32 100644 --- a/generator/graph/DynamicPriorityAnalysis.py +++ b/generator/analysis/DynamicPriorityAnalysis.py @@ -1,7 +1,7 @@ -from generator.graph.Analysis import Analysis, FixpointIteration -from generator.graph.AtomicBasicBlock import E, S -from generator.graph.Resource import Resource -from generator.graph.Function import Function +from .Analysis import Analysis, FixpointIteration +from .AtomicBasicBlock import E, S +from .Resource import Resource +from .Function import Function from collections import namedtuple class DynamicPriorityAnalysis(Analysis): diff --git a/generator/graph/Event.py b/generator/analysis/Event.py similarity index 100% rename from generator/graph/Event.py rename to generator/analysis/Event.py diff --git a/generator/graph/Function.py b/generator/analysis/Function.py similarity index 94% rename from generator/graph/Function.py rename to generator/analysis/Function.py index 77c1a6a..470a65d 100644 --- a/generator/graph/Function.py +++ b/generator/analysis/Function.py @@ -1,5 +1,5 @@ -from generator.graph.common import GraphObject, Edge -from generator.graph.AtomicBasicBlock import S, E +from .common import GraphObject, Edge +from .AtomicBasicBlock import S, E class Function(GraphObject): def __init__(self, functionname): diff --git a/generator/graph/GlobalAbbInfo.py b/generator/analysis/GlobalAbbInfo.py similarity index 100% rename from generator/graph/GlobalAbbInfo.py rename to generator/analysis/GlobalAbbInfo.py diff --git a/generator/graph/GlobalControlFlowMetric.py b/generator/analysis/GlobalControlFlowMetric.py similarity index 94% rename from generator/graph/GlobalControlFlowMetric.py rename to generator/analysis/GlobalControlFlowMetric.py index c6a3d22..c9baa6a 100644 --- a/generator/graph/GlobalControlFlowMetric.py +++ b/generator/analysis/GlobalControlFlowMetric.py @@ -1,5 +1,5 @@ -from generator.graph.Analysis import Analysis -from generator.graph.AtomicBasicBlock import E +from .Analysis import Analysis +from .AtomicBasicBlock import E class GlobalControlFlowMetric(Analysis): def __init__(self, filename): diff --git a/generator/graph/InterruptControlAnalysis.py b/generator/analysis/InterruptControlAnalysis.py similarity index 96% rename from generator/graph/InterruptControlAnalysis.py rename to generator/analysis/InterruptControlAnalysis.py index fb4338a..7999651 100644 --- a/generator/graph/InterruptControlAnalysis.py +++ b/generator/analysis/InterruptControlAnalysis.py @@ -1,5 +1,5 @@ -from generator.graph.Analysis import Analysis, FixpointIteration -from generator.graph.AtomicBasicBlock import E, S +from .Analysis import Analysis, FixpointIteration +from .AtomicBasicBlock import E, S from generator.tools import panic from collections import namedtuple diff --git a/generator/graph/PassManager.py b/generator/analysis/PassManager.py similarity index 98% rename from generator/graph/PassManager.py rename to generator/analysis/PassManager.py index 2172420..96c9a09 100644 --- a/generator/graph/PassManager.py +++ b/generator/analysis/PassManager.py @@ -2,8 +2,8 @@ import logging import os import sys import time -from generator.graph.AtomicBasicBlock import AtomicBasicBlock -from generator.graph.common import * +from .AtomicBasicBlock import AtomicBasicBlock +from .common import * from generator.tools import stack class PassManager: diff --git a/generator/graph/PreciseSystemState.py b/generator/analysis/PreciseSystemState.py similarity index 97% rename from generator/graph/PreciseSystemState.py rename to generator/analysis/PreciseSystemState.py index b62fd4e..54344fc 100644 --- a/generator/graph/PreciseSystemState.py +++ b/generator/analysis/PreciseSystemState.py @@ -1,9 +1,9 @@ from generator.tools import stack, unwrap_seq, panic -from generator.graph.AtomicBasicBlock import E, S -from generator.graph.Sporadic import Alarm -from generator.graph.Subtask import Subtask -from generator.graph.Event import Event -from generator.graph.common import Node, Edge, EdgeType, NodeType +from .AtomicBasicBlock import E, S +from .Sporadic import Alarm +from .Subtask import Subtask +from .Event import Event +from .common import Node, Edge, EdgeType, NodeType from .SystemState import SystemState class PreciseSystemState(SystemState): diff --git a/generator/graph/PrioritySpreadingPass.py b/generator/analysis/PrioritySpreadingPass.py similarity index 93% rename from generator/graph/PrioritySpreadingPass.py rename to generator/analysis/PrioritySpreadingPass.py index 3693183..2fa937c 100644 --- a/generator/graph/PrioritySpreadingPass.py +++ b/generator/analysis/PrioritySpreadingPass.py @@ -1,5 +1,5 @@ -from generator.graph.Analysis import Analysis -from generator.graph.Subtask import Subtask +from .Analysis import Analysis +from .Subtask import Subtask class PrioritySpreadingPass(Analysis): """This pass reallocated the priorities in the way, that every diff --git a/generator/graph/Resource.py b/generator/analysis/Resource.py similarity index 100% rename from generator/graph/Resource.py rename to generator/analysis/Resource.py diff --git a/generator/graph/Sporadic.py b/generator/analysis/Sporadic.py similarity index 100% rename from generator/graph/Sporadic.py rename to generator/analysis/Sporadic.py diff --git a/generator/graph/Subtask.py b/generator/analysis/Subtask.py similarity index 92% rename from generator/graph/Subtask.py rename to generator/analysis/Subtask.py index 6f11ce8..b1c0284 100644 --- a/generator/graph/Subtask.py +++ b/generator/analysis/Subtask.py @@ -1,6 +1,6 @@ -from generator.graph.Function import Function -from generator.graph.SystemObject import SystemObject -from generator.graph.Event import Event +from .Function import Function +from .SystemObject import SystemObject +from .Event import Event class Subtask(Function, SystemObject): diff --git a/generator/graph/SymbolicSystemExecution.py b/generator/analysis/SymbolicSystemExecution.py similarity index 98% rename from generator/graph/SymbolicSystemExecution.py rename to generator/analysis/SymbolicSystemExecution.py index 09467a5..c7b9ad3 100644 --- a/generator/graph/SymbolicSystemExecution.py +++ b/generator/analysis/SymbolicSystemExecution.py @@ -1,8 +1,8 @@ -from generator.graph.common import * -from generator.graph.Analysis import * -from generator.graph.GlobalAbbInfo import GlobalAbbInfo -from generator.graph.SystemSemantic import * -from generator.graph.Function import Function +from .common import * +from .Analysis import * +from .GlobalAbbInfo import GlobalAbbInfo +from .SystemSemantic import * +from .Function import Function from generator.tools import stack, unwrap_seq, group_by, IntEnum @unique diff --git a/generator/graph/SystemGraph.py b/generator/analysis/SystemGraph.py similarity index 97% rename from generator/graph/SystemGraph.py rename to generator/analysis/SystemGraph.py index e23040a..148a419 100644 --- a/generator/graph/SystemGraph.py +++ b/generator/analysis/SystemGraph.py @@ -1,13 +1,13 @@ import logging -from generator.graph.Task import Task -from generator.graph.Subtask import Subtask -from generator.graph.AtomicBasicBlock import AtomicBasicBlock, E, S -from generator.graph.Function import Function -from generator.graph.PassManager import PassManager -from generator.graph.Sporadic import Counter, Alarm, ISR, AlarmSubtask -from generator.graph.Resource import Resource -from generator.graph.Event import Event -from generator.graph.common import GraphObject +from .Task import Task +from .Subtask import Subtask +from .AtomicBasicBlock import AtomicBasicBlock, E, S +from .Function import Function +from .PassManager import PassManager +from .Sporadic import Counter, Alarm, ISR, AlarmSubtask +from .Resource import Resource +from .Event import Event +from .common import GraphObject from generator.statistics import Statistics from generator.tools import panic from collections import namedtuple diff --git a/generator/graph/SystemObject.py b/generator/analysis/SystemObject.py similarity index 100% rename from generator/graph/SystemObject.py rename to generator/analysis/SystemObject.py diff --git a/generator/graph/SystemSemantic.py b/generator/analysis/SystemSemantic.py similarity index 98% rename from generator/graph/SystemSemantic.py rename to generator/analysis/SystemSemantic.py index a0eedc2..d8a12c1 100644 --- a/generator/graph/SystemSemantic.py +++ b/generator/analysis/SystemSemantic.py @@ -1,9 +1,9 @@ from generator.tools import stack, unwrap_seq, panic -from generator.graph.AtomicBasicBlock import E, S -from generator.graph.Sporadic import Alarm -from generator.graph.Subtask import Subtask -from generator.graph.Event import Event -from generator.graph.common import Node, Edge, EdgeType, NodeType +from .AtomicBasicBlock import E, S +from .Sporadic import Alarm +from .Subtask import Subtask +from .Event import Event +from .common import Node, Edge, EdgeType, NodeType from .SystemState import SystemState from .PreciseSystemState import PreciseSystemState diff --git a/generator/graph/SystemState.py b/generator/analysis/SystemState.py similarity index 98% rename from generator/graph/SystemState.py rename to generator/analysis/SystemState.py index f11c2af..2ea3b08 100644 --- a/generator/graph/SystemState.py +++ b/generator/analysis/SystemState.py @@ -1,9 +1,9 @@ from generator.tools import stack, unwrap_seq, panic -from generator.graph.AtomicBasicBlock import E, S -from generator.graph.Sporadic import Alarm -from generator.graph.Subtask import Subtask -from generator.graph.Event import Event -from generator.graph.common import Node, Edge, EdgeType, NodeType +from .AtomicBasicBlock import E, S +from .Sporadic import Alarm +from .Subtask import Subtask +from .Event import Event +from .common import Node, Edge, EdgeType, NodeType class SystemState(Node): """Normal system states capture the state at a specific point in the diff --git a/generator/graph/SystemStateFlow.py b/generator/analysis/SystemStateFlow.py similarity index 97% rename from generator/graph/SystemStateFlow.py rename to generator/analysis/SystemStateFlow.py index 50edc4a..10f6e52 100644 --- a/generator/graph/SystemStateFlow.py +++ b/generator/analysis/SystemStateFlow.py @@ -1,12 +1,12 @@ from collections import defaultdict -from generator.graph.common import * -from generator.graph.Analysis import * -from generator.graph.DynamicPriorityAnalysis import DynamicPriorityAnalysis -from generator.graph.Sporadic import SporadicEvent -from generator.graph.Function import Function -from generator.graph.GlobalAbbInfo import GlobalAbbInfo -from generator.graph.SystemSemantic import * -from generator.graph.AtomicBasicBlock import E +from .common import * +from .Analysis import * +from .DynamicPriorityAnalysis import DynamicPriorityAnalysis +from .Sporadic import SporadicEvent +from .Function import Function +from .GlobalAbbInfo import GlobalAbbInfo +from .SystemSemantic import * +from .AtomicBasicBlock import E class SystemStateFlow(Analysis): diff --git a/generator/graph/Task.py b/generator/analysis/Task.py similarity index 97% rename from generator/graph/Task.py rename to generator/analysis/Task.py index f9d6bd6..d1763a0 100644 --- a/generator/graph/Task.py +++ b/generator/analysis/Task.py @@ -1,4 +1,4 @@ -from generator.graph.common import GraphObject +from .common import GraphObject class Task(GraphObject): """A Task represents a whole set of SubTasks. All subtasks belong logically together""" diff --git a/generator/analysis/__init__.py b/generator/analysis/__init__.py new file mode 100644 index 0000000..5124569 --- /dev/null +++ b/generator/analysis/__init__.py @@ -0,0 +1,28 @@ +__doc__ = """The graph module abstracts from all kind of Tasks, SubTasks, +AtomicBasicBlocks and BasicBlocks, that make up an System.""" + +assert __name__ == 'generator.analysis' + + +from .AddFunctionCalls import AddFunctionCalls +from .Analysis import * +from .AtomicBasicBlock import AtomicBasicBlock +from .ABBMergePass import ABBMergePass +from .ConstructGlobalCFG import ConstructGlobalCFG +from .DynamicPriorityAnalysis import DynamicPriorityAnalysis +from .Function import Function +from .GlobalControlFlowMetric import GlobalControlFlowMetric +from .InterruptControlAnalysis import InterruptControlAnalysis +from .PrioritySpreadingPass import PrioritySpreadingPass +from .Resource import Resource +from .Sporadic import Alarm +from .Subtask import Subtask +from .SymbolicSystemExecution import SymbolicSystemExecution, StateTransition, SavedStateTransition +from .SystemGraph import SystemGraph +from .SystemSemantic import * +from .SystemStateFlow import * +from .DominanceAnalysis import * + + +from .Task import Task +from .common import GraphObject diff --git a/generator/graph/common.py b/generator/analysis/common.py similarity index 100% rename from generator/graph/common.py rename to generator/analysis/common.py diff --git a/generator/graph/types.py b/generator/analysis/types.py similarity index 97% rename from generator/graph/types.py rename to generator/analysis/types.py index a0d2103..470e735 100644 --- a/generator/graph/types.py +++ b/generator/analysis/types.py @@ -1,4 +1,4 @@ -from generator.graph.common import Node, Edge, EdgeType, NodeType +from .common import Node, Edge, EdgeType, NodeType from generator.tools import IntEnum, unique @unique diff --git a/generator/graph/verifier_tools.py b/generator/analysis/verifier_tools.py similarity index 96% rename from generator/graph/verifier_tools.py rename to generator/analysis/verifier_tools.py index ce2bbd6..5e84ed7 100644 --- a/generator/graph/verifier_tools.py +++ b/generator/analysis/verifier_tools.py @@ -1,7 +1,7 @@ -from generator.graph.AtomicBasicBlock import E,S -from generator.graph.SystemStateFlow import SystemStateFlow -from generator.graph.SymbolicSystemExecution import SymbolicSystemExecution -from generator.graph.Resource import Resource +from .AtomicBasicBlock import E,S +from .SystemStateFlow import SystemStateFlow +from .SymbolicSystemExecution import SymbolicSystemExecution +from .Resource import Resource global E diff --git a/generator/coder/__init__.py b/generator/coder/__init__.py new file mode 100644 index 0000000..9e87b5b --- /dev/null +++ b/generator/coder/__init__.py @@ -0,0 +1,14 @@ +assert __name__ == "generator.coder" + +from .arch_generic import GenericArch +from .arch_x86 import X86Arch +from .arch_arm import ARMArch +from .arch_posix import PosixArch + +from .os_generic import GenericOS +from .os_encoded import EncodedOS, SignatureGenerator +from .os_unencoded import UnencodedOS + +from .syscall_full import FullSystemCalls +from .syscall_specialized import SpecializedSystemCalls +from .syscall_fsm import FSMSystemCalls diff --git a/generator/rules/arm.py b/generator/coder/arch_arm.py similarity index 95% rename from generator/rules/arm.py rename to generator/coder/arch_arm.py index b242bbf..8b5dfef 100644 --- a/generator/rules/arm.py +++ b/generator/coder/arch_arm.py @@ -1,12 +1,10 @@ -from generator.rules.simple import SimpleArch -from generator.elements import CodeTemplate, FunctionDefinitionBlock, \ - Include, FunctionDeclaration, Comment, Function, DataObject, \ - DataObjectArray, Hook, Block, VariableDefinition, Statement -from generator.graph.Subtask import Subtask +from .arch_generic import GenericArch +from .elements import * +from generator.analysis.Subtask import Subtask -class ARMArch(SimpleArch): +class ARMArch(GenericArch): def __init__(self): - SimpleArch.__init__(self) + super(ARMArch, self).__init__() def generate_linkerscript(self): linker_script = LinkerScriptTemplate(self) @@ -192,8 +190,7 @@ class LinkerScriptTemplate(CodeTemplate): CodeTemplate.__init__(self, ARM.generator, "arch/arm/linker.ld.in") self.ARM = ARM self.system_graph = self.ARM.system_graph - # Reference to the objects object of our rule system - self.objects = self.ARM.objects + # Link the foreach_subtask method from the rules self.foreach_subtask = self.ARM.foreach_subtask diff --git a/generator/coder/arch_generic.py b/generator/coder/arch_generic.py new file mode 100644 index 0000000..5b21b8a --- /dev/null +++ b/generator/coder/arch_generic.py @@ -0,0 +1,62 @@ +from .elements import * +from .base import BaseCoder +from generator.analysis.Function import Function as GraphFunction +from .implementations import * +import logging + +from collections import namedtuple + +class GenericArch(BaseCoder): + def __init__(self): + super(GenericArch, self).__init__() + + def generate_dataobjects_task_stacks(self): + """Generate the stacks for the tasks, including the task pointers""" + # Ignore the Idle thread and ISR subtasks + for subtask in self.system_graph.real_subtasks: + stacksize = subtask.get_stack_size() + stack = DataObjectArray("uint8_t", subtask.name + "_stack", stacksize, + extern_c = True) + self.generator.source_file.data_manager.add(stack) + + stackptr = DataObject("void *", "OS_" + subtask.name + "_stackptr") + self.generator.source_file.data_manager.add(stackptr, namespace = ("arch",)) + + + subtask.impl.stack = stack + subtask.impl.stackptr = stackptr + subtask.impl.stacksize = stacksize + + + def generate_dataobjects_task_entries(self): + for subtask in self.system_graph.subtasks: + # Ignore the Idle thread + if not subtask.is_real_thread(): + continue + entry_function = FunctionDeclaration(subtask.function_name, "void", [], + extern_c = True) + self.generator.source_file.function_manager.add(entry_function) + subtask.impl.entry_function = entry_function + + KernelSpace = namedtuple("KernelSpace", ["pre_hook", "system", "post_hook"]) + def generate_kernelspace(self, userspace, abb, arguments): + """returns a KernelSpace object""" + raise NotImplementedError() + + def asm_marker(self, block, label): + self.call_function(block, "asm_label", "void", + ['"%s"' % label]) + + def kickoff(self, abb, block): + self.call_function(block, "Machine::enable_interrupts", + "void", []) + + def enable_irq(self, block): + self.call_function(block, + "Machine::enable_interrupts", + "void", []) + + def disable_irq(self, block): + self.call_function(block, + "Machine::disable_interrupts", + "void", []) diff --git a/generator/rules/posix.py b/generator/coder/arch_posix.py similarity index 92% rename from generator/rules/posix.py rename to generator/coder/arch_posix.py index 26dd547..c2a2ff8 100644 --- a/generator/rules/posix.py +++ b/generator/coder/arch_posix.py @@ -1,13 +1,11 @@ -from generator.elements import Include, FunctionDeclaration, Comment, \ - DataObject, Block, Hook, VariableDefinition, Function +from .arch_generic import GenericArch +from .elements import * +from generator.analysis.Subtask import Subtask -from generator.graph.Subtask import Subtask -from generator.rules.simple import SimpleArch - -class PosixArch(SimpleArch): +class PosixArch(GenericArch): def __init__(self): - SimpleArch.__init__(self) + super(PosixArch, self).__init__() def generate_linkerscript(self): """Posix does not require a linker script""" diff --git a/generator/rules/x86.py b/generator/coder/arch_x86.py similarity index 94% rename from generator/rules/x86.py rename to generator/coder/arch_x86.py index a265301..d25ac21 100644 --- a/generator/rules/x86.py +++ b/generator/coder/arch_x86.py @@ -1,12 +1,10 @@ -from generator.rules.simple import SimpleArch -from generator.elements import CodeTemplate, FunctionDefinitionBlock, \ - Include, FunctionDeclaration, Comment, Function, DataObject, \ - DataObjectArray, Hook, Block, VariableDefinition, Statement -from generator.graph.Subtask import Subtask +from .arch_generic import GenericArch +from .elements import * +from generator.analysis.Subtask import Subtask -class X86Arch(SimpleArch): +class X86Arch(GenericArch): def __init__(self): - SimpleArch.__init__(self) + super(X86Arch, self).__init__() def generate_linkerscript(self): linker_script = LinkerScriptTemplate(self) @@ -131,8 +129,7 @@ class LinkerScriptTemplate(CodeTemplate): CodeTemplate.__init__(self, x86.generator, "arch/i386/linker.ld.in") self.x86 = x86 self.system_graph = self.x86.system_graph - # Reference to the objects object of our rule system - self.objects = self.x86.objects + # Link the foreach_subtask method from the rules self.foreach_subtask = self.x86.foreach_subtask diff --git a/generator/rules/base.py b/generator/coder/base.py similarity index 95% rename from generator/rules/base.py rename to generator/coder/base.py index 048944f..ae0aa66 100755 --- a/generator/rules/base.py +++ b/generator/coder/base.py @@ -1,15 +1,16 @@ #!/usr/bin/python -from generator.elements import * +from .elements import * -class BaseRules: +class BaseCoder: def __init__(self): self.generator = None self.system_graph = None - self.objects = None + self.arch_rules = None self.os_rules = None self.syscall_rules = None + self.stats = None def set_generator(self, generator): diff --git a/generator/elements/DataObjectManager.py b/generator/coder/elements/DataObjectManager.py similarity index 98% rename from generator/elements/DataObjectManager.py rename to generator/coder/elements/DataObjectManager.py index f47a416..b37fd0a 100755 --- a/generator/elements/DataObjectManager.py +++ b/generator/coder/elements/DataObjectManager.py @@ -12,7 +12,7 @@ @ingroup generator @brief Data object cook. """ -from generator.elements.SourceElement import Block, Statement, ForRange +from .SourceElement import Block, Statement, ForRange class DataObject: """Manages a variable""" diff --git a/generator/elements/FunctionManager.py b/generator/coder/elements/FunctionManager.py similarity index 98% rename from generator/elements/FunctionManager.py rename to generator/coder/elements/FunctionManager.py index bda2763..c2f8eef 100755 --- a/generator/elements/FunctionManager.py +++ b/generator/coder/elements/FunctionManager.py @@ -1,6 +1,6 @@ #!/usr/bin/python -from generator.elements.SourceElement import Block, Statement +from .SourceElement import Block, Statement from collections import namedtuple class Function: diff --git a/generator/elements/IncludeManager.py b/generator/coder/elements/IncludeManager.py similarity index 94% rename from generator/elements/IncludeManager.py rename to generator/coder/elements/IncludeManager.py index 9e91f6d..a3e8f00 100644 --- a/generator/elements/IncludeManager.py +++ b/generator/coder/elements/IncludeManager.py @@ -5,7 +5,7 @@ @ingroup primitives @brief Building include statements """ -from generator.elements.SourceElement import CPPStatement, Comment +from .SourceElement import CPPStatement, Comment class Include: def __init__(self, filename, system_include=False, comment = None): diff --git a/generator/elements/SourceElement.py b/generator/coder/elements/SourceElement.py similarity index 100% rename from generator/elements/SourceElement.py rename to generator/coder/elements/SourceElement.py diff --git a/generator/elements/SourceFile.py b/generator/coder/elements/SourceFile.py similarity index 84% rename from generator/elements/SourceFile.py rename to generator/coder/elements/SourceFile.py index 94852d6..ccee519 100644 --- a/generator/elements/SourceFile.py +++ b/generator/coder/elements/SourceFile.py @@ -7,9 +7,9 @@ """ -from generator.elements.IncludeManager import IncludeManager -from generator.elements.DataObjectManager import DataObjectManager -from generator.elements.FunctionManager import FunctionManager +from .IncludeManager import IncludeManager +from .DataObjectManager import DataObjectManager +from .FunctionManager import FunctionManager from generator import tools class SourceFile: diff --git a/generator/coder/elements/__init__.py b/generator/coder/elements/__init__.py new file mode 100644 index 0000000..9111bf0 --- /dev/null +++ b/generator/coder/elements/__init__.py @@ -0,0 +1,9 @@ +from .SourceFile import SourceFile +from .FunctionManager import Function, FunctionManager, FunctionDeclaration, \ + FunctionDefinitionBlock +from .IncludeManager import Include, IncludeManager +from .DataObjectManager import DataObject, DataObjectArray, ExternalDataObject +from .SourceElement import * +from .template import CodeTemplate + +assert __name__ == "generator.coder.elements" diff --git a/generator/elements/template.py b/generator/coder/elements/template.py similarity index 100% rename from generator/elements/template.py rename to generator/coder/elements/template.py diff --git a/generator/rules/implementations.py b/generator/coder/implementations.py similarity index 100% rename from generator/rules/implementations.py rename to generator/coder/implementations.py diff --git a/generator/rules/encoded.py b/generator/coder/os_encoded.py similarity index 96% rename from generator/rules/encoded.py rename to generator/coder/os_encoded.py index 285afd4..ec9ee9f 100644 --- a/generator/rules/encoded.py +++ b/generator/coder/os_encoded.py @@ -1,7 +1,7 @@ -from generator.rules.unencoded import UnencodedSystem, TaskListTemplate, \ +from .os_unencoded import UnencodedOS, TaskListTemplate, \ SchedulerTemplate -from generator.elements import * -from generator.graph.Resource import Resource +from .elements import * +from generator.analysis.Resource import Resource from .implementations import * class SignatureGenerator: @@ -47,9 +47,9 @@ class SignatureGenerator: return x -class EncodedSystem(UnencodedSystem): +class EncodedOS(UnencodedOS): def __init__(self): - UnencodedSystem.__init__(self) + super(EncodedOS, self).__init__() self.task_list = EncodedTaskListTemplate self.scheduler = EncodedSchedulerTemplate self.counter_signatures = {} @@ -65,7 +65,7 @@ class EncodedSystem(UnencodedSystem): impl.current_prio_sig = self.sigs.current_prio impl.current_task_sig = self.sigs.current_task - UnencodedSystem.generate_system_code(self) + super(EncodedOS, self).generate_system_code() def convert_argument(self, block, argument): b = self.generator.signature_generator.new() diff --git a/generator/rules/simple.py b/generator/coder/os_generic.py similarity index 77% rename from generator/rules/simple.py rename to generator/coder/os_generic.py index dbf56e6..7ddb24e 100644 --- a/generator/rules/simple.py +++ b/generator/coder/os_generic.py @@ -1,16 +1,14 @@ -from generator.elements import * -from generator.elements.DataObjectManager import ExternalDataObject -from generator.rules.base import BaseRules -from generator.graph.Function import Function as GraphFunction +from .elements import * +from .base import BaseCoder +from generator.analysis.Function import Function as GraphFunction from .implementations import * import logging from collections import namedtuple -class SimpleSystem(BaseRules): +class GenericOS(BaseCoder): def __init__(self): - BaseRules.__init__(self) - + super(GenericOS, self).__init__() def return_statement(self, block, expression): block.add(Statement("return %s" % expression)) @@ -196,57 +194,3 @@ class SimpleSystem(BaseRules): self.generator.source_file.function_manager.add(multiplexer, "dep") -class SimpleArch(BaseRules): - def __init__(self): - BaseRules.__init__(self) - - def generate_dataobjects_task_stacks(self): - """Generate the stacks for the tasks, including the task pointers""" - # Ignore the Idle thread and ISR subtasks - for subtask in self.system_graph.real_subtasks: - stacksize = subtask.get_stack_size() - stack = DataObjectArray("uint8_t", subtask.name + "_stack", stacksize, - extern_c = True) - self.generator.source_file.data_manager.add(stack) - - stackptr = DataObject("void *", "OS_" + subtask.name + "_stackptr") - self.generator.source_file.data_manager.add(stackptr, namespace = ("arch",)) - - - subtask.impl.stack = stack - subtask.impl.stackptr = stackptr - subtask.impl.stacksize = stacksize - - - def generate_dataobjects_task_entries(self): - for subtask in self.system_graph.subtasks: - # Ignore the Idle thread - if not subtask.is_real_thread(): - continue - entry_function = FunctionDeclaration(subtask.function_name, "void", [], - extern_c = True) - self.generator.source_file.function_manager.add(entry_function) - subtask.impl.entry_function = entry_function - - KernelSpace = namedtuple("KernelSpace", ["pre_hook", "system", "post_hook"]) - def generate_kernelspace(self, userspace, abb, arguments): - """returns a KernelSpace object""" - raise NotImplementedError() - - def asm_marker(self, block, label): - self.call_function(block, "asm_label", "void", - ['"%s"' % label]) - - def kickoff(self, abb, block): - self.call_function(block, "Machine::enable_interrupts", - "void", []) - - def enable_irq(self, block): - self.call_function(block, - "Machine::enable_interrupts", - "void", []) - - def disable_irq(self, block): - self.call_function(block, - "Machine::disable_interrupts", - "void", []) diff --git a/generator/rules/unencoded.py b/generator/coder/os_unencoded.py similarity index 92% rename from generator/rules/unencoded.py rename to generator/coder/os_unencoded.py index 81d0535..821ae60 100644 --- a/generator/rules/unencoded.py +++ b/generator/coder/os_unencoded.py @@ -1,15 +1,15 @@ -from generator.rules.simple import SimpleSystem -from generator.elements import CodeTemplate, Include, VariableDefinition, \ +from .os_generic import GenericOS +from .elements import CodeTemplate, Include, VariableDefinition, \ Block, Statement, Comment, Function, Hook, DataObject -from generator.graph.AtomicBasicBlock import S, AtomicBasicBlock -from generator.graph.Resource import Resource -from generator.graph.Subtask import Subtask -from generator.graph.Function import Function +from generator.analysis.AtomicBasicBlock import S, AtomicBasicBlock +from generator.analysis.Resource import Resource +from generator.analysis.Subtask import Subtask +from generator.analysis.Function import Function -class UnencodedSystem(SimpleSystem): +class UnencodedOS(GenericOS): def __init__(self): - SimpleSystem.__init__(self) + super(UnencodedOS, self).__init__() # These template slots are used by the system call layer self.task_list = TaskListTemplate self.scheduler = SchedulerTemplate @@ -152,8 +152,6 @@ class TaskListTemplate(CodeTemplate): CodeTemplate.__init__(self, rules.generator, self.template_file()) self.rules = rules self.system_graph = self.generator.system_graph - # Reference to the objects object of our rule system - self.objects = self.rules.objects self.idle = self.system_graph.find(Function, "Idle") def template_file(self): @@ -192,8 +190,6 @@ class SchedulerTemplate(CodeTemplate): CodeTemplate.__init__(self, rules.generator, self.template_file()) self.rules = rules self.system_graph = self.generator.system_graph - # Reference to the objects object of our rule system - self.objects = self.rules.objects def template_file(self): return "os/scheduler/scheduler-unencoded.h.in" diff --git a/generator/rules/syscalls_fsm.py b/generator/coder/syscall_fsm.py similarity index 96% rename from generator/rules/syscalls_fsm.py rename to generator/coder/syscall_fsm.py index 95bb6f6..e51c83b 100644 --- a/generator/rules/syscalls_fsm.py +++ b/generator/coder/syscall_fsm.py @@ -1,10 +1,10 @@ -from generator.rules.syscalls_full import FullSystemCalls, AlarmTemplate -from generator.elements import Statement, Comment -from generator.elements import CodeTemplate, Include, VariableDefinition, \ +from .syscall_full import FullSystemCalls, AlarmTemplate +from .elements import Statement, Comment +from .elements import CodeTemplate, Include, VariableDefinition, \ Block, Statement, Comment, Function, Hook, DataObject, DataObjectArray from generator.tools import unwrap_seq -from generator.graph.AtomicBasicBlock import E,S -from generator.graph.SystemSemantic import SystemState +from generator.analysis.AtomicBasicBlock import E,S +from generator.analysis.SystemSemantic import SystemState import logging diff --git a/generator/rules/syscalls_full.py b/generator/coder/syscall_full.py similarity index 97% rename from generator/rules/syscalls_full.py rename to generator/coder/syscall_full.py index 09af7b0..d34744d 100644 --- a/generator/rules/syscalls_full.py +++ b/generator/coder/syscall_full.py @@ -1,16 +1,16 @@ -from generator.rules.base import BaseRules -from generator.graph.AtomicBasicBlock import E,S -from generator.graph.Event import Event -from generator.elements import Statement, Comment, Function, VariableDefinition, Block, Include, \ +from .base import BaseCoder +from generator.analysis.AtomicBasicBlock import E,S +from generator.analysis.Event import Event +from .elements import Statement, Comment, Function, VariableDefinition, Block, Include, \ CodeTemplate, FunctionDeclaration -from generator.graph.GenerateAssertions import AssertionType -from generator.graph.Function import Function as GraphFunction +from generator.transform.GenerateAssertions import AssertionType +from generator.analysis.Function import Function as GraphFunction from generator.tools import panic -class FullSystemCalls(BaseRules): +class FullSystemCalls(BaseCoder): def __init__(self): - BaseRules.__init__(self) + super(FullSystemCalls, self).__init__() self.alarms = AlarmTemplate @@ -350,8 +350,6 @@ class AlarmTemplate(CodeTemplate): CodeTemplate.__init__(self, rules.generator, "os/alarm.h.in") self.rules = rules self.system_graph = self.generator.system_graph - # Reference to the objects object of our rule system - self.objects = self.rules.objects # Link the foreach_subtask method from the rules self.foreach_subtask = self.rules.foreach_subtask diff --git a/generator/rules/syscalls_specialized.py b/generator/coder/syscall_specialized.py similarity index 97% rename from generator/rules/syscalls_specialized.py rename to generator/coder/syscall_specialized.py index 76b7558..5991c2c 100644 --- a/generator/rules/syscalls_specialized.py +++ b/generator/coder/syscall_specialized.py @@ -1,13 +1,13 @@ -from generator.rules.syscalls_full import FullSystemCalls -from generator.elements import Statement, Comment +from .syscall_full import FullSystemCalls +from .elements import Statement, Comment from generator.tools import unwrap_seq -from generator.graph.AtomicBasicBlock import E,S -from generator.graph.SystemSemantic import SystemState +from generator.analysis.AtomicBasicBlock import E,S +from generator.analysis.SystemSemantic import SystemState class SpecializedSystemCalls(FullSystemCalls): def __init__(self, global_abb_info): - FullSystemCalls.__init__(self) + super(SpecializedSystemCalls).__init__(self) self.global_abb_info = global_abb_info def Comment(self, kernelspace, comment, *args): diff --git a/generator/elements/__init__.py b/generator/elements/__init__.py deleted file mode 100644 index 06a14ea..0000000 --- a/generator/elements/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -from generator.elements.SourceFile import SourceFile -from generator.elements.FunctionManager import Function, FunctionManager, FunctionDeclaration, \ - FunctionDefinitionBlock -from generator.elements.IncludeManager import Include, IncludeManager -from generator.elements.DataObjectManager import DataObject, DataObjectArray -from generator.elements.SourceElement import * -from generator.elements.template import CodeTemplate - -assert __name__ == "generator.elements" diff --git a/generator/graph/__init__.py b/generator/graph/__init__.py deleted file mode 100644 index 908eb21..0000000 --- a/generator/graph/__init__.py +++ /dev/null @@ -1,31 +0,0 @@ -__doc__ = """The graph module abstracts from all kind of Tasks, SubTasks, -AtomicBasicBlocks and BasicBlocks, that make up an System.""" - -assert __name__ == 'generator.graph' - - -from generator.graph.AddFunctionCalls import AddFunctionCalls -from generator.graph.Analysis import * -from generator.graph.AtomicBasicBlock import AtomicBasicBlock -from generator.graph.ABBMergePass import ABBMergePass -from generator.graph.ConstructGlobalCFG import ConstructGlobalCFG -from generator.graph.DynamicPriorityAnalysis import DynamicPriorityAnalysis -from generator.graph.Function import Function -from generator.graph.GlobalControlFlowMetric import GlobalControlFlowMetric -from generator.graph.InterruptControlAnalysis import InterruptControlAnalysis -from generator.graph.PrioritySpreadingPass import PrioritySpreadingPass -from generator.graph.Resource import Resource -from generator.graph.Sporadic import Alarm -from generator.graph.Subtask import Subtask -from generator.graph.SymbolicSystemExecution import SymbolicSystemExecution, StateTransition, SavedStateTransition -from generator.graph.SystemGraph import SystemGraph -from generator.graph.SystemSemantic import * -from generator.graph.SystemStateFlow import * -from generator.graph.GenerateAssertions import * -from generator.graph.DominanceAnalysis import * -from generator.graph.FiniteStateMachineBuilder import * -from generator.graph.CFGRegions import CFGRegions - - -from generator.graph.Task import Task -from generator.graph.common import GraphObject diff --git a/generator/main.py b/generator/main.py index f4209ed..8122dd5 100755 --- a/generator/main.py +++ b/generator/main.py @@ -44,8 +44,9 @@ if __name__ == "__main__": sys.path.insert(0, os.path.abspath(os.path.join(source_dir, ".."))) from generator import LLVMPYAnalysis, Generator, OILSystemDescription - from generator.rules import * - from generator.graph import * + from generator.analysis import * + from generator.transform import * + from generator.coder import * from generator.tools import panic, wrap_typecheck_functions # Install the typechecking @@ -186,12 +187,12 @@ if __name__ == "__main__": panic("Unknown --arch=%s", options.arch) if options.unencoded: - os_rules = UnencodedSystem() + os_rules = UnencodedOS() else: - os_rules = EncodedSystem() + os_rules = EncodedOS() assert options.systemcalls in ("full", "specialized", "fsm") - + if options.systemcalls == "specialized": # Only when we want to specialize the system calls, run the # System-Level analyses diff --git a/generator/rules/__init__.py b/generator/rules/__init__.py deleted file mode 100644 index bbd0cfe..0000000 --- a/generator/rules/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -assert __name__ == "generator.rules" - -from generator.rules.base import BaseRules -from generator.rules.simple import SimpleSystem -from generator.rules.encoded import EncodedSystem, SignatureGenerator -from generator.rules.unencoded import UnencodedSystem -from generator.rules.syscalls_full import FullSystemCalls -from generator.rules.syscalls_specialized import SpecializedSystemCalls -from generator.rules.syscalls_fsm import FSMSystemCalls -from generator.rules.x86 import X86Arch -from generator.rules.arm import ARMArch -from generator.rules.posix import PosixArch diff --git a/generator/rules/fsm_kernel.py b/generator/rules/fsm_kernel.py deleted file mode 100644 index d147e95..0000000 --- a/generator/rules/fsm_kernel.py +++ /dev/null @@ -1,10 +0,0 @@ -from generator.rules.simple import SimpleSystem, AlarmTemplate -from generator.elements import CodeTemplate, Include, VariableDefinition, \ - Block, Statement, Comment, Function, Hook, DataObject -from generator.graph.AtomicBasicBlock import S, AtomicBasicBlock -from generator.graph.Resource import Resource -from generator.graph.Subtask import Subtask -from generator.graph.Function import Function - - -class FSMSystem(SimpleSystem): diff --git a/generator/graph/CFGRegions.py b/generator/transform/CFGRegions.py similarity index 97% rename from generator/graph/CFGRegions.py rename to generator/transform/CFGRegions.py index 46cebe9..408096f 100644 --- a/generator/graph/CFGRegions.py +++ b/generator/transform/CFGRegions.py @@ -1,6 +1,6 @@ -from generator.graph.Analysis import Analysis -from generator.graph.AtomicBasicBlock import E, S -from generator.elements import DataObject, Include +from generator.analysis.Analysis import Analysis +from generator.analysis.AtomicBasicBlock import E, S +from generator.coder.elements import DataObject, Include import logging class CFGRegions(Analysis): diff --git a/generator/graph/FiniteStateMachineBuilder.py b/generator/transform/FiniteStateMachineBuilder.py similarity index 99% rename from generator/graph/FiniteStateMachineBuilder.py rename to generator/transform/FiniteStateMachineBuilder.py index 5a8a34a..4577926 100644 --- a/generator/graph/FiniteStateMachineBuilder.py +++ b/generator/transform/FiniteStateMachineBuilder.py @@ -1,6 +1,5 @@ -from generator.graph.common import * -from generator.graph.Analysis import * -from generator.graph import SymbolicSystemExecution, SavedStateTransition +from generator.analysis.common import * +from generator.analysis import Analysis, SavedStateTransition, S, E from generator.tools import pairwise from types import SimpleNamespace from collections import namedtuple, defaultdict diff --git a/generator/graph/GenerateAssertions.py b/generator/transform/GenerateAssertions.py similarity index 98% rename from generator/graph/GenerateAssertions.py rename to generator/transform/GenerateAssertions.py index 513be6b..f044721 100644 --- a/generator/graph/GenerateAssertions.py +++ b/generator/transform/GenerateAssertions.py @@ -1,5 +1,4 @@ -from generator.graph.Analysis import Analysis -from generator.graph.AtomicBasicBlock import E +from generator.analysis import Analysis, E from generator.tools import Enum import logging @@ -11,7 +10,6 @@ class AssertionType(Enum): EventsCheck = 4 - class Assertion: def __init__(self, _type, _arguments, prio = 0): self.Type = _type @@ -40,7 +38,6 @@ class Assertion: return self.arguments - class GenerateAssertionsPass(Analysis): """This pass generates assertions that must hold before a system call and after a systemcall.""" diff --git a/generator/transform/__init__.py b/generator/transform/__init__.py new file mode 100644 index 0000000..f9670d9 --- /dev/null +++ b/generator/transform/__init__.py @@ -0,0 +1,5 @@ +assert __name__ == "generator.transform" + +from .FiniteStateMachineBuilder import * +from .CFGRegions import CFGRegions +from .GenerateAssertions import * diff --git a/generator/graph/sage_finite_state_machine.py b/generator/transform/sage_finite_state_machine.py similarity index 100% rename from generator/graph/sage_finite_state_machine.py rename to generator/transform/sage_finite_state_machine.py -- GitLab