2004-06-18 Andrew Cagney <cagney@gnu.org>
authorAndrew Cagney <cagney@redhat.com>
Fri, 18 Jun 2004 21:36:16 +0000 (21:36 +0000)
committerAndrew Cagney <cagney@redhat.com>
Fri, 18 Jun 2004 21:36:16 +0000 (21:36 +0000)
* gdbarch.sh (DEPRECATED_FUNCTION_START_OFFSET): Deprecated.
* gdbarch.h, gdbarch.c: Re-generate.
* ada-lang.c (ada_finish_decode_line_1): Update.
* infrun.c (handle_inferior_event): Update.
* infcall.c (find_function_addr): Update.
* linespec.c (minsym_found): Update.
* symtab.c (find_function_start_sal, skip_prologue_using_sal):
Update.
* blockframe.c (legacy_frameless_look_for_prologue): Update.
* cli/cli-cmds.c (disassemble_command): Update.
* vax-tdep.c (vax_gdbarch_init): Update.

Index: doc/ChangeLog
2004-06-18  Andrew Cagney  <cagney@gnu.org>

* gdbint.texinfo (Target Architecture Definition): Deprecate
FUNCTION_START_OFFSET.

15 files changed:
gdb/ChangeLog
gdb/ada-lang.c
gdb/arm-tdep.c
gdb/blockframe.c
gdb/cli/cli-cmds.c
gdb/doc/ChangeLog
gdb/doc/gdbint.texinfo
gdb/gdbarch.c
gdb/gdbarch.h
gdb/gdbarch.sh
gdb/infcall.c
gdb/infrun.c
gdb/linespec.c
gdb/symtab.c
gdb/vax-tdep.c

index 173bcd4541fed39b6c2ea29da6f9f90945070d6f..5ab245002e0116e06e584d9da4f3d527be44e9ec 100644 (file)
@@ -1,3 +1,17 @@
+2004-06-18  Andrew Cagney  <cagney@gnu.org>
+
+       * gdbarch.sh (DEPRECATED_FUNCTION_START_OFFSET): Deprecated.
+       * gdbarch.h, gdbarch.c: Re-generate.
+       * ada-lang.c (ada_finish_decode_line_1): Update.
+       * infrun.c (handle_inferior_event): Update.
+       * infcall.c (find_function_addr): Update.
+       * linespec.c (minsym_found): Update.
+       * symtab.c (find_function_start_sal, skip_prologue_using_sal):
+       Update.
+       * blockframe.c (legacy_frameless_look_for_prologue): Update.
+       * cli/cli-cmds.c (disassemble_command): Update.
+       * vax-tdep.c (vax_gdbarch_init): Update.
+
 2004-06-18  Mark Kettenis  <kettenis@gnu.org>
 
        * i386-tdep.c (i386_collect_fpregset): Fix comment.
index 643eb939becadfe022dc05535b730d206fcd204b..c043a88f6cef2a47a99abc4e84f05287e93d33bf 100644 (file)
@@ -5596,7 +5596,7 @@ ada_finish_decode_line_1 (char **spec, struct symtab *file_table,
           val.section = SYMBOL_BFD_SECTION (msymbol);
           if (funfirstline)
             {
-              val.pc += FUNCTION_START_OFFSET;
+              val.pc += DEPRECATED_FUNCTION_START_OFFSET;
               SKIP_PROLOGUE (val.pc);
             }
           selected.sals = (struct symtab_and_line *)
index 8122138e37305b9fc7b85197edf49f202f64c53b..60101dd93ec0e391384cf0b29dc2b96cdeb9b4c4 100644 (file)
@@ -291,7 +291,7 @@ arm_frameless_function_invocation (struct frame_info *fi)
        stmdb sp!, {}
        sub sp, ip, #4.  */
 
-  func_start = (get_frame_func (fi) + FUNCTION_START_OFFSET);
+  func_start = (get_frame_func (fi) + DEPRECATED_FUNCTION_START_OFFSET);
   after_prologue = SKIP_PROLOGUE (func_start);
 
   /* There are some frameless functions whose first two instructions
index b03395c678b555512eed4715054ea0dd6a95ffb5..a9f0b60f447992a7b178325b38d3950008a8054d 100644 (file)
@@ -147,7 +147,7 @@ legacy_frameless_look_for_prologue (struct frame_info *frame)
   func_start = get_frame_func (frame);
   if (func_start)
     {
-      func_start += FUNCTION_START_OFFSET;
+      func_start += DEPRECATED_FUNCTION_START_OFFSET;
       /* NOTE: cagney/2004-02-09: Eliminated per-architecture
          PROLOGUE_FRAMELESS_P call as architectures with custom
          implementations had all been deleted.  Eventually even this
index 9378ac87064fada4c1a3e5ed8d8c654fbf71defe..3dfb303913bc8c13ebe7c5dfe92098a785af5440 100644 (file)
@@ -858,7 +858,7 @@ disassemble_command (char *arg, int from_tty)
        /* FIXME: cagney/2004-02-07: This should be an observer.  */
        low = tui_get_low_disassembly_address (low, pc);
 #endif
-      low += FUNCTION_START_OFFSET;
+      low += DEPRECATED_FUNCTION_START_OFFSET;
     }
   else if (!(space_index = (char *) strchr (arg, ' ')))
     {
@@ -873,7 +873,7 @@ disassemble_command (char *arg, int from_tty)
        /* FIXME: cagney/2004-02-07: This should be an observer.  */
        low = tui_get_low_disassembly_address (low, pc);
 #endif
-      low += FUNCTION_START_OFFSET;
+      low += DEPRECATED_FUNCTION_START_OFFSET;
     }
   else
     {
index 4427bd8b262daae3a04d9c6890a11b8c797d1d80..4f8218e8fff5959f5994c6818c16a126eb06443b 100644 (file)
@@ -1,3 +1,8 @@
+2004-06-18  Andrew Cagney  <cagney@gnu.org>
+
+       * gdbint.texinfo (Target Architecture Definition): Deprecate
+       FUNCTION_START_OFFSET.
+
 2004-06-14  Andrew Cagney  <cagney@gnu.org>
 
        Based on changes from Karl Berry.
index d1e054f9b0e1cb3ae839896fd0a53f710bc376d3..dbcb0b76a77165aaa616293cef4e9466c7b42f4c 100644 (file)
@@ -3260,20 +3260,20 @@ function end symbol is 0.  For such targets, you must define
 @code{FUNCTION_EPILOGUE_SIZE} to expand into the standard size of a
 function's epilogue.
 
-@item FUNCTION_START_OFFSET
-@findex FUNCTION_START_OFFSET
+@item DEPRECATED_FUNCTION_START_OFFSET
+@findex DEPRECATED_FUNCTION_START_OFFSET
 An integer, giving the offset in bytes from a function's address (as
 used in the values of symbols, function pointers, etc.), and the
 function's first genuine instruction.
 
 This is zero on almost all machines: the function's address is usually
-the address of its first instruction.  However, on the VAX, for example,
-each function starts with two bytes containing a bitmask indicating
-which registers to save upon entry to the function.  The VAX @code{call}
-instructions check this value, and save the appropriate registers
-automatically.  Thus, since the offset from the function's address to
-its first instruction is two bytes, @code{FUNCTION_START_OFFSET} would
-be 2 on the VAX.
+the address of its first instruction.  However, on the VAX, for
+example, each function starts with two bytes containing a bitmask
+indicating which registers to save upon entry to the function.  The
+VAX @code{call} instructions check this value, and save the
+appropriate registers automatically.  Thus, since the offset from the
+function's address to its first instruction is two bytes,
+@code{DEPRECATED_FUNCTION_START_OFFSET} would be 2 on the VAX.
 
 @item GCC_COMPILED_FLAG_SYMBOL
 @itemx GCC2_COMPILED_FLAG_SYMBOL
