angr 9.2.117__py3-none-macosx_11_0_arm64.whl → 9.2.119__py3-none-macosx_11_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of angr might be problematic. Click here for more details.
- angr/__init__.py +2 -1
- angr/__main__.py +21 -1
- angr/analyses/__init__.py +4 -0
- angr/analyses/analysis.py +88 -46
- angr/analyses/backward_slice.py +15 -18
- angr/analyses/binary_optimizer.py +29 -34
- angr/analyses/bindiff.py +35 -44
- angr/analyses/boyscout.py +1 -0
- angr/analyses/callee_cleanup_finder.py +3 -4
- angr/analyses/calling_convention.py +98 -98
- angr/analyses/cdg.py +5 -12
- angr/analyses/cfg/__init__.py +1 -0
- angr/analyses/cfg/cfb.py +14 -20
- angr/analyses/cfg/cfg.py +2 -1
- angr/analyses/cfg/cfg_arch_options.py +4 -1
- angr/analyses/cfg/cfg_base.py +122 -165
- angr/analyses/cfg/cfg_emulated.py +60 -92
- angr/analyses/cfg/cfg_fast.py +406 -335
- angr/analyses/cfg/cfg_fast_soot.py +10 -17
- angr/analyses/cfg/cfg_job_base.py +6 -7
- angr/analyses/cfg/indirect_jump_resolvers/__init__.py +1 -0
- angr/analyses/cfg/indirect_jump_resolvers/amd64_elf_got.py +2 -3
- angr/analyses/cfg/indirect_jump_resolvers/amd64_pe_iat.py +2 -3
- angr/analyses/cfg/indirect_jump_resolvers/arm_elf_fast.py +6 -8
- angr/analyses/cfg/indirect_jump_resolvers/const_resolver.py +3 -5
- angr/analyses/cfg/indirect_jump_resolvers/default_resolvers.py +1 -0
- angr/analyses/cfg/indirect_jump_resolvers/jumptable.py +97 -112
- angr/analyses/cfg/indirect_jump_resolvers/mips_elf_fast.py +26 -32
- angr/analyses/cfg/indirect_jump_resolvers/propagator_utils.py +1 -0
- angr/analyses/cfg/indirect_jump_resolvers/resolver.py +7 -7
- angr/analyses/cfg/indirect_jump_resolvers/x86_elf_pic_plt.py +3 -8
- angr/analyses/cfg/indirect_jump_resolvers/x86_pe_iat.py +2 -3
- angr/analyses/cfg_slice_to_sink/__init__.py +1 -0
- angr/analyses/cfg_slice_to_sink/cfg_slice_to_sink.py +4 -4
- angr/analyses/cfg_slice_to_sink/graph.py +4 -1
- angr/analyses/cfg_slice_to_sink/transitions.py +4 -2
- angr/analyses/class_identifier.py +1 -0
- angr/analyses/code_tagging.py +9 -9
- angr/analyses/complete_calling_conventions.py +28 -36
- angr/analyses/congruency_check.py +6 -11
- angr/analyses/data_dep/__init__.py +1 -0
- angr/analyses/data_dep/data_dependency_analysis.py +38 -48
- angr/analyses/data_dep/dep_nodes.py +13 -12
- angr/analyses/data_dep/sim_act_location.py +3 -0
- angr/analyses/datagraph_meta.py +7 -7
- angr/analyses/ddg.py +48 -69
- angr/analyses/decompiler/__init__.py +3 -0
- angr/analyses/decompiler/ail_simplifier.py +929 -400
- angr/analyses/decompiler/ailgraph_walker.py +1 -0
- angr/analyses/decompiler/block_io_finder.py +13 -4
- angr/analyses/decompiler/block_similarity.py +28 -18
- angr/analyses/decompiler/block_simplifier.py +40 -104
- angr/analyses/decompiler/callsite_maker.py +124 -82
- angr/analyses/decompiler/ccall_rewriters/__init__.py +1 -0
- angr/analyses/decompiler/ccall_rewriters/amd64_ccalls.py +115 -105
- angr/analyses/decompiler/ccall_rewriters/rewriter_base.py +2 -1
- angr/analyses/decompiler/clinic.py +371 -184
- angr/analyses/decompiler/condition_processor.py +127 -116
- angr/analyses/decompiler/counters/__init__.py +5 -0
- angr/analyses/decompiler/counters/boolean_counter.py +27 -0
- angr/analyses/decompiler/{call_counter.py → counters/call_counter.py} +5 -4
- angr/analyses/decompiler/{expression_counters.py → counters/expression_counters.py} +5 -4
- angr/analyses/decompiler/counters/seq_cf_structure_counter.py +63 -0
- angr/analyses/decompiler/decompilation_cache.py +2 -1
- angr/analyses/decompiler/decompilation_options.py +1 -0
- angr/analyses/decompiler/decompiler.py +50 -27
- angr/analyses/decompiler/dephication/__init__.py +6 -0
- angr/analyses/decompiler/dephication/dephication_base.py +87 -0
- angr/analyses/decompiler/dephication/graph_dephication.py +63 -0
- angr/analyses/decompiler/dephication/graph_rewriting.py +116 -0
- angr/analyses/decompiler/dephication/graph_vvar_mapping.py +313 -0
- angr/analyses/decompiler/dephication/rewriting_engine.py +247 -0
- angr/analyses/decompiler/dephication/seqnode_dephication.py +106 -0
- angr/analyses/decompiler/empty_node_remover.py +1 -0
- angr/analyses/decompiler/expression_narrower.py +12 -17
- angr/analyses/decompiler/goto_manager.py +43 -4
- angr/analyses/decompiler/graph_region.py +19 -31
- angr/analyses/decompiler/jump_target_collector.py +1 -0
- angr/analyses/decompiler/jumptable_entry_condition_rewriter.py +2 -1
- angr/analyses/decompiler/optimization_passes/__init__.py +7 -3
- angr/analyses/decompiler/optimization_passes/base_ptr_save_simplifier.py +23 -18
- angr/analyses/decompiler/optimization_passes/call_stmt_rewriter.py +46 -0
- angr/analyses/decompiler/optimization_passes/code_motion.py +4 -2
- angr/analyses/decompiler/optimization_passes/const_derefs.py +36 -36
- angr/analyses/decompiler/optimization_passes/const_prop_reverter.py +6 -9
- angr/analyses/decompiler/optimization_passes/cross_jump_reverter.py +4 -3
- angr/analyses/decompiler/optimization_passes/deadblock_remover.py +1 -0
- angr/analyses/decompiler/optimization_passes/div_simplifier.py +78 -72
- angr/analyses/decompiler/optimization_passes/duplication_reverter/__init__.py +2 -0
- angr/analyses/decompiler/optimization_passes/duplication_reverter/ail_merge_graph.py +503 -0
- angr/analyses/decompiler/optimization_passes/duplication_reverter/duplication_reverter.py +1215 -0
- angr/analyses/decompiler/optimization_passes/duplication_reverter/errors.py +16 -0
- angr/analyses/decompiler/optimization_passes/duplication_reverter/similarity.py +126 -0
- angr/analyses/decompiler/optimization_passes/duplication_reverter/utils.py +169 -0
- angr/analyses/decompiler/optimization_passes/engine_base.py +60 -63
- angr/analyses/decompiler/optimization_passes/expr_op_swapper.py +6 -7
- angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py +1 -0
- angr/analyses/decompiler/optimization_passes/inlined_string_transformation_simplifier.py +102 -37
- angr/analyses/decompiler/optimization_passes/ite_expr_converter.py +8 -10
- angr/analyses/decompiler/optimization_passes/ite_region_converter.py +128 -18
- angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py +142 -145
- angr/analyses/decompiler/optimization_passes/mod_simplifier.py +27 -23
- angr/analyses/decompiler/optimization_passes/multi_simplifier.py +30 -34
- angr/analyses/decompiler/optimization_passes/optimization_pass.py +108 -47
- angr/analyses/decompiler/optimization_passes/register_save_area_simplifier.py +10 -3
- angr/analyses/decompiler/optimization_passes/ret_addr_save_simplifier.py +5 -6
- angr/analyses/decompiler/optimization_passes/ret_deduplicator.py +3 -2
- angr/analyses/decompiler/optimization_passes/return_duplicator_base.py +125 -13
- angr/analyses/decompiler/optimization_passes/return_duplicator_high.py +1 -0
- angr/analyses/decompiler/optimization_passes/return_duplicator_low.py +3 -2
- angr/analyses/decompiler/optimization_passes/stack_canary_simplifier.py +52 -21
- angr/analyses/decompiler/optimization_passes/switch_default_case_duplicator.py +3 -2
- angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py +47 -36
- angr/analyses/decompiler/optimization_passes/x86_gcc_getpc_simplifier.py +2 -1
- angr/analyses/decompiler/peephole_optimizations/__init__.py +2 -0
- angr/analyses/decompiler/peephole_optimizations/a_div_const_add_a_mul_n_div_const.py +26 -22
- angr/analyses/decompiler/peephole_optimizations/a_mul_const_div_shr_const.py +2 -2
- angr/analyses/decompiler/peephole_optimizations/a_shl_const_sub_a.py +1 -0
- angr/analyses/decompiler/peephole_optimizations/a_sub_a_div.py +2 -2
- angr/analyses/decompiler/peephole_optimizations/a_sub_a_div_const_mul_const.py +1 -0
- angr/analyses/decompiler/peephole_optimizations/a_sub_a_sub_n.py +8 -4
- angr/analyses/decompiler/peephole_optimizations/arm_cmpf.py +28 -27
- angr/analyses/decompiler/peephole_optimizations/base.py +17 -20
- angr/analyses/decompiler/peephole_optimizations/basepointeroffset_add_n.py +1 -0
- angr/analyses/decompiler/peephole_optimizations/basepointeroffset_and_mask.py +1 -0
- angr/analyses/decompiler/peephole_optimizations/bitwise_or_to_logical_or.py +2 -2
- angr/analyses/decompiler/peephole_optimizations/bool_expr_xor_1.py +2 -2
- angr/analyses/decompiler/peephole_optimizations/bswap.py +29 -22
- angr/analyses/decompiler/peephole_optimizations/cmpord_rewriter.py +3 -4
- angr/analyses/decompiler/peephole_optimizations/coalesce_adjacent_shrs.py +39 -0
- angr/analyses/decompiler/peephole_optimizations/coalesce_same_cascading_ifs.py +2 -1
- angr/analyses/decompiler/peephole_optimizations/const_mull_a_shift.py +94 -29
- angr/analyses/decompiler/peephole_optimizations/constant_derefs.py +1 -0
- angr/analyses/decompiler/peephole_optimizations/conv_a_sub0_shr_and.py +48 -49
- angr/analyses/decompiler/peephole_optimizations/conv_shl_shr.py +1 -0
- angr/analyses/decompiler/peephole_optimizations/eager_eval.py +41 -34
- angr/analyses/decompiler/peephole_optimizations/extended_byte_and_mask.py +2 -1
- angr/analyses/decompiler/peephole_optimizations/inlined_strcpy.py +28 -18
- angr/analyses/decompiler/peephole_optimizations/inlined_strcpy_consolidation.py +8 -4
- angr/analyses/decompiler/peephole_optimizations/inlined_wstrcpy.py +28 -18
- angr/analyses/decompiler/peephole_optimizations/invert_negated_logical_conjuction_disjunction.py +32 -32
- angr/analyses/decompiler/peephole_optimizations/one_sub_bool.py +2 -2
- angr/analyses/decompiler/peephole_optimizations/remove_cascading_conversions.py +23 -3
- angr/analyses/decompiler/peephole_optimizations/remove_empty_if_body.py +2 -1
- angr/analyses/decompiler/peephole_optimizations/remove_noop_conversions.py +4 -0
- angr/analyses/decompiler/peephole_optimizations/remove_redundant_bitmasks.py +1 -0
- angr/analyses/decompiler/peephole_optimizations/remove_redundant_conversions.py +4 -6
- angr/analyses/decompiler/peephole_optimizations/remove_redundant_ite_branch.py +14 -13
- angr/analyses/decompiler/peephole_optimizations/remove_redundant_ite_comparisons.py +2 -2
- angr/analyses/decompiler/peephole_optimizations/remove_redundant_nots.py +1 -0
- angr/analyses/decompiler/peephole_optimizations/remove_redundant_reinterprets.py +3 -2
- angr/analyses/decompiler/peephole_optimizations/remove_redundant_shifts.py +2 -2
- angr/analyses/decompiler/peephole_optimizations/remove_redundant_shifts_around_comparators.py +20 -16
- angr/analyses/decompiler/peephole_optimizations/rewrite_bit_extractions.py +3 -3
- angr/analyses/decompiler/peephole_optimizations/rewrite_mips_gp_loads.py +4 -2
- angr/analyses/decompiler/peephole_optimizations/rol_ror.py +66 -40
- angr/analyses/decompiler/peephole_optimizations/sar_to_signed_div.py +64 -57
- angr/analyses/decompiler/peephole_optimizations/simplify_pc_relative_loads.py +14 -14
- angr/analyses/decompiler/peephole_optimizations/single_bit_cond_to_boolexpr.py +1 -0
- angr/analyses/decompiler/peephole_optimizations/single_bit_xor.py +8 -5
- angr/analyses/decompiler/peephole_optimizations/tidy_stack_addr.py +4 -6
- angr/analyses/decompiler/redundant_label_remover.py +20 -19
- angr/analyses/decompiler/region_identifier.py +64 -77
- angr/analyses/decompiler/region_simplifiers/__init__.py +1 -0
- angr/analyses/decompiler/region_simplifiers/cascading_cond_transformer.py +2 -1
- angr/analyses/decompiler/region_simplifiers/cascading_ifs.py +1 -0
- angr/analyses/decompiler/region_simplifiers/expr_folding.py +43 -29
- angr/analyses/decompiler/region_simplifiers/goto.py +1 -0
- angr/analyses/decompiler/region_simplifiers/if_.py +29 -36
- angr/analyses/decompiler/region_simplifiers/ifelse.py +1 -0
- angr/analyses/decompiler/region_simplifiers/loop.py +27 -13
- angr/analyses/decompiler/region_simplifiers/node_address_finder.py +1 -0
- angr/analyses/decompiler/region_simplifiers/region_simplifier.py +1 -0
- angr/analyses/decompiler/region_simplifiers/switch_cluster_simplifier.py +12 -16
- angr/analyses/decompiler/region_simplifiers/switch_expr_simplifier.py +36 -32
- angr/analyses/decompiler/region_walker.py +1 -0
- angr/analyses/decompiler/return_maker.py +1 -0
- angr/analyses/decompiler/seq_to_blocks.py +1 -0
- angr/analyses/decompiler/sequence_walker.py +5 -10
- angr/analyses/decompiler/ssailification/__init__.py +4 -0
- angr/analyses/decompiler/ssailification/rewriting.py +325 -0
- angr/analyses/decompiler/ssailification/rewriting_engine.py +601 -0
- angr/analyses/decompiler/ssailification/rewriting_state.py +60 -0
- angr/analyses/decompiler/ssailification/ssailification.py +213 -0
- angr/analyses/decompiler/ssailification/traversal.py +97 -0
- angr/analyses/decompiler/ssailification/traversal_engine.py +131 -0
- angr/analyses/decompiler/ssailification/traversal_state.py +42 -0
- angr/analyses/decompiler/structured_codegen/__init__.py +1 -0
- angr/analyses/decompiler/structured_codegen/base.py +2 -2
- angr/analyses/decompiler/structured_codegen/c.py +172 -160
- angr/analyses/decompiler/structured_codegen/dummy.py +1 -0
- angr/analyses/decompiler/structured_codegen/dwarf_import.py +1 -0
- angr/analyses/decompiler/structuring/__init__.py +1 -0
- angr/analyses/decompiler/structuring/dream.py +27 -43
- angr/analyses/decompiler/structuring/phoenix.py +201 -201
- angr/analyses/decompiler/structuring/recursive_structurer.py +4 -3
- angr/analyses/decompiler/structuring/sailr.py +5 -4
- angr/analyses/decompiler/structuring/structurer_base.py +26 -23
- angr/analyses/decompiler/structuring/structurer_nodes.py +14 -24
- angr/analyses/decompiler/utils.py +112 -52
- angr/analyses/disassembly.py +75 -77
- angr/analyses/disassembly_utils.py +10 -13
- angr/analyses/dominance_frontier.py +25 -7
- angr/analyses/find_objects_static.py +3 -2
- angr/analyses/flirt.py +7 -10
- angr/analyses/forward_analysis/__init__.py +1 -0
- angr/analyses/forward_analysis/forward_analysis.py +9 -6
- angr/analyses/forward_analysis/job_info.py +3 -3
- angr/analyses/forward_analysis/visitors/__init__.py +1 -0
- angr/analyses/forward_analysis/visitors/call_graph.py +1 -0
- angr/analyses/forward_analysis/visitors/function_graph.py +3 -2
- angr/analyses/forward_analysis/visitors/graph.py +9 -9
- angr/analyses/forward_analysis/visitors/loop.py +1 -0
- angr/analyses/forward_analysis/visitors/single_node_graph.py +2 -2
- angr/analyses/identifier/__init__.py +1 -0
- angr/analyses/identifier/custom_callable.py +2 -2
- angr/analyses/identifier/errors.py +1 -0
- angr/analyses/identifier/func.py +6 -3
- angr/analyses/identifier/functions/__init__.py +2 -1
- angr/analyses/identifier/functions/atoi.py +2 -4
- angr/analyses/identifier/functions/based_atoi.py +3 -6
- angr/analyses/identifier/functions/fdprintf.py +1 -0
- angr/analyses/identifier/functions/free.py +3 -5
- angr/analyses/identifier/functions/int2str.py +11 -26
- angr/analyses/identifier/functions/malloc.py +4 -6
- angr/analyses/identifier/functions/memcmp.py +2 -4
- angr/analyses/identifier/functions/memcpy.py +2 -2
- angr/analyses/identifier/functions/memset.py +2 -2
- angr/analyses/identifier/functions/printf.py +1 -0
- angr/analyses/identifier/functions/recv_until.py +3 -6
- angr/analyses/identifier/functions/skip_calloc.py +2 -1
- angr/analyses/identifier/functions/skip_realloc.py +4 -6
- angr/analyses/identifier/functions/skip_recv_n.py +4 -6
- angr/analyses/identifier/functions/snprintf.py +2 -4
- angr/analyses/identifier/functions/sprintf.py +1 -0
- angr/analyses/identifier/functions/strcasecmp.py +1 -0
- angr/analyses/identifier/functions/strcmp.py +2 -1
- angr/analyses/identifier/functions/strcpy.py +2 -2
- angr/analyses/identifier/functions/strlen.py +1 -0
- angr/analyses/identifier/functions/strncmp.py +2 -1
- angr/analyses/identifier/functions/strncpy.py +2 -2
- angr/analyses/identifier/functions/strtol.py +2 -4
- angr/analyses/identifier/identify.py +35 -54
- angr/analyses/identifier/runner.py +6 -5
- angr/analyses/init_finder.py +17 -17
- angr/analyses/loop_analysis.py +10 -14
- angr/analyses/loopfinder.py +9 -13
- angr/analyses/propagator/__init__.py +1 -0
- angr/analyses/propagator/engine_ail.py +161 -166
- angr/analyses/propagator/engine_base.py +3 -2
- angr/analyses/propagator/engine_vex.py +47 -48
- angr/analyses/propagator/outdated_definition_walker.py +18 -23
- angr/analyses/propagator/propagator.py +8 -12
- angr/analyses/propagator/tmpvar_finder.py +1 -0
- angr/analyses/propagator/top_checker_mixin.py +2 -4
- angr/analyses/propagator/values.py +1 -0
- angr/analyses/propagator/vex_vars.py +3 -2
- angr/analyses/proximity_graph.py +12 -20
- angr/analyses/reaching_definitions/__init__.py +5 -4
- angr/analyses/reaching_definitions/call_trace.py +7 -6
- angr/analyses/reaching_definitions/dep_graph.py +18 -23
- angr/analyses/reaching_definitions/engine_ail.py +89 -121
- angr/analyses/reaching_definitions/engine_vex.py +20 -32
- angr/analyses/reaching_definitions/function_handler.py +38 -35
- angr/analyses/reaching_definitions/function_handler_library/__init__.py +1 -0
- angr/analyses/reaching_definitions/function_handler_library/stdio.py +4 -6
- angr/analyses/reaching_definitions/function_handler_library/stdlib.py +1 -2
- angr/analyses/reaching_definitions/function_handler_library/string.py +2 -4
- angr/analyses/reaching_definitions/function_handler_library/unistd.py +1 -0
- angr/analyses/reaching_definitions/heap_allocator.py +7 -6
- angr/analyses/reaching_definitions/rd_initializer.py +27 -25
- angr/analyses/reaching_definitions/rd_state.py +14 -16
- angr/analyses/reaching_definitions/reaching_definitions.py +27 -36
- angr/analyses/reaching_definitions/subject.py +3 -2
- angr/analyses/reassembler.py +189 -253
- angr/analyses/s_liveness/__init__.py +2 -0
- angr/analyses/s_liveness/s_liveness.py +153 -0
- angr/analyses/s_propagator/__init__.py +2 -0
- angr/analyses/s_propagator/s_propagator.py +250 -0
- angr/analyses/s_reaching_definitions/__init__.py +2 -0
- angr/analyses/s_reaching_definitions/s_rda.py +479 -0
- angr/analyses/soot_class_hierarchy.py +15 -24
- angr/analyses/stack_pointer_tracker.py +106 -98
- angr/analyses/static_hooker.py +3 -2
- angr/analyses/typehoon/__init__.py +1 -0
- angr/analyses/typehoon/dfa.py +5 -5
- angr/analyses/typehoon/lifter.py +5 -4
- angr/analyses/typehoon/simple_solver.py +80 -64
- angr/analyses/typehoon/translator.py +26 -16
- angr/analyses/typehoon/typeconsts.py +22 -12
- angr/analyses/typehoon/typehoon.py +8 -10
- angr/analyses/typehoon/typevars.py +37 -49
- angr/analyses/typehoon/variance.py +1 -0
- angr/analyses/variable_recovery/__init__.py +1 -0
- angr/analyses/variable_recovery/annotations.py +1 -0
- angr/analyses/variable_recovery/engine_ail.py +78 -32
- angr/analyses/variable_recovery/engine_base.py +233 -59
- angr/analyses/variable_recovery/engine_vex.py +17 -21
- angr/analyses/variable_recovery/irsb_scanner.py +1 -0
- angr/analyses/variable_recovery/variable_recovery.py +14 -16
- angr/analyses/variable_recovery/variable_recovery_base.py +12 -14
- angr/analyses/variable_recovery/variable_recovery_fast.py +67 -47
- angr/analyses/veritesting.py +10 -16
- angr/analyses/vfg.py +102 -148
- angr/analyses/vsa_ddg.py +3 -5
- angr/analyses/vtable.py +6 -6
- angr/analyses/xrefs.py +9 -13
- angr/angrdb/__init__.py +4 -2
- angr/angrdb/db.py +51 -53
- angr/angrdb/models.py +1 -0
- angr/angrdb/serializers/__init__.py +1 -0
- angr/angrdb/serializers/cfg_model.py +2 -2
- angr/angrdb/serializers/comments.py +1 -0
- angr/angrdb/serializers/funcs.py +4 -3
- angr/angrdb/serializers/kb.py +3 -2
- angr/angrdb/serializers/labels.py +1 -0
- angr/angrdb/serializers/structured_code.py +5 -10
- angr/angrdb/serializers/variables.py +6 -6
- angr/angrdb/serializers/xrefs.py +2 -2
- angr/annocfg.py +17 -25
- angr/blade.py +19 -23
- angr/block.py +11 -13
- angr/callable.py +4 -3
- angr/calling_conventions.py +147 -147
- angr/code_location.py +12 -13
- angr/codenode.py +2 -1
- angr/concretization_strategies/__init__.py +6 -6
- angr/concretization_strategies/any.py +5 -4
- angr/concretization_strategies/any_named.py +1 -0
- angr/concretization_strategies/controlled_data.py +1 -0
- angr/concretization_strategies/eval.py +2 -2
- angr/concretization_strategies/logging.py +1 -0
- angr/concretization_strategies/max.py +6 -6
- angr/concretization_strategies/nonzero.py +1 -0
- angr/concretization_strategies/nonzero_range.py +4 -3
- angr/concretization_strategies/norepeats.py +5 -4
- angr/concretization_strategies/norepeats_range.py +1 -0
- angr/concretization_strategies/range.py +1 -0
- angr/concretization_strategies/signed_add.py +13 -9
- angr/concretization_strategies/single.py +2 -0
- angr/concretization_strategies/solutions.py +1 -0
- angr/concretization_strategies/unlimited_range.py +1 -0
- angr/distributed/__init__.py +1 -0
- angr/distributed/server.py +2 -2
- angr/distributed/worker.py +3 -3
- angr/engines/__init__.py +1 -0
- angr/engines/concrete.py +2 -1
- angr/engines/engine.py +4 -6
- angr/engines/failure.py +2 -1
- angr/engines/hook.py +1 -0
- angr/engines/light/__init__.py +1 -0
- angr/engines/light/data.py +221 -255
- angr/engines/light/engine.py +72 -85
- angr/engines/pcode/__init__.py +1 -0
- angr/engines/pcode/behavior.py +3 -3
- angr/engines/pcode/cc.py +1 -0
- angr/engines/pcode/emulate.py +13 -16
- angr/engines/pcode/engine.py +7 -5
- angr/engines/pcode/lifter.py +62 -79
- angr/engines/procedure.py +1 -0
- angr/engines/soot/__init__.py +1 -0
- angr/engines/soot/engine.py +46 -52
- angr/engines/soot/exceptions.py +3 -0
- angr/engines/soot/expressions/__init__.py +1 -0
- angr/engines/soot/expressions/arrayref.py +1 -0
- angr/engines/soot/expressions/base.py +4 -5
- angr/engines/soot/expressions/binop.py +1 -0
- angr/engines/soot/expressions/cast.py +1 -0
- angr/engines/soot/expressions/condition.py +2 -1
- angr/engines/soot/expressions/constants.py +1 -0
- angr/engines/soot/expressions/instanceOf.py +1 -0
- angr/engines/soot/expressions/instancefieldref.py +1 -0
- angr/engines/soot/expressions/invoke.py +7 -9
- angr/engines/soot/expressions/length.py +1 -0
- angr/engines/soot/expressions/local.py +1 -0
- angr/engines/soot/expressions/new.py +1 -0
- angr/engines/soot/expressions/newArray.py +1 -0
- angr/engines/soot/expressions/newMultiArray.py +3 -3
- angr/engines/soot/expressions/paramref.py +1 -0
- angr/engines/soot/expressions/phi.py +1 -0
- angr/engines/soot/expressions/staticfieldref.py +1 -0
- angr/engines/soot/expressions/thisref.py +1 -0
- angr/engines/soot/expressions/unsupported.py +1 -0
- angr/engines/soot/field_dispatcher.py +5 -8
- angr/engines/soot/method_dispatcher.py +4 -7
- angr/engines/soot/statements/__init__.py +4 -4
- angr/engines/soot/statements/assign.py +1 -0
- angr/engines/soot/statements/base.py +6 -7
- angr/engines/soot/statements/goto.py +2 -1
- angr/engines/soot/statements/identity.py +1 -0
- angr/engines/soot/statements/if_.py +2 -1
- angr/engines/soot/statements/invoke.py +1 -0
- angr/engines/soot/statements/return_.py +1 -0
- angr/engines/soot/statements/switch.py +1 -0
- angr/engines/soot/statements/throw.py +2 -1
- angr/engines/soot/values/__init__.py +4 -2
- angr/engines/soot/values/arrayref.py +8 -10
- angr/engines/soot/values/base.py +4 -1
- angr/engines/soot/values/constants.py +1 -0
- angr/engines/soot/values/instancefieldref.py +1 -0
- angr/engines/soot/values/local.py +1 -0
- angr/engines/soot/values/paramref.py +1 -0
- angr/engines/soot/values/staticfieldref.py +1 -0
- angr/engines/soot/values/strref.py +3 -2
- angr/engines/soot/values/thisref.py +1 -0
- angr/engines/successors.py +21 -24
- angr/engines/syscall.py +9 -9
- angr/engines/unicorn.py +14 -9
- angr/engines/vex/__init__.py +1 -0
- angr/engines/vex/claripy/__init__.py +1 -0
- angr/engines/vex/claripy/ccall.py +86 -112
- angr/engines/vex/claripy/datalayer.py +12 -16
- angr/engines/vex/claripy/irop.py +85 -104
- angr/engines/vex/heavy/__init__.py +1 -0
- angr/engines/vex/heavy/actions.py +1 -0
- angr/engines/vex/heavy/concretizers.py +8 -9
- angr/engines/vex/heavy/dirty.py +6 -5
- angr/engines/vex/heavy/heavy.py +15 -14
- angr/engines/vex/heavy/inspect.py +1 -0
- angr/engines/vex/heavy/resilience.py +2 -2
- angr/engines/vex/heavy/super_fastpath.py +2 -2
- angr/engines/vex/lifter.py +28 -35
- angr/engines/vex/light/__init__.py +1 -0
- angr/engines/vex/light/light.py +2 -4
- angr/engines/vex/light/resilience.py +1 -0
- angr/engines/vex/light/slicing.py +1 -0
- angr/errors.py +6 -1
- angr/exploration_techniques/__init__.py +3 -2
- angr/exploration_techniques/bucketizer.py +2 -3
- angr/exploration_techniques/common.py +3 -3
- angr/exploration_techniques/dfs.py +1 -0
- angr/exploration_techniques/director.py +17 -19
- angr/exploration_techniques/driller_core.py +3 -7
- angr/exploration_techniques/explorer.py +7 -3
- angr/exploration_techniques/lengthlimiter.py +1 -0
- angr/exploration_techniques/local_loop_seer.py +2 -2
- angr/exploration_techniques/loop_seer.py +11 -14
- angr/exploration_techniques/manual_mergepoint.py +3 -2
- angr/exploration_techniques/memory_watcher.py +1 -0
- angr/exploration_techniques/oppologist.py +4 -4
- angr/exploration_techniques/slicecutor.py +1 -0
- angr/exploration_techniques/spiller.py +8 -8
- angr/exploration_techniques/spiller_db.py +1 -0
- angr/exploration_techniques/stochastic.py +3 -4
- angr/exploration_techniques/stub_stasher.py +1 -0
- angr/exploration_techniques/suggestions.py +5 -4
- angr/exploration_techniques/symbion.py +1 -0
- angr/exploration_techniques/tech_builder.py +1 -0
- angr/exploration_techniques/threading.py +1 -0
- angr/exploration_techniques/timeout.py +1 -0
- angr/exploration_techniques/tracer.py +34 -39
- angr/exploration_techniques/unique.py +1 -0
- angr/exploration_techniques/veritesting.py +1 -0
- angr/factory.py +9 -9
- angr/flirt/__init__.py +1 -0
- angr/flirt/build_sig.py +8 -12
- angr/keyed_region.py +10 -17
- angr/knowledge_base/__init__.py +1 -0
- angr/knowledge_base/knowledge_base.py +17 -17
- angr/knowledge_plugins/__init__.py +1 -0
- angr/knowledge_plugins/callsite_prototypes.py +1 -0
- angr/knowledge_plugins/cfg/__init__.py +2 -0
- angr/knowledge_plugins/cfg/cfg_manager.py +2 -1
- angr/knowledge_plugins/cfg/cfg_model.py +27 -43
- angr/knowledge_plugins/cfg/cfg_node.py +8 -19
- angr/knowledge_plugins/cfg/indirect_jump.py +3 -5
- angr/knowledge_plugins/cfg/memory_data.py +4 -3
- angr/knowledge_plugins/comments.py +1 -0
- angr/knowledge_plugins/custom_strings.py +1 -0
- angr/knowledge_plugins/data.py +1 -0
- angr/knowledge_plugins/debug_variables.py +18 -23
- angr/knowledge_plugins/functions/__init__.py +1 -0
- angr/knowledge_plugins/functions/function.py +49 -53
- angr/knowledge_plugins/functions/function_manager.py +14 -14
- angr/knowledge_plugins/functions/function_parser.py +38 -42
- angr/knowledge_plugins/functions/soot_function.py +5 -6
- angr/knowledge_plugins/indirect_jumps.py +1 -0
- angr/knowledge_plugins/key_definitions/__init__.py +1 -0
- angr/knowledge_plugins/key_definitions/atoms.py +65 -17
- angr/knowledge_plugins/key_definitions/constants.py +6 -0
- angr/knowledge_plugins/key_definitions/definition.py +22 -25
- angr/knowledge_plugins/key_definitions/environment.py +18 -14
- angr/knowledge_plugins/key_definitions/heap_address.py +4 -3
- angr/knowledge_plugins/key_definitions/key_definition_manager.py +5 -4
- angr/knowledge_plugins/key_definitions/live_definitions.py +36 -45
- angr/knowledge_plugins/key_definitions/liveness.py +18 -23
- angr/knowledge_plugins/key_definitions/rd_model.py +29 -34
- angr/knowledge_plugins/key_definitions/tag.py +7 -6
- angr/knowledge_plugins/key_definitions/undefined.py +3 -0
- angr/knowledge_plugins/key_definitions/unknown_size.py +3 -0
- angr/knowledge_plugins/key_definitions/uses.py +21 -23
- angr/knowledge_plugins/labels.py +3 -2
- angr/knowledge_plugins/patches.py +2 -1
- angr/knowledge_plugins/plugin.py +2 -1
- angr/knowledge_plugins/propagations/__init__.py +1 -0
- angr/knowledge_plugins/propagations/prop_value.py +25 -27
- angr/knowledge_plugins/propagations/propagation_manager.py +2 -2
- angr/knowledge_plugins/propagations/propagation_model.py +5 -4
- angr/knowledge_plugins/propagations/states.py +71 -81
- angr/knowledge_plugins/structured_code/__init__.py +1 -0
- angr/knowledge_plugins/structured_code/manager.py +5 -4
- angr/knowledge_plugins/sync/__init__.py +1 -0
- angr/knowledge_plugins/sync/sync_controller.py +10 -15
- angr/knowledge_plugins/types.py +1 -0
- angr/knowledge_plugins/variables/__init__.py +1 -0
- angr/knowledge_plugins/variables/variable_access.py +9 -10
- angr/knowledge_plugins/variables/variable_manager.py +84 -55
- angr/knowledge_plugins/xrefs/__init__.py +1 -0
- angr/knowledge_plugins/xrefs/xref.py +7 -11
- angr/knowledge_plugins/xrefs/xref_manager.py +1 -0
- angr/knowledge_plugins/xrefs/xref_types.py +3 -0
- angr/lib/angr_native.dylib +0 -0
- angr/misc/__init__.py +1 -0
- angr/misc/ansi.py +1 -0
- angr/misc/autoimport.py +3 -2
- angr/misc/bug_report.py +6 -5
- angr/misc/hookset.py +3 -2
- angr/misc/loggers.py +2 -2
- angr/misc/picklable_lock.py +1 -0
- angr/misc/plugins.py +11 -13
- angr/misc/range.py +3 -0
- angr/misc/telemetry.py +54 -0
- angr/misc/testing.py +2 -1
- angr/misc/ux.py +5 -5
- angr/misc/weakpatch.py +1 -0
- angr/procedures/__init__.py +1 -0
- angr/procedures/cgc/_terminate.py +1 -0
- angr/procedures/cgc/allocate.py +1 -0
- angr/procedures/cgc/deallocate.py +1 -0
- angr/procedures/cgc/fdwait.py +1 -0
- angr/procedures/cgc/random.py +1 -0
- angr/procedures/cgc/receive.py +26 -26
- angr/procedures/cgc/transmit.py +1 -0
- angr/procedures/definitions/__init__.py +9 -10
- angr/procedures/definitions/cgc.py +1 -0
- angr/procedures/definitions/glibc.py +1 -0
- angr/procedures/definitions/gnulib.py +1 -0
- angr/procedures/definitions/libstdcpp.py +1 -0
- angr/procedures/definitions/linux_kernel.py +1 -0
- angr/procedures/definitions/linux_loader.py +1 -0
- angr/procedures/definitions/msvcr.py +1 -0
- angr/procedures/definitions/parse_syscalls_from_local_system.py +2 -1
- angr/procedures/definitions/parse_win32json.py +27 -30
- angr/procedures/definitions/types_win32.py +1 -0
- angr/procedures/definitions/wdk_api-ms-win-dx-d3dkmt-l1-1-4.py +1 -0
- angr/procedures/definitions/wdk_api-ms-win-dx-d3dkmt-l1-1-6.py +1 -0
- angr/procedures/definitions/wdk_clfs.py +1 -0
- angr/procedures/definitions/wdk_fltmgr.py +1 -0
- angr/procedures/definitions/wdk_fwpkclnt.py +1 -0
- angr/procedures/definitions/wdk_fwpuclnt.py +1 -0
- angr/procedures/definitions/wdk_gdi32.py +1 -0
- angr/procedures/definitions/wdk_hal.py +1 -0
- angr/procedures/definitions/wdk_ksecdd.py +1 -0
- angr/procedures/definitions/wdk_ndis.py +1 -0
- angr/procedures/definitions/wdk_ntoskrnl.py +1 -0
- angr/procedures/definitions/wdk_offreg.py +1 -0
- angr/procedures/definitions/wdk_pshed.py +1 -0
- angr/procedures/definitions/wdk_secur32.py +1 -0
- angr/procedures/definitions/wdk_vhfum.py +1 -0
- angr/procedures/definitions/win32_aclui.py +1 -0
- angr/procedures/definitions/win32_activeds.py +1 -0
- angr/procedures/definitions/win32_advapi32.py +1 -0
- angr/procedures/definitions/win32_advpack.py +1 -0
- angr/procedures/definitions/win32_amsi.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-1.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-3.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-6.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-apiquery-l2-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-backgroundtask-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-comm-l1-1-1.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-comm-l1-1-2.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-enclave-l1-1-1.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-errorhandling-l1-1-3.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-featurestaging-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-featurestaging-l1-1-1.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-file-fromapp-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-handle-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-ioring-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-marshal-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-3.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-4.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-5.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-6.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-7.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-8.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-path-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-psm-appnotify-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-psm-appnotify-l1-1-1.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-realtime-l1-1-1.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-realtime-l1-1-2.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-slapi-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-state-helpers-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-synch-l1-2-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-3.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-4.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-6.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-util-l1-1-1.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-winrt-error-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-winrt-error-l1-1-1.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-winrt-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-winrt-registration-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-winrt-robuffer-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-winrt-roparameterizediid-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-winrt-string-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-winrt-string-l1-1-1.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-core-wow64-l1-1-1.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-devices-query-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-devices-query-l1-1-1.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-dx-d3dkmt-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-gaming-deviceinformation-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-gaming-expandedresources-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-1.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-2.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-3.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-4.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-mm-misc-l1-1-1.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-net-isolation-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-security-base-l1-2-2.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-security-isolatedcontainer-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-security-isolatedcontainer-l1-1-1.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-3.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-4.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-5.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-1.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-2.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-shcore-stream-winrt-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_api-ms-win-wsl-api-l1-1-0.py +1 -0
- angr/procedures/definitions/win32_apphelp.py +1 -0
- angr/procedures/definitions/win32_authz.py +1 -0
- angr/procedures/definitions/win32_avicap32.py +1 -0
- angr/procedures/definitions/win32_avifil32.py +1 -0
- angr/procedures/definitions/win32_avrt.py +1 -0
- angr/procedures/definitions/win32_bcp47mrm.py +1 -0
- angr/procedures/definitions/win32_bcrypt.py +1 -0
- angr/procedures/definitions/win32_bcryptprimitives.py +1 -0
- angr/procedures/definitions/win32_bluetoothapis.py +1 -0
- angr/procedures/definitions/win32_bthprops.py +1 -0
- angr/procedures/definitions/win32_bthprops_cpl.py +1 -0
- angr/procedures/definitions/win32_cabinet.py +1 -0
- angr/procedures/definitions/win32_certadm.py +1 -0
- angr/procedures/definitions/win32_certpoleng.py +1 -0
- angr/procedures/definitions/win32_cfgmgr32.py +1 -0
- angr/procedures/definitions/win32_chakra.py +1 -0
- angr/procedures/definitions/win32_cldapi.py +1 -0
- angr/procedures/definitions/win32_clfsw32.py +1 -0
- angr/procedures/definitions/win32_clusapi.py +1 -0
- angr/procedures/definitions/win32_comctl32.py +1 -0
- angr/procedures/definitions/win32_comdlg32.py +1 -0
- angr/procedures/definitions/win32_compstui.py +1 -0
- angr/procedures/definitions/win32_computecore.py +1 -0
- angr/procedures/definitions/win32_computenetwork.py +1 -0
- angr/procedures/definitions/win32_computestorage.py +1 -0
- angr/procedures/definitions/win32_comsvcs.py +1 -0
- angr/procedures/definitions/win32_coremessaging.py +1 -0
- angr/procedures/definitions/win32_credui.py +1 -0
- angr/procedures/definitions/win32_crypt32.py +1 -0
- angr/procedures/definitions/win32_cryptnet.py +1 -0
- angr/procedures/definitions/win32_cryptui.py +1 -0
- angr/procedures/definitions/win32_cryptxml.py +1 -0
- angr/procedures/definitions/win32_cscapi.py +1 -0
- angr/procedures/definitions/win32_d2d1.py +1 -0
- angr/procedures/definitions/win32_d3d10.py +1 -0
- angr/procedures/definitions/win32_d3d10_1.py +1 -0
- angr/procedures/definitions/win32_d3d11.py +1 -0
- angr/procedures/definitions/win32_d3d12.py +1 -0
- angr/procedures/definitions/win32_d3d9.py +1 -0
- angr/procedures/definitions/win32_d3dcompiler_47.py +1 -0
- angr/procedures/definitions/win32_d3dcsx.py +1 -0
- angr/procedures/definitions/win32_davclnt.py +1 -0
- angr/procedures/definitions/win32_dbgeng.py +1 -0
- angr/procedures/definitions/win32_dbghelp.py +1 -0
- angr/procedures/definitions/win32_dbgmodel.py +1 -0
- angr/procedures/definitions/win32_dciman32.py +1 -0
- angr/procedures/definitions/win32_dcomp.py +1 -0
- angr/procedures/definitions/win32_ddraw.py +1 -0
- angr/procedures/definitions/win32_deviceaccess.py +1 -0
- angr/procedures/definitions/win32_dflayout.py +1 -0
- angr/procedures/definitions/win32_dhcpcsvc.py +1 -0
- angr/procedures/definitions/win32_dhcpcsvc6.py +1 -0
- angr/procedures/definitions/win32_dhcpsapi.py +1 -0
- angr/procedures/definitions/win32_diagnosticdataquery.py +1 -0
- angr/procedures/definitions/win32_dinput8.py +1 -0
- angr/procedures/definitions/win32_directml.py +1 -0
- angr/procedures/definitions/win32_dmprocessxmlfiltered.py +1 -0
- angr/procedures/definitions/win32_dnsapi.py +1 -0
- angr/procedures/definitions/win32_drt.py +1 -0
- angr/procedures/definitions/win32_drtprov.py +1 -0
- angr/procedures/definitions/win32_drttransport.py +1 -0
- angr/procedures/definitions/win32_dsound.py +1 -0
- angr/procedures/definitions/win32_dsparse.py +1 -0
- angr/procedures/definitions/win32_dsprop.py +1 -0
- angr/procedures/definitions/win32_dssec.py +1 -0
- angr/procedures/definitions/win32_dsuiext.py +1 -0
- angr/procedures/definitions/win32_dwmapi.py +1 -0
- angr/procedures/definitions/win32_dwrite.py +1 -0
- angr/procedures/definitions/win32_dxcompiler.py +1 -0
- angr/procedures/definitions/win32_dxcore.py +1 -0
- angr/procedures/definitions/win32_dxgi.py +1 -0
- angr/procedures/definitions/win32_dxva2.py +1 -0
- angr/procedures/definitions/win32_eappcfg.py +1 -0
- angr/procedures/definitions/win32_eappprxy.py +1 -0
- angr/procedures/definitions/win32_efswrt.py +1 -0
- angr/procedures/definitions/win32_elscore.py +1 -0
- angr/procedures/definitions/win32_esent.py +1 -0
- angr/procedures/definitions/win32_evr.py +1 -0
- angr/procedures/definitions/win32_faultrep.py +1 -0
- angr/procedures/definitions/win32_fhsvcctl.py +1 -0
- angr/procedures/definitions/win32_firewallapi.py +1 -0
- angr/procedures/definitions/win32_fltlib.py +1 -0
- angr/procedures/definitions/win32_fontsub.py +1 -0
- angr/procedures/definitions/win32_forceinline.py +1 -0
- angr/procedures/definitions/win32_fwpuclnt.py +1 -0
- angr/procedures/definitions/win32_fxsutility.py +1 -0
- angr/procedures/definitions/win32_gdi32.py +1 -0
- angr/procedures/definitions/win32_gdiplus.py +1 -0
- angr/procedures/definitions/win32_glu32.py +1 -0
- angr/procedures/definitions/win32_gpedit.py +1 -0
- angr/procedures/definitions/win32_hhctrl_ocx.py +1 -0
- angr/procedures/definitions/win32_hid.py +1 -0
- angr/procedures/definitions/win32_hlink.py +1 -0
- angr/procedures/definitions/win32_hrtfapo.py +1 -0
- angr/procedures/definitions/win32_httpapi.py +1 -0
- angr/procedures/definitions/win32_icm32.py +1 -0
- angr/procedures/definitions/win32_icmui.py +1 -0
- angr/procedures/definitions/win32_icu.py +1 -0
- angr/procedures/definitions/win32_ieframe.py +1 -0
- angr/procedures/definitions/win32_imagehlp.py +1 -0
- angr/procedures/definitions/win32_imgutil.py +1 -0
- angr/procedures/definitions/win32_imm32.py +1 -0
- angr/procedures/definitions/win32_infocardapi.py +1 -0
- angr/procedures/definitions/win32_inkobjcore.py +1 -0
- angr/procedures/definitions/win32_iphlpapi.py +1 -0
- angr/procedures/definitions/win32_iscsidsc.py +1 -0
- angr/procedures/definitions/win32_isolatedwindowsenvironmentutils.py +1 -0
- angr/procedures/definitions/win32_kernel32.py +1 -0
- angr/procedures/definitions/win32_kernelbase.py +1 -0
- angr/procedures/definitions/win32_keycredmgr.py +1 -0
- angr/procedures/definitions/win32_ksproxy_ax.py +1 -0
- angr/procedures/definitions/win32_ksuser.py +1 -0
- angr/procedures/definitions/win32_ktmw32.py +1 -0
- angr/procedures/definitions/win32_licenseprotection.py +1 -0
- angr/procedures/definitions/win32_loadperf.py +1 -0
- angr/procedures/definitions/win32_magnification.py +1 -0
- angr/procedures/definitions/win32_mapi32.py +1 -0
- angr/procedures/definitions/win32_mdmlocalmanagement.py +1 -0
- angr/procedures/definitions/win32_mdmregistration.py +1 -0
- angr/procedures/definitions/win32_mf.py +1 -0
- angr/procedures/definitions/win32_mfcore.py +1 -0
- angr/procedures/definitions/win32_mfplat.py +1 -0
- angr/procedures/definitions/win32_mfplay.py +1 -0
- angr/procedures/definitions/win32_mfreadwrite.py +1 -0
- angr/procedures/definitions/win32_mfsensorgroup.py +1 -0
- angr/procedures/definitions/win32_mfsrcsnk.py +1 -0
- angr/procedures/definitions/win32_mgmtapi.py +1 -0
- angr/procedures/definitions/win32_mi.py +1 -0
- angr/procedures/definitions/win32_mmdevapi.py +1 -0
- angr/procedures/definitions/win32_mpr.py +1 -0
- angr/procedures/definitions/win32_mprapi.py +1 -0
- angr/procedures/definitions/win32_mqrt.py +1 -0
- angr/procedures/definitions/win32_mrmsupport.py +1 -0
- angr/procedures/definitions/win32_msacm32.py +1 -0
- angr/procedures/definitions/win32_msajapi.py +1 -0
- angr/procedures/definitions/win32_mscms.py +1 -0
- angr/procedures/definitions/win32_mscoree.py +1 -0
- angr/procedures/definitions/win32_msctfmonitor.py +1 -0
- angr/procedures/definitions/win32_msdelta.py +1 -0
- angr/procedures/definitions/win32_msdmo.py +1 -0
- angr/procedures/definitions/win32_msdrm.py +1 -0
- angr/procedures/definitions/win32_msi.py +1 -0
- angr/procedures/definitions/win32_msimg32.py +1 -0
- angr/procedures/definitions/win32_mspatcha.py +1 -0
- angr/procedures/definitions/win32_mspatchc.py +1 -0
- angr/procedures/definitions/win32_msports.py +1 -0
- angr/procedures/definitions/win32_msrating.py +1 -0
- angr/procedures/definitions/win32_mssign32.py +1 -0
- angr/procedures/definitions/win32_mstask.py +1 -0
- angr/procedures/definitions/win32_msvfw32.py +1 -0
- angr/procedures/definitions/win32_mswsock.py +1 -0
- angr/procedures/definitions/win32_mtxdm.py +1 -0
- angr/procedures/definitions/win32_ncrypt.py +1 -0
- angr/procedures/definitions/win32_ndfapi.py +1 -0
- angr/procedures/definitions/win32_netapi32.py +1 -0
- angr/procedures/definitions/win32_netsh.py +1 -0
- angr/procedures/definitions/win32_netshell.py +1 -0
- angr/procedures/definitions/win32_newdev.py +1 -0
- angr/procedures/definitions/win32_ninput.py +1 -0
- angr/procedures/definitions/win32_normaliz.py +1 -0
- angr/procedures/definitions/win32_ntdll.py +1 -0
- angr/procedures/definitions/win32_ntdllk.py +1 -0
- angr/procedures/definitions/win32_ntdsapi.py +1 -0
- angr/procedures/definitions/win32_ntlanman.py +1 -0
- angr/procedures/definitions/win32_odbc32.py +1 -0
- angr/procedures/definitions/win32_odbcbcp.py +1 -0
- angr/procedures/definitions/win32_ole32.py +1 -0
- angr/procedures/definitions/win32_oleacc.py +1 -0
- angr/procedures/definitions/win32_oleaut32.py +1 -0
- angr/procedures/definitions/win32_oledlg.py +1 -0
- angr/procedures/definitions/win32_ondemandconnroutehelper.py +1 -0
- angr/procedures/definitions/win32_opengl32.py +1 -0
- angr/procedures/definitions/win32_opmxbox.py +1 -0
- angr/procedures/definitions/win32_p2p.py +1 -0
- angr/procedures/definitions/win32_p2pgraph.py +1 -0
- angr/procedures/definitions/win32_pdh.py +1 -0
- angr/procedures/definitions/win32_peerdist.py +1 -0
- angr/procedures/definitions/win32_powrprof.py +1 -0
- angr/procedures/definitions/win32_prntvpt.py +1 -0
- angr/procedures/definitions/win32_projectedfslib.py +1 -0
- angr/procedures/definitions/win32_propsys.py +1 -0
- angr/procedures/definitions/win32_psapi.py +1 -0
- angr/procedures/definitions/win32_quartz.py +1 -0
- angr/procedures/definitions/win32_query.py +1 -0
- angr/procedures/definitions/win32_qwave.py +1 -0
- angr/procedures/definitions/win32_rasapi32.py +1 -0
- angr/procedures/definitions/win32_rasdlg.py +1 -0
- angr/procedures/definitions/win32_resutils.py +1 -0
- angr/procedures/definitions/win32_rometadata.py +1 -0
- angr/procedures/definitions/win32_rpcns4.py +1 -0
- angr/procedures/definitions/win32_rpcproxy.py +1 -0
- angr/procedures/definitions/win32_rpcrt4.py +1 -0
- angr/procedures/definitions/win32_rstrtmgr.py +1 -0
- angr/procedures/definitions/win32_rtm.py +1 -0
- angr/procedures/definitions/win32_rtutils.py +1 -0
- angr/procedures/definitions/win32_rtworkq.py +1 -0
- angr/procedures/definitions/win32_sas.py +1 -0
- angr/procedures/definitions/win32_scarddlg.py +1 -0
- angr/procedures/definitions/win32_schannel.py +1 -0
- angr/procedures/definitions/win32_sechost.py +1 -0
- angr/procedures/definitions/win32_secur32.py +1 -0
- angr/procedures/definitions/win32_sensapi.py +1 -0
- angr/procedures/definitions/win32_sensorsutilsv2.py +1 -0
- angr/procedures/definitions/win32_setupapi.py +1 -0
- angr/procedures/definitions/win32_sfc.py +1 -0
- angr/procedures/definitions/win32_shdocvw.py +1 -0
- angr/procedures/definitions/win32_shell32.py +1 -0
- angr/procedures/definitions/win32_shlwapi.py +1 -0
- angr/procedures/definitions/win32_slc.py +1 -0
- angr/procedures/definitions/win32_slcext.py +1 -0
- angr/procedures/definitions/win32_slwga.py +1 -0
- angr/procedures/definitions/win32_snmpapi.py +1 -0
- angr/procedures/definitions/win32_spoolss.py +1 -0
- angr/procedures/definitions/win32_srclient.py +1 -0
- angr/procedures/definitions/win32_srpapi.py +1 -0
- angr/procedures/definitions/win32_sspicli.py +1 -0
- angr/procedures/definitions/win32_sti.py +1 -0
- angr/procedures/definitions/win32_t2embed.py +1 -0
- angr/procedures/definitions/win32_tapi32.py +1 -0
- angr/procedures/definitions/win32_tbs.py +1 -0
- angr/procedures/definitions/win32_tdh.py +1 -0
- angr/procedures/definitions/win32_tokenbinding.py +1 -0
- angr/procedures/definitions/win32_traffic.py +1 -0
- angr/procedures/definitions/win32_txfw32.py +1 -0
- angr/procedures/definitions/win32_ualapi.py +1 -0
- angr/procedures/definitions/win32_uiautomationcore.py +1 -0
- angr/procedures/definitions/win32_urlmon.py +1 -0
- angr/procedures/definitions/win32_user32.py +1 -0
- angr/procedures/definitions/win32_userenv.py +1 -0
- angr/procedures/definitions/win32_usp10.py +1 -0
- angr/procedures/definitions/win32_uxtheme.py +1 -0
- angr/procedures/definitions/win32_verifier.py +1 -0
- angr/procedures/definitions/win32_version.py +1 -0
- angr/procedures/definitions/win32_vertdll.py +1 -0
- angr/procedures/definitions/win32_virtdisk.py +1 -0
- angr/procedures/definitions/win32_vmdevicehost.py +1 -0
- angr/procedures/definitions/win32_vmsavedstatedumpprovider.py +1 -0
- angr/procedures/definitions/win32_vssapi.py +1 -0
- angr/procedures/definitions/win32_wcmapi.py +1 -0
- angr/procedures/definitions/win32_wdsbp.py +1 -0
- angr/procedures/definitions/win32_wdsclientapi.py +1 -0
- angr/procedures/definitions/win32_wdsmc.py +1 -0
- angr/procedures/definitions/win32_wdspxe.py +1 -0
- angr/procedures/definitions/win32_wdstptc.py +1 -0
- angr/procedures/definitions/win32_webauthn.py +1 -0
- angr/procedures/definitions/win32_webservices.py +1 -0
- angr/procedures/definitions/win32_websocket.py +1 -0
- angr/procedures/definitions/win32_wecapi.py +1 -0
- angr/procedures/definitions/win32_wer.py +1 -0
- angr/procedures/definitions/win32_wevtapi.py +1 -0
- angr/procedures/definitions/win32_winbio.py +1 -0
- angr/procedures/definitions/win32_windows_ai_machinelearning.py +1 -0
- angr/procedures/definitions/win32_windows_data_pdf.py +1 -0
- angr/procedures/definitions/win32_windows_media_mediacontrol.py +1 -0
- angr/procedures/definitions/win32_windows_networking.py +1 -0
- angr/procedures/definitions/win32_windows_ui_xaml.py +1 -0
- angr/procedures/definitions/win32_windowscodecs.py +1 -0
- angr/procedures/definitions/win32_winfax.py +1 -0
- angr/procedures/definitions/win32_winhttp.py +1 -0
- angr/procedures/definitions/win32_winhvemulation.py +1 -0
- angr/procedures/definitions/win32_winhvplatform.py +1 -0
- angr/procedures/definitions/win32_wininet.py +1 -0
- angr/procedures/definitions/win32_winml.py +1 -0
- angr/procedures/definitions/win32_winmm.py +1 -0
- angr/procedures/definitions/win32_winscard.py +1 -0
- angr/procedures/definitions/win32_winspool.py +1 -0
- angr/procedures/definitions/win32_winspool_drv.py +1 -0
- angr/procedures/definitions/win32_wintrust.py +1 -0
- angr/procedures/definitions/win32_winusb.py +1 -0
- angr/procedures/definitions/win32_wlanapi.py +1 -0
- angr/procedures/definitions/win32_wlanui.py +1 -0
- angr/procedures/definitions/win32_wldap32.py +1 -0
- angr/procedures/definitions/win32_wldp.py +1 -0
- angr/procedures/definitions/win32_wmvcore.py +1 -0
- angr/procedures/definitions/win32_wnvapi.py +1 -0
- angr/procedures/definitions/win32_wofutil.py +1 -0
- angr/procedures/definitions/win32_ws2_32.py +1 -0
- angr/procedures/definitions/win32_wscapi.py +1 -0
- angr/procedures/definitions/win32_wsclient.py +1 -0
- angr/procedures/definitions/win32_wsdapi.py +1 -0
- angr/procedures/definitions/win32_wsmsvc.py +1 -0
- angr/procedures/definitions/win32_wsnmp32.py +1 -0
- angr/procedures/definitions/win32_wtsapi32.py +1 -0
- angr/procedures/definitions/win32_xaudio2_8.py +1 -0
- angr/procedures/definitions/win32_xinput1_4.py +1 -0
- angr/procedures/definitions/win32_xinputuap.py +1 -0
- angr/procedures/definitions/win32_xmllite.py +1 -0
- angr/procedures/definitions/win32_xolehlp.py +1 -0
- angr/procedures/definitions/win32_xpsprint.py +1 -0
- angr/procedures/glibc/__ctype_b_loc.py +2 -3
- angr/procedures/glibc/__ctype_tolower_loc.py +2 -3
- angr/procedures/glibc/__ctype_toupper_loc.py +2 -3
- angr/procedures/glibc/__errno_location.py +1 -0
- angr/procedures/glibc/__libc_init.py +1 -0
- angr/procedures/glibc/__libc_start_main.py +2 -3
- angr/procedures/glibc/dynamic_loading.py +1 -0
- angr/procedures/glibc/scanf.py +1 -0
- angr/procedures/glibc/sscanf.py +1 -0
- angr/procedures/gnulib/xalloc_die.py +1 -0
- angr/procedures/gnulib/xstrtol_fatal.py +1 -0
- angr/procedures/java/__init__.py +1 -0
- angr/procedures/java/unconstrained.py +4 -3
- angr/procedures/java_io/read.py +1 -0
- angr/procedures/java_io/write.py +1 -0
- angr/procedures/java_jni/__init__.py +25 -18
- angr/procedures/java_jni/array_operations.py +1 -0
- angr/procedures/java_jni/class_and_interface_operations.py +3 -3
- angr/procedures/java_jni/field_access.py +3 -6
- angr/procedures/java_jni/global_and_local_refs.py +1 -0
- angr/procedures/java_jni/method_calls.py +3 -2
- angr/procedures/java_jni/not_implemented.py +2 -1
- angr/procedures/java_jni/object_operations.py +3 -4
- angr/procedures/java_jni/string_operations.py +2 -1
- angr/procedures/java_jni/version_information.py +1 -0
- angr/procedures/java_lang/character.py +2 -3
- angr/procedures/java_lang/double.py +2 -2
- angr/procedures/java_lang/exit.py +1 -0
- angr/procedures/java_lang/getsimplename.py +2 -2
- angr/procedures/java_lang/integer.py +1 -0
- angr/procedures/java_lang/load_library.py +1 -0
- angr/procedures/java_lang/math.py +1 -0
- angr/procedures/java_lang/string.py +3 -3
- angr/procedures/java_lang/stringbuilder.py +1 -0
- angr/procedures/java_lang/system.py +1 -0
- angr/procedures/java_util/collection.py +1 -0
- angr/procedures/java_util/iterator.py +1 -0
- angr/procedures/java_util/list.py +1 -0
- angr/procedures/java_util/map.py +3 -4
- angr/procedures/java_util/random.py +1 -0
- angr/procedures/java_util/scanner_nextline.py +2 -1
- angr/procedures/libc/abort.py +1 -0
- angr/procedures/libc/access.py +1 -0
- angr/procedures/libc/atoi.py +2 -2
- angr/procedures/libc/atol.py +1 -0
- angr/procedures/libc/calloc.py +1 -0
- angr/procedures/libc/closelog.py +1 -0
- angr/procedures/libc/err.py +1 -0
- angr/procedures/libc/error.py +2 -3
- angr/procedures/libc/exit.py +1 -0
- angr/procedures/libc/fclose.py +2 -3
- angr/procedures/libc/feof.py +1 -0
- angr/procedures/libc/fflush.py +1 -0
- angr/procedures/libc/fgetc.py +1 -0
- angr/procedures/libc/fgets.py +19 -19
- angr/procedures/libc/fopen.py +6 -8
- angr/procedures/libc/fprintf.py +1 -0
- angr/procedures/libc/fputc.py +1 -0
- angr/procedures/libc/fputs.py +1 -0
- angr/procedures/libc/fread.py +1 -0
- angr/procedures/libc/free.py +1 -0
- angr/procedures/libc/fscanf.py +2 -2
- angr/procedures/libc/fseek.py +3 -2
- angr/procedures/libc/ftell.py +1 -0
- angr/procedures/libc/fwrite.py +1 -0
- angr/procedures/libc/getchar.py +2 -2
- angr/procedures/libc/getdelim.py +25 -25
- angr/procedures/libc/getegid.py +1 -0
- angr/procedures/libc/geteuid.py +1 -0
- angr/procedures/libc/getgid.py +1 -0
- angr/procedures/libc/gets.py +18 -18
- angr/procedures/libc/getuid.py +1 -0
- angr/procedures/libc/malloc.py +1 -0
- angr/procedures/libc/memcmp.py +3 -6
- angr/procedures/libc/memcpy.py +1 -0
- angr/procedures/libc/memset.py +1 -0
- angr/procedures/libc/openlog.py +1 -0
- angr/procedures/libc/perror.py +1 -0
- angr/procedures/libc/printf.py +1 -0
- angr/procedures/libc/putchar.py +1 -0
- angr/procedures/libc/puts.py +1 -0
- angr/procedures/libc/rand.py +1 -0
- angr/procedures/libc/realloc.py +1 -0
- angr/procedures/libc/rewind.py +2 -1
- angr/procedures/libc/scanf.py +2 -2
- angr/procedures/libc/setbuf.py +1 -0
- angr/procedures/libc/setvbuf.py +1 -0
- angr/procedures/libc/snprintf.py +1 -0
- angr/procedures/libc/sprintf.py +1 -0
- angr/procedures/libc/srand.py +1 -0
- angr/procedures/libc/sscanf.py +2 -2
- angr/procedures/libc/stpcpy.py +2 -2
- angr/procedures/libc/strcat.py +1 -0
- angr/procedures/libc/strchr.py +1 -0
- angr/procedures/libc/strcmp.py +1 -0
- angr/procedures/libc/strcpy.py +2 -2
- angr/procedures/libc/strlen.py +35 -31
- angr/procedures/libc/strncat.py +1 -0
- angr/procedures/libc/strncmp.py +9 -11
- angr/procedures/libc/strncpy.py +1 -0
- angr/procedures/libc/strnlen.py +2 -2
- angr/procedures/libc/strstr.py +8 -4
- angr/procedures/libc/strtol.py +9 -9
- angr/procedures/libc/strtoul.py +2 -2
- angr/procedures/libc/system.py +1 -0
- angr/procedures/libc/time.py +2 -2
- angr/procedures/libc/tmpnam.py +1 -0
- angr/procedures/libc/tolower.py +1 -0
- angr/procedures/libc/toupper.py +1 -0
- angr/procedures/libc/ungetc.py +1 -0
- angr/procedures/libc/vsnprintf.py +1 -0
- angr/procedures/libc/wchar.py +1 -0
- angr/procedures/libstdcpp/_unwind_resume.py +1 -0
- angr/procedures/libstdcpp/std____throw_bad_alloc.py +1 -0
- angr/procedures/libstdcpp/std____throw_bad_cast.py +1 -0
- angr/procedures/libstdcpp/std____throw_length_error.py +1 -0
- angr/procedures/libstdcpp/std____throw_logic_error.py +1 -0
- angr/procedures/libstdcpp/std__terminate.py +1 -0
- angr/procedures/linux_kernel/access.py +1 -0
- angr/procedures/linux_kernel/arch_prctl.py +1 -0
- angr/procedures/linux_kernel/arm_user_helpers.py +1 -0
- angr/procedures/linux_kernel/brk.py +1 -0
- angr/procedures/linux_kernel/cwd.py +1 -0
- angr/procedures/linux_kernel/fstat.py +2 -1
- angr/procedures/linux_kernel/fstat64.py +2 -1
- angr/procedures/linux_kernel/futex.py +3 -3
- angr/procedures/linux_kernel/getegid.py +1 -0
- angr/procedures/linux_kernel/geteuid.py +1 -0
- angr/procedures/linux_kernel/getgid.py +1 -0
- angr/procedures/linux_kernel/getpid.py +1 -0
- angr/procedures/linux_kernel/getrlimit.py +3 -3
- angr/procedures/linux_kernel/gettid.py +1 -0
- angr/procedures/linux_kernel/getuid.py +1 -0
- angr/procedures/linux_kernel/iovec.py +1 -0
- angr/procedures/linux_kernel/lseek.py +1 -0
- angr/procedures/linux_kernel/mmap.py +1 -0
- angr/procedures/linux_kernel/mprotect.py +7 -6
- angr/procedures/linux_kernel/munmap.py +1 -0
- angr/procedures/linux_kernel/openat.py +3 -5
- angr/procedures/linux_kernel/set_tid_address.py +1 -0
- angr/procedures/linux_kernel/sigaction.py +1 -0
- angr/procedures/linux_kernel/sigprocmask.py +1 -0
- angr/procedures/linux_kernel/stat.py +3 -2
- angr/procedures/linux_kernel/sysinfo.py +1 -0
- angr/procedures/linux_kernel/tgkill.py +1 -0
- angr/procedures/linux_kernel/time.py +2 -1
- angr/procedures/linux_kernel/uid.py +1 -0
- angr/procedures/linux_kernel/uname.py +1 -0
- angr/procedures/linux_kernel/unlink.py +2 -2
- angr/procedures/linux_kernel/vsyscall.py +2 -1
- angr/procedures/linux_loader/_dl_initial_error_catch_tsd.py +1 -0
- angr/procedures/linux_loader/_dl_rtld_lock.py +1 -0
- angr/procedures/linux_loader/sim_loader.py +1 -0
- angr/procedures/linux_loader/tls.py +2 -2
- angr/procedures/msvcr/__getmainargs.py +1 -0
- angr/procedures/msvcr/_initterm.py +1 -0
- angr/procedures/msvcr/fmode.py +1 -0
- angr/procedures/ntdll/exceptions.py +4 -3
- angr/procedures/posix/accept.py +2 -2
- angr/procedures/posix/bind.py +1 -0
- angr/procedures/posix/bzero.py +1 -0
- angr/procedures/posix/chroot.py +1 -0
- angr/procedures/posix/close.py +2 -2
- angr/procedures/posix/closedir.py +1 -0
- angr/procedures/posix/dup.py +4 -3
- angr/procedures/posix/fcntl.py +1 -0
- angr/procedures/posix/fdopen.py +16 -19
- angr/procedures/posix/fileno.py +1 -0
- angr/procedures/posix/fork.py +1 -0
- angr/procedures/posix/getenv.py +1 -0
- angr/procedures/posix/gethostbyname.py +1 -0
- angr/procedures/posix/getpass.py +1 -0
- angr/procedures/posix/getsockopt.py +1 -0
- angr/procedures/posix/htonl.py +2 -2
- angr/procedures/posix/htons.py +2 -2
- angr/procedures/posix/inet_ntoa.py +3 -5
- angr/procedures/posix/listen.py +1 -0
- angr/procedures/posix/mmap.py +2 -1
- angr/procedures/posix/open.py +1 -0
- angr/procedures/posix/opendir.py +1 -0
- angr/procedures/posix/poll.py +3 -3
- angr/procedures/posix/pread64.py +1 -0
- angr/procedures/posix/pthread.py +3 -3
- angr/procedures/posix/pwrite64.py +1 -0
- angr/procedures/posix/read.py +1 -0
- angr/procedures/posix/readdir.py +1 -1
- angr/procedures/posix/recv.py +1 -0
- angr/procedures/posix/recvfrom.py +1 -0
- angr/procedures/posix/select.py +7 -7
- angr/procedures/posix/send.py +2 -2
- angr/procedures/posix/setsockopt.py +1 -0
- angr/procedures/posix/sigaction.py +1 -0
- angr/procedures/posix/sim_time.py +1 -0
- angr/procedures/posix/sleep.py +1 -0
- angr/procedures/posix/socket.py +2 -2
- angr/procedures/posix/strcasecmp.py +1 -0
- angr/procedures/posix/strdup.py +1 -0
- angr/procedures/posix/strtok_r.py +32 -36
- angr/procedures/posix/syslog.py +1 -0
- angr/procedures/posix/tz.py +1 -0
- angr/procedures/posix/unlink.py +1 -0
- angr/procedures/posix/usleep.py +1 -0
- angr/procedures/posix/write.py +1 -0
- angr/procedures/procedure_dict.py +1 -0
- angr/procedures/stubs/CallReturn.py +1 -0
- angr/procedures/stubs/NoReturnUnconstrained.py +1 -0
- angr/procedures/stubs/Nop.py +1 -0
- angr/procedures/stubs/PathTerminator.py +1 -0
- angr/procedures/stubs/Redirect.py +3 -2
- angr/procedures/stubs/ReturnChar.py +1 -0
- angr/procedures/stubs/ReturnUnconstrained.py +2 -1
- angr/procedures/stubs/UnresolvableCallTarget.py +1 -0
- angr/procedures/stubs/UnresolvableJumpTarget.py +1 -0
- angr/procedures/stubs/UserHook.py +2 -1
- angr/procedures/stubs/b64_decode.py +1 -0
- angr/procedures/stubs/caller.py +1 -0
- angr/procedures/stubs/crazy_scanf.py +1 -0
- angr/procedures/stubs/format_parser.py +12 -16
- angr/procedures/stubs/syscall_stub.py +6 -7
- angr/procedures/testing/manyargs.py +1 -0
- angr/procedures/testing/retreg.py +2 -2
- angr/procedures/tracer/random.py +1 -0
- angr/procedures/tracer/receive.py +4 -4
- angr/procedures/tracer/transmit.py +4 -4
- angr/procedures/uclibc/__uClibc_main.py +1 -0
- angr/procedures/win32/EncodePointer.py +1 -0
- angr/procedures/win32/ExitProcess.py +1 -0
- angr/procedures/win32/GetCommandLine.py +1 -0
- angr/procedures/win32/GetCurrentProcessId.py +1 -0
- angr/procedures/win32/GetCurrentThreadId.py +1 -0
- angr/procedures/win32/GetLastInputInfo.py +1 -0
- angr/procedures/win32/GetModuleHandle.py +3 -4
- angr/procedures/win32/GetProcessAffinityMask.py +1 -0
- angr/procedures/win32/InterlockedExchange.py +2 -1
- angr/procedures/win32/IsProcessorFeaturePresent.py +1 -0
- angr/procedures/win32/VirtualAlloc.py +2 -1
- angr/procedures/win32/VirtualProtect.py +1 -0
- angr/procedures/win32/critical_section.py +1 -0
- angr/procedures/win32/dynamic_loading.py +2 -1
- angr/procedures/win32/file_handles.py +4 -4
- angr/procedures/win32/gethostbyname.py +2 -2
- angr/procedures/win32/heap.py +1 -0
- angr/procedures/win32/is_bad_ptr.py +1 -0
- angr/procedures/win32/local_storage.py +7 -6
- angr/procedures/win32/mutex.py +1 -0
- angr/procedures/win32/sim_time.py +7 -10
- angr/procedures/win32/system_paths.py +5 -4
- angr/procedures/win32_kernel/ExAllocatePool.py +1 -0
- angr/procedures/win32_kernel/ExFreePoolWithTag.py +1 -0
- angr/procedures/win_user32/chars.py +1 -0
- angr/procedures/win_user32/keyboard.py +1 -0
- angr/procedures/win_user32/messagebox.py +2 -4
- angr/project.py +15 -22
- angr/protos/__init__.py +1 -0
- angr/serializable.py +6 -3
- angr/sim_manager.py +18 -18
- angr/sim_options.py +5 -7
- angr/sim_procedure.py +16 -15
- angr/sim_state.py +61 -88
- angr/sim_state_options.py +9 -15
- angr/sim_type.py +135 -123
- angr/sim_variable.py +23 -38
- angr/simos/__init__.py +3 -1
- angr/simos/cgc.py +2 -1
- angr/simos/javavm.py +84 -95
- angr/simos/linux.py +54 -64
- angr/simos/simos.py +14 -23
- angr/simos/snimmuc_nxp.py +3 -6
- angr/simos/userland.py +6 -6
- angr/simos/windows.py +14 -11
- angr/slicer.py +13 -11
- angr/state_hierarchy.py +4 -4
- angr/state_plugins/__init__.py +1 -0
- angr/state_plugins/callstack.py +19 -18
- angr/state_plugins/cgc.py +5 -4
- angr/state_plugins/concrete.py +7 -8
- angr/state_plugins/debug_variables.py +15 -17
- angr/state_plugins/filesystem.py +13 -19
- angr/state_plugins/gdb.py +3 -2
- angr/state_plugins/globals.py +5 -1
- angr/state_plugins/heap/__init__.py +1 -0
- angr/state_plugins/heap/heap_base.py +1 -0
- angr/state_plugins/heap/heap_brk.py +9 -6
- angr/state_plugins/heap/heap_freelist.py +12 -9
- angr/state_plugins/heap/heap_libc.py +1 -0
- angr/state_plugins/heap/heap_ptmalloc.py +27 -36
- angr/state_plugins/heap/utils.py +1 -0
- angr/state_plugins/history.py +7 -10
- angr/state_plugins/inspect.py +1 -0
- angr/state_plugins/javavm_classloader.py +3 -2
- angr/state_plugins/jni_references.py +2 -1
- angr/state_plugins/libc.py +4 -4
- angr/state_plugins/light_registers.py +6 -8
- angr/state_plugins/log.py +1 -0
- angr/state_plugins/loop_data.py +1 -0
- angr/state_plugins/plugin.py +7 -8
- angr/state_plugins/posix.py +14 -22
- angr/state_plugins/preconstrainer.py +4 -3
- angr/state_plugins/scratch.py +6 -5
- angr/state_plugins/sim_action.py +15 -20
- angr/state_plugins/sim_action_object.py +205 -82
- angr/state_plugins/sim_event.py +1 -0
- angr/state_plugins/solver.py +65 -93
- angr/state_plugins/symbolizer.py +5 -6
- angr/state_plugins/trace_additions.py +32 -42
- angr/state_plugins/uc_manager.py +16 -9
- angr/state_plugins/unicorn_engine.py +21 -37
- angr/state_plugins/view.py +20 -19
- angr/storage/__init__.py +1 -0
- angr/storage/file.py +31 -33
- angr/storage/memory_mixins/__init__.py +12 -15
- angr/storage/memory_mixins/__init__.pyi +13 -14
- angr/storage/memory_mixins/actions_mixin.py +2 -1
- angr/storage/memory_mixins/address_concretization_mixin.py +11 -15
- angr/storage/memory_mixins/bvv_conversion_mixin.py +10 -11
- angr/storage/memory_mixins/clouseau_mixin.py +1 -0
- angr/storage/memory_mixins/conditional_store_mixin.py +1 -0
- angr/storage/memory_mixins/convenient_mappings_mixin.py +7 -8
- angr/storage/memory_mixins/default_filler_mixin.py +12 -14
- angr/storage/memory_mixins/dirty_addrs_mixin.py +1 -0
- angr/storage/memory_mixins/hex_dumper_mixin.py +6 -9
- angr/storage/memory_mixins/javavm_memory/__init__.py +1 -0
- angr/storage/memory_mixins/javavm_memory/javavm_memory_mixin.py +16 -23
- angr/storage/memory_mixins/keyvalue_memory/__init__.py +1 -0
- angr/storage/memory_mixins/keyvalue_memory/keyvalue_memory_mixin.py +2 -1
- angr/storage/memory_mixins/label_merger_mixin.py +2 -2
- angr/storage/memory_mixins/multi_value_merger_mixin.py +6 -5
- angr/storage/memory_mixins/name_resolution_mixin.py +12 -15
- angr/storage/memory_mixins/paged_memory/page_backer_mixins.py +6 -6
- angr/storage/memory_mixins/paged_memory/paged_memory_mixin.py +22 -36
- angr/storage/memory_mixins/paged_memory/paged_memory_multivalue_mixin.py +1 -0
- angr/storage/memory_mixins/paged_memory/pages/__init__.py +1 -2
- angr/storage/memory_mixins/paged_memory/pages/cooperation.py +4 -3
- angr/storage/memory_mixins/paged_memory/pages/history_tracking_mixin.py +4 -4
- angr/storage/memory_mixins/paged_memory/pages/ispo_mixin.py +1 -0
- angr/storage/memory_mixins/paged_memory/pages/list_page.py +12 -20
- angr/storage/memory_mixins/paged_memory/pages/multi_values.py +14 -19
- angr/storage/memory_mixins/paged_memory/pages/mv_list_page.py +26 -32
- angr/storage/memory_mixins/paged_memory/pages/permissions_mixin.py +1 -0
- angr/storage/memory_mixins/paged_memory/pages/refcount_mixin.py +2 -2
- angr/storage/memory_mixins/paged_memory/pages/ultra_page.py +38 -42
- angr/storage/memory_mixins/paged_memory/privileged_mixin.py +1 -0
- angr/storage/memory_mixins/paged_memory/stack_allocation_mixin.py +1 -0
- angr/storage/memory_mixins/regioned_memory/__init__.py +1 -0
- angr/storage/memory_mixins/regioned_memory/abstract_address_descriptor.py +5 -4
- angr/storage/memory_mixins/regioned_memory/abstract_merger_mixin.py +6 -21
- angr/storage/memory_mixins/regioned_memory/region_category_mixin.py +1 -0
- angr/storage/memory_mixins/regioned_memory/region_data.py +4 -5
- angr/storage/memory_mixins/regioned_memory/region_meta_mixin.py +129 -13
- angr/storage/memory_mixins/regioned_memory/regioned_address_concretization_mixin.py +2 -1
- angr/storage/memory_mixins/regioned_memory/regioned_memory_mixin.py +34 -44
- angr/storage/memory_mixins/regioned_memory/static_find_mixin.py +7 -9
- angr/storage/memory_mixins/simple_interface_mixin.py +8 -11
- angr/storage/memory_mixins/simplification_mixin.py +1 -0
- angr/storage/memory_mixins/size_resolution_mixin.py +5 -4
- angr/storage/memory_mixins/slotted_memory.py +3 -3
- angr/storage/memory_mixins/smart_find_mixin.py +3 -2
- angr/storage/memory_mixins/symbolic_merger_mixin.py +1 -0
- angr/storage/memory_mixins/top_merger_mixin.py +2 -2
- angr/storage/memory_mixins/underconstrained_mixin.py +12 -14
- angr/storage/memory_mixins/unwrapper_mixin.py +1 -0
- angr/storage/memory_object.py +35 -35
- angr/storage/pcap.py +3 -3
- angr/tablespecs.py +1 -0
- angr/utils/__init__.py +1 -0
- angr/utils/ail.py +30 -0
- angr/utils/algo.py +1 -0
- angr/utils/bits.py +12 -0
- angr/utils/constants.py +2 -0
- angr/utils/cowdict.py +3 -4
- angr/utils/dynamic_dictlist.py +4 -7
- angr/utils/endness.py +1 -0
- angr/utils/enums_conv.py +1 -0
- angr/utils/env.py +1 -0
- angr/utils/formatting.py +1 -0
- angr/utils/funcid.py +15 -14
- angr/utils/graph.py +52 -19
- angr/utils/lazy_import.py +1 -0
- angr/utils/library.py +10 -13
- angr/utils/loader.py +6 -6
- angr/utils/mp.py +4 -3
- angr/utils/orderedset.py +1 -0
- angr/utils/segment_list.py +7 -9
- angr/utils/ssa/__init__.py +198 -0
- angr/utils/ssa/tmp_uses_collector.py +23 -0
- angr/utils/ssa/vvar_uses_collector.py +37 -0
- angr/utils/timing.py +32 -20
- angr/utils/typing.py +1 -0
- angr/vaults.py +7 -8
- {angr-9.2.117.dist-info → angr-9.2.119.dist-info}/METADATA +9 -8
- angr-9.2.119.dist-info/RECORD +1345 -0
- {angr-9.2.117.dist-info → angr-9.2.119.dist-info}/WHEEL +1 -1
- angr/analyses/decompiler/optimization_passes/spilled_register_finder.py +0 -18
- angr/analyses/decompiler/seq_cf_structure_counter.py +0 -37
- angr/service.py +0 -35
- angr-9.2.117.dist-info/RECORD +0 -1310
- {angr-9.2.117.dist-info → angr-9.2.119.dist-info}/LICENSE +0 -0
- {angr-9.2.117.dist-info → angr-9.2.119.dist-info}/entry_points.txt +0 -0
- {angr-9.2.117.dist-info → angr-9.2.119.dist-info}/top_level.txt +0 -0
angr/sim_type.py
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import contextlib
|
|
5
6
|
from collections import OrderedDict, defaultdict, ChainMap
|
|
6
7
|
import copy
|
|
7
8
|
import re
|
|
@@ -135,8 +136,7 @@ class SimType:
|
|
|
135
136
|
return self
|
|
136
137
|
if self._arch is not None and self._arch == arch:
|
|
137
138
|
return self
|
|
138
|
-
|
|
139
|
-
return self._with_arch(arch)
|
|
139
|
+
return self._with_arch(arch)
|
|
140
140
|
|
|
141
141
|
def _with_arch(self, arch):
|
|
142
142
|
cp = copy.copy(self)
|
|
@@ -151,11 +151,10 @@ class SimType:
|
|
|
151
151
|
): # pylint: disable=unused-argument
|
|
152
152
|
if name is None:
|
|
153
153
|
return repr(self)
|
|
154
|
-
else
|
|
155
|
-
return f"{str(self) if self.label is None else self.label} {name}"
|
|
154
|
+
return f"{str(self) if self.label is None else self.label} {name}"
|
|
156
155
|
|
|
157
156
|
def copy(self):
|
|
158
|
-
raise NotImplementedError
|
|
157
|
+
raise NotImplementedError
|
|
159
158
|
|
|
160
159
|
def extract(self, state: SimState, addr, concrete: bool = False) -> Any:
|
|
161
160
|
raise NotImplementedError
|
|
@@ -227,10 +226,8 @@ class TypeRef(SimType):
|
|
|
227
226
|
if not full:
|
|
228
227
|
if name is not None:
|
|
229
228
|
return f"{self.name} {name}"
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
else:
|
|
233
|
-
return self.type.c_repr(name=name, full=full, memo=memo, indent=indent)
|
|
229
|
+
return self.name
|
|
230
|
+
return self.type.c_repr(name=name, full=full, memo=memo, indent=indent)
|
|
234
231
|
|
|
235
232
|
def copy(self):
|
|
236
233
|
raise NotImplementedError("copy() for TypeRef is ill-defined. What do you want this to do?")
|
|
@@ -279,11 +276,10 @@ class SimTypeBottom(SimType):
|
|
|
279
276
|
def c_repr(self, name=None, full=0, memo=None, indent=0):
|
|
280
277
|
if name is None:
|
|
281
278
|
return "int"
|
|
282
|
-
else
|
|
283
|
-
return f'{"int" if self.label is None else self.label} {name}'
|
|
279
|
+
return f'{"int" if self.label is None else self.label} {name}'
|
|
284
280
|
|
|
285
281
|
def _init_str(self):
|
|
286
|
-
return "{}({})".format(self.__class__.__name__, ('label="
|
|
282
|
+
return "{}({})".format(self.__class__.__name__, (f'label="{self.label}"') if self.label else "")
|
|
287
283
|
|
|
288
284
|
def copy(self):
|
|
289
285
|
return SimTypeBottom(self.label)
|
|
@@ -327,10 +323,8 @@ class SimTypeReg(SimType):
|
|
|
327
323
|
|
|
328
324
|
def store(self, state, addr, value: StoreType):
|
|
329
325
|
store_endness = state.arch.memory_endness
|
|
330
|
-
|
|
326
|
+
with contextlib.suppress(AttributeError):
|
|
331
327
|
value = value.ast # type: ignore
|
|
332
|
-
except AttributeError:
|
|
333
|
-
pass
|
|
334
328
|
if isinstance(value, claripy.ast.Bits): # pylint:disable=isinstance-second-argument-not-valid-type
|
|
335
329
|
if value.size() != self.size:
|
|
336
330
|
raise ValueError("size of expression is wrong size for type")
|
|
@@ -352,7 +346,7 @@ class SimTypeNum(SimType):
|
|
|
352
346
|
SimTypeNum is a numeric type of arbitrary length
|
|
353
347
|
"""
|
|
354
348
|
|
|
355
|
-
_fields = SimType._fields
|
|
349
|
+
_fields = (*SimType._fields, "signed", "size")
|
|
356
350
|
|
|
357
351
|
def __init__(self, size: int, signed=True, label=None):
|
|
358
352
|
"""
|
|
@@ -411,7 +405,7 @@ class SimTypeInt(SimTypeReg):
|
|
|
411
405
|
SimTypeInt is a type that specifies a signed or unsigned C integer.
|
|
412
406
|
"""
|
|
413
407
|
|
|
414
|
-
_fields = tuple(x for x in SimTypeReg._fields if x != "size")
|
|
408
|
+
_fields = (*tuple(x for x in SimTypeReg._fields if x != "size"), "signed")
|
|
415
409
|
_base_name = "int"
|
|
416
410
|
|
|
417
411
|
def __init__(self, signed=True, label=None):
|
|
@@ -468,7 +462,7 @@ class SimTypeInt(SimTypeReg):
|
|
|
468
462
|
return "{}(signed={}{})".format(
|
|
469
463
|
self.__class__.__name__,
|
|
470
464
|
self.signed,
|
|
471
|
-
(', label="
|
|
465
|
+
(f', label="{self.label}"') if self.label is not None else "",
|
|
472
466
|
)
|
|
473
467
|
|
|
474
468
|
def _refine_dir(self):
|
|
@@ -501,6 +495,48 @@ class SimTypeLongLong(SimTypeInt):
|
|
|
501
495
|
_base_name = "long long"
|
|
502
496
|
|
|
503
497
|
|
|
498
|
+
class SimTypeFixedSizeInt(SimTypeInt):
|
|
499
|
+
"""
|
|
500
|
+
The base class for all fixed-size (i.e., the size stays the same on all platforms) integer types. Do not
|
|
501
|
+
instantiate this class directly.
|
|
502
|
+
"""
|
|
503
|
+
|
|
504
|
+
_base_name: str = "int"
|
|
505
|
+
_fixed_size: int = 32
|
|
506
|
+
|
|
507
|
+
def c_repr(self, name=None, full=0, memo=None, indent=0):
|
|
508
|
+
out = self._base_name
|
|
509
|
+
if not self.signed:
|
|
510
|
+
out = "u" + out
|
|
511
|
+
if name is None:
|
|
512
|
+
return out
|
|
513
|
+
return f"{out} {name}"
|
|
514
|
+
|
|
515
|
+
def __repr__(self) -> str:
|
|
516
|
+
name = self._base_name
|
|
517
|
+
if not self.signed:
|
|
518
|
+
name = "u" + name
|
|
519
|
+
|
|
520
|
+
try:
|
|
521
|
+
return name + " (%d bits)" % self.size
|
|
522
|
+
except ValueError:
|
|
523
|
+
return name
|
|
524
|
+
|
|
525
|
+
@property
|
|
526
|
+
def size(self) -> int:
|
|
527
|
+
return self._fixed_size
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
class SimTypeInt128(SimTypeFixedSizeInt):
|
|
531
|
+
_base_name = "int128_t"
|
|
532
|
+
_fixed_size = 128
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
class SimTypeInt256(SimTypeFixedSizeInt):
|
|
536
|
+
_base_name = "int256_t"
|
|
537
|
+
_fixed_size = 256
|
|
538
|
+
|
|
539
|
+
|
|
504
540
|
class SimTypeChar(SimTypeReg):
|
|
505
541
|
"""
|
|
506
542
|
SimTypeChar is a type that specifies a character;
|
|
@@ -550,7 +586,7 @@ class SimTypeChar(SimTypeReg):
|
|
|
550
586
|
def _init_str(self):
|
|
551
587
|
return "{}({})".format(
|
|
552
588
|
self.__class__.__name__,
|
|
553
|
-
('label="
|
|
589
|
+
(f'label="{self.label}"') if self.label is not None else "",
|
|
554
590
|
)
|
|
555
591
|
|
|
556
592
|
def copy(self):
|
|
@@ -596,7 +632,7 @@ class SimTypeWideChar(SimTypeReg):
|
|
|
596
632
|
def _init_str(self):
|
|
597
633
|
return "{}({})".format(
|
|
598
634
|
self.__class__.__name__,
|
|
599
|
-
('label="
|
|
635
|
+
(f'label="{self.label}"') if self.label is not None else "",
|
|
600
636
|
)
|
|
601
637
|
|
|
602
638
|
def copy(self):
|
|
@@ -669,7 +705,7 @@ class SimTypeFd(SimTypeReg):
|
|
|
669
705
|
def _init_str(self):
|
|
670
706
|
return "{}({})".format(
|
|
671
707
|
self.__class__.__name__,
|
|
672
|
-
('label="
|
|
708
|
+
(f'label="{self.label}"') if self.label is not None else "",
|
|
673
709
|
)
|
|
674
710
|
|
|
675
711
|
@overload
|
|
@@ -693,7 +729,7 @@ class SimTypePointer(SimTypeReg):
|
|
|
693
729
|
SimTypePointer is a type that specifies a pointer to some other type.
|
|
694
730
|
"""
|
|
695
731
|
|
|
696
|
-
_fields = tuple(x for x in SimTypeReg._fields if x != "size")
|
|
732
|
+
_fields = (*tuple(x for x in SimTypeReg._fields if x != "size"), "pts_to")
|
|
697
733
|
|
|
698
734
|
def __init__(self, pts_to, label=None, offset=0):
|
|
699
735
|
"""
|
|
@@ -740,7 +776,7 @@ class SimTypePointer(SimTypeReg):
|
|
|
740
776
|
return "%s(%s%s, offset=%d)" % (
|
|
741
777
|
self.__class__.__name__,
|
|
742
778
|
self.pts_to._init_str(),
|
|
743
|
-
(', label="
|
|
779
|
+
(f', label="{self.label}"') if self.label is not None else "",
|
|
744
780
|
self.offset,
|
|
745
781
|
)
|
|
746
782
|
|
|
@@ -776,7 +812,7 @@ class SimTypeReference(SimTypeReg):
|
|
|
776
812
|
return f"{self.refs}&"
|
|
777
813
|
|
|
778
814
|
def c_repr(self, name=None, full=0, memo=None, indent=0):
|
|
779
|
-
name = "&" if name is None else "
|
|
815
|
+
name = "&" if name is None else f"&{name}"
|
|
780
816
|
return self.refs.c_repr(name, full, memo, indent)
|
|
781
817
|
|
|
782
818
|
def make(self, refs):
|
|
@@ -799,7 +835,7 @@ class SimTypeReference(SimTypeReg):
|
|
|
799
835
|
return "{}({}{})".format(
|
|
800
836
|
self.__class__.__name__,
|
|
801
837
|
self.refs._init_str(),
|
|
802
|
-
(', label="
|
|
838
|
+
(f', label="{self.label}"') if self.label is not None else "",
|
|
803
839
|
)
|
|
804
840
|
|
|
805
841
|
def copy(self):
|
|
@@ -916,7 +952,7 @@ class SimTypeString(NamedTypeMixin, SimType):
|
|
|
916
952
|
i.e. a NUL-terminated array of bytes.
|
|
917
953
|
"""
|
|
918
954
|
|
|
919
|
-
_fields = SimTypeArray._fields
|
|
955
|
+
_fields = (*SimTypeArray._fields, "length")
|
|
920
956
|
|
|
921
957
|
def __init__(self, length: int | None = None, label=None, name: str | None = None):
|
|
922
958
|
"""
|
|
@@ -949,7 +985,7 @@ class SimTypeString(NamedTypeMixin, SimType):
|
|
|
949
985
|
last_byte = state.memory.load(addr, size=1)
|
|
950
986
|
# if we try to extract a symbolic string, it's likely that we are going to be trapped in a very large loop.
|
|
951
987
|
if state.solver.symbolic(last_byte):
|
|
952
|
-
raise ValueError("Trying to extract a symbolic string at
|
|
988
|
+
raise ValueError(f"Trying to extract a symbolic string at {state.solver.eval(addr):#x}")
|
|
953
989
|
addr += 1
|
|
954
990
|
while not (claripy.is_true(last_byte == 0) or state.solver.symbolic(last_byte)):
|
|
955
991
|
out = last_byte if out is None else out.concat(last_byte)
|
|
@@ -959,8 +995,7 @@ class SimTypeString(NamedTypeMixin, SimType):
|
|
|
959
995
|
out = state.memory.load(addr, size=self.length)
|
|
960
996
|
if not concrete:
|
|
961
997
|
return out if out is not None else claripy.BVV(0, 0)
|
|
962
|
-
else
|
|
963
|
-
return state.solver.eval(out, cast_to=bytes) if out is not None else b""
|
|
998
|
+
return state.solver.eval(out, cast_to=bytes) if out is not None else b""
|
|
964
999
|
|
|
965
1000
|
_can_refine_int = True
|
|
966
1001
|
|
|
@@ -997,7 +1032,7 @@ class SimTypeWString(NamedTypeMixin, SimType):
|
|
|
997
1032
|
A wide-character null-terminated string, where each character is 2 bytes.
|
|
998
1033
|
"""
|
|
999
1034
|
|
|
1000
|
-
_fields = SimTypeArray._fields
|
|
1035
|
+
_fields = (*SimTypeArray._fields, "length")
|
|
1001
1036
|
|
|
1002
1037
|
def __init__(self, length: int | None = None, label=None, name: str | None = None):
|
|
1003
1038
|
super().__init__(label=label, name=name)
|
|
@@ -1020,7 +1055,7 @@ class SimTypeWString(NamedTypeMixin, SimType):
|
|
|
1020
1055
|
last_byte = state.memory.load(addr, 2)
|
|
1021
1056
|
# if we try to extract a symbolic string, it's likely that we are going to be trapped in a very large loop.
|
|
1022
1057
|
if state.solver.symbolic(last_byte):
|
|
1023
|
-
raise ValueError("Trying to extract a symbolic string at
|
|
1058
|
+
raise ValueError(f"Trying to extract a symbolic string at {state.solver.eval(addr):#x}")
|
|
1024
1059
|
addr += 2
|
|
1025
1060
|
while not (claripy.is_true(last_byte == 0) or state.solver.symbolic(last_byte)):
|
|
1026
1061
|
out = last_byte if out is None else out.concat(last_byte)
|
|
@@ -1032,11 +1067,9 @@ class SimTypeWString(NamedTypeMixin, SimType):
|
|
|
1032
1067
|
out = claripy.BVV(0, 0)
|
|
1033
1068
|
if not concrete:
|
|
1034
1069
|
return out
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
for x in out.chop(16)
|
|
1039
|
-
)
|
|
1070
|
+
return "".join(
|
|
1071
|
+
chr(state.solver.eval(x.reversed if state.arch.memory_endness == "Iend_LE" else x)) for x in out.chop(16)
|
|
1072
|
+
)
|
|
1040
1073
|
|
|
1041
1074
|
def store(self, state, addr, value):
|
|
1042
1075
|
raise NotImplementedError
|
|
@@ -1116,10 +1149,7 @@ class SimTypeFunction(SimType):
|
|
|
1116
1149
|
]
|
|
1117
1150
|
if self.variadic:
|
|
1118
1151
|
formatted_args.append("...")
|
|
1119
|
-
if name_parens
|
|
1120
|
-
name_str = f"({name or ''})"
|
|
1121
|
-
else:
|
|
1122
|
-
name_str = name or ""
|
|
1152
|
+
name_str = f"({name or ''})" if name_parens else name or ""
|
|
1123
1153
|
proto = f"{name_str}({', '.join(formatted_args)})"
|
|
1124
1154
|
return f"void {proto}" if self.returnty is None else self.returnty.c_repr(proto, full, memo, indent)
|
|
1125
1155
|
|
|
@@ -1142,15 +1172,15 @@ class SimTypeFunction(SimType):
|
|
|
1142
1172
|
argnames = list(self.arg_names)
|
|
1143
1173
|
if self.variadic and show_variadic:
|
|
1144
1174
|
argnames.append("...")
|
|
1145
|
-
return ", ".join('"
|
|
1175
|
+
return ", ".join(f'"{arg_name}"' for arg_name in argnames)
|
|
1146
1176
|
|
|
1147
1177
|
def _init_str(self):
|
|
1148
1178
|
return "{}([{}], {}{}{}{})".format(
|
|
1149
1179
|
self.__class__.__name__,
|
|
1150
1180
|
", ".join([arg._init_str() for arg in self.args]),
|
|
1151
1181
|
self.returnty._init_str() if self.returnty else "void",
|
|
1152
|
-
(', label="
|
|
1153
|
-
(", arg_names=[
|
|
1182
|
+
(f', label="{self.label}"') if self.label else "",
|
|
1183
|
+
(f", arg_names=[{self._arg_names_str(show_variadic=False)}]") if self.arg_names else "",
|
|
1154
1184
|
", variadic=True" if self.variadic else "",
|
|
1155
1185
|
)
|
|
1156
1186
|
|
|
@@ -1193,8 +1223,8 @@ class SimTypeCppFunction(SimTypeFunction):
|
|
|
1193
1223
|
self.__class__.__name__,
|
|
1194
1224
|
", ".join([arg._init_str() for arg in self.args]),
|
|
1195
1225
|
self.returnty,
|
|
1196
|
-
(", label
|
|
1197
|
-
(", arg_names=[
|
|
1226
|
+
(f", label={self.label}") if self.label else "",
|
|
1227
|
+
(f", arg_names=[{self._arg_names_str(show_variadic=False)}]") if self.arg_names else "",
|
|
1198
1228
|
", variadic=True" if self.variadic else "",
|
|
1199
1229
|
)
|
|
1200
1230
|
|
|
@@ -1216,7 +1246,7 @@ class SimTypeLength(SimTypeLong):
|
|
|
1216
1246
|
...I'm not really sure what the original design of this class was going for
|
|
1217
1247
|
"""
|
|
1218
1248
|
|
|
1219
|
-
_fields =
|
|
1249
|
+
_fields = (*(x for x in SimTypeReg._fields if x != "size"), "addr", "length") # ?
|
|
1220
1250
|
|
|
1221
1251
|
def __init__(self, signed=False, addr=None, length=None, label=None):
|
|
1222
1252
|
"""
|
|
@@ -1394,7 +1424,7 @@ class SimStruct(NamedTypeMixin, SimType):
|
|
|
1394
1424
|
return out
|
|
1395
1425
|
|
|
1396
1426
|
def __repr__(self):
|
|
1397
|
-
return "struct
|
|
1427
|
+
return f"struct {self.name}"
|
|
1398
1428
|
|
|
1399
1429
|
def c_repr(self, name=None, full=0, memo=None, indent=0):
|
|
1400
1430
|
if not full or (memo is not None and self in memo):
|
|
@@ -1424,10 +1454,9 @@ class SimStruct(NamedTypeMixin, SimType):
|
|
|
1424
1454
|
last_type = self.fields[last_name]
|
|
1425
1455
|
if isinstance(last_type, SimTypeNumOffset):
|
|
1426
1456
|
return last_off * self._arch.byte_width + (last_type.size + last_type.offset)
|
|
1427
|
-
|
|
1457
|
+
if last_type.size is None:
|
|
1428
1458
|
raise AngrTypeError("Cannot compute the size of a struct with elements with no size")
|
|
1429
|
-
|
|
1430
|
-
return last_off * self._arch.byte_width + last_type.size
|
|
1459
|
+
return last_off * self._arch.byte_width + last_type.size
|
|
1431
1460
|
|
|
1432
1461
|
@property
|
|
1433
1462
|
def alignment(self):
|
|
@@ -1451,7 +1480,7 @@ class SimStruct(NamedTypeMixin, SimType):
|
|
|
1451
1480
|
elif type(value) is SimStructValue:
|
|
1452
1481
|
value = value._values
|
|
1453
1482
|
else:
|
|
1454
|
-
raise TypeError("Can't store struct of type
|
|
1483
|
+
raise TypeError(f"Can't store struct of type {type(value)}")
|
|
1455
1484
|
|
|
1456
1485
|
if len(value) != len(self.fields):
|
|
1457
1486
|
raise ValueError("Passed bad values for %s; expected %d, got %d" % (self, len(self.offsets), len(value)))
|
|
@@ -1533,7 +1562,7 @@ class SimStructValue:
|
|
|
1533
1562
|
for name in self._struct.fields:
|
|
1534
1563
|
value = self._values[name]
|
|
1535
1564
|
try:
|
|
1536
|
-
f =
|
|
1565
|
+
f = value.__indented_repr__
|
|
1537
1566
|
s = f(indent=indent + 2)
|
|
1538
1567
|
except AttributeError:
|
|
1539
1568
|
s = repr(value)
|
|
@@ -1608,7 +1637,7 @@ class SimUnion(NamedTypeMixin, SimType):
|
|
|
1608
1637
|
# use the str instead of repr of each member to avoid exceed recursion
|
|
1609
1638
|
# depth when representing self-referential unions
|
|
1610
1639
|
return "union {} {{\n\t{}\n}}".format(
|
|
1611
|
-
self.name, "\n\t".join(f"{name} {
|
|
1640
|
+
self.name, "\n\t".join(f"{name} {ty!s};" for name, ty in self.members.items())
|
|
1612
1641
|
)
|
|
1613
1642
|
|
|
1614
1643
|
def c_repr(self, name=None, full=0, memo=None, indent=0):
|
|
@@ -1666,7 +1695,7 @@ class SimUnionValue:
|
|
|
1666
1695
|
fields = []
|
|
1667
1696
|
for name, value in self._values.items():
|
|
1668
1697
|
try:
|
|
1669
|
-
f =
|
|
1698
|
+
f = value.__indented_repr__
|
|
1670
1699
|
s = f(indent=indent + 2)
|
|
1671
1700
|
except AttributeError:
|
|
1672
1701
|
s = repr(value)
|
|
@@ -1710,7 +1739,7 @@ class SimCppClass(SimStruct):
|
|
|
1710
1739
|
return self.fields
|
|
1711
1740
|
|
|
1712
1741
|
def __repr__(self):
|
|
1713
|
-
return "class
|
|
1742
|
+
return f"class {self.name}"
|
|
1714
1743
|
|
|
1715
1744
|
def extract(self, state, addr, concrete=False) -> SimCppClassValue:
|
|
1716
1745
|
values = {}
|
|
@@ -1730,7 +1759,7 @@ class SimCppClass(SimStruct):
|
|
|
1730
1759
|
elif type(value) is SimCppClassValue:
|
|
1731
1760
|
value = value._values
|
|
1732
1761
|
else:
|
|
1733
|
-
raise TypeError("Can't store struct of type
|
|
1762
|
+
raise TypeError(f"Can't store struct of type {type(value)}")
|
|
1734
1763
|
|
|
1735
1764
|
if len(value) != len(self.fields):
|
|
1736
1765
|
raise ValueError("Passed bad values for %s; expected %d, got %d" % (self, len(self.offsets), len(value)))
|
|
@@ -1764,7 +1793,7 @@ class SimCppClassValue(SimStructValue):
|
|
|
1764
1793
|
for name in self._class.fields:
|
|
1765
1794
|
value = self._values[name]
|
|
1766
1795
|
try:
|
|
1767
|
-
f =
|
|
1796
|
+
f = value.__indented_repr__
|
|
1768
1797
|
s = f(indent=indent + 2)
|
|
1769
1798
|
except AttributeError:
|
|
1770
1799
|
s = repr(value)
|
|
@@ -1801,7 +1830,7 @@ class SimTypeNumOffset(SimTypeNum):
|
|
|
1801
1830
|
like SimTypeNum, but supports an offset of 1 to 7 to a byte aligned address to allow structs with bitfields
|
|
1802
1831
|
"""
|
|
1803
1832
|
|
|
1804
|
-
_fields = SimTypeNum._fields
|
|
1833
|
+
_fields = (*SimTypeNum._fields, "offset")
|
|
1805
1834
|
|
|
1806
1835
|
def __init__(self, size, signed=True, label=None, offset=0):
|
|
1807
1836
|
super().__init__(size, signed, label)
|
|
@@ -1830,7 +1859,7 @@ class SimTypeNumOffset(SimTypeNum):
|
|
|
1830
1859
|
return n
|
|
1831
1860
|
|
|
1832
1861
|
def store(self, state, addr, value):
|
|
1833
|
-
raise NotImplementedError
|
|
1862
|
+
raise NotImplementedError
|
|
1834
1863
|
|
|
1835
1864
|
def copy(self):
|
|
1836
1865
|
return SimTypeNumOffset(self.size, signed=self.signed, label=self.label, offset=self.offset)
|
|
@@ -3073,16 +3102,15 @@ _type_parser_singleton = None
|
|
|
3073
3102
|
|
|
3074
3103
|
def type_parser_singleton() -> pycparser.CParser:
|
|
3075
3104
|
global _type_parser_singleton # pylint:disable=global-statement
|
|
3076
|
-
if pycparser is not None:
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
_type_parser_singleton
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
)
|
|
3105
|
+
if pycparser is not None and _type_parser_singleton is None:
|
|
3106
|
+
_type_parser_singleton = pycparser.CParser()
|
|
3107
|
+
_type_parser_singleton.cparser = pycparser.ply.yacc.yacc(
|
|
3108
|
+
module=_type_parser_singleton,
|
|
3109
|
+
start="parameter_declaration",
|
|
3110
|
+
debug=False,
|
|
3111
|
+
optimize=False,
|
|
3112
|
+
errorlog=errorlog,
|
|
3113
|
+
)
|
|
3086
3114
|
return _type_parser_singleton
|
|
3087
3115
|
|
|
3088
3116
|
|
|
@@ -3132,7 +3160,7 @@ def _accepts_scope_stack():
|
|
|
3132
3160
|
self._last_yielded_token = None
|
|
3133
3161
|
return self.cparser.parse(input=text, lexer=self.clex, debug=debug)
|
|
3134
3162
|
|
|
3135
|
-
|
|
3163
|
+
pycparser.CParser.parse = parse
|
|
3136
3164
|
|
|
3137
3165
|
|
|
3138
3166
|
def _decl_to_type(
|
|
@@ -3186,20 +3214,20 @@ def _decl_to_type(
|
|
|
3186
3214
|
r._arch = arch
|
|
3187
3215
|
return r
|
|
3188
3216
|
|
|
3189
|
-
|
|
3217
|
+
if isinstance(decl, pycparser.c_ast.TypeDecl):
|
|
3190
3218
|
if decl.declname == "TOP":
|
|
3191
3219
|
r = SimTypeTop()
|
|
3192
3220
|
r._arch = arch
|
|
3193
3221
|
return r
|
|
3194
3222
|
return _decl_to_type(decl.type, extra_types, bitsize=bitsize, arch=arch)
|
|
3195
3223
|
|
|
3196
|
-
|
|
3224
|
+
if isinstance(decl, pycparser.c_ast.PtrDecl):
|
|
3197
3225
|
pts_to = _decl_to_type(decl.type, extra_types, arch=arch)
|
|
3198
3226
|
r = SimTypePointer(pts_to)
|
|
3199
3227
|
r._arch = arch
|
|
3200
3228
|
return r
|
|
3201
3229
|
|
|
3202
|
-
|
|
3230
|
+
if isinstance(decl, pycparser.c_ast.ArrayDecl):
|
|
3203
3231
|
elem_type = _decl_to_type(decl.type, extra_types, arch=arch)
|
|
3204
3232
|
|
|
3205
3233
|
if decl.dim is None:
|
|
@@ -3215,7 +3243,7 @@ def _decl_to_type(
|
|
|
3215
3243
|
r._arch = arch
|
|
3216
3244
|
return r
|
|
3217
3245
|
|
|
3218
|
-
|
|
3246
|
+
if isinstance(decl, pycparser.c_ast.Struct):
|
|
3219
3247
|
if decl.decls is not None:
|
|
3220
3248
|
fields = OrderedDict(
|
|
3221
3249
|
(field.name, _decl_to_type(field.type, extra_types, bitsize=field.bitsize, arch=arch))
|
|
@@ -3229,7 +3257,7 @@ def _decl_to_type(
|
|
|
3229
3257
|
struct = extra_types.get(key, None)
|
|
3230
3258
|
from_global = False
|
|
3231
3259
|
if struct is None:
|
|
3232
|
-
struct = ALL_TYPES.get(key
|
|
3260
|
+
struct = ALL_TYPES.get(key)
|
|
3233
3261
|
if struct is not None:
|
|
3234
3262
|
from_global = True
|
|
3235
3263
|
struct = struct.with_arch(arch)
|
|
@@ -3254,7 +3282,7 @@ def _decl_to_type(
|
|
|
3254
3282
|
struct._arch = arch
|
|
3255
3283
|
return struct
|
|
3256
3284
|
|
|
3257
|
-
|
|
3285
|
+
if isinstance(decl, pycparser.c_ast.Union):
|
|
3258
3286
|
if decl.decls is not None:
|
|
3259
3287
|
fields = {field.name: _decl_to_type(field.type, extra_types, arch=arch) for field in decl.decls}
|
|
3260
3288
|
else:
|
|
@@ -3264,10 +3292,9 @@ def _decl_to_type(
|
|
|
3264
3292
|
key = "union " + decl.name
|
|
3265
3293
|
union = extra_types.get(key, None)
|
|
3266
3294
|
from_global = False
|
|
3267
|
-
if union is None:
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
from_global = True
|
|
3295
|
+
if union is None and key in ALL_TYPES:
|
|
3296
|
+
union = ALL_TYPES[key]
|
|
3297
|
+
from_global = True
|
|
3271
3298
|
if union is not None and not isinstance(union, SimUnion):
|
|
3272
3299
|
raise AngrTypeError("Provided a non-SimUnion value for a type that must be a union")
|
|
3273
3300
|
|
|
@@ -3289,18 +3316,17 @@ def _decl_to_type(
|
|
|
3289
3316
|
union._arch = arch
|
|
3290
3317
|
return union
|
|
3291
3318
|
|
|
3292
|
-
|
|
3319
|
+
if isinstance(decl, pycparser.c_ast.IdentifierType):
|
|
3293
3320
|
key = " ".join(decl.names)
|
|
3294
3321
|
if bitsize is not None:
|
|
3295
3322
|
return SimTypeNumOffset(int(bitsize.value), signed=False)
|
|
3296
|
-
|
|
3323
|
+
if key in extra_types:
|
|
3297
3324
|
return extra_types[key]
|
|
3298
|
-
|
|
3325
|
+
if key in ALL_TYPES:
|
|
3299
3326
|
return ALL_TYPES[key].with_arch(arch)
|
|
3300
|
-
|
|
3301
|
-
raise TypeError("Unknown type '%s'" % key)
|
|
3327
|
+
raise TypeError(f"Unknown type '{key}'")
|
|
3302
3328
|
|
|
3303
|
-
|
|
3329
|
+
if isinstance(decl, pycparser.c_ast.Enum):
|
|
3304
3330
|
# See C99 at 6.7.2.2
|
|
3305
3331
|
return ALL_TYPES["int"].with_arch(arch)
|
|
3306
3332
|
|
|
@@ -3310,7 +3336,7 @@ def _decl_to_type(
|
|
|
3310
3336
|
def _parse_const(c, arch=None, extra_types=None):
|
|
3311
3337
|
if type(c) is pycparser.c_ast.Constant:
|
|
3312
3338
|
return int(c.value, base=0)
|
|
3313
|
-
|
|
3339
|
+
if type(c) is pycparser.c_ast.BinaryOp:
|
|
3314
3340
|
if c.op == "+":
|
|
3315
3341
|
return _parse_const(c.children()[0][1], arch, extra_types) + _parse_const(
|
|
3316
3342
|
c.children()[1][1], arch, extra_types
|
|
@@ -3335,16 +3361,14 @@ def _parse_const(c, arch=None, extra_types=None):
|
|
|
3335
3361
|
return _parse_const(c.children()[0][1], arch, extra_types) >> _parse_const(
|
|
3336
3362
|
c.children()[1][1], arch, extra_types
|
|
3337
3363
|
)
|
|
3338
|
-
raise ValueError("Binary op
|
|
3339
|
-
|
|
3364
|
+
raise ValueError(f"Binary op {c.op}")
|
|
3365
|
+
if type(c) is pycparser.c_ast.UnaryOp:
|
|
3340
3366
|
if c.op == "sizeof":
|
|
3341
3367
|
return _decl_to_type(c.expr.type, extra_types=extra_types, arch=arch).size
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
elif type(c) is pycparser.c_ast.Cast:
|
|
3368
|
+
raise ValueError(f"Unary op {c.op}")
|
|
3369
|
+
if type(c) is pycparser.c_ast.Cast:
|
|
3345
3370
|
return _parse_const(c.expr, arch, extra_types)
|
|
3346
|
-
|
|
3347
|
-
raise ValueError(c)
|
|
3371
|
+
raise ValueError(c)
|
|
3348
3372
|
|
|
3349
3373
|
|
|
3350
3374
|
def _cpp_decl_to_type(decl: Any, extra_types: dict[str, SimType], opaque_classes=True):
|
|
@@ -3353,11 +3377,7 @@ def _cpp_decl_to_type(decl: Any, extra_types: dict[str, SimType], opaque_classes
|
|
|
3353
3377
|
if isinstance(decl, CppHeaderParser.CppMethod):
|
|
3354
3378
|
the_func = decl
|
|
3355
3379
|
func_name = the_func["name"]
|
|
3356
|
-
if "__deleting_dtor__" in func_name:
|
|
3357
|
-
the_func["destructor"] = True
|
|
3358
|
-
elif "__base_dtor__" in func_name:
|
|
3359
|
-
the_func["destructor"] = True
|
|
3360
|
-
elif "__dtor__" in func_name:
|
|
3380
|
+
if "__deleting_dtor__" in func_name or "__base_dtor__" in func_name or "__dtor__" in func_name:
|
|
3361
3381
|
the_func["destructor"] = True
|
|
3362
3382
|
# translate parameters
|
|
3363
3383
|
args = []
|
|
@@ -3378,33 +3398,27 @@ def _cpp_decl_to_type(decl: Any, extra_types: dict[str, SimType], opaque_classes
|
|
|
3378
3398
|
# other properties
|
|
3379
3399
|
ctor = the_func["constructor"]
|
|
3380
3400
|
dtor = the_func["destructor"]
|
|
3381
|
-
|
|
3382
|
-
return func
|
|
3401
|
+
return SimTypeCppFunction(args, returnty, arg_names=arg_names_tuple, ctor=ctor, dtor=dtor)
|
|
3383
3402
|
|
|
3384
|
-
|
|
3403
|
+
if isinstance(decl, str):
|
|
3385
3404
|
# a string that represents type
|
|
3386
3405
|
if decl.endswith("&"):
|
|
3387
3406
|
# reference
|
|
3388
3407
|
subdecl = decl.rstrip("&").strip()
|
|
3389
3408
|
subt = _cpp_decl_to_type(subdecl, extra_types, opaque_classes=opaque_classes)
|
|
3390
|
-
|
|
3391
|
-
return t
|
|
3409
|
+
return SimTypeReference(subt)
|
|
3392
3410
|
|
|
3393
3411
|
if decl.endswith("*"):
|
|
3394
3412
|
# pointer
|
|
3395
3413
|
subdecl = decl.rstrip("*").strip()
|
|
3396
3414
|
subt = _cpp_decl_to_type(subdecl, extra_types, opaque_classes=opaque_classes)
|
|
3397
|
-
|
|
3398
|
-
return t
|
|
3415
|
+
return SimTypePointer(subt)
|
|
3399
3416
|
|
|
3400
3417
|
if decl.endswith(" const"):
|
|
3401
3418
|
# drop const
|
|
3402
3419
|
return _cpp_decl_to_type(decl[:-6].strip(), extra_types, opaque_classes=opaque_classes)
|
|
3403
3420
|
|
|
3404
|
-
if "::" in decl
|
|
3405
|
-
unqualified_name = decl.split("::")[-1]
|
|
3406
|
-
else:
|
|
3407
|
-
unqualified_name = decl
|
|
3421
|
+
unqualified_name = decl.split("::")[-1] if "::" in decl else decl
|
|
3408
3422
|
|
|
3409
3423
|
key = unqualified_name
|
|
3410
3424
|
if key in extra_types:
|
|
@@ -3415,14 +3429,14 @@ def _cpp_decl_to_type(decl: Any, extra_types: dict[str, SimType], opaque_classes
|
|
|
3415
3429
|
# create a class without knowing the internal members
|
|
3416
3430
|
t = SimCppClass({}, name=decl)
|
|
3417
3431
|
else:
|
|
3418
|
-
raise TypeError("Unknown type '
|
|
3432
|
+
raise TypeError("Unknown type '{}'".format(" ".join(key)))
|
|
3419
3433
|
|
|
3420
3434
|
if unqualified_name != decl and isinstance(t, NamedTypeMixin):
|
|
3421
3435
|
t = t.copy()
|
|
3422
3436
|
t.name = decl # pylint:disable=attribute-defined-outside-init
|
|
3423
3437
|
return t
|
|
3424
3438
|
|
|
3425
|
-
raise NotImplementedError
|
|
3439
|
+
raise NotImplementedError
|
|
3426
3440
|
|
|
3427
3441
|
|
|
3428
3442
|
def normalize_cpp_function_name(name: str) -> str:
|
|
@@ -3467,11 +3481,10 @@ def parse_cpp_file(cpp_decl, with_param_names: bool = False):
|
|
|
3467
3481
|
|
|
3468
3482
|
# the last parameter
|
|
3469
3483
|
idx = s.find(")", last_pos)
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
s = s[:idx] + " " + arg_name + s[idx:]
|
|
3484
|
+
# TODO: consider the case where there are one or multiple spaces between ( and )
|
|
3485
|
+
if idx != -1 and s[idx - 1] != "(":
|
|
3486
|
+
arg_name = "a%d" % i
|
|
3487
|
+
s = s[:idx] + " " + arg_name + s[idx:]
|
|
3475
3488
|
|
|
3476
3489
|
# CppHeaderParser does not like missing function body
|
|
3477
3490
|
s += "\n\n{}"
|
|
@@ -3489,10 +3502,11 @@ def parse_cpp_file(cpp_decl, with_param_names: bool = False):
|
|
|
3489
3502
|
proto = cast(Optional[SimTypeCppFunction], _cpp_decl_to_type(the_func, {}, opaque_classes=True))
|
|
3490
3503
|
if proto is not None and the_func["class"]:
|
|
3491
3504
|
func_name = cast(str, the_func["class"] + "::" + the_func["name"])
|
|
3492
|
-
proto.args = (
|
|
3493
|
-
|
|
3505
|
+
proto.args = (
|
|
3506
|
+
SimTypePointer(pts_to=SimTypeBottom(label="void")),
|
|
3507
|
+
*proto.args,
|
|
3494
3508
|
) # pylint:disable=attribute-defined-outside-init
|
|
3495
|
-
proto.arg_names = ("this",
|
|
3509
|
+
proto.arg_names = ("this", *proto.arg_names) # pylint:disable=attribute-defined-outside-init
|
|
3496
3510
|
elif proto is None:
|
|
3497
3511
|
raise ValueError("proto is None but class is also None... not sure what this edge case means")
|
|
3498
3512
|
else:
|
|
@@ -3565,7 +3579,7 @@ def dereference_simtype(
|
|
|
3565
3579
|
if pycparser is not None:
|
|
3566
3580
|
_accepts_scope_stack()
|
|
3567
3581
|
|
|
3568
|
-
|
|
3582
|
+
with contextlib.suppress(ImportError):
|
|
3569
3583
|
register_types(
|
|
3570
3584
|
parse_types(
|
|
3571
3585
|
"""
|
|
@@ -3583,8 +3597,6 @@ struct timeval {
|
|
|
3583
3597
|
"""
|
|
3584
3598
|
)
|
|
3585
3599
|
)
|
|
3586
|
-
except ImportError:
|
|
3587
|
-
pass
|
|
3588
3600
|
|
|
3589
3601
|
from .state_plugins.view import SimMemView
|
|
3590
3602
|
from .state_plugins import SimState
|