diff options
author | Simon Marchi <simon.marchi@ericsson.com> | 2015-08-06 17:21:41 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@ericsson.com> | 2015-08-06 17:22:49 -0400 |
commit | aead7601eb0ddc3fa51d43747bdad0e02abda342 (patch) | |
tree | e5c4d43a1986795822cf6a6be84a1923eb0cf10d /gdb/osabi.c | |
parent | 84da3f0cf938f8f74d9fa89f89f228bc950282c6 (diff) | |
download | binutils-aead7601eb0ddc3fa51d43747bdad0e02abda342.zip binutils-aead7601eb0ddc3fa51d43747bdad0e02abda342.tar.gz binutils-aead7601eb0ddc3fa51d43747bdad0e02abda342.tar.bz2 |
Add casts for legitimate integer to enum conversions
This patch is mostly extracted from Pedro's C++ branch. It adds explicit
casts from integer to enum types, where it is really the intention to do
so. This could be because we are ...
* iterating on enum values (we need to iterate on an equivalent integer)
* converting from a value read from bytes (dwarf attribute, agent
expression opcode) to the equivalent enum
* reading the equivalent integer value from another language (Python/Guile)
An exception to that is the casts in regcache.c. It seems to me like
struct regcache's register_status field could be a pointer to an array of
enum register_status. Doing so would waste a bit of memory (4 bytes
used by the enum vs 1 byte used by the current signed char, for each
register). If we switch to C++11 one day, we can define the underlying
type of an enum type, so we could have the best of both worlds.
gdb/ChangeLog:
* arm-tdep.c (set_fp_model_sfunc): Add cast from integer to enum.
(arm_set_abi): Likewise.
* ax-general.c (ax_print): Likewise.
* c-exp.y (exp : string_exp): Likewise.
* compile/compile-loc2c.c (compute_stack_depth_worker): Likewise.
(do_compile_dwarf_expr_to_c): Likewise.
* cp-name-parser.y (demangler_special : DEMANGLER_SPECIAL start):
Likewise.
* dwarf2expr.c (execute_stack_op): Likewise.
* dwarf2loc.c (dwarf2_compile_expr_to_ax): Likewise.
(disassemble_dwarf_expression): Likewise.
* dwarf2read.c (dwarf2_add_member_fn): Likewise.
(read_array_order): Likewise.
(abbrev_table_read_table): Likewise.
(read_attribute_value): Likewise.
(skip_unknown_opcode): Likewise.
(dwarf_decode_macro_bytes): Likewise.
(dwarf_decode_macros): Likewise.
* eval.c (value_f90_subarray): Likewise.
* guile/scm-param.c (gdbscm_make_parameter): Likewise.
* i386-linux-tdep.c (i386_canonicalize_syscall): Likewise.
* infrun.c (handle_command): Likewise.
* memory-map.c (memory_map_start_memory): Likewise.
* osabi.c (set_osabi): Likewise.
* parse.c (operator_length_standard): Likewise.
* ppc-linux-tdep.c (ppc_canonicalize_syscall): Likewise, and use
single return point.
* python/py-frame.c (gdbpy_frame_stop_reason_string): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol): Likewise.
(gdbpy_lookup_global_symbol): Likewise.
* record-full.c (record_full_restore): Likewise.
* regcache.c (regcache_register_status): Likewise.
(regcache_raw_read): Likewise.
(regcache_cooked_read): Likewise.
* rs6000-tdep.c (powerpc_set_vector_abi): Likewise.
* symtab.c (initialize_ordinary_address_classes): Likewise.
* target-debug.h (target_debug_print_signals): Likewise.
* utils.c (do_restore_current_language): Likewise.
Diffstat (limited to 'gdb/osabi.c')
-rw-r--r-- | gdb/osabi.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/gdb/osabi.c b/gdb/osabi.c index 3581eb3..2c75567 100644 --- a/gdb/osabi.c +++ b/gdb/osabi.c @@ -626,12 +626,16 @@ set_osabi (char *args, int from_tty, struct cmd_list_element *c) int i; for (i = 1; i < GDB_OSABI_INVALID; i++) - if (strcmp (set_osabi_string, gdbarch_osabi_name (i)) == 0) - { - user_selected_osabi = i; - user_osabi_state = osabi_user; - break; - } + { + enum gdb_osabi osabi = (enum gdb_osabi) i; + + if (strcmp (set_osabi_string, gdbarch_osabi_name (osabi)) == 0) + { + user_selected_osabi = osabi; + user_osabi_state = osabi_user; + break; + } + } if (i == GDB_OSABI_INVALID) internal_error (__FILE__, __LINE__, _("Invalid OS ABI \"%s\" passed to command handler."), |