Blame tests/read_unaligned.c

Packit Service 97d2fb
/* Test program for read_[type]_unaligned.
Packit Service 97d2fb
   Copyright (C) 2020, Red Hat Inc.
Packit Service 97d2fb
   This file is part of elfutils.
Packit Service 97d2fb
Packit Service 97d2fb
   This file is free software; you can redistribute it and/or modify
Packit Service 97d2fb
   it under the terms of the GNU General Public License as published by
Packit Service 97d2fb
   the Free Software Foundation; either version 3 of the License, or
Packit Service 97d2fb
   (at your option) any later version.
Packit Service 97d2fb
Packit Service 97d2fb
   elfutils is distributed in the hope that it will be useful, but
Packit Service 97d2fb
   WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 97d2fb
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 97d2fb
   GNU General Public License for more details.
Packit Service 97d2fb
Packit Service 97d2fb
   You should have received a copy of the GNU General Public License
Packit Service 97d2fb
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
Packit Service 97d2fb
Packit Service 97d2fb
#include <assert.h>
Packit Service 97d2fb
#include <endian.h>
Packit Service 97d2fb
#include <inttypes.h>
Packit Service 97d2fb
#include <stdbool.h>
Packit Service 97d2fb
#include <stdint.h>
Packit Service 97d2fb
#include <stdio.h>
Packit Service 97d2fb
Packit Service 97d2fb
#include "../libdw/libdwP.h"
Packit Service 97d2fb
#include "../libdw/memory-access.h"
Packit Service 97d2fb
Packit Service 97d2fb
union u8
Packit Service 97d2fb
{
Packit Service 97d2fb
  uint8_t v;
Packit Service 97d2fb
  unsigned char c[1];
Packit Service 97d2fb
};
Packit Service 97d2fb
Packit Service 97d2fb
union s8
Packit Service 97d2fb
{
Packit Service 97d2fb
  int8_t v;
Packit Service 97d2fb
  unsigned char c[1];
Packit Service 97d2fb
};
Packit Service 97d2fb
Packit Service 97d2fb
union u16
Packit Service 97d2fb
{
Packit Service 97d2fb
  uint16_t v;
Packit Service 97d2fb
  unsigned char c[2];
Packit Service 97d2fb
};
Packit Service 97d2fb
Packit Service 97d2fb
union s16
Packit Service 97d2fb
{
Packit Service 97d2fb
  int16_t v;
Packit Service 97d2fb
  unsigned char c[2];
Packit Service 97d2fb
};
Packit Service 97d2fb
Packit Service 97d2fb
union u24
Packit Service 97d2fb
{
Packit Service 97d2fb
  uint32_t v:24;
Packit Service 97d2fb
  unsigned char c[3];
Packit Service 97d2fb
} __attribute__((packed));
Packit Service 97d2fb
Packit Service 97d2fb
union u32
Packit Service 97d2fb
{
Packit Service 97d2fb
  uint32_t v;
Packit Service 97d2fb
  unsigned char c[4];
Packit Service 97d2fb
};
Packit Service 97d2fb
Packit Service 97d2fb
union s32
Packit Service 97d2fb
{
Packit Service 97d2fb
  int32_t v;
Packit Service 97d2fb
  unsigned char c[4];
Packit Service 97d2fb
};
Packit Service 97d2fb
Packit Service 97d2fb
union u64
Packit Service 97d2fb
{
Packit Service 97d2fb
  uint64_t v;
Packit Service 97d2fb
  unsigned char c[8];
Packit Service 97d2fb
};
Packit Service 97d2fb
Packit Service 97d2fb
union s64
Packit Service 97d2fb
{
Packit Service 97d2fb
  uint64_t v;
Packit Service 97d2fb
  unsigned char c[8];
Packit Service 97d2fb
};
Packit Service 97d2fb
Packit Service 97d2fb
uint8_t u8_nums[] =
Packit Service 97d2fb
  {
Packit Service 97d2fb
   0,
Packit Service 97d2fb
   1,
Packit Service 97d2fb
   UINT8_MAX / 2 - 1,
Packit Service 97d2fb
   UINT8_MAX / 2,
Packit Service 97d2fb
   UINT8_MAX / 2 + 1,
Packit Service 97d2fb
   UINT8_MAX,
Packit Service 97d2fb
   UINT8_MAX -1
Packit Service 97d2fb
  };
Packit Service 97d2fb
Packit Service 97d2fb
int8_t s8_nums[] =
Packit Service 97d2fb
  {
Packit Service 97d2fb
   INT8_MIN,
Packit Service 97d2fb
   INT8_MIN + 1,
Packit Service 97d2fb
   -1,
Packit Service 97d2fb
   0,
Packit Service 97d2fb
   1,
Packit Service 97d2fb
   INT8_MAX,
Packit Service 97d2fb
   INT8_MAX - 1
Packit Service 97d2fb
  };
Packit Service 97d2fb
Packit Service 97d2fb
uint16_t u16_nums[] =
Packit Service 97d2fb
  {
Packit Service 97d2fb
   0,
Packit Service 97d2fb
   1,
Packit Service 97d2fb
   UINT16_MAX / 2 - 1,
Packit Service 97d2fb
   UINT16_MAX / 2,
Packit Service 97d2fb
   UINT16_MAX / 2 + 1,
Packit Service 97d2fb
   UINT16_MAX,
Packit Service 97d2fb
   UINT16_MAX -1
Packit Service 97d2fb
  };
Packit Service 97d2fb
Packit Service 97d2fb
int16_t s16_nums[] =
Packit Service 97d2fb
  {
Packit Service 97d2fb
   INT16_MIN,
Packit Service 97d2fb
   INT16_MIN + 1,
Packit Service 97d2fb
   -1,
Packit Service 97d2fb
   0,
Packit Service 97d2fb
   1,
Packit Service 97d2fb
   INT16_MAX,
Packit Service 97d2fb
   INT16_MAX - 1
Packit Service 97d2fb
  };
Packit Service 97d2fb
Packit Service 97d2fb
#define UINT24_MAX 0xffffff
Packit Service 97d2fb
Packit Service 97d2fb
uint32_t u24_nums[] =
Packit Service 97d2fb
  {
Packit Service 97d2fb
   0,
Packit Service 97d2fb
   1,
Packit Service 97d2fb
   UINT24_MAX / 2 - 1,
Packit Service 97d2fb
   UINT24_MAX / 2,
Packit Service 97d2fb
   UINT24_MAX / 2 + 1,
Packit Service 97d2fb
   UINT24_MAX,
Packit Service 97d2fb
   UINT24_MAX -1
Packit Service 97d2fb
  };
Packit Service 97d2fb
Packit Service 97d2fb
uint32_t u32_nums[] =
Packit Service 97d2fb
  {
Packit Service 97d2fb
   0,
Packit Service 97d2fb
   1,
Packit Service 97d2fb
   UINT32_MAX / 2 - 1,
Packit Service 97d2fb
   UINT32_MAX / 2,
Packit Service 97d2fb
   UINT32_MAX / 2 + 1,
Packit Service 97d2fb
   UINT32_MAX,
Packit Service 97d2fb
   UINT32_MAX -1
Packit Service 97d2fb
  };
Packit Service 97d2fb
Packit Service 97d2fb
int32_t s32_nums[] =
Packit Service 97d2fb
  {
Packit Service 97d2fb
   INT32_MIN,
Packit Service 97d2fb
   INT32_MIN + 1,
Packit Service 97d2fb
   -1,
Packit Service 97d2fb
   0,
Packit Service 97d2fb
   1,
Packit Service 97d2fb
   INT32_MAX,
Packit Service 97d2fb
   INT32_MAX - 1
Packit Service 97d2fb
  };
Packit Service 97d2fb
Packit Service 97d2fb
uint64_t u64_nums[] =
Packit Service 97d2fb
  {
Packit Service 97d2fb
   0,
Packit Service 97d2fb
   1,
Packit Service 97d2fb
   UINT64_MAX / 2 - 1,
Packit Service 97d2fb
   UINT64_MAX / 2,
Packit Service 97d2fb
   UINT64_MAX / 2 + 1,
Packit Service 97d2fb
   UINT64_MAX,
Packit Service 97d2fb
   UINT64_MAX -1
Packit Service 97d2fb
  };
Packit Service 97d2fb
Packit Service 97d2fb
int64_t s64_nums[] =
Packit Service 97d2fb
  {
Packit Service 97d2fb
   INT64_MIN,
Packit Service 97d2fb
   INT64_MIN + 1,
Packit Service 97d2fb
   -1,
Packit Service 97d2fb
   0,
Packit Service 97d2fb
   1,
Packit Service 97d2fb
   INT64_MAX,
Packit Service 97d2fb
   INT64_MAX - 1
Packit Service 97d2fb
  };
Packit Service 97d2fb
Packit Service 97d2fb
static unsigned char le_mem[] =
Packit Service 97d2fb
  {
Packit Service 97d2fb
    /* u8 */