index 26c7006246ec84cb874f9cd0061e9bc149d962b8..84d5b6d56d05e38576ac04c4fb12299ca3f548ad 100644 (file)
@@ -197,7 +197,7 @@ struct gdbarch
   gdbarch_memory_insert_breakpoint_ftype *memory_insert_breakpoint;
   gdbarch_memory_remove_breakpoint_ftype *memory_remove_breakpoint;
   CORE_ADDR decr_pc_after_break;
-  CORE_ADDR function_start_offset;
+  CORE_ADDR deprecated_function_start_offset;
   gdbarch_remote_translate_xfer_address_ftype *remote_translate_xfer_address;
   CORE_ADDR frame_args_skip;
   gdbarch_deprecated_frameless_function_invocation_ftype *deprecated_frameless_function_invocation;
@@ -343,7 +343,7 @@ struct gdbarch startup_gdbarch =
   0,  /* memory_insert_breakpoint */
   0,  /* memory_remove_breakpoint */
   0,  /* decr_pc_after_break */
-  0,  /* function_start_offset */
+  0,  /* deprecated_function_start_offset */
   generic_remote_translate_xfer_address,  /* remote_translate_xfer_address */
   0,  /* frame_args_skip */
   0,  /* deprecated_frameless_function_invocation */
@@ -621,7 +621,7 @@ verify_gdbarch (struct gdbarch *current_gdbarch)
   /* Skip verify of memory_insert_breakpoint, invalid_p == 0 */
   /* Skip verify of memory_remove_breakpoint, invalid_p == 0 */
   /* Skip verify of decr_pc_after_break, invalid_p == 0 */
-  /* Skip verify of function_start_offset, invalid_p == 0 */
+  /* Skip verify of deprecated_function_start_offset, invalid_p == 0 */
   /* Skip verify of remote_translate_xfer_address, invalid_p == 0 */
   /* Skip verify of frame_args_skip, invalid_p == 0 */
   /* Skip verify of deprecated_frameless_function_invocation, has predicate */
@@ -1084,6 +1084,14 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
                       (long) current_gdbarch->deprecated_frame_saved_pc
                       /*DEPRECATED_FRAME_SAVED_PC ()*/);
 #endif
+#ifdef DEPRECATED_FUNCTION_START_OFFSET
+  fprintf_unfiltered (file,
+                      "gdbarch_dump: DEPRECATED_FUNCTION_START_OFFSET # %s\n",
+                      XSTRING (DEPRECATED_FUNCTION_START_OFFSET));
+  fprintf_unfiltered (file,
+                      "gdbarch_dump: DEPRECATED_FUNCTION_START_OFFSET = %ld\n",
+                      (long) DEPRECATED_FUNCTION_START_OFFSET);
+#endif
 #ifdef DEPRECATED_GET_SAVED_REGISTER_P
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
@@ -1526,14 +1534,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
                       "gdbarch_dump: FRAME_RED_ZONE_SIZE = %d\n",
                       FRAME_RED_ZONE_SIZE);
 #endif
-#ifdef FUNCTION_START_OFFSET
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: FUNCTION_START_OFFSET # %s\n",
-                      XSTRING (FUNCTION_START_OFFSET));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: FUNCTION_START_OFFSET = %ld\n",
-                      (long) FUNCTION_START_OFFSET);
-#endif
 #ifdef GET_LONGJMP_TARGET_P
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
@@ -3760,20 +3760,20 @@ set_gdbarch_decr_pc_after_break (struct gdbarch *gdbarch,
 }
 
 CORE_ADDR
-gdbarch_function_start_offset (struct gdbarch *gdbarch)
+gdbarch_deprecated_function_start_offset (struct gdbarch *gdbarch)
 {
   gdb_assert (gdbarch != NULL);
-  /* Skip verify of function_start_offset, invalid_p == 0 */
+  /* Skip verify of deprecated_function_start_offset, invalid_p == 0 */
   if (gdbarch_debug >= 2)
-    fprintf_unfiltered (gdb_stdlog, "gdbarch_function_start_offset called\n");
-  return gdbarch->function_start_offset;
+    fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_function_start_offset called\n");
+  return gdbarch->deprecated_function_start_offset;
 }
 
 void
