MIPS/BFD: Enable local R_MIPS_26 overflow detection
[deliverable/binutils-gdb.git] / bfd / coff-m68k.c
index b53cc5fb769452767c2ac9761a0b320f85b8ba7d..f6aa094692a4d91e36d7aaf61b6ac674399c191b 100644 (file)
@@ -1,7 +1,5 @@
 /* BFD back-end for Motorola 68000 COFF binaries.
 /* BFD back-end for Motorola 68000 COFF binaries.
-   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999,
-   2000, 2001, 2002, 2003, 2005, 2007, 2008
-   Free Software Foundation, Inc.
+   Copyright (C) 1990-2016 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -32,7 +30,7 @@
    variants.  The following macros control its behaviour:
 
    TARGET_SYM
    variants.  The following macros control its behaviour:
 
    TARGET_SYM
-     The C name of the BFD target vector.  The default is m68kcoff_vec.
+     The C name of the BFD target vector.  The default is m68k_coff_vec.
    TARGET_NAME
      The user visible target name.  The default is "coff-m68k".
    NAMES_HAVE_UNDERSCORE
    TARGET_NAME
      The user visible target name.  The default is "coff-m68k".
    NAMES_HAVE_UNDERSCORE
 #define RELOC_SPECIAL_FN 0
 #else
 static bfd_reloc_status_type m68kcoff_common_addend_special_fn
 #define RELOC_SPECIAL_FN 0
 #else
 static bfd_reloc_status_type m68kcoff_common_addend_special_fn
-  PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
-static reloc_howto_type *m68kcoff_common_addend_rtype_to_howto
-  PARAMS ((bfd *, asection *, struct internal_reloc *,
-          struct coff_link_hash_entry *, struct internal_syment *,
-          bfd_vma *));
+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
+
 #define RELOC_SPECIAL_FN m68kcoff_common_addend_special_fn
 #endif
 
 #define RELOC_SPECIAL_FN m68kcoff_common_addend_special_fn
 #endif
 
-static bfd_boolean m68k_coff_is_local_label_name
-  PARAMS ((bfd *, const char *));
+static bfd_boolean m68k_coff_is_local_label_name (bfd *, const char *);
 
 /* On the delta, a symbol starting with L% is local.  We won't see
    such a symbol on other platforms, so it should be safe to always
    consider it local here.  */
 
 static bfd_boolean
 
 /* On the delta, a symbol starting with L% is local.  We won't see
    such a symbol on other platforms, so it should be safe to always
    consider it local here.  */
 
 static bfd_boolean
