* partial-stab.h: New complaint: function_outside_compilation_unit.

(case N_FUN: case 'f':, case N_FUN: case 'F':): If pst is zero,
complain, and don't try to set pst's start address.
This commit is contained in:
Jim Blandy 2001-06-01 20:37:11 +00:00
parent 80643fbcda
commit 531017dfa4
2 changed files with 37 additions and 8 deletions

View File

@ -1,3 +1,9 @@
2001-06-01 Jim Blandy <jimb@redhat.com>
* partial-stab.h: New complaint: function_outside_compilation_unit.
(case N_FUN: case 'f':, case N_FUN: case 'F':): If pst is zero,
complain, and don't try to set pst's start address.
2001-05-31 Kevin Buettner <kevinb@redhat.com>
* ia64-linux-tdep.c (IA64_LINUX_SIGCONTEXT_OFFSET): Revise to

View File

@ -40,6 +40,9 @@
switch (CUR_SYMBOL_TYPE)
{
static struct complaint function_outside_compilation_unit = {
"function `%s' appears to be defined outside of all compilation units", 0, 0
};
char *p;
/*
* Standard, external, non-debugger, symbols
@ -576,6 +579,14 @@ switch (CUR_SYMBOL_TYPE)
continue;
case 'f':
if (! pst)
{
int name_len = p - namestring;
char *name = xmalloc (name_len + 1);
memcpy (name, namestring, name_len);
name[name_len] = '\0';
complain (&function_outside_compilation_unit, name);
}
CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
#ifdef DBXREAD_ONLY
/* Kludges for ELF/STABS with Sun ACC */
@ -600,10 +611,12 @@ switch (CUR_SYMBOL_TYPE)
the bounds created by N_SO symbols. If that's the case
use the address of this function as the low bound for
the partial symbol table. */
if (textlow_not_set
|| (pst && CUR_SYMBOL_VALUE < pst->textlow
&& CUR_SYMBOL_VALUE
!= ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))))
if (pst
&& (textlow_not_set
|| (CUR_SYMBOL_VALUE < pst->textlow
&& (CUR_SYMBOL_VALUE
!= ANOFFSET (objfile->section_offsets,
SECT_OFF_TEXT (objfile))))))
{
pst->textlow = CUR_SYMBOL_VALUE;
textlow_not_set = 0;
@ -620,6 +633,14 @@ switch (CUR_SYMBOL_TYPE)
are put into the global psymtab like one would expect.
They're also in the minimal symbol table. */
case 'F':
if (! pst)
{
int name_len = p - namestring;
char *name = xmalloc (name_len + 1);
memcpy (name, namestring, name_len);
name[name_len] = '\0';
complain (&function_outside_compilation_unit, name);
}
CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
#ifdef DBXREAD_ONLY
/* Kludges for ELF/STABS with Sun ACC */
@ -647,10 +668,12 @@ switch (CUR_SYMBOL_TYPE)
the bounds created by N_SO symbols. If that's the case
use the address of this function as the low bound for
the partial symbol table. */
if (textlow_not_set
|| (pst && CUR_SYMBOL_VALUE < pst->textlow
&& CUR_SYMBOL_VALUE
!= ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))))
if (pst
&& (textlow_not_set
|| (CUR_SYMBOL_VALUE < pst->textlow
&& (CUR_SYMBOL_VALUE
!= ANOFFSET (objfile->section_offsets,
SECT_OFF_TEXT (objfile))))))
{
pst->textlow = CUR_SYMBOL_VALUE;
textlow_not_set = 0;