Packit Service 97d2fb
    0x00,
Packit Service 97d2fb
    0x01,
Packit Service 97d2fb
    0x7e,
Packit Service 97d2fb
    0x7f,
Packit Service 97d2fb
    0x80,
Packit Service 97d2fb
    0xff,
Packit Service 97d2fb
    0xfe,
Packit Service 97d2fb
    /* s8 */
Packit Service 97d2fb
    0x80,
Packit Service 97d2fb
    0x81,
Packit Service 97d2fb
    0xff,
Packit Service 97d2fb
    0x00,
Packit Service 97d2fb
    0x01,
Packit Service 97d2fb
    0x7f,
Packit Service 97d2fb
    0x7e,
Packit Service 97d2fb
    /* u16 */
Packit Service 97d2fb
    0x00, 0x00,
Packit Service 97d2fb
    0x01, 0x00,
Packit Service 97d2fb
    0xfe, 0x7f,
Packit Service 97d2fb
    0xff, 0x7f,
Packit Service 97d2fb
    0x00, 0x80,
Packit Service 97d2fb
    0xff, 0xff,
Packit Service 97d2fb
    0xfe, 0xff,
Packit Service 97d2fb
    /* s16 */
Packit Service 97d2fb
    0x00, 0x80,
Packit Service 97d2fb
    0x01, 0x80,