-set_gdbarch_function_start_offset (struct gdbarch *gdbarch,
-                                   CORE_ADDR function_start_offset)
+set_gdbarch_deprecated_function_start_offset (struct gdbarch *gdbarch,
+                                              CORE_ADDR deprecated_function_start_offset)
 {
-  gdbarch->function_start_offset = function_start_offset;
+  gdbarch->deprecated_function_start_offset = deprecated_function_start_offset;
 }
 
 void
index b0f9f1403ffeabec6d891d11cfd72af9e69e980c..01c5e1e2aaef3e4b8987bdf58e09c260de10c5f8 100644 (file)
@@ -1312,13 +1312,21 @@ extern void set_gdbarch_decr_pc_after_break (struct gdbarch *gdbarch, CORE_ADDR
 #define DECR_PC_AFTER_BREAK (gdbarch_decr_pc_after_break (current_gdbarch))
 #endif
 
-extern CORE_ADDR gdbarch_function_start_offset (struct gdbarch *gdbarch);
-extern void set_gdbarch_function_start_offset (struct gdbarch *gdbarch, CORE_ADDR function_start_offset);
-#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FUNCTION_START_OFFSET)
-#error "Non multi-arch definition of FUNCTION_START_OFFSET"
-#endif
-#if !defined (FUNCTION_START_OFFSET)
-#define FUNCTION_START_OFFSET (gdbarch_function_start_offset (current_gdbarch))
+/* A function can be addressed by either it's "pointer" (possibly a
+   descriptor address) or "entry point" (first executable instruction).
+   The method "convert_from_func_ptr_addr" converting the former to the
+   latter.  DEPRECATED_FUNCTION_START_OFFSET is being used to implement
+   a simplified subset of that functionality - the function's address
+   corresponds to the "function pointer" and the function's start
+   corresponds to the "function entry point" - and hence is redundant. */
+
+extern CORE_ADDR gdbarch_deprecated_function_start_offset (struct gdbarch *gdbarch);
+extern void set_gdbarch_deprecated_function_start_offset (struct gdbarch *gdbarch, CORE_ADDR deprecated_function_start_offset);
+#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FUNCTION_START_OFFSET)
+#error "Non multi-arch definition of DEPRECATED_FUNCTION_START_OFFSET"
+#endif
+#if !defined (DEPRECATED_FUNCTION_START_OFFSET)
+#define DEPRECATED_FUNCTION_START_OFFSET (gdbarch_deprecated_function_start_offset (current_gdbarch))
 #endif
 
 typedef void (gdbarch_remote_translate_xfer_address_ftype) (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len);
index 97f37992ab97c4dcc24332ebd4f26a005860a390..f3c438b26e747b6584f4bcc058c29dd5c8390038 100755 (executable)
@@ -583,8 +583,17 @@ M:ADJUST_BREAKPOINT_ADDRESS:CORE_ADDR:adjust_breakpoint_address:CORE_ADDR bpaddr
 f:MEMORY_INSERT_BREAKPOINT:int:memory_insert_breakpoint:CORE_ADDR addr, char *contents_cache:addr, contents_cache::0:default_memory_insert_breakpoint::0
 f:MEMORY_REMOVE_BREAKPOINT:int:memory_remove_breakpoint:CORE_ADDR addr, char *contents_cache:addr, contents_cache::0:default_memory_remove_breakpoint::0
 v:DECR_PC_AFTER_BREAK:CORE_ADDR:decr_pc_after_break::::0:::0
-v:FUNCTION_START_OFFSET:CORE_ADDR:function_start_offset::::0:::0
-#
+
+# A function can be addressed by either it's "pointer" (possibly a
+# descriptor address) or "entry point" (first executable instruction).
+# The method "convert_from_func_ptr_addr" converting the former to the
+# latter.  DEPRECATED_FUNCTION_START_OFFSET is being used to implement
+# a simplified subset of that functionality - the function's address
+# corresponds to the "function pointer" and the function's start
+# corresponds to the "function entry point" - and hence is redundant.
+
+v:DEPRECATED_FUNCTION_START_OFFSET:CORE_ADDR:deprecated_function_start_offset::::0:::0
+
 m:REMOTE_TRANSLATE_XFER_ADDRESS:void:remote_translate_xfer_address:struct regcache *regcache, CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len:regcache, gdb_addr, gdb_len, rem_addr, rem_len:::generic_remote_translate_xfer_address::0
 #
 v:FRAME_ARGS_SKIP:CORE_ADDR:frame_args_skip::::0:::0
index 8123806e9f609033dfb35064dc7ee2c36df30d8d..77c71eb262e7a9e6c838a34a6c1066bc882fad18 100644 (file)
@@ -207,7 +207,7 @@ find_function_addr (struct value *function, struct type **retval_type)
 
   if (retval_type != NULL)
     *retval_type = value_type;
-  return funaddr + FUNCTION_START_OFFSET;
+  return funaddr + DEPRECATED_FUNCTION_START_OFFSET;
 }
 
 /* Call breakpoint_auto_delete on the current contents of the bpstat
index 8aba9c134c4a16b55dec37139e90743d4ed31047..4581646680c839e0055066457af3859f75118a5a 100644 (file)
@@ -1817,7 +1817,7 @@ handle_inferior_event (struct execution_control_state *ecs)
      will both be 0 if it doesn't work.  */
   find_pc_partial_function (stop_pc, &ecs->stop_func_name,
                            &ecs->stop_func_start, &ecs->stop_func_end);
