* buildsym.c (struct pending_block): Move from buildsym.h.
(pending_blocks): Likewise; now static. (pending_block_obstack): New global. (free_pending_blocks): Free blocks. (record_pending_block): Use pending_block_obstack. * buildsym.h (struct pending_block): Move definition to buildsym.c. (pending_blocks): Don't declare.
This commit is contained in:
parent
d2e5c99a26
commit
93eed41f8e
@ -1,3 +1,14 @@
|
||||
2012-12-10 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* buildsym.c (struct pending_block): Move from buildsym.h.
|
||||
(pending_blocks): Likewise; now static.
|
||||
(pending_block_obstack): New global.
|
||||
(free_pending_blocks): Free blocks.
|
||||
(record_pending_block): Use pending_block_obstack.
|
||||
* buildsym.h (struct pending_block): Move definition to
|
||||
buildsym.c.
|
||||
(pending_blocks): Don't declare.
|
||||
|
||||
2012-12-10 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* solib-svr4.c (svr4_solib_create_inferior_hook) [_SCO_DS]: Remove
|
||||
|
@ -83,6 +83,25 @@ static struct obstack pending_addrmap_obstack;
|
||||
the end, then we just toss the addrmap. */
|
||||
static int pending_addrmap_interesting;
|
||||
|
||||
/* An obstack used for allocating pending blocks. */
|
||||
|
||||
static struct obstack pending_block_obstack;
|
||||
|
||||
/* List of blocks already made (lexical contexts already closed).
|
||||
This is used at the end to make the blockvector. */
|
||||
|
||||
struct pending_block
|
||||
{
|
||||
struct pending_block *next;
|
||||
struct block *block;
|
||||
};
|
||||
|
||||
/* Pointer to the head of a linked list of symbol blocks which have
|
||||
already been finalized (lexical contexts already closed) and which
|
||||
are just waiting to be built into a blockvector when finalizing the
|
||||
associated symtab. */
|
||||
|
||||
static struct pending_block *pending_blocks;
|
||||
|
||||
static int compare_line_numbers (const void *ln1p, const void *ln2p);
|
||||
|
||||
@ -205,9 +224,11 @@ really_free_pendings (void *dummy)
|
||||
void
|
||||
free_pending_blocks (void)
|
||||
{
|
||||
/* The links are made in the objfile_obstack, so we only need to
|
||||
reset PENDING_BLOCKS. */
|
||||
pending_blocks = NULL;
|
||||
if (pending_blocks != NULL)
|
||||
{
|
||||
obstack_free (&pending_block_obstack, NULL);
|
||||
pending_blocks = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Take one of the lists of symbols and make a block from it. Keep
|
||||
@ -418,8 +439,11 @@ record_pending_block (struct objfile *objfile, struct block *block,
|
||||
{
|
||||
struct pending_block *pblock;
|
||||
|
||||
if (pending_blocks == NULL)
|
||||
obstack_init (&pending_block_obstack);
|
||||
|
||||
pblock = (struct pending_block *)
|
||||
obstack_alloc (&objfile->objfile_obstack, sizeof (struct pending_block));
|
||||
obstack_alloc (&pending_block_obstack, sizeof (struct pending_block));
|
||||
pblock->block = block;
|
||||
if (opblock)
|
||||
{
|
||||
|
@ -37,6 +37,7 @@ struct addrmap;
|
||||
this technique. */
|
||||
|
||||
struct block;
|
||||
struct pending_block;
|
||||
|
||||
#ifndef EXTERN
|
||||
#define EXTERN extern
|
||||
@ -177,21 +178,6 @@ EXTERN int context_stack_size;
|
||||
|
||||
EXTERN int within_function;
|
||||
|
||||
/* List of blocks already made (lexical contexts already closed).
|
||||
This is used at the end to make the blockvector. */
|
||||
|
||||
struct pending_block
|
||||
{
|
||||
struct pending_block *next;
|
||||
struct block *block;
|
||||
};
|
||||
|
||||
/* Pointer to the head of a linked list of symbol blocks which have
|
||||
already been finalized (lexical contexts already closed) and which
|
||||
are just waiting to be built into a blockvector when finalizing the
|
||||
associated symtab. */
|
||||
|
||||
EXTERN struct pending_block *pending_blocks;
|
||||
|
||||
|
||||
struct subfile_stack
|
||||
|
Loading…
Reference in New Issue
Block a user