This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [rfc] [05/09] Get rid of current_gdbarch (macros in mn10300 target)


Ulrich Weigand schrieb:
Markus Deuling wrote:

	* mn10300-tdep.c (set_reg_offsets,mn10300_analyze_prologue): Replace
	AM33 by its expression. Use get_frame_arch to get at the current
	architecture by frame_info.
	* mn10300-tdep.h (AM33_MODE): Remove.

Sorry, but this is not OK. Unfortunately, the mn10300_analyze_prologue routine is called both from within the unwinder (where we always have a frame), *and* from mn10300_skip_prologue, where frame information is not available. Thus "fi" may actually be NULL.

Ok, I see. Your're right. I attached a patch which just replaces AM33_MODe macro to get rid of current_gdbarch in mn10300-tdep.h file. Later on I'll come up with a patch to get rid of the newly introduced current_gdbarch's in mn10300-tdep.c.

Tested by building with --target=mn10300. Ok to commit?

ChangeLog:

	* mn10300-tdep.c (set_reg_offsets,mn10300_analyze_prologue): Replace
	AM33 by its expression.
	* mn10300-tdep.h (AM33_MODE): Remove.


-- Markus Deuling GNU Toolchain for Linux on Cell BE deuling@de.ibm.com

diff -urpN src/gdb/mn10300-tdep.c dev/gdb/mn10300-tdep.c
--- src/gdb/mn10300-tdep.c	2007-11-05 05:32:22.000000000 +0100
+++ dev/gdb/mn10300-tdep.c	2007-11-06 10:37:39.000000000 +0100
@@ -328,7 +328,7 @@ set_reg_offsets (struct frame_info *fi, 
 
   trad_frame_set_this_base (cache, base);
 
-  if (AM33_MODE == 2)
+  if (gdbarch_tdep (current_gdbarch)->am33_mode == 2)
     {
       /* If bit N is set in fpregmask, fsN is saved on the stack.
 	 The floating point registers are saved in ascending order.
@@ -384,7 +384,7 @@ set_reg_offsets (struct frame_info *fi, 
       trad_frame_set_reg_addr (cache, E_D2_REGNUM, base + offset);
       offset += 4;
     }
-  if (AM33_MODE)
+  if (gdbarch_tdep (current_gdbarch)->am33_mode)
     {
       if (movm_args & movm_exother_bit)
         {
@@ -603,7 +603,7 @@ mn10300_analyze_prologue (struct frame_i
 	goto finish_prologue;
     }
 
-  if (AM33_MODE == 2)
+  if (gdbarch_tdep (current_gdbarch)->am33_mode == 2)
     {
       /* Determine if any floating point registers are to be saved.
 	 Look for one of the following three prologue formats:
diff -urpN src/gdb/mn10300-tdep.h dev/gdb/mn10300-tdep.h
--- src/gdb/mn10300-tdep.h	2007-08-23 20:08:36.000000000 +0200
+++ dev/gdb/mn10300-tdep.h	2007-11-06 10:38:52.000000000 +0100
@@ -77,4 +77,3 @@ struct gdbarch_tdep
   int am33_mode;
 };
 
-#define AM33_MODE (gdbarch_tdep (current_gdbarch)->am33_mode)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]