-m68k_coff_is_local_label_name (abfd, name)
-     bfd *abfd;
-     const char *name;
+m68k_coff_is_local_label_name (bfd *abfd, const char *name)
 {
   if (name[0] == 'L' && name[1] == '%')
     return TRUE;
 {
   if (name[0] == 'L' && name[1] == '%')
     return TRUE;
@@ -121,12 +113,11 @@ reloc_howto_type m68kcoff_howto_table[] =
 /* Turn a howto into a reloc number */
 
 #ifdef ONLY_DECLARE_RELOCS
 /* Turn a howto into a reloc number */
 
 #ifdef ONLY_DECLARE_RELOCS
-extern void m68k_rtype2howto PARAMS ((arelent *internal, int relocentry));
-extern int m68k_howto2rtype PARAMS ((reloc_howto_type *));
-extern reloc_howto_type *m68k_reloc_type_lookup
-  PARAMS ((bfd *, bfd_reloc_code_real_type));
-extern reloc_howto_type *m68k_reloc_name_lookup
-  PARAMS ((bfd *, const char *));
+extern void m68k_rtype2howto (arelent *internal, int relocentry);
+extern int m68k_howto2rtype (reloc_howto_type *);
+extern reloc_howto_type * m68k_reloc_type_lookup
+  (bfd *, bfd_reloc_code_real_type);
+extern reloc_howto_type * m68k_reloc_name_lookup (bfd *, const char *);
 #else
 
 #ifdef STATIC_RELOCS
 #else
 
 #ifdef STATIC_RELOCS
@@ -135,16 +126,13 @@ extern reloc_howto_type *m68k_reloc_name_lookup
 #define STAT_REL
 #endif
 
 #define STAT_REL
 #endif
 
-STAT_REL reloc_howto_type * m68k_reloc_type_lookup PARAMS ((bfd *, bfd_reloc_code_real_type));
-STAT_REL reloc_howto_type * m68k_reloc_name_lookup PARAMS ((bfd *, const char *));
-STAT_REL int m68k_howto2rtype PARAMS ((reloc_howto_type *));
-STAT_REL void m68k_rtype2howto PARAMS ((arelent *, int));
-
+STAT_REL void m68k_rtype2howto (arelent *, int);
+STAT_REL int  m68k_howto2rtype (reloc_howto_type *);
+STAT_REL reloc_howto_type * m68k_reloc_type_lookup (bfd *, bfd_reloc_code_real_type);
+STAT_REL reloc_howto_type * m68k_reloc_name_lookup (bfd *, const char *);
 
 STAT_REL void
 
 STAT_REL void
-m68k_rtype2howto(internal, relocentry)
-     arelent *internal;
-     int relocentry;
+m68k_rtype2howto (arelent *internal, int relocentry)
 {
   switch (relocentry)
     {
 {
   switch (relocentry)
     {
@@ -155,12 +143,12 @@ m68k_rtype2howto(internal, relocentry)
     case R_PCRWORD:    internal->howto = m68kcoff_howto_table + 4; break;
     case R_PCRLONG:    internal->howto = m68kcoff_howto_table + 5; break;
     case R_RELLONG_NEG:        internal->howto = m68kcoff_howto_table + 6; break;
     case R_PCRWORD:    internal->howto = m68kcoff_howto_table + 4; break;
     case R_PCRLONG:    internal->howto = m68kcoff_howto_table + 5; break;
     case R_RELLONG_NEG:        internal->howto = m68kcoff_howto_table + 6; break;
+    default:            internal->howto = NULL; break;
     }
 }
 
 STAT_REL int
     }
 }
 
 STAT_REL int
-m68k_howto2rtype (internal)
-     reloc_howto_type *internal;
+m68k_howto2rtype (reloc_howto_type * internal)
 {
   if (internal->pc_relative)
     {
 {
   if (internal->pc_relative)
     {
@@ -184,9 +172,8 @@ m68k_howto2rtype (internal)
 }
 
 STAT_REL reloc_howto_type *
 }
 
 STAT_REL reloc_howto_type *
-m68k_reloc_type_lookup (abfd, code)
-     bfd *abfd ATTRIBUTE_UNUSED;
-     bfd_reloc_code_real_type code;
+m68k_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+                       bfd_reloc_code_real_type code)
 {
   switch (code)
     {
 {
   switch (code)
     {
@@ -235,19 +222,13 @@ m68k_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
 
 #define coff_rtype_to_howto m68kcoff_rtype_to_howto
 
 
 #define coff_rtype_to_howto m68kcoff_rtype_to_howto
 
-static reloc_howto_type *m68kcoff_rtype_to_howto
-  PARAMS ((bfd *, asection *, struct internal_reloc *,
-          struct coff_link_hash_entry *, struct internal_syment *,
-          bfd_vma *));
-
 static reloc_howto_type *
 static reloc_howto_type *
-m68kcoff_rtype_to_howto (abfd, sec, rel, h, sym, addendp)
-     bfd *abfd ATTRIBUTE_UNUSED;
-     asection *sec;
-     struct internal_reloc *rel;
-     struct coff_link_hash_entry *h ATTRIBUTE_UNUSED;
-     struct internal_syment *sym ATTRIBUTE_UNUSED;
-     bfd_vma *addendp;
+m68kcoff_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
+                        asection *sec,
+                        struct internal_reloc *rel,
+                        struct coff_link_hash_entry *h ATTRIBUTE_UNUSED,
+                        struct internal_syment *sym ATTRIBUTE_UNUSED,
+                        bfd_vma *addendp)
 {
   arelent relent;
   reloc_howto_type *howto;
 {
   arelent relent;
   reloc_howto_type *howto;
@@ -279,15 +260,13 @@ m68kcoff_rtype_to_howto (abfd, sec, rel, h, sym, addendp)
    reloc type to make any required adjustments.  */
 
 static bfd_reloc_status_type
    reloc type to make any required adjustments.  */
 
 static bfd_reloc_status_type
-m68kcoff_common_addend_special_fn (abfd, reloc_entry, symbol, data,
-                                  input_section, output_bfd, error_message)
-     bfd *abfd;
-     arelent *reloc_entry;
-     asymbol *symbol;
-     PTR data;
-     asection *input_section ATTRIBUTE_UNUSED;
-     bfd *output_bfd;
-     char **error_message ATTRIBUTE_UNUSED;
+m68kcoff_common_addend_special_fn (bfd *abfd,
+                                  arelent *reloc_entry,
+                                  asymbol *symbol,
+                                  void * data,
+                                  asection *input_section ATTRIBUTE_UNUSED,
+                                  bfd *output_bfd,
+                                  char **error_message ATTRIBUTE_UNUSED)
 {
   symvalue diff;
 
 {
   symvalue diff;
 
@@ -381,7 +360,7 @@ m68kcoff_common_addend_special_fn (abfd, reloc_entry, symbol, data,
       coffsym = (obj_symbols (abfd)                            \
                 + (cache_ptr->sym_ptr_ptr - symbols));         \
     else if (ptr)                                              \
       coffsym = (obj_symbols (abfd)                            \
                 + (cache_ptr->sym_ptr_ptr - symbols));         \
     else if (ptr)                                              \
-      coffsym = coff_symbol_from (abfd, ptr);                  \
+      coffsym = coff_symbol_from (ptr);                                \
     if (coffsym != (coff_symbol_type *) NULL                   \
        && coffsym->native->u.syment.n_scnum == 0)              \
       cache_ptr->addend = - coffsym->native->u.syment.n_value; \
     if (coffsym != (coff_symbol_type *) NULL                   \
        && coffsym->native->u.syment.n_scnum == 0)              \
       cache_ptr->addend = - coffsym->native->u.syment.n_value; \
@@ -402,13 +381,12 @@ m68kcoff_common_addend_special_fn (abfd, reloc_entry, symbol, data,
    adjust common symbols.  */
 
 static reloc_howto_type *
    adjust common symbols.  */
 
 static reloc_howto_type *
-m68kcoff_common_addend_rtype_to_howto (abfd, sec, rel, h, sym, addendp)
-     bfd *abfd ATTRIBUTE_UNUSED;
-     asection *sec;
-     struct internal_reloc *rel;
-     struct coff_link_hash_entry *h;
-     struct internal_syment *sym;
-     bfd_vma *addendp;
+m68kcoff_common_addend_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
+                                      asection *sec,
+                                      struct internal_reloc *rel,
+                                      struct coff_link_hash_entry *h,
+                                      struct internal_syment *sym,
+                                      bfd_vma *addendp)
 {
   arelent relent;
   reloc_howto_type *howto;
 {
   arelent relent;
   reloc_howto_type *howto;
@@ -456,12 +434,11 @@ m68kcoff_common_addend_rtype_to_howto (abfd, sec, rel, h, sym, addendp)
    objects, and before the final_link entry point is called.  */
 
 bfd_boolean
    objects, and before the final_link entry point is called.  */
 
 bfd_boolean
-bfd_m68k_coff_create_embedded_relocs (abfd, info, datasec, relsec, errmsg)
-     bfd *abfd;
-     struct bfd_link_info *info;
-     asection *datasec;
-     asection *relsec;
-     char **errmsg;
+bfd_m68k_coff_create_embedded_relocs (bfd *abfd,
+                                     struct bfd_link_info *info,
+                                     asection *datasec,
+                                     asection *relsec,
+                                     char **errmsg)
 {
   char *extsyms;
   bfd_size_type symesz;
 {
   char *extsyms;
   bfd_size_type symesz;
@@ -469,7 +446,7 @@ bfd_m68k_coff_create_embedded_relocs (abfd, info, datasec, relsec, errmsg)
   bfd_byte *p;
   bfd_size_type amt;
 
   bfd_byte *p;
   bfd_size_type amt;
 
-  BFD_ASSERT (! info->relocatable);
+  BFD_ASSERT (! bfd_link_relocatable (info));
 
   *errmsg = NULL;
 
 
   *errmsg = NULL;
 
@@ -552,7 +529,7 @@ bfd_m68k_coff_create_embedded_relocs (abfd, info, datasec, relsec, errmsg)
 #include "coffcode.h"
 
 #ifndef TARGET_SYM
 #include "coffcode.h"
 
 #ifndef TARGET_SYM
-#define TARGET_SYM m68kcoff_vec
+#define TARGET_SYM m68k_coff_vec
 #endif
 
 #ifndef TARGET_NAME
 #endif
 
 #ifndef TARGET_NAME
This page took 0.028963 seconds and 4 git commands to generate.