* [rfc]: Macros in gdbtypes
@ 2007-11-05 12:28 Markus Deuling
2007-11-05 14:15 ` Mark Kettenis
2007-11-05 15:18 ` Ulrich Weigand
0 siblings, 2 replies; 3+ messages in thread
From: Markus Deuling @ 2007-11-05 12:28 UTC (permalink / raw)
To: GDB Patches, Ulrich Weigand
[-- Attachment #1: Type: text/plain, Size: 2630 bytes --]
Hi,
in gdbtypes.h are some macros based on current_gdbarch (eg. builtin_type_void_data_ptr). This patch
replaces builtin_type_void_data_ptr by its definition in the source tree and then replaces current_gdbarch
by appropriate methods were possible.
This patch is **NOT** tested and shall no be committed right now.
Before proceeding I want to hear from you if that's a way to go for those macros or if you would prefer s.th. else to get rid
of the current_gdbarch's in gdbtypes.h
Thanks a lot for your effort.
ChangeLog:
* target-descriptions.c (tdesc_register_type): Replace
builtin_type_void_data_ptr by its expression. Replace current_gdbarch
by gdbarch.
* target.c (default_region_ok_for_hw_watchpoint): Likewise.
* std-regs (value_of_builtin_frame_fp_reg)
(value_of_builtin_frame_pc_reg): Likewise.
* spu-tdep.c (spu_register_type): Likewise.
* sparc-tdep.c (sparc32_register_type): Likewise.
* sparc64-tdep.c (sparc64_register_type): Likewise.
* mips-tdep.c (mips_pseudo_register_type): Likewise.
* m88k-tdep.c (m88k_register_type): Likewise.
* m68k-tdep.c (m68k_register_type): Likewise.
* m32r-tdep.c (m32r_register_type): Likewise.
* i386-tdep.c (i386_get_longjmp_target, i386_register_type): Likewise.
* h8300-tdep.c (h8300_register_type): Likewise.
* gnu-v3-abi.c (gnuv3_baseclass_offset, gnuv3_method_ptr_size)
(gnuv3_make_method_ptr, gnuv3_method_ptr_to_value): Likewise.
* cris-tdep.c (cris_register_type, crisv32_register_type): Likewise.
* bsd-uthread.c (bsd_uthread_fetch_registers)
(bsd_uthread_wait, bsd_uthread_find_new_threads): Likewise.
* arm-tdep.c (arm_register_type): Likewise.
* amd64-tdep.c (amd64_register_type): Likewise.
* alpha-tdep.c (alpha_cannot_store_register): Likewise.
* solib-svr4.c (LM_ADDR_FROM_LINK_MAP, LM_DYNAMIC_FROM_LINK_MAP)
(LM_NEXT, LM_NAME, IGNORE_FIRST_LINK_MAP_ENTRY, scan_dyntag)
(solib_svr4_r_map, solib_svr4_r_ldsomap, open_symbol_file_object)
(svr4_fetch_objfile_link_map): Replace builtin_type_void_data_ptr by
its expression.
* procfs.c (procfs_address_to_host_pointer
(procfs_can_use_hw_breakpoint): Likewise.
* objc-lang.c (print_object_command): Likewise.
* f-valprint.c (f77_get_dynamic_lowerbound)
(f77_get_dynamic_upperbound): Likewise.
* dwarf2loc.c (dwarf_expr_read_reg): Likewise.
* dwarf2-frame.c (size_of_encoded_value)
(decode_frame_entry_1): Likewise.
* avr-tdep.c (avr_register_type): Likewise.
* auxv.c (target_auxv_parse): Likewise.
* ada-valprint.c (ada_val_print_1): Likewise.
* gdbtypes.h (builtin_type_void_data_ptr): Remove.
--
Markus Deuling
GNU Toolchain for Linux on Cell BE
deuling@de.ibm.com
[-- Attachment #2: diff-builtin-ptr --]
[-- Type: text/plain, Size: 28296 bytes --]
diff -urpN src/gdb/ada-valprint.c dev2/gdb/ada-valprint.c
--- src/gdb/ada-valprint.c 2007-08-23 20:08:25.000000000 +0200
+++ dev2/gdb/ada-valprint.c 2007-11-05 13:19:49.000000000 +0100
@@ -727,7 +727,9 @@ ada_val_print_1 (struct type *type, cons
type_print (type, "", stream, -1);
fprintf_filtered (stream, ") ");
deprecated_print_address_numeric
- (extract_typed_address (valaddr, builtin_type_void_data_ptr),
+ (extract_typed_address (valaddr,
+ builtin_type (current_gdbarch)
+ ->builtin_data_ptr),
1, stream);
}
else
diff -urpN src/gdb/alpha-tdep.c dev2/gdb/alpha-tdep.c
--- src/gdb/alpha-tdep.c 2007-11-05 05:32:21.000000000 +0100
+++ dev2/gdb/alpha-tdep.c 2007-11-05 13:18:54.000000000 +0100
@@ -94,7 +94,7 @@ static struct type *
alpha_register_type (struct gdbarch *gdbarch, int regno)
{
if (regno == ALPHA_SP_REGNUM || regno == ALPHA_GP_REGNUM)
- return builtin_type_void_data_ptr;
+ return builtin_type (gdbarch)->builtin_data_ptr;
if (regno == ALPHA_PC_REGNUM)
return builtin_type_void_func_ptr;
diff -urpN src/gdb/amd64-tdep.c dev2/gdb/amd64-tdep.c
--- src/gdb/amd64-tdep.c 2007-11-05 05:32:21.000000000 +0100
+++ dev2/gdb/amd64-tdep.c 2007-11-05 13:18:00.000000000 +0100
@@ -90,7 +90,7 @@ amd64_register_type (struct gdbarch *gdb
if (regnum >= AMD64_RAX_REGNUM && regnum <= AMD64_RDI_REGNUM)
return builtin_type_int64;
if (regnum == AMD64_RBP_REGNUM || regnum == AMD64_RSP_REGNUM)
- return builtin_type_void_data_ptr;
+ return builtin_type (gdbarch)->builtin_data_ptr;
if (regnum >= AMD64_R8_REGNUM && regnum <= AMD64_R15_REGNUM)
return builtin_type_int64;
if (regnum == AMD64_RIP_REGNUM)
diff -urpN src/gdb/arm-tdep.c dev2/gdb/arm-tdep.c
--- src/gdb/arm-tdep.c 2007-11-05 05:32:21.000000000 +0100
+++ dev2/gdb/arm-tdep.c 2007-11-05 13:17:27.000000000 +0100
@@ -1415,7 +1415,7 @@ arm_register_type (struct gdbarch *gdbar
if (regnum >= ARM_F0_REGNUM && regnum < ARM_F0_REGNUM + NUM_FREGS)
return builtin_type_arm_ext;
else if (regnum == ARM_SP_REGNUM)
- return builtin_type_void_data_ptr;
+ return builtin_type (gdbarch)->builtin_data_ptr;
else if (regnum == ARM_PC_REGNUM)
return builtin_type_void_func_ptr;
else if (regnum >= ARRAY_SIZE (arm_register_names))
diff -urpN src/gdb/auxv.c dev2/gdb/auxv.c
--- src/gdb/auxv.c 2007-08-23 20:08:26.000000000 +0200
+++ dev2/gdb/auxv.c 2007-11-05 13:16:58.000000000 +0100
@@ -82,7 +82,8 @@ int
target_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
{
- const int sizeof_auxv_field = TYPE_LENGTH (builtin_type_void_data_ptr);
+ const int sizeof_auxv_field
+ = TYPE_LENGTH (builtin_type (current_gdbarch)->builtin_data_ptr);
gdb_byte *ptr = *readptr;
if (endptr == ptr)
diff -urpN src/gdb/avr-tdep.c dev2/gdb/avr-tdep.c
--- src/gdb/avr-tdep.c 2007-11-05 05:32:21.000000000 +0100
+++ dev2/gdb/avr-tdep.c 2007-11-05 13:16:16.000000000 +0100
@@ -213,7 +213,7 @@ avr_register_type (struct gdbarch *gdbar
if (reg_nr == AVR_PC_REGNUM)
return builtin_type_uint32;
if (reg_nr == AVR_SP_REGNUM)
- return builtin_type_void_data_ptr;
+ return builtin_type (gdbarch)->builtin_data_ptr;
else
return builtin_type_uint8;
}
diff -urpN src/gdb/bsd-uthread.c dev2/gdb/bsd-uthread.c
--- src/gdb/bsd-uthread.c 2007-10-31 05:54:46.000000000 +0100
+++ dev2/gdb/bsd-uthread.c 2007-11-05 13:15:27.000000000 +0100
@@ -280,7 +280,8 @@ bsd_uthread_fetch_registers (struct regc
regnum = -1;
active_addr = read_memory_typed_address (bsd_uthread_thread_run_addr,
- builtin_type_void_data_ptr);
+ builtin_type (gdbarch)
+ ->builtin_data_ptr);
if (addr != 0 && addr != active_addr)
{
bsd_uthread_check_magic (addr);
@@ -298,7 +299,8 @@ bsd_uthread_store_registers (struct regc
CORE_ADDR active_addr;
active_addr = read_memory_typed_address (bsd_uthread_thread_run_addr,
- builtin_type_void_data_ptr);
+ builtin_type (gdbarch)
+ ->builtin_data_ptr);
if (addr != 0 && addr != active_addr)
{
bsd_uthread_check_magic (addr);
@@ -344,7 +346,8 @@ bsd_uthread_wait (ptid_t ptid, struct ta
/* Fetch the corresponding thread ID, and augment the returned
process ID with it. */
addr = read_memory_typed_address (bsd_uthread_thread_run_addr,
- builtin_type_void_data_ptr);
+ builtin_type (current_gdbarch)
+ ->builtin_data_ptr);
if (addr != 0)
{
gdb_byte buf[4];
@@ -408,7 +411,8 @@ bsd_uthread_find_new_threads (void)
CORE_ADDR addr;
addr = read_memory_typed_address (bsd_uthread_thread_list_addr,
- builtin_type_void_data_ptr);
+ builtin_type (current_gdbarch)
+ ->builtin_data_ptr);
while (addr != 0)
{
ptid_t ptid = ptid_build (pid, 0, addr);
@@ -417,7 +421,8 @@ bsd_uthread_find_new_threads (void)
add_thread (ptid);
addr = read_memory_typed_address (addr + offset,
- builtin_type_void_data_ptr);
+ builtin_type (current_gdbarch)
+ ->builtin_data_ptr);
}
}
diff -urpN src/gdb/cris-tdep.c dev2/gdb/cris-tdep.c
--- src/gdb/cris-tdep.c 2007-11-05 05:32:21.000000000 +0100
+++ dev2/gdb/cris-tdep.c 2007-11-05 13:13:48.000000000 +0100
@@ -1680,7 +1680,7 @@ cris_register_type (struct gdbarch *gdba
return builtin_type_void_func_ptr;
else if (regno == gdbarch_sp_regnum (gdbarch)
|| regno == CRIS_FP_REGNUM)
- return builtin_type_void_data_ptr;
+ return builtin_type (gdbarch)->builtin_data_ptr;
else if ((regno >= 0 && regno < gdbarch_sp_regnum (gdbarch))
|| (regno >= MOF_REGNUM && regno <= USP_REGNUM))
/* Note: R8 taken care of previous clause. */
@@ -1701,7 +1701,7 @@ crisv32_register_type (struct gdbarch *g
return builtin_type_void_func_ptr;
else if (regno == gdbarch_sp_regnum (gdbarch)
|| regno == CRIS_FP_REGNUM)
- return builtin_type_void_data_ptr;
+ return builtin_type (gdbarch)->builtin_data_ptr;
else if ((regno >= 0 && regno <= ACR_REGNUM)
|| (regno >= EXS_REGNUM && regno <= SPC_REGNUM)
|| (regno == PID_REGNUM)
diff -urpN src/gdb/dwarf2-frame.c dev2/gdb/dwarf2-frame.c
--- src/gdb/dwarf2-frame.c 2007-10-08 14:46:09.000000000 +0200
+++ dev2/gdb/dwarf2-frame.c 2007-11-05 13:13:05.000000000 +0100
@@ -1414,7 +1414,7 @@ size_of_encoded_value (gdb_byte encoding
switch (encoding & 0x07)
{
case DW_EH_PE_absptr:
- return TYPE_LENGTH (builtin_type_void_data_ptr);
+ return TYPE_LENGTH (builtin_type (current_gdbarch)->builtin_data_ptr);
case DW_EH_PE_udata2:
return 2;
case DW_EH_PE_udata4:
@@ -1699,7 +1699,7 @@ decode_frame_entry_1 (struct comp_unit *
if (augmentation[0] == 'e' && augmentation[1] == 'h')
{
/* Skip. */
- buf += TYPE_LENGTH (builtin_type_void_data_ptr);
+ buf += TYPE_LENGTH (builtin_type (current_gdbarch)->builtin_data_ptr);
augmentation += 2;
}
diff -urpN src/gdb/dwarf2loc.c dev2/gdb/dwarf2loc.c
--- src/gdb/dwarf2loc.c 2007-10-08 14:46:09.000000000 +0200
+++ dev2/gdb/dwarf2loc.c 2007-11-05 13:12:15.000000000 +0100
@@ -119,7 +119,8 @@ dwarf_expr_read_reg (void *baton, int dw
int regnum;
regnum = gdbarch_dwarf2_reg_to_regnum (current_gdbarch, dwarf_regnum);
- result = address_from_register (builtin_type_void_data_ptr,
+ result = address_from_register (builtin_type (current_gdbarch)
+ ->builtin_data_ptr,
regnum, debaton->frame);
return result;
}
diff -urpN src/gdb/f-valprint.c dev2/gdb/f-valprint.c
--- src/gdb/f-valprint.c 2007-08-23 20:08:31.000000000 +0200
+++ dev2/gdb/f-valprint.c 2007-11-05 13:11:19.000000000 +0100
@@ -102,7 +102,8 @@ f77_get_dynamic_lowerbound (struct type
ptr_to_lower_bound =
read_memory_typed_address (current_frame_addr +
TYPE_ARRAY_LOWER_BOUND_VALUE (type),
- builtin_type_void_data_ptr);
+ builtin_type (current_gdbarch)
+ ->builtin_data_ptr);
*lower_bound = read_memory_integer (ptr_to_lower_bound, 4);
}
else
@@ -168,7 +169,8 @@ f77_get_dynamic_upperbound (struct type
ptr_to_upper_bound =
read_memory_typed_address (current_frame_addr +
TYPE_ARRAY_UPPER_BOUND_VALUE (type),
- builtin_type_void_data_ptr);
+ builtin_type (current_gdbarch)
+ ->builtin_data_ptr);
*upper_bound = read_memory_integer (ptr_to_upper_bound, 4);
}
else
diff -urpN src/gdb/gdbtypes.h dev2/gdb/gdbtypes.h
--- src/gdb/gdbtypes.h 2007-11-05 05:32:21.000000000 +0100
+++ dev2/gdb/gdbtypes.h 2007-11-05 13:19:57.000000000 +0100
@@ -1025,8 +1025,6 @@ struct builtin_type
extern const struct builtin_type *builtin_type (struct gdbarch *gdbarch);
/* Compatibility macros to access types for the current architecture. */
-#define builtin_type_void_data_ptr \
- (builtin_type (current_gdbarch)->builtin_data_ptr)
#define builtin_type_void_func_ptr \
(builtin_type (current_gdbarch)->builtin_func_ptr)
#define builtin_type_CORE_ADDR \
Binary files src/gdb/.gdbtypes.h.swp and dev2/gdb/.gdbtypes.h.swp differ
diff -urpN src/gdb/gnu-v3-abi.c dev2/gdb/gnu-v3-abi.c
--- src/gdb/gnu-v3-abi.c 2007-09-23 18:25:05.000000000 +0200
+++ dev2/gdb/gnu-v3-abi.c 2007-11-05 13:09:48.000000000 +0100
@@ -376,8 +376,8 @@ static int
gnuv3_baseclass_offset (struct type *type, int index, const bfd_byte *valaddr,
CORE_ADDR address)
{
- struct type *vtable_type = gdbarch_data (current_gdbarch,
- vtable_type_gdbarch_data);
+ struct gdbarch *gdbarch = current_gdbarch;
+ struct type *vtable_type = gdbarch_data (gdbarch, vtable_type_gdbarch_data);
struct value *vtable;
struct type *vbasetype;
struct value *offset_val, *vbase_array;
@@ -399,10 +399,11 @@ gnuv3_baseclass_offset (struct type *typ
error (_("Expected a negative vbase offset (old compiler?)"));
cur_base_offset = cur_base_offset + vtable_address_point_offset ();
- if ((- cur_base_offset) % TYPE_LENGTH (builtin_type_void_data_ptr) != 0)
+ if ((- cur_base_offset)
+ % TYPE_LENGTH (builtin_type (gdbarch)->builtin_data_ptr) != 0)
error (_("Misaligned vbase offset."));
cur_base_offset = cur_base_offset
- / ((int) TYPE_LENGTH (builtin_type_void_data_ptr));
+ / ((int) TYPE_LENGTH (builtin_type (gdbarch)->builtin_data_ptr));
/* We're now looking for the cur_base_offset'th entry (negative index)
in the vcall_and_vbase_offsets array. We used to cast the object to
@@ -424,8 +425,9 @@ gnuv3_baseclass_offset (struct type *typ
error (_("Illegal vptr offset in class %s"),
TYPE_NAME (vbasetype) ? TYPE_NAME (vbasetype) : "<unknown>");
- vtable_address = value_as_address (value_at_lazy (builtin_type_void_data_ptr,
- address));
+ vtable_address
+ = value_as_address (value_at_lazy (builtin_type (gdbarch)->builtin_data_ptr,
+ address));
vtable = value_at_lazy (vtable_type,
vtable_address - vtable_address_point_offset ());
offset_val = value_from_longest(builtin_type_int, cur_base_offset);
@@ -576,7 +578,7 @@ gnuv3_print_method_ptr (const gdb_byte *
static int
gnuv3_method_ptr_size (void)
{
- return 2 * TYPE_LENGTH (builtin_type_void_data_ptr);
+ return 2 * TYPE_LENGTH (builtin_type (current_gdbarch)->builtin_data_ptr);
}
/* GNU v3 implementation of cplus_make_method_ptr. */
@@ -584,7 +586,7 @@ gnuv3_method_ptr_size (void)
static void
gnuv3_make_method_ptr (gdb_byte *contents, CORE_ADDR value, int is_virtual)
{
- int size = TYPE_LENGTH (builtin_type_void_data_ptr);
+ int size = TYPE_LENGTH (builtin_type (current_gdbarch)->builtin_data_ptr);
/* FIXME drow/2006-12-24: The adjustment of "this" is currently
always zero, since the method pointer is of the correct type.
@@ -659,7 +661,8 @@ gnuv3_method_ptr_to_value (struct value
You can provoke this case by casting a Base::* to a Derived::*, for
instance. */
- *this_p = value_cast (builtin_type_void_data_ptr, *this_p);
+ *this_p
+ = value_cast (builtin_type (current_gdbarch)->builtin_data_ptr, *this_p);
adjval = value_from_longest (builtin_type_long, adjustment);
*this_p = value_add (*this_p, adjval);
*this_p = value_cast (final_type, *this_p);
diff -urpN src/gdb/h8300-tdep.c dev2/gdb/h8300-tdep.c
--- src/gdb/h8300-tdep.c 2007-11-05 05:32:21.000000000 +0100
+++ dev2/gdb/h8300-tdep.c 2007-11-05 13:06:10.000000000 +0100
@@ -1134,7 +1134,7 @@ h8300_register_type (struct gdbarch *gdb
return builtin_type_void_func_ptr;
case E_SP_REGNUM:
case E_FP_REGNUM:
- return builtin_type_void_data_ptr;
+ return builtin_type (gdbarch)->builtin_data_ptr;
default:
if (regno == E_PSEUDO_CCR_REGNUM)
return builtin_type_uint8;
diff -urpN src/gdb/i386-tdep.c dev2/gdb/i386-tdep.c
--- src/gdb/i386-tdep.c 2007-11-05 05:32:21.000000000 +0100
+++ dev2/gdb/i386-tdep.c 2007-11-05 13:05:34.000000000 +0100
@@ -1268,7 +1268,8 @@ i386_get_longjmp_target (struct frame_in
{
gdb_byte buf[8];
CORE_ADDR sp, jb_addr;
- int jb_pc_offset = gdbarch_tdep (get_frame_arch (frame))->jb_pc_offset;
+ struct gdbarch *gdbarch = get_frame_arch (frame);
+ int jb_pc_offset = gdbarch_tdep (gdbarch)->jb_pc_offset;
int len = TYPE_LENGTH (builtin_type_void_func_ptr);
/* If JB_PC_OFFSET is -1, we have no way to find out where the
@@ -1278,12 +1279,13 @@ i386_get_longjmp_target (struct frame_in
/* Don't use I386_ESP_REGNUM here, since this function is also used
for AMD64. */
- get_frame_register (frame, gdbarch_sp_regnum (get_frame_arch (frame)), buf);
- sp = extract_typed_address (buf, builtin_type_void_data_ptr);
+ get_frame_register (frame, gdbarch_sp_regnum (gdbarch), buf);
+ sp = extract_typed_address (buf, builtin_type (gdbarch)->builtin_data_ptr);
if (target_read_memory (sp + len, buf, len))
return 0;
- jb_addr = extract_typed_address (buf, builtin_type_void_data_ptr);
+ jb_addr = extract_typed_address (buf,
+ builtin_type (gdbarch)->builtin_data_ptr);
if (target_read_memory (jb_addr + jb_pc_offset, buf, len))
return 0;
@@ -1738,7 +1740,7 @@ i386_register_type (struct gdbarch *gdba
return i386_eflags_type;
if (regnum == I386_EBP_REGNUM || regnum == I386_ESP_REGNUM)
- return builtin_type_void_data_ptr;
+ return builtin_type (gdbarch)->builtin_data_ptr;
if (i386_fp_regnum_p (regnum))
return builtin_type_i387_ext;
diff -urpN src/gdb/m32r-tdep.c dev2/gdb/m32r-tdep.c
--- src/gdb/m32r-tdep.c 2007-11-05 05:32:22.000000000 +0100
+++ dev2/gdb/m32r-tdep.c 2007-11-05 13:03:42.000000000 +0100
@@ -231,7 +231,7 @@ m32r_register_type (struct gdbarch *gdba
if (reg_nr == M32R_PC_REGNUM)
return builtin_type_void_func_ptr;
else if (reg_nr == M32R_SP_REGNUM || reg_nr == M32R_FP_REGNUM)
- return builtin_type_void_data_ptr;
+ return builtin_type (current_gdbarch)->builtin_data_ptr;
else
return builtin_type_int32;
}
diff -urpN src/gdb/m68k-tdep.c dev2/gdb/m68k-tdep.c
--- src/gdb/m68k-tdep.c 2007-11-05 05:32:22.000000000 +0100
+++ dev2/gdb/m68k-tdep.c 2007-11-05 13:03:09.000000000 +0100
@@ -134,7 +134,7 @@ m68k_register_type (struct gdbarch *gdba
return builtin_type_void_func_ptr;
if (regnum >= M68K_A0_REGNUM && regnum <= M68K_A0_REGNUM + 7)
- return builtin_type_void_data_ptr;
+ return builtin_type (gdbarch)->builtin_data_ptr;
if (regnum == M68K_PS_REGNUM)
return m68k_ps_type;
diff -urpN src/gdb/m88k-tdep.c dev2/gdb/m88k-tdep.c
--- src/gdb/m88k-tdep.c 2007-11-05 05:32:22.000000000 +0100
+++ dev2/gdb/m88k-tdep.c 2007-11-05 13:02:24.000000000 +0100
@@ -79,7 +79,7 @@ m88k_register_type (struct gdbarch *gdba
/* R30 and R31 typically contains data addresses. */
if (regnum == M88K_R30_REGNUM || regnum == M88K_R31_REGNUM)
- return builtin_type_void_data_ptr;
+ return builtin_type (gdbarch)->builtin_data_ptr;
return builtin_type_int32;
}
diff -urpN src/gdb/mips-tdep.c dev2/gdb/mips-tdep.c
--- src/gdb/mips-tdep.c 2007-11-05 05:32:22.000000000 +0100
+++ dev2/gdb/mips-tdep.c 2007-11-05 13:00:50.000000000 +0100
@@ -809,10 +809,11 @@ mips_pseudo_register_type (struct gdbarc
/* Use pointer types for registers if we can. For n32 we can not,
since we do not have a 64-bit pointer type. */
- if (mips_abi_regsize (gdbarch) == TYPE_LENGTH (builtin_type_void_data_ptr))
+ if (mips_abi_regsize (gdbarch)
+ == TYPE_LENGTH (builtin_type (gdbarch)->builtin_data_ptr))
{
if (rawnum == MIPS_SP_REGNUM || rawnum == MIPS_EMBED_BADVADDR_REGNUM)
- return builtin_type_void_data_ptr;
+ return builtin_type (gdbarch)->builtin_data_ptr;
else if (rawnum == MIPS_EMBED_PC_REGNUM)
return builtin_type_void_func_ptr;
}
diff -urpN src/gdb/objc-lang.c dev2/gdb/objc-lang.c
--- src/gdb/objc-lang.c 2007-11-05 05:32:22.000000000 +0100
+++ dev2/gdb/objc-lang.c 2007-11-05 12:59:54.000000000 +0100
@@ -1524,7 +1524,8 @@ print_object_command (char *args, int fr
int pc = 0;
object = expr->language_defn->la_exp_desc->evaluate_exp
- (builtin_type_void_data_ptr, expr, &pc, EVAL_NORMAL);
+ (builtin_type (current_gdbarch)->builtin_data_ptr,
+ expr, &pc, EVAL_NORMAL);
do_cleanups (old_chain);
}
diff -urpN src/gdb/procfs.c dev2/gdb/procfs.c
--- src/gdb/procfs.c 2007-08-23 20:08:36.000000000 +0200
+++ dev2/gdb/procfs.c 2007-11-05 12:58:37.000000000 +0100
@@ -2844,8 +2844,11 @@ procfs_address_to_host_pointer (CORE_ADD
{
void *ptr;
- gdb_assert (sizeof (ptr) == TYPE_LENGTH (builtin_type_void_data_ptr));
- gdbarch_address_to_pointer (current_gdbarch, builtin_type_void_data_ptr,
+ gdb_assert (sizeof (ptr)
+ == TYPE_LENGTH (builtin_type (current_gdbarch)
+ ->builtin_data_ptr));
+ gdbarch_address_to_pointer (current_gdbarch,
+ builtin_type (current_gdbarch)->builtin_data_ptr,
&ptr, addr);
return ptr;
}
@@ -5270,7 +5273,8 @@ procfs_can_use_hw_breakpoint (int type,
procfs_address_to_host_pointer will reveal that an internal error
will be generated when the host and target pointer sizes are
different. */
- if (sizeof (void *) != TYPE_LENGTH (builtin_type_void_data_ptr))
+ if (sizeof (void *)
+ != TYPE_LENGTH (builtin_type (current_gdbarch)->builtin_data_ptr))
return 0;
/* Other tests here??? */
diff -urpN src/gdb/solib-svr4.c dev2/gdb/solib-svr4.c
--- src/gdb/solib-svr4.c 2007-10-24 23:22:08.000000000 +0200
+++ dev2/gdb/solib-svr4.c 2007-11-05 12:56:39.000000000 +0100
@@ -111,7 +111,8 @@ LM_ADDR_FROM_LINK_MAP (struct so_list *s
struct link_map_offsets *lmo = svr4_fetch_link_map_offsets ();
return extract_typed_address (so->lm_info->lm + lmo->l_addr_offset,
- builtin_type_void_data_ptr);
+ builtin_type (current_gdbarch)
+ ->builtin_data_ptr);
}
static int
@@ -128,7 +129,8 @@ LM_DYNAMIC_FROM_LINK_MAP (struct so_list
struct link_map_offsets *lmo = svr4_fetch_link_map_offsets ();
return extract_typed_address (so->lm_info->lm + lmo->l_ld_offset,
- builtin_type_void_data_ptr);
+ builtin_type (current_gdbarch)
+ ->builtin_data_ptr);
}
static CORE_ADDR
@@ -207,7 +209,8 @@ LM_NEXT (struct so_list *so)
struct link_map_offsets *lmo = svr4_fetch_link_map_offsets ();
return extract_typed_address (so->lm_info->lm + lmo->l_next_offset,
- builtin_type_void_data_ptr);
+ builtin_type (current_gdbarch)
+ ->builtin_data_ptr);
}
static CORE_ADDR
@@ -216,7 +219,8 @@ LM_NAME (struct so_list *so)
struct link_map_offsets *lmo = svr4_fetch_link_map_offsets ();
return extract_typed_address (so->lm_info->lm + lmo->l_name_offset,
- builtin_type_void_data_ptr);
+ builtin_type (current_gdbarch)
+ ->builtin_data_ptr);
}
static int
@@ -230,7 +234,8 @@ IGNORE_FIRST_LINK_MAP_ENTRY (struct so_l
return 0;
return extract_typed_address (so->lm_info->lm + lmo->l_prev_offset,
- builtin_type_void_data_ptr) == 0;
+ builtin_type (current_gdbarch)
+ ->builtin_data_ptr) == 0;
}
static CORE_ADDR debug_base; /* Base of dynamic linker structures */
@@ -406,8 +411,9 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
ptr_addr = dyn_addr + (buf - bufstart) + arch_size / 8;
if (target_read_memory (ptr_addr, ptr_buf, arch_size / 8) == 0)
- dyn_ptr = extract_typed_address (ptr_buf,
- builtin_type_void_data_ptr);
+ dyn_ptr = extract_typed_address
+ (ptr_buf,
+ builtin_type (current_gdbarch)->builtin_data_ptr);
*ptr = dyn_ptr;
}
return 1;
@@ -454,13 +460,15 @@ elf_locate_base (void)
if (scan_dyntag (DT_MIPS_RLD_MAP, exec_bfd, &dyn_ptr))
{
gdb_byte *pbuf;
- int pbuf_size = TYPE_LENGTH (builtin_type_void_data_ptr);
+ int pbuf_size
+ = TYPE_LENGTH (builtin_type (current_gdbarch)->builtin_data_ptr);
pbuf = alloca (pbuf_size);
/* DT_MIPS_RLD_MAP contains a pointer to the address
of the dynamic link structure. */
if (target_read_memory (dyn_ptr, pbuf, pbuf_size))
return 0;
- return extract_typed_address (pbuf, builtin_type_void_data_ptr);
+ return extract_typed_address
+ (pbuf, builtin_type (current_gdbarch)->builtin_data_ptr);
}
/* Find DT_DEBUG. */
@@ -545,7 +553,8 @@ solib_svr4_r_map (void)
struct link_map_offsets *lmo = svr4_fetch_link_map_offsets ();
return read_memory_typed_address (debug_base + lmo->r_map_offset,
- builtin_type_void_data_ptr);
+ builtin_type (current_gdbarch)
+ ->builtin_data_ptr);
}
/* Find the link map for the dynamic linker (if it is not in the
@@ -565,7 +574,8 @@ solib_svr4_r_ldsomap (void)
return 0;
return read_memory_typed_address (debug_base + lmo->r_ldsomap_offset,
- builtin_type_void_data_ptr);
+ builtin_type (current_gdbarch)
+ ->builtin_data_ptr);
}
/*
@@ -598,7 +608,8 @@ open_symbol_file_object (void *from_ttyp
int errcode;
int from_tty = *(int *)from_ttyp;
struct link_map_offsets *lmo = svr4_fetch_link_map_offsets ();
- int l_name_size = TYPE_LENGTH (builtin_type_void_data_ptr);
+ int l_name_size
+ = TYPE_LENGTH (builtin_type (current_gdbarch)->builtin_data_ptr);
gdb_byte *l_name_buf = xmalloc (l_name_size);
struct cleanup *cleanups = make_cleanup (xfree, l_name_buf);
@@ -618,7 +629,9 @@ open_symbol_file_object (void *from_ttyp
read_memory (lm + lmo->l_name_offset, l_name_buf, l_name_size);
/* Convert the address to host format. */
- l_name = extract_typed_address (l_name_buf, builtin_type_void_data_ptr);
+ l_name = extract_typed_address (l_name_buf,
+ builtin_type (current_gdbarch)
+ ->builtin_data_ptr);
/* Free l_name_buf. */
do_cleanups (cleanups);
@@ -814,7 +827,8 @@ svr4_fetch_objfile_link_map (struct objf
struct lm_info objfile_lm_info;
struct cleanup *old_chain;
CORE_ADDR name_address;
- int l_name_size = TYPE_LENGTH (builtin_type_void_data_ptr);
+ int l_name_size
+ = TYPE_LENGTH (builtin_type (current_gdbarch)->builtin_data_ptr);
gdb_byte *l_name_buf = xmalloc (l_name_size);
old_chain = make_cleanup (xfree, l_name_buf);
@@ -832,7 +846,8 @@ svr4_fetch_objfile_link_map (struct objf
/* Extract this object's name. */
name_address = extract_typed_address (l_name_buf,
- builtin_type_void_data_ptr);
+ builtin_type (current_gdbarch)
+ ->builtin_data_ptr);
target_read_string (name_address, &buffer,
SO_NAME_MAX_PATH_SIZE - 1, &errcode);
make_cleanup (xfree, buffer);
@@ -856,7 +871,8 @@ svr4_fetch_objfile_link_map (struct objf
}
/* Not the file we wanted, continue checking. */
lm = extract_typed_address (objfile_lm_info.lm + lmo->l_next_offset,
- builtin_type_void_data_ptr);
+ builtin_type (current_gdbarch)
+ ->builtin_data_ptr);
do_cleanups (old_chain);
}
return 0;
diff -urpN src/gdb/sparc64-tdep.c dev2/gdb/sparc64-tdep.c
--- src/gdb/sparc64-tdep.c 2007-11-05 05:32:22.000000000 +0100
+++ dev2/gdb/sparc64-tdep.c 2007-11-05 12:48:59.000000000 +0100
@@ -246,7 +246,7 @@ sparc64_register_type (struct gdbarch *g
/* Raw registers. */
if (regnum == SPARC_SP_REGNUM || regnum == SPARC_FP_REGNUM)
- return builtin_type_void_data_ptr;
+ return builtin_type (gdbarch)->builtin_data_ptr;
if (regnum >= SPARC_G0_REGNUM && regnum <= SPARC_I7_REGNUM)
return builtin_type_int64;
if (regnum >= SPARC_F0_REGNUM && regnum <= SPARC_F31_REGNUM)
diff -urpN src/gdb/sparc-tdep.c dev2/gdb/sparc-tdep.c
--- src/gdb/sparc-tdep.c 2007-11-05 05:32:22.000000000 +0100
+++ dev2/gdb/sparc-tdep.c 2007-11-05 12:48:12.000000000 +0100
@@ -337,7 +337,7 @@ sparc32_register_type (struct gdbarch *g
return builtin_type_double;
if (regnum == SPARC_SP_REGNUM || regnum == SPARC_FP_REGNUM)
- return builtin_type_void_data_ptr;
+ return builtin_type (gdbarch)->builtin_data_ptr;
if (regnum == SPARC32_PC_REGNUM || regnum == SPARC32_NPC_REGNUM)
return builtin_type_void_func_ptr;
diff -urpN src/gdb/spu-tdep.c dev2/gdb/spu-tdep.c
--- src/gdb/spu-tdep.c 2007-11-05 05:32:22.000000000 +0100
+++ dev2/gdb/spu-tdep.c 2007-11-05 12:47:36.000000000 +0100
@@ -140,7 +140,7 @@ spu_register_type (struct gdbarch *gdbar
return builtin_type_void_func_ptr;
case SPU_SP_REGNUM:
- return builtin_type_void_data_ptr;
+ return builtin_type (gdbarch)->builtin_data_ptr;
case SPU_FPSCR_REGNUM:
return builtin_type_uint128;
diff -urpN src/gdb/std-regs.c dev2/gdb/std-regs.c
--- src/gdb/std-regs.c 2007-10-22 16:13:19.000000000 +0200
+++ dev2/gdb/std-regs.c 2007-11-05 12:47:02.000000000 +0100
@@ -42,12 +42,14 @@ value_of_builtin_frame_fp_reg (struct fr
frame);
else
{
- struct value *val = allocate_value (builtin_type_void_data_ptr);
+ struct value *val
+ = allocate_value (builtin_type (gdbarch)->builtin_data_ptr);
gdb_byte *buf = value_contents_raw (val);
if (frame == NULL)
memset (buf, 0, TYPE_LENGTH (value_type (val)));
else
- gdbarch_address_to_pointer (gdbarch, builtin_type_void_data_ptr,
+ gdbarch_address_to_pointer (gdbarch,
+ builtin_type (gdbarch)->builtin_data_ptr,
buf, get_frame_base_address (frame));
return val;
}
@@ -61,12 +63,14 @@ value_of_builtin_frame_pc_reg (struct fr
return value_of_register (gdbarch_pc_regnum (gdbarch), frame);
else
{
- struct value *val = allocate_value (builtin_type_void_data_ptr);
+ struct value *val
+ = allocate_value (builtin_type (gdbarch)->builtin_data_ptr);
gdb_byte *buf = value_contents_raw (val);
if (frame == NULL)
memset (buf, 0, TYPE_LENGTH (value_type (val)));
else
- gdbarch_address_to_pointer (gdbarch, builtin_type_void_data_ptr,
+ gdbarch_address_to_pointer (gdbarch,
+ builtin_type (gdbarch)->builtin_data_ptr,
buf, get_frame_pc (frame));
return val;
}
diff -urpN src/gdb/target.c dev2/gdb/target.c
--- src/gdb/target.c 2007-10-22 16:03:37.000000000 +0200
+++ dev2/gdb/target.c 2007-11-05 12:43:42.000000000 +0100
@@ -1785,7 +1785,8 @@ find_default_create_inferior (char *exec
static int
default_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
{
- return (len <= TYPE_LENGTH (builtin_type_void_data_ptr));
+ return (len
+ <= TYPE_LENGTH (builtin_type (current_gdbarch)->builtin_data_ptr));
}
static int
diff -urpN src/gdb/target-descriptions.c dev2/gdb/target-descriptions.c
--- src/gdb/target-descriptions.c 2007-11-05 05:32:22.000000000 +0100
+++ dev2/gdb/target-descriptions.c 2007-11-05 12:42:42.000000000 +0100
@@ -572,12 +572,12 @@ tdesc_register_type (struct gdbarch *gdb
return builtin_type_long_long;
else if (reg->bitsize == gdbarch_ptr_bit (gdbarch))
/* A bit desperate by this point... */
- return builtin_type_void_data_ptr;
+ return builtin_type (gdbarch)->builtin_data_ptr;
}
else if (strcmp (reg->type, "code_ptr") == 0)
return builtin_type_void_func_ptr;
else if (strcmp (reg->type, "data_ptr") == 0)
- return builtin_type_void_data_ptr;
+ return builtin_type (gdbarch)->builtin_data_ptr;
else
internal_error (__FILE__, __LINE__,
"Register \"%s\" has an unknown type \"%s\"",
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [rfc]: Macros in gdbtypes
2007-11-05 12:28 [rfc]: Macros in gdbtypes Markus Deuling
@ 2007-11-05 14:15 ` Mark Kettenis
2007-11-05 15:18 ` Ulrich Weigand
1 sibling, 0 replies; 3+ messages in thread
From: Mark Kettenis @ 2007-11-05 14:15 UTC (permalink / raw)
To: deuling; +Cc: gdb-patches, uweigand
> Date: Mon, 05 Nov 2007 13:26:26 +0100
> From: Markus Deuling <deuling@de.ibm.com>
>
> Hi,
>
> in gdbtypes.h are some macros based on current_gdbarch (eg. builtin_type_void_data_ptr). This patch
> replaces builtin_type_void_data_ptr by its definition in the source tree and then replaces current_gdbarch
> by appropriate methods were possible.
>
> This patch is **NOT** tested and shall no be committed right now.
>
> Before proceeding I want to hear from you if that's a way to go for those macros or if you would prefer s.th. else to get rid
> of the current_gdbarch's in gdbtypes.h
Please no! I think it obfuscates the code to much. It's probably
better to change builtin_type_void_data_ptr to take a gdbarch
argument.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [rfc]: Macros in gdbtypes
2007-11-05 12:28 [rfc]: Macros in gdbtypes Markus Deuling
2007-11-05 14:15 ` Mark Kettenis
@ 2007-11-05 15:18 ` Ulrich Weigand
1 sibling, 0 replies; 3+ messages in thread
From: Ulrich Weigand @ 2007-11-05 15:18 UTC (permalink / raw)
To: Markus Deuling; +Cc: GDB Patches
Hi Markus,
> in gdbtypes.h are some macros based on current_gdbarch (eg. builtin_type_void_data_ptr). This patch
> replaces builtin_type_void_data_ptr by its definition in the source tree and then replaces current_gdbarch
> by appropriate methods were possible.
I'm already working on a set of patches to clean up the builtin type
situation, which doesn't just replace the definition but actually
tries to remove the dependency on global types where appropriate.
They should be ready in another week or so ...
Bye,
Ulrich
--
Dr. Ulrich Weigand
GNU Toolchain for Linux on System z and Cell BE
Ulrich.Weigand@de.ibm.com
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2007-11-05 15:18 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-11-05 12:28 [rfc]: Macros in gdbtypes Markus Deuling
2007-11-05 14:15 ` Mark Kettenis
2007-11-05 15:18 ` Ulrich Weigand
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox