* elf32-sparc.c (_bfd_sparc_elf_howto_table): Fix dst_mask for
[deliverable/binutils-gdb.git] / bfd / reloc.c
index de3bbf4ae4879164dda70acfad18b75f214851a9..d73ad2439645fbd592149f392995cdfd784c4cfd 100644 (file)
@@ -65,31 +65,31 @@ CODE_FRAGMENT
 .
 .typedef enum bfd_reloc_status
 .{
 .
 .typedef enum bfd_reloc_status
 .{
-.       {* No errors detected *}
+.  {* No errors detected *}
 .  bfd_reloc_ok,
 .
 .  bfd_reloc_ok,
 .
-.       {* The relocation was performed, but there was an overflow. *}
+.  {* The relocation was performed, but there was an overflow. *}
 .  bfd_reloc_overflow,
 .
 .  bfd_reloc_overflow,
 .
-.       {* The address to relocate was not within the section supplied. *}
+.  {* The address to relocate was not within the section supplied. *}
 .  bfd_reloc_outofrange,
 .
 .  bfd_reloc_outofrange,
 .
-.       {* Used by special functions *}
+.  {* Used by special functions *}
 .  bfd_reloc_continue,
 .
 .  bfd_reloc_continue,
 .
-.       {* Unsupported relocation size requested. *}
+.  {* Unsupported relocation size requested. *}
 .  bfd_reloc_notsupported,
 .
 .  bfd_reloc_notsupported,
 .
-.       {* Unused *}
+.  {* Unused *}
 .  bfd_reloc_other,
 .
 .  bfd_reloc_other,
 .
-.       {* The symbol to relocate against was undefined. *}
+.  {* The symbol to relocate against was undefined. *}
 .  bfd_reloc_undefined,
 .
 .  bfd_reloc_undefined,
 .
-.       {* The relocation was performed, but may not be ok - presently
-.          generated only when linking i960 coff files with i960 b.out
-.          symbols.  If this type is returned, the error_message argument
-.          to bfd_perform_relocation will be set.  *}
+.  {* The relocation was performed, but may not be ok - presently
+.     generated only when linking i960 coff files with i960 b.out
+.     symbols.  If this type is returned, the error_message argument
+.     to bfd_perform_relocation will be set.  *}
 .  bfd_reloc_dangerous
 . }
 . bfd_reloc_status_type;
 .  bfd_reloc_dangerous
 . }
 . bfd_reloc_status_type;
@@ -97,16 +97,16 @@ CODE_FRAGMENT
 .
 .typedef struct reloc_cache_entry
 .{
 .
 .typedef struct reloc_cache_entry
 .{
-.       {* A pointer into the canonical table of pointers  *}
+.  {* A pointer into the canonical table of pointers  *}
 .  struct symbol_cache_entry **sym_ptr_ptr;
 .
 .  struct symbol_cache_entry **sym_ptr_ptr;
 .
-.       {* offset in section *}
+.  {* offset in section *}
 .  bfd_size_type address;
 .
 .  bfd_size_type address;
 .
-.       {* addend for relocation value *}
+.  {* addend for relocation value *}
 .  bfd_vma addend;
 .
 .  bfd_vma addend;
 .
-.       {* Pointer to how to perform the required relocation *}
+.  {* Pointer to how to perform the required relocation *}
 .  reloc_howto_type *howto;
 .
 .} arelent;
 .  reloc_howto_type *howto;
 .
 .} arelent;
@@ -250,19 +250,19 @@ CODE_FRAGMENT
 .
 .enum complain_overflow
 .{
 .
 .enum complain_overflow
 .{
-.      {* Do not complain on overflow. *}
+.  {* Do not complain on overflow. *}
 .  complain_overflow_dont,
 .
 .  complain_overflow_dont,
 .
-.      {* Complain if the bitfield overflows, whether it is considered
-.         as signed or unsigned. *}
+.  {* Complain if the bitfield overflows, whether it is considered
+.     as signed or unsigned. *}
 .  complain_overflow_bitfield,
 .
 .  complain_overflow_bitfield,
 .
-.      {* Complain if the value overflows when considered as signed
-.         number. *}
+.  {* Complain if the value overflows when considered as signed
+.     number. *}
 .  complain_overflow_signed,
 .
 .  complain_overflow_signed,
 .
-.      {* Complain if the value overflows when considered as an
-.         unsigned number. *}
+.  {* Complain if the value overflows when considered as an
+.     unsigned number. *}
 .  complain_overflow_unsigned
 .};
 
 .  complain_overflow_unsigned
 .};
 
@@ -280,97 +280,91 @@ CODE_FRAGMENT
 .
 .struct reloc_howto_struct
 .{
 .
 .struct reloc_howto_struct
 .{
-.       {*  The type field has mainly a documentary use - the back end can
-.           do what it wants with it, though normally the back end's
-.           external idea of what a reloc number is stored
-.           in this field. For example, a PC relative word relocation
-.           in a coff environment has the type 023 - because that's
-.           what the outside world calls a R_PCRWORD reloc. *}
+.  {*  The type field has mainly a documentary use - the back end can
+.      do what it wants with it, though normally the back end's
+.      external idea of what a reloc number is stored
+.      in this field.  For example, a PC relative word relocation
+.      in a coff environment has the type 023 - because that's
+.      what the outside world calls a R_PCRWORD reloc.  *}
 .  unsigned int type;
 .
 .  unsigned int type;
 .
-.       {*  The value the final relocation is shifted right by. This drops
-.           unwanted data from the relocation.  *}
+.  {*  The value the final relocation is shifted right by.  This drops
+.      unwanted data from the relocation.  *}
 .  unsigned int rightshift;
 .
 .  unsigned int rightshift;
 .
-.      {*  The size of the item to be relocated.  This is *not* a
-.          power-of-two measure.  To get the number of bytes operated
-.          on by a type of relocation, use bfd_get_reloc_size.  *}
+.  {*  The size of the item to be relocated.  This is *not* a
+.      power-of-two measure.  To get the number of bytes operated
+.      on by a type of relocation, use bfd_get_reloc_size.  *}
 .  int size;
 .
 .  int size;
 .
-.       {*  The number of bits in the item to be relocated.  This is used
-.          when doing overflow checking.  *}
+.  {*  The number of bits in the item to be relocated.  This is used
+.      when doing overflow checking.  *}
 .  unsigned int bitsize;
 .
 .  unsigned int bitsize;
 .
-.       {*  Notes that the relocation is relative to the location in the
-.           data section of the addend. The relocation function will
-.           subtract from the relocation value the address of the location
-.           being relocated. *}
+.  {*  Notes that the relocation is relative to the location in the
+.      data section of the addend.  The relocation function will
+.      subtract from the relocation value the address of the location
+.      being relocated.  *}
 .  boolean pc_relative;
 .
 .  boolean pc_relative;
 .
-.      {*  The bit position of the reloc value in the destination.
-.          The relocated value is left shifted by this amount. *}
+.  {*  The bit position of the reloc value in the destination.
+.      The relocated value is left shifted by this amount.  *}
 .  unsigned int bitpos;
 .
 .  unsigned int bitpos;
 .
-.      {* What type of overflow error should be checked for when
-.         relocating. *}
+.  {* What type of overflow error should be checked for when
+.     relocating.  *}
 .  enum complain_overflow complain_on_overflow;
 .
 .  enum complain_overflow complain_on_overflow;
 .
-.       {* If this field is non null, then the supplied function is
-.          called rather than the normal function. This allows really
-.          strange relocation methods to be accomodated (e.g., i960 callj
-.          instructions). *}
+.  {* If this field is non null, then the supplied function is
+.     called rather than the normal function.  This allows really
+.     strange relocation methods to be accomodated (e.g., i960 callj
+.     instructions).  *}
 .  bfd_reloc_status_type (*special_function)
 .  bfd_reloc_status_type (*special_function)
-.                                  PARAMS ((bfd *abfd,
-.                                           arelent *reloc_entry,
-.                                            struct symbol_cache_entry *symbol,
-.                                            PTR data,
-.                                            asection *input_section,
-.                                            bfd *output_bfd,
-.                                            char **error_message));
+.    PARAMS ((bfd *, arelent *, struct symbol_cache_entry *, PTR, asection *,
+.             bfd *, char **));
 .
 .
-.       {* The textual name of the relocation type. *}
+.  {* The textual name of the relocation type.  *}
 .  char *name;
 .
 .  char *name;
 .
-.       {* Some formats record a relocation addend in the section contents
-.          rather than with the relocation.  For ELF formats this is the
-.          distinction between USE_REL and USE_RELA (though the code checks
-.          for USE_REL == 1/0).  The value of this field is TRUE if the
-.          addend is recorded with the section contents; when performing a
-.          partial link (ld -r) the section contents (the data) will be
-.          modified.  The value of this field is FALSE if addends are
-.          recorded with the relocation (in arelent.addend); when performing
-.          a partial link the relocation will be modified.
-.          All relocations for all ELF USE_RELA targets should set this field
-.          to FALSE (values of TRUE should be looked on with suspicion).
-.          However, the converse is not true: not all relocations of all ELF
-.          USE_REL targets set this field to TRUE.  Why this is so is peculiar
-.          to each particular target.  For relocs that aren't used in partial
-.          links (e.g. GOT stuff) it doesn't matter what this is set to.  *}
+.  {* Some formats record a relocation addend in the section contents
+.     rather than with the relocation.  For ELF formats this is the
+.     distinction between USE_REL and USE_RELA (though the code checks
+.     for USE_REL == 1/0).  The value of this field is TRUE if the
+.     addend is recorded with the section contents; when performing a
+.     partial link (ld -r) the section contents (the data) will be
+.     modified.  The value of this field is FALSE if addends are
+.     recorded with the relocation (in arelent.addend); when performing
+.     a partial link the relocation will be modified.
+.     All relocations for all ELF USE_RELA targets should set this field
+.     to FALSE (values of TRUE should be looked on with suspicion).
+.     However, the converse is not true: not all relocations of all ELF
+.     USE_REL targets set this field to TRUE.  Why this is so is peculiar
+.     to each particular target.  For relocs that aren't used in partial
+.     links (e.g. GOT stuff) it doesn't matter what this is set to.  *}
 .  boolean partial_inplace;
 .
 .  boolean partial_inplace;
 .
-.       {* The src_mask selects which parts of the read in data
-.          are to be used in the relocation sum.  E.g., if this was an 8 bit
-.          byte of data which we read and relocated, this would be
-.          0x000000ff. When we have relocs which have an addend, such as
-.          sun4 extended relocs, the value in the offset part of a
-.          relocating field is garbage so we never use it. In this case
-.          the mask would be 0x00000000. *}
+.  {* The src_mask selects which parts of the read in data
+.     are to be used in the relocation sum.  E.g., if this was an 8 bit
+.     byte of data which we read and relocated, this would be
+.     0x000000ff.  When we have relocs which have an addend, such as
+.     sun4 extended relocs, the value in the offset part of a
+.     relocating field is garbage so we never use it.  In this case
+.     the mask would be 0x00000000.  *}
 .  bfd_vma src_mask;
 .
 .  bfd_vma src_mask;
 .
-.       {* The dst_mask selects which parts of the instruction are replaced
-.          into the instruction. In most cases src_mask == dst_mask,
-.          except in the above special case, where dst_mask would be
-.          0x000000ff, and src_mask would be 0x00000000.   *}
+.  {* The dst_mask selects which parts of the instruction are replaced
+.     into the instruction.  In most cases src_mask == dst_mask,
+.     except in the above special case, where dst_mask would be
+.     0x000000ff, and src_mask would be 0x00000000.  *}
 .  bfd_vma dst_mask;
 .
 .  bfd_vma dst_mask;
 .
-.       {* When some formats create PC relative instructions, they leave
-.          the value of the pc of the place being relocated in the offset
-.          slot of the instruction, so that a PC relative relocation can
-.          be made just by adding in an ordinary offset (e.g., sun3 a.out).
-.          Some formats leave the displacement part of an instruction
-.          empty (e.g., m88k bcs); this flag signals the fact.*}
+.  {* When some formats create PC relative instructions, they leave
+.     the value of the pc of the place being relocated in the offset
+.     slot of the instruction, so that a PC relative relocation can
+.     be made just by adding in an ordinary offset (e.g., sun3 a.out).
+.     Some formats leave the displacement part of an instruction
+.     empty (e.g., m88k bcs); this flag signals the fact.  *}
 .  boolean pcrel_offset;
 .  boolean pcrel_offset;
-.
 .};
 
 */
 .};
 
 */
@@ -382,37 +376,43 @@ FUNCTION
 DESCRIPTION
        The HOWTO define is horrible and will go away.
 
 DESCRIPTION
        The HOWTO define is horrible and will go away.
 
-.#define HOWTO(C, R,S,B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
-.  {(unsigned)C,R,S,B, P, BI, O,SF,NAME,INPLACE,MASKSRC,MASKDST,PC}
+.#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
+.  { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
 
 DESCRIPTION
        And will be replaced with the totally magic way. But for the
        moment, we are compatible, so do it this way.
 
 
 DESCRIPTION
        And will be replaced with the totally magic way. But for the
        moment, we are compatible, so do it this way.
 
-.#define NEWHOWTO( FUNCTION, NAME,SIZE,REL,IN) HOWTO(0,0,SIZE,0,REL,0,complain_overflow_dont,FUNCTION, NAME,false,0,0,IN)
+.#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
+.  HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
+.         NAME, false, 0, 0, IN)
 .
 
 DESCRIPTION
        This is used to fill in an empty howto entry in an array.
 
 .#define EMPTY_HOWTO(C) \
 .
 
 DESCRIPTION
        This is used to fill in an empty howto entry in an array.
 
 .#define EMPTY_HOWTO(C) \
-.  HOWTO((C),0,0,0,false,0,complain_overflow_dont,NULL,NULL,false,0,0,false)
+.  HOWTO ((C), 0, 0, 0, false, 0, complain_overflow_dont, NULL, \
+.         NULL, false, 0, 0, false)
 .
 
 DESCRIPTION
        Helper routine to turn a symbol into a relocation value.
 
 .
 
 DESCRIPTION
        Helper routine to turn a symbol into a relocation value.
 
-.#define HOWTO_PREPARE(relocation, symbol)      \
-.  {                                            \
-.  if (symbol != (asymbol *)NULL) {             \
-.    if (bfd_is_com_section (symbol->section)) { \
-.      relocation = 0;                          \
-.    }                                          \
-.    else {                                     \
-.      relocation = symbol->value;              \
-.    }                                          \
-.  }                                            \
-.}
+.#define HOWTO_PREPARE(relocation, symbol)               \
+.  {                                                     \
+.    if (symbol != (asymbol *) NULL)                     \
+.      {                                                 \
+.        if (bfd_is_com_section (symbol->section))       \
+.          {                                             \
+.            relocation = 0;                             \
+.          }                                             \
+.        else                                            \
+.          {                                             \
+.            relocation = symbol->value;                 \
+.          }                                             \
+.      }                                                 \
+.  }
 
 */
 
 
 */
 
@@ -453,9 +453,10 @@ DESCRIPTION
 
        How relocs are tied together in an <<asection>>:
 
 
        How relocs are tied together in an <<asection>>:
 
-.typedef struct relent_chain {
+.typedef struct relent_chain
+.{
 .  arelent relent;
 .  arelent relent;
-.  struct   relent_chain *next;
+.  struct relent_chain *next;
 .} arelent_chain;
 
 */
 .} arelent_chain;
 
 */
@@ -626,8 +627,8 @@ bfd_perform_relocation (abfd, reloc_entry, data, input_section, output_bfd,
     }
 
   /* Is the address of the relocation really within the section?  */
     }
 
   /* Is the address of the relocation really within the section?  */
-  if (reloc_entry->address > input_section->_cooked_size /
-      bfd_octets_per_byte (abfd))
+  if (reloc_entry->address > (input_section->_cooked_size
+                             / bfd_octets_per_byte (abfd)))
     return bfd_reloc_outofrange;
 
   /* Work out which section the relocation is targetted at and the
     return bfd_reloc_outofrange;
 
   /* Work out which section the relocation is targetted at and the
@@ -903,14 +904,14 @@ space consuming.  For each target:
       {
        short x = bfd_get_16 (abfd, (bfd_byte *) data + octets);
        DOIT (x);
       {
        short x = bfd_get_16 (abfd, (bfd_byte *) data + octets);
        DOIT (x);
-       bfd_put_16 (abfd, x, (unsigned char *) data + octets);
+       bfd_put_16 (abfd, (bfd_vma) x, (unsigned char *) data + octets);
       }
       break;
     case 2:
       {
        long x = bfd_get_32 (abfd, (bfd_byte *) data + octets);
        DOIT (x);
       }
       break;
     case 2:
       {
        long x = bfd_get_32 (abfd, (bfd_byte *) data + octets);
        DOIT (x);
-       bfd_put_32 (abfd, x, (bfd_byte *) data + octets);
+       bfd_put_32 (abfd, (bfd_vma) x, (bfd_byte *) data + octets);
       }
       break;
     case -2:
       }
       break;
     case -2:
@@ -918,7 +919,7 @@ space consuming.  For each target:
        long x = bfd_get_32 (abfd, (bfd_byte *) data + octets);
        relocation = -relocation;
        DOIT (x);
        long x = bfd_get_32 (abfd, (bfd_byte *) data + octets);
        relocation = -relocation;
        DOIT (x);
-       bfd_put_32 (abfd, x, (bfd_byte *) data + octets);
+       bfd_put_32 (abfd, (bfd_vma) x, (bfd_byte *) data + octets);
       }
       break;
 
       }
       break;
 
@@ -927,7 +928,7 @@ space consuming.  For each target:
        long x = bfd_get_16 (abfd, (bfd_byte *) data + octets);
        relocation = -relocation;
        DOIT (x);
        long x = bfd_get_16 (abfd, (bfd_byte *) data + octets);
        relocation = -relocation;
        DOIT (x);
-       bfd_put_16 (abfd, x, (bfd_byte *) data + octets);
+       bfd_put_16 (abfd, (bfd_vma) x, (bfd_byte *) data + octets);
       }
       break;
 
       }
       break;
 
@@ -1022,7 +1023,8 @@ bfd_install_relocation (abfd, reloc_entry, data_start, data_start_offset,
     }
 
   /* Is the address of the relocation really within the section?  */
     }
 
   /* Is the address of the relocation really within the section?  */
-  if (reloc_entry->address > input_section->_cooked_size)
+  if (reloc_entry->address > (input_section->_cooked_size
+                             / bfd_octets_per_byte (abfd)))
     return bfd_reloc_outofrange;
 
   /* Work out which section the relocation is targetted at and the
     return bfd_reloc_outofrange;
 
   /* Work out which section the relocation is targetted at and the
@@ -1292,14 +1294,14 @@ space consuming.  For each target:
       {
        short x = bfd_get_16 (abfd, (bfd_byte *) data);
        DOIT (x);
       {
        short x = bfd_get_16 (abfd, (bfd_byte *) data);
        DOIT (x);
-       bfd_put_16 (abfd, x, (unsigned char *) data);
+       bfd_put_16 (abfd, (bfd_vma) x, (unsigned char *) data);
       }
       break;
     case 2:
       {
        long x = bfd_get_32 (abfd, (bfd_byte *) data);
        DOIT (x);
       }
       break;
     case 2:
       {
        long x = bfd_get_32 (abfd, (bfd_byte *) data);
        DOIT (x);
-       bfd_put_32 (abfd, x, (bfd_byte *) data);
+       bfd_put_32 (abfd, (bfd_vma) x, (bfd_byte *) data);
       }
       break;
     case -2:
       }
       break;
     case -2:
@@ -1307,7 +1309,7 @@ space consuming.  For each target:
        long x = bfd_get_32 (abfd, (bfd_byte *) data);
        relocation = -relocation;
        DOIT (x);
        long x = bfd_get_32 (abfd, (bfd_byte *) data);
        relocation = -relocation;
        DOIT (x);
-       bfd_put_32 (abfd, x, (bfd_byte *) data);
+       bfd_put_32 (abfd, (bfd_vma) x, (bfd_byte *) data);
       }
       break;
 
       }
       break;
 
@@ -1854,6 +1856,8 @@ ENUMX
 ENUMEQX
   BFD_RELOC_SPARC_DISP64
   BFD_RELOC_64_PCREL
 ENUMEQX
   BFD_RELOC_SPARC_DISP64
   BFD_RELOC_64_PCREL
+ENUMX
+  BFD_RELOC_SPARC_PLT32
 ENUMX
   BFD_RELOC_SPARC_PLT64
 ENUMX
 ENUMX
   BFD_RELOC_SPARC_PLT64
 ENUMX
@@ -1931,27 +1935,6 @@ ENUMDOC
               2 - byte-manipulation (byte offset reg)
               3 - jsr (target of branch)
 
               2 - byte-manipulation (byte offset reg)
               3 - jsr (target of branch)
 
-     The GNU linker currently doesn't do any of this optimizing.
-
-ENUM
-  BFD_RELOC_ALPHA_USER_LITERAL
-ENUMX
-  BFD_RELOC_ALPHA_USER_LITUSE_BASE
-ENUMX
-  BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF
-ENUMX
-  BFD_RELOC_ALPHA_USER_LITUSE_JSR
-ENUMX
-  BFD_RELOC_ALPHA_USER_GPDISP
-ENUMX
-  BFD_RELOC_ALPHA_USER_GPRELHIGH
-ENUMX
-  BFD_RELOC_ALPHA_USER_GPRELLOW
-ENUMDOC
-  The BFD_RELOC_ALPHA_USER_* relocations are used by the assembler to
-     process the explicit !<reloc>!sequence relocations, and are mapped
-     into the normal relocations at the end of processing.
-
 ENUM
   BFD_RELOC_ALPHA_HINT
 ENUMDOC
 ENUM
   BFD_RELOC_ALPHA_HINT
 ENUMDOC
@@ -1971,6 +1954,14 @@ ENUMDOC
   The CODEADDR relocation outputs a STO_CA in the object file,
      which is filled by the linker.
 
   The CODEADDR relocation outputs a STO_CA in the object file,
      which is filled by the linker.
 
+ENUM
+  BFD_RELOC_ALPHA_GPREL_HI16
+ENUMX
+  BFD_RELOC_ALPHA_GPREL_LO16
+ENUMDOC
+  The GPREL_HI/LO relocations together form a 32-bit offset from the
+     GP register.
+
 ENUM
   BFD_RELOC_MIPS_JMP
 ENUMDOC
 ENUM
   BFD_RELOC_MIPS_JMP
 ENUMDOC
@@ -2011,12 +2002,6 @@ ENUM
 ENUMDOC
   Like BFD_RELOC_LO16, but PC relative.
 
 ENUMDOC
   Like BFD_RELOC_LO16, but PC relative.
 
-ENUMEQ
-  BFD_RELOC_MIPS_GPREL
-  BFD_RELOC_GPREL16
-ENUMDOC
-  Relocation relative to the global pointer.
-
 ENUM
   BFD_RELOC_MIPS_LITERAL
 ENUMDOC
 ENUM
   BFD_RELOC_MIPS_LITERAL
 ENUMDOC
@@ -2026,9 +2011,6 @@ ENUM
   BFD_RELOC_MIPS_GOT16
 ENUMX
   BFD_RELOC_MIPS_CALL16
   BFD_RELOC_MIPS_GOT16
 ENUMX
   BFD_RELOC_MIPS_CALL16
-ENUMEQX
-  BFD_RELOC_MIPS_GPREL32
-  BFD_RELOC_GPREL32
 ENUMX
   BFD_RELOC_MIPS_GOT_HI16
 ENUMX
 ENUMX
   BFD_RELOC_MIPS_GOT_HI16
 ENUMX
@@ -2237,7 +2219,7 @@ ENUMX
 ENUMX
   BFD_RELOC_PPC64_TOC
 ENUMX
 ENUMX
   BFD_RELOC_PPC64_TOC
 ENUMX
-  BFD_RELOC_PPC64_PLTGOT16   
+  BFD_RELOC_PPC64_PLTGOT16
 ENUMX
   BFD_RELOC_PPC64_PLTGOT16_LO
 ENUMX
 ENUMX
   BFD_RELOC_PPC64_PLTGOT16_LO
 ENUMX
@@ -2734,6 +2716,78 @@ ENUMX
 ENUMDOC
   Motorola Mcore relocations.
 
 ENUMDOC
   Motorola Mcore relocations.
 
+ENUM
+  BFD_RELOC_MMIX_GETA
+ENUMX
+  BFD_RELOC_MMIX_GETA_1
+ENUMX
+  BFD_RELOC_MMIX_GETA_2
+ENUMX
+  BFD_RELOC_MMIX_GETA_3
+ENUMDOC
+  These are relocations for the GETA instruction.
+ENUM
+  BFD_RELOC_MMIX_CBRANCH
+ENUMX
+  BFD_RELOC_MMIX_CBRANCH_J
+ENUMX
+  BFD_RELOC_MMIX_CBRANCH_1
+ENUMX
+  BFD_RELOC_MMIX_CBRANCH_2
+ENUMX
+  BFD_RELOC_MMIX_CBRANCH_3
+ENUMDOC
+  These are relocations for a conditional branch instruction.
+ENUM
+  BFD_RELOC_MMIX_PUSHJ
+ENUMX
+  BFD_RELOC_MMIX_PUSHJ_1
+ENUMX
+  BFD_RELOC_MMIX_PUSHJ_2
+ENUMX
+  BFD_RELOC_MMIX_PUSHJ_3
+ENUMDOC
+  These are relocations for the PUSHJ instruction.
+ENUM
+  BFD_RELOC_MMIX_JMP
+ENUMX
+  BFD_RELOC_MMIX_JMP_1
+ENUMX
+  BFD_RELOC_MMIX_JMP_2
+ENUMX
+  BFD_RELOC_MMIX_JMP_3
+ENUMDOC
+  These are relocations for the JMP instruction.
+ENUM
+  BFD_RELOC_MMIX_ADDR19
+ENUMDOC
+  This is a relocation for a relative address as in a GETA instruction or
+  a branch.
+ENUM
+  BFD_RELOC_MMIX_ADDR27
+ENUMDOC
+  This is a relocation for a relative address as in a JMP instruction.
+ENUM
+  BFD_RELOC_MMIX_REG_OR_BYTE
+ENUMDOC
+  This is a relocation for an instruction field that may be a general
+  register or a value 0..255.
+ENUM
+  BFD_RELOC_MMIX_REG
+ENUMDOC
+  This is a relocation for an instruction field that may be a general
+  register.
+ENUM
+  BFD_RELOC_MMIX_BASE_PLUS_OFFSET
+ENUMDOC
+  This is a relocation for two instruction fields holding a register and
+  an offset, the equivalent of the relocation.
+ENUM
+  BFD_RELOC_MMIX_LOCAL
+ENUMDOC
+  This relocation is an assertion that the expression is not allocated as
+  a global register.  It does not modify contents.
+
 ENUM
   BFD_RELOC_AVR_7_PCREL
 ENUMDOC
 ENUM
   BFD_RELOC_AVR_7_PCREL
 ENUMDOC
@@ -2887,7 +2941,7 @@ ENUM
   BFD_RELOC_390_GOTENT
 ENUMDOC
   32 bit rel. offset to GOT entry.
   BFD_RELOC_390_GOTENT
 ENUMDOC
   32 bit rel. offset to GOT entry.
-                  
+
 ENUM
   BFD_RELOC_VTABLE_INHERIT
 ENUMX
 ENUM
   BFD_RELOC_VTABLE_INHERIT
 ENUMX
@@ -3188,6 +3242,28 @@ ENUMX
 ENUMDOC
   OpenRISC Relocations.
 
 ENUMDOC
   OpenRISC Relocations.
 
+ENUM
+  BFD_RELOC_H8_DIR16A8
+ENUMX
+  BFD_RELOC_H8_DIR16R8
+ENUMX
+  BFD_RELOC_H8_DIR24A8
+ENUMX
+  BFD_RELOC_H8_DIR24R8
+ENUMX
+  BFD_RELOC_H8_DIR32A16
+ENUMDOC
+  H8 elf Relocations.
+
+ENUM
+  BFD_RELOC_XSTORMY16_REL_12
+ENUMX
+  BFD_RELOC_XSTORMY16_24
+ENUMX
+  BFD_RELOC_XSTORMY16_FPTR16
+ENUMDOC
+  Sony Xstormy16 Relocations.
+
 ENDSENUM
   BFD_RELOC_UNUSED
 CODE_FRAGMENT
 ENDSENUM
   BFD_RELOC_UNUSED
 CODE_FRAGMENT
@@ -3394,7 +3470,7 @@ bfd_generic_get_relocated_section_contents (abfd, link_info, link_order, data,
   if (reloc_size < 0)
     goto error_return;
 
   if (reloc_size < 0)
     goto error_return;
 
-  reloc_vector = (arelent **) bfd_malloc ((size_t) reloc_size);
+  reloc_vector = (arelent **) bfd_malloc ((bfd_size_type) reloc_size);
   if (reloc_vector == NULL && reloc_size != 0)
     goto error_return;
 
   if (reloc_vector == NULL && reloc_size != 0)
     goto error_return;
 
@@ -3402,7 +3478,7 @@ bfd_generic_get_relocated_section_contents (abfd, link_info, link_order, data,
   if (!bfd_get_section_contents (input_bfd,
                                 input_section,
                                 (PTR) data,
   if (!bfd_get_section_contents (input_bfd,
                                 input_section,
                                 (PTR) data,
-                                0,
+                                (bfd_vma) 0,
                                 input_section->_raw_size))
     goto error_return;
 
                                 input_section->_raw_size))
     goto error_return;
 
This page took 0.034572 seconds and 4 git commands to generate.