@@ -18,6 +18,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
+#include <stdarg.h>
#include "symtab.h"
#include "gdbtypes.h"
#include "gdbcore.h"
@@ -1264,6 +1265,26 @@ demangle_for_lookup (const char *name, enum language lang,
return cleanup;
}
+extern void log_call (const char *fmt, ...);
+
+void
+log_call (const char *fmt, ...)
+{
+ static FILE *f;
+ va_list args;
+
+ if (f == NULL)
+ f = fopen ("/tmp/gdb-call.log", "a");
+ if (f == NULL)
+ abort ();
+
+ va_start (args, fmt);
+ vfprintf (f, fmt, args);
+ va_end (args);
+ fputc ('\n', f);
+ fflush (f);
+}
+
/* See symtab.h.
This function (or rather its subordinates) have a bunch of loops and
@@ -1310,6 +1331,8 @@ struct symbol *
lookup_language_this (const struct language_defn *lang,
const struct block *block)
{
+ log_call ("lookup_language_this (...)");
+
if (lang->la_name_of_this == NULL || block == NULL)
return NULL;
@@ -1387,6 +1410,8 @@ lookup_symbol_aux (const char *name, const struct block *block,
struct symbol *sym;
const struct language_defn *langdef;
+ log_call ("lookup_symbol_aux (%s, ...)", name);
+
/* Make sure we do something sensible with is_a_field_of_this, since
the callers that set this parameter to some non-null value will
certainly use it later. If we don't set it, the contents of
@@ -1458,6 +1483,8 @@ lookup_local_symbol (const char *name, const struct block *block,
struct symbol *sym;
const struct block *static_block = block_static_block (block);
const char *scope = block_scope (block);
+
+ log_call ("lookup_local_symbol (%s, ...)", name);
/* Check if either no block is specified or it's a global block. */
@@ -1522,6 +1549,8 @@ lookup_symbol_in_block (const char *name, const struct block *block,
{
struct symbol *sym;
+ log_call ("lookup_symbol_in_block (%s, ...)", name);
+
sym = block_lookup_symbol (block, name, domain);
if (sym)
{
@@ -1541,6 +1570,8 @@ lookup_global_symbol_from_objfile (struct objfile *main_objfile,
{
struct objfile *objfile;
+ log_call ("lookup_global_symbol_from_objfile (%s, ...)", name);
+
for (objfile = main_objfile;
objfile;
objfile = objfile_separate_debug_iterate (main_objfile, objfile))
@@ -1568,6 +1599,8 @@ lookup_symbol_in_objfile_symtabs (struct objfile *objfile, int block_index,
gdb_assert (block_index == GLOBAL_BLOCK || block_index == STATIC_BLOCK);
+ log_call ("lookup_symbol_in_objfile_symtabs (%s, ...)", name);
+
ALL_OBJFILE_COMPUNITS (objfile, cust)
{
const struct blockvector *bv;
@@ -1607,6 +1640,8 @@ lookup_symbol_in_objfile_from_linkage_name (struct objfile *objfile,
&modified_name);
struct objfile *main_objfile, *cur_objfile;
+ log_call ("lookup_symbol_in_objfile_from_linkage_name (%s, ...)", linkage_name);
+
if (objfile->separate_debug_objfile_backlink)
main_objfile = objfile->separate_debug_objfile_backlink;
else
@@ -1663,6 +1698,8 @@ lookup_symbol_via_quick_fns (struct objfile *objfile, int block_index,
const struct block *block;
struct symbol *sym;
+ log_call ("lookup_symbol_via_quick_fns (%s, ...)", name);
+
if (!objfile->sf)
return NULL;
cust = objfile->sf->qf->lookup_symbol (objfile, block_index, name, domain);
@@ -1719,6 +1756,8 @@ basic_lookup_symbol_nonlocal (const char *name,
the current objfile. Searching the current objfile first is useful
for both matching user expectations as well as performance. */
+ log_call ("basic_lookup_symbol_nonlocal (%s, ...)", name);
+
sym = lookup_symbol_in_static_block (name, block, domain);
if (sym != NULL)
return sym;
@@ -1735,6 +1774,8 @@ lookup_symbol_in_static_block (const char *name,
{
const struct block *static_block = block_static_block (block);
+ log_call ("lookup_symbol_in_static_block (%s, ...)", name);
+
if (static_block != NULL)
return lookup_symbol_in_block (name, static_block, domain);
else
@@ -1752,6 +1793,8 @@ lookup_symbol_in_objfile (struct objfile *objfile, int block_index,
{
struct symbol *result;
+ log_call ("lookup_symbol_in_objfile (%s, ...)", name);
+
result = lookup_symbol_in_objfile_symtabs (objfile, block_index,
name, domain);
if (result == NULL)
@@ -1771,6 +1814,8 @@ lookup_static_symbol (const char *name, const domain_enum domain)
struct objfile *objfile;
struct symbol *result;
+ log_call ("lookup_static_symbol (%s, ...)", name);
+
ALL_OBJFILES (objfile)
{
result = lookup_symbol_in_objfile (objfile, STATIC_BLOCK, name, domain);
@@ -1829,6 +1874,8 @@ lookup_global_symbol (const char *name,
struct objfile *objfile = NULL;
struct global_sym_lookup_data lookup_data;
+ log_call ("lookup_global_symbol (%s, ...)", name);
+
/* Call library-specific lookup procedure. */
objfile = lookup_objfile_from_block (block);
if (objfile != NULL)