boomerang icon indicating copy to clipboard operation
boomerang copied to clipboard

Regression test fails when updating capstone to 5.0

Open motorto opened this issue 1 year ago • 3 comments

OS:

Void Linux x86_64-glibc

Boomerang version or git hash: boomerang-0.5.2

Expected behaviour/output: Regression test suite runs successfully.

Actual behaviour/output: Regression test suite fails.

Additional comments: When updating the capstone from 4.0.2 -> 5.0, the test regression fails.

  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/OSX/o4/phi2
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/banner
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/branch
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/condcodexform_gcc
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/elfhashtest
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fib
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fibo3
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fibo4
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fibo-O4
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/interleavedcc
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/loop
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/nestedswitch
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/param1
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/phi
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/phi2
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/short1
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/short2
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/sumarray
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/switchAnd_cc
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/switch_cc
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/switch_gcc
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/testarray1
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/testarray2
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/uns
make check
boomerang-0.5.2_2: running do_check ...
2023-07-15T14:40:53.7416052Z [m[1/2] Generating copy-regression-script
2023-07-15T14:45:14.4542557Z [2/2] cd /builddir/boomerang-0.5.2/build/tests/regression-tests && /usr/bin/python3 ./regression-tester.py /builddir/boomerang-0.5.2/build/out/bin/boomerang-cli
2023-07-15T14:45:14.4543329Z FAILED: tests/regression-tests/CMakeFiles/check /builddir/boomerang-0.5.2/build/tests/regression-tests/CMakeFiles/check 
2023-07-15T14:45:14.4544059Z cd /builddir/boomerang-0.5.2/build/tests/regression-tests && /usr/bin/python3 ./regression-tester.py /builddir/boomerang-0.5.2/build/out/bin/boomerang-cli
2023-07-15T14:45:14.4544393Z 
2023-07-15T14:45:14.4544496Z Boomerang Regression Tester
2023-07-15T14:45:14.4544706Z ===========================
2023-07-15T14:45:14.4544850Z 
2023-07-15T14:45:14.4544947Z Cleaning up old data ...
2023-07-15T14:45:14.4545230Z Testing for regressions ................r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/OSX/o4/phi2
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/banner
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/branch
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/condcodexform_gcc
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/elfhashtest
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fib
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fibo3
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fibo4
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fibo-O4
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/interleavedcc
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/loop
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/nestedswitch
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/param1
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/phi
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/phi2
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/short1
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/short2
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/sumarray
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/switchAnd_cc
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/switch_cc
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/switch_gcc
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/testarray1
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/testarray2
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/uns..............
2023-07-15T14:45:14.4545715Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/OSX/o4/phi2/phi2/phi2.c
2023-07-15T14:45:14.4546280Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/OSX/o4/phi2/phi2/phi2.c
2023-07-15T14:45:14.4546638Z @@ -8,8 +8,8 @@
2023-07-15T14:45:14.4546824Z      int g29; 		// r29
2023-07-15T14:45:14.4547215Z      int g3; 		// r3
2023-07-15T14:45:14.4547427Z      char *g30; 		// r30
2023-07-15T14:45:14.4547675Z -    int g3_2; 		// r3{6}
2023-07-15T14:45:14.4547928Z -    int g3_5; 		// r3{8}
2023-07-15T14:45:14.4548135Z +    int g3_2; 		// r3{8}
2023-07-15T14:45:14.4548333Z +    int g3_5; 		// r3{6}
2023-07-15T14:45:14.4548517Z  
2023-07-15T14:45:14.4548696Z      g30 = *(argv + 4);
2023-07-15T14:45:14.4548888Z      if (argc <= 2) {
2023-07-15T14:45:14.4549124Z @@ -17,11 +17,11 @@
2023-07-15T14:45:14.4549315Z          g29 = g3;
2023-07-15T14:45:14.4549488Z      }
2023-07-15T14:45:14.4549776Z      else {
2023-07-15T14:45:14.4549976Z +        g3_5 = strlen(g30);
2023-07-15T14:45:14.4550168Z +        g29 = g3_5;
2023-07-15T14:45:14.4550370Z          g3_2 = strlen(g30);
2023-07-15T14:45:14.4550614Z -        g29 = g3_2;
2023-07-15T14:45:14.4550869Z -        g3_5 = strlen(g30);
2023-07-15T14:45:14.4551106Z -        g28 = g3_5;
2023-07-15T14:45:14.4551362Z -        printf("%d", g3_2 + g3_5);
2023-07-15T14:45:14.4551577Z +        g28 = g3_2;
2023-07-15T14:45:14.4551778Z +        printf("%d", g3_5 + g3_2);
2023-07-15T14:45:14.4551980Z      }
2023-07-15T14:45:14.4552244Z      printf("%d, %d", g29, g28);
2023-07-15T14:45:14.4552468Z      printf("%d\n", g29);
2023-07-15T14:45:14.4552606Z 
2023-07-15T14:45:14.4552753Z r....................................................................................................................
2023-07-15T14:45:14.4553260Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/banner/banner/banner.c
2023-07-15T14:45:14.4553831Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/banner/banner/banner.c
2023-07-15T14:45:14.4554192Z @@ -26,28 +26,28 @@
2023-07-15T14:45:14.4554387Z      local5 = o0 + 4;
2023-07-15T14:45:14.4554578Z      local8 = local4;
2023-07-15T14:45:14.4554832Z      local4 = local8 - 1;
2023-07-15T14:45:14.4555098Z -    while (local8 != 1) {
2023-07-15T14:45:14.4555418Z +    while (SUBFLAGS(local8 - 1, 0, local8 - 1)) {
2023-07-15T14:45:14.4555658Z          o0 = *local5;
2023-07-15T14:45:14.4555919Z          o0 = strlen(o0); /* Warning: also results in o2, o3, o4 */
2023-07-15T14:45:14.4556174Z          local6 = o0;
2023-07-15T14:45:14.4556395Z -        if (o0 > 10) {
2023-07-15T14:45:14.4556591Z +        if (o0 >= 10) {
2023-07-15T14:45:14.4556800Z              local6 = 10;
2023-07-15T14:45:14.4556985Z          }
2023-07-15T14:45:14.4557165Z          local7 = 0;
2023-07-15T14:45:14.4557363Z  bb0x10794:
2023-07-15T14:45:14.4557588Z -        if (local7 <= 6) {
2023-07-15T14:45:14.4557870Z +        if (local7 < 6) {
2023-07-15T14:45:14.4558077Z              local0 = 0;
2023-07-15T14:45:14.4558343Z -            while (local0 < local6) {
2023-07-15T14:45:14.4558702Z +            while (SUBFLAGS(local0, local6, local0 - local6)) {
2023-07-15T14:45:14.4558954Z                  o1 = *local5;
2023-07-15T14:45:14.4559184Z                  o0 = *(unsigned char*)(o1 + local0);
2023-07-15T14:45:14.4559486Z                  o0 = (o0 << 24 >> 24) - 32;
2023-07-15T14:45:14.4559707Z                  local2 = o0;
2023-07-15T14:45:14.4559945Z -                if (o0 < 0) {
2023-07-15T14:45:14.4560155Z +                if (o0 <= 0) {
2023-07-15T14:45:14.4560374Z                      local2 = 0;
2023-07-15T14:45:14.4560562Z                  }
2023-07-15T14:45:14.4560754Z                  local1 = 0;
2023-07-15T14:45:14.4560953Z  bb0x10804:
2023-07-15T14:45:14.4561194Z -                if (local1 <= 6) {
2023-07-15T14:45:14.4561416Z +                if (local1 < 6) {
2023-07-15T14:45:14.4561705Z                      o1 = local0 * 8 + o6 - 16;
2023-07-15T14:45:14.4561929Z                      o3 = o1 + local1;
2023-07-15T14:45:14.4562324Z                      o4 = 0x220b4;
2023-07-15T14:45:14.4562556Z @@ -62,9 +62,9 @@
2023-07-15T14:45:14.4562742Z                  local0++;
2023-07-15T14:45:14.4562932Z              }
2023-07-15T14:45:14.4563183Z              local0 = local6 * 8 - 1;
2023-07-15T14:45:14.4563450Z -            while (local0 >= 0) {
2023-07-15T14:45:14.4563733Z +            while (local0 > 0) {
2023-07-15T14:45:14.4564065Z                  o0 = *(unsigned char*)(o6 + local0 - 128);
2023-07-15T14:45:14.4564386Z -                if (o0 << 24 >> 24 != 32) {
2023-07-15T14:45:14.4564722Z +                if (!SUBFLAGS(o0 << 24 >> 24, 32, (o0 << 24 >> 24) - 32)) {
2023-07-15T14:45:14.4564966Z                      break;
2023-07-15T14:45:14.4565155Z                  }
2023-07-15T14:45:14.4565425Z                  *(__size8*)(o6 + local0 - 128) = 0;
2023-07-15T14:45:14.4565574Z 
2023-07-15T14:45:14.4565638Z r.
2023-07-15T14:45:14.4566123Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/branch/branch/branch.c
2023-07-15T14:45:14.4566696Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/branch/branch/branch.c
2023-07-15T14:45:14.4567053Z @@ -5,23 +5,23 @@
2023-07-15T14:45:14.4567264Z  int main(int argc, char *argv[])
2023-07-15T14:45:14.4567464Z  {
2023-07-15T14:45:14.4567691Z      int local0; 		// m[o6 - 20]
2023-07-15T14:45:14.4567978Z -    unsigned int local1; 		// m[o6 - 24]
2023-07-15T14:45:14.4568318Z +    int local1; 		// m[o6 - 24]
2023-07-15T14:45:14.4568511Z  
2023-07-15T14:45:14.4568692Z      scanf("%d", &local0);
2023-07-15T14:45:14.4568910Z      scanf("%d", &local1);
2023-07-15T14:45:14.4569142Z -    if (local0 == 5) {
2023-07-15T14:45:14.4569432Z +    if (!SUBFLAGS(5, local0, 5 - local0)) {
2023-07-15T14:45:14.4569665Z          printf("Equal\n");
2023-07-15T14:45:14.4569847Z      }
2023-07-15T14:45:14.4570070Z -    if (local0 != 5) {
2023-07-15T14:45:14.4570373Z +    if (!SUBFLAGS(5, local0, 5 - local0)) {
2023-07-15T14:45:14.4570611Z          printf("Not Equal\n");
2023-07-15T14:45:14.4570810Z      }
2023-07-15T14:45:14.4571023Z -    if (5 > local0) {
2023-07-15T14:45:14.4571214Z +    if (5 >= local0) {
2023-07-15T14:45:14.4571425Z          printf("Greater\n");
2023-07-15T14:45:14.4571622Z      }
2023-07-15T14:45:14.4571836Z -    if (5 <= local0) {
2023-07-15T14:45:14.4572130Z +    if (!SUBFLAGS(5, local0, 5 - local0)) {
2023-07-15T14:45:14.4572380Z          printf("Less or Equal\n");
2023-07-15T14:45:14.4572577Z      }
2023-07-15T14:45:14.4572792Z -    if (5 >= local0) {
2023-07-15T14:45:14.4573076Z +    if (!SUBFLAGS(5, local0, 5 - local0)) {
2023-07-15T14:45:14.4573323Z          printf("Greater or Equal\n");
2023-07-15T14:45:14.4573538Z      }
2023-07-15T14:45:14.4573718Z      if (5 < local0) {
2023-07-15T14:45:14.4573940Z @@ -33,16 +33,16 @@
2023-07-15T14:45:14.4574133Z      if (5 <= local1) {
2023-07-15T14:45:14.4574432Z          printf("Less or Equal Unsigned\n");
2023-07-15T14:45:14.4574645Z      }
2023-07-15T14:45:14.4574858Z -    if (5 >= local1) {
2023-07-15T14:45:14.4575139Z +    if (!SUBFLAGS(5, local1, 5 - local1)) {
2023-07-15T14:45:14.4575390Z          printf("Carry Clear\n");
2023-07-15T14:45:14.4575594Z      }
2023-07-15T14:45:14.4575805Z -    if (5 < local1) {
2023-07-15T14:45:14.4576083Z +    if (!SUBFLAGS(5, local1, 5 - local1)) {
2023-07-15T14:45:14.4576330Z          printf("Carry Set\n");
2023-07-15T14:45:14.4576527Z      }
2023-07-15T14:45:14.4576734Z -    if (5 >= local0) {
2023-07-15T14:45:14.4576941Z +    if (local0 == 5) {
2023-07-15T14:45:14.4577160Z          printf("Minus\n");
2023-07-15T14:45:14.4577348Z      }
2023-07-15T14:45:14.4577557Z -    if (5 < local0) {
2023-07-15T14:45:14.4577845Z +    if (!SUBFLAGS(5, local0, 5 - local0)) {
2023-07-15T14:45:14.4578074Z          printf("Plus\n");
2023-07-15T14:45:14.4578269Z      }
2023-07-15T14:45:14.4578441Z      return 0;
2023-07-15T14:45:14.4578567Z 
2023-07-15T14:45:14.4578635Z r.
2023-07-15T14:45:14.4579137Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/condcodexform_gcc/condcodexform_gcc/condcodexform_gcc.c
2023-07-15T14:45:14.4579834Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/condcodexform_gcc/condcodexform_gcc/condcodexform_gcc.c
2023-07-15T14:45:14.4580247Z @@ -22,33 +22,33 @@
2023-07-15T14:45:14.4580420Z      else {
2023-07-15T14:45:14.4580654Z          o1 = 0;
2023-07-15T14:45:14.4580828Z      }
2023-07-15T14:45:14.4581029Z -    if (o1 == 0) {
2023-07-15T14:45:14.4581248Z +    if (SUBFLAGS(o1, 0, o1)) {
2023-07-15T14:45:14.4581453Z          o2 = 0x10d0c;
2023-07-15T14:45:14.4581623Z      }
2023-07-15T14:45:14.4581789Z      else {
2023-07-15T14:45:14.4581971Z          o2 = 0x10d04;
2023-07-15T14:45:14.4582143Z      }
2023-07-15T14:45:14.4582393Z -    if (o1 == 0) {
2023-07-15T14:45:14.4582619Z +    if (SUBFLAGS(o1, 0, o1)) {
2023-07-15T14:45:14.4582818Z          o3 = 0x10d1c;
2023-07-15T14:45:14.4583045Z      }
2023-07-15T14:45:14.4583214Z      else {
2023-07-15T14:45:14.4583387Z          o3 = 0x10d14;
2023-07-15T14:45:14.4583572Z      }
2023-07-15T14:45:14.4583782Z -    if (o1 == 0) {
2023-07-15T14:45:14.4583986Z +    if (SUBFLAGS(o1, 0, o1)) {
2023-07-15T14:45:14.4584199Z          o4 = 0x10d2c;
2023-07-15T14:45:14.4584388Z      }
2023-07-15T14:45:14.4584545Z      else {
2023-07-15T14:45:14.4584727Z          o4 = 0x10d24;
2023-07-15T14:45:14.4584910Z      }
2023-07-15T14:45:14.4585109Z -    if (o1 == 0) {
2023-07-15T14:45:14.4585321Z +    if (SUBFLAGS(o1, 0, o1)) {
2023-07-15T14:45:14.4585595Z          o5 = 0x10d3c;
2023-07-15T14:45:14.4585775Z      }
2023-07-15T14:45:14.4585942Z      else {
2023-07-15T14:45:14.4586125Z          o5 = 0x10d34;
2023-07-15T14:45:14.4586296Z      }
2023-07-15T14:45:14.4586502Z -    if (o1 == 0) {
2023-07-15T14:45:14.4586712Z +    if (SUBFLAGS(o1, 0, o1)) {
2023-07-15T14:45:14.4586913Z          i0 = 0;
2023-07-15T14:45:14.4587235Z -        if (o2 == 0x10d0c && o3 == 0x10d1c && o4 == 0x10d2c) {
2023-07-15T14:45:14.4587740Z +        if (!SUBFLAGS(o2, 0x10d0c, o2 - 0x10d0c) && !SUBFLAGS(o3, 0x10d1c, o3 - 0x10d1c) && !SUBFLAGS(o4, 0x10d2c, o4 - 0x10d2c)) {
2023-07-15T14:45:14.4588049Z              o0 = 0x10d3c;
2023-07-15T14:45:14.4588241Z  bb0x10cc4:
2023-07-15T14:45:14.4588493Z              i0 = 1 - ((o5 ^ o0) != 0);
2023-07-15T14:45:14.4588734Z @@ -57,13 +57,13 @@
2023-07-15T14:45:14.4588912Z      }
2023-07-15T14:45:14.4589094Z      else {
2023-07-15T14:45:14.4589280Z          i0 = 0;
2023-07-15T14:45:14.4589579Z -        if (o2 == 0x10d04 && o3 == 0x10d14 && o4 == 0x10d24) {
2023-07-15T14:45:14.4590069Z +        if (!SUBFLAGS(o2, 0x10d04, o2 - 0x10d04) && !SUBFLAGS(o3, 0x10d14, o3 - 0x10d14) && !SUBFLAGS(o4, 0x10d24, o4 - 0x10d24)) {
2023-07-15T14:45:14.4590369Z              o0 = 0x10d34;
2023-07-15T14:45:14.4590569Z              goto bb0x10cc4;
2023-07-15T14:45:14.4590763Z          }
2023-07-15T14:45:14.4590932Z      }
2023-07-15T14:45:14.4591105Z      argc = local0;
2023-07-15T14:45:14.4591385Z -    if (i0 == 0) {
2023-07-15T14:45:14.4591602Z +    if (SUBFLAGS(i0, 0, i0)) {
2023-07-15T14:45:14.4591809Z          o0_1 = "Failed!\n";
2023-07-15T14:45:14.4591994Z      }
2023-07-15T14:45:14.4592162Z      else {
2023-07-15T14:45:14.4592275Z 
2023-07-15T14:45:14.4592330Z r
2023-07-15T14:45:14.4592801Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/elfhashtest/elfhashtest/elfhashtest.c
2023-07-15T14:45:14.4593437Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/elfhashtest/elfhashtest/elfhashtest.c
2023-07-15T14:45:14.4593821Z @@ -33,7 +33,7 @@
2023-07-15T14:45:14.4594010Z      o3 = (int) *param1;
2023-07-15T14:45:14.4594209Z      g1 = param1;
2023-07-15T14:45:14.4594397Z      o4 = 0;
2023-07-15T14:45:14.4594605Z -    if (o3 != 0) {
2023-07-15T14:45:14.4594828Z +    if (!SUBFLAGS(o3, 0, o3)) {
2023-07-15T14:45:14.4595042Z          do {
2023-07-15T14:45:14.4595222Z              g1_1 = g1;
2023-07-15T14:45:14.4595432Z              param2 = local0;
2023-07-15T14:45:14.4595570Z 
2023-07-15T14:45:14.4595630Z r..
2023-07-15T14:45:14.4596024Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/fib/fib/fib.c
2023-07-15T14:45:14.4596553Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/fib/fib/fib.c
2023-07-15T14:45:14.4596895Z @@ -20,7 +20,7 @@
2023-07-15T14:45:14.4597088Z      int o0_1; 		// r8{4}
2023-07-15T14:45:14.4597332Z  
2023-07-15T14:45:14.4597503Z      i0 = param1;
2023-07-15T14:45:14.4597733Z -    if (param1 > 1) {
2023-07-15T14:45:14.4597947Z +    if (param1 >= 1) {
2023-07-15T14:45:14.4598205Z          o0_1 = fib(param1 - 1);
2023-07-15T14:45:14.4598464Z          o0 = fib(param1 - 2);
2023-07-15T14:45:14.4598679Z          i0 = o0_1 + o0;
2023-07-15T14:45:14.4598811Z 
2023-07-15T14:45:14.4598873Z r.
2023-07-15T14:45:14.4599291Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/fibo3/fibo3/fibo3.c
2023-07-15T14:45:14.4599891Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/fibo3/fibo3/fibo3.c
2023-07-15T14:45:14.4600246Z @@ -22,7 +22,7 @@
2023-07-15T14:45:14.4600439Z      int o0; 		// r8
2023-07-15T14:45:14.4600629Z      int o0_1; 		// r8{4}
2023-07-15T14:45:14.4600812Z  
2023-07-15T14:45:14.4601035Z -    if (param1 <= 1) {
2023-07-15T14:45:14.4601242Z +    if (param1 < 1) {
2023-07-15T14:45:14.4601448Z          local2 = param1;
2023-07-15T14:45:14.4601637Z      }
2023-07-15T14:45:14.4601796Z      else {
2023-07-15T14:45:14.4601911Z 
2023-07-15T14:45:14.4602131Z r
2023-07-15T14:45:14.4602554Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/fibo4/fibo4/fibo4.c
2023-07-15T14:45:14.4603102Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/fibo4/fibo4/fibo4.c
2023-07-15T14:45:14.4603457Z @@ -21,7 +21,7 @@
2023-07-15T14:45:14.4603649Z      int o2; 		// r10
2023-07-15T14:45:14.4603848Z      __size32 o2_1; 		// r10{3}
2023-07-15T14:45:14.4604044Z  
2023-07-15T14:45:14.4604256Z -    if (param1 <= 1) {
2023-07-15T14:45:14.4604456Z +    if (param1 < 1) {
2023-07-15T14:45:14.4604654Z          o2 = param1;
2023-07-15T14:45:14.4604844Z      }
2023-07-15T14:45:14.4605008Z      else {
2023-07-15T14:45:14.4605128Z 
2023-07-15T14:45:14.4605190Z r
2023-07-15T14:45:14.4605625Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/fibo-O4/fibo-O4/fibo-O4.c
2023-07-15T14:45:14.4606214Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/fibo-O4/fibo-O4/fibo-O4.c
2023-07-15T14:45:14.4606562Z @@ -13,7 +13,7 @@
2023-07-15T14:45:14.4606773Z      printf("Input number: ");
2023-07-15T14:45:14.4607001Z      scanf("%d", &local0);
2023-07-15T14:45:14.4607199Z      o2 = local0;
2023-07-15T14:45:14.4607426Z -    if (local0 > 1) {
2023-07-15T14:45:14.4607631Z +    if (local0 >= 1) {
2023-07-15T14:45:14.4607876Z          o0_2 = fib(local0 - 1);
2023-07-15T14:45:14.4608136Z          o0 = fib(local0 - 2);
2023-07-15T14:45:14.4608398Z          o2 = o0_2 + o0;
2023-07-15T14:45:14.4608620Z @@ -30,7 +30,7 @@
2023-07-15T14:45:14.4608823Z      int o0_1; 		// r8{4}
2023-07-15T14:45:14.4609009Z  
2023-07-15T14:45:14.4609167Z      i0 = param1;
2023-07-15T14:45:14.4609398Z -    if (param1 > 1) {
2023-07-15T14:45:14.4609605Z +    if (param1 >= 1) {
2023-07-15T14:45:14.4609853Z          o0_1 = fib(param1 - 1);
2023-07-15T14:45:14.4610116Z          o0 = fib(param1 - 2);
2023-07-15T14:45:14.4610331Z          i0 = o0_1 + o0;
2023-07-15T14:45:14.4610465Z 
2023-07-15T14:45:14.4610526Z r.....
2023-07-15T14:45:14.4610998Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/interleavedcc/interleavedcc/interleavedcc.c
2023-07-15T14:45:14.4611648Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/interleavedcc/interleavedcc/interleavedcc.c
2023-07-15T14:45:14.4612027Z @@ -28,7 +28,7 @@
2023-07-15T14:45:14.4612224Z      if (param2 != param3) {
2023-07-15T14:45:14.4612437Z          o0 = 1;
2023-07-15T14:45:14.4612638Z          local0 = o0;
2023-07-15T14:45:14.4612881Z -        if (param1 >= 0) {
2023-07-15T14:45:14.4613107Z +        if (param1 > 0) {
2023-07-15T14:45:14.4613314Z              o0 = 0;
2023-07-15T14:45:14.4613502Z              local0 = o0;
2023-07-15T14:45:14.4613692Z          }
2023-07-15T14:45:14.4613902Z @@ -36,7 +36,7 @@
2023-07-15T14:45:14.4614073Z      else {
2023-07-15T14:45:14.4614307Z          o0_1 = 2;
2023-07-15T14:45:14.4614504Z          local0 = o0_1;
2023-07-15T14:45:14.4614739Z -        if (param1 < 0) {
2023-07-15T14:45:14.4614953Z +        if (param1 <= 0) {
2023-07-15T14:45:14.4615151Z              o0 = 3;
2023-07-15T14:45:14.4615338Z              local0 = o0;
2023-07-15T14:45:14.4615528Z          }
2023-07-15T14:45:14.4615638Z 
2023-07-15T14:45:14.4615698Z r
2023-07-15T14:45:14.4616109Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/loop/loop/loop.c
2023-07-15T14:45:14.4616727Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/loop/loop/loop.c
2023-07-15T14:45:14.4617082Z @@ -7,7 +7,7 @@
2023-07-15T14:45:14.4617321Z      int local0; 		// m[o6 - 20]
2023-07-15T14:45:14.4617517Z  
2023-07-15T14:45:14.4617686Z      local0 = 0;
2023-07-15T14:45:14.4617914Z -    while (local0 <= 9) {
2023-07-15T14:45:14.4618132Z +    while (local0 < 9) {
2023-07-15T14:45:14.4618341Z          local0++;
2023-07-15T14:45:14.4618519Z      }
2023-07-15T14:45:14.4618708Z      printf("%i\n", local0);
2023-07-15T14:45:14.4618848Z 
2023-07-15T14:45:14.4618909Z r..
2023-07-15T14:45:14.4619420Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/nestedswitch/nestedswitch/nestedswitch.c
2023-07-15T14:45:14.4620065Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/nestedswitch/nestedswitch/nestedswitch.c
2023-07-15T14:45:14.4620448Z @@ -1,8 +1,8 @@
2023-07-15T14:45:14.4620742Z -int main(unsigned int argc, char *argv[]);
2023-07-15T14:45:14.4621007Z +int main(int argc, char *argv[]);
2023-07-15T14:45:14.4621213Z  
2023-07-15T14:45:14.4621374Z  
2023-07-15T14:45:14.4621550Z  /** address: 0x000106a4 */
2023-07-15T14:45:14.4621846Z -int main(unsigned int argc, char *argv[])
2023-07-15T14:45:14.4622103Z +int main(int argc, char *argv[])
2023-07-15T14:45:14.4622302Z  {
2023-07-15T14:45:14.4622478Z      int o0; 		// r8
2023-07-15T14:45:14.4622659Z  
2023-07-15T14:45:14.4622759Z 
2023-07-15T14:45:14.4622814Z r
2023-07-15T14:45:14.4623232Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/param1/param1/param1.c
2023-07-15T14:45:14.4623813Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/param1/param1/param1.c
2023-07-15T14:45:14.4624163Z @@ -19,7 +19,7 @@
2023-07-15T14:45:14.4624355Z      __size32 o1; 		// r9
2023-07-15T14:45:14.4624544Z  
2023-07-15T14:45:14.4624715Z      local0 = param2;
2023-07-15T14:45:14.4624957Z -    if (param1 < 0) {
2023-07-15T14:45:14.4625168Z +    if (param1 <= 0) {
2023-07-15T14:45:14.4625411Z          o1 = 0;
2023-07-15T14:45:14.4625606Z          local0 = o1;
2023-07-15T14:45:14.4625788Z      }
2023-07-15T14:45:14.4625896Z 
2023-07-15T14:45:14.4625957Z r.
2023-07-15T14:45:14.4626357Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/phi/phi/phi.c
2023-07-15T14:45:14.4626895Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/phi/phi/phi.c
2023-07-15T14:45:14.4627240Z @@ -22,8 +22,8 @@
2023-07-15T14:45:14.4627422Z      int o0; 		// r8
2023-07-15T14:45:14.4627620Z      int o0_1; 		// r8{4}
2023-07-15T14:45:14.4627805Z  
2023-07-15T14:45:14.4628052Z -    if (param1 <= 1) {
2023-07-15T14:45:14.4628304Z -        if (param1 != 1) {
2023-07-15T14:45:14.4628513Z +    if (param1 < 1) {
2023-07-15T14:45:14.4628796Z +        if (SUBFLAGS(param1, 1, param1 - 1)) {
2023-07-15T14:45:14.4629029Z              local1 = param1;
2023-07-15T14:45:14.4629219Z          }
2023-07-15T14:45:14.4629380Z          else {
2023-07-15T14:45:14.4629495Z 
2023-07-15T14:45:14.4629560Z r
2023-07-15T14:45:14.4629956Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/phi2/phi2/phi2.c
2023-07-15T14:45:14.4630470Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/phi2/phi2/phi2.c
2023-07-15T14:45:14.4630796Z @@ -25,7 +25,7 @@
2023-07-15T14:45:14.4630981Z      int o0_5; 		// r8{8}
2023-07-15T14:45:14.4631155Z  
2023-07-15T14:45:14.4631362Z      local2 = param3;
2023-07-15T14:45:14.4631593Z -    if (param1 <= 2) {
2023-07-15T14:45:14.4631788Z +    if (param1 < 2) {
2023-07-15T14:45:14.4631995Z          o0 = strlen(param2);
2023-07-15T14:45:14.4632204Z          local0 = o0;
2023-07-15T14:45:14.4632384Z      }
2023-07-15T14:45:14.4632477Z 
2023-07-15T14:45:14.4632538Z r.
2023-07-15T14:45:14.4632927Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/short1/short1/short1.c
2023-07-15T14:45:14.4633501Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/short1/short1/short1.c
2023-07-15T14:45:14.4633822Z @@ -1,5 +1,5 @@
2023-07-15T14:45:14.4634031Z  int main(int argc, char *argv[]);
2023-07-15T14:45:14.4634359Z -__size32 test(int param1, int param2, int param3);
2023-07-15T14:45:14.4634659Z +__size32 test(__size32 param1, __size32 param2, __size32 param3);
2023-07-15T14:45:14.4634887Z  
2023-07-15T14:45:14.4635036Z  
2023-07-15T14:45:14.4635202Z  /** address: 0x000106e8 */
2023-07-15T14:45:14.4635432Z @@ -19,11 +19,11 @@
2023-07-15T14:45:14.4635607Z  }
2023-07-15T14:45:14.4635755Z  
2023-07-15T14:45:14.4635980Z  /** address: 0x00010688 */
2023-07-15T14:45:14.4636287Z -__size32 test(int param1, int param2, int param3)
2023-07-15T14:45:14.4636572Z +__size32 test(__size32 param1, __size32 param2, __size32 param3)
2023-07-15T14:45:14.4636794Z  {
2023-07-15T14:45:14.4637025Z      __size32 local0; 		// m[o6 - 20]
2023-07-15T14:45:14.4637210Z  
2023-07-15T14:45:14.4637469Z -    if (param1 < param2 || param2 < param3) {
2023-07-15T14:45:14.4637911Z +    if (SUBFLAGS(param1, param2, param1 - param2) || SUBFLAGS(param2, param3, param2 - param3)) {
2023-07-15T14:45:14.4638202Z          local0 = 1;
2023-07-15T14:45:14.4638372Z      }
2023-07-15T14:45:14.4638539Z      else {
2023-07-15T14:45:14.4638645Z 
2023-07-15T14:45:14.4638704Z r
2023-07-15T14:45:14.4639090Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/short2/short2/short2.c
2023-07-15T14:45:14.4639607Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/short2/short2/short2.c
2023-07-15T14:45:14.4639933Z @@ -1,5 +1,5 @@
2023-07-15T14:45:14.4640137Z  int main(int argc, char *argv[]);
2023-07-15T14:45:14.4640452Z -__size32 test(int param1, int param2, int param3);
2023-07-15T14:45:14.4640745Z +__size32 test(__size32 param1, __size32 param2, __size32 param3);
2023-07-15T14:45:14.4640964Z  
2023-07-15T14:45:14.4641115Z  
2023-07-15T14:45:14.4641282Z  /** address: 0x000106b4 */
2023-07-15T14:45:14.4641503Z @@ -19,17 +19,17 @@
2023-07-15T14:45:14.4641682Z  }
2023-07-15T14:45:14.4641874Z  
2023-07-15T14:45:14.4642572Z  /** address: 0x00010688 */
2023-07-15T14:45:14.4642884Z -__size32 test(int param1, int param2, int param3)
2023-07-15T14:45:14.4643172Z +__size32 test(__size32 param1, __size32 param2, __size32 param3)
2023-07-15T14:45:14.4643388Z  {
2023-07-15T14:45:14.4643550Z      int g1; 		// r1
2023-07-15T14:45:14.4643747Z      int o0; 		// r8
2023-07-15T14:45:14.4643918Z  
2023-07-15T14:45:14.4644068Z      g1 = 1;
2023-07-15T14:45:14.4644243Z      o0 = 1;
2023-07-15T14:45:14.4644457Z -    if (param1 >= param2) {
2023-07-15T14:45:14.4644775Z +    if (!SUBFLAGS(param1, param2, param1 - param2)) {
2023-07-15T14:45:14.4645007Z          o0 = 0;
2023-07-15T14:45:14.4645177Z      }
2023-07-15T14:45:14.4645401Z -    if (param2 >= param3) {
2023-07-15T14:45:14.4645714Z +    if (!SUBFLAGS(param2, param3, param2 - param3)) {
2023-07-15T14:45:14.4645941Z          g1 = 0;
2023-07-15T14:45:14.4646100Z      }
2023-07-15T14:45:14.4646275Z      return o0 & g1;
2023-07-15T14:45:14.4646397Z 
2023-07-15T14:45:14.4646455Z r.
2023-07-15T14:45:14.4646855Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/sumarray/sumarray/sumarray.c
2023-07-15T14:45:14.4647413Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/sumarray/sumarray/sumarray.c
2023-07-15T14:45:14.4647754Z @@ -10,7 +10,7 @@
2023-07-15T14:45:14.4647912Z  
2023-07-15T14:45:14.4648141Z      local0 = 0;
2023-07-15T14:45:14.4648314Z      local1 = 0;
2023-07-15T14:45:14.4648533Z -    while (local1 <= 9) {
2023-07-15T14:45:14.4648739Z +    while (local1 < 9) {
2023-07-15T14:45:14.4648946Z          local0 += a[local1];
2023-07-15T14:45:14.4649142Z          local1++;
2023-07-15T14:45:14.4649311Z      }
2023-07-15T14:45:14.4649409Z 
2023-07-15T14:45:14.4649468Z r.
2023-07-15T14:45:14.4649885Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/switchAnd_cc/switchAnd_cc/switchAnd_cc.c
2023-07-15T14:45:14.4650520Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/switchAnd_cc/switchAnd_cc/switchAnd_cc.c
2023-07-15T14:45:14.4650866Z @@ -4,13 +4,16 @@
2023-07-15T14:45:14.4651055Z  /** address: 0x0001060c */
2023-07-15T14:45:14.4651276Z  int main(int argc, char *argv[])
2023-07-15T14:45:14.4651473Z  {
2023-07-15T14:45:14.4651670Z -    if (argc >= 2) {
2023-07-15T14:45:14.4651851Z +    if (argc > 2) {
2023-07-15T14:45:14.4652095Z          switch(argc - 2 & 0x7) {
2023-07-15T14:45:14.4652286Z          case 0:
2023-07-15T14:45:14.4652466Z              printf("Two!\n");
2023-07-15T14:45:14.4652716Z              break;
2023-07-15T14:45:14.4652902Z          case 1:
2023-07-15T14:45:14.4653084Z              printf("Three!\n");
2023-07-15T14:45:14.4653276Z +            break;
2023-07-15T14:45:14.4653455Z +        case 2:
2023-07-15T14:45:14.4653633Z +            printf("Four!\n");
2023-07-15T14:45:14.4653818Z              break;
2023-07-15T14:45:14.4653985Z          }
2023-07-15T14:45:14.4654146Z      }
2023-07-15T14:45:14.4654257Z 
2023-07-15T14:45:14.4654319Z r
2023-07-15T14:45:14.4654725Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/switch_cc/switch_cc/switch_cc.c
2023-07-15T14:45:14.4655265Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/switch_cc/switch_cc/switch_cc.c
2023-07-15T14:45:14.4655592Z @@ -4,7 +4,7 @@
2023-07-15T14:45:14.4655776Z  /** address: 0x0001090c */
2023-07-15T14:45:14.4655987Z  int main(int argc, char *argv[])
2023-07-15T14:45:14.4656177Z  {
2023-07-15T14:45:14.4656426Z -    if ((unsigned int)(argc - 2) > 5) {
2023-07-15T14:45:14.4656680Z +    if (argc - 2 > 5) {
2023-07-15T14:45:14.4656873Z          printf("Other!\n");
2023-07-15T14:45:14.4657057Z      }
2023-07-15T14:45:14.4657213Z      else {
2023-07-15T14:45:14.4657315Z 
2023-07-15T14:45:14.4657373Z r
2023-07-15T14:45:14.4657781Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/switch_gcc/switch_gcc/switch_gcc.c
2023-07-15T14:45:14.4658407Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/switch_gcc/switch_gcc/switch_gcc.c
2023-07-15T14:45:14.4658740Z @@ -6,7 +6,7 @@
2023-07-15T14:45:14.4658901Z  {
2023-07-15T14:45:14.4659065Z      int o0; 		// r8
2023-07-15T14:45:14.4659225Z  
2023-07-15T14:45:14.4659457Z -    if ((unsigned int)(argc - 2) > 5) {
2023-07-15T14:45:14.4659707Z +    if (argc - 2 > 5) {
2023-07-15T14:45:14.4659896Z          o0 = "Other!\n";
2023-07-15T14:45:14.4660086Z      }
2023-07-15T14:45:14.4660246Z      else {
2023-07-15T14:45:14.4660354Z 
2023-07-15T14:45:14.4660408Z r
2023-07-15T14:45:14.4660823Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/testarray1/testarray1/testarray1.c
2023-07-15T14:45:14.4661382Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/testarray1/testarray1/testarray1.c
2023-07-15T14:45:14.4661715Z @@ -10,7 +10,7 @@
2023-07-15T14:45:14.4661873Z  
2023-07-15T14:45:14.4662043Z      local0 = 0;
2023-07-15T14:45:14.4662233Z      local1 = 0;
2023-07-15T14:45:14.4662450Z -    while (local1 <= 4) {
2023-07-15T14:45:14.4662650Z +    while (local1 < 4) {
2023-07-15T14:45:14.4662879Z          o0 = *(unsigned char*)(local1 + 0x20930);
2023-07-15T14:45:14.4663103Z          local0 += o0 << 24 >> 24;
2023-07-15T14:45:14.4663295Z          local1++;
2023-07-15T14:45:14.4663404Z 
2023-07-15T14:45:14.4663465Z r
2023-07-15T14:45:14.4663881Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/testarray2/testarray2/testarray2.c
2023-07-15T14:45:14.4664505Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/testarray2/testarray2/testarray2.c
2023-07-15T14:45:14.4664841Z @@ -16,7 +16,7 @@
2023-07-15T14:45:14.4665017Z      fst(0x20a46);
2023-07-15T14:45:14.4665199Z      local1 = 0x20a50;
2023-07-15T14:45:14.4665378Z      local2 = 0;
2023-07-15T14:45:14.4665597Z -    while (local2 <= 4) {
2023-07-15T14:45:14.4665811Z +    while (local2 < 4) {
2023-07-15T14:45:14.4666093Z          o0 = *(unsigned char*)local1;
2023-07-15T14:45:14.4666307Z          local0 += o0 << 24 >> 24;
2023-07-15T14:45:14.4666494Z          local1++;
2023-07-15T14:45:14.4666607Z 
2023-07-15T14:45:14.4666665Z r.
2023-07-15T14:45:14.4667029Z --- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/uns/uns/uns.c
2023-07-15T14:45:14.4667507Z +++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/uns/uns/uns.c
2023-07-15T14:45:14.4667818Z @@ -4,16 +4,16 @@
2023-07-15T14:45:14.4668016Z  /** address: 0x00010684 */
2023-07-15T14:45:14.4668613Z  int main(int argc, char *argv[])
2023-07-15T14:45:14.4668805Z  {
2023-07-15T14:45:14.4669084Z -    if ((unsigned int)argc > (unsigned int)0xee6b27ff) {
2023-07-15T14:45:14.4669323Z +    if (argc > 0xee6b27ff) {
2023-07-15T14:45:14.4669598Z          printf("Population exceeds %u\n", (unsigned int)0xee6b2800);
2023-07-15T14:45:14.4669841Z      }
2023-07-15T14:45:14.4670130Z -    if ((unsigned int)argc <= (unsigned int)0xefffffff) {
2023-07-15T14:45:14.4670387Z +    if (argc <= 0xefffffff) {
2023-07-15T14:45:14.4670646Z          printf("The mask is %x\n", (unsigned int)0xf0000000);
2023-07-15T14:45:14.4670858Z      }
2023-07-15T14:45:14.4671083Z -    if ((unsigned int)argc > 1) {
2023-07-15T14:45:14.4671283Z +    if (argc > 1) {
2023-07-15T14:45:14.4671497Z          printf("Arguments supplied\n");
2023-07-15T14:45:14.4671699Z      }
2023-07-15T14:45:14.4671921Z -    if (0 - argc < -2) {
2023-07-15T14:45:14.4672149Z +    if (0 - argc <= -2) {
2023-07-15T14:45:14.4672381Z          printf("Three or more arguments\n");
2023-07-15T14:45:14.4672590Z      }
2023-07-15T14:45:14.4672750Z      return 0;
2023-07-15T14:45:14.4672888Z 
2023-07-15T14:45:14.4672948Z r.
2023-07-15T14:45:14.4673044Z 
2023-07-15T14:45:14.4673121Z Regressions:
2023-07-15T14:45:14.4673482Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/OSX/o4/phi2
2023-07-15T14:45:14.4673904Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/banner
2023-07-15T14:45:14.4674370Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/branch
2023-07-15T14:45:14.4674819Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/condcodexform_gcc
2023-07-15T14:45:14.4675254Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/elfhashtest
2023-07-15T14:45:14.4675669Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fib
2023-07-15T14:45:14.4676082Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fibo3
2023-07-15T14:45:14.4676502Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fibo4
2023-07-15T14:45:14.4676926Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fibo-O4
2023-07-15T14:45:14.4677358Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/interleavedcc
2023-07-15T14:45:14.4677776Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/loop
2023-07-15T14:45:14.4678203Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/nestedswitch
2023-07-15T14:45:14.4678629Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/param1
2023-07-15T14:45:14.4679042Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/phi
2023-07-15T14:45:14.4679450Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/phi2
2023-07-15T14:45:14.4679867Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/short1
2023-07-15T14:45:14.4680337Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/short2
2023-07-15T14:45:14.4680759Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/sumarray
2023-07-15T14:45:14.4681183Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/switchAnd_cc
2023-07-15T14:45:14.4681603Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/switch_cc
2023-07-15T14:45:14.4683329Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/switch_gcc
2023-07-15T14:45:14.4683836Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/testarray1
2023-07-15T14:45:14.4684269Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/testarray2
2023-07-15T14:45:14.4684697Z r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/uns
2023-07-15T14:45:14.4684890Z 
2023-07-15T14:45:14.4685052Z Testing for crashes ..........................................................................................................
2023-07-15T14:45:14.4685303Z Testing finished.
2023-07-15T14:45:14.4685424Z 
2023-07-15T14:45:14.4685536Z ninja: build stopped: subcommand failed.
2023-07-15T14:45:14.4686100Z [1m[31m=> ERROR: boomerang-0.5.2_2: do

motorto avatar Jul 15 '23 16:07 motorto

I see that those are SPARC binaries, right? cs5 fixed some SPARC issues, that could be the cause. It definitely improved the output for us (Rizin): https://github.com/rizinorg/rizin/pull/3653/commits/c7268dd205ae8f38f771225a1b0760c6b4a3a714

XVilka avatar Jul 15 '23 16:07 XVilka

Updated rizin to last version, the regression affected are the same.

Regressions:

  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/OSX/o4/phi2
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/banner
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/branch
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/condcodexform_gcc
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/elfhashtest
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fib
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fibo3
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fibo4
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fibo-O4
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/interleavedcc
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/loop
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/nestedswitch
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/param1
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/phi
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/phi2
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/short1
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/short2
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/sumarray
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/switchAnd_cc
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/switch_cc
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/switch_gcc
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/testarray1
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/testarray2
  • r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/uns
make check
=> boomerang-0.5.2_2: running do_check ...
[1/2] Generating copy-regression-script
[2/2] cd /builddir/boomerang-0.5.2/build/tests/regression-tests && /usr/bin/python3 ./regression-tester.py /builddir/boomerang-0.5.2/build/out/bin/boomerang-cli
FAILED: tests/regression-tests/CMakeFiles/check /builddir/boomerang-0.5.2/build/tests/regression-tests/CMakeFiles/check 
cd /builddir/boomerang-0.5.2/build/tests/regression-tests && /usr/bin/python3 ./regression-tester.py /builddir/boomerang-0.5.2/build/out/bin/boomerang-cli

Boomerang Regression Tester
===========================

Cleaning up old data ...
Testing for regressions ..............................
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/OSX/o4/phi2/phi2/phi2.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/OSX/o4/phi2/phi2/phi2.c
@@ -8,8 +8,8 @@
     int g29; 		// r29
     int g3; 		// r3
     char *g30; 		// r30
-    int g3_2; 		// r3{6}
-    int g3_5; 		// r3{8}
+    int g3_2; 		// r3{8}
+    int g3_5; 		// r3{6}
 
     g30 = *(argv + 4);
     if (argc <= 2) {
@@ -17,11 +17,11 @@
         g29 = g3;
     }
     else {
+        g3_5 = strlen(g30);
+        g29 = g3_5;
         g3_2 = strlen(g30);
-        g29 = g3_2;
-        g3_5 = strlen(g30);
-        g28 = g3_5;
-        printf("%d", g3_2 + g3_5);
+        g28 = g3_2;
+        printf("%d", g3_5 + g3_2);
     }
     printf("%d, %d", g29, g28);
     printf("%d\n", g29);

r....................................................................................................................
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/banner/banner/banner.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/banner/banner/banner.c
@@ -26,28 +26,28 @@
     local5 = o0 + 4;
     local8 = local4;
     local4 = local8 - 1;
-    while (local8 != 1) {
+    while (SUBFLAGS(local8 - 1, 0, local8 - 1)) {
         o0 = *local5;
         o0 = strlen(o0); /* Warning: also results in o2, o3, o4 */
         local6 = o0;
-        if (o0 > 10) {
+        if (o0 >= 10) {
             local6 = 10;
         }
         local7 = 0;
 bb0x10794:
-        if (local7 <= 6) {
+        if (local7 < 6) {
             local0 = 0;
-            while (local0 < local6) {
+            while (SUBFLAGS(local0, local6, local0 - local6)) {
                 o1 = *local5;
                 o0 = *(unsigned char*)(o1 + local0);
                 o0 = (o0 << 24 >> 24) - 32;
                 local2 = o0;
-                if (o0 < 0) {
+                if (o0 <= 0) {
                     local2 = 0;
                 }
                 local1 = 0;
 bb0x10804:
-                if (local1 <= 6) {
+                if (local1 < 6) {
                     o1 = local0 * 8 + o6 - 16;
                     o3 = o1 + local1;
                     o4 = 0x220b4;
@@ -62,9 +62,9 @@
                 local0++;
             }
             local0 = local6 * 8 - 1;
-            while (local0 >= 0) {
+            while (local0 > 0) {
                 o0 = *(unsigned char*)(o6 + local0 - 128);
-                if (o0 << 24 >> 24 != 32) {
+                if (!SUBFLAGS(o0 << 24 >> 24, 32, (o0 << 24 >> 24) - 32)) {
                     break;
                 }
                 *(__size8*)(o6 + local0 - 128) = 0;

r.
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/branch/branch/branch.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/branch/branch/branch.c
@@ -5,23 +5,23 @@
 int main(int argc, char *argv[])
 {
     int local0; 		// m[o6 - 20]
-    unsigned int local1; 		// m[o6 - 24]
+    int local1; 		// m[o6 - 24]
 
     scanf("%d", &local0);
     scanf("%d", &local1);
-    if (local0 == 5) {
+    if (!SUBFLAGS(5, local0, 5 - local0)) {
         printf("Equal\n");
     }
-    if (local0 != 5) {
+    if (!SUBFLAGS(5, local0, 5 - local0)) {
         printf("Not Equal\n");
     }
-    if (5 > local0) {
+    if (5 >= local0) {
         printf("Greater\n");
     }
-    if (5 <= local0) {
+    if (!SUBFLAGS(5, local0, 5 - local0)) {
         printf("Less or Equal\n");
     }
-    if (5 >= local0) {
+    if (!SUBFLAGS(5, local0, 5 - local0)) {
         printf("Greater or Equal\n");
     }
     if (5 < local0) {
@@ -33,16 +33,16 @@
     if (5 <= local1) {
         printf("Less or Equal Unsigned\n");
     }
-    if (5 >= local1) {
+    if (!SUBFLAGS(5, local1, 5 - local1)) {
         printf("Carry Clear\n");
     }
-    if (5 < local1) {
+    if (!SUBFLAGS(5, local1, 5 - local1)) {
         printf("Carry Set\n");
     }
-    if (5 >= local0) {
+    if (local0 == 5) {
         printf("Minus\n");
     }
-    if (5 < local0) {
+    if (!SUBFLAGS(5, local0, 5 - local0)) {
         printf("Plus\n");
     }
     return 0;

r.
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/condcodexform_gcc/condcodexform_gcc/condcodexform_gcc.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/condcodexform_gcc/condcodexform_gcc/condcodexform_gcc.c
@@ -22,33 +22,33 @@
     else {
         o1 = 0;
     }
-    if (o1 == 0) {
+    if (SUBFLAGS(o1, 0, o1)) {
         o2 = 0x10d0c;
     }
     else {
         o2 = 0x10d04;
     }
-    if (o1 == 0) {
+    if (SUBFLAGS(o1, 0, o1)) {
         o3 = 0x10d1c;
     }
     else {
         o3 = 0x10d14;
     }
-    if (o1 == 0) {
+    if (SUBFLAGS(o1, 0, o1)) {
         o4 = 0x10d2c;
     }
     else {
         o4 = 0x10d24;
     }
-    if (o1 == 0) {
+    if (SUBFLAGS(o1, 0, o1)) {
         o5 = 0x10d3c;
     }
     else {
         o5 = 0x10d34;
     }
-    if (o1 == 0) {
+    if (SUBFLAGS(o1, 0, o1)) {
         i0 = 0;
-        if (o2 == 0x10d0c && o3 == 0x10d1c && o4 == 0x10d2c) {
+        if (!SUBFLAGS(o2, 0x10d0c, o2 - 0x10d0c) && !SUBFLAGS(o3, 0x10d1c, o3 - 0x10d1c) && !SUBFLAGS(o4, 0x10d2c, o4 - 0x10d2c)) {
             o0 = 0x10d3c;
 bb0x10cc4:
             i0 = 1 - ((o5 ^ o0) != 0);
@@ -57,13 +57,13 @@
     }
     else {
         i0 = 0;
-        if (o2 == 0x10d04 && o3 == 0x10d14 && o4 == 0x10d24) {
+        if (!SUBFLAGS(o2, 0x10d04, o2 - 0x10d04) && !SUBFLAGS(o3, 0x10d14, o3 - 0x10d14) && !SUBFLAGS(o4, 0x10d24, o4 - 0x10d24)) {
             o0 = 0x10d34;
             goto bb0x10cc4;
         }
     }
     argc = local0;
-    if (i0 == 0) {
+    if (SUBFLAGS(i0, 0, i0)) {
         o0_1 = "Failed!\n";
     }
     else {

r
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/elfhashtest/elfhashtest/elfhashtest.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/elfhashtest/elfhashtest/elfhashtest.c
@@ -33,7 +33,7 @@
     o3 = (int) *param1;
     g1 = param1;
     o4 = 0;
-    if (o3 != 0) {
+    if (!SUBFLAGS(o3, 0, o3)) {
         do {
             g1_1 = g1;
             param2 = local0;

r..
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/fib/fib/fib.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/fib/fib/fib.c
@@ -20,7 +20,7 @@
     int o0_1; 		// r8{4}
 
     i0 = param1;
-    if (param1 > 1) {
+    if (param1 >= 1) {
         o0_1 = fib(param1 - 1);
         o0 = fib(param1 - 2);
         i0 = o0_1 + o0;

r.
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/fibo3/fibo3/fibo3.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/fibo3/fibo3/fibo3.c
@@ -22,7 +22,7 @@
     int o0; 		// r8
     int o0_1; 		// r8{4}
 
-    if (param1 <= 1) {
+    if (param1 < 1) {
         local2 = param1;
     }
     else {

r
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/fibo4/fibo4/fibo4.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/fibo4/fibo4/fibo4.c
@@ -21,7 +21,7 @@
     int o2; 		// r10
     __size32 o2_1; 		// r10{3}
 
-    if (param1 <= 1) {
+    if (param1 < 1) {
         o2 = param1;
     }
     else {

r
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/fibo-O4/fibo-O4/fibo-O4.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/fibo-O4/fibo-O4/fibo-O4.c
@@ -13,7 +13,7 @@
     printf("Input number: ");
     scanf("%d", &local0);
     o2 = local0;
-    if (local0 > 1) {
+    if (local0 >= 1) {
         o0_2 = fib(local0 - 1);
         o0 = fib(local0 - 2);
         o2 = o0_2 + o0;
@@ -30,7 +30,7 @@
     int o0_1; 		// r8{4}
 
     i0 = param1;
-    if (param1 > 1) {
+    if (param1 >= 1) {
         o0_1 = fib(param1 - 1);
         o0 = fib(param1 - 2);
         i0 = o0_1 + o0;

r.....
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/interleavedcc/interleavedcc/interleavedcc.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/interleavedcc/interleavedcc/interleavedcc.c
@@ -28,7 +28,7 @@
     if (param2 != param3) {
         o0 = 1;
         local0 = o0;
-        if (param1 >= 0) {
+        if (param1 > 0) {
             o0 = 0;
             local0 = o0;
         }
@@ -36,7 +36,7 @@
     else {
         o0_1 = 2;
         local0 = o0_1;
-        if (param1 < 0) {
+        if (param1 <= 0) {
             o0 = 3;
             local0 = o0;
         }

r
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/loop/loop/loop.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/loop/loop/loop.c
@@ -7,7 +7,7 @@
     int local0; 		// m[o6 - 20]
 
     local0 = 0;
-    while (local0 <= 9) {
+    while (local0 < 9) {
         local0++;
     }
     printf("%i\n", local0);

r..
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/nestedswitch/nestedswitch/nestedswitch.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/nestedswitch/nestedswitch/nestedswitch.c
@@ -1,8 +1,8 @@
-int main(unsigned int argc, char *argv[]);
+int main(int argc, char *argv[]);
 
 
 /** address: 0x000106a4 */
-int main(unsigned int argc, char *argv[])
+int main(int argc, char *argv[])
 {
     int o0; 		// r8
 

r
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/param1/param1/param1.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/param1/param1/param1.c
@@ -19,7 +19,7 @@
     __size32 o1; 		// r9
 
     local0 = param2;
-    if (param1 < 0) {
+    if (param1 <= 0) {
         o1 = 0;
         local0 = o1;
     }

r.
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/phi/phi/phi.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/phi/phi/phi.c
@@ -22,8 +22,8 @@
     int o0; 		// r8
     int o0_1; 		// r8{4}
 
-    if (param1 <= 1) {
-        if (param1 != 1) {
+    if (param1 < 1) {
+        if (SUBFLAGS(param1, 1, param1 - 1)) {
             local1 = param1;
         }
         else {

r
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/phi2/phi2/phi2.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/phi2/phi2/phi2.c
@@ -25,7 +25,7 @@
     int o0_5; 		// r8{8}
 
     local2 = param3;
-    if (param1 <= 2) {
+    if (param1 < 2) {
         o0 = strlen(param2);
         local0 = o0;
     }

r.
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/short1/short1/short1.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/short1/short1/short1.c
@@ -1,5 +1,5 @@
 int main(int argc, char *argv[]);
-__size32 test(int param1, int param2, int param3);
+__size32 test(__size32 param1, __size32 param2, __size32 param3);
 
 
 /** address: 0x000106e8 */
@@ -19,11 +19,11 @@
 }
 
 /** address: 0x00010688 */
-__size32 test(int param1, int param2, int param3)
+__size32 test(__size32 param1, __size32 param2, __size32 param3)
 {
     __size32 local0; 		// m[o6 - 20]
 
-    if (param1 < param2 || param2 < param3) {
+    if (SUBFLAGS(param1, param2, param1 - param2) || SUBFLAGS(param2, param3, param2 - param3)) {
         local0 = 1;
     }
     else {

r
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/short2/short2/short2.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/short2/short2/short2.c
@@ -1,5 +1,5 @@
 int main(int argc, char *argv[]);
-__size32 test(int param1, int param2, int param3);
+__size32 test(__size32 param1, __size32 param2, __size32 param3);
 
 
 /** address: 0x000106b4 */
@@ -19,17 +19,17 @@
 }
 
 /** address: 0x00010688 */
-__size32 test(int param1, int param2, int param3)
+__size32 test(__size32 param1, __size32 param2, __size32 param3)
 {
     int g1; 		// r1
     int o0; 		// r8
 
     g1 = 1;
     o0 = 1;
-    if (param1 >= param2) {
+    if (!SUBFLAGS(param1, param2, param1 - param2)) {
         o0 = 0;
     }
-    if (param2 >= param3) {
+    if (!SUBFLAGS(param2, param3, param2 - param3)) {
         g1 = 0;
     }
     return o0 & g1;

r.
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/sumarray/sumarray/sumarray.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/sumarray/sumarray/sumarray.c
@@ -10,7 +10,7 @@
 
     local0 = 0;
     local1 = 0;
-    while (local1 <= 9) {
+    while (local1 < 9) {
         local0 += a[local1];
         local1++;
     }

r.
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/switchAnd_cc/switchAnd_cc/switchAnd_cc.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/switchAnd_cc/switchAnd_cc/switchAnd_cc.c
@@ -4,13 +4,16 @@
 /** address: 0x0001060c */
 int main(int argc, char *argv[])
 {
-    if (argc >= 2) {
+    if (argc > 2) {
         switch(argc - 2 & 0x7) {
         case 0:
             printf("Two!\n");
             break;
         case 1:
             printf("Three!\n");
+            break;
+        case 2:
+            printf("Four!\n");
             break;
         }
     }

r
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/switch_cc/switch_cc/switch_cc.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/switch_cc/switch_cc/switch_cc.c
@@ -4,7 +4,7 @@
 /** address: 0x0001090c */
 int main(int argc, char *argv[])
 {
-    if ((unsigned int)(argc - 2) > 5) {
+    if (argc - 2 > 5) {
         printf("Other!\n");
     }
     else {

r
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/switch_gcc/switch_gcc/switch_gcc.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/switch_gcc/switch_gcc/switch_gcc.c
@@ -6,7 +6,7 @@
 {
     int o0; 		// r8
 
-    if ((unsigned int)(argc - 2) > 5) {
+    if (argc - 2 > 5) {
         o0 = "Other!\n";
     }
     else {

r
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/testarray1/testarray1/testarray1.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/testarray1/testarray1/testarray1.c
@@ -10,7 +10,7 @@
 
     local0 = 0;
     local1 = 0;
-    while (local1 <= 4) {
+    while (local1 < 4) {
         o0 = *(unsigned char*)(local1 + 0x20930);
         local0 += o0 << 24 >> 24;
         local1++;

r
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/testarray2/testarray2/testarray2.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/testarray2/testarray2/testarray2.c
@@ -16,7 +16,7 @@
     fst(0x20a46);
     local1 = 0x20a50;
     local2 = 0;
-    while (local2 <= 4) {
+    while (local2 < 4) {
         o0 = *(unsigned char*)local1;
         local0 += o0 << 24 >> 24;
         local1++;

r.
--- /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/uns/uns/uns.c
+++ /builddir/boomerang-0.5.2/build/tests/regression-tests/expected-outputs/sparc/uns/uns/uns.c
@@ -4,16 +4,16 @@
 /** address: 0x00010684 */
 int main(int argc, char *argv[])
 {
-    if ((unsigned int)argc > (unsigned int)0xee6b27ff) {
+    if (argc > 0xee6b27ff) {
         printf("Population exceeds %u\n", (unsigned int)0xee6b2800);
     }
-    if ((unsigned int)argc <= (unsigned int)0xefffffff) {
+    if (argc <= 0xefffffff) {
         printf("The mask is %x\n", (unsigned int)0xf0000000);
     }
-    if ((unsigned int)argc > 1) {
+    if (argc > 1) {
         printf("Arguments supplied\n");
     }
-    if (0 - argc < -2) {
+    if (0 - argc <= -2) {
         printf("Three or more arguments\n");
     }
     return 0;

r.

Regressions:
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/OSX/o4/phi2
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/banner
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/branch
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/condcodexform_gcc
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/elfhashtest
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fib
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fibo3
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fibo4
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/fibo-O4
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/interleavedcc
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/loop
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/nestedswitch
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/param1
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/phi
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/phi2
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/short1
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/short2
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/sumarray
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/switchAnd_cc
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/switch_cc
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/switch_gcc
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/testarray1
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/testarray2
r /builddir/boomerang-0.5.2/build/out/share/boomerang/samples/sparc/uns

Testing for crashes ..........................................................................................................
Testing finished.

motorto avatar Aug 07 '23 18:08 motorto

@motorto Boomerang doesn't use Rizin, I just meant they probably have the same reason for the changed test output as us. Looking at the development speed though, it's unlikely they will fix it soon. I just recommend disabling SPARC tests.

XVilka avatar Aug 08 '23 07:08 XVilka