(List (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS nounset]}) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS errexit]}) (= scope= flags=2 words=[] bindings=[('SDK_ROOT', {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub 0]})]})]) (= scope= flags=2 words=[] bindings=[('QEMU', {[VarSub SDK_ROOT] [LIT_CHARS /qemu-arm]})]) (= scope= flags=2 words=[] bindings=[('QEMU_STOCK', {[LIT_CHARS /usr/bin/qemu-arm]})]) (= scope= flags=2 words=[] bindings=[('QEMU_JAIL', {[VarSub SDK_ROOT]})]) (= scope= flags=2 words=[] bindings=[('QEMU_PREFIX_HOOK', {[VarSub QEMU_PREFIX_HOOK test_op=VS_TEST_COLON_HYPHEN {}]})]) (= scope= flags=2 words=[] bindings=[('QEMU_ARGS', {[DQ [LIT_CHARS "-cpu cortex-a9"]]})]) (= scope= flags=2 words=[] bindings=[('QEMU_ARGS_DEBUG', {[DQ [LIT_CHARS "-d in_asm,int,exec,cpu"]]})]) (= scope= flags=2 words=[] bindings=[('QEMU_ARGS_DEBUG_SR', {[DQ [LIT_CHARS "-d in_asm,int,exec,cpu,service_runtime"]]})]) (FunctionDef Banner [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "######################################################################"]]}) (Com {[LIT_CHARS echo]} {[VarSub *]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "######################################################################"]]}) ) ) (FunctionDef Usage [] (Pipeline (Com {[LIT_CHARS egrep]} {[DQ [LIT_CHARS "^#@"]]} {[VarSub 0]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS --bytes] [LIT_OTHER "="] [LIT_CHARS 3-]}) ) ) (FunctionDef CheckPrerequisites [] (If (DBracket {B! {B1 UNARY_FILE_d {[VarSub QEMU_JAIL]}}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: no proper root-jail directory found"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) ) (FunctionDef Hints [] (List (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "traces can be found in /tmp/qemu.log"]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "for faster execution disable sel_ldr validation"]]}) (Com {[LIT_CHARS echo]}) ) ) (FunctionDef help [] (Com {[LIT_CHARS Usage]}) ) (FunctionDef run [] (List (Com {[LIT_CHARS CheckPrerequisites]}) (Com {[LIT_CHARS exec]} {[VarSub QEMU_PREFIX_HOOK]} {[VarSub QEMU]} {[LIT_CHARS -L]} {[VarSub QEMU_JAIL]} {[VarSub QEMU_ARGS]} {[DQ [VarSub @]]}) ) ) (FunctionDef run_stock [] (Com {[LIT_CHARS exec]} {[VarSub QEMU_PREFIX_HOOK]} {[VarSub QEMU_STOCK]} {[LIT_CHARS -L]} {[VarSub QEMU_JAIL]} {[VarSub QEMU_ARGS]} {[DQ [VarSub @]]}) ) (FunctionDef run_debug [] (List (Com {[LIT_CHARS Hints]}) (Com {[LIT_CHARS CheckPrerequisites]}) (Com {[LIT_CHARS exec]} {[VarSub QEMU]} {[LIT_CHARS -L]} {[VarSub QEMU_JAIL]} {[VarSub QEMU_ARGS]} {[VarSub QEMU_ARGS_DEBUG]} {[DQ [VarSub @]]}) ) ) (FunctionDef run_debug_service_runtime [] (List (Com {[LIT_CHARS Hints]}) (Com {[LIT_CHARS CheckPrerequisites]}) (Com {[LIT_CHARS exec]} {[VarSub QEMU]} {[LIT_CHARS -L]} {[VarSub QEMU_JAIL]} {[VarSub QEMU_ARGS]} {[VarSub QEMU_ARGS_DEBUG_SR]} {[DQ [VarSub @]]}) ) ) (FunctionDef install_stock_qemu [] (Com {[LIT_CHARS sudo]} {[LIT_CHARS apt-get]} {[LIT_CHARS install]} {[LIT_CHARS qemu-user]}) ) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub 0]]} {[LIT_OTHER "*"] [LIT_CHARS run_under_qemu_arm]}}) (Com {[LIT_CHARS run]} {[DQ [VarSub @]]}) (DBracket {B2 BINARY_INT_EQ {[VarSub #]} {[LIT_CHARS 0]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "you must specify a mode on the commandline:"]]}) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS Usage]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) (DBracket {B2 BINARY_STRING_NOT_EQUAL {[DQ [ComSub (Com {[LIT_CHARS type]} {[LIT_CHARS -t]} {[VarSub 1]})]]} {[DQ [LIT_CHARS function]]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: unknown function '"][VarSub 1][LIT_CHARS "'."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "For help, try:"]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " "][VarSub 0][LIT_CHARS " help"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (ElseTrue) (Com {[DQ [VarSub @]]}) ) )