2000-09-06 Kazu Hirata <kazu@hxi.com>

* ecoff.c: Fix formatting.
This commit is contained in:
Kazu Hirata 2000-09-06 20:27:03 +00:00
parent 22df305e11
commit 86905619cc
2 changed files with 175 additions and 194 deletions

View file

@ -1,3 +1,7 @@
2000-09-06 Kazu Hirata <kazu@hxi.com>
* ecoff.c: Fix formatting.
2000-09-06 Alexandre Oliva <aoliva@redhat.com>
* configure: Rebuilt with new libtool.m4.

View file

@ -161,7 +161,6 @@
tqFar -- 8086 far pointers
tqVol -- volatile
The dense number table is used in the front ends, and disappears by
the time the .o is created.
@ -256,8 +255,6 @@
5) index: pointer to a local symbol or aux. entry.
For the following program:
#include <stdio.h>
@ -727,9 +724,9 @@ typedef enum bt {
/* States for whether to hash type or not. */
typedef enum hash_state {
hash_no = 0, /* don't hash type */
hash_yes = 1, /* ok to hash type, or use previous hash */
hash_record = 2 /* ok to record hash, but don't use prev. */
hash_no = 0, /* Don't hash type */
hash_yes = 1, /* OK to hash type, or use previous hash */
hash_record = 2 /* OK to record hash, but don't use prev. */
} hash_state_t;
/* Types of different sized allocation requests. */
@ -770,7 +767,7 @@ enum aux_type {
can't be represented (assuming there are strings > 4096 bytes). */
/* FIXME: Yes, there can be such strings while emitting C++ class debug
info. Templates are the offender here, the test case in question
info. Templates are the offender here, the test case in question
having a mangled class name of
t7rb_tree4Z4xkeyZt4pair2ZC4xkeyZt7xsocket1Z4UserZt9select1st2Zt4pair\
@ -799,7 +796,6 @@ typedef struct vlinks {
unsigned long start_index; /* starting index # of page */
} vlinks_t;
/* Virtual array header. */
typedef struct varray {
vlinks_t *first; /* first page link */
@ -825,11 +821,9 @@ typedef struct varray {
OBJECTS_PER_PAGE (type), /* objects_last_page */ \
}
/* Master type for indexes within the symbol table. */
/* Master type for indexes within the symbol table. */
typedef unsigned long symint_t;
/* Linked list support for nested scopes (file, block, structure, etc.). */
typedef struct scope {
struct scope *prev; /* previous scope level */
@ -838,7 +832,6 @@ typedef struct scope {
st_t type; /* type of the node */
} scope_t;
/* For a local symbol we store a gas symbol as well as the debugging
information we generate. The gas symbol will be NULL if this is
only a debugging symbol. */
@ -855,7 +848,6 @@ typedef struct localsym {
EXTR ecoff_sym; /* ECOFF debugging symbol */
} localsym_t;
/* For aux information we keep the type and the data. */
typedef struct ecoff_aux {
enum aux_type type; /* aux type */
@ -872,7 +864,6 @@ typedef struct ecoff_proc {
/* Number of proc_t structures allocated. */
static unsigned long proc_cnt;
/* Forward reference list for tags referenced, but not yet defined. */
typedef struct forward {
struct forward *next; /* next forward reference */
@ -881,7 +872,6 @@ typedef struct forward {
aux_t *index_ptr; /* pointer to store symbol index */
} forward_t;
/* Linked list support for tags. The first tag in the list is always
the current tag for that block. */
typedef struct tag {
@ -895,7 +885,6 @@ typedef struct tag {
localsym_t *sym; /* file's local symbols */
} tag_t;
/* Head of a block's linked list of tags. */
typedef struct thead {
struct thead *prev; /* previous block */
@ -903,7 +892,6 @@ typedef struct thead {
struct tag *first_tag; /* first tag in block defined */
} thead_t;
/* Union containing pointers to each the small structures which are freed up. */
typedef union small_free {
scope_t *f_scope; /* scope structure */
@ -912,7 +900,6 @@ typedef union small_free {
forward_t *f_forward; /* forward tag reference */
} small_free_t;
/* String hash table entry. */
typedef struct shash {
@ -925,7 +912,6 @@ typedef struct shash {
proc_t *proc_ptr; /* procedure descriptor pointer */
} shash_t;
/* Type hash table support. The size of the hash table must fit
within a page with the other extended file descriptor information.
Because unique types which are hashed are fewer in number than
@ -943,7 +929,6 @@ typedef struct thash {
symint_t indx; /* index within string table */
} thash_t;
/* Extended file descriptor that contains all of the support necessary
to add things to each file separately. */
typedef struct efdr {
@ -1015,11 +1000,9 @@ static const efdr_t init_file =
{ 0 }, /* thash_head: type hash table */
};
static efdr_t *first_file; /* first file descriptor */
static efdr_t **last_file_ptr = &first_file; /* file descriptor tail */
/* Line number information is kept in a list until the assembly is
finished. */
typedef struct lineno_list {
@ -1060,7 +1043,6 @@ typedef union page {
lineno_list_t lineno [ PAGE_SIZE / sizeof (lineno_list_t) ];
} page_type;
/* Structure holding allocation information for small sized structures. */
typedef struct alloc_info {
char *alloc_name; /* name of this allocation type (must be first) */
@ -1072,7 +1054,6 @@ typedef struct alloc_info {
int total_pages; /* total number of pages allocated */
} alloc_info_t;
/* Type information collected together. */
typedef struct type_info {
bt_t basic_type; /* basic type */
@ -1143,7 +1124,6 @@ static type_info_t void_type_info;
static type_info_t last_func_type_info;
static symbolS *last_func_sym_value;
/* Convert COFF basic type to ECOFF basic type. The T_NULL type
really should use bt_Void, but this causes the current ecoff GDB to
issue unsupported type messages, and the Ultrix 4.00 dbx (aka MIPS
@ -1399,9 +1379,8 @@ static const st_t map_coff_sym_type[] = {
st_Nil, /* 106: C_HIDDEN ??? */
};
/* Keep track of different sized allocation requests. */
static alloc_info_t alloc_counts[ (int)alloc_type_last ];
static alloc_info_t alloc_counts[(int) alloc_type_last];
/* Record whether we have seen any debugging information. */
int ecoff_debugging_seen = 0;
@ -1545,8 +1524,8 @@ add_varray_page (vp)
#endif
new_links->datum = allocate_page ();
alloc_counts[(int)alloc_type_varray].total_alloc++;
alloc_counts[(int)alloc_type_varray].total_pages++;
alloc_counts[(int) alloc_type_varray].total_alloc++;
alloc_counts[(int) alloc_type_varray].total_pages++;
new_links->start_index = vp->num_allocated;
vp->objects_last_page = 0;
@ -1582,11 +1561,11 @@ add_string (vp, hash_tbl, str, ret_hash)
register const char *err;
if (vp->objects_last_page + len >= PAGE_USIZE)
{
vp->num_allocated =
((vp->num_allocated + PAGE_USIZE - 1) / PAGE_USIZE) * PAGE_USIZE;
add_varray_page (vp);
}
{
vp->num_allocated =
((vp->num_allocated + PAGE_USIZE - 1) / PAGE_USIZE) * PAGE_USIZE;
add_varray_page (vp);
}
hash_ptr = allocate_shash ();
hash_ptr->indx = vp->num_allocated;
@ -1636,10 +1615,10 @@ add_ecoff_symbol (str, type, storage, sym_value, addend, value, indx)
vp = &cur_file_ptr->symbols;
if (vp->objects_last_page == vp->objects_per_page)
if (vp->objects_last_page == vp->objects_per_page)
add_varray_page (vp);
psym = &vp->last->datum->sym[ vp->objects_last_page++ ];
psym = &vp->last->datum->sym[vp->objects_last_page++];
if (str == (const char *) NULL && sym_value != (symbolS *) NULL)
psym->name = S_GET_NAME (sym_value);
@ -1705,8 +1684,8 @@ add_ecoff_symbol (str, type, storage, sym_value, addend, value, indx)
scope_delta = 1;
/* For every block type except file, struct, union, or
enumeration blocks, push a level on the tag stack. We omit
file types, so that tags can span file boundaries. */
enumeration blocks, push a level on the tag stack. We omit
file types, so that tags can span file boundaries. */
if (type != st_File && storage != sc_Info)
{
ptag_head = allocate_thead ();
@ -1802,11 +1781,12 @@ add_ecoff_symbol (str, type, storage, sym_value, addend, value, indx)
value, depth, sc_str);
if (str_start && str_end_p1 - str_start > 0)
fprintf (stderr, " st= %-11s name= %.*s\n", st_str, str_end_p1 - str_start, str_start);
fprintf (stderr, " st= %-11s name= %.*s\n",
st_str, str_end_p1 - str_start, str_start);
else
{
unsigned long len = strlen (st_str);
fprintf (stderr, " st= %.*s\n", len-1, st_str);
fprintf (stderr, " st= %.*s\n", len - 1, st_str);
}
}
#endif
@ -1839,7 +1819,6 @@ add_aux_sym_symint (aux_word)
return vp->num_allocated++;
}
/* Add an auxiliary symbol (passing a file/symbol index combo). */
static symint_t
@ -1899,9 +1878,8 @@ add_aux_sym_tir (t, state, hash_tbl)
aux.ti.tq4 = (int) t->type_qualifiers[4];
aux.ti.tq5 = (int) t->type_qualifiers[5];
/* For anything that adds additional information, we must not hash,
so check here, and reset our state. */
so check here, and reset our state. */
if (state != hash_no
&& (t->type_qualifiers[0] == tq_Array
@ -1951,11 +1929,11 @@ add_aux_sym_tir (t, state, hash_tbl)
}
}
/* Everything is set up, add the aux symbol. */
/* Everything is set up, add the aux symbol. */
if (vp->objects_last_page == vp->objects_per_page)
add_varray_page (vp);
aux_ptr = &vp->last->datum->aux[ vp->objects_last_page++ ];
aux_ptr = &vp->last->datum->aux[vp->objects_last_page++];
aux_ptr->type = aux_tir;
aux_ptr->data = aux;
@ -1971,8 +1949,7 @@ add_aux_sym_tir (t, state, hash_tbl)
for an enum bitfield. */
if (t->bitfield)
(void) add_aux_sym_symint ((symint_t)t->sizes[t->num_sizes-1]);
(void) add_aux_sym_symint ((symint_t) t->sizes[t->num_sizes - 1]);
/* Add tag information if needed. Structure, union, and enum
references add 2 aux symbols: a [file index, symbol index]
@ -1983,7 +1960,7 @@ add_aux_sym_tir (t, state, hash_tbl)
|| t->basic_type == bt_Enum)
{
register symint_t file_index = t->tag_ptr->ifd;
register localsym_t *sym = t->tag_ptr->sym;
register localsym_t *sym = t->tag_ptr->sym;
register forward_t *forward_ref = allocate_forward ();
if (sym != (localsym_t *) NULL)
@ -1999,11 +1976,11 @@ add_aux_sym_tir (t, state, hash_tbl)
(void) add_aux_sym_rndx (ST_RFDESCAPE, indexNil);
forward_ref->index_ptr
= &vp->last->datum->aux[ vp->objects_last_page - 1];
= &vp->last->datum->aux[vp->objects_last_page - 1];
(void) add_aux_sym_symint (file_index);
forward_ref->ifd_ptr
= &vp->last->datum->aux[ vp->objects_last_page - 1];
= &vp->last->datum->aux[vp->objects_last_page - 1];
}
/* Add information about array bounds if they exist. */
@ -2021,7 +1998,7 @@ add_aux_sym_tir (t, state, hash_tbl)
};
/* NOTE: Mips documentation claims that the bitfield width goes here.
But it needs to be emitted earlier. */
But it needs to be emitted earlier. */
return ret;
}
@ -2045,16 +2022,16 @@ get_tag (tag, sym, basic_type)
if (hash_ptr != (shash_t *) NULL
&& hash_ptr->tag_ptr != (tag_t *) NULL)
{
tag_ptr = hash_ptr->tag_ptr;
if (sym != (localsym_t *) NULL)
{
tag_ptr->basic_type = basic_type;
tag_ptr->ifd = cur_file_ptr->file_index;
tag_ptr->sym = sym;
}
return tag_ptr;
}
{
tag_ptr = hash_ptr->tag_ptr;
if (sym != (localsym_t *) NULL)
{
tag_ptr->basic_type = basic_type;
tag_ptr->ifd = cur_file_ptr->file_index;
tag_ptr->sym = sym;
}
return tag_ptr;
}
if (hash_ptr == (shash_t *) NULL)
{
@ -2091,7 +2068,7 @@ get_tag (tag, sym, basic_type)
static void
add_unknown_tag (ptag)
tag_t *ptag; /* pointer to tag information */
tag_t *ptag; /* pointer to tag information */
{
shash_t *hash_ptr = ptag->hash_ptr;
char *name = hash_ptr->string;
@ -2101,7 +2078,7 @@ add_unknown_tag (ptag)
#ifdef ECOFF_DEBUG
if (debug > 1)
{
char *agg_type = "{unknown aggregate type}";
char *agg_type = "{unknown aggregate type}";
switch (ptag->basic_type)
{
case bt_Struct: agg_type = "struct"; break;
@ -2294,7 +2271,7 @@ add_file (file_name, indx, fake)
}
}
/* If this is a new file, create it. */
/* If this is a new file, create it. */
if (fil_ptr == (efdr_t *) NULL)
{
if (file_desc.objects_last_page == file_desc.objects_per_page)
@ -2334,7 +2311,7 @@ add_file (file_name, indx, fake)
last_file_ptr = &fil_ptr->next_file;
/* Add void & int types to the file (void should be first to catch
errant 0's within the index fields). */
errant 0's within the index fields). */
fil_ptr->void_type = add_aux_sym_tir (&void_type_info,
hash_yes,
&cur_file_ptr->thash_head[0]);
@ -2368,10 +2345,10 @@ ecoff_new_file (name)
/* Convert storage class to string. */
static char *
sc_to_string(storage_class)
sc_to_string (storage_class)
sc_t storage_class;
{
switch(storage_class)
switch (storage_class)
{
case sc_Nil: return "Nil,";
case sc_Text: return "Text,";
@ -2409,10 +2386,10 @@ sc_to_string(storage_class)
/* Convert symbol type to string. */
static char *
st_to_string(symbol_type)
st_to_string (symbol_type)
st_t symbol_type;
{
switch(symbol_type)
switch (symbol_type)
{
case st_Nil: return "Nil,";
case st_Global: return "Global,";
@ -2734,13 +2711,13 @@ ecoff_directive_type (ignore)
coff_type.basic_type = map_coff_types[coff_type.orig_type];
tq_ptr = &coff_type.type_qualifiers[N_TQ];
while (val &~ N_BTMASK)
while (val & ~N_BTMASK)
{
if (tq_ptr == &coff_type.type_qualifiers[0])
{
/* FIXME: We could handle this by setting the continued bit.
There would still be a limit: the .type argument can not
be infinite. */
There would still be a limit: the .type argument can not
be infinite. */
as_warn (_("The type of %s is too complex; it will be simplified"),
coff_sym_name);
break;
@ -2764,11 +2741,11 @@ ecoff_directive_type (ignore)
if (tq_shft != &coff_type.type_qualifiers[0] && tq_shft[-1] == tq_Proc)
{
/* If this is a function, ignore it, so that we don't get two
entries (one from the .ent, and one for the .def that
precedes it). Save the type information so that the end
block can properly add it after the begin block index. For
MIPS knows what reason, we must strip off the function type
at this point. */
entries (one from the .ent, and one for the .def that
precedes it). Save the type information so that the end
block can properly add it after the begin block index. For
MIPS knows what reason, we must strip off the function type
at this point. */
coff_is_function = 1;
tq_shft[-1] = tq_Nil;
}
@ -2888,8 +2865,8 @@ ecoff_directive_endef (ignore)
}
/* If this is an array, make sure the same number of dimensions
and sizes were passed, creating extra sizes for multiply
dimensioned arrays if not passed. */
and sizes were passed, creating extra sizes for multiply
dimensioned arrays if not passed. */
coff_type.extra_sizes = 0;
if (diff)
{
@ -2914,7 +2891,7 @@ ecoff_directive_endef (ignore)
&& coff_type.num_sizes - coff_type.extra_sizes == 1)
{
/* Is this a bitfield? This is indicated by a structure memeber
having a size field that isn't an array. */
having a size field that isn't an array. */
coff_type.bitfield = 1;
}
@ -2959,7 +2936,7 @@ ecoff_directive_endef (ignore)
break;
/* For the beginning of structs, unions, and enumerations, the
size info needs to be passed in the value field. */
size info needs to be passed in the value field. */
case st_Block:
if (coff_type.num_sizes - coff_type.num_dims - coff_type.extra_sizes
!= 1)
@ -2974,8 +2951,8 @@ ecoff_directive_endef (ignore)
break;
/* For the end of structs, unions, and enumerations, omit the
name which is always ".eos". This needs to be done last, so
that any error reporting above gives the correct name. */
name which is always ".eos". This needs to be done last, so
that any error reporting above gives the correct name. */
case st_End:
free (name);
name = (char *) NULL;
@ -2984,10 +2961,10 @@ ecoff_directive_endef (ignore)
break;
/* Members of structures and unions that aren't bitfields, need
to adjust the value from a byte offset to a bit offset.
Members of enumerations do not have the value adjusted, and
can be distinguished by indx == indexNil. For enumerations,
update the maximum enumeration value. */
to adjust the value from a byte offset to a bit offset.
Members of enumerations do not have the value adjusted, and
can be distinguished by indx == indexNil. For enumerations,
update the maximum enumeration value. */
case st_Member:
if (! coff_type.bitfield && ! coff_inside_enumeration)
coff_value *= 8;
@ -3245,9 +3222,10 @@ ecoff_directive_frame (ignore)
cur_proc_ptr->pdr.pcreg = tc_get_register (0);
#if 0 /* Alpha-OSF1 adds "the offset of saved $a0 from $sp", according
to Sandro. I don't yet know where this value should be stored, if
anywhere. */
#if 0
/* Alpha-OSF1 adds "the offset of saved $a0 from $sp", according to
Sandro. I don't yet know where this value should be stored, if
anywhere. */
demand_empty_rest_of_line ();
#else
s_ignore (42);
@ -3388,7 +3366,7 @@ mark_stabs (ignore)
{
if (! stabs_seen)
{
/* Add a dummy @stabs dymbol. */
/* Add a dummy @stabs dymbol. */
stabs_seen = 1;
(void) add_ecoff_symbol (stabs_symbol, stNil, scInfo,
(symbolS *) NULL,
@ -3399,7 +3377,7 @@ mark_stabs (ignore)
/* Parse .weakext directives. */
#ifndef TC_MIPS
/* For TC_MIPS use the version in tc-mips.c. */
/* For TC_MIPS use the version in tc-mips.c. */
void
ecoff_directive_weakext (ignore)
int ignore;
@ -3434,7 +3412,7 @@ ecoff_directive_weakext (ignore)
if (exp.X_op != O_symbol)
{
as_bad (_("bad .weakext directive"));
ignore_rest_of_line();
ignore_rest_of_line ();
return;
}
symbol_set_value_expression (symbolP, &exp);
@ -3646,7 +3624,7 @@ ecoff_frob_symbol (sym)
static asymbol scom_symbol;
/* We must construct a fake section similar to bfd_com_section
but with the name .scommon. */
but with the name .scommon. */
if (scom_section.name == NULL)
{
scom_section = bfd_com_section;
@ -3761,7 +3739,7 @@ ecoff_build_lineno (backend, buf, bufend, offset, linecntptr)
embedded PIC code, it will put strings in the .text section
before the first procedure. We cope by inserting a dummy line if
the address of the first procedure is not 0. Hopefully this
won't screw things up too badly.
won't screw things up too badly.
Don't do this for ECOFF assembly source line numbers. They work
without this extra attention. */
@ -3789,8 +3767,8 @@ ecoff_build_lineno (backend, buf, bufend, offset, linecntptr)
long delta;
/* Get the offset to the memory address of the next line number
(in words). Do this first, so that we can skip ahead to the
next useful line number entry. */
(in words). Do this first, so that we can skip ahead to the
next useful line number entry. */
if (l->next == (lineno_list_t *) NULL)
{
/* We want a count of zero, but it will be decremented
@ -4030,11 +4008,11 @@ ecoff_build_symbols (backend, buf, bufend, offset)
symint_t indx;
/* The value of a block start symbol is the
offset from the start of the procedure. For
other symbols we just use the gas value (but
we must offset it by the vma of the section,
just as BFD does, because BFD will not see
this value). */
offset from the start of the procedure. For
other symbols we just use the gas value (but
we must offset it by the vma of the section,
just as BFD does, because BFD will not see
this value). */
if (sym_ptr->ecoff_sym.asym.st == (int) st_Block
&& sym_ptr->ecoff_sym.asym.sc == (int) sc_Text)
{
@ -4066,8 +4044,8 @@ ecoff_build_symbols (backend, buf, bufend, offset)
sym_ptr->ecoff_sym.asym.st = st_StaticProc;
/* Get the type and storage class based on where
the symbol actually wound up. Traditionally,
N_LBRAC and N_RBRAC are *not* relocated. */
the symbol actually wound up. Traditionally,
N_LBRAC and N_RBRAC are *not* relocated. */
indx = sym_ptr->ecoff_sym.asym.index;
if (sym_ptr->ecoff_sym.asym.st == st_Nil
&& sym_ptr->ecoff_sym.asym.sc == sc_Nil
@ -4143,8 +4121,8 @@ ecoff_build_symbols (backend, buf, bufend, offset)
else
{
/* This must be a user named section.
This is not possible in ECOFF, but it
is in ELF. */
This is not possible in ECOFF, but it
is in ELF. */
sc = sc_Data;
}
@ -4153,11 +4131,11 @@ ecoff_build_symbols (backend, buf, bufend, offset)
}
/* This is just an external symbol if it is
outside a procedure and it has a type.
FIXME: g++ will generate symbols which have
different names in the debugging information
than the actual symbol. Should we handle
them here? */
outside a procedure and it has a type.
FIXME: g++ will generate symbols which have
different names in the debugging information
than the actual symbol. Should we handle
them here? */
if ((S_IS_EXTERNAL (as_sym)
|| S_IS_WEAK (as_sym)
|| ! S_IS_DEFINED (as_sym))
@ -4167,14 +4145,14 @@ ecoff_build_symbols (backend, buf, bufend, offset)
local = 0;
/* This is just an external symbol if it is a
common symbol. */
common symbol. */
if (S_IS_COMMON (as_sym))
local = 0;
/* If an st_end symbol has an associated gas
symbol, then it is a local label created for
a .bend or .end directive. Stabs line
numbers will have \001 in the names. */
symbol, then it is a local label created for
a .bend or .end directive. Stabs line
numbers will have \001 in the names. */
if (local
&& sym_ptr->ecoff_sym.asym.st != st_End
&& strchr (sym_ptr->name, '\001') == 0)
@ -4222,10 +4200,10 @@ ecoff_build_symbols (backend, buf, bufend, offset)
}
/* The value of the symbol marking the end of a
procedure is the size of the procedure. The
value of the symbol marking the end of a
block is the offset from the start of the
procedure to the block. */
procedure is the size of the procedure. The
value of the symbol marking the end of a
block is the offset from the start of the
procedure to the block. */
if (begin_type == st_Proc
|| begin_type == st_StaticProc)
{
@ -4239,7 +4217,7 @@ ecoff_build_symbols (backend, buf, bufend, offset)
- S_GET_VALUE (begin_ptr->as_sym));
/* If the size is odd, this is probably a
mips16 function; force it to be even. */
mips16 function; force it to be even. */
if ((sym_ptr->ecoff_sym.asym.value & 1) != 0)
++sym_ptr->ecoff_sym.asym.value;
@ -4305,7 +4283,7 @@ ecoff_build_symbols (backend, buf, bufend, offset)
sym_ptr->ecoff_sym.ifd = fil_ptr->file_index;
/* Don't try to merge an FDR which has an
external symbol attached to it. */
external symbol attached to it. */
if (S_IS_EXTERNAL (as_sym) || S_IS_WEAK (as_sym))
fil_ptr->fdr.fMerge = 0;
}
@ -4386,9 +4364,9 @@ ecoff_build_procs (backend, buf, bufend, offset)
if (first)
{
/* This code used to force the adr of the very
first fdr to be 0. However, the native tools
don't do that, and I can't remember why it
used to work that way, so I took it out. */
first fdr to be 0. However, the native tools
don't do that, and I can't remember why it
used to work that way, so I took it out. */
fil_ptr->fdr.adr = adr;
first = 0;
}
@ -4700,7 +4678,7 @@ ecoff_build_debug (hdr, bufp, backend)
efdr_t *fil_ptr;
int end_warning;
efdr_t *hold_file_ptr;
proc_t * hold_proc_ptr;
proc_t *hold_proc_ptr;
symbolS *sym;
char *buf;
char *bufend;
@ -4871,7 +4849,6 @@ allocate_cluster (npages)
return value;
}
static page_type *cluster_ptr = NULL;
static unsigned long pages_left = 0;
@ -4893,7 +4870,7 @@ allocate_page ()
pages_left--;
return cluster_ptr++;
#else /* MALLOC_CHECK */
#else /* MALLOC_CHECK */
page_type *ptr;
@ -4901,7 +4878,7 @@ allocate_page ()
memset (ptr, 0, PAGE_USIZE);
return ptr;
#endif /* MALLOC_CHECK */
#endif /* MALLOC_CHECK */
}
/* Allocate scoping information. */
@ -4914,23 +4891,23 @@ allocate_scope ()
#ifndef MALLOC_CHECK
ptr = alloc_counts[(int)alloc_type_scope].free_list.f_scope;
ptr = alloc_counts[(int) alloc_type_scope].free_list.f_scope;
if (ptr != (scope_t *) NULL)
alloc_counts[ (int)alloc_type_scope ].free_list.f_scope = ptr->free;
alloc_counts[(int) alloc_type_scope].free_list.f_scope = ptr->free;
else
{
register int unallocated = alloc_counts[(int)alloc_type_scope].unallocated;
register page_type *cur_page = alloc_counts[(int)alloc_type_scope].cur_page;
register int unallocated = alloc_counts[(int) alloc_type_scope].unallocated;
register page_type *cur_page = alloc_counts[(int) alloc_type_scope].cur_page;
if (unallocated == 0)
{
unallocated = PAGE_SIZE / sizeof (scope_t);
alloc_counts[(int)alloc_type_scope].cur_page = cur_page = allocate_page ();
alloc_counts[(int)alloc_type_scope].total_pages++;
alloc_counts[(int) alloc_type_scope].cur_page = cur_page = allocate_page ();
alloc_counts[(int) alloc_type_scope].total_pages++;
}
ptr = &cur_page->scope[--unallocated];
alloc_counts[(int)alloc_type_scope].unallocated = unallocated;
alloc_counts[(int) alloc_type_scope].unallocated = unallocated;
}
#else
@ -4939,7 +4916,7 @@ allocate_scope ()
#endif
alloc_counts[(int)alloc_type_scope].total_alloc++;
alloc_counts[(int) alloc_type_scope].total_alloc++;
*ptr = initial_scope;
return ptr;
}
@ -4950,11 +4927,11 @@ static void
free_scope (ptr)
scope_t *ptr;
{
alloc_counts[(int)alloc_type_scope].total_free++;
alloc_counts[(int) alloc_type_scope].total_free++;
#ifndef MALLOC_CHECK
ptr->free = alloc_counts[(int)alloc_type_scope].free_list.f_scope;
alloc_counts[(int)alloc_type_scope].free_list.f_scope = ptr;
ptr->free = alloc_counts[(int) alloc_type_scope].free_list.f_scope;
alloc_counts[(int) alloc_type_scope].free_list.f_scope = ptr;
#else
free ((PTR) ptr);
#endif
@ -4970,18 +4947,18 @@ allocate_vlinks ()
#ifndef MALLOC_CHECK
register int unallocated = alloc_counts[(int)alloc_type_vlinks].unallocated;
register page_type *cur_page = alloc_counts[(int)alloc_type_vlinks].cur_page;
register int unallocated = alloc_counts[(int) alloc_type_vlinks].unallocated;
register page_type *cur_page = alloc_counts[(int) alloc_type_vlinks].cur_page;
if (unallocated == 0)
{
unallocated = PAGE_SIZE / sizeof (vlinks_t);
alloc_counts[(int)alloc_type_vlinks].cur_page = cur_page = allocate_page ();
alloc_counts[(int)alloc_type_vlinks].total_pages++;
alloc_counts[(int) alloc_type_vlinks].cur_page = cur_page = allocate_page ();
alloc_counts[(int) alloc_type_vlinks].total_pages++;
}
ptr = &cur_page->vlinks[--unallocated];
alloc_counts[(int)alloc_type_vlinks].unallocated = unallocated;
alloc_counts[(int) alloc_type_vlinks].unallocated = unallocated;
#else
@ -4989,7 +4966,7 @@ allocate_vlinks ()
#endif
alloc_counts[(int)alloc_type_vlinks].total_alloc++;
alloc_counts[(int) alloc_type_vlinks].total_alloc++;
*ptr = initial_vlinks;
return ptr;
}
@ -5004,18 +4981,18 @@ allocate_shash ()
#ifndef MALLOC_CHECK
register int unallocated = alloc_counts[(int)alloc_type_shash].unallocated;
register page_type *cur_page = alloc_counts[(int)alloc_type_shash].cur_page;
register int unallocated = alloc_counts[(int) alloc_type_shash].unallocated;
register page_type *cur_page = alloc_counts[(int) alloc_type_shash].cur_page;
if (unallocated == 0)
{
unallocated = PAGE_SIZE / sizeof (shash_t);
alloc_counts[(int)alloc_type_shash].cur_page = cur_page = allocate_page ();
alloc_counts[(int)alloc_type_shash].total_pages++;
alloc_counts[(int) alloc_type_shash].cur_page = cur_page = allocate_page ();
alloc_counts[(int) alloc_type_shash].total_pages++;
}
ptr = &cur_page->shash[--unallocated];
alloc_counts[(int)alloc_type_shash].unallocated = unallocated;
alloc_counts[(int) alloc_type_shash].unallocated = unallocated;
#else
@ -5023,7 +5000,7 @@ allocate_shash ()
#endif
alloc_counts[(int)alloc_type_shash].total_alloc++;
alloc_counts[(int) alloc_type_shash].total_alloc++;
*ptr = initial_shash;
return ptr;
}
@ -5038,18 +5015,18 @@ allocate_thash ()
#ifndef MALLOC_CHECK
register int unallocated = alloc_counts[(int)alloc_type_thash].unallocated;
register page_type *cur_page = alloc_counts[(int)alloc_type_thash].cur_page;
register int unallocated = alloc_counts[(int) alloc_type_thash].unallocated;
register page_type *cur_page = alloc_counts[(int) alloc_type_thash].cur_page;
if (unallocated == 0)
{
unallocated = PAGE_SIZE / sizeof (thash_t);
alloc_counts[(int)alloc_type_thash].cur_page = cur_page = allocate_page ();
alloc_counts[(int)alloc_type_thash].total_pages++;
alloc_counts[(int) alloc_type_thash].cur_page = cur_page = allocate_page ();
alloc_counts[(int) alloc_type_thash].total_pages++;
}
ptr = &cur_page->thash[--unallocated];
alloc_counts[(int)alloc_type_thash].unallocated = unallocated;
alloc_counts[(int) alloc_type_thash].unallocated = unallocated;
#else
@ -5057,7 +5034,7 @@ allocate_thash ()
#endif
alloc_counts[(int)alloc_type_thash].total_alloc++;
alloc_counts[(int) alloc_type_thash].total_alloc++;
*ptr = initial_thash;
return ptr;
}
@ -5072,23 +5049,23 @@ allocate_tag ()
#ifndef MALLOC_CHECK
ptr = alloc_counts[(int)alloc_type_tag].free_list.f_tag;
ptr = alloc_counts[(int) alloc_type_tag].free_list.f_tag;
if (ptr != (tag_t *) NULL)
alloc_counts[(int)alloc_type_tag].free_list.f_tag = ptr->free;
alloc_counts[(int) alloc_type_tag].free_list.f_tag = ptr->free;
else
{
register int unallocated = alloc_counts[(int)alloc_type_tag].unallocated;
register page_type *cur_page = alloc_counts[(int)alloc_type_tag].cur_page;
register int unallocated = alloc_counts[(int) alloc_type_tag].unallocated;
register page_type *cur_page = alloc_counts[(int) alloc_type_tag].cur_page;
if (unallocated == 0)
{
unallocated = PAGE_SIZE / sizeof (tag_t);
alloc_counts[(int)alloc_type_tag].cur_page = cur_page = allocate_page ();
alloc_counts[(int)alloc_type_tag].total_pages++;
alloc_counts[(int) alloc_type_tag].cur_page = cur_page = allocate_page ();
alloc_counts[(int) alloc_type_tag].total_pages++;
}
ptr = &cur_page->tag[--unallocated];
alloc_counts[(int)alloc_type_tag].unallocated = unallocated;
alloc_counts[(int) alloc_type_tag].unallocated = unallocated;
}
#else
@ -5097,7 +5074,7 @@ allocate_tag ()
#endif
alloc_counts[(int)alloc_type_tag].total_alloc++;
alloc_counts[(int) alloc_type_tag].total_alloc++;
*ptr = initial_tag;
return ptr;
}
@ -5108,11 +5085,11 @@ static void
free_tag (ptr)
tag_t *ptr;
{
alloc_counts[(int)alloc_type_tag].total_free++;
alloc_counts[(int) alloc_type_tag].total_free++;
#ifndef MALLOC_CHECK
ptr->free = alloc_counts[(int)alloc_type_tag].free_list.f_tag;
alloc_counts[(int)alloc_type_tag].free_list.f_tag = ptr;
ptr->free = alloc_counts[(int) alloc_type_tag].free_list.f_tag;
alloc_counts[(int) alloc_type_tag].free_list.f_tag = ptr;
#else
free ((PTR_T) ptr);
#endif
@ -5128,18 +5105,18 @@ allocate_forward ()
#ifndef MALLOC_CHECK
register int unallocated = alloc_counts[(int)alloc_type_forward].unallocated;
register page_type *cur_page = alloc_counts[(int)alloc_type_forward].cur_page;
register int unallocated = alloc_counts[(int) alloc_type_forward].unallocated;
register page_type *cur_page = alloc_counts[(int) alloc_type_forward].cur_page;
if (unallocated == 0)
{
unallocated = PAGE_SIZE / sizeof (forward_t);
alloc_counts[(int)alloc_type_forward].cur_page = cur_page = allocate_page ();
alloc_counts[(int)alloc_type_forward].total_pages++;
alloc_counts[(int) alloc_type_forward].cur_page = cur_page = allocate_page ();
alloc_counts[(int) alloc_type_forward].total_pages++;
}
ptr = &cur_page->forward[--unallocated];
alloc_counts[(int)alloc_type_forward].unallocated = unallocated;
alloc_counts[(int) alloc_type_forward].unallocated = unallocated;
#else
@ -5147,7 +5124,7 @@ allocate_forward ()
#endif
alloc_counts[(int)alloc_type_forward].total_alloc++;
alloc_counts[(int) alloc_type_forward].total_alloc++;
*ptr = initial_forward;
return ptr;
}
@ -5162,23 +5139,23 @@ allocate_thead ()
#ifndef MALLOC_CHECK
ptr = alloc_counts[(int)alloc_type_thead].free_list.f_thead;
ptr = alloc_counts[(int) alloc_type_thead].free_list.f_thead;
if (ptr != (thead_t *) NULL)
alloc_counts[ (int)alloc_type_thead ].free_list.f_thead = ptr->free;
alloc_counts[(int) alloc_type_thead].free_list.f_thead = ptr->free;
else
{
register int unallocated = alloc_counts[(int)alloc_type_thead].unallocated;
register page_type *cur_page = alloc_counts[(int)alloc_type_thead].cur_page;
register int unallocated = alloc_counts[(int) alloc_type_thead].unallocated;
register page_type *cur_page = alloc_counts[(int) alloc_type_thead].cur_page;
if (unallocated == 0)
{
unallocated = PAGE_SIZE / sizeof (thead_t);
alloc_counts[(int)alloc_type_thead].cur_page = cur_page = allocate_page ();
alloc_counts[(int)alloc_type_thead].total_pages++;
alloc_counts[(int) alloc_type_thead].cur_page = cur_page = allocate_page ();
alloc_counts[(int) alloc_type_thead].total_pages++;
}
ptr = &cur_page->thead[--unallocated];
alloc_counts[(int)alloc_type_thead].unallocated = unallocated;
alloc_counts[(int) alloc_type_thead].unallocated = unallocated;
}
#else
@ -5187,7 +5164,7 @@ allocate_thead ()
#endif
alloc_counts[(int)alloc_type_thead].total_alloc++;
alloc_counts[(int) alloc_type_thead].total_alloc++;
*ptr = initial_thead;
return ptr;
}
@ -5198,11 +5175,11 @@ static void
free_thead (ptr)
thead_t *ptr;
{
alloc_counts[(int)alloc_type_thead].total_free++;
alloc_counts[(int) alloc_type_thead].total_free++;
#ifndef MALLOC_CHECK
ptr->free = (thead_t *) alloc_counts[(int)alloc_type_thead].free_list.f_thead;
alloc_counts[(int)alloc_type_thead].free_list.f_thead = ptr;
ptr->free = (thead_t *) alloc_counts[(int) alloc_type_thead].free_list.f_thead;
alloc_counts[(int) alloc_type_thead].free_list.f_thead = ptr;
#else
free ((PTR_T) ptr);
#endif
@ -5216,18 +5193,18 @@ allocate_lineno_list ()
#ifndef MALLOC_CHECK
register int unallocated = alloc_counts[(int)alloc_type_lineno].unallocated;
register page_type *cur_page = alloc_counts[(int)alloc_type_lineno].cur_page;
register int unallocated = alloc_counts[(int) alloc_type_lineno].unallocated;
register page_type *cur_page = alloc_counts[(int) alloc_type_lineno].cur_page;
if (unallocated == 0)
{
unallocated = PAGE_SIZE / sizeof (lineno_list_t);
alloc_counts[(int)alloc_type_lineno].cur_page = cur_page = allocate_page ();
alloc_counts[(int)alloc_type_lineno].total_pages++;
alloc_counts[(int) alloc_type_lineno].cur_page = cur_page = allocate_page ();
alloc_counts[(int) alloc_type_lineno].total_pages++;
}
ptr = &cur_page->lineno[--unallocated];
alloc_counts[(int)alloc_type_lineno].unallocated = unallocated;
alloc_counts[(int) alloc_type_lineno].unallocated = unallocated;
#else
@ -5235,7 +5212,7 @@ allocate_lineno_list ()
#endif
alloc_counts[(int)alloc_type_lineno].total_alloc++;
alloc_counts[(int) alloc_type_lineno].total_alloc++;
*ptr = initial_lineno_list;
return ptr;
}
@ -5257,7 +5234,7 @@ ecoff_set_gp_prolog_size (sz)
cur_proc_ptr->pdr.gp_used = 1;
}
int
int
ecoff_no_current_file ()
{
return cur_file_ptr == (efdr_t *) NULL;
@ -5272,7 +5249,7 @@ ecoff_generate_asm_lineno ()
as_where (&filename, &lineno);
if (current_stabs_filename == (char *)NULL
if (current_stabs_filename == (char *) NULL
|| strcmp (current_stabs_filename, filename))
add_file (filename, 0, 1);
@ -5297,7 +5274,7 @@ ecoff_generate_asm_lineno ()
pl = &noproc_lineno;
while (*pl != (lineno_list_t *) NULL)
pl = &(*pl)->next;
pl = &(*pl)->next;
*pl = list;
}
else