diff --git a/src/Core/Expressions/ExpressionTypeAscenderBase.cs b/src/Core/Expressions/ExpressionTypeAscenderBase.cs index 34f807f937..b507d6901b 100644 --- a/src/Core/Expressions/ExpressionTypeAscenderBase.cs +++ b/src/Core/Expressions/ExpressionTypeAscenderBase.cs @@ -169,6 +169,7 @@ public DataType VisitBinaryExpression(BinaryExpression binExp) case OperatorType.FSub: case OperatorType.FMul: case OperatorType.FDiv: + case OperatorType.FMod: dt = PrimitiveType.Create(Domain.Real, binExp.DataType.BitSize); break; case OperatorType.Shr: diff --git a/src/Decompiler/Scanning/BlockConstantPropagator.cs b/src/Decompiler/Scanning/BlockConstantPropagator.cs index f965913fe5..4b164bf116 100644 --- a/src/Decompiler/Scanning/BlockConstantPropagator.cs +++ b/src/Decompiler/Scanning/BlockConstantPropagator.cs @@ -152,6 +152,7 @@ private Expression VisitExpression(Expression e) OutArgument o => o, ProcedureConstant pc => pc, Application app => m.Fn(VisitExpression(app.Procedure), VisitExpressions(app.Arguments)), + ArrayAccess aref => m.ARef(aref.DataType, VisitExpression(aref.Array), VisitExpression(aref.Index)), _ => Fail(e) }; } diff --git a/src/Decompiler/Typing/ExpressionTypeDescender.cs b/src/Decompiler/Typing/ExpressionTypeDescender.cs index 629421e1b3..6efba637be 100644 --- a/src/Decompiler/Typing/ExpressionTypeDescender.cs +++ b/src/Decompiler/Typing/ExpressionTypeDescender.cs @@ -358,7 +358,8 @@ public bool VisitBinaryExpression(BinaryExpression binExp, TypeVariable tv) case OperatorType.FSub: case OperatorType.FMul: case OperatorType.FDiv: - { + case OperatorType.FMod: + { var dt = PrimitiveType.Create(Domain.Real, eLeft.DataType.BitSize); MeetDataType(eLeft, dt); dt = PrimitiveType.Create(Domain.Real, eRight.DataType.BitSize); diff --git a/src/Environments/Windows/MsMangledNameParser.cs b/src/Environments/Windows/MsMangledNameParser.cs index 2d51e73107..399e7f914b 100644 --- a/src/Environments/Windows/MsMangledNameParser.cs +++ b/src/Environments/Windows/MsMangledNameParser.cs @@ -18,14 +18,12 @@ */ #endregion -using Reko.Core; using Reko.Core.Serialization; using Reko.Core.Types; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; -using System.Text; namespace Reko.Environments.Windows { diff --git a/src/Environments/Windows/msvcrt.inc b/src/Environments/Windows/msvcrt.inc index 6cebf62e7c..e0c9525bf3 100644 --- a/src/Environments/Windows/msvcrt.inc +++ b/src/Environments/Windows/msvcrt.inc @@ -34,6 +34,7 @@ size_t fread(void *buffer, size_t size, size_t count, FILE *stream); int fclose(FILE * fp); int _fcloseall(); int _mkdir(const char *dirname); +FILE * __iob_func(); [[reko::returns(fpu)]] double _CIpow([[reko::arg(fpu)]]double, [[reko::arg(fpu)]] double); [[reko::returns(fpu)]] double _CIacos([[reko::arg(fpu)]]double); diff --git a/subjects/Archives/ArTar/hello.reko/hello_O1_bss.asm b/subjects/Archives/ArTar/hello.reko/hello_O1_bss.asm index 068a5e2aab..78788a0543 100644 --- a/subjects/Archives/ArTar/hello.reko/hello_O1_bss.asm +++ b/subjects/Archives/ArTar/hello.reko/hello_O1_bss.asm @@ -1,2 +1,3 @@ ;;; Segment .bss (0000000000004048) -0000000000004048 00 00 00 00 00 00 00 00 ........ +__TMC_END__ ; 0000000000004048 + db 0 dup 8 diff --git a/subjects/Elf/ARM64/arm64_elf/subject.reko/subject_bss.asm b/subjects/Elf/ARM64/arm64_elf/subject.reko/subject_bss.asm index 3842706d29..4c0e25666e 100644 --- a/subjects/Elf/ARM64/arm64_elf/subject.reko/subject_bss.asm +++ b/subjects/Elf/ARM64/arm64_elf/subject.reko/subject_bss.asm @@ -1,3 +1,2 @@ ;;; Segment .bss (0000000000020008) -0000000000020008 00 00 00 00 00 00 00 00 ........ -0000000000020010 00 00 00 00 00 00 00 00 ........ +l0000000000020008 db 0 dup 16 diff --git a/subjects/Elf/IA64/bash/elf-Linux-ia64-bash.reko/elf-Linux-ia64-bash_bss.asm b/subjects/Elf/IA64/bash/elf-Linux-ia64-bash.reko/elf-Linux-ia64-bash_bss.asm index 61dcd3e593..97debfb635 100644 --- a/subjects/Elf/IA64/bash/elf-Linux-ia64-bash.reko/elf-Linux-ia64-bash_bss.asm +++ b/subjects/Elf/IA64/bash/elf-Linux-ia64-bash.reko/elf-Linux-ia64-bash_bss.asm @@ -1,33 +1,24 @@ ;;; Segment .bss (600000000000AFD0) -600000000000AFD0 00 00 00 00 00 00 00 00 ........ +l600000000000AFD0 db 0 dup 8 dstack ; 600000000000AFD8 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -600000000000AFE8 00 00 00 00 00 00 00 00 ........ -600000000000AFF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... -600000000000C240 00 00 00 00 00 00 00 00 ........ +l600000000000AFE8 db 0 dup 4704 wlcache ; 600000000000C248 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 wdcache ; 600000000000C258 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -600000000000C268 00 00 00 00 00 00 00 00 ........ -600000000000C270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... +l600000000000C268 db 0 dup 104 coproc_list ; 600000000000C2D0 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -600000000000C2E8 00 00 00 00 00 00 00 00 ........ -600000000000C2F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... +l600000000000C2E8 db 0 dup 712 bgpids ; 600000000000C5B0 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -600000000000C5C8 00 00 00 00 00 00 00 00 ........ -600000000000C5D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... +l600000000000C5C8 db 0 dup 6904 subshell_top_level ; 600000000000E0C0 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 @@ -80,7 +71,7 @@ bash_input ; 600000000000E380 yylval ; 600000000000E3A8 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -600000000000E3B8 00 00 00 00 00 00 00 00 ........ +l600000000000E3B8 db 0 dup 8 SB ; 600000000000E3C0 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 @@ -249,7 +240,7 @@ pending_traps ; 600000000000EC98 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -600000000000ED9C 00 00 00 00 .... +l600000000000ED9C db 0 dup 4 top_level_mask ; 600000000000EDA0 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/subjects/Elf/IA64/bash/elf-Linux-ia64-bash.reko/elf-Linux-ia64-bash_sbss.asm b/subjects/Elf/IA64/bash/elf-Linux-ia64-bash.reko/elf-Linux-ia64-bash_sbss.asm index 58ad8f18d0..1bd33c7228 100644 --- a/subjects/Elf/IA64/bash/elf-Linux-ia64-bash.reko/elf-Linux-ia64-bash_sbss.asm +++ b/subjects/Elf/IA64/bash/elf-Linux-ia64-bash.reko/elf-Linux-ia64-bash_sbss.asm @@ -39,10 +39,7 @@ global_command ; 600000000000A500 dq 0x0000000000000000 shell_initialized ; 600000000000A508 db 0x00, 0x00, 0x00, 0x00 -600000000000A50C 00 00 00 00 .... -600000000000A510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... -600000000000A550 00 00 00 00 00 00 00 00 ........ +l600000000000A50C db 0 dup 76 eof_encountered ; 600000000000A558 db 0x00, 0x00, 0x00, 0x00 ignoreeof ; 600000000000A55C @@ -57,7 +54,7 @@ line_number ; 600000000000A574 db 0x00, 0x00, 0x00, 0x00 current_readline_line_index ; 600000000000A578 db 0x00, 0x00, 0x00, 0x00 -600000000000A57C 00 00 00 00 .... +l600000000000A57C db 0 dup 4 current_readline_line ; 600000000000A580 dq 0x0000000000000000 current_readline_prompt ; 600000000000A588 @@ -68,8 +65,7 @@ expand_aliases ; 600000000000A594 db 0x00, 0x00, 0x00, 0x00 prompt_string_pointer ; 600000000000A598 dq 0x0000000000000000 -600000000000A5A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... +l600000000000A5A0 db 0 dup 240 xtrace_fp ; 600000000000A690 dq 0x0000000000000000 command_string_index ; 600000000000A698 @@ -78,9 +74,7 @@ the_printed_command_size ; 600000000000A69C db 0x00, 0x00, 0x00, 0x00 the_printed_command ; 600000000000A6A0 dq 0x0000000000000000 -600000000000A6A8 00 00 00 00 00 00 00 00 ........ -600000000000A6B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... +l600000000000A6A8 db 0 dup 56 current_fds_to_close ; 600000000000A6E0 dq 0x0000000000000000 lastpipe_opt ; 600000000000A6E8 @@ -101,26 +95,24 @@ executing_list ; 600000000000A704 db 0x00, 0x00, 0x00, 0x00 executing_builtin ; 600000000000A708 db 0x00, 0x00, 0x00, 0x00 -600000000000A70C 00 00 00 00 .... +l600000000000A70C db 0 dup 4 exec_redirection_undo_list ; 600000000000A710 dq 0x0000000000000000 redirection_undo_list ; 600000000000A718 dq 0x0000000000000000 -600000000000A720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... -600000000000A740 00 00 00 00 00 00 00 00 ........ +l600000000000A720 db 0 dup 40 export_env ; 600000000000A748 dq 0x0000000000000000 shell_level ; 600000000000A750 db 0x00, 0x00, 0x00, 0x00 -600000000000A754 00 00 00 00 .... +l600000000000A754 db 0 dup 4 rest_of_args ; 600000000000A758 dq 0x0000000000000000 temporary_env ; 600000000000A760 dq 0x0000000000000000 variable_context ; 600000000000A768 db 0x00, 0x00, 0x00, 0x00 -600000000000A76C 00 00 00 00 .... +l600000000000A76C db 0 dup 4 shell_function_defs ; 600000000000A770 dq 0x0000000000000000 shell_functions ; 600000000000A778 @@ -129,13 +121,10 @@ shell_variables ; 600000000000A780 dq 0x0000000000000000 global_variables ; 600000000000A788 dq 0x0000000000000000 -600000000000A790 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... -600000000000A7C0 00 00 00 00 00 00 00 00 00 00 00 00 ............ +l600000000000A790 db 0 dup 60 gnu_error_format ; 600000000000A7CC db 0x00, 0x00, 0x00, 0x00 -600000000000A7D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... +l600000000000A7D0 db 0 dup 80 pipefail_opt ; 600000000000A820 db 0x00, 0x00, 0x00, 0x00 error_trace_mode ; 600000000000A824 @@ -178,31 +167,24 @@ asynchronous_notification ; 600000000000A86C db 0x00, 0x00, 0x00, 0x00 mark_modified_vars ; 600000000000A870 db 0x00, 0x00, 0x00, 0x00 -600000000000A874 00 00 00 00 .... +l600000000000A874 db 0 dup 4 already_making_children ; 600000000000A878 db 0x00, 0x00, 0x00, 0x00 -600000000000A87C 00 00 00 00 .... +l600000000000A87C db 0 dup 4 the_pipeline ; 600000000000A880 dq 0x0000000000000000 pipeline_pgrp ; 600000000000A888 db 0x00, 0x00, 0x00, 0x00 -600000000000A88C 00 00 00 00 .... +l600000000000A88C db 0 dup 4 jobs ; 600000000000A890 dq 0x0000000000000000 -600000000000A898 00 00 00 00 00 00 00 00 ........ -600000000000A8A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... +l600000000000A898 db 0 dup 88 subst_assign_varlist ; 600000000000A8F0 dq 0x0000000000000000 -600000000000A8F8 00 00 00 00 00 00 00 00 ........ -600000000000A900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... -600000000000A920 00 00 00 00 00 00 00 00 ........ +l600000000000A8F8 db 0 dup 48 hashed_filenames ; 600000000000A928 dq 0x0000000000000000 -600000000000A930 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... -600000000000A960 00 00 00 00 00 00 00 00 ........ +l600000000000A930 db 0 dup 56 glob_star ; 600000000000A968 db 0x00, 0x00, 0x00, 0x00 extended_glob ; 600000000000A96C @@ -217,19 +199,15 @@ sigwinch_received ; 600000000000A97C db 0x00, 0x00, 0x00, 0x00 interrupt_state ; 600000000000A980 db 0x00, 0x00, 0x00, 0x00 -600000000000A984 00 00 00 00 00 00 00 00 00 00 00 00 ............ -600000000000A990 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... -600000000000A9B0 00 00 00 00 00 00 00 00 ........ +l600000000000A984 db 0 dup 52 aliases ; 600000000000A9B8 dq 0x0000000000000000 alias_expand_all ; 600000000000A9C0 db 0x00, 0x00, 0x00, 0x00 -600000000000A9C4 00 00 00 00 00 00 00 00 00 00 00 00 ............ -600000000000A9D0 00 00 00 00 00 00 00 00 ........ +l600000000000A9C4 db 0 dup 20 current_command_first_line_saved ; 600000000000A9D8 db 0x00, 0x00, 0x00, 0x00 -600000000000A9DC 00 00 00 00 .... +l600000000000A9DC db 0 dup 4 hostname_list_initialized ; 600000000000A9E0 db 0x00, 0x00, 0x00, 0x00 dircomplete_expand_relpath ; 600000000000A9E4 @@ -240,19 +218,13 @@ dircomplete_spelling ; 600000000000A9EC db 0x00, 0x00, 0x00, 0x00 bash_readline_initialized ; 600000000000A9F0 db 0x00, 0x00, 0x00, 0x00 -600000000000A9F4 00 00 00 00 00 00 00 00 00 00 00 00 ............ -600000000000AA00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... -600000000000ABC0 00 00 00 00 00 00 00 00 ........ +l600000000000A9F4 db 0 dup 468 dot_found_in_search ; 600000000000ABC8 db 0x00, 0x00, 0x00, 0x00 -600000000000ABCC 00 00 00 00 .... -600000000000ABD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... +l600000000000ABCC db 0 dup 52 prog_completes ; 600000000000AC00 dq 0x0000000000000000 -600000000000AC08 00 00 00 00 00 00 00 00 ........ -600000000000AC10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +l600000000000AC08 db 0 dup 24 continuing ; 600000000000AC20 db 0x00, 0x00, 0x00, 0x00 breaking ; 600000000000AC24 @@ -261,40 +233,34 @@ loop_level ; 600000000000AC28 db 0x00, 0x00, 0x00, 0x00 cdspelling ; 600000000000AC2C db 0x00, 0x00, 0x00, 0x00 -600000000000AC30 00 00 00 00 00 00 00 00 ........ +l600000000000AC30 db 0 dup 8 the_current_working_directory ; 600000000000AC38 dq 0x0000000000000000 this_shell_builtin ; 600000000000AC40 dq 0x0000000000000000 last_shell_builtin ; 600000000000AC48 dq 0x0000000000000000 -600000000000AC50 00 00 00 00 .... +l600000000000AC50 db 0 dup 4 xpg_echo ; 600000000000AC54 db 0x00, 0x00, 0x00, 0x00 sourcelevel ; 600000000000AC58 db 0x00, 0x00, 0x00, 0x00 parse_and_execute_level ; 600000000000AC5C db 0x00, 0x00, 0x00, 0x00 -600000000000AC60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... +l600000000000AC60 db 0 dup 240 sh_badopt ; 600000000000AD50 db 0x00, 0x00, 0x00, 0x00 sh_optind ; 600000000000AD54 db 0x00, 0x00, 0x00, 0x00 sh_optarg ; 600000000000AD58 dq 0x0000000000000000 -600000000000AD60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +l600000000000AD60 db 0 dup 16 lcurrent ; 600000000000AD70 dq 0x0000000000000000 -600000000000AD78 00 00 00 00 00 00 00 00 ........ -600000000000AD80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... +l600000000000AD78 db 0 dup 72 glob_ignore_case ; 600000000000ADC0 db 0x00, 0x00, 0x00, 0x00 -600000000000ADC4 00 00 00 00 00 00 00 00 00 00 00 00 ............ -600000000000ADD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... -600000000000AE00 00 00 00 00 00 00 00 00 ........ +l600000000000ADC4 db 0 dup 68 __libc_ia64_register_backing_store_base ; 600000000000AE08 dq 0x0000000000000000 subshell_envp ; 600000000000AE10 @@ -303,22 +269,22 @@ subshell_argv ; 600000000000AE18 dq 0x0000000000000000 want_pending_command ; 600000000000AE20 db 0x00, 0x00, 0x00, 0x00 -600000000000AE24 00 00 00 00 .... +l600000000000AE24 db 0 dup 4 exec_argv0 ; 600000000000AE28 dq 0x0000000000000000 dump_po_strings ; 600000000000AE30 db 0x00, 0x00, 0x00, 0x00 -600000000000AE34 00 00 00 00 .... +l600000000000AE34 db 0 dup 4 shell_start_time ; 600000000000AE38 dq 0x0000000000000000 dump_translatable_strings ; 600000000000AE40 db 0x00, 0x00, 0x00, 0x00 -600000000000AE44 00 00 00 00 .... +l600000000000AE44 db 0 dup 4 command_execution_string ; 600000000000AE48 dq 0x0000000000000000 read_from_stdin ; 600000000000AE50 db 0x00, 0x00, 0x00, 0x00 -600000000000AE54 00 00 00 00 .... +l600000000000AE54 db 0 dup 4 shell_environment ; 600000000000AE58 dq 0x0000000000000000 subshell_argc ; 600000000000AE60 @@ -335,14 +301,14 @@ current_command_line_count ; 600000000000AE74 db 0x00, 0x00, 0x00, 0x00 shell_eof_token ; 600000000000AE78 db 0x00, 0x00, 0x00, 0x00 -600000000000AE7C 00 00 00 00 .... +l600000000000AE7C db 0 dup 4 ps2_prompt ; 600000000000AE80 dq 0x0000000000000000 ps1_prompt ; 600000000000AE88 dq 0x0000000000000000 yychar ; 600000000000AE90 db 0x00, 0x00, 0x00, 0x00 -600000000000AE94 00 00 00 00 .... +l600000000000AE94 db 0 dup 4 current_prompt_string ; 600000000000AE98 dq 0x0000000000000000 current_token ; 600000000000AEA0 @@ -381,12 +347,12 @@ ifs_var ; 600000000000AEF0 dq 0x0000000000000000 fail_glob_expansion ; 600000000000AEF8 db 0x00, 0x00, 0x00, 0x00 -600000000000AEFC 00 00 00 00 .... +l600000000000AEFC db 0 dup 4 ifs_value ; 600000000000AF00 dq 0x0000000000000000 allow_null_glob_expansion ; 600000000000AF08 db 0x00, 0x00, 0x00, 0x00 -600000000000AF0C 00 00 00 00 .... +l600000000000AF0C db 0 dup 4 ifs_firstc_len ; 600000000000AF10 dq 0x0000000000000000 assigning_in_environment ; 600000000000AF18 @@ -427,7 +393,7 @@ hist_last_line_pushed ; 600000000000AF5C db 0x00, 0x00, 0x00, 0x00 no_empty_command_completion ; 600000000000AF60 db 0x00, 0x00, 0x00, 0x00 -600000000000AF64 00 00 00 00 .... +l600000000000AF64 db 0 dup 4 global_error_list ; 600000000000AF68 dq 0x0000000000000000 check_hashed_filenames ; 600000000000AF70 @@ -446,16 +412,16 @@ no_exit_on_failed_exec ; 600000000000AF94 db 0x00, 0x00, 0x00, 0x00 print_shift_error ; 600000000000AF98 db 0x00, 0x00, 0x00, 0x00 -600000000000AF9C 00 00 00 00 .... +l600000000000AF9C db 0 dup 4 list_optarg ; 600000000000AFA0 dq 0x0000000000000000 list_optopt ; 600000000000AFA8 db 0x00, 0x00, 0x00, 0x00 -600000000000AFAC 00 00 00 00 .... +l600000000000AFAC db 0 dup 4 loptend ; 600000000000AFB0 dq 0x0000000000000000 list_opttype ; 600000000000AFB8 db 0x00, 0x00, 0x00, 0x00 -600000000000AFBC 00 00 00 00 .... +l600000000000AFBC db 0 dup 4 glob_error_return ; 600000000000AFC0 dq 0x0000000000000000 diff --git a/subjects/Elf/RiscV/ipcalc/ipcalc_bss.asm b/subjects/Elf/RiscV/ipcalc/ipcalc_bss.asm index 12a67d9e0b..908b920870 100644 --- a/subjects/Elf/RiscV/ipcalc/ipcalc_bss.asm +++ b/subjects/Elf/RiscV/ipcalc/ipcalc_bss.asm @@ -9,7 +9,4 @@ stdout ; 0000000000012CD0 dq 0x0000000000000000 optind ; 0000000000012CD8 db 0x00, 0x00, 0x00, 0x00 -0000000000012CDC 00 00 00 00 .... -0000000000012CE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... -0000000000013220 00 00 00 00 00 00 00 00 ........ +l0000000000012CDC db 0 dup 1356 diff --git a/subjects/Elf/RiscV/ipcalc/ipcalc_sbss.asm b/subjects/Elf/RiscV/ipcalc/ipcalc_sbss.asm index 6e81e59d35..4713ab9841 100644 --- a/subjects/Elf/RiscV/ipcalc/ipcalc_sbss.asm +++ b/subjects/Elf/RiscV/ipcalc/ipcalc_sbss.asm @@ -1,5 +1,2 @@ ;;; Segment .sbss (0000000000012C58) -0000000000012C58 00 00 00 00 00 00 00 00 ........ -0000000000012C60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... -0000000000012CB0 00 00 00 00 00 00 00 00 ........ +l0000000000012C58 db 0 dup 96 diff --git a/subjects/Elf/x86-64/ais3_crackme/ais3_crackme.reko/ais3_crackme_bss.asm b/subjects/Elf/x86-64/ais3_crackme/ais3_crackme.reko/ais3_crackme_bss.asm index ffb2d6d543..b9b2114627 100644 --- a/subjects/Elf/x86-64/ais3_crackme/ais3_crackme.reko/ais3_crackme_bss.asm +++ b/subjects/Elf/x86-64/ais3_crackme/ais3_crackme.reko/ais3_crackme_bss.asm @@ -1,2 +1,3 @@ ;;; Segment .bss (0000000000601038) -0000000000601038 00 00 00 00 00 00 00 00 ........ +__TMC_END__ ; 0000000000601038 + db 0 dup 8 diff --git a/subjects/Elf/x86-64/ls/ls.reko/ls_bss.asm b/subjects/Elf/x86-64/ls/ls.reko/ls_bss.asm index 933b494b77..8f126bc9e2 100644 --- a/subjects/Elf/x86-64/ls/ls.reko/ls_bss.asm +++ b/subjects/Elf/x86-64/ls/ls.reko/ls_bss.asm @@ -1,20 +1,17 @@ ;;; Segment .bss (000000000061A600) __progname ; 000000000061A600 dq 0x0000000000C34C00 -000000000061A608 00 00 00 00 00 00 00 00 ........ +l000000000061A608 db 0 dup 8 stdout ; 000000000061A610 dq 0x0000000000C34C10 -000000000061A618 00 00 00 00 00 00 00 00 ........ +l000000000061A618 db 0 dup 8 optind ; 000000000061A620 db 0x20, 0x4C, 0xC3, 0x00 -000000000061A624 00 00 00 00 00 00 00 00 00 00 00 00 ............ -000000000061A630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +l000000000061A624 db 0 dup 28 optarg ; 000000000061A640 dq 0x0000000000C34C40 __progname_full ; 000000000061A648 dq 0x0000000000C34C48 stderr ; 000000000061A650 dq 0x0000000000C34C50 -000000000061A658 00 00 00 00 00 00 00 00 ........ -000000000061A660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... +l000000000061A658 db 0 dup 3336 diff --git a/subjects/Elf/x86-64/pngpixel/pngpixel.reko/pngpixel_bss.asm b/subjects/Elf/x86-64/pngpixel/pngpixel.reko/pngpixel_bss.asm index 49d2845b05..5929b50473 100644 --- a/subjects/Elf/x86-64/pngpixel/pngpixel.reko/pngpixel_bss.asm +++ b/subjects/Elf/x86-64/pngpixel/pngpixel.reko/pngpixel_bss.asm @@ -3,4 +3,4 @@ stderr ; 0000000000602100 dq 0x0000000000C04200 completed.7585 ; 0000000000602108 db 0x00 -0000000000602109 00 00 00 00 00 00 00 ....... +l0000000000602109 db 0 dup 7 diff --git a/subjects/Elf/x86-64/retpoline/retpoline.reko/retpoline_bss.asm b/subjects/Elf/x86-64/retpoline/retpoline.reko/retpoline_bss.asm index 769ec4f269..5b74610d02 100644 --- a/subjects/Elf/x86-64/retpoline/retpoline.reko/retpoline_bss.asm +++ b/subjects/Elf/x86-64/retpoline/retpoline.reko/retpoline_bss.asm @@ -1,2 +1,3 @@ ;;; Segment .bss (0000000000601040) -0000000000601040 00 00 00 00 00 00 00 00 ........ +__TMC_END__ ; 0000000000601040 + db 0 dup 8 diff --git a/subjects/Elf/x86-64/retpoline/retpoline_stripped.reko/retpoline_stripped_bss.asm b/subjects/Elf/x86-64/retpoline/retpoline_stripped.reko/retpoline_stripped_bss.asm index 769ec4f269..ba4fa33a39 100644 --- a/subjects/Elf/x86-64/retpoline/retpoline_stripped.reko/retpoline_stripped_bss.asm +++ b/subjects/Elf/x86-64/retpoline/retpoline_stripped.reko/retpoline_stripped_bss.asm @@ -1,2 +1,2 @@ ;;; Segment .bss (0000000000601040) -0000000000601040 00 00 00 00 00 00 00 00 ........ +l0000000000601040 db 0 dup 8 diff --git a/subjects/Elf/x86-64/simd_double/simd_double.reko/simd_double_bss.asm b/subjects/Elf/x86-64/simd_double/simd_double.reko/simd_double_bss.asm index 025d0f017d..b7fb28afd0 100644 --- a/subjects/Elf/x86-64/simd_double/simd_double.reko/simd_double_bss.asm +++ b/subjects/Elf/x86-64/simd_double/simd_double.reko/simd_double_bss.asm @@ -1,2 +1,3 @@ ;;; Segment .bss (0000000000201048) -0000000000201048 00 00 00 00 00 00 00 00 ........ +__TMC_END__ ; 0000000000201048 + db 0 dup 8 diff --git a/subjects/Elf/zSeries/fib/example.reko/example_bss.asm b/subjects/Elf/zSeries/fib/example.reko/example_bss.asm index 515a32bec7..061d0a09a3 100644 --- a/subjects/Elf/zSeries/fib/example.reko/example_bss.asm +++ b/subjects/Elf/zSeries/fib/example.reko/example_bss.asm @@ -1,2 +1,3 @@ ;;; Segment .bss (0000000000002068) -0000000000002068 00 00 00 00 00 00 00 00 ........ +__TMC_END__ ; 0000000000002068 + db 0 dup 8 diff --git a/subjects/PE/m68k/hello_m68k_bss.asm b/subjects/PE/m68k/hello_m68k_bss.asm index 5ffc22dc24..3775257489 100644 --- a/subjects/PE/m68k/hello_m68k_bss.asm +++ b/subjects/PE/m68k/hello_m68k_bss.asm @@ -1,5 +1,2 @@ ;;; Segment .bss (00003D08) -00003D08 00 00 00 00 00 00 00 00 ........ -00003D10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... -00003FD0 00 00 00 00 .... +l00003D08 db 0 dup 716 diff --git a/subjects/PE/x86-64/array/reko_array.reko/reko_array_bss.asm b/subjects/PE/x86-64/array/reko_array.reko/reko_array_bss.asm index 4bcd546d64..3c96f17e6a 100644 --- a/subjects/PE/x86-64/array/reko_array.reko/reko_array_bss.asm +++ b/subjects/PE/x86-64/array/reko_array.reko/reko_array_bss.asm @@ -1,3 +1,2 @@ ;;; Segment .bss (00000002121D5000) -00000002121D5000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -; ... +l00000002121D5000 db 0 dup 32 diff --git a/subjects/regression.log b/subjects/regression.log index 4a3eea03a2..650df9eb7d 100644 --- a/subjects/regression.log +++ b/subjects/regression.log @@ -134,7 +134,7 @@ fn00000000: error: An error occurred while rewriting procedure to high-level lan 00000004: warning: Expected sizes of arrays to have been determined by now 000000FF: error: Failed to write global variable g_t00FF. Index was outside the bounds of the array. - at Reko.Core.Memory.ByteMemoryArea.TryReadByte(Byte[] img, Int64 off, Byte& b) in c:\dev\uxmal\reko\master\src\Core\Memory\ByteMemoryArea.cs:line 612 + at Reko.Core.Memory.ByteMemoryArea.TryReadByte(Byte[] img, Int64 off, Byte& b) in c:\dev\uxmal\reko\master\src\Core\Memory\ByteMemoryArea.cs:line 673 at Reko.Core.Memory.ByteMemoryArea.TryReadLe(Byte[] abImage, Int64 imageOffset, DataType type, Constant& c) in c:\dev\uxmal\reko\master\src\Core\Memory\ByteMemoryArea.cs:line 255 at Reko.Core.Memory.ByteMemoryArea.TryReadLe(Int64 imageOffset, DataType type, Constant& c) in c:\dev\uxmal\reko\master\src\Core\Memory\ByteMemoryArea.cs:line 207 at Reko.Core.Memory.ByteImageReader.TryReadLe(DataType dataType, Constant& c) in c:\dev\uxmal\reko\master\src\Core\Memory\ByteImageReader.cs:line 222 @@ -150,7 +150,7 @@ fn00000000: error: An error occurred while rewriting procedure to high-level lan 00000004: warning: Expected sizes of arrays to have been determined by now 000000FF: error: Failed to write global variable g_t00FF. Index was outside the bounds of the array. - at Reko.Core.Memory.ByteMemoryArea.TryReadByte(Byte[] img, Int64 off, Byte& b) in c:\dev\uxmal\reko\master\src\Core\Memory\ByteMemoryArea.cs:line 612 + at Reko.Core.Memory.ByteMemoryArea.TryReadByte(Byte[] img, Int64 off, Byte& b) in c:\dev\uxmal\reko\master\src\Core\Memory\ByteMemoryArea.cs:line 673 at Reko.Core.Memory.ByteMemoryArea.TryReadLe(Byte[] abImage, Int64 imageOffset, DataType type, Constant& c) in c:\dev\uxmal\reko\master\src\Core\Memory\ByteMemoryArea.cs:line 255 at Reko.Core.Memory.ByteMemoryArea.TryReadLe(Int64 imageOffset, DataType type, Constant& c) in c:\dev\uxmal\reko\master\src\Core\Memory\ByteMemoryArea.cs:line 207 at Reko.Core.Memory.ByteImageReader.TryReadLe(DataType dataType, Constant& c) in c:\dev\uxmal\reko\master\src\Core\Memory\ByteImageReader.cs:line 222 @@ -1171,7 +1171,6 @@ fn0000ACB0: warning: Structure analysis stopped making progress, quitting. Pleas 2EC0: warning: PDP-11 instruction spl is not supported yet. 2EC2: warning: PDP-11 instruction spl is not supported yet. 2ECC: warning: PDP-11 instruction spl is not supported yet. -fn0B06: warning: Structure analysis stopped making progress, quitting. Please report this issue at https://github.com/uxmal/reko 013E: warning: Expected sizes of arrays to have been determined by now 168C: warning: Expected sizes of arrays to have been determined by now 1696: warning: Expected sizes of arrays to have been determined by now @@ -1180,6 +1179,7 @@ fn0B06: warning: Structure analysis stopped making progress, quitting. Please re 28F2: warning: Expected sizes of arrays to have been determined by now 28F8: warning: Expected sizes of arrays to have been determined by now 31DC: warning: Expected sizes of arrays to have been determined by now +35D2: warning: Expected sizes of arrays to have been determined by now 013E: warning: Expected sizes of arrays to have been determined by now 168C: warning: Expected sizes of arrays to have been determined by now 1696: warning: Expected sizes of arrays to have been determined by now @@ -1188,6 +1188,7 @@ fn0B06: warning: Structure analysis stopped making progress, quitting. Please re 28F2: warning: Expected sizes of arrays to have been determined by now 28F8: warning: Expected sizes of arrays to have been determined by now 31DC: warning: Expected sizes of arrays to have been determined by now +35D2: warning: Expected sizes of arrays to have been determined by now *** regressions\reko-121\m68k_jump Error: An error occurred while writing assembly language output. @@ -1198,9 +1199,9 @@ Error: An error occurred while writing assembly language output. at Reko.Core.Memory.ByteMemoryArea.CreateBeReader(Address addr, Int64 cUnits) in c:\dev\uxmal\reko\master\src\Core\Memory\ByteMemoryArea.cs:line 78 at Reko.Core.EndianServices.BeServices.CreateImageReader(MemoryArea mem, Address addr, Int64 cUnits) in c:\dev\uxmal\reko\master\src\Core\EndianServices.cs:line 406 at Reko.Core.ProcessorArchitecture.CreateImageReader(MemoryArea mem, Address addr, Int64 cbUnits) in c:\dev\uxmal\reko\master\src\Core\IProcessorArchitecture.cs:line 658 - at Reko.Core.Output.Dumper.DumpData(IProcessorArchitecture arch, MemoryArea mem, Address address, Int64 cUnits, Formatter stm) in c:\dev\uxmal\reko\master\src\Core\Output\Dumper.cs:line 184 - at Reko.Core.Output.Dumper.DumpData(SegmentMap map, IProcessorArchitecture arch, Address address, Int64 cbBytes, Formatter stm) in c:\dev\uxmal\reko\master\src\Core\Output\Dumper.cs:line 171 - at Reko.Core.Output.Dumper.DumpItem(ImageSegment segment, ImageMapItem i, Formatter formatter) in c:\dev\uxmal\reko\master\src\Core\Output\Dumper.cs:line 122 + at Reko.Core.Output.Dumper.DumpData(IProcessorArchitecture arch, MemoryArea mem, Address address, Int64 cUnits, Formatter stm) in c:\dev\uxmal\reko\master\src\Core\Output\Dumper.cs:line 197 + at Reko.Core.Output.Dumper.DumpData(SegmentMap map, IProcessorArchitecture arch, Address address, Int64 cbBytes, Formatter stm) in c:\dev\uxmal\reko\master\src\Core\Output\Dumper.cs:line 184 + at Reko.Core.Output.Dumper.DumpItem(ImageSegment segment, ImageMapItem i, Formatter formatter) in c:\dev\uxmal\reko\master\src\Core\Output\Dumper.cs:line 126 at Reko.Core.Output.Dumper.Dump(Dictionary`2 segmentItems, Formatter formatter) in c:\dev\uxmal\reko\master\src\Core\Output\Dumper.cs:line 70 at Reko.Decompiler.DumpAssembler(Program program, String filename, Dictionary`2 segmentItems, Formatter wr) in c:\dev\uxmal\reko\master\src\Decompiler\Decompiler.cs:line 147 @@ -1419,9 +1420,7 @@ fn0001B1D0: warning: Structure analysis stopped making progress, quitting. Pleas fn0001B1F8: warning: Structure analysis stopped making progress, quitting. Please report this issue at https://github.com/uxmal/reko fn0001B2AC: error: An error occurred while rewriting procedure to high-level language. Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index') - at System.Collections.Generic.List`1.get_Item(Int32 index) - at Reko.Core.Block.get_ThenBlock() in c:\dev\uxmal\reko\master\src\Core\Block.cs:line 92 - at Reko.Structure.CompoundConditionCoalescer.MaybeCoalesce(Block block) in c:\dev\uxmal\reko\master\src\Decompiler\Structure\CompoundConditionCoalescer.cs:line 96 + at Reko.Structure.CompoundConditionCoalescer.MaybeCoalesce(Block block) in c:\dev\uxmal\reko\master\src\Decompiler\Structure\CompoundConditionCoalescer.cs:line 95 at Reko.Structure.CompoundConditionCoalescer.Transform() in c:\dev\uxmal\reko\master\src\Decompiler\Structure\CompoundConditionCoalescer.cs:line 62 at Reko.Structure.StructureAnalysis.Structure() in c:\dev\uxmal\reko\master\src\Decompiler\Structure\StructureAnalysis.cs:line 78 at Reko.Decompiler.StructureProgram() in c:\dev\uxmal\reko\master\src\Decompiler\Decompiler.cs:line 592 @@ -2678,4 +2677,4 @@ PE Debug type 14 not supported yet. === PE\x86\VCExeSample\VCExeSample Signature of 'Microsoft Visual C++ 8' detected. -Decompiled 93 binaries in 33,86 seconds. +Decompiled 93 binaries in 38,26 seconds. diff --git a/subjects/regressions/angr-148/test.reko/test_bss.asm b/subjects/regressions/angr-148/test.reko/test_bss.asm index 769ec4f269..5b74610d02 100644 --- a/subjects/regressions/angr-148/test.reko/test_bss.asm +++ b/subjects/regressions/angr-148/test.reko/test_bss.asm @@ -1,2 +1,3 @@ ;;; Segment .bss (0000000000601040) -0000000000601040 00 00 00 00 00 00 00 00 ........ +__TMC_END__ ; 0000000000601040 + db 0 dup 8