-  ecs->stop_func_start += FUNCTION_START_OFFSET;
+  ecs->stop_func_start += DEPRECATED_FUNCTION_START_OFFSET;
   ecs->another_trap = 0;
   bpstat_clear (&stop_bpstat);
   stop_step = 0;
index eedc671fd00c896a1b46eb065c2b9bd3a4005784..1371f028333ac5b752d8623c159e7885e001b552 100644 (file)
@@ -1842,7 +1842,7 @@ minsym_found (int funfirstline, struct minimal_symbol *msymbol)
   values.sals[0].section = SYMBOL_BFD_SECTION (msymbol);
   if (funfirstline)
     {
-      values.sals[0].pc += FUNCTION_START_OFFSET;
+      values.sals[0].pc += DEPRECATED_FUNCTION_START_OFFSET;
       values.sals[0].pc = SKIP_PROLOGUE (values.sals[0].pc);
     }
   values.nelts = 1;
index bbcad17e3e32c5fac118eb39d25d7864bea77b91..8fa7cecb7a5ddc32bd9592eaecac57e19ec64505 100644 (file)
@@ -2413,7 +2413,7 @@ find_function_start_sal (struct symbol *sym, int funfirstline)
          !section_is_mapped (section))
        pc = overlay_unmapped_address (pc, section);
 
-      pc += FUNCTION_START_OFFSET;
+      pc += DEPRECATED_FUNCTION_START_OFFSET;
       pc = SKIP_PROLOGUE (pc);
 
       /* For overlays, map pc back into its mapped VMA range */
@@ -3985,7 +3985,7 @@ skip_prologue_using_sal (CORE_ADDR func_addr)
 
   /* Get an initial range for the function.  */
   find_pc_partial_function (func_addr, NULL, &start_pc, &end_pc);
-  start_pc += FUNCTION_START_OFFSET;
+  start_pc += DEPRECATED_FUNCTION_START_OFFSET;
 
   prologue_sal = find_pc_line (start_pc, 0);
   if (prologue_sal.line != 0)
index e07f91f4474759127bb44798fa9374f250c3a183..f09d3e58abc3193a92882a60c4e61827c3d69237 100644 (file)
@@ -506,7 +506,7 @@ vax_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   set_gdbarch_breakpoint_from_pc (gdbarch, vax_breakpoint_from_pc);
 
   /* Misc info */
-  set_gdbarch_function_start_offset (gdbarch, 2);
+  set_gdbarch_deprecated_function_start_offset (gdbarch, 2);
   set_gdbarch_believe_pcc_promotion (gdbarch, 1);
 
   set_gdbarch_print_insn (gdbarch, print_insn_vax);