Packit Service 97d2fb
    0xff, 0xff,
Packit Service 97d2fb
    0x00, 0x00,
Packit Service 97d2fb
    0x01, 0x00,
Packit Service 97d2fb
    0xff, 0x7f,
Packit Service 97d2fb
    0xfe, 0x7f,
Packit Service 97d2fb
    /* u24 */
Packit Service 97d2fb
    0x00, 0x00, 0x00,
Packit Service 97d2fb
    0x01, 0x00, 0x00,
Packit Service 97d2fb
    0xfe, 0xff, 0x7f,
Packit Service 97d2fb
    0xff, 0xff, 0x7f,
Packit Service 97d2fb
    0x00, 0x00, 0x80,
Packit Service 97d2fb
    0xff, 0xff, 0xff,
Packit Service 97d2fb
    0xfe, 0xff, 0xff,
Packit Service 97d2fb
    /* u32 */
Packit Service 97d2fb
    0x00, 0x00, 0x00, 0x00,
Packit Service 97d2fb
    0x01, 0x00, 0x00, 0x00,
Packit Service 97d2fb
    0xfe, 0xff, 0xff, 0x7f,
Packit Service 97d2fb
    0xff, 0xff, 0xff, 0x7f,
Packit Service 97d2fb
    0x00, 0x00, 0x00, 0x80,
Packit Service 97d2fb
    0xff, 0xff, 0xff, 0xff,
Packit Service 97d2fb
    0xfe, 0xff, 0xff, 0xff,
Packit Service 97d2fb
    /* s32 */
Packit Service 97d2fb
    0x00, 0x00, 0x00, 0x80,
Packit Service 97d2fb
    0x01, 0x00, 0x00, 0x80,
