aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/linespec.c')
-rw-r--r--gdb/linespec.c225
1 files changed, 115 insertions, 110 deletions
diff --git a/gdb/linespec.c b/gdb/linespec.c
index 942a5ac0bb7..37633ccf5ec 100644
--- a/gdb/linespec.c
+++ b/gdb/linespec.c
@@ -1,6 +1,6 @@
/* Parser for linespec for the GNU debugger, GDB.
Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
- 1996, 1997, 1998, 1999, 2000, 2001
+ 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
This file is part of GDB.
@@ -78,26 +78,26 @@ symtabs_and_lines decode_all_digits (char **argptr,
struct symtab *default_symtab,
int default_line,
char ***canonical,
- struct symtab *s,
+ struct symtab *file_symtab,
char *q);
static struct symtabs_and_lines decode_dollar (char *copy,
int funfirstline,
struct symtab *default_symtab,
char ***canonical,
- struct symtab *s);
+ struct symtab *file_symtab);
static struct symtabs_and_lines decode_variable (char *copy,
int funfirstline,
char ***canonical,
- struct symtab *s);
+ struct symtab *file_symtab);
static struct
symtabs_and_lines symbol_found (int funfirstline,
char ***canonical,
char *copy,
struct symbol *sym,
- struct symtab *s,
+ struct symtab *file_symtab,
struct symtab *sym_symtab);
static struct
@@ -229,7 +229,8 @@ find_methods (struct type *t, char *name, struct symbol **sym_arr)
else
phys_name = TYPE_FN_FIELD_PHYSNAME (f, field_counter);
- /* Destructor is handled by caller, dont add it to the list */
+ /* Destructor is handled by caller, don't add it to
+ the list. */
if (is_destructor_name (phys_name) != 0)
continue;
@@ -255,9 +256,10 @@ find_methods (struct type *t, char *name, struct symbol **sym_arr)
&& (class_name[name_len] == '\0'
|| class_name[name_len] == '<'))
{
- /* For GCC 3.x and stabs, constructors and destructors have names
- like __base_ctor and __complete_dtor. Check the physname for now
- if we're looking for a constructor. */
+ /* For GCC 3.x and stabs, constructors and destructors
+ have names like __base_ctor and __complete_dtor.
+ Check the physname for now if we're looking for a
+ constructor. */
for (field_counter
= TYPE_FN_FIELDLIST_LENGTH (t, method_counter) - 1;
field_counter >= 0;
@@ -268,8 +270,8 @@ find_methods (struct type *t, char *name, struct symbol **sym_arr)
f = TYPE_FN_FIELDLIST1 (t, method_counter);
- /* GCC 3.x will never produce stabs stub methods, so we don't need
- to handle this case. */
+ /* GCC 3.x will never produce stabs stub methods, so
+ we don't need to handle this case. */
if (TYPE_FN_FIELD_STUB (f, field_counter))
continue;
phys_name = TYPE_FN_FIELD_PHYSNAME (f, field_counter);
@@ -358,7 +360,7 @@ find_toplevel_char (char *s, char c)
int quoted = 0; /* zero if we're not in quotes;
'"' if we're in a double-quoted string;
'\'' if we're in a single-quoted string. */
- int depth = 0; /* number of unclosed parens we've seen */
+ int depth = 0; /* Number of unclosed parens we've seen. */
char *scan;
for (scan = s; *scan; scan++)
@@ -418,7 +420,7 @@ decode_line_2 (struct symbol *sym_arr[], int nelts, int funfirstline,
printf_unfiltered ("[0] cancel\n[1] all\n");
while (i < nelts)
{
- init_sal (&return_values.sals[i]); /* initialize to zeroes */
+ init_sal (&return_values.sals[i]); /* Initialize to zeroes. */
init_sal (&values.sals[i]);
if (sym_arr[i] && SYMBOL_CLASS (sym_arr[i]) == LOC_BLOCK)
{
@@ -561,7 +563,8 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
{
char *p;
char *q;
- struct symtab *s = NULL;
+ /* If a file name is specified, this is its symtab. */
+ struct symtab *file_symtab = NULL;
char *copy;
/* This is NULL if there are no parens in *ARGPTR, or a pointer to
@@ -578,16 +581,15 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
initialize_defaults (&default_symtab, &default_line);
- /* See if arg is *PC */
+ /* See if arg is *PC. */
if (**argptr == '*')
return decode_indirect (argptr);
- /* Set various flags.
- * 'paren_pointer' is important for overload checking, where
- * we allow things like:
- * (gdb) break c::f(int)
- */
+ /* Set various flags. 'paren_pointer' is important for overload
+ checking, where we allow things like:
+ (gdb) break c::f(int)
+ */
set_flags (*argptr, &is_quoted, &paren_pointer);
@@ -614,7 +616,7 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
/* No, the first part is a filename; set s to be that file's
symtab. Also, move argptr past the filename. */
- s = symtab_from_filename (argptr, p, is_quote_enclosed);
+ file_symtab = symtab_from_filename (argptr, p, is_quote_enclosed);
}
#if 0
/* No one really seems to know why this was added. It certainly
@@ -654,7 +656,7 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
/* S is specified file's symtab, or 0 if no file specified.
arg no longer contains the file name. */
- /* Check whether arg is all digits (and sign) */
+ /* Check whether arg is all digits (and sign). */
q = *argptr;
if (*q == '-' || *q == '+')
@@ -665,13 +667,14 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
if (q != *argptr && (*q == 0 || *q == ' ' || *q == '\t' || *q == ','))
/* We found a token consisting of all digits -- at least one digit. */
return decode_all_digits (argptr, default_symtab, default_line,
- canonical, s, q);
+ canonical, file_symtab, q);
/* Arg token is not digits => try it as a variable name
Find the next token (everything up to end or next whitespace). */
- if (**argptr == '$') /* May be a convenience variable */
- p = skip_quoted (*argptr + (((*argptr)[1] == '$') ? 2 : 1)); /* One or two $ chars possible */
+ if (**argptr == '$') /* May be a convenience variable. */
+ /* One or two $ chars possible. */
+ p = skip_quoted (*argptr + (((*argptr)[1] == '$') ? 2 : 1));
else if (is_quoted)
{
p = skip_quoted (*argptr);
@@ -704,16 +707,16 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
/* If it starts with $: may be a legitimate variable or routine name
(e.g. HP-UX millicode routines such as $$dyncall), or it may
- be history value, or it may be a convenience variable */
+ be history value, or it may be a convenience variable. */
if (*copy == '$')
return decode_dollar (copy, funfirstline, default_symtab,
- canonical, s);
+ canonical, file_symtab);
/* Look up that token as a variable.
If file specified, use that file's per-file block to start with. */
- return decode_variable (copy, funfirstline, canonical, s);
+ return decode_variable (copy, funfirstline, canonical, file_symtab);
}
@@ -768,8 +771,8 @@ set_flags (char *arg, int *is_quoted, char **paren_pointer)
int has_if = 0;
/* 'has_if' is for the syntax:
- * (gdb) break foo if (a==b)
- */
+ (gdb) break foo if (a==b)
+ */
if ((ii = strstr (arg, " if ")) != NULL ||
(ii = strstr (arg, "\tif ")) != NULL ||
(ii = strstr (arg, " if\t")) != NULL ||
@@ -777,10 +780,9 @@ set_flags (char *arg, int *is_quoted, char **paren_pointer)
(ii = strstr (arg, " if(")) != NULL ||
(ii = strstr (arg, "\tif( ")) != NULL)
has_if = 1;
- /* Temporarily zap out "if (condition)" to not
- * confuse the parenthesis-checking code below.
- * This is undone below. Do not change ii!!
- */
+ /* Temporarily zap out "if (condition)" to not confuse the
+ parenthesis-checking code below. This is undone below. Do not
+ change ii!! */
if (has_if)
{
*ii = '\0';
@@ -794,9 +796,8 @@ set_flags (char *arg, int *is_quoted, char **paren_pointer)
if (*paren_pointer != NULL)
*paren_pointer = strrchr (*paren_pointer, ')');
- /* Now that we're safely past the paren_pointer check,
- * put back " if (condition)" so outer layers can see it
- */
+ /* Now that we're safely past the paren_pointer check, put back " if
+ (condition)" so outer layers can see it. */
if (has_if)
*ii = ' ';
}
@@ -849,18 +850,16 @@ locate_first_half (char **argptr, int *is_quote_enclosed)
ii = find_toplevel_char (*argptr, ',');
has_comma = (ii != 0);
- /* Temporarily zap out second half to not
- * confuse the code below.
- * This is undone below. Do not change ii!!
- */
+ /* Temporarily zap out second half to not confuse the code below.
+ This is undone below. Do not change ii!! */
if (has_comma)
{
*ii = '\0';
}
- /* Maybe arg is FILE : LINENUM or FILE : FUNCTION */
- /* May also be CLASS::MEMBER, or NAMESPACE::NAME */
- /* Look for ':', but ignore inside of <> */
+ /* Maybe arg is FILE : LINENUM or FILE : FUNCTION. May also be
+ CLASS::MEMBER, or NAMESPACE::NAME. Look for ':', but ignore
+ inside of <>. */
p = *argptr;
if (p[0] == '"')
@@ -880,18 +879,20 @@ locate_first_half (char **argptr, int *is_quote_enclosed)
error ("malformed template specification in command");
p = temp_end;
}
- /* Check for the end of the first half of the linespec. End of line,
- a tab, a double colon or the last single colon, or a space. But
- if enclosed in double quotes we do not break on enclosed spaces */
+ /* Check for the end of the first half of the linespec. End of
+ line, a tab, a double colon or the last single colon, or a
+ space. But if enclosed in double quotes we do not break on
+ enclosed spaces. */
if (!*p
|| p[0] == '\t'
|| ((p[0] == ':')
&& ((p[1] == ':') || (strchr (p + 1, ':') == NULL)))
|| ((p[0] == ' ') && !*is_quote_enclosed))
break;
- if (p[0] == '.' && strchr (p, ':') == NULL) /* Java qualified method. */
+ if (p[0] == '.' && strchr (p, ':') == NULL)
{
- /* Find the *last* '.', since the others are package qualifiers. */
+ /* Java qualified method. Find the *last* '.', since the
+ others are package qualifiers. */
for (p1 = p; *p1; p1++)
{
if (*p1 == '.')
@@ -903,7 +904,7 @@ locate_first_half (char **argptr, int *is_quote_enclosed)
while (p[0] == ' ' || p[0] == '\t')
p++;
- /* if the closing double quote was left at the end, remove it */
+ /* If the closing double quote was left at the end, remove it. */
if (*is_quote_enclosed)
{
char *closing_quote = strchr (p - 1, '"');
@@ -911,9 +912,8 @@ locate_first_half (char **argptr, int *is_quote_enclosed)
*closing_quote = '\0';
}
- /* Now that we've safely parsed the first half,
- * put back ',' so outer layers can see it
- */
+ /* Now that we've safely parsed the first half, put back ',' so
+ outer layers can see it. */
if (has_comma)
*ii = ',';
@@ -946,8 +946,8 @@ decode_compound (char **argptr, int funfirstline, char ***canonical,
struct type *t;
/* First check for "global" namespace specification,
- of the form "::foo". If found, skip over the colons
- and jump to normal symbol processing */
+ of the form "::foo". If found, skip over the colons
+ and jump to normal symbol processing. */
if (p[0] == ':'
&& ((*argptr == p) || (p[-1] == ' ') || (p[-1] == '\t')))
saved_arg2 += 2;
@@ -970,9 +970,9 @@ decode_compound (char **argptr, int funfirstline, char ***canonical,
Note that namespaces can nest only inside other
namespaces, and not inside classes. So we need only
consider *prefixes* of the string; there is no need to look up
- "B::C" separately as a symbol in the previous example. */
+ "B::C" separately as a symbol in the previous example. */
- p2 = p; /* save for restart */
+ p2 = p; /* Save for restart. */
while (1)
{
/* Extract the class name. */
@@ -997,8 +997,9 @@ decode_compound (char **argptr, int funfirstline, char ***canonical,
(TYPE_CODE (t) == TYPE_CODE_STRUCT
|| TYPE_CODE (t) == TYPE_CODE_UNION)))
{
- /* Arg token is not digits => try it as a function name
- Find the next token(everything up to end or next blank). */
+ /* Arg token is not digits => try it as a function name.
+ Find the next token (everything up to end or next
+ blank). */
if (**argptr
&& strchr (get_gdb_completer_quote_characters (),
**argptr) != NULL)
@@ -1042,13 +1043,13 @@ decode_compound (char **argptr, int funfirstline, char ***canonical,
copy[p - *argptr - 1] = '\0';
}
- /* no line number may be specified */
+ /* No line number may be specified. */
while (*p == ' ' || *p == '\t')
p++;
*argptr = p;
sym = 0;
- i1 = 0; /* counter for the symbol array */
+ i1 = 0; /* Counter for the symbol array. */
sym_arr = (struct symbol **) alloca (total_number_of_methods (t)
* sizeof (struct symbol *));
@@ -1119,9 +1120,9 @@ decode_compound (char **argptr, int funfirstline, char ***canonical,
}
}
- /* Move pointer up to next possible class/namespace token */
- p = p2 + 1; /* restart with old value +1 */
- /* Move pointer ahead to next double-colon */
+ /* Move pointer up to next possible class/namespace token. */
+ p = p2 + 1; /* Restart with old value +1. */
+ /* Move pointer ahead to next double-colon. */
while (*p && (p[0] != ' ') && (p[0] != '\t') && (p[0] != '\''))
{
if (p[0] == '<')
@@ -1132,26 +1133,27 @@ decode_compound (char **argptr, int funfirstline, char ***canonical,
p = temp_end;
}
else if ((p[0] == ':') && (p[1] == ':'))
- break; /* found double-colon */
+ break; /* Found double-colon. */
else
p++;
}
if (*p != ':')
- break; /* out of the while (1) */
+ break; /* Out of the while (1). */
- p2 = p; /* save restart for next time around */
- *argptr = saved_arg2; /* restore argptr */
+ p2 = p; /* Save restart for next time around. */
+ *argptr = saved_arg2; /* Restore argptr. */
} /* while (1) */
- /* Last chance attempt -- check entire name as a symbol */
- /* Use "copy" in preparation for jumping out of this block,
- to be consistent with usage following the jump target */
+ /* Last chance attempt -- check entire name as a symbol. Use "copy"
+ in preparation for jumping out of this block, to be consistent
+ with usage following the jump target. */
copy = (char *) alloca (p - saved_arg2 + 1);
memcpy (copy, saved_arg2, p - saved_arg2);
- /* Note: if is_quoted should be true, we snuff out quote here anyway */
+ /* Note: if is_quoted should be true, we snuff out quote here
+ anyway. */
copy[p - saved_arg2] = '\000';
- /* Set argptr to skip over the name */
+ /* Set argptr to skip over the name. */
*argptr = (*p == '\'') ? p + 1 : p;
/* Look up entire name */
sym = lookup_symbol (copy, 0, VAR_NAMESPACE, 0, &sym_symtab);
@@ -1159,8 +1161,8 @@ decode_compound (char **argptr, int funfirstline, char ***canonical,
return symbol_found (funfirstline, canonical, copy, sym,
NULL, sym_symtab);
- /* Couldn't find any interpretation as classes/namespaces, so give up */
- /* The quotes are important if copy is empty. */
+ /* Couldn't find any interpretation as classes/namespaces, so give
+ up. The quotes are important if copy is empty. */
cplusplus_error (saved_arg,
"Can't find member of namespace, class, struct, or union named \"%s\"\n",
copy);
@@ -1176,7 +1178,7 @@ symtab_from_filename (char **argptr, char *p, int is_quote_enclosed)
{
char *p1;
char *copy;
- struct symtab *s;
+ struct symtab *file_symtab;
p1 = p;
while (p != *argptr && p[-1] == ' ')
@@ -1185,15 +1187,15 @@ symtab_from_filename (char **argptr, char *p, int is_quote_enclosed)
--p;
copy = (char *) alloca (p - *argptr + 1);
memcpy (copy, *argptr, p - *argptr);
- /* It may have the ending quote right after the file name */
+ /* It may have the ending quote right after the file name. */
if (is_quote_enclosed && copy[p - *argptr - 1] == '"')
copy[p - *argptr - 1] = 0;
else
copy[p - *argptr] = 0;
/* Find that file's data. */
- s = lookup_symtab (copy);
- if (s == 0)
+ file_symtab = lookup_symtab (copy);
+ if (file_symtab == 0)
{
if (!have_full_symbols () && !have_partial_symbols ())
error ("No symbol table is loaded. Use the \"file\" command.");
@@ -1206,7 +1208,7 @@ symtab_from_filename (char **argptr, char *p, int is_quote_enclosed)
p++;
*argptr = p;
- return s;
+ return file_symtab;
}
@@ -1218,7 +1220,7 @@ symtab_from_filename (char **argptr, char *p, int is_quote_enclosed)
static struct symtabs_and_lines
decode_all_digits (char **argptr, struct symtab *default_symtab,
int default_line, char ***canonical,
- struct symtab *s, char *q)
+ struct symtab *file_symtab, char *q)
{
struct symtabs_and_lines values;
@@ -1231,7 +1233,7 @@ decode_all_digits (char **argptr, struct symtab *default_symtab,
sign = none;
/* We might need a canonical line spec if no file was specified. */
- int need_canonical = (s == 0) ? 1 : 0;
+ int need_canonical = (file_symtab == 0) ? 1 : 0;
init_sal (&val);
@@ -1239,11 +1241,11 @@ decode_all_digits (char **argptr, struct symtab *default_symtab,
We must guarantee that this section of code is never executed
when we are called with just a function name, since
set_default_source_symtab_and_line uses
- select_source_symtab that calls us with such an argument */
+ select_source_symtab that calls us with such an argument. */
- if (s == 0 && default_symtab == 0)
+ if (file_symtab == 0 && default_symtab == 0)
{
- /* Make sure we have at least a default source file. */
+ /* Make sure we have at least a default source file. */
set_default_source_symtab_and_line ();
initialize_defaults (&default_symtab, &default_line);
}
@@ -1258,13 +1260,13 @@ decode_all_digits (char **argptr, struct symtab *default_symtab,
case plus:
if (q == *argptr)
val.line = 5;
- if (s == 0)
+ if (file_symtab == 0)
val.line = default_line + val.line;
break;
case minus:
if (q == *argptr)
val.line = 15;
- if (s == 0)
+ if (file_symtab == 0)
val.line = default_line - val.line;
else
val.line = 1;
@@ -1276,15 +1278,15 @@ decode_all_digits (char **argptr, struct symtab *default_symtab,
while (*q == ' ' || *q == '\t')
q++;
*argptr = q;
- if (s == 0)
- s = default_symtab;
+ if (file_symtab == 0)
+ file_symtab = default_symtab;
/* It is possible that this source file has more than one symtab,
and that the new line number specification has moved us from the
- default (in s) to a new one. */
- val.symtab = find_line_symtab (s, val.line, NULL, NULL);
+ default (in file_symtab) to a new one. */
+ val.symtab = find_line_symtab (file_symtab, val.line, NULL, NULL);
if (val.symtab == 0)
- val.symtab = s;
+ val.symtab = file_symtab;
val.pc = 0;
values.sals = (struct symtab_and_line *)
@@ -1302,7 +1304,7 @@ decode_all_digits (char **argptr, struct symtab *default_symtab,
static struct symtabs_and_lines
decode_dollar (char *copy, int funfirstline, struct symtab *default_symtab,
- char ***canonical, struct symtab *s)
+ char ***canonical, struct symtab *file_symtab)
{
struct value *valx;
int index = 0;
@@ -1318,9 +1320,9 @@ decode_dollar (char *copy, int funfirstline, struct symtab *default_symtab,
p = (copy[1] == '$') ? copy + 2 : copy + 1;
while (*p >= '0' && *p <= '9')
p++;
- if (!*p) /* reached end of token without hitting non-digit */
+ if (!*p) /* Reached end of token without hitting non-digit. */
{
- /* We have a value history reference */
+ /* We have a value history reference. */
sscanf ((copy[1] == '$') ? copy + 2 : copy + 1, "%d", &index);
valx = access_value_history ((copy[1] == '$') ? -index : index);
if (TYPE_CODE (VALUE_TYPE (valx)) != TYPE_CODE_INT)
@@ -1329,25 +1331,25 @@ decode_dollar (char *copy, int funfirstline, struct symtab *default_symtab,
else
{
/* Not all digits -- may be user variable/function or a
- convenience variable */
+ convenience variable. */
- /* Look up entire name as a symbol first */
+ /* Look up entire name as a symbol first. */
sym = lookup_symbol (copy, 0, VAR_NAMESPACE, 0, &sym_symtab);
- s = (struct symtab *) 0;
+ file_symtab = (struct symtab *) 0;
need_canonical = 1;
/* Symbol was found --> jump to normal symbol processing. */
if (sym)
return symbol_found (funfirstline, canonical, copy, sym,
NULL, sym_symtab);
- /* If symbol was not found, look in minimal symbol tables */
+ /* If symbol was not found, look in minimal symbol tables. */
msymbol = lookup_minimal_symbol (copy, NULL, NULL);
- /* Min symbol was found --> jump to minsym processing. */
+ /* Min symbol was found --> jump to minsym processing. */
if (msymbol)
return minsym_found (funfirstline, msymbol);
- /* Not a user variable or function -- must be convenience variable */
- need_canonical = (s == 0) ? 1 : 0;
+ /* Not a user variable or function -- must be convenience variable. */
+ need_canonical = (file_symtab == 0) ? 1 : 0;
valx = value_of_internalvar (lookup_internalvar (copy + 1));
if (TYPE_CODE (VALUE_TYPE (valx)) != TYPE_CODE_INT)
error ("Convenience variables used in line specs must have integer values.");
@@ -1355,8 +1357,8 @@ decode_dollar (char *copy, int funfirstline, struct symtab *default_symtab,
init_sal (&val);
- /* Either history value or convenience value from above, in valx */
- val.symtab = s ? s : default_symtab;
+ /* Either history value or convenience value from above, in valx. */
+ val.symtab = file_symtab ? file_symtab : default_symtab;
val.line = value_as_long (valx);
val.pc = 0;
@@ -1372,12 +1374,12 @@ decode_dollar (char *copy, int funfirstline, struct symtab *default_symtab,
-/* Decode a linespec that's a variable. If S is non-NULL,
+/* Decode a linespec that's a variable. If FILE_SYMTAB is non-NULL,
look in that symtab's static variables first. */
static struct symtabs_and_lines
decode_variable (char *copy, int funfirstline, char ***canonical,
- struct symtab *s)
+ struct symtab *file_symtab)
{
struct symbol *sym;
/* The symtab that SYM was found in. */
@@ -1386,12 +1388,15 @@ decode_variable (char *copy, int funfirstline, char ***canonical,
struct minimal_symbol *msymbol;
sym = lookup_symbol (copy,
- (s ? BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK)
+ (file_symtab
+ ? BLOCKVECTOR_BLOCK (BLOCKVECTOR (file_symtab),
+ STATIC_BLOCK)
: get_selected_block (0)),
VAR_NAMESPACE, 0, &sym_symtab);
if (sym != NULL)
- return symbol_found (funfirstline, canonical, copy, sym, s, sym_symtab);
+ return symbol_found (funfirstline, canonical, copy, sym,
+ file_symtab, sym_symtab);
msymbol = lookup_minimal_symbol (copy, NULL, NULL);
@@ -1416,7 +1421,7 @@ decode_variable (char *copy, int funfirstline, char ***canonical,
static struct symtabs_and_lines
symbol_found (int funfirstline, char ***canonical, char *copy,
- struct symbol *sym, struct symtab *s,
+ struct symbol *sym, struct symtab *file_symtab,
struct symtab *sym_symtab)
{
struct symtabs_and_lines values;
@@ -1435,7 +1440,7 @@ symbol_found (int funfirstline, char ***canonical, char *copy,
/* We might need a canonical line spec if it is a static
function. */
- if (s == 0)
+ if (file_symtab == 0)
{
struct blockvector *bv = BLOCKVECTOR (sym_symtab);
struct block *b = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);