f8eee05550
- [testsuite] BuildRequire gcc-go. - Drop printing 2D C++ vectors as matrices which no longer worked (BZ 562763). - Fix dejagnu-1.5-4.fc17 compatibility for Go (for BZ 635651). - Use librpm.so.3 for rpm-4.10.0 in Fedora 18. - Revert recent breakage of UNIX objfiles order for symbols lookup.
509 lines
14 KiB
Diff
509 lines
14 KiB
Diff
Index: gdb-7.4.50.20120602/gdb/f-lang.c
|
|
===================================================================
|
|
--- gdb-7.4.50.20120602.orig/gdb/f-lang.c 2012-03-02 20:29:00.000000000 +0100
|
|
+++ gdb-7.4.50.20120602/gdb/f-lang.c 2012-06-02 19:13:31.520050654 +0200
|
|
@@ -59,20 +59,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,
|
|
@@ -385,185 +371,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. */
|
|
@@ -586,193 +394,3 @@ find_common_for_function (const char *na
|
|
}
|
|
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.4.50.20120602/gdb/f-lang.h
|
|
===================================================================
|
|
--- gdb-7.4.50.20120602.orig/gdb/f-lang.h 2012-06-02 19:11:54.000000000 +0200
|
|
+++ gdb-7.4.50.20120602/gdb/f-lang.h 2012-06-02 19:13:55.345317970 +0200
|
|
@@ -76,15 +76,10 @@ 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 (const char *,
|
|
const 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.4.50.20120602/gdb/f-valprint.c
|
|
===================================================================
|
|
--- gdb-7.4.50.20120602.orig/gdb/f-valprint.c 2012-06-02 19:11:54.000000000 +0200
|
|
+++ gdb-7.4.50.20120602/gdb/f-valprint.c 2012-06-02 19:14:11.625313432 +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 (const char *);
|
|
@@ -535,67 +531,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)
|
|
{
|