* stabsread.c (patch_block_stabs): If stab & no symbol, make

a LOC_OPTIMIZED_OUT symbol.
	symtab.h (enum address_class): Add LOC_OPTIMIZED_OUT.
	findvar.c (read_var_value), printcmd.c (address_info),
	symmisc.c (print_{,partial_}symbol), c-exp.y (variable),
	m2-exp.y (yylex): Deal with it.
This commit is contained in:
Jim Kingdon 1993-04-02 19:35:30 +00:00
parent c209295fa5
commit 0848ad1c4d
6 changed files with 53 additions and 6 deletions

View File

@ -1,3 +1,24 @@
Fri Apr 2 08:23:14 1993 Jim Kingdon (kingdon@cygnus.com)
* xcoffexec.c: Call fatal() not abort().
* stabsread.c (patch_block_stabs): If stab & no symbol, make
a LOC_OPTIMIZED_OUT symbol.
symtab.h (enum address_class): Add LOC_OPTIMIZED_OUT.
findvar.c (read_var_value), printcmd.c (address_info),
symmisc.c (print_{,partial_}symbol), c-exp.y (variable),
m2-exp.y (yylex): Deal with it.
**** start-sanitize-chill ****
ch-exp.y (yylex): Deal with it.
**** end-sanitize-chill ****
Thu Apr 1 18:43:02 1993 Stu Grossman (grossman@cygnus.com)
* findvar.c (value_from_register): H8500 specific, check to see
if we are looking at short pointer. If so, skip crock.
* h8500-tdep.c (h8500_frame_chain): Mask down value from
read_memory_integer() to avoid getting messed up by sign extension.
Thu Apr 1 16:44:41 1993 K. Richard Pixley (rich@rtl.cygnus.com)
* sparc-tdep.c (in_solib_trampoline), symfile.c (find_pc_section):

View File

@ -671,6 +671,7 @@ variable: name_not_typename
case LOC_LABEL:
case LOC_BLOCK:
case LOC_CONST_BYTES:
case LOC_OPTIMIZED_OUT:
/* In this case the expression can
be evaluated regardless of what

View File

@ -1979,6 +1979,7 @@ yylex ()
case LOC_UNDEF:
case LOC_TYPEDEF:
case LOC_CONST_BYTES:
case LOC_OPTIMIZED_OUT:
error ("Symbol \"%s\" names no location.", simplename);
break;
}

View File

@ -617,6 +617,7 @@ variable: NAME
case LOC_LABEL: /* maybe should go above? */
case LOC_BLOCK:
case LOC_CONST_BYTES:
case LOC_OPTIMIZED_OUT:
/* These are listed so gcc -Wall will reveal
un-handled cases. */
break;

View File

@ -382,9 +382,32 @@ patch_block_stabs (symbols, stabs, objfile)
sym = find_symbol_in_list (symbols, name, pp-name);
if (!sym)
{
#ifndef IBM6000_TARGET
printf ("ERROR! stab symbol not found!\n"); /* FIXME */
#endif
/* On xcoff, if a global is defined and never referenced,
ld will remove it from the executable. There is then
a N_GSYM stab for it, but no regular (C_EXT) symbol. */
sym = (struct symbol *)
obstack_alloc (&objfile->symbol_obstack,
sizeof (struct symbol));
memset (sym, 0, sizeof (struct symbol));
SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
SYMBOL_NAME (sym) =
obstack_copy0 (&objfile->symbol_obstack, name, pp - name);
pp += 2;
if (*(pp-1) == 'F' || *(pp-1) == 'f')
{
/* I don't think the linker does this with functions,
so as far as I know this is never executed.
But it doesn't hurt to check. */
SYMBOL_TYPE (sym) =
lookup_function_type (read_type (&pp, objfile));
}
else
{
SYMBOL_TYPE (sym) = read_type (&pp, objfile);
}
add_symbol_to_list (sym, &global_symbols);
}
else
{

View File

@ -228,14 +228,14 @@ build_section_table (some_bfd, start, end)
count = bfd_count_sections (some_bfd);
if (count == 0)
abort(); /* return 1? */
fatal ("aborting"); /* return 1? */
if (*start)
free (*start);
*start = (struct section_table *) xmalloc (count * sizeof (**start));
*end = *start;
bfd_map_over_sections (some_bfd, add_to_section_table, (char *)end);
if (*end > *start + count)
abort();
fatal ("aborting");
/* We could realloc the table, but it probably loses for most files. */
return 0;
}
@ -644,7 +644,7 @@ xfer_memory (memaddr, myaddr, len, write, target)
boolean (*xfer_fn) PARAMS ((bfd *, sec_ptr, PTR, file_ptr, bfd_size_type));
if (len <= 0)
abort();
fatal ("aborting");
memend = memaddr + len;
xfer_fn = write? bfd_set_section_contents: bfd_get_section_contents;