]> Git Repo - binutils.git/blobdiff - bfd/coff-a29k.c
* targets.c (bfd_target): Add fields
[binutils.git] / bfd / coff-a29k.c
index 7161d4065d7131411d35c40ff7acd7b84205f548..21b48502c7d6568e4a7ee5f105e12b669e2ebeae 100644 (file)
@@ -126,9 +126,10 @@ a29k_reloc (abfd, reloc_entry, symbol_in, data, input_section, output_bfd,
     signed_value = SIGN_EXTEND_HWORD(signed_value);
     signed_value <<= 2;
     signed_value +=  sym_value + reloc_entry->addend;
-    if ((signed_value&~0x3ffff) == 0) 
+    if (((signed_value + reloc_entry->address) & ~0x3ffff) == 0)
     {                          /* Absolute jmp/call */
       insn |= (1<<24);         /* Make it absolute */
+      signed_value += reloc_entry->address;
       /* FIXME: Should we change r_type to R_IABS */
     } 
     else 
@@ -248,12 +249,13 @@ static reloc_howto_type howto_table[] =
 #define RELOC_PROCESSING(relent, reloc, symbols, abfd, section) \
  reloc_processing(relent, reloc, symbols, abfd, section)
 
-static void DEFUN(reloc_processing,(relent,reloc, symbols, abfd, section) ,
-          arelent *relent AND
-          struct internal_reloc *reloc AND
-          asymbol **symbols AND
-          bfd *abfd AND
-          asection *section)
+static void
+reloc_processing (relent,reloc, symbols, abfd, section)
+     arelent *relent;
+     struct internal_reloc *reloc;
+     asymbol **symbols;
+     bfd *abfd;
+     asection *section;
 {
     relent->address = reloc->r_vaddr;          
     relent->howto = howto_table + reloc->r_type;
@@ -333,6 +335,14 @@ bfd_target a29kcoff_big_vec =
    bfd_false
   },
 
-  JUMP_TABLE(coff),
+     BFD_JUMP_TABLE_GENERIC (coff),
+     BFD_JUMP_TABLE_COPY (coff),
+     BFD_JUMP_TABLE_CORE (_bfd_nocore),
+     BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
+     BFD_JUMP_TABLE_SYMBOLS (coff),
+     BFD_JUMP_TABLE_RELOCS (coff),
+     BFD_JUMP_TABLE_WRITE (coff),
+     BFD_JUMP_TABLE_LINK (coff),
+
   COFF_SWAP_TABLE
  };
This page took 0.022589 seconds and 4 git commands to generate.