]> git.pld-linux.org Git - packages/gdb.git/blobdiff - gdb-fortran-common-reduce.patch
- updated to 7.2 with fedora patchset w/o rhel compat fixes.
[packages/gdb.git] / gdb-fortran-common-reduce.patch
diff --git a/gdb-fortran-common-reduce.patch b/gdb-fortran-common-reduce.patch
new file mode 100644 (file)
index 0000000..3b843b8
--- /dev/null
@@ -0,0 +1,507 @@
+Index: gdb-7.1.90.20100711/gdb/f-lang.c
+===================================================================
+--- gdb-7.1.90.20100711.orig/gdb/f-lang.c      2010-06-03 00:41:55.000000000 +0200
++++ gdb-7.1.90.20100711/gdb/f-lang.c   2010-07-13 00:24:04.000000000 +0200
+@@ -56,20 +56,6 @@ typedef struct saved_bf_symnum SAVED_BF,
+ /* Local functions */
+ extern void _initialize_f_language (void);
+-#if 0
+-static void clear_function_list (void);
+-static long get_bf_for_fcn (long);
+-static void clear_bf_list (void);
+-static void patch_all_commons_by_name (char *, CORE_ADDR, int);
+-static SAVED_F77_COMMON_PTR find_first_common_named (char *);
+-static void add_common_entry (struct symbol *);
+-static void add_common_block (char *, CORE_ADDR, int, char *);
+-static SAVED_FUNCTION *allocate_saved_function_node (void);
+-static SAVED_BF_PTR allocate_saved_bf_node (void);
+-static COMMON_ENTRY_PTR allocate_common_entry_node (void);
+-static SAVED_F77_COMMON_PTR allocate_saved_f77_common_node (void);
+-static void patch_common_entries (SAVED_F77_COMMON_PTR, CORE_ADDR, int);
+-#endif
+ static void f_printchar (int c, struct type *type, struct ui_file * stream);
+ static void f_emit_char (int c, struct type *type,
+@@ -458,185 +444,7 @@ _initialize_f_language (void)
+   add_language (&f_language_defn);
+ }
+-#if 0
+-static SAVED_BF_PTR
+-allocate_saved_bf_node (void)
+-{
+-  SAVED_BF_PTR new;
+-
+-  new = (SAVED_BF_PTR) xmalloc (sizeof (SAVED_BF));
+-  return (new);
+-}
+-
+-static SAVED_FUNCTION *
+-allocate_saved_function_node (void)
+-{
+-  SAVED_FUNCTION *new;
+-
+-  new = (SAVED_FUNCTION *) xmalloc (sizeof (SAVED_FUNCTION));
+-  return (new);
+-}
+-
+-static SAVED_F77_COMMON_PTR
+-allocate_saved_f77_common_node (void)
+-{
+-  SAVED_F77_COMMON_PTR new;
+-
+-  new = (SAVED_F77_COMMON_PTR) xmalloc (sizeof (SAVED_F77_COMMON));
+-  return (new);
+-}
+-
+-static COMMON_ENTRY_PTR
+-allocate_common_entry_node (void)
+-{
+-  COMMON_ENTRY_PTR new;
+-
+-  new = (COMMON_ENTRY_PTR) xmalloc (sizeof (COMMON_ENTRY));
+-  return (new);
+-}
+-#endif
+-
+ SAVED_F77_COMMON_PTR head_common_list = NULL; /* Ptr to 1st saved COMMON  */
+-SAVED_F77_COMMON_PTR tail_common_list = NULL; /* Ptr to last saved COMMON  */
+-SAVED_F77_COMMON_PTR current_common = NULL;   /* Ptr to current COMMON */
+-
+-#if 0
+-static SAVED_BF_PTR saved_bf_list = NULL;     /* Ptr to (.bf,function) 
+-                                                 list */
+-static SAVED_BF_PTR saved_bf_list_end = NULL; /* Ptr to above list's end */
+-static SAVED_BF_PTR current_head_bf_list = NULL;      /* Current head of above list
+-                                                       */
+-
+-static SAVED_BF_PTR tmp_bf_ptr;       /* Generic temporary for use 
+-                                 in macros */
+-
+-/* The following function simply enters a given common block onto 
+-   the global common block chain */
+-
+-static void
+-add_common_block (char *name, CORE_ADDR offset, int secnum, char *func_stab)
+-{
+-  SAVED_F77_COMMON_PTR tmp;
+-  char *c, *local_copy_func_stab;
+-
+-  /* If the COMMON block we are trying to add has a blank 
+-     name (i.e. "#BLNK_COM") then we set it to __BLANK
+-     because the darn "#" character makes GDB's input 
+-     parser have fits. */
+-
+-
+-  if (strcmp (name, BLANK_COMMON_NAME_ORIGINAL) == 0
+-      || strcmp (name, BLANK_COMMON_NAME_MF77) == 0)
+-    {
+-
+-      xfree (name);
+-      name = alloca (strlen (BLANK_COMMON_NAME_LOCAL) + 1);
+-      strcpy (name, BLANK_COMMON_NAME_LOCAL);
+-    }
+-
+-  tmp = allocate_saved_f77_common_node ();
+-
+-  local_copy_func_stab = xmalloc (strlen (func_stab) + 1);
+-  strcpy (local_copy_func_stab, func_stab);
+-
+-  tmp->name = xmalloc (strlen (name) + 1);
+-
+-  /* local_copy_func_stab is a stabstring, let us first extract the 
+-     function name from the stab by NULLing out the ':' character. */
+-
+-
+-  c = NULL;
+-  c = strchr (local_copy_func_stab, ':');
+-
+-  if (c)
+-    *c = '\0';
+-  else
+-    error (_("Malformed function STAB found in add_common_block()"));
+-
+-
+-  tmp->owning_function = xmalloc (strlen (local_copy_func_stab) + 1);
+-
+-  strcpy (tmp->owning_function, local_copy_func_stab);
+-
+-  strcpy (tmp->name, name);
+-  tmp->offset = offset;
+-  tmp->next = NULL;
+-  tmp->entries = NULL;
+-  tmp->secnum = secnum;
+-
+-  current_common = tmp;
+-
+-  if (head_common_list == NULL)
+-    {
+-      head_common_list = tail_common_list = tmp;
+-    }
+-  else
+-    {
+-      tail_common_list->next = tmp;
+-      tail_common_list = tmp;
+-    }
+-}
+-#endif
+-
+-/* The following function simply enters a given common entry onto 
+-   the "current_common" block that has been saved away. */
+-
+-#if 0
+-static void
+-add_common_entry (struct symbol *entry_sym_ptr)
+-{
+-  COMMON_ENTRY_PTR tmp;
+-
+-
+-
+-  /* The order of this list is important, since 
+-     we expect the entries to appear in decl.
+-     order when we later issue "info common" calls */
+-
+-  tmp = allocate_common_entry_node ();
+-
+-  tmp->next = NULL;
+-  tmp->symbol = entry_sym_ptr;
+-
+-  if (current_common == NULL)
+-    error (_("Attempt to add COMMON entry with no block open!"));
+-  else
+-    {
+-      if (current_common->entries == NULL)
+-      {
+-        current_common->entries = tmp;
+-        current_common->end_of_entries = tmp;
+-      }
+-      else
+-      {
+-        current_common->end_of_entries->next = tmp;
+-        current_common->end_of_entries = tmp;
+-      }
+-    }
+-}
+-#endif
+-
+-/* This routine finds the first encountred COMMON block named "name" */
+-
+-#if 0
+-static SAVED_F77_COMMON_PTR
+-find_first_common_named (char *name)
+-{
+-
+-  SAVED_F77_COMMON_PTR tmp;
+-
+-  tmp = head_common_list;
+-
+-  while (tmp != NULL)
+-    {
+-      if (strcmp (tmp->name, name) == 0)
+-      return (tmp);
+-      else
+-      tmp = tmp->next;
+-    }
+-  return (NULL);
+-}
+-#endif
+ /* This routine finds the first encountred COMMON block named "name" 
+    that belongs to function funcname */
+@@ -659,193 +467,3 @@ find_common_for_function (char *name, ch
+     }
+   return (NULL);
+ }
+-
+-
+-#if 0
+-
+-/* The following function is called to patch up the offsets 
+-   for the statics contained in the COMMON block named
+-   "name."  */
+-
+-static void
+-patch_common_entries (SAVED_F77_COMMON_PTR blk, CORE_ADDR offset, int secnum)
+-{
+-  COMMON_ENTRY_PTR entry;
+-
+-  blk->offset = offset;               /* Keep this around for future use. */
+-
+-  entry = blk->entries;
+-
+-  while (entry != NULL)
+-    {
+-      SYMBOL_VALUE (entry->symbol) += offset;
+-      SYMBOL_SECTION (entry->symbol) = secnum;
+-
+-      entry = entry->next;
+-    }
+-  blk->secnum = secnum;
+-}
+-
+-/* Patch all commons named "name" that need patching.Since COMMON
+-   blocks occur with relative infrequency, we simply do a linear scan on
+-   the name.  Eventually, the best way to do this will be a
+-   hashed-lookup.  Secnum is the section number for the .bss section
+-   (which is where common data lives). */
+-
+-static void
+-patch_all_commons_by_name (char *name, CORE_ADDR offset, int secnum)
+-{
+-
+-  SAVED_F77_COMMON_PTR tmp;
+-
+-  /* For blank common blocks, change the canonical reprsentation 
+-     of a blank name */
+-
+-  if (strcmp (name, BLANK_COMMON_NAME_ORIGINAL) == 0
+-      || strcmp (name, BLANK_COMMON_NAME_MF77) == 0)
+-    {
+-      xfree (name);
+-      name = alloca (strlen (BLANK_COMMON_NAME_LOCAL) + 1);
+-      strcpy (name, BLANK_COMMON_NAME_LOCAL);
+-    }
+-
+-  tmp = head_common_list;
+-
+-  while (tmp != NULL)
+-    {
+-      if (COMMON_NEEDS_PATCHING (tmp))
+-      if (strcmp (tmp->name, name) == 0)
+-        patch_common_entries (tmp, offset, secnum);
+-
+-      tmp = tmp->next;
+-    }
+-}
+-#endif
+-
+-/* This macro adds the symbol-number for the start of the function 
+-   (the symbol number of the .bf) referenced by symnum_fcn to a 
+-   list.  This list, in reality should be a FIFO queue but since 
+-   #line pragmas sometimes cause line ranges to get messed up 
+-   we simply create a linear list.  This list can then be searched 
+-   first by a queueing algorithm and upon failure fall back to 
+-   a linear scan. */
+-
+-#if 0
+-#define ADD_BF_SYMNUM(bf_sym,fcn_sym) \
+-  \
+-  if (saved_bf_list == NULL) \
+-{ \
+-    tmp_bf_ptr = allocate_saved_bf_node(); \
+-      \
+-      tmp_bf_ptr->symnum_bf = (bf_sym); \
+-        tmp_bf_ptr->symnum_fcn = (fcn_sym);  \
+-          tmp_bf_ptr->next = NULL; \
+-            \
+-              current_head_bf_list = saved_bf_list = tmp_bf_ptr; \
+-                saved_bf_list_end = tmp_bf_ptr; \
+-                } \
+-else \
+-{  \
+-     tmp_bf_ptr = allocate_saved_bf_node(); \
+-       \
+-         tmp_bf_ptr->symnum_bf = (bf_sym);  \
+-         tmp_bf_ptr->symnum_fcn = (fcn_sym);  \
+-           tmp_bf_ptr->next = NULL;  \
+-             \
+-               saved_bf_list_end->next = tmp_bf_ptr;  \
+-                 saved_bf_list_end = tmp_bf_ptr; \
+-                 }
+-#endif
+-
+-/* This function frees the entire (.bf,function) list */
+-
+-#if 0
+-static void
+-clear_bf_list (void)
+-{
+-
+-  SAVED_BF_PTR tmp = saved_bf_list;
+-  SAVED_BF_PTR next = NULL;
+-
+-  while (tmp != NULL)
+-    {
+-      next = tmp->next;
+-      xfree (tmp);
+-      tmp = next;
+-    }
+-  saved_bf_list = NULL;
+-}
+-#endif
+-
+-int global_remote_debug;
+-
+-#if 0
+-
+-static long
+-get_bf_for_fcn (long the_function)
+-{
+-  SAVED_BF_PTR tmp;
+-  int nprobes = 0;
+-
+-  /* First use a simple queuing algorithm (i.e. look and see if the 
+-     item at the head of the queue is the one you want)  */
+-
+-  if (saved_bf_list == NULL)
+-    internal_error (__FILE__, __LINE__,
+-                  _("cannot get .bf node off empty list"));
+-
+-  if (current_head_bf_list != NULL)
+-    if (current_head_bf_list->symnum_fcn == the_function)
+-      {
+-      if (global_remote_debug)
+-        fprintf_unfiltered (gdb_stderr, "*");
+-
+-      tmp = current_head_bf_list;
+-      current_head_bf_list = current_head_bf_list->next;
+-      return (tmp->symnum_bf);
+-      }
+-
+-  /* If the above did not work (probably because #line directives were 
+-     used in the sourcefile and they messed up our internal tables) we now do
+-     the ugly linear scan */
+-
+-  if (global_remote_debug)
+-    fprintf_unfiltered (gdb_stderr, "\ndefaulting to linear scan\n");
+-
+-  nprobes = 0;
+-  tmp = saved_bf_list;
+-  while (tmp != NULL)
+-    {
+-      nprobes++;
+-      if (tmp->symnum_fcn == the_function)
+-      {
+-        if (global_remote_debug)
+-          fprintf_unfiltered (gdb_stderr, "Found in %d probes\n", nprobes);
+-        current_head_bf_list = tmp->next;
+-        return (tmp->symnum_bf);
+-      }
+-      tmp = tmp->next;
+-    }
+-
+-  return (-1);
+-}
+-
+-static SAVED_FUNCTION_PTR saved_function_list = NULL;
+-static SAVED_FUNCTION_PTR saved_function_list_end = NULL;
+-
+-static void
+-clear_function_list (void)
+-{
+-  SAVED_FUNCTION_PTR tmp = saved_function_list;
+-  SAVED_FUNCTION_PTR next = NULL;
+-
+-  while (tmp != NULL)
+-    {
+-      next = tmp->next;
+-      xfree (tmp);
+-      tmp = next;
+-    }
+-
+-  saved_function_list = NULL;
+-}
+-#endif
+Index: gdb-7.1.90.20100711/gdb/f-lang.h
+===================================================================
+--- gdb-7.1.90.20100711.orig/gdb/f-lang.h      2010-07-12 23:07:33.000000000 +0200
++++ gdb-7.1.90.20100711/gdb/f-lang.h   2010-07-13 00:24:04.000000000 +0200
+@@ -76,14 +76,9 @@ typedef struct saved_f77_common SAVED_F7
+ typedef struct common_entry COMMON_ENTRY, *COMMON_ENTRY_PTR;
+ extern SAVED_F77_COMMON_PTR head_common_list; /* Ptr to 1st saved COMMON  */
+-extern SAVED_F77_COMMON_PTR tail_common_list; /* Ptr to last saved COMMON  */
+-extern SAVED_F77_COMMON_PTR current_common;   /* Ptr to current COMMON */
+ extern SAVED_F77_COMMON_PTR find_common_for_function (char *, char *);
+-#define UNINITIALIZED_SECNUM -1
+-#define COMMON_NEEDS_PATCHING(blk) ((blk)->secnum == UNINITIALIZED_SECNUM)
+-
+ #define BLANK_COMMON_NAME_ORIGINAL "#BLNK_COM"        /* XLF assigned  */
+ #define BLANK_COMMON_NAME_MF77     "__BLNK__" /* MF77 assigned  */
+ #define BLANK_COMMON_NAME_LOCAL    "__BLANK"  /* Local GDB */
+Index: gdb-7.1.90.20100711/gdb/f-valprint.c
+===================================================================
+--- gdb-7.1.90.20100711.orig/gdb/f-valprint.c  2010-07-12 23:07:33.000000000 +0200
++++ gdb-7.1.90.20100711/gdb/f-valprint.c       2010-07-13 00:24:25.000000000 +0200
+@@ -35,10 +35,6 @@
+ #include "command.h"
+ #include "block.h"
+-#if 0
+-static int there_is_a_visible_common_named (char *);
+-#endif
+-
+ extern void _initialize_f_valprint (void);
+ static void info_common_command (char *, int);
+ static void list_all_visible_commons (char *);
+@@ -601,67 +597,6 @@ info_common_command (char *comname, int 
+                    comname, funname);
+ }
+-/* This function is used to determine whether there is a
+-   F77 common block visible at the current scope called 'comname'. */
+-
+-#if 0
+-static int
+-there_is_a_visible_common_named (char *comname)
+-{
+-  SAVED_F77_COMMON_PTR the_common;
+-  struct frame_info *fi;
+-  char *funname = 0;
+-  struct symbol *func;
+-
+-  if (comname == NULL)
+-    error (_("Cannot deal with NULL common name!"));
+-
+-  fi = get_selected_frame (_("No frame selected"));
+-
+-  /* The following is generally ripped off from stack.c's routine 
+-     print_frame_info() */
+-
+-  func = find_pc_function (fi->pc);
+-  if (func)
+-    {
+-      /* In certain pathological cases, the symtabs give the wrong
+-         function (when we are in the first function in a file which
+-         is compiled without debugging symbols, the previous function
+-         is compiled with debugging symbols, and the "foo.o" symbol
+-         that is supposed to tell us where the file with debugging symbols
+-         ends has been truncated by ar because it is longer than 15
+-         characters).
+-
+-         So look in the minimal symbol tables as well, and if it comes
+-         up with a larger address for the function use that instead.
+-         I don't think this can ever cause any problems; there shouldn't
+-         be any minimal symbols in the middle of a function.
+-         FIXME:  (Not necessarily true.  What about text labels) */
+-
+-      struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
+-
+-      if (msymbol != NULL
+-        && (SYMBOL_VALUE_ADDRESS (msymbol)
+-            > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
+-      funname = SYMBOL_LINKAGE_NAME (msymbol);
+-      else
+-      funname = SYMBOL_LINKAGE_NAME (func);
+-    }
+-  else
+-    {
+-      struct minimal_symbol *msymbol =
+-      lookup_minimal_symbol_by_pc (fi->pc);
+-
+-      if (msymbol != NULL)
+-      funname = SYMBOL_LINKAGE_NAME (msymbol);
+-    }
+-
+-  the_common = find_common_for_function (comname, funname);
+-
+-  return (the_common ? 1 : 0);
+-}
+-#endif
+-
+ void
+ _initialize_f_valprint (void)
+ {
This page took 0.059738 seconds and 4 git commands to generate.