mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-28 06:20:30 +00:00
gas/config/
* tc-xgate.h: Defined tc_frob_symbol. * tc-xgate.c (xgate_frob_symbol): Wrote new function to mark symbols as being XGATE by setting st_target_internal value. bfd/ * elf32-xgate.c (elf32_xgate_add_symbol_hook): Added a temp patch that forces st_target_internal to equal 1, since tc_frob_symbol seems to need adjusting.
This commit is contained in:
parent
a743abeb90
commit
fe54041627
@ -529,12 +529,15 @@ stub_hash_newfunc (struct bfd_hash_entry *entry,
|
||||
bfd_boolean
|
||||
elf32_xgate_add_symbol_hook (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
struct bfd_link_info *info ATTRIBUTE_UNUSED,
|
||||
Elf_Internal_Sym *sym ATTRIBUTE_UNUSED,
|
||||
Elf_Internal_Sym *sym,
|
||||
const char **namep ATTRIBUTE_UNUSED,
|
||||
flagword *flagsp ATTRIBUTE_UNUSED,
|
||||
asection **secp ATTRIBUTE_UNUSED,
|
||||
bfd_vma *valp ATTRIBUTE_UNUSED)
|
||||
{
|
||||
/* For some reason the st_target_internal value is not retained
|
||||
after xgate_frob_symbol is called, hence this temp hack. */
|
||||
sym->st_target_internal = 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -1410,3 +1410,24 @@ xgate_find_match (struct xgate_opcode_handle *opcode_handle,
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Because we are dealing with two different core that view the system
|
||||
memory with different offsets, we must differentiate what core a
|
||||
symbol belongs to, in order for the linker to cross-link. */
|
||||
|
||||
int
|
||||
xgate_frob_symbol (symbolS *sym)
|
||||
{
|
||||
asymbol *bfdsym;
|
||||
elf_symbol_type *elfsym;
|
||||
|
||||
bfdsym = symbol_get_bfdsym (sym);
|
||||
elfsym = elf_symbol_from (bfd_asymbol_bfd (bfdsym), bfdsym);
|
||||
|
||||
gas_assert(elfsym);
|
||||
|
||||
/* Mark the symbol as being *from XGATE */
|
||||
elfsym->internal_elf_sym.st_target_internal = 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -105,6 +105,10 @@ extern int tc_xgate_fix_adjustable (struct fix *);
|
||||
#define elf_tc_final_processing xgate_elf_final_processing
|
||||
extern void xgate_elf_final_processing (void);
|
||||
|
||||
/* Mark the symbol as being from XGATE. */
|
||||
#define tc_frob_symbol(sym, punt) punt = xgate_frob_symbol (sym)
|
||||
extern int xgate_frob_symbol (symbolS *);
|
||||
|
||||
#if 0
|
||||
#define tc_print_statistics(FILE) xgate_print_statistics (FILE)
|
||||
extern void xgate_print_statistics (FILE *);
|
||||
|
Loading…
Reference in New Issue
Block a user