Move compile_instance to compile.c
This simple patch moves any code related to compile_instance into compile.c, reserving compile-c-* files strictly for C language support. gdb/ChangeLog: * compile/compile-c-symbols.c (struct symbol_error) (hash_symbol_error, eq_symbol_error, del_symbol_error) (compile_instance::insert_symbol_error) (compile_instance::error_symbol_once): Move to ... * compile/compile.c: ... here.
This commit is contained in:
parent
9cdfd9a26e
commit
946d3d10e7
6 changed files with 203 additions and 193 deletions
|
@ -24,98 +24,6 @@
|
|||
#include "compile-c.h"
|
||||
#include "objfiles.h"
|
||||
|
||||
/* An object that maps a gdb type to a gcc type. */
|
||||
|
||||
struct type_map_instance
|
||||
{
|
||||
/* The gdb type. */
|
||||
|
||||
struct type *type;
|
||||
|
||||
/* The corresponding gcc type handle. */
|
||||
|
||||
gcc_type gcc_type_handle;
|
||||
};
|
||||
|
||||
/* Hash a type_map_instance. */
|
||||
|
||||
static hashval_t
|
||||
hash_type_map_instance (const void *p)
|
||||
{
|
||||
const struct type_map_instance *inst = (const struct type_map_instance *) p;
|
||||
|
||||
return htab_hash_pointer (inst->type);
|
||||
}
|
||||
|
||||
/* Check two type_map_instance objects for equality. */
|
||||
|
||||
static int
|
||||
eq_type_map_instance (const void *a, const void *b)
|
||||
{
|
||||
const struct type_map_instance *insta = (const struct type_map_instance *) a;
|
||||
const struct type_map_instance *instb = (const struct type_map_instance *) b;
|
||||
|
||||
return insta->type == instb->type;
|
||||
}
|
||||
|
||||
/* Constructor for compile_instance. */
|
||||
|
||||
compile_instance::compile_instance (struct gcc_base_context *gcc_fe,
|
||||
const char *options)
|
||||
: m_gcc_fe (gcc_fe), m_gcc_target_options (options),
|
||||
m_symbol_err_map (NULL)
|
||||
{
|
||||
m_type_map = htab_create_alloc (10, hash_type_map_instance,
|
||||
eq_type_map_instance,
|
||||
xfree, xcalloc, xfree);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* See compile-internal.h. */
|
||||
|
||||
bool
|
||||
compile_instance::get_cached_type (struct type *type, gcc_type &ret) const
|
||||
{
|
||||
struct type_map_instance inst, *found;
|
||||
|
||||
inst.type = type;
|
||||
found = (struct type_map_instance *) htab_find (m_type_map, &inst);
|
||||
if (found != NULL)
|
||||
{
|
||||
ret = found->gcc_type_handle;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/* See compile-internal.h. */
|
||||
|
||||
void
|
||||
compile_instance::insert_type (struct type *type, gcc_type gcc_type)
|
||||
{
|
||||
struct type_map_instance inst, *add;
|
||||
void **slot;
|
||||
|
||||
inst.type = type;
|
||||
inst.gcc_type_handle = gcc_type;
|
||||
slot = htab_find_slot (m_type_map, &inst, INSERT);
|
||||
|
||||
add = (struct type_map_instance *) *slot;
|
||||
/* The type might have already been inserted in order to handle
|
||||
recursive types. */
|
||||
if (add != NULL && add->gcc_type_handle != gcc_type)
|
||||
error (_("Unexpected type id from GCC, check you use recent enough GCC."));
|
||||
|
||||
if (add == NULL)
|
||||
{
|
||||
add = XNEW (struct type_map_instance);
|
||||
*add = inst;
|
||||
*slot = add;
|
||||
}
|
||||
}
|
||||
|
||||
/* Convert a pointer type to its gcc representation. */
|
||||
|
||||
static gcc_type
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue