angr 9.2.116__py3-none-manylinux2014_x86_64.whl → 9.2.118__py3-none-manylinux2014_x86_64.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 +45 -45
- 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 +64 -96
- angr/analyses/cfg/cfg_fast.py +273 -314
- 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 +104 -119
- angr/analyses/cfg/indirect_jump_resolvers/mips_elf_fast.py +29 -34
- 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 +348 -172
- angr/analyses/decompiler/condition_processor.py +86 -100
- 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 +47 -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 +1 -0
- 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 +500 -0
- angr/analyses/decompiler/optimization_passes/duplication_reverter/duplication_reverter.py +1211 -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 +88 -23
- 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 +163 -158
- 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 +19 -36
- angr/analyses/decompiler/structuring/phoenix.py +199 -199
- 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 +6 -6
- 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 +46 -67
- angr/analyses/identifier/runner.py +8 -7
- 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 +159 -165
- 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 +32 -33
- 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 +83 -93
- 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 +7 -14
- angr/analyses/typehoon/typeconsts.py +14 -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 +10 -11
- 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 +105 -151
- 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 +80 -123
- 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 +4 -1
- angr/concretization_strategies/controlled_data.py +5 -2
- 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 +2 -1
- angr/concretization_strategies/norepeats_range.py +1 -0
- angr/concretization_strategies/range.py +1 -0
- angr/concretization_strategies/signed_add.py +15 -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 +4 -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 +66 -74
- angr/engines/pcode/__init__.py +1 -0
- angr/engines/pcode/behavior.py +5 -3
- angr/engines/pcode/cc.py +1 -0
- angr/engines/pcode/emulate.py +16 -19
- angr/engines/pcode/engine.py +8 -10
- 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 +48 -53
- 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 +1 -0
- angr/engines/soot/expressions/constants.py +7 -5
- 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 +4 -1
- angr/engines/soot/expressions/newMultiArray.py +6 -4
- 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 +4 -1
- angr/engines/soot/statements/identity.py +1 -0
- angr/engines/soot/statements/if_.py +4 -1
- angr/engines/soot/statements/invoke.py +1 -0
- angr/engines/soot/statements/return_.py +1 -0
- angr/engines/soot/statements/switch.py +4 -1
- angr/engines/soot/statements/throw.py +5 -2
- angr/engines/soot/values/__init__.py +4 -2
- angr/engines/soot/values/arrayref.py +13 -15
- 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 +20 -23
- angr/engines/syscall.py +9 -9
- angr/engines/unicorn.py +20 -14
- 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 +14 -15
- angr/engines/vex/heavy/dirty.py +20 -21
- angr/engines/vex/heavy/heavy.py +17 -20
- 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 +2 -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 +18 -20
- angr/exploration_techniques/driller_core.py +5 -6
- 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 +3 -2
- 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 +36 -40
- 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 +25 -42
- 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 +3 -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/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/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 +9 -10
- angr/procedures/cgc/deallocate.py +11 -3
- angr/procedures/cgc/fdwait.py +16 -13
- angr/procedures/cgc/random.py +12 -5
- angr/procedures/cgc/receive.py +30 -28
- angr/procedures/cgc/transmit.py +6 -4
- 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 +7 -7
- 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 +3 -2
- angr/procedures/java_io/read.py +1 -0
- angr/procedures/java_io/write.py +1 -0
- angr/procedures/java_jni/__init__.py +8 -9
- angr/procedures/java_jni/array_operations.py +4 -1
- 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 +1 -0
- 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 +4 -1
- angr/procedures/java_util/scanner_nextline.py +1 -0
- angr/procedures/libc/abort.py +1 -0
- angr/procedures/libc/access.py +5 -2
- 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 +5 -3
- angr/procedures/libc/fflush.py +1 -0
- angr/procedures/libc/fgetc.py +4 -1
- angr/procedures/libc/fgets.py +22 -22
- angr/procedures/libc/fopen.py +9 -10
- 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 +5 -3
- angr/procedures/libc/free.py +1 -0
- angr/procedures/libc/fscanf.py +2 -2
- angr/procedures/libc/fseek.py +7 -5
- 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 +30 -27
- 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 +20 -18
- angr/procedures/libc/getuid.py +1 -0
- angr/procedures/libc/malloc.py +1 -0
- angr/procedures/libc/memcmp.py +21 -21
- angr/procedures/libc/memcpy.py +1 -0
- angr/procedures/libc/memset.py +10 -7
- 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 +4 -1
- 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 +5 -2
- angr/procedures/libc/sprintf.py +4 -1
- 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 +7 -3
- angr/procedures/libc/strcmp.py +6 -3
- angr/procedures/libc/strcpy.py +2 -2
- angr/procedures/libc/strlen.py +38 -34
- angr/procedures/libc/strncat.py +1 -0
- angr/procedures/libc/strncmp.py +34 -36
- angr/procedures/libc/strncpy.py +6 -2
- angr/procedures/libc/strnlen.py +2 -2
- angr/procedures/libc/strstr.py +17 -10
- angr/procedures/libc/strtol.py +39 -41
- 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 +4 -1
- angr/procedures/libc/toupper.py +4 -1
- 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 +15 -14
- angr/procedures/linux_kernel/fstat64.py +17 -16
- 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 +6 -3
- 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 +5 -2
- angr/procedures/linux_kernel/sigprocmask.py +6 -3
- angr/procedures/linux_kernel/stat.py +3 -2
- angr/procedures/linux_kernel/sysinfo.py +1 -0
- angr/procedures/linux_kernel/tgkill.py +4 -1
- angr/procedures/linux_kernel/time.py +7 -3
- 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 +1 -0
- 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 +4 -1
- angr/procedures/ntdll/exceptions.py +7 -4
- angr/procedures/posix/accept.py +2 -2
- angr/procedures/posix/bind.py +1 -0
- angr/procedures/posix/bzero.py +4 -1
- 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 +19 -20
- angr/procedures/posix/fileno.py +1 -0
- angr/procedures/posix/fork.py +7 -4
- 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 +8 -4
- angr/procedures/posix/open.py +1 -0
- angr/procedures/posix/opendir.py +1 -0
- angr/procedures/posix/poll.py +8 -7
- 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 +11 -8
- angr/procedures/posix/recv.py +1 -0
- angr/procedures/posix/recvfrom.py +1 -0
- angr/procedures/posix/select.py +10 -8
- angr/procedures/posix/send.py +6 -5
- angr/procedures/posix/setsockopt.py +1 -0
- angr/procedures/posix/sigaction.py +5 -2
- angr/procedures/posix/sim_time.py +4 -1
- angr/procedures/posix/sleep.py +1 -0
- angr/procedures/posix/socket.py +2 -2
- angr/procedures/posix/strcasecmp.py +4 -1
- angr/procedures/posix/strdup.py +1 -0
- angr/procedures/posix/strtok_r.py +38 -39
- 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 +5 -2
- angr/procedures/stubs/ReturnChar.py +4 -3
- 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 +4 -1
- angr/procedures/stubs/b64_decode.py +4 -1
- angr/procedures/stubs/caller.py +1 -0
- angr/procedures/stubs/crazy_scanf.py +7 -4
- angr/procedures/stubs/format_parser.py +24 -30
- 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 +6 -4
- angr/procedures/tracer/transmit.py +6 -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 +5 -2
- angr/procedures/win32/GetModuleHandle.py +3 -4
- angr/procedures/win32/GetProcessAffinityMask.py +5 -2
- 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 +5 -3
- angr/procedures/win32/heap.py +4 -1
- angr/procedures/win32/is_bad_ptr.py +1 -0
- angr/procedures/win32/local_storage.py +11 -8
- angr/procedures/win32/mutex.py +1 -0
- angr/procedures/win32/sim_time.py +9 -9
- 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 +5 -2
- angr/procedures/win_user32/keyboard.py +1 -0
- angr/procedures/win_user32/messagebox.py +5 -5
- 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 +18 -17
- angr/sim_state.py +48 -59
- angr/sim_state_options.py +9 -15
- angr/sim_type.py +96 -126
- angr/sim_variable.py +23 -38
- angr/simos/__init__.py +3 -1
- angr/simos/cgc.py +4 -3
- angr/simos/javavm.py +77 -83
- angr/simos/linux.py +53 -63
- angr/simos/simos.py +16 -24
- angr/simos/snimmuc_nxp.py +3 -6
- angr/simos/userland.py +6 -6
- angr/simos/windows.py +18 -15
- angr/slicer.py +13 -11
- angr/state_hierarchy.py +3 -3
- 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 +14 -9
- 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 +32 -40
- angr/state_plugins/heap/utils.py +1 -0
- angr/state_plugins/history.py +14 -15
- 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 +8 -10
- angr/state_plugins/log.py +1 -0
- angr/state_plugins/loop_data.py +1 -0
- angr/state_plugins/plugin.py +9 -10
- angr/state_plugins/posix.py +39 -45
- angr/state_plugins/preconstrainer.py +4 -2
- angr/state_plugins/scratch.py +5 -4
- 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 +73 -117
- angr/state_plugins/symbolizer.py +5 -6
- angr/state_plugins/trace_additions.py +33 -47
- angr/state_plugins/uc_manager.py +20 -11
- angr/state_plugins/unicorn_engine.py +22 -38
- angr/state_plugins/view.py +21 -20
- angr/storage/__init__.py +1 -0
- angr/storage/file.py +40 -47
- angr/storage/memory_mixins/__init__.py +12 -15
- angr/storage/memory_mixins/__init__.pyi +13 -14
- angr/storage/memory_mixins/actions_mixin.py +5 -2
- angr/storage/memory_mixins/address_concretization_mixin.py +13 -17
- 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 +1 -0
- angr/storage/memory_mixins/default_filler_mixin.py +16 -16
- 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 +23 -28
- 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 +1 -0
- 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 +23 -37
- 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 +37 -41
- 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 +7 -6
- angr/storage/memory_mixins/regioned_memory/region_meta_mixin.py +130 -14
- angr/storage/memory_mixins/regioned_memory/regioned_address_concretization_mixin.py +2 -1
- angr/storage/memory_mixins/regioned_memory/regioned_memory_mixin.py +38 -47
- angr/storage/memory_mixins/regioned_memory/static_find_mixin.py +7 -9
- angr/storage/memory_mixins/simple_interface_mixin.py +10 -13
- angr/storage/memory_mixins/simplification_mixin.py +1 -0
- angr/storage/memory_mixins/size_resolution_mixin.py +7 -4
- angr/storage/memory_mixins/slotted_memory.py +4 -4
- angr/storage/memory_mixins/smart_find_mixin.py +3 -2
- angr/storage/memory_mixins/symbolic_merger_mixin.py +6 -3
- 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 +30 -28
- angr/storage/pcap.py +3 -3
- angr/tablespecs.py +4 -3
- 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 +2 -2
- angr/utils/typing.py +1 -0
- angr/vaults.py +7 -8
- {angr-9.2.116.dist-info → angr-9.2.118.dist-info}/METADATA +7 -8
- angr-9.2.118.dist-info/RECORD +1344 -0
- {angr-9.2.116.dist-info → angr-9.2.118.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.116.dist-info/RECORD +0 -1310
- {angr-9.2.116.dist-info → angr-9.2.118.dist-info}/LICENSE +0 -0
- {angr-9.2.116.dist-info → angr-9.2.118.dist-info}/entry_points.txt +0 -0
- {angr-9.2.116.dist-info → angr-9.2.118.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,15 +323,13 @@ 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")
|
|
337
331
|
elif isinstance(value, int):
|
|
338
|
-
value =
|
|
332
|
+
value = claripy.BVV(value, self.size)
|
|
339
333
|
elif isinstance(value, bytes):
|
|
340
334
|
store_endness = "Iend_BE"
|
|
341
335
|
else:
|
|
@@ -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):
|
|
@@ -527,7 +521,7 @@ class SimTypeChar(SimTypeReg):
|
|
|
527
521
|
super().store(state, addr, value)
|
|
528
522
|
except TypeError:
|
|
529
523
|
if isinstance(value, bytes) and len(value) == 1:
|
|
530
|
-
value =
|
|
524
|
+
value = claripy.BVV(value[0], state.arch.byte_width)
|
|
531
525
|
super().store(state, addr, value)
|
|
532
526
|
else:
|
|
533
527
|
raise
|
|
@@ -550,7 +544,7 @@ class SimTypeChar(SimTypeReg):
|
|
|
550
544
|
def _init_str(self):
|
|
551
545
|
return "{}({})".format(
|
|
552
546
|
self.__class__.__name__,
|
|
553
|
-
('label="
|
|
547
|
+
(f'label="{self.label}"') if self.label is not None else "",
|
|
554
548
|
)
|
|
555
549
|
|
|
556
550
|
def copy(self):
|
|
@@ -580,7 +574,7 @@ class SimTypeWideChar(SimTypeReg):
|
|
|
580
574
|
super().store(state, addr, value)
|
|
581
575
|
except TypeError:
|
|
582
576
|
if isinstance(value, bytes) and len(value) == 2:
|
|
583
|
-
value =
|
|
577
|
+
value = claripy.BVV(value[0], state.arch.byte_width)
|
|
584
578
|
super().store(state, addr, value)
|
|
585
579
|
else:
|
|
586
580
|
raise
|
|
@@ -596,7 +590,7 @@ class SimTypeWideChar(SimTypeReg):
|
|
|
596
590
|
def _init_str(self):
|
|
597
591
|
return "{}({})".format(
|
|
598
592
|
self.__class__.__name__,
|
|
599
|
-
('label="
|
|
593
|
+
(f'label="{self.label}"') if self.label is not None else "",
|
|
600
594
|
)
|
|
601
595
|
|
|
602
596
|
def copy(self):
|
|
@@ -669,7 +663,7 @@ class SimTypeFd(SimTypeReg):
|
|
|
669
663
|
def _init_str(self):
|
|
670
664
|
return "{}({})".format(
|
|
671
665
|
self.__class__.__name__,
|
|
672
|
-
('label="
|
|
666
|
+
(f'label="{self.label}"') if self.label is not None else "",
|
|
673
667
|
)
|
|
674
668
|
|
|
675
669
|
@overload
|
|
@@ -693,7 +687,7 @@ class SimTypePointer(SimTypeReg):
|
|
|
693
687
|
SimTypePointer is a type that specifies a pointer to some other type.
|
|
694
688
|
"""
|
|
695
689
|
|
|
696
|
-
_fields = tuple(x for x in SimTypeReg._fields if x != "size")
|
|
690
|
+
_fields = (*tuple(x for x in SimTypeReg._fields if x != "size"), "pts_to")
|
|
697
691
|
|
|
698
692
|
def __init__(self, pts_to, label=None, offset=0):
|
|
699
693
|
"""
|
|
@@ -740,7 +734,7 @@ class SimTypePointer(SimTypeReg):
|
|
|
740
734
|
return "%s(%s%s, offset=%d)" % (
|
|
741
735
|
self.__class__.__name__,
|
|
742
736
|
self.pts_to._init_str(),
|
|
743
|
-
(', label="
|
|
737
|
+
(f', label="{self.label}"') if self.label is not None else "",
|
|
744
738
|
self.offset,
|
|
745
739
|
)
|
|
746
740
|
|
|
@@ -776,7 +770,7 @@ class SimTypeReference(SimTypeReg):
|
|
|
776
770
|
return f"{self.refs}&"
|
|
777
771
|
|
|
778
772
|
def c_repr(self, name=None, full=0, memo=None, indent=0):
|
|
779
|
-
name = "&" if name is None else "
|
|
773
|
+
name = "&" if name is None else f"&{name}"
|
|
780
774
|
return self.refs.c_repr(name, full, memo, indent)
|
|
781
775
|
|
|
782
776
|
def make(self, refs):
|
|
@@ -799,7 +793,7 @@ class SimTypeReference(SimTypeReg):
|
|
|
799
793
|
return "{}({}{})".format(
|
|
800
794
|
self.__class__.__name__,
|
|
801
795
|
self.refs._init_str(),
|
|
802
|
-
(', label="
|
|
796
|
+
(f', label="{self.label}"') if self.label is not None else "",
|
|
803
797
|
)
|
|
804
798
|
|
|
805
799
|
def copy(self):
|
|
@@ -916,7 +910,7 @@ class SimTypeString(NamedTypeMixin, SimType):
|
|
|
916
910
|
i.e. a NUL-terminated array of bytes.
|
|
917
911
|
"""
|
|
918
912
|
|
|
919
|
-
_fields = SimTypeArray._fields
|
|
913
|
+
_fields = (*SimTypeArray._fields, "length")
|
|
920
914
|
|
|
921
915
|
def __init__(self, length: int | None = None, label=None, name: str | None = None):
|
|
922
916
|
"""
|
|
@@ -949,7 +943,7 @@ class SimTypeString(NamedTypeMixin, SimType):
|
|
|
949
943
|
last_byte = state.memory.load(addr, size=1)
|
|
950
944
|
# if we try to extract a symbolic string, it's likely that we are going to be trapped in a very large loop.
|
|
951
945
|
if state.solver.symbolic(last_byte):
|
|
952
|
-
raise ValueError("Trying to extract a symbolic string at
|
|
946
|
+
raise ValueError(f"Trying to extract a symbolic string at {state.solver.eval(addr):#x}")
|
|
953
947
|
addr += 1
|
|
954
948
|
while not (claripy.is_true(last_byte == 0) or state.solver.symbolic(last_byte)):
|
|
955
949
|
out = last_byte if out is None else out.concat(last_byte)
|
|
@@ -959,8 +953,7 @@ class SimTypeString(NamedTypeMixin, SimType):
|
|
|
959
953
|
out = state.memory.load(addr, size=self.length)
|
|
960
954
|
if not concrete:
|
|
961
955
|
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""
|
|
956
|
+
return state.solver.eval(out, cast_to=bytes) if out is not None else b""
|
|
964
957
|
|
|
965
958
|
_can_refine_int = True
|
|
966
959
|
|
|
@@ -997,7 +990,7 @@ class SimTypeWString(NamedTypeMixin, SimType):
|
|
|
997
990
|
A wide-character null-terminated string, where each character is 2 bytes.
|
|
998
991
|
"""
|
|
999
992
|
|
|
1000
|
-
_fields = SimTypeArray._fields
|
|
993
|
+
_fields = (*SimTypeArray._fields, "length")
|
|
1001
994
|
|
|
1002
995
|
def __init__(self, length: int | None = None, label=None, name: str | None = None):
|
|
1003
996
|
super().__init__(label=label, name=name)
|
|
@@ -1020,7 +1013,7 @@ class SimTypeWString(NamedTypeMixin, SimType):
|
|
|
1020
1013
|
last_byte = state.memory.load(addr, 2)
|
|
1021
1014
|
# if we try to extract a symbolic string, it's likely that we are going to be trapped in a very large loop.
|
|
1022
1015
|
if state.solver.symbolic(last_byte):
|
|
1023
|
-
raise ValueError("Trying to extract a symbolic string at
|
|
1016
|
+
raise ValueError(f"Trying to extract a symbolic string at {state.solver.eval(addr):#x}")
|
|
1024
1017
|
addr += 2
|
|
1025
1018
|
while not (claripy.is_true(last_byte == 0) or state.solver.symbolic(last_byte)):
|
|
1026
1019
|
out = last_byte if out is None else out.concat(last_byte)
|
|
@@ -1032,11 +1025,9 @@ class SimTypeWString(NamedTypeMixin, SimType):
|
|
|
1032
1025
|
out = claripy.BVV(0, 0)
|
|
1033
1026
|
if not concrete:
|
|
1034
1027
|
return out
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
for x in out.chop(16)
|
|
1039
|
-
)
|
|
1028
|
+
return "".join(
|
|
1029
|
+
chr(state.solver.eval(x.reversed if state.arch.memory_endness == "Iend_LE" else x)) for x in out.chop(16)
|
|
1030
|
+
)
|
|
1040
1031
|
|
|
1041
1032
|
def store(self, state, addr, value):
|
|
1042
1033
|
raise NotImplementedError
|
|
@@ -1116,10 +1107,7 @@ class SimTypeFunction(SimType):
|
|
|
1116
1107
|
]
|
|
1117
1108
|
if self.variadic:
|
|
1118
1109
|
formatted_args.append("...")
|
|
1119
|
-
if name_parens
|
|
1120
|
-
name_str = f"({name or ''})"
|
|
1121
|
-
else:
|
|
1122
|
-
name_str = name or ""
|
|
1110
|
+
name_str = f"({name or ''})" if name_parens else name or ""
|
|
1123
1111
|
proto = f"{name_str}({', '.join(formatted_args)})"
|
|
1124
1112
|
return f"void {proto}" if self.returnty is None else self.returnty.c_repr(proto, full, memo, indent)
|
|
1125
1113
|
|
|
@@ -1142,15 +1130,15 @@ class SimTypeFunction(SimType):
|
|
|
1142
1130
|
argnames = list(self.arg_names)
|
|
1143
1131
|
if self.variadic and show_variadic:
|
|
1144
1132
|
argnames.append("...")
|
|
1145
|
-
return ", ".join('"
|
|
1133
|
+
return ", ".join(f'"{arg_name}"' for arg_name in argnames)
|
|
1146
1134
|
|
|
1147
1135
|
def _init_str(self):
|
|
1148
1136
|
return "{}([{}], {}{}{}{})".format(
|
|
1149
1137
|
self.__class__.__name__,
|
|
1150
1138
|
", ".join([arg._init_str() for arg in self.args]),
|
|
1151
1139
|
self.returnty._init_str() if self.returnty else "void",
|
|
1152
|
-
(', label="
|
|
1153
|
-
(", arg_names=[
|
|
1140
|
+
(f', label="{self.label}"') if self.label else "",
|
|
1141
|
+
(f", arg_names=[{self._arg_names_str(show_variadic=False)}]") if self.arg_names else "",
|
|
1154
1142
|
", variadic=True" if self.variadic else "",
|
|
1155
1143
|
)
|
|
1156
1144
|
|
|
@@ -1193,8 +1181,8 @@ class SimTypeCppFunction(SimTypeFunction):
|
|
|
1193
1181
|
self.__class__.__name__,
|
|
1194
1182
|
", ".join([arg._init_str() for arg in self.args]),
|
|
1195
1183
|
self.returnty,
|
|
1196
|
-
(", label
|
|
1197
|
-
(", arg_names=[
|
|
1184
|
+
(f", label={self.label}") if self.label else "",
|
|
1185
|
+
(f", arg_names=[{self._arg_names_str(show_variadic=False)}]") if self.arg_names else "",
|
|
1198
1186
|
", variadic=True" if self.variadic else "",
|
|
1199
1187
|
)
|
|
1200
1188
|
|
|
@@ -1216,7 +1204,7 @@ class SimTypeLength(SimTypeLong):
|
|
|
1216
1204
|
...I'm not really sure what the original design of this class was going for
|
|
1217
1205
|
"""
|
|
1218
1206
|
|
|
1219
|
-
_fields =
|
|
1207
|
+
_fields = (*(x for x in SimTypeReg._fields if x != "size"), "addr", "length") # ?
|
|
1220
1208
|
|
|
1221
1209
|
def __init__(self, signed=False, addr=None, length=None, label=None):
|
|
1222
1210
|
"""
|
|
@@ -1394,7 +1382,7 @@ class SimStruct(NamedTypeMixin, SimType):
|
|
|
1394
1382
|
return out
|
|
1395
1383
|
|
|
1396
1384
|
def __repr__(self):
|
|
1397
|
-
return "struct
|
|
1385
|
+
return f"struct {self.name}"
|
|
1398
1386
|
|
|
1399
1387
|
def c_repr(self, name=None, full=0, memo=None, indent=0):
|
|
1400
1388
|
if not full or (memo is not None and self in memo):
|
|
@@ -1424,10 +1412,9 @@ class SimStruct(NamedTypeMixin, SimType):
|
|
|
1424
1412
|
last_type = self.fields[last_name]
|
|
1425
1413
|
if isinstance(last_type, SimTypeNumOffset):
|
|
1426
1414
|
return last_off * self._arch.byte_width + (last_type.size + last_type.offset)
|
|
1427
|
-
|
|
1415
|
+
if last_type.size is None:
|
|
1428
1416
|
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
|
|
1417
|
+
return last_off * self._arch.byte_width + last_type.size
|
|
1431
1418
|
|
|
1432
1419
|
@property
|
|
1433
1420
|
def alignment(self):
|
|
@@ -1451,7 +1438,7 @@ class SimStruct(NamedTypeMixin, SimType):
|
|
|
1451
1438
|
elif type(value) is SimStructValue:
|
|
1452
1439
|
value = value._values
|
|
1453
1440
|
else:
|
|
1454
|
-
raise TypeError("Can't store struct of type
|
|
1441
|
+
raise TypeError(f"Can't store struct of type {type(value)}")
|
|
1455
1442
|
|
|
1456
1443
|
if len(value) != len(self.fields):
|
|
1457
1444
|
raise ValueError("Passed bad values for %s; expected %d, got %d" % (self, len(self.offsets), len(value)))
|
|
@@ -1533,7 +1520,7 @@ class SimStructValue:
|
|
|
1533
1520
|
for name in self._struct.fields:
|
|
1534
1521
|
value = self._values[name]
|
|
1535
1522
|
try:
|
|
1536
|
-
f =
|
|
1523
|
+
f = value.__indented_repr__
|
|
1537
1524
|
s = f(indent=indent + 2)
|
|
1538
1525
|
except AttributeError:
|
|
1539
1526
|
s = repr(value)
|
|
@@ -1608,7 +1595,7 @@ class SimUnion(NamedTypeMixin, SimType):
|
|
|
1608
1595
|
# use the str instead of repr of each member to avoid exceed recursion
|
|
1609
1596
|
# depth when representing self-referential unions
|
|
1610
1597
|
return "union {} {{\n\t{}\n}}".format(
|
|
1611
|
-
self.name, "\n\t".join(f"{name} {
|
|
1598
|
+
self.name, "\n\t".join(f"{name} {ty!s};" for name, ty in self.members.items())
|
|
1612
1599
|
)
|
|
1613
1600
|
|
|
1614
1601
|
def c_repr(self, name=None, full=0, memo=None, indent=0):
|
|
@@ -1666,7 +1653,7 @@ class SimUnionValue:
|
|
|
1666
1653
|
fields = []
|
|
1667
1654
|
for name, value in self._values.items():
|
|
1668
1655
|
try:
|
|
1669
|
-
f =
|
|
1656
|
+
f = value.__indented_repr__
|
|
1670
1657
|
s = f(indent=indent + 2)
|
|
1671
1658
|
except AttributeError:
|
|
1672
1659
|
s = repr(value)
|
|
@@ -1710,7 +1697,7 @@ class SimCppClass(SimStruct):
|
|
|
1710
1697
|
return self.fields
|
|
1711
1698
|
|
|
1712
1699
|
def __repr__(self):
|
|
1713
|
-
return "class
|
|
1700
|
+
return f"class {self.name}"
|
|
1714
1701
|
|
|
1715
1702
|
def extract(self, state, addr, concrete=False) -> SimCppClassValue:
|
|
1716
1703
|
values = {}
|
|
@@ -1730,7 +1717,7 @@ class SimCppClass(SimStruct):
|
|
|
1730
1717
|
elif type(value) is SimCppClassValue:
|
|
1731
1718
|
value = value._values
|
|
1732
1719
|
else:
|
|
1733
|
-
raise TypeError("Can't store struct of type
|
|
1720
|
+
raise TypeError(f"Can't store struct of type {type(value)}")
|
|
1734
1721
|
|
|
1735
1722
|
if len(value) != len(self.fields):
|
|
1736
1723
|
raise ValueError("Passed bad values for %s; expected %d, got %d" % (self, len(self.offsets), len(value)))
|
|
@@ -1764,7 +1751,7 @@ class SimCppClassValue(SimStructValue):
|
|
|
1764
1751
|
for name in self._class.fields:
|
|
1765
1752
|
value = self._values[name]
|
|
1766
1753
|
try:
|
|
1767
|
-
f =
|
|
1754
|
+
f = value.__indented_repr__
|
|
1768
1755
|
s = f(indent=indent + 2)
|
|
1769
1756
|
except AttributeError:
|
|
1770
1757
|
s = repr(value)
|
|
@@ -1801,7 +1788,7 @@ class SimTypeNumOffset(SimTypeNum):
|
|
|
1801
1788
|
like SimTypeNum, but supports an offset of 1 to 7 to a byte aligned address to allow structs with bitfields
|
|
1802
1789
|
"""
|
|
1803
1790
|
|
|
1804
|
-
_fields = SimTypeNum._fields
|
|
1791
|
+
_fields = (*SimTypeNum._fields, "offset")
|
|
1805
1792
|
|
|
1806
1793
|
def __init__(self, size, signed=True, label=None, offset=0):
|
|
1807
1794
|
super().__init__(size, signed, label)
|
|
@@ -1830,7 +1817,7 @@ class SimTypeNumOffset(SimTypeNum):
|
|
|
1830
1817
|
return n
|
|
1831
1818
|
|
|
1832
1819
|
def store(self, state, addr, value):
|
|
1833
|
-
raise NotImplementedError
|
|
1820
|
+
raise NotImplementedError
|
|
1834
1821
|
|
|
1835
1822
|
def copy(self):
|
|
1836
1823
|
return SimTypeNumOffset(self.size, signed=self.signed, label=self.label, offset=self.offset)
|
|
@@ -3073,16 +3060,15 @@ _type_parser_singleton = None
|
|
|
3073
3060
|
|
|
3074
3061
|
def type_parser_singleton() -> pycparser.CParser:
|
|
3075
3062
|
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
|
-
)
|
|
3063
|
+
if pycparser is not None and _type_parser_singleton is None:
|
|
3064
|
+
_type_parser_singleton = pycparser.CParser()
|
|
3065
|
+
_type_parser_singleton.cparser = pycparser.ply.yacc.yacc(
|
|
3066
|
+
module=_type_parser_singleton,
|
|
3067
|
+
start="parameter_declaration",
|
|
3068
|
+
debug=False,
|
|
3069
|
+
optimize=False,
|
|
3070
|
+
errorlog=errorlog,
|
|
3071
|
+
)
|
|
3086
3072
|
return _type_parser_singleton
|
|
3087
3073
|
|
|
3088
3074
|
|
|
@@ -3132,7 +3118,7 @@ def _accepts_scope_stack():
|
|
|
3132
3118
|
self._last_yielded_token = None
|
|
3133
3119
|
return self.cparser.parse(input=text, lexer=self.clex, debug=debug)
|
|
3134
3120
|
|
|
3135
|
-
|
|
3121
|
+
pycparser.CParser.parse = parse
|
|
3136
3122
|
|
|
3137
3123
|
|
|
3138
3124
|
def _decl_to_type(
|
|
@@ -3186,20 +3172,20 @@ def _decl_to_type(
|
|
|
3186
3172
|
r._arch = arch
|
|
3187
3173
|
return r
|
|
3188
3174
|
|
|
3189
|
-
|
|
3175
|
+
if isinstance(decl, pycparser.c_ast.TypeDecl):
|
|
3190
3176
|
if decl.declname == "TOP":
|
|
3191
3177
|
r = SimTypeTop()
|
|
3192
3178
|
r._arch = arch
|
|
3193
3179
|
return r
|
|
3194
3180
|
return _decl_to_type(decl.type, extra_types, bitsize=bitsize, arch=arch)
|
|
3195
3181
|
|
|
3196
|
-
|
|
3182
|
+
if isinstance(decl, pycparser.c_ast.PtrDecl):
|
|
3197
3183
|
pts_to = _decl_to_type(decl.type, extra_types, arch=arch)
|
|
3198
3184
|
r = SimTypePointer(pts_to)
|
|
3199
3185
|
r._arch = arch
|
|
3200
3186
|
return r
|
|
3201
3187
|
|
|
3202
|
-
|
|
3188
|
+
if isinstance(decl, pycparser.c_ast.ArrayDecl):
|
|
3203
3189
|
elem_type = _decl_to_type(decl.type, extra_types, arch=arch)
|
|
3204
3190
|
|
|
3205
3191
|
if decl.dim is None:
|
|
@@ -3215,7 +3201,7 @@ def _decl_to_type(
|
|
|
3215
3201
|
r._arch = arch
|
|
3216
3202
|
return r
|
|
3217
3203
|
|
|
3218
|
-
|
|
3204
|
+
if isinstance(decl, pycparser.c_ast.Struct):
|
|
3219
3205
|
if decl.decls is not None:
|
|
3220
3206
|
fields = OrderedDict(
|
|
3221
3207
|
(field.name, _decl_to_type(field.type, extra_types, bitsize=field.bitsize, arch=arch))
|
|
@@ -3229,7 +3215,7 @@ def _decl_to_type(
|
|
|
3229
3215
|
struct = extra_types.get(key, None)
|
|
3230
3216
|
from_global = False
|
|
3231
3217
|
if struct is None:
|
|
3232
|
-
struct = ALL_TYPES.get(key
|
|
3218
|
+
struct = ALL_TYPES.get(key)
|
|
3233
3219
|
if struct is not None:
|
|
3234
3220
|
from_global = True
|
|
3235
3221
|
struct = struct.with_arch(arch)
|
|
@@ -3254,7 +3240,7 @@ def _decl_to_type(
|
|
|
3254
3240
|
struct._arch = arch
|
|
3255
3241
|
return struct
|
|
3256
3242
|
|
|
3257
|
-
|
|
3243
|
+
if isinstance(decl, pycparser.c_ast.Union):
|
|
3258
3244
|
if decl.decls is not None:
|
|
3259
3245
|
fields = {field.name: _decl_to_type(field.type, extra_types, arch=arch) for field in decl.decls}
|
|
3260
3246
|
else:
|
|
@@ -3264,10 +3250,9 @@ def _decl_to_type(
|
|
|
3264
3250
|
key = "union " + decl.name
|
|
3265
3251
|
union = extra_types.get(key, None)
|
|
3266
3252
|
from_global = False
|
|
3267
|
-
if union is None:
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
from_global = True
|
|
3253
|
+
if union is None and key in ALL_TYPES:
|
|
3254
|
+
union = ALL_TYPES[key]
|
|
3255
|
+
from_global = True
|
|
3271
3256
|
if union is not None and not isinstance(union, SimUnion):
|
|
3272
3257
|
raise AngrTypeError("Provided a non-SimUnion value for a type that must be a union")
|
|
3273
3258
|
|
|
@@ -3289,18 +3274,17 @@ def _decl_to_type(
|
|
|
3289
3274
|
union._arch = arch
|
|
3290
3275
|
return union
|
|
3291
3276
|
|
|
3292
|
-
|
|
3277
|
+
if isinstance(decl, pycparser.c_ast.IdentifierType):
|
|
3293
3278
|
key = " ".join(decl.names)
|
|
3294
3279
|
if bitsize is not None:
|
|
3295
3280
|
return SimTypeNumOffset(int(bitsize.value), signed=False)
|
|
3296
|
-
|
|
3281
|
+
if key in extra_types:
|
|
3297
3282
|
return extra_types[key]
|
|
3298
|
-
|
|
3283
|
+
if key in ALL_TYPES:
|
|
3299
3284
|
return ALL_TYPES[key].with_arch(arch)
|
|
3300
|
-
|
|
3301
|
-
raise TypeError("Unknown type '%s'" % key)
|
|
3285
|
+
raise TypeError(f"Unknown type '{key}'")
|
|
3302
3286
|
|
|
3303
|
-
|
|
3287
|
+
if isinstance(decl, pycparser.c_ast.Enum):
|
|
3304
3288
|
# See C99 at 6.7.2.2
|
|
3305
3289
|
return ALL_TYPES["int"].with_arch(arch)
|
|
3306
3290
|
|
|
@@ -3310,7 +3294,7 @@ def _decl_to_type(
|
|
|
3310
3294
|
def _parse_const(c, arch=None, extra_types=None):
|
|
3311
3295
|
if type(c) is pycparser.c_ast.Constant:
|
|
3312
3296
|
return int(c.value, base=0)
|
|
3313
|
-
|
|
3297
|
+
if type(c) is pycparser.c_ast.BinaryOp:
|
|
3314
3298
|
if c.op == "+":
|
|
3315
3299
|
return _parse_const(c.children()[0][1], arch, extra_types) + _parse_const(
|
|
3316
3300
|
c.children()[1][1], arch, extra_types
|
|
@@ -3335,16 +3319,14 @@ def _parse_const(c, arch=None, extra_types=None):
|
|
|
3335
3319
|
return _parse_const(c.children()[0][1], arch, extra_types) >> _parse_const(
|
|
3336
3320
|
c.children()[1][1], arch, extra_types
|
|
3337
3321
|
)
|
|
3338
|
-
raise ValueError("Binary op
|
|
3339
|
-
|
|
3322
|
+
raise ValueError(f"Binary op {c.op}")
|
|
3323
|
+
if type(c) is pycparser.c_ast.UnaryOp:
|
|
3340
3324
|
if c.op == "sizeof":
|
|
3341
3325
|
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:
|
|
3326
|
+
raise ValueError(f"Unary op {c.op}")
|
|
3327
|
+
if type(c) is pycparser.c_ast.Cast:
|
|
3345
3328
|
return _parse_const(c.expr, arch, extra_types)
|
|
3346
|
-
|
|
3347
|
-
raise ValueError(c)
|
|
3329
|
+
raise ValueError(c)
|
|
3348
3330
|
|
|
3349
3331
|
|
|
3350
3332
|
def _cpp_decl_to_type(decl: Any, extra_types: dict[str, SimType], opaque_classes=True):
|
|
@@ -3353,11 +3335,7 @@ def _cpp_decl_to_type(decl: Any, extra_types: dict[str, SimType], opaque_classes
|
|
|
3353
3335
|
if isinstance(decl, CppHeaderParser.CppMethod):
|
|
3354
3336
|
the_func = decl
|
|
3355
3337
|
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:
|
|
3338
|
+
if "__deleting_dtor__" in func_name or "__base_dtor__" in func_name or "__dtor__" in func_name:
|
|
3361
3339
|
the_func["destructor"] = True
|
|
3362
3340
|
# translate parameters
|
|
3363
3341
|
args = []
|
|
@@ -3378,33 +3356,27 @@ def _cpp_decl_to_type(decl: Any, extra_types: dict[str, SimType], opaque_classes
|
|
|
3378
3356
|
# other properties
|
|
3379
3357
|
ctor = the_func["constructor"]
|
|
3380
3358
|
dtor = the_func["destructor"]
|
|
3381
|
-
|
|
3382
|
-
return func
|
|
3359
|
+
return SimTypeCppFunction(args, returnty, arg_names=arg_names_tuple, ctor=ctor, dtor=dtor)
|
|
3383
3360
|
|
|
3384
|
-
|
|
3361
|
+
if isinstance(decl, str):
|
|
3385
3362
|
# a string that represents type
|
|
3386
3363
|
if decl.endswith("&"):
|
|
3387
3364
|
# reference
|
|
3388
3365
|
subdecl = decl.rstrip("&").strip()
|
|
3389
3366
|
subt = _cpp_decl_to_type(subdecl, extra_types, opaque_classes=opaque_classes)
|
|
3390
|
-
|
|
3391
|
-
return t
|
|
3367
|
+
return SimTypeReference(subt)
|
|
3392
3368
|
|
|
3393
3369
|
if decl.endswith("*"):
|
|
3394
3370
|
# pointer
|
|
3395
3371
|
subdecl = decl.rstrip("*").strip()
|
|
3396
3372
|
subt = _cpp_decl_to_type(subdecl, extra_types, opaque_classes=opaque_classes)
|
|
3397
|
-
|
|
3398
|
-
return t
|
|
3373
|
+
return SimTypePointer(subt)
|
|
3399
3374
|
|
|
3400
3375
|
if decl.endswith(" const"):
|
|
3401
3376
|
# drop const
|
|
3402
3377
|
return _cpp_decl_to_type(decl[:-6].strip(), extra_types, opaque_classes=opaque_classes)
|
|
3403
3378
|
|
|
3404
|
-
if "::" in decl
|
|
3405
|
-
unqualified_name = decl.split("::")[-1]
|
|
3406
|
-
else:
|
|
3407
|
-
unqualified_name = decl
|
|
3379
|
+
unqualified_name = decl.split("::")[-1] if "::" in decl else decl
|
|
3408
3380
|
|
|
3409
3381
|
key = unqualified_name
|
|
3410
3382
|
if key in extra_types:
|
|
@@ -3415,14 +3387,14 @@ def _cpp_decl_to_type(decl: Any, extra_types: dict[str, SimType], opaque_classes
|
|
|
3415
3387
|
# create a class without knowing the internal members
|
|
3416
3388
|
t = SimCppClass({}, name=decl)
|
|
3417
3389
|
else:
|
|
3418
|
-
raise TypeError("Unknown type '
|
|
3390
|
+
raise TypeError("Unknown type '{}'".format(" ".join(key)))
|
|
3419
3391
|
|
|
3420
3392
|
if unqualified_name != decl and isinstance(t, NamedTypeMixin):
|
|
3421
3393
|
t = t.copy()
|
|
3422
3394
|
t.name = decl # pylint:disable=attribute-defined-outside-init
|
|
3423
3395
|
return t
|
|
3424
3396
|
|
|
3425
|
-
raise NotImplementedError
|
|
3397
|
+
raise NotImplementedError
|
|
3426
3398
|
|
|
3427
3399
|
|
|
3428
3400
|
def normalize_cpp_function_name(name: str) -> str:
|
|
@@ -3467,11 +3439,10 @@ def parse_cpp_file(cpp_decl, with_param_names: bool = False):
|
|
|
3467
3439
|
|
|
3468
3440
|
# the last parameter
|
|
3469
3441
|
idx = s.find(")", last_pos)
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
s = s[:idx] + " " + arg_name + s[idx:]
|
|
3442
|
+
# TODO: consider the case where there are one or multiple spaces between ( and )
|
|
3443
|
+
if idx != -1 and s[idx - 1] != "(":
|
|
3444
|
+
arg_name = "a%d" % i
|
|
3445
|
+
s = s[:idx] + " " + arg_name + s[idx:]
|
|
3475
3446
|
|
|
3476
3447
|
# CppHeaderParser does not like missing function body
|
|
3477
3448
|
s += "\n\n{}"
|
|
@@ -3489,10 +3460,11 @@ def parse_cpp_file(cpp_decl, with_param_names: bool = False):
|
|
|
3489
3460
|
proto = cast(Optional[SimTypeCppFunction], _cpp_decl_to_type(the_func, {}, opaque_classes=True))
|
|
3490
3461
|
if proto is not None and the_func["class"]:
|
|
3491
3462
|
func_name = cast(str, the_func["class"] + "::" + the_func["name"])
|
|
3492
|
-
proto.args = (
|
|
3493
|
-
|
|
3463
|
+
proto.args = (
|
|
3464
|
+
SimTypePointer(pts_to=SimTypeBottom(label="void")),
|
|
3465
|
+
*proto.args,
|
|
3494
3466
|
) # pylint:disable=attribute-defined-outside-init
|
|
3495
|
-
proto.arg_names = ("this",
|
|
3467
|
+
proto.arg_names = ("this", *proto.arg_names) # pylint:disable=attribute-defined-outside-init
|
|
3496
3468
|
elif proto is None:
|
|
3497
3469
|
raise ValueError("proto is None but class is also None... not sure what this edge case means")
|
|
3498
3470
|
else:
|
|
@@ -3565,7 +3537,7 @@ def dereference_simtype(
|
|
|
3565
3537
|
if pycparser is not None:
|
|
3566
3538
|
_accepts_scope_stack()
|
|
3567
3539
|
|
|
3568
|
-
|
|
3540
|
+
with contextlib.suppress(ImportError):
|
|
3569
3541
|
register_types(
|
|
3570
3542
|
parse_types(
|
|
3571
3543
|
"""
|
|
@@ -3583,8 +3555,6 @@ struct timeval {
|
|
|
3583
3555
|
"""
|
|
3584
3556
|
)
|
|
3585
3557
|
)
|
|
3586
|
-
except ImportError:
|
|
3587
|
-
pass
|
|
3588
3558
|
|
|
3589
3559
|
from .state_plugins.view import SimMemView
|
|
3590
3560
|
from .state_plugins import SimState
|