aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorJean Marie Diaz <ambar@cygnus>1994-08-04 16:38:05 +0000
committerJean Marie Diaz <ambar@cygnus>1994-08-04 16:38:05 +0000
commit8337ee9d5178460b1a14614666f26edf2bb4d949 (patch)
treec4e8fc86bb1d3b860d1e29ed8924968b2af73577 /bfd
parent1d595f2c0a1514d130271f34130e7afc6286c0d1 (diff)
downloadgdb-8337ee9d5178460b1a14614666f26edf2bb4d949.zip
gdb-8337ee9d5178460b1a14614666f26edf2bb4d949.tar.gz
gdb-8337ee9d5178460b1a14614666f26edf2bb4d949.tar.bz2
* coff-m68k.c (_bfd_coff_m68k_reloc_type_lookup): New function.
(coff_bfd_reloc_type_lookup): Define.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog3
-rw-r--r--bfd/coff-m68k.c33
2 files changed, 34 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 6f33d27..b06ede5 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,8 @@
Thu Aug 4 11:32:23 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+ * coff-m68k.c (_bfd_coff_m68k_reloc_type_lookup): New function.
+ (coff_bfd_reloc_type_lookup): Define.
+
* elfcode.h (elf_bfd_final_link): Force the vma of sections which
do not have SEC_ALLOC set to be 0. This is needed to handle
relocs against debugging sections.
diff --git a/bfd/coff-m68k.c b/bfd/coff-m68k.c
index cd4fd42..773a514 100644
--- a/bfd/coff-m68k.c
+++ b/bfd/coff-m68k.c
@@ -30,6 +30,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#define LYNX_SPECIAL_FN 0
#endif
+/* The page size is a guess based on ELF. */
+#define COFF_PAGE_SIZE 0x2000
+
/* Clean up namespace. */
#define m68kcoff_howto_table _bfd_m68kcoff_howto_table
#define m68k_rtype2howto _bfd_m68kcoff_rtype2howto
@@ -60,6 +63,8 @@ reloc_howto_type m68kcoff_howto_table[] =
#ifdef ONLY_DECLARE_RELOCS
extern void m68k_rtype2howto PARAMS ((arelent *internal, int relocentry));
extern int m68k_howto2rtype PARAMS ((CONST struct reloc_howto_struct *));
+extern const reloc_howto_type *_bfd_coff_m68k_reloc_type_lookup
+ PARAMS ((bfd *, bfd_reloc_code_real_type));
#else
void
m68k_rtype2howto(internal, relocentry)
@@ -102,6 +107,27 @@ m68k_howto2rtype (internal)
}
return R_RELLONG;
}
+
+const reloc_howto_type *
+_bfd_coff_m68k_reloc_type_lookup (abfd, code)
+ bfd *abfd;
+ bfd_reloc_code_real_type code;
+{
+ switch (code)
+ {
+ default: return NULL;
+ case BFD_RELOC_8: return m68kcoff_howto_table + 0;
+ case BFD_RELOC_16: return m68kcoff_howto_table + 1;
+ case BFD_RELOC_CTOR:
+ case BFD_RELOC_32: return m68kcoff_howto_table + 2;
+ case BFD_RELOC_8_PCREL: return m68kcoff_howto_table + 3;
+ case BFD_RELOC_16_PCREL: return m68kcoff_howto_table + 4;
+ case BFD_RELOC_32_PCREL: return m68kcoff_howto_table + 5;
+ /* FIXME: There doesn't seem to be a code for R_RELLONG_NEG. */
+ }
+ /*NOTREACHED*/
+}
+
#endif /* not ONLY_DECLARE_RELOCS */
#define RTYPE2HOWTO(internal, relocentry) \
@@ -110,9 +136,11 @@ m68k_howto2rtype (internal)
#define SELECT_RELOC(external, internal) \
external.r_type = m68k_howto2rtype(internal);
+#define coff_bfd_reloc_type_lookup _bfd_coff_m68k_reloc_type_lookup
+
#include "coffcode.h"
-bfd_target
+const bfd_target
#ifdef TARGET_SYM
TARGET_SYM =
#else
@@ -130,7 +158,7 @@ bfd_target
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
- HAS_SYMS | HAS_LOCALS | WP_TEXT),
+ HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
#ifdef NAMES_HAVE_UNDERSCORE
@@ -163,6 +191,7 @@ bfd_target
BFD_JUMP_TABLE_RELOCS (coff),
BFD_JUMP_TABLE_WRITE (coff),
BFD_JUMP_TABLE_LINK (coff),
+ BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
COFF_SWAP_TABLE
};