diff options
Diffstat (limited to 'gdb/arc-tdep.c')
-rw-r--r-- | gdb/arc-tdep.c | 549 |
1 files changed, 259 insertions, 290 deletions
diff --git a/gdb/arc-tdep.c b/gdb/arc-tdep.c index c232eb9..c8e69c0 100644 --- a/gdb/arc-tdep.c +++ b/gdb/arc-tdep.c @@ -138,165 +138,153 @@ static const char *ARC_AUX_FEATURE_NAME = "org.gnu.gdb.arc.aux"; /* ARCv1 (ARC600, ARC601, ARC700) general core registers feature set. See also arc_update_acc_reg_names() for "accl/acch" names. */ -static struct arc_register_feature arc_v1_core_reg_feature = -{ - ARC_CORE_FEATURE_NAME, - { - { ARC_R0_REGNUM + 0, { "r0" }, true }, - { ARC_R0_REGNUM + 1, { "r1" }, true }, - { ARC_R0_REGNUM + 2, { "r2" }, true }, - { ARC_R0_REGNUM + 3, { "r3" }, true }, - { ARC_R0_REGNUM + 4, { "r4" }, false }, - { ARC_R0_REGNUM + 5, { "r5" }, false }, - { ARC_R0_REGNUM + 6, { "r6" }, false }, - { ARC_R0_REGNUM + 7, { "r7" }, false }, - { ARC_R0_REGNUM + 8, { "r8" }, false }, - { ARC_R0_REGNUM + 9, { "r9" }, false }, - { ARC_R0_REGNUM + 10, { "r10" }, true }, - { ARC_R0_REGNUM + 11, { "r11" }, true }, - { ARC_R0_REGNUM + 12, { "r12" }, true }, - { ARC_R0_REGNUM + 13, { "r13" }, true }, - { ARC_R0_REGNUM + 14, { "r14" }, true }, - { ARC_R0_REGNUM + 15, { "r15" }, true }, - { ARC_R0_REGNUM + 16, { "r16" }, false }, - { ARC_R0_REGNUM + 17, { "r17" }, false }, - { ARC_R0_REGNUM + 18, { "r18" }, false }, - { ARC_R0_REGNUM + 19, { "r19" }, false }, - { ARC_R0_REGNUM + 20, { "r20" }, false }, - { ARC_R0_REGNUM + 21, { "r21" }, false }, - { ARC_R0_REGNUM + 22, { "r22" }, false }, - { ARC_R0_REGNUM + 23, { "r23" }, false }, - { ARC_R0_REGNUM + 24, { "r24" }, false }, - { ARC_R0_REGNUM + 25, { "r25" }, false }, - { ARC_R0_REGNUM + 26, { "gp" }, true }, - { ARC_R0_REGNUM + 27, { "fp" }, true }, - { ARC_R0_REGNUM + 28, { "sp" }, true }, - { ARC_R0_REGNUM + 29, { "ilink1" }, false }, - { ARC_R0_REGNUM + 30, { "ilink2" }, false }, - { ARC_R0_REGNUM + 31, { "blink" }, true }, - { ARC_R0_REGNUM + 32, { "r32" }, false }, - { ARC_R0_REGNUM + 33, { "r33" }, false }, - { ARC_R0_REGNUM + 34, { "r34" }, false }, - { ARC_R0_REGNUM + 35, { "r35" }, false }, - { ARC_R0_REGNUM + 36, { "r36" }, false }, - { ARC_R0_REGNUM + 37, { "r37" }, false }, - { ARC_R0_REGNUM + 38, { "r38" }, false }, - { ARC_R0_REGNUM + 39, { "r39" }, false }, - { ARC_R0_REGNUM + 40, { "r40" }, false }, - { ARC_R0_REGNUM + 41, { "r41" }, false }, - { ARC_R0_REGNUM + 42, { "r42" }, false }, - { ARC_R0_REGNUM + 43, { "r43" }, false }, - { ARC_R0_REGNUM + 44, { "r44" }, false }, - { ARC_R0_REGNUM + 45, { "r45" }, false }, - { ARC_R0_REGNUM + 46, { "r46" }, false }, - { ARC_R0_REGNUM + 47, { "r47" }, false }, - { ARC_R0_REGNUM + 48, { "r48" }, false }, - { ARC_R0_REGNUM + 49, { "r49" }, false }, - { ARC_R0_REGNUM + 50, { "r50" }, false }, - { ARC_R0_REGNUM + 51, { "r51" }, false }, - { ARC_R0_REGNUM + 52, { "r52" }, false }, - { ARC_R0_REGNUM + 53, { "r53" }, false }, - { ARC_R0_REGNUM + 54, { "r54" }, false }, - { ARC_R0_REGNUM + 55, { "r55" }, false }, - { ARC_R0_REGNUM + 56, { "r56" }, false }, - { ARC_R0_REGNUM + 57, { "r57" }, false }, - { ARC_R0_REGNUM + 58, { "r58", "accl" }, false }, - { ARC_R0_REGNUM + 59, { "r59", "acch" }, false }, - { ARC_R0_REGNUM + 60, { "lp_count" }, false }, - { ARC_R0_REGNUM + 61, { "reserved" }, false }, - { ARC_R0_REGNUM + 62, { "limm" }, false }, - { ARC_R0_REGNUM + 63, { "pcl" }, true } - } -}; +static struct arc_register_feature arc_v1_core_reg_feature + = { ARC_CORE_FEATURE_NAME, + { { ARC_R0_REGNUM + 0, { "r0" }, true }, + { ARC_R0_REGNUM + 1, { "r1" }, true }, + { ARC_R0_REGNUM + 2, { "r2" }, true }, + { ARC_R0_REGNUM + 3, { "r3" }, true }, + { ARC_R0_REGNUM + 4, { "r4" }, false }, + { ARC_R0_REGNUM + 5, { "r5" }, false }, + { ARC_R0_REGNUM + 6, { "r6" }, false }, + { ARC_R0_REGNUM + 7, { "r7" }, false }, + { ARC_R0_REGNUM + 8, { "r8" }, false }, + { ARC_R0_REGNUM + 9, { "r9" }, false }, + { ARC_R0_REGNUM + 10, { "r10" }, true }, + { ARC_R0_REGNUM + 11, { "r11" }, true }, + { ARC_R0_REGNUM + 12, { "r12" }, true }, + { ARC_R0_REGNUM + 13, { "r13" }, true }, + { ARC_R0_REGNUM + 14, { "r14" }, true }, + { ARC_R0_REGNUM + 15, { "r15" }, true }, + { ARC_R0_REGNUM + 16, { "r16" }, false }, + { ARC_R0_REGNUM + 17, { "r17" }, false }, + { ARC_R0_REGNUM + 18, { "r18" }, false }, + { ARC_R0_REGNUM + 19, { "r19" }, false }, + { ARC_R0_REGNUM + 20, { "r20" }, false }, + { ARC_R0_REGNUM + 21, { "r21" }, false }, + { ARC_R0_REGNUM + 22, { "r22" }, false }, + { ARC_R0_REGNUM + 23, { "r23" }, false }, + { ARC_R0_REGNUM + 24, { "r24" }, false }, + { ARC_R0_REGNUM + 25, { "r25" }, false }, + { ARC_R0_REGNUM + 26, { "gp" }, true }, + { ARC_R0_REGNUM + 27, { "fp" }, true }, + { ARC_R0_REGNUM + 28, { "sp" }, true }, + { ARC_R0_REGNUM + 29, { "ilink1" }, false }, + { ARC_R0_REGNUM + 30, { "ilink2" }, false }, + { ARC_R0_REGNUM + 31, { "blink" }, true }, + { ARC_R0_REGNUM + 32, { "r32" }, false }, + { ARC_R0_REGNUM + 33, { "r33" }, false }, + { ARC_R0_REGNUM + 34, { "r34" }, false }, + { ARC_R0_REGNUM + 35, { "r35" }, false }, + { ARC_R0_REGNUM + 36, { "r36" }, false }, + { ARC_R0_REGNUM + 37, { "r37" }, false }, + { ARC_R0_REGNUM + 38, { "r38" }, false }, + { ARC_R0_REGNUM + 39, { "r39" }, false }, + { ARC_R0_REGNUM + 40, { "r40" }, false }, + { ARC_R0_REGNUM + 41, { "r41" }, false }, + { ARC_R0_REGNUM + 42, { "r42" }, false }, + { ARC_R0_REGNUM + 43, { "r43" }, false }, + { ARC_R0_REGNUM + 44, { "r44" }, false }, + { ARC_R0_REGNUM + 45, { "r45" }, false }, + { ARC_R0_REGNUM + 46, { "r46" }, false }, + { ARC_R0_REGNUM + 47, { "r47" }, false }, + { ARC_R0_REGNUM + 48, { "r48" }, false }, + { ARC_R0_REGNUM + 49, { "r49" }, false }, + { ARC_R0_REGNUM + 50, { "r50" }, false }, + { ARC_R0_REGNUM + 51, { "r51" }, false }, + { ARC_R0_REGNUM + 52, { "r52" }, false }, + { ARC_R0_REGNUM + 53, { "r53" }, false }, + { ARC_R0_REGNUM + 54, { "r54" }, false }, + { ARC_R0_REGNUM + 55, { "r55" }, false }, + { ARC_R0_REGNUM + 56, { "r56" }, false }, + { ARC_R0_REGNUM + 57, { "r57" }, false }, + { ARC_R0_REGNUM + 58, { "r58", "accl" }, false }, + { ARC_R0_REGNUM + 59, { "r59", "acch" }, false }, + { ARC_R0_REGNUM + 60, { "lp_count" }, false }, + { ARC_R0_REGNUM + 61, { "reserved" }, false }, + { ARC_R0_REGNUM + 62, { "limm" }, false }, + { ARC_R0_REGNUM + 63, { "pcl" }, true } } }; /* ARCv2 (ARCHS) general core registers feature set. See also arc_update_acc_reg_names() for "accl/acch" names. */ -static struct arc_register_feature arc_v2_core_reg_feature = -{ - ARC_CORE_FEATURE_NAME, - { - { ARC_R0_REGNUM + 0, { "r0" }, true }, - { ARC_R0_REGNUM + 1, { "r1" }, true }, - { ARC_R0_REGNUM + 2, { "r2" }, true }, - { ARC_R0_REGNUM + 3, { "r3" }, true }, - { ARC_R0_REGNUM + 4, { "r4" }, false }, - { ARC_R0_REGNUM + 5, { "r5" }, false }, - { ARC_R0_REGNUM + 6, { "r6" }, false }, - { ARC_R0_REGNUM + 7, { "r7" }, false }, - { ARC_R0_REGNUM + 8, { "r8" }, false }, - { ARC_R0_REGNUM + 9, { "r9" }, false }, - { ARC_R0_REGNUM + 10, { "r10" }, true }, - { ARC_R0_REGNUM + 11, { "r11" }, true }, - { ARC_R0_REGNUM + 12, { "r12" }, true }, - { ARC_R0_REGNUM + 13, { "r13" }, true }, - { ARC_R0_REGNUM + 14, { "r14" }, true }, - { ARC_R0_REGNUM + 15, { "r15" }, true }, - { ARC_R0_REGNUM + 16, { "r16" }, false }, - { ARC_R0_REGNUM + 17, { "r17" }, false }, - { ARC_R0_REGNUM + 18, { "r18" }, false }, - { ARC_R0_REGNUM + 19, { "r19" }, false }, - { ARC_R0_REGNUM + 20, { "r20" }, false }, - { ARC_R0_REGNUM + 21, { "r21" }, false }, - { ARC_R0_REGNUM + 22, { "r22" }, false }, - { ARC_R0_REGNUM + 23, { "r23" }, false }, - { ARC_R0_REGNUM + 24, { "r24" }, false }, - { ARC_R0_REGNUM + 25, { "r25" }, false }, - { ARC_R0_REGNUM + 26, { "gp" }, true }, - { ARC_R0_REGNUM + 27, { "fp" }, true }, - { ARC_R0_REGNUM + 28, { "sp" }, true }, - { ARC_R0_REGNUM + 29, { "ilink" }, false }, - { ARC_R0_REGNUM + 30, { "r30" }, true }, - { ARC_R0_REGNUM + 31, { "blink" }, true }, - { ARC_R0_REGNUM + 32, { "r32" }, false }, - { ARC_R0_REGNUM + 33, { "r33" }, false }, - { ARC_R0_REGNUM + 34, { "r34" }, false }, - { ARC_R0_REGNUM + 35, { "r35" }, false }, - { ARC_R0_REGNUM + 36, { "r36" }, false }, - { ARC_R0_REGNUM + 37, { "r37" }, false }, - { ARC_R0_REGNUM + 38, { "r38" }, false }, - { ARC_R0_REGNUM + 39, { "r39" }, false }, - { ARC_R0_REGNUM + 40, { "r40" }, false }, - { ARC_R0_REGNUM + 41, { "r41" }, false }, - { ARC_R0_REGNUM + 42, { "r42" }, false }, - { ARC_R0_REGNUM + 43, { "r43" }, false }, - { ARC_R0_REGNUM + 44, { "r44" }, false }, - { ARC_R0_REGNUM + 45, { "r45" }, false }, - { ARC_R0_REGNUM + 46, { "r46" }, false }, - { ARC_R0_REGNUM + 47, { "r47" }, false }, - { ARC_R0_REGNUM + 48, { "r48" }, false }, - { ARC_R0_REGNUM + 49, { "r49" }, false }, - { ARC_R0_REGNUM + 50, { "r50" }, false }, - { ARC_R0_REGNUM + 51, { "r51" }, false }, - { ARC_R0_REGNUM + 52, { "r52" }, false }, - { ARC_R0_REGNUM + 53, { "r53" }, false }, - { ARC_R0_REGNUM + 54, { "r54" }, false }, - { ARC_R0_REGNUM + 55, { "r55" }, false }, - { ARC_R0_REGNUM + 56, { "r56" }, false }, - { ARC_R0_REGNUM + 57, { "r57" }, false }, - { ARC_R0_REGNUM + 58, { "r58", "accl" }, false }, - { ARC_R0_REGNUM + 59, { "r59", "acch" }, false }, - { ARC_R0_REGNUM + 60, { "lp_count" }, false }, - { ARC_R0_REGNUM + 61, { "reserved" }, false }, - { ARC_R0_REGNUM + 62, { "limm" }, false }, - { ARC_R0_REGNUM + 63, { "pcl" }, true } - } -}; +static struct arc_register_feature arc_v2_core_reg_feature + = { ARC_CORE_FEATURE_NAME, + { { ARC_R0_REGNUM + 0, { "r0" }, true }, + { ARC_R0_REGNUM + 1, { "r1" }, true }, + { ARC_R0_REGNUM + 2, { "r2" }, true }, + { ARC_R0_REGNUM + 3, { "r3" }, true }, + { ARC_R0_REGNUM + 4, { "r4" }, false }, + { ARC_R0_REGNUM + 5, { "r5" }, false }, + { ARC_R0_REGNUM + 6, { "r6" }, false }, + { ARC_R0_REGNUM + 7, { "r7" }, false }, + { ARC_R0_REGNUM + 8, { "r8" }, false }, + { ARC_R0_REGNUM + 9, { "r9" }, false }, + { ARC_R0_REGNUM + 10, { "r10" }, true }, + { ARC_R0_REGNUM + 11, { "r11" }, true }, + { ARC_R0_REGNUM + 12, { "r12" }, true }, + { ARC_R0_REGNUM + 13, { "r13" }, true }, + { ARC_R0_REGNUM + 14, { "r14" }, true }, + { ARC_R0_REGNUM + 15, { "r15" }, true }, + { ARC_R0_REGNUM + 16, { "r16" }, false }, + { ARC_R0_REGNUM + 17, { "r17" }, false }, + { ARC_R0_REGNUM + 18, { "r18" }, false }, + { ARC_R0_REGNUM + 19, { "r19" }, false }, + { ARC_R0_REGNUM + 20, { "r20" }, false }, + { ARC_R0_REGNUM + 21, { "r21" }, false }, + { ARC_R0_REGNUM + 22, { "r22" }, false }, + { ARC_R0_REGNUM + 23, { "r23" }, false }, + { ARC_R0_REGNUM + 24, { "r24" }, false }, + { ARC_R0_REGNUM + 25, { "r25" }, false }, + { ARC_R0_REGNUM + 26, { "gp" }, true }, + { ARC_R0_REGNUM + 27, { "fp" }, true }, + { ARC_R0_REGNUM + 28, { "sp" }, true }, + { ARC_R0_REGNUM + 29, { "ilink" }, false }, + { ARC_R0_REGNUM + 30, { "r30" }, true }, + { ARC_R0_REGNUM + 31, { "blink" }, true }, + { ARC_R0_REGNUM + 32, { "r32" }, false }, + { ARC_R0_REGNUM + 33, { "r33" }, false }, + { ARC_R0_REGNUM + 34, { "r34" }, false }, + { ARC_R0_REGNUM + 35, { "r35" }, false }, + { ARC_R0_REGNUM + 36, { "r36" }, false }, + { ARC_R0_REGNUM + 37, { "r37" }, false }, + { ARC_R0_REGNUM + 38, { "r38" }, false }, + { ARC_R0_REGNUM + 39, { "r39" }, false }, + { ARC_R0_REGNUM + 40, { "r40" }, false }, + { ARC_R0_REGNUM + 41, { "r41" }, false }, + { ARC_R0_REGNUM + 42, { "r42" }, false }, + { ARC_R0_REGNUM + 43, { "r43" }, false }, + { ARC_R0_REGNUM + 44, { "r44" }, false }, + { ARC_R0_REGNUM + 45, { "r45" }, false }, + { ARC_R0_REGNUM + 46, { "r46" }, false }, + { ARC_R0_REGNUM + 47, { "r47" }, false }, + { ARC_R0_REGNUM + 48, { "r48" }, false }, + { ARC_R0_REGNUM + 49, { "r49" }, false }, + { ARC_R0_REGNUM + 50, { "r50" }, false }, + { ARC_R0_REGNUM + 51, { "r51" }, false }, + { ARC_R0_REGNUM + 52, { "r52" }, false }, + { ARC_R0_REGNUM + 53, { "r53" }, false }, + { ARC_R0_REGNUM + 54, { "r54" }, false }, + { ARC_R0_REGNUM + 55, { "r55" }, false }, + { ARC_R0_REGNUM + 56, { "r56" }, false }, + { ARC_R0_REGNUM + 57, { "r57" }, false }, + { ARC_R0_REGNUM + 58, { "r58", "accl" }, false }, + { ARC_R0_REGNUM + 59, { "r59", "acch" }, false }, + { ARC_R0_REGNUM + 60, { "lp_count" }, false }, + { ARC_R0_REGNUM + 61, { "reserved" }, false }, + { ARC_R0_REGNUM + 62, { "limm" }, false }, + { ARC_R0_REGNUM + 63, { "pcl" }, true } } }; /* The common auxiliary registers feature set. The REGNUM field must match the ARC_REGNUM enum in arc-tdep.h. */ -static const struct arc_register_feature arc_common_aux_reg_feature = -{ - ARC_AUX_FEATURE_NAME, - { - { ARC_FIRST_AUX_REGNUM + 0, { "pc" }, true }, - { ARC_FIRST_AUX_REGNUM + 1, { "status32" }, true }, - { ARC_FIRST_AUX_REGNUM + 2, { "lp_start" }, false }, - { ARC_FIRST_AUX_REGNUM + 3, { "lp_end" }, false }, - { ARC_FIRST_AUX_REGNUM + 4, { "bta" }, false } - } -}; +static const struct arc_register_feature arc_common_aux_reg_feature + = { ARC_AUX_FEATURE_NAME, + { { ARC_FIRST_AUX_REGNUM + 0, { "pc" }, true }, + { ARC_FIRST_AUX_REGNUM + 1, { "status32" }, true }, + { ARC_FIRST_AUX_REGNUM + 2, { "lp_start" }, false }, + { ARC_FIRST_AUX_REGNUM + 3, { "lp_end" }, false }, + { ARC_FIRST_AUX_REGNUM + 4, { "bta" }, false } } }; static char *arc_disassembler_options = NULL; @@ -324,8 +312,7 @@ arc_insn_get_operand_value (const struct arc_instruction &insn, struct regcache *regcache = get_current_regcache (); ULONGEST value; regcache_cooked_read_unsigned (regcache, - insn.operands[operand_num].value, - &value); + insn.operands[operand_num].value, &value); return value; } } @@ -352,8 +339,7 @@ arc_insn_get_operand_value_signed (const struct arc_instruction &insn, /* Value in instruction is a register number. */ struct regcache *regcache = get_current_regcache (); LONGEST value; - regcache_cooked_read_signed (regcache, - insn.operands[operand_num].value, + regcache_cooked_read_signed (regcache, insn.operands[operand_num].value, &value); return value; } @@ -441,8 +427,7 @@ arc_insn_get_branch_target (const struct arc_instruction &insn) } else if (insn.insn_class == EI) { - gdb_printf (gdb_stderr, - "EI_S instruction is not supported by the GDB."); + gdb_printf (gdb_stderr, "EI_S instruction is not supported by the GDB."); return 0; } /* LEAVE_S: PC = BLINK. */ @@ -602,8 +587,7 @@ arc_write_pc (struct regcache *regcache, CORE_ADDR new_pc) { struct gdbarch *gdbarch = regcache->arch (); - arc_debug_printf ("Writing PC, new value=%s", - paddress (gdbarch, new_pc)); + arc_debug_printf ("Writing PC, new value=%s", paddress (gdbarch, new_pc)); regcache_cooked_write_unsigned (regcache, gdbarch_pc_regnum (gdbarch), new_pc); @@ -650,8 +634,8 @@ arc_write_pc (struct regcache *regcache, CORE_ADDR new_pc) virtual FP. */ static void -arc_virtual_frame_pointer (struct gdbarch *gdbarch, CORE_ADDR pc, - int *reg_ptr, LONGEST *offset_ptr) +arc_virtual_frame_pointer (struct gdbarch *gdbarch, CORE_ADDR pc, int *reg_ptr, + LONGEST *offset_ptr) { *reg_ptr = gdbarch_sp_regnum (gdbarch); *offset_ptr = 0; @@ -780,9 +764,8 @@ arc_push_dummy_call (struct gdbarch *gdbarch, struct value *function, unsigned int space = align_up (len, 4); memcpy (data, value_contents (args[i]).data (), (size_t) len); - arc_debug_printf ("copying arg %d, val 0x%08x, len %d to mem", - i, *((int *) value_contents (args[i]).data ()), - len); + arc_debug_printf ("copying arg %d, val 0x%08x, len %d to mem", i, + *((int *) value_contents (args[i]).data ()), len); data += space; } @@ -916,8 +899,8 @@ arc_extract_return_value (struct gdbarch *gdbarch, struct type *type, /* Get the return value from one register. */ regcache_cooked_read_unsigned (regcache, ARC_R0_REGNUM, &val); - store_unsigned_integer (valbuf, (int) len, - gdbarch_byte_order (gdbarch), val); + store_unsigned_integer (valbuf, (int) len, gdbarch_byte_order (gdbarch), + val); arc_debug_printf ("returning 0x%s", phex (val, ARC_REGISTER_SIZE)); } @@ -935,15 +918,13 @@ arc_extract_return_value (struct gdbarch *gdbarch, struct type *type, (int) len - ARC_REGISTER_SIZE, gdbarch_byte_order (gdbarch), high); - arc_debug_printf ("returning 0x%s%s", - phex (high, ARC_REGISTER_SIZE), + arc_debug_printf ("returning 0x%s%s", phex (high, ARC_REGISTER_SIZE), phex (low, ARC_REGISTER_SIZE)); } else - error (_("arc: extract_return_value: type length %u too large"), len); + error (_ ("arc: extract_return_value: type length %u too large"), len); } - /* Store the return value of a function into the registers/memory used to return it, according to the convention used by the ABI. @@ -986,12 +967,11 @@ arc_store_return_value (struct gdbarch *gdbarch, struct type *type, regcache_cooked_write_unsigned (regcache, ARC_R0_REGNUM, low); regcache_cooked_write_unsigned (regcache, ARC_R1_REGNUM, high); - arc_debug_printf ("storing 0x%s%s", - phex (high, ARC_REGISTER_SIZE), + arc_debug_printf ("storing 0x%s%s", phex (high, ARC_REGISTER_SIZE), phex (low, ARC_REGISTER_SIZE)); } else - error (_("arc_store_return_value: type length too large.")); + error (_ ("arc_store_return_value: type length too large.")); } /* Implement the "get_longjmp_target" gdbarch method. */ @@ -1005,7 +985,8 @@ arc_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc) arc_gdbarch_tdep *tdep = gdbarch_tdep<arc_gdbarch_tdep> (gdbarch); int pc_offset = tdep->jb_pc * ARC_REGISTER_SIZE; gdb_byte buf[ARC_REGISTER_SIZE]; - CORE_ADDR jb_addr = get_frame_register_unsigned (frame, ARC_FIRST_ARG_REGNUM); + CORE_ADDR jb_addr + = get_frame_register_unsigned (frame, ARC_FIRST_ARG_REGNUM); if (target_read_memory (jb_addr + pc_offset, buf, ARC_REGISTER_SIZE)) return 0; /* Failed to read from memory. */ @@ -1052,9 +1033,8 @@ arc_return_value (struct gdbarch *gdbarch, struct value *function, arc_extract_return_value (gdbarch, valtype, regcache, readbuf); } - return (is_struct_return - ? RETURN_VALUE_STRUCT_CONVENTION - : RETURN_VALUE_REGISTER_CONVENTION); + return (is_struct_return ? RETURN_VALUE_STRUCT_CONVENTION + : RETURN_VALUE_REGISTER_CONVENTION); } /* Return the base address of the frame. For ARC, the base address is the @@ -1070,7 +1050,8 @@ arc_frame_base_address (frame_info_ptr this_frame, void **prologue_cache) either a register or a constant. */ static pv_t -arc_pv_get_operand (pv_t *regs, const struct arc_instruction &insn, int operand) +arc_pv_get_operand (pv_t *regs, const struct arc_instruction &insn, + int operand) { if (insn.operands[operand].kind == ARC_OPERAND_KIND_REG) return regs[insn.operands[operand].value]; @@ -1083,8 +1064,9 @@ arc_pv_get_operand (pv_t *regs, const struct arc_instruction &insn, int operand) be updated. */ static bool -arc_is_in_prologue (struct gdbarch *gdbarch, const struct arc_instruction &insn, - pv_t *regs, struct pv_area *stack) +arc_is_in_prologue (struct gdbarch *gdbarch, + const struct arc_instruction &insn, pv_t *regs, + struct pv_area *stack) { /* It might be that currently analyzed address doesn't contain an instruction, hence INSN is not valid. It likely means that address points @@ -1240,20 +1222,20 @@ arc_is_in_prologue (struct gdbarch *gdbarch, const struct arc_instruction &insn, bool is_fp_saved; if (insn.operands_count > 1) - is_fp_saved = (insn.operands[1].value == ARC_FP_REGNUM); + is_fp_saved = (insn.operands[1].value == ARC_FP_REGNUM); else is_fp_saved = false; bool is_blink_saved; if (insn.operands_count > 1) - is_blink_saved = (insn.operands[insn.operands_count - 1].value - == ARC_BLINK_REGNUM); + is_blink_saved + = (insn.operands[insn.operands_count - 1].value == ARC_BLINK_REGNUM); else is_blink_saved = false; /* Amount of bytes to be allocated to store specified registers. */ - CORE_ADDR st_size = ((regs_saved + is_fp_saved + is_blink_saved) - * ARC_REGISTER_SIZE); + CORE_ADDR st_size + = ((regs_saved + is_fp_saved + is_blink_saved) * ARC_REGISTER_SIZE); pv_t new_sp = pv_add_constant (regs[ARC_SP_REGNUM], -st_size); /* Assume that if the last register (closest to new SP) can be written, @@ -1280,8 +1262,7 @@ arc_is_in_prologue (struct gdbarch *gdbarch, const struct arc_instruction &insn, if (is_blink_saved) { addr = pv_add_constant (addr, -ARC_REGISTER_SIZE); - stack->store (addr, ARC_REGISTER_SIZE, - regs[ARC_BLINK_REGNUM]); + stack->store (addr, ARC_REGISTER_SIZE, regs[ARC_BLINK_REGNUM]); } gdb_assert (pv_is_identical (addr, new_sp)); @@ -1439,8 +1420,9 @@ arc_analyze_prologue (struct gdbarch *gdbarch, const CORE_ADDR entrypoint, limit will be rarely reached. */ const static int MAX_PROLOGUE_LENGTH - = 4 * (ARC_R25_REGNUM - ARC_R13_REGNUM + 1 + 2 + 1 + 6 - + ARC_LAST_ARG_REGNUM - ARC_FIRST_ARG_REGNUM + 1); + = 4 + * (ARC_R25_REGNUM - ARC_R13_REGNUM + 1 + 2 + 1 + 6 + ARC_LAST_ARG_REGNUM + - ARC_FIRST_ARG_REGNUM + 1); /* Implement the "skip_prologue" gdbarch method. @@ -1460,8 +1442,7 @@ arc_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc) if (find_pc_partial_function (pc, &func_name, &func_addr, NULL)) { /* Found a function. */ - CORE_ADDR postprologue_pc - = skip_prologue_using_sal (gdbarch, func_addr); + CORE_ADDR postprologue_pc = skip_prologue_using_sal (gdbarch, func_addr); if (postprologue_pc != 0) return std::max (pc, postprologue_pc); @@ -1597,15 +1578,13 @@ arc_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size) if (kind == sizeof (arc_brk_le)) { - return ((gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG) - ? arc_brk_be - : arc_brk_le); + return ((gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG) ? arc_brk_be + : arc_brk_le); } else { - return ((gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG) - ? arc_brk_s_be - : arc_brk_s_le); + return ((gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG) ? arc_brk_s_be + : arc_brk_s_le); } } @@ -1635,7 +1614,7 @@ arc_print_frame_cache (struct gdbarch *gdbarch, const char *message, arc_debug_printf ("saved register %s at %s %s", gdbarch_register_name (gdbarch, i), (addresses_known) ? "address" : "offset", - paddress (gdbarch, cache->saved_regs[i].addr ())); + paddress (gdbarch, cache->saved_regs[i].addr ())); } } @@ -1687,8 +1666,8 @@ arc_make_frame_cache (frame_info_ptr this_frame) if (arc_debug) arc_print_frame_cache (gdbarch, "after prologue", cache, false); - CORE_ADDR unwound_fb = get_frame_register_unsigned (this_frame, - cache->frame_base_reg); + CORE_ADDR unwound_fb + = get_frame_register_unsigned (this_frame, cache->frame_base_reg); if (unwound_fb == 0) return cache; cache->prev_sp = unwound_fb + cache->frame_base_offset; @@ -1745,8 +1724,8 @@ arc_frame_this_id (frame_info_ptr this_frame, void **this_cache, */ CORE_ADDR code_addr = get_frame_func (this_frame); if (code_addr == 0) - code_addr = get_frame_register_unsigned (this_frame, - gdbarch_pc_regnum (gdbarch)); + code_addr + = get_frame_register_unsigned (this_frame, gdbarch_pc_regnum (gdbarch)); *this_id = frame_id_build (stack_addr, code_addr); } @@ -1754,8 +1733,8 @@ arc_frame_this_id (frame_info_ptr this_frame, void **this_cache, /* Implement the "prev_register" frame_unwind method. */ static struct value * -arc_frame_prev_register (frame_info_ptr this_frame, - void **this_cache, int regnum) +arc_frame_prev_register (frame_info_ptr this_frame, void **this_cache, + int regnum) { if (*this_cache == NULL) *this_cache = arc_make_frame_cache (this_frame); @@ -1813,7 +1792,8 @@ arc_make_sigtramp_frame_cache (frame_info_ptr this_frame) arc_gdbarch_tdep *tdep = gdbarch_tdep<arc_gdbarch_tdep> (arch); /* Allocate new frame cache instance and space for saved register info. */ - struct arc_frame_cache *cache = FRAME_OBSTACK_ZALLOC (struct arc_frame_cache); + struct arc_frame_cache *cache + = FRAME_OBSTACK_ZALLOC (struct arc_frame_cache); cache->saved_regs = trad_frame_alloc_saved_regs (this_frame); /* Get the stack pointer and use it as the frame base. */ @@ -1844,8 +1824,8 @@ arc_make_sigtramp_frame_cache (frame_info_ptr this_frame) frames. */ static void -arc_sigtramp_frame_this_id (frame_info_ptr this_frame, - void **this_cache, struct frame_id *this_id) +arc_sigtramp_frame_this_id (frame_info_ptr this_frame, void **this_cache, + struct frame_id *this_id) { arc_debug_printf ("called"); @@ -1863,8 +1843,8 @@ arc_sigtramp_frame_this_id (frame_info_ptr this_frame, /* Get a register from a signal handler frame. */ static struct value * -arc_sigtramp_frame_prev_register (frame_info_ptr this_frame, - void **this_cache, int regnum) +arc_sigtramp_frame_prev_register (frame_info_ptr this_frame, void **this_cache, + int regnum) { arc_debug_printf ("regnum = %d", regnum); @@ -1881,8 +1861,7 @@ arc_sigtramp_frame_prev_register (frame_info_ptr this_frame, static int arc_sigtramp_frame_sniffer (const struct frame_unwind *self, - frame_info_ptr this_frame, - void **this_cache) + frame_info_ptr this_frame, void **this_cache) { arc_debug_printf ("called"); @@ -1899,41 +1878,35 @@ arc_sigtramp_frame_sniffer (const struct frame_unwind *self, the fallback unwinder, we use the default frame sniffer, which always accepts the frame. */ -static const struct frame_unwind arc_frame_unwind = { - "arc prologue", - NORMAL_FRAME, - default_frame_unwind_stop_reason, - arc_frame_this_id, - arc_frame_prev_register, - NULL, - default_frame_sniffer, - NULL, - NULL -}; +static const struct frame_unwind arc_frame_unwind + = { "arc prologue", + NORMAL_FRAME, + default_frame_unwind_stop_reason, + arc_frame_this_id, + arc_frame_prev_register, + NULL, + default_frame_sniffer, + NULL, + NULL }; /* Structure defining the ARC signal frame unwind functions. Custom sniffer is used, because this frame must be accepted only in the right context. */ -static const struct frame_unwind arc_sigtramp_frame_unwind = { - "arc sigtramp", - SIGTRAMP_FRAME, - default_frame_unwind_stop_reason, - arc_sigtramp_frame_this_id, - arc_sigtramp_frame_prev_register, - NULL, - arc_sigtramp_frame_sniffer, - NULL, - NULL -}; - - -static const struct frame_base arc_normal_base = { - &arc_frame_unwind, - arc_frame_base_address, - arc_frame_base_address, - arc_frame_base_address -}; +static const struct frame_unwind arc_sigtramp_frame_unwind + = { "arc sigtramp", + SIGTRAMP_FRAME, + default_frame_unwind_stop_reason, + arc_sigtramp_frame_this_id, + arc_sigtramp_frame_prev_register, + NULL, + arc_sigtramp_frame_sniffer, + NULL, + NULL }; + +static const struct frame_base arc_normal_base + = { &arc_frame_unwind, arc_frame_base_address, arc_frame_base_address, + arc_frame_base_address }; static enum arc_isa mach_type_to_arc_isa (const unsigned long mach) @@ -1947,7 +1920,7 @@ mach_type_to_arc_isa (const unsigned long mach) case bfd_mach_arc_arcv2: return ARC_ISA_ARCV2; default: - internal_error (_("unknown machine id %lu"), mach); + internal_error (_ ("unknown machine id %lu"), mach); } } @@ -1972,7 +1945,7 @@ arc_arch_features_create (const bfd *abfd, const unsigned long mach) else if (eclass == ELFCLASS64) reg_size = 8; else - internal_error (_("unknown ELF header class %d"), eclass); + internal_error (_ ("unknown ELF header class %d"), eclass); } /* MACH from a bfd_arch_info struct is used here. It should be a safe @@ -1997,8 +1970,8 @@ find_obsolete_core_names (const struct target_desc *tdesc) feat = tdesc_find_feature (tdesc, ARC_CORE_V2_OBSOLETE_FEATURE_NAME); if (feat == nullptr) - feat = tdesc_find_feature - (tdesc, ARC_CORE_V2_REDUCED_OBSOLETE_FEATURE_NAME); + feat + = tdesc_find_feature (tdesc, ARC_CORE_V2_REDUCED_OBSOLETE_FEATURE_NAME); return feat; } @@ -2024,8 +1997,8 @@ determine_core_reg_feature_set (const unsigned long mach) case ARC_ISA_ARCV2: return &arc_v2_core_reg_feature; default: - gdb_assert_not_reached - ("Unknown machine type to determine the core feature set."); + gdb_assert_not_reached ( + "Unknown machine type to determine the core feature set."); } } @@ -2051,10 +2024,8 @@ determine_aux_reg_feature_set () static void arc_update_acc_reg_names (const int byte_order) { - const char *r58_alias - = byte_order == BFD_ENDIAN_LITTLE ? "accl" : "acch"; - const char *r59_alias - = byte_order == BFD_ENDIAN_LITTLE ? "acch" : "accl"; + const char *r58_alias = byte_order == BFD_ENDIAN_LITTLE ? "accl" : "acch"; + const char *r59_alias = byte_order == BFD_ENDIAN_LITTLE ? "acch" : "accl"; /* Subscript 1 must be OK because those registers have 2 names. */ arc_v1_core_reg_feature.registers[ARC_R58_REGNUM].names[1] = r58_alias; @@ -2089,16 +2060,16 @@ arc_check_tdesc_feature (struct tdesc_arch_data *tdesc_data, if (!found && reg.required_p) { std::ostringstream reg_names; - for (std::size_t i = 0; i < reg.names.size(); ++i) + for (std::size_t i = 0; i < reg.names.size (); ++i) { if (i == 0) reg_names << "'" << reg.names[0] << "'"; else reg_names << " or '" << reg.names[0] << "'"; } - arc_print (_("Error: Cannot find required register(s) %s " - "in feature '%s'.\n"), reg_names.str ().c_str (), - feature->name.c_str ()); + arc_print (_ ("Error: Cannot find required register(s) %s " + "in feature '%s'.\n"), + reg_names.str ().c_str (), feature->name.c_str ()); return false; } } @@ -2122,15 +2093,16 @@ arc_check_for_hw_loops (const struct target_desc *tdesc, return false; bool hw_loop_p = false; - const auto lp_start_name = - aux_regset->registers[ARC_LP_START_REGNUM - ARC_FIRST_AUX_REGNUM].names[0]; - const auto lp_end_name = - aux_regset->registers[ARC_LP_END_REGNUM - ARC_FIRST_AUX_REGNUM].names[0]; + const auto lp_start_name + = aux_regset->registers[ARC_LP_START_REGNUM - ARC_FIRST_AUX_REGNUM] + .names[0]; + const auto lp_end_name + = aux_regset->registers[ARC_LP_END_REGNUM - ARC_FIRST_AUX_REGNUM].names[0]; - hw_loop_p = tdesc_numbered_register (feature_aux, data, - ARC_LP_START_REGNUM, lp_start_name); - hw_loop_p &= tdesc_numbered_register (feature_aux, data, - ARC_LP_END_REGNUM, lp_end_name); + hw_loop_p = tdesc_numbered_register (feature_aux, data, ARC_LP_START_REGNUM, + lp_start_name); + hw_loop_p &= tdesc_numbered_register (feature_aux, data, ARC_LP_END_REGNUM, + lp_end_name); return hw_loop_p; } @@ -2151,8 +2123,7 @@ arc_tdesc_init (struct gdbarch_info info, const struct target_desc **tdesc, if (!tdesc_has_registers (tdesc_loc)) { arc_arch_features features - = arc_arch_features_create (info.abfd, - info.bfd_arch_info->mach); + = arc_arch_features_create (info.abfd, info.bfd_arch_info->mach); tdesc_loc = arc_lookup_target_description (features); } gdb_assert (tdesc_loc != nullptr); @@ -2172,15 +2143,17 @@ arc_tdesc_init (struct gdbarch_info info, const struct target_desc **tdesc, if (feature_core == nullptr) { - arc_print (_("Error: Cannot find required feature '%s' in supplied " - "target description.\n"), ARC_CORE_FEATURE_NAME); + arc_print (_ ("Error: Cannot find required feature '%s' in supplied " + "target description.\n"), + ARC_CORE_FEATURE_NAME); return false; } if (feature_aux == nullptr) { - arc_print (_("Error: Cannot find required feature '%s' in supplied " - "target description.\n"), ARC_AUX_FEATURE_NAME); + arc_print (_ ("Error: Cannot find required feature '%s' in supplied " + "target description.\n"), + ARC_AUX_FEATURE_NAME); return false; } @@ -2193,12 +2166,10 @@ arc_tdesc_init (struct gdbarch_info info, const struct target_desc **tdesc, arc_update_acc_reg_names (info.byte_order); - bool valid_p = arc_check_tdesc_feature (tdesc_data_loc.get (), - feature_core, + bool valid_p = arc_check_tdesc_feature (tdesc_data_loc.get (), feature_core, arc_core_reg_feature); - valid_p &= arc_check_tdesc_feature (tdesc_data_loc.get (), - feature_aux, + valid_p &= arc_check_tdesc_feature (tdesc_data_loc.get (), feature_aux, arc_aux_reg_feature); if (!valid_p) @@ -2288,7 +2259,7 @@ arc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_sp_regnum (gdbarch, ARC_SP_REGNUM); set_gdbarch_pc_regnum (gdbarch, ARC_PC_REGNUM); set_gdbarch_ps_regnum (gdbarch, ARC_STATUS32_REGNUM); - set_gdbarch_fp0_regnum (gdbarch, -1); /* No FPU registers. */ + set_gdbarch_fp0_regnum (gdbarch, -1); /* No FPU registers. */ set_gdbarch_push_dummy_call (gdbarch, arc_push_dummy_call); set_gdbarch_push_dummy_code (gdbarch, arc_push_dummy_code); @@ -2422,8 +2393,7 @@ arc_dump_tdep (struct gdbarch *gdbarch, struct ui_file *file) host_address_to_string (tdep->sigcontext_addr)); gdb_printf (file, "arc_dump_tdep: sc_reg_offset = <%s>\n", host_address_to_string (tdep->sc_reg_offset)); - gdb_printf (file, "arc_dump_tdep: sc_num_regs = %d\n", - tdep->sc_num_regs); + gdb_printf (file, "arc_dump_tdep: sc_num_regs = %d\n", tdep->sc_num_regs); } /* This command accepts single argument - address of instruction to @@ -2447,6 +2417,7 @@ dump_arc_instruction_command (const char *args, int from_tty) } void _initialize_arc_tdep (); + void _initialize_arc_tdep () { @@ -2455,22 +2426,20 @@ _initialize_arc_tdep () /* Register ARC-specific commands with gdb. */ /* Add root prefix command for "maintenance print arc" commands. */ - add_basic_prefix_cmd ("arc", class_maintenance, - _("ARC-specific maintenance commands for printing GDB " - "internal state."), - &maintenance_print_arc_list, - 0, &maintenanceprintlist); - - add_cmd ("arc-instruction", class_maintenance, - dump_arc_instruction_command, - _("Dump arc_instruction structure for specified address."), + add_basic_prefix_cmd ( + "arc", class_maintenance, + _ ("ARC-specific maintenance commands for printing GDB " + "internal state."), + &maintenance_print_arc_list, 0, &maintenanceprintlist); + + add_cmd ("arc-instruction", class_maintenance, dump_arc_instruction_command, + _ ("Dump arc_instruction structure for specified address."), &maintenance_print_arc_list); /* Debug internals for ARC GDB. */ - add_setshow_boolean_cmd ("arc", class_maintenance, - &arc_debug, - _("Set ARC specific debugging."), - _("Show ARC specific debugging."), - _("When set, ARC specific debugging is enabled."), + add_setshow_boolean_cmd ("arc", class_maintenance, &arc_debug, + _ ("Set ARC specific debugging."), + _ ("Show ARC specific debugging."), + _ ("When set, ARC specific debugging is enabled."), NULL, NULL, &setdebuglist, &showdebuglist); } |