[PATCH] sim: tests: get common tests working again
Andrew Burgess
andrew.burgess@embecosm.com
Mon Jan 11 12:22:36 GMT 2021
* Mike Frysinger via Gdb-patches <gdb-patches@sourceware.org> [2021-01-09 18:05:00 -0500]:
> These were written with 32-bit host assumptions baked into it.
> Simplify the printf formats to use ll length modifier as it's
> in C11 rather than trying to manually break it up into two,
> and cleanup some of the casts to stop assuming sizeof(long) is
> the same as sizeof(int).
>
> We also have to add a few more includes for the various funcs
> used in here.
>
> The tests aren't compiled automatically still. We can figure
> that out later with more work.
Missing ChangeLog, otherwise, LGTM.
Thanks,
Andrew
> ---
> sim/testsuite/common/alu-tst.c | 7 +++---
> sim/testsuite/common/bits-gen.c | 25 +++++++++++----------
> sim/testsuite/common/bits-tst.c | 39 ++++++++++++---------------------
> 3 files changed, 31 insertions(+), 40 deletions(-)
>
> diff --git a/sim/testsuite/common/alu-tst.c b/sim/testsuite/common/alu-tst.c
> index e7fffe502cd8..110427f62d8a 100644
> --- a/sim/testsuite/common/alu-tst.c
> +++ b/sim/testsuite/common/alu-tst.c
> @@ -14,8 +14,11 @@
>
> #define SIM_BITS_INLINE (INCLUDE_MODULE | INCLUDED_BY_MODULE)
>
> +#include <stdlib.h>
> #include <string.h>
>
> +#define PACKAGE "sim"
> +
> #include "sim-basics.h"
>
> #include "sim-alu.h"
> @@ -62,9 +65,7 @@ print_hex (unsigned64 val, int nr_bits)
> printf ("0x%08lx", (long) (unsigned32) (val));
> break;
> case 64:
> - printf ("0x%08lx%08lx",
> - (long) (unsigned32) (val >> 32),
> - (long) (unsigned32) (val));
> + printf ("0x%016llx", (long long) (unsigned64) (val));
> break;
> default:
> abort ();
> diff --git a/sim/testsuite/common/bits-gen.c b/sim/testsuite/common/bits-gen.c
> index d6f5f9c44a76..a85b807bb196 100644
> --- a/sim/testsuite/common/bits-gen.c
> +++ b/sim/testsuite/common/bits-gen.c
> @@ -17,9 +17,10 @@ GNU General Public License for more details.
> You should have received a copy of the GNU General Public License
> along with this program. If not, see <http://www.gnu.org/licenses/>. */
>
> -
> #include <stdio.h>
> -
> +#include <stdlib.h>
> +#include <string.h>
> +#include <unistd.h>
>
> void
> gen_struct (void)
> @@ -29,8 +30,8 @@ gen_struct (void)
> printf (" int line;\n");
> printf (" int row;\n");
> printf (" int col;\n");
> - printf (" long long val;\n");
> - printf (" long long check;\n");
> + printf (" unsigned64 val;\n");
> + printf (" unsigned64 check;\n");
> printf ("} test_tuples;\n");
> printf ("\n");
> printf ("typedef struct _test_spec {\n");
> @@ -62,13 +63,12 @@ gen_bit (int bitsize,
> else
> bit <<= i;
> if (bitsize == 32)
> - bit = (unsigned) bit; /* truncate it! */
> + bit &= 0xffffffff; /* truncate it! */
> /* write it out */
> printf (" { __LINE__, ");
> printf ("%d, %2d, ", -1, i);
> printf ("%s (%2d), ", macro, i);
> - printf ("UNSIGNED64 (0x%08lx%08lx), ",
> - (long) (bit >> 32), (long) bit);
> + printf ("UNSIGNED64 (0x%016llx), ", bit);
> printf ("},\n");
> }
> printf ("};\n");
> @@ -141,11 +141,10 @@ gen_mask (int bitsize,
> mask |= bit;
> }
> if (bitsize == 32)
> - mask = (unsigned long) mask;
> + mask &= 0xffffffff;
> printf ("%d, %d, ", l, h);
> printf ("%s%s (%2d, %2d), ", msb, macro, l, h);
> - printf ("UNSIGNED64 (0x%08lx%08lx), ",
> - (long) (mask >> 32), (long) mask);
> + printf ("UNSIGNED64 (0x%llx), ", mask);
> }
> else
> printf ("-1, -1, ");
> @@ -184,7 +183,6 @@ usage (int reason)
> case 4:
> fprintf (stderr, "Invalid <byte-order> argument\n");
> break;
> - default:
> }
>
> exit (1);
> @@ -232,13 +230,16 @@ main (int argc, char *argv[])
>
> printf ("#define WITH_TARGET_WORD_BITSIZE %d\n", bitsize);
> printf ("#define WITH_TARGET_WORD_MSB %d\n", msb);
> - printf ("#define WITH_HOST_WORD_BITSIZE %d\n", sizeof (int) * 8);
> + printf ("#define WITH_HOST_WORD_BITSIZE %zu\n", sizeof (int) * 8);
> printf ("#define WITH_TARGET_BYTE_ORDER %s\n", big_endian ? "BFD_ENDIAN_BIG" : "BFD_ENDIAN_LITTLE");
> printf ("\n");
> printf ("#define SIM_BITS_INLINE (ALL_H_INLINE)\n");
> printf ("\n");
> printf ("#define ASSERT(X) do { if (!(X)) abort(); } while (0)\n");
> printf ("\n");
> + printf ("#define PACKAGE \"sim\"\n");
> + printf ("#include <stdlib.h>\n");
> + printf ("#include <string.h>\n");
> printf ("#include \"sim-basics.h\"\n");
>
> gen_struct ();
> diff --git a/sim/testsuite/common/bits-tst.c b/sim/testsuite/common/bits-tst.c
> index 5a4210a76abe..bcdee1070b9d 100644
> --- a/sim/testsuite/common/bits-tst.c
> +++ b/sim/testsuite/common/bits-tst.c
> @@ -153,8 +153,8 @@ calc (const char *call,
> else
> {
> fprintf (stderr,
> - "Unknown call passed to calc (%s, 0x%08lx%08lx, %d, %d)\n",
> - call, (long)(val >> 32), (long)val, row, col);
> + "Unknown call passed to calc (%s, 0x%016llx, %d, %d)\n",
> + call, val, row, col);
> abort ();
> return val;
> }
> @@ -185,10 +185,8 @@ check_sext (int nr_bits,
> fprintf (stderr,
> "%s:%d: ", __FILE__, __LINE__);
> fprintf (stderr,
> - " %s(0x%08lx%08lx,%d) == 0x%08lx%08lx wrong, != 0x%08lx%08lx\n",
> - sexted, (long)(mask_0 >> 32), (long)mask_0, col,
> - (long)(sext_0 >> 32), (long)sext_0,
> - (long)(mask_1 >> 32), (long)mask_1);
> + " %s(0x%016llx,%d) == 0x%016llx wrong, != 0x%016llx\n",
> + sexted, mask_0, col, sext_0, mask_1);
> errors ++;
> }
> if (sext_1 != mask_1)
> @@ -196,10 +194,8 @@ check_sext (int nr_bits,
> fprintf (stderr,
> "%s:%d: ", __FILE__, __LINE__);
> fprintf (stderr,
> - " %s(0x%08lx%08lx,%d) == 0x%08lx%08lx wrong, != 0x%08lx%08lx\n",
> - sexted, (long)(mask_1 >> 32), (long)mask_1, col,
> - (long)(sext_1 >> 32), (long)sext_1,
> - (long)(mask_1 >> 32), (long)mask_1);
> + " %s(0x%016llx,%d) == 0x%016llx wrong, != 0x%016llx\n",
> + sexted, mask_1, col, sext_1, mask_1);
> errors ++;
> }
> if (sext != msmask)
> @@ -207,10 +203,8 @@ check_sext (int nr_bits,
> fprintf (stderr,
> "%s:%d: ", __FILE__, __LINE__);
> fprintf (stderr,
> - " %s(0x%08lx%08lx,%d) == 0x%08lx%08lx wrong, != 0x%08lx%08lx (%s(%d,%d))\n",
> - sexted, (long)(mask >> 32), (long)mask, col,
> - (long)(sext >> 32), (long)sext,
> - (long)(msmask >> 32), (long)msmask,
> + " %s(0x%016llx,%d) == 0x%016llx wrong, != 0x%016llx (%s(%d,%d))\n",
> + sexted, mask, col, sext, msmask,
> msmasked, 0, (msb_nr ? nr_bits - col - 1 : col));
> errors ++;
> }
> @@ -244,10 +238,8 @@ check_rot (int nr_bits,
> || (shift != 0 && rot == mask && abs(row - col) != (nr_bits - 1)))
> {
> fprintf (stderr, "%s:%d: ", __FILE__, __LINE__);
> - fprintf (stderr, " %s(%s(0x%08lx%08lx,%d) == 0x%08lx%08lx, %d) failed\n",
> - roted, roted,
> - (long)(mask >> 32), (long)mask, shift,
> - (long)(urot >> 32), (long)urot, -shift);
> + fprintf (stderr, " %s(%s(0x%016llx,%d) == 0x%016llx, %d) failed\n",
> + roted, roted, mask, shift, urot, -shift);
> errors ++;
> }
> }
> @@ -276,10 +268,8 @@ check_extract (int nr_bits,
> if (mask != inst)
> {
> fprintf (stderr, "%s:%d: ", __FILE__, __LINE__);
> - fprintf (stderr, " %s(%d,%d)=0x%08lx%08lx -> %s=0x%08lx%08lx -> %s=0x%08lx%08lx failed\n",
> - masked, row, col, (long)(mask >> 32), (long)mask,
> - extracted, (long)(extr >> 32), (long)extr,
> - inserted, (long)(inst >> 32), (long)inst);
> + fprintf (stderr, " %s(%d,%d)=0x%016llx -> %s=0x%016llx -> %s=0x%016llx failed\n",
> + masked, row, col, mask, extracted, extr, inserted, inst);
> errors ++;
> }
> }
> @@ -317,9 +307,8 @@ check_bits (int call,
> fprintf (stderr, " (%d, %d)", tuple->row, tuple->col);
> else
> fprintf (stderr, " (%d)", tuple->col);
> - fprintf (stderr, " == 0x%08lx%08lx wrong, != 0x%08lx%08lx\n",
> - (long) (val >> 32), (long) val,
> - (long) (check >> 32), (long) check);
> + fprintf (stderr, " == 0x%016llx wrong, != 0x%016llx\n",
> + val, check);
> errors ++;
> }
> }
> --
> 2.28.0
>
More information about the Gdb-patches
mailing list