Packit Service 97d2fb
    0xff, 0xff, 0xff, 0xff,
Packit Service 97d2fb
    0x00, 0x00, 0x00, 0x00,
Packit Service 97d2fb
    0x01, 0x00, 0x00, 0x00,
Packit Service 97d2fb
    0xff, 0xff, 0xff, 0x7f,
Packit Service 97d2fb
    0xfe, 0xff, 0xff, 0x7f,
Packit Service 97d2fb
    /* u64 */
Packit Service 97d2fb
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
Packit Service 97d2fb
    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
Packit Service 97d2fb
    0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
Packit Service 97d2fb
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
Packit Service 97d2fb
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
Packit Service 97d2fb
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
Packit Service 97d2fb
    0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
Packit Service 97d2fb
    /* s64 */
Packit Service 97d2fb
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
Packit Service 97d2fb
    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
Packit Service 97d2fb
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
Packit Service 97d2fb
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
Packit Service 97d2fb
    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
Packit Service 97d2fb
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
Packit Service 97d2fb
    0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
Packit Service 97d2fb
  };
Packit Service 97d2fb
Packit Service 97d2fb
static unsigned char be_mem[] =
Packit Service 97d2fb
  {
Packit Service 97d2fb
    /* u8 */
Packit Service 97d2fb
    0x00,
Packit Service 97d2fb
    0x01,
Packit Service 97d2fb
    0x7e,
Packit Service 97d2fb
    0x7f,
Packit Service 97d2fb
    0x80,
Packit Service 97d2fb
    0xff,
Packit Service 97d2fb
    0xfe,
Packit Service 97d2fb
    /* s8 */
Packit Service 97d2fb
    0x80,
Packit Service 97d2fb
    0x81,
Packit Service 97d2fb
    0xff,
Packit Service 97d2fb
    0x00,
Packit Service 97d2fb
    0x01,
Packit Service 97d2fb
    0x7f,
Packit Service 97d2fb
    0x7e,
Packit Service 97d2fb
    /* u16 */
Packit Service 97d2fb
    0x00, 0x00,
Packit Service 97d2fb
    0x00, 0x01,
Packit Service 97d2fb
    0x7f, 0xfe,
Packit Service 97d2fb
    0x7f, 0xff,
Packit Service 97d2fb
    0x80, 0x00,
Packit Service 97d2fb
    0xff, 0xff,
Packit Service 97d2fb
    0xff, 0xfe,
Packit Service 97d2fb
    /* s16 */
Packit Service 97d2fb
    0x80, 0x00,
Packit Service 97d2fb
    0x80, 0x01,
Packit Service 97d2fb
    0xff, 0xff,
Packit Service 97d2fb
    0x00, 0x00,
Packit Service 97d2fb
    0x00, 0x01,
Packit Service 97d2fb
    0x7f, 0xff,
Packit Service 97d2fb
    0x7f, 0xfe,
Packit Service 97d2fb
    /* u24 */
Packit Service 97d2fb
    0x00, 0x00, 0x00,
Packit Service 97d2fb
    0x00, 0x00, 0x01,
Packit Service 97d2fb
    0x7f, 0xff, 0xfe,
Packit Service 97d2fb
    0x7f, 0xff, 0xff,
Packit Service 97d2fb
    0x80, 0x00, 0x00,
Packit Service 97d2fb
    0xff, 0xff, 0xff,
Packit Service 97d2fb
    0xff, 0xff, 0xfe,
Packit Service 97d2fb
    /* u32 */
Packit Service 97d2fb
    0x00, 0x00, 0x00, 0x00,
Packit Service 97d2fb
    0x00, 0x00, 0x00, 0x01,
Packit Service 97d2fb
    0x7f, 0xff, 0xff, 0xfe,
Packit Service 97d2fb
    0x7f, 0xff, 0xff, 0xff,
Packit Service 97d2fb
    0x80, 0x00, 0x00, 0x00,
Packit Service 97d2fb
    0xff, 0xff, 0xff, 0xff,
Packit Service 97d2fb
    0xff, 0xff, 0xff, 0xfe,
Packit Service 97d2fb
    /* s32 */
Packit Service 97d2fb
    0x80, 0x00, 0x00, 0x00,
Packit Service 97d2fb
    0x80, 0x00, 0x00, 0x01,
Packit Service 97d2fb
    0xff, 0xff, 0xff, 0xff,
Packit Service 97d2fb
    0x00, 0x00, 0x00, 0x00,
Packit Service 97d2fb
    0x00, 0x00, 0x00, 0x01,
Packit Service 97d2fb
    0x7f, 0xff, 0xff, 0xff,
Packit Service 97d2fb
    0x7f, 0xff, 0xff, 0xfe,
Packit Service 97d2fb
    /* u64 */
Packit Service 97d2fb
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
Packit Service 97d2fb
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
Packit Service 97d2fb
    0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
Packit Service 97d2fb
    0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
Packit Service 97d2fb
    0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
Packit Service 97d2fb
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
Packit Service 97d2fb
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
Packit Service 97d2fb
    /* s64 */
Packit Service 97d2fb
    0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
Packit Service 97d2fb
    0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
Packit Service 97d2fb
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
Packit Service 97d2fb
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
Packit Service 97d2fb
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
Packit Service 97d2fb
    0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
Packit Service 97d2fb
    0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
Packit Service 97d2fb
  };
Packit Service 97d2fb
Packit Service 97d2fb
int
Packit Service 97d2fb
main (int argc, char **argv __attribute__((unused)))
Packit Service 97d2fb
{
Packit Service 97d2fb
  /* No arguments means check, otherwise Write out the memory array.  */
Packit Service 97d2fb
  bool write = false;
Packit Service 97d2fb
  if (argc > 1)
Packit Service 97d2fb
    write = true;
Packit Service 97d2fb
Packit Service 97d2fb
  bool is_le = (BYTE_ORDER == LITTLE_ENDIAN);
Packit Service 97d2fb
Packit Service 97d2fb
  if (write)
Packit Service 97d2fb
    {
Packit Service 97d2fb
      if (is_le)
Packit Service 97d2fb
	printf ("static unsigned char le_mem[] =\n");
Packit Service 97d2fb
      else
Packit Service 97d2fb
	printf ("static unsigned char be_mem[] =\n");
Packit Service 97d2fb
      printf ("  {\n");
Packit Service 97d2fb
    }
Packit Service 97d2fb
Packit Service 97d2fb
  Dwarf dbg_le = { .other_byte_order = !is_le };
Packit Service 97d2fb
  Dwarf dbg_be = { .other_byte_order = is_le };
Packit Service 97d2fb
Packit Service 97d2fb
  unsigned char *p_le = le_mem;
Packit Service 97d2fb
  unsigned char *p_be = be_mem;
Packit Service 97d2fb
Packit Service 97d2fb
  union u8 u8;
Packit Service 97d2fb
  if (write)
Packit Service 97d2fb
    printf ("    /* u8 */\n");
Packit Service 97d2fb
  for (size_t i = 0; i < sizeof (u8_nums) / sizeof (u8); i++)
Packit Service 97d2fb
    {
Packit Service 97d2fb
      if (write)
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  u8.v = u8_nums[i];
Packit Service 97d2fb
	  printf ("    0x%02" PRIx8 ",\n", u8.c[0]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
      else
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  uint8_t v = *p_le++;
Packit Service 97d2fb
	  assert (v == u8_nums[i]);
Packit Service 97d2fb
	  v = *p_be++;
Packit Service 97d2fb
	  assert (v == u8_nums[i]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
    }
Packit Service 97d2fb
Packit Service 97d2fb
  union s8 s8;
Packit Service 97d2fb
  if (write)
Packit Service 97d2fb
    printf ("    /* s8 */\n");
Packit Service 97d2fb
  for (size_t i = 0; i < sizeof (s8_nums) / sizeof (s8); i++)
Packit Service 97d2fb
    {
Packit Service 97d2fb
      if (write)
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  s8.v = s8_nums[i];
Packit Service 97d2fb
	  printf ("    0x%02" PRIx8 ",\n", s8.c[0]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
      else
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  int8_t v = *p_le++;
Packit Service 97d2fb
	  assert (v == s8_nums[i]);
Packit Service 97d2fb
	  v = *p_be++;
Packit Service 97d2fb
	  assert (v == s8_nums[i]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
    }
Packit Service 97d2fb
Packit Service 97d2fb
  union u16 u16;
Packit Service 97d2fb
  if (write)
Packit Service 97d2fb
    printf ("    /* u16 */\n");
Packit Service 97d2fb
  for (size_t i = 0; i < sizeof (u16_nums) / sizeof (u16); i++)
Packit Service 97d2fb
    {
Packit Service 97d2fb
      if (write)
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  u16.v = u16_nums[i];
Packit Service 97d2fb
	  printf ("    0x%02" PRIx8 ", ", u16.c[0]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ",\n", u16.c[1]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
      else
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  uint16_t v = read_2ubyte_unaligned_inc (&dbg_le, p_le);
Packit Service 97d2fb
	  assert (v == u16_nums[i]);
Packit Service 97d2fb
	  v = read_2ubyte_unaligned_inc (&dbg_be, p_be);
Packit Service 97d2fb
	  assert (v == u16_nums[i]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
    }
Packit Service 97d2fb
Packit Service 97d2fb
  union s16 s16;
Packit Service 97d2fb
  if (write)
Packit Service 97d2fb
    printf ("    /* s16 */\n");
Packit Service 97d2fb
  for (size_t i = 0; i < sizeof (s16_nums) / sizeof (s16); i++)
Packit Service 97d2fb
    {
Packit Service 97d2fb
      if (write)
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  s16.v = s16_nums[i];
Packit Service 97d2fb
	  printf ("    0x%02" PRIx8 ", ", s16.c[0]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ",\n", s16.c[1]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
      else
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  int16_t v = read_2sbyte_unaligned_inc (&dbg_le, p_le);
Packit Service 97d2fb
	  assert (v == s16_nums[i]);
Packit Service 97d2fb
	  v = read_2sbyte_unaligned_inc (&dbg_be, p_be);
Packit Service 97d2fb
	  assert (v == s16_nums[i]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
    }
Packit Service 97d2fb
Packit Service 97d2fb
  union u24 u24;
Packit Service 97d2fb
  if (write)
Packit Service 97d2fb
    printf ("    /* u24 */\n");
Packit Service 97d2fb
  for (size_t i = 0; i < sizeof (u24_nums) / sizeof (uint32_t); i++)
Packit Service 97d2fb
    {
Packit Service 97d2fb
      if (write)
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  u24.v = u24_nums[i];
Packit Service 97d2fb
	  printf ("    0x%02" PRIx8 ", ", u24.c[0]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", u24.c[1]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ",\n", u24.c[2]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
      else
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  uint32_t v = read_3ubyte_unaligned_inc (&dbg_le, p_le);
Packit Service 97d2fb
	  assert (v == u24_nums[i]);
Packit Service 97d2fb
	  v = read_3ubyte_unaligned_inc (&dbg_be, p_be);
Packit Service 97d2fb
	  assert (v == u24_nums[i]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
    }
Packit Service 97d2fb
Packit Service 97d2fb
  union u32 u32;
Packit Service 97d2fb
  if (write)
Packit Service 97d2fb
    printf ("    /* u32 */\n");
Packit Service 97d2fb
  for (size_t i = 0; i < sizeof (u32_nums) / sizeof (u32); i++)
Packit Service 97d2fb
    {
Packit Service 97d2fb
      if (write)
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  u32.v = u32_nums[i];
Packit Service 97d2fb
	  printf ("    0x%02" PRIx8 ", ", u32.c[0]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", u32.c[1]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", u32.c[2]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ",\n", u32.c[3]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
      else
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  uint32_t v = read_4ubyte_unaligned_inc (&dbg_le, p_le);
Packit Service 97d2fb
	  assert (v == u32_nums[i]);
Packit Service 97d2fb
	  v = read_4ubyte_unaligned_inc (&dbg_be, p_be);
Packit Service 97d2fb
	  assert (v == u32_nums[i]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
    }
Packit Service 97d2fb
Packit Service 97d2fb
  union s32 s32;
Packit Service 97d2fb
  if (write)
Packit Service 97d2fb
    printf ("    /* s32 */\n");
Packit Service 97d2fb
  for (size_t i = 0; i < sizeof (s32_nums) / sizeof (s32); i++)
Packit Service 97d2fb
    {
Packit Service 97d2fb
      if (write)
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  s32.v = s32_nums[i];
Packit Service 97d2fb
	  printf ("    0x%02" PRIx8 ", ", s32.c[0]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", s32.c[1]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", s32.c[2]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ",\n", s32.c[3]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
      else
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  int32_t v = read_4sbyte_unaligned_inc (&dbg_le, p_le);
Packit Service 97d2fb
	  assert (v == s32_nums[i]);
Packit Service 97d2fb
	  v = read_4sbyte_unaligned_inc (&dbg_be, p_be);
Packit Service 97d2fb
	  assert (v == s32_nums[i]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
    }
Packit Service 97d2fb
Packit Service 97d2fb
  union u64 u64;
Packit Service 97d2fb
  if (write)
Packit Service 97d2fb
    printf ("    /* u64 */\n");
Packit Service 97d2fb
  for (size_t i = 0; i < sizeof (u64_nums) / sizeof (u64); i++)
Packit Service 97d2fb
    {
Packit Service 97d2fb
      if (write)
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  u64.v = u64_nums[i];
Packit Service 97d2fb
	  printf ("    0x%02" PRIx8 ", ", u64.c[0]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", u64.c[1]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", u64.c[2]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", u64.c[3]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", u64.c[4]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", u64.c[5]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", u64.c[6]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ",\n", u64.c[7]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
      else
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  uint64_t v = read_8ubyte_unaligned_inc (&dbg_le, p_le);
Packit Service 97d2fb
	  assert (v == u64_nums[i]);
Packit Service 97d2fb
	  v = read_8ubyte_unaligned_inc (&dbg_be, p_be);
Packit Service 97d2fb
	  assert (v == u64_nums[i]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
    }
Packit Service 97d2fb
Packit Service 97d2fb
  union s64 s64;
Packit Service 97d2fb
  if (write)
Packit Service 97d2fb
    printf ("    /* s64 */\n");
Packit Service 97d2fb
  for (size_t i = 0; i < sizeof (s64_nums) / sizeof (s64); i++)
Packit Service 97d2fb
    {
Packit Service 97d2fb
      if (write)
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  s64.v = s64_nums[i];
Packit Service 97d2fb
	  printf ("    0x%02" PRIx8 ", ", s64.c[0]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", s64.c[1]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", s64.c[2]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", s64.c[3]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", s64.c[4]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", s64.c[5]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ", ", s64.c[6]);
Packit Service 97d2fb
	  printf ("0x%02" PRIx8 ",\n", s64.c[7]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
      else
Packit Service 97d2fb
	{
Packit Service 97d2fb
	  int64_t v = read_8sbyte_unaligned_inc (&dbg_le, p_le);
Packit Service 97d2fb
	  assert (v == s64_nums[i]);
Packit Service 97d2fb
	  v = read_8sbyte_unaligned_inc (&dbg_be, p_be);
Packit Service 97d2fb
	  assert (v == s64_nums[i]);
Packit Service 97d2fb
	}
Packit Service 97d2fb
    }
Packit Service 97d2fb
Packit Service 97d2fb
  if (write)
Packit Service 97d2fb
    printf ("  };\n");
Packit Service 97d2fb
  else
Packit Service 97d2fb
    {
Packit Service 97d2fb
      assert (p_le == le_mem + sizeof (le_mem));
Packit Service 97d2fb
      assert (p_be == be_mem + sizeof (be_mem));
Packit Service 97d2fb
    }
Packit Service 97d2fb
Packit Service 97d2fb
  return 0;
Packit Service 97d2fb
}