aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-xgate.c
diff options
context:
space:
mode:
Diffstat (limited to 'gas/config/tc-xgate.c')
-rw-r--r--gas/config/tc-xgate.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/gas/config/tc-xgate.c b/gas/config/tc-xgate.c
index 29089c9..84bac42 100644
--- a/gas/config/tc-xgate.c
+++ b/gas/config/tc-xgate.c
@@ -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;
+}