# NOT YET: Breaks BELIEVE_PCC_PROMOTION and confuses non-
# multi-arch defaults.
# test "${predefault}" || predefault=0
+
+ # come up with a format, use a few guesses for variables
+ case ":${class}:${fmt}:${print}:" in
+ :[vV]::: )
+ if [ "${returntype}" = int ]
+ then
+ fmt="%d"
+ print="${macro}"
+ elif [ "${returntype}" = long ]
+ then
+ fmt="%ld"
+ print="${macro}"
+ fi
+ ;;
+ esac
test "${fmt}" || fmt="%ld"
test "${print}" || print="(long) ${macro}"
+
case "${invalid_p}" in
0 ) valid_p=1 ;;
"" )
cat <<EOF
i:2:TARGET_ARCHITECTURE:const struct bfd_arch_info *:bfd_arch_info::::&bfd_default_arch_struct::::%s:TARGET_ARCHITECTURE->printable_name:TARGET_ARCHITECTURE != NULL
#
-i:2:TARGET_BYTE_ORDER:int:byte_order::::BIG_ENDIAN
+i:2:TARGET_BYTE_ORDER:int:byte_order::::BFD_ENDIAN_BIG
# Number of bits in a char or unsigned char for the target machine.
# Just like CHAR_BIT in <limits.h> but describes the target machine.
# v::TARGET_CHAR_BIT:int:char_bit::::8 * sizeof (char):8::0:
# Number of bits in a BFD_VMA for the target object file format.
v::TARGET_BFD_VMA_BIT:int:bfd_vma_bit::::8 * sizeof (void*):TARGET_ARCHITECTURE->bits_per_address::0
#
+# One if \`char' acts like \`signed char', zero if \`unsigned char'.
+v::TARGET_CHAR_SIGNED:int:char_signed::::1:-1:1::::
+#
v::IEEE_FLOAT:int:ieee_float::::0:0::0:::
#
f::TARGET_READ_PC:CORE_ADDR:read_pc:ptid_t ptid:ptid::0:generic_target_read_pc::0
v:2:REGISTER_SIZE:int:register_size::::0:-1
v:2:REGISTER_BYTES:int:register_bytes::::0:-1
f:2:REGISTER_BYTE:int:register_byte:int reg_nr:reg_nr::0:0
-f:2:REGISTER_RAW_SIZE:int:register_raw_size:int reg_nr:reg_nr::0:0
+f:2:REGISTER_RAW_SIZE:int:register_raw_size:int reg_nr:reg_nr::generic_register_raw_size:0
v:2:MAX_REGISTER_RAW_SIZE:int:max_register_raw_size::::0:-1
-f:2:REGISTER_VIRTUAL_SIZE:int:register_virtual_size:int reg_nr:reg_nr::0:0
+f:2:REGISTER_VIRTUAL_SIZE:int:register_virtual_size:int reg_nr:reg_nr::generic_register_virtual_size:0
v:2:MAX_REGISTER_VIRTUAL_SIZE:int:max_register_virtual_size::::0:-1
f:2:REGISTER_VIRTUAL_TYPE:struct type *:register_virtual_type:int reg_nr:reg_nr::0:0
f:2:DO_REGISTERS_INFO:void:do_registers_info:int reg_nr, int fpregs:reg_nr, fpregs:::do_registers_info::0
The INIT function parameter INFO shall, as far as possible, be
pre-initialized with information obtained from INFO.ABFD or
- previously selected architecture (if similar). INIT shall ensure
- that the INFO.BYTE_ORDER is non-zero.
+ previously selected architecture (if similar).
The INIT function shall return any of: NULL - indicating that it
doesn't recognize the selected architecture; an existing \`\`struct
/* Use default: NULL (ZERO). */
const struct bfd_arch_info *bfd_arch_info;
- /* Use default: 0 (ZERO). */
+ /* Use default: BFD_ENDIAN_UNKNOWN (NB: is not ZERO). */
int byte_order;
/* Use default: NULL (ZERO). */
log = mem_fileopen ();
cleanups = make_cleanup_ui_file_delete (log);
/* fundamental */
- if (gdbarch->byte_order == 0)
+ if (gdbarch->byte_order == BFD_ENDIAN_UNKNOWN)
fprintf_unfiltered (log, "\n\tbyte-order");
if (gdbarch->bfd_arch_info == NULL)
fprintf_unfiltered (log, "\n\tbfd_arch_info");
printf " (long) current_gdbarch->${function});\n"
continue
fi
+ # Print the macro definition.
printf "#ifdef ${macro}\n"
if [ "x${returntype}" = "xvoid" ]
then
printf " \"gdbarch_dump: ${macro} # %%s\\\\n\",\n"
printf " XSTRING (${macro}));\n"
fi
+ # Print the architecture vector value
if [ "x${returntype}" = "xvoid" ]
then
printf "#endif\n"
info.bfd_arch_info = TARGET_ARCHITECTURE;
/* \`\`(gdb) set byte-order ...'' */
- if (info.byte_order == 0
+ if (info.byte_order == BFD_ENDIAN_UNKNOWN
&& !TARGET_BYTE_ORDER_AUTO)
info.byte_order = TARGET_BYTE_ORDER;
/* From the INFO struct. */
- if (info.byte_order == 0
+ if (info.byte_order == BFD_ENDIAN_UNKNOWN
&& info.abfd != NULL)
- info.byte_order = (bfd_big_endian (info.abfd) ? BIG_ENDIAN
- : bfd_little_endian (info.abfd) ? LITTLE_ENDIAN
- : 0);
+ info.byte_order = (bfd_big_endian (info.abfd) ? BFD_ENDIAN_BIG
+ : bfd_little_endian (info.abfd) ? BFD_ENDIAN_LITTLE
+ : BFD_ENDIAN_UNKNOWN);
/* From the current target. */
- if (info.byte_order == 0)
+ if (info.byte_order == BFD_ENDIAN_UNKNOWN)
info.byte_order = TARGET_BYTE_ORDER;
/* Must have found some sort of architecture. */
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: info.byte_order %d (%s)\n",
info.byte_order,
- (info.byte_order == BIG_ENDIAN ? "big"
- : info.byte_order == LITTLE_ENDIAN ? "little"
+ (info.byte_order == BFD_ENDIAN_BIG ? "big"
+ : info.byte_order == BFD_ENDIAN_LITTLE ? "little"
: "default"));
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: info.abfd 0x%lx\n",