Add support for the Z80 processor family
[deliverable/binutils-gdb.git] / bfd / reloc.c
index 0e991531392227ea58c753a24fd1225b70f30336..ea73d1373729277030e9620e6973350abe4677d2 100644 (file)
@@ -1168,7 +1168,9 @@ space consuming.  For each target:
     7) if they are different you have to figure out which version is
        right.  */
          relocation -= reloc_entry->addend;
-         reloc_entry->addend = 0;
+         /* FIXME: There should be no target specific code here...  */
+         if (strcmp (abfd->xvec->name, "coff-z8k") != 0)
+           reloc_entry->addend = 0;
        }
       else
        {
@@ -1579,7 +1581,7 @@ DOCDD
 INODE
        howto manager,  , typedef arelent, Relocations
 
-SECTION
+SUBSECTION
        The howto manager
 
        When an application wants to create a relocation, but doesn't
@@ -2062,6 +2064,19 @@ ENUM
 ENUMDOC
   Low 16 bits.
 
+ENUM
+  BFD_RELOC_HI16_PCREL
+ENUMDOC
+  High 16 bits of 32-bit pc-relative value
+ENUM
+  BFD_RELOC_HI16_S_PCREL
+ENUMDOC
+  High 16 bits of 32-bit pc-relative value, adjusted
+ENUM
+  BFD_RELOC_LO16_PCREL
+ENUMDOC
+  Low 16 bits of pc-relative value
+
 ENUM
   BFD_RELOC_MIPS16_HI16
 ENUMDOC
@@ -2349,6 +2364,10 @@ ENUMX
   BFD_RELOC_X86_64_GOTTPOFF
 ENUMX
   BFD_RELOC_X86_64_TPOFF32
+ENUMX
+  BFD_RELOC_X86_64_GOTOFF64
+ENUMX
+  BFD_RELOC_X86_64_GOTPC32
 ENUMDOC
   x86-64/elf relocations
 
@@ -2622,104 +2641,147 @@ ENUMDOC
   Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
   not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
   field in the instruction.
+
 ENUM
-  BFD_RELOC_ARM_IMMEDIATE
+  BFD_RELOC_THUMB_PCREL_BRANCH7
 ENUMX
-  BFD_RELOC_ARM_ADRL_IMMEDIATE
+  BFD_RELOC_THUMB_PCREL_BRANCH9
 ENUMX
+  BFD_RELOC_THUMB_PCREL_BRANCH12
+ENUMX
+  BFD_RELOC_THUMB_PCREL_BRANCH20
+ENUMX
+  BFD_RELOC_THUMB_PCREL_BRANCH23
+ENUMX
+  BFD_RELOC_THUMB_PCREL_BRANCH25
+ENUMDOC
+  Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
+  The lowest bit must be zero and is not stored in the instruction.
+  Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
+  "nn" one smaller in all cases.  Note further that BRANCH23
+  corresponds to R_ARM_THM_CALL.
+
+ENUM
   BFD_RELOC_ARM_OFFSET_IMM
+ENUMDOC
+  12-bit immediate offset, used in ARM-format ldr and str instructions.
+
+ENUM
+  BFD_RELOC_ARM_THUMB_OFFSET
+ENUMDOC
+  5-bit immediate offset, used in Thumb-format ldr and str instructions.
+
+ENUM
+  BFD_RELOC_ARM_TARGET1
+ENUMDOC
+  Pc-relative or absolute relocation depending on target.  Used for
+  entries in .init_array sections.
+ENUM
+  BFD_RELOC_ARM_ROSEGREL32
+ENUMDOC
+  Read-only segment base relative address.
+ENUM
+  BFD_RELOC_ARM_SBREL32
+ENUMDOC
+  Data segment base relative address.
+ENUM
+  BFD_RELOC_ARM_TARGET2
+ENUMDOC
+  This reloc is used for references to RTTI data from exception handling
+  tables.  The actual definition depends on the target.  It may be a
+  pc-relative or some form of GOT-indirect relocation.
+ENUM
+  BFD_RELOC_ARM_PREL31
+ENUMDOC
+  31-bit PC relative address.
+
+ENUM
+  BFD_RELOC_ARM_JUMP_SLOT
 ENUMX
-  BFD_RELOC_ARM_SHIFT_IMM
+  BFD_RELOC_ARM_GLOB_DAT
 ENUMX
-  BFD_RELOC_ARM_SMI
+  BFD_RELOC_ARM_GOT32
 ENUMX
-  BFD_RELOC_ARM_SWI
+  BFD_RELOC_ARM_PLT32
 ENUMX
-  BFD_RELOC_ARM_MULTI
+  BFD_RELOC_ARM_RELATIVE
 ENUMX
-  BFD_RELOC_ARM_CP_OFF_IMM
+  BFD_RELOC_ARM_GOTOFF
 ENUMX
-  BFD_RELOC_ARM_CP_OFF_IMM_S2
+  BFD_RELOC_ARM_GOTPC
+ENUMDOC
+  Relocations for setting up GOTs and PLTs for shared libraries.
+
+ENUM
+  BFD_RELOC_ARM_TLS_GD32
 ENUMX
-  BFD_RELOC_ARM_ADR_IMM
+  BFD_RELOC_ARM_TLS_LDO32
 ENUMX
-  BFD_RELOC_ARM_LDR_IMM
+  BFD_RELOC_ARM_TLS_LDM32
 ENUMX
-  BFD_RELOC_ARM_LITERAL
+  BFD_RELOC_ARM_TLS_DTPOFF32
 ENUMX
-  BFD_RELOC_ARM_IN_POOL
+  BFD_RELOC_ARM_TLS_DTPMOD32
 ENUMX
-  BFD_RELOC_ARM_OFFSET_IMM8
+  BFD_RELOC_ARM_TLS_TPOFF32
 ENUMX
-  BFD_RELOC_ARM_HWLITERAL
+  BFD_RELOC_ARM_TLS_IE32
 ENUMX
-  BFD_RELOC_ARM_THUMB_ADD
+  BFD_RELOC_ARM_TLS_LE32
+ENUMDOC
+  ARM thread-local storage relocations.
+
+ENUM
+  BFD_RELOC_ARM_IMMEDIATE
 ENUMX
-  BFD_RELOC_ARM_THUMB_IMM
+  BFD_RELOC_ARM_ADRL_IMMEDIATE
 ENUMX
-  BFD_RELOC_ARM_THUMB_SHIFT
+  BFD_RELOC_ARM_T32_IMMEDIATE
 ENUMX
-  BFD_RELOC_ARM_THUMB_OFFSET
+  BFD_RELOC_ARM_T32_IMM12
 ENUMX
-  BFD_RELOC_ARM_GOT12
+  BFD_RELOC_ARM_T32_ADD_PC12
 ENUMX
-  BFD_RELOC_ARM_GOT32
+  BFD_RELOC_ARM_SHIFT_IMM
 ENUMX
-  BFD_RELOC_ARM_JUMP_SLOT
+  BFD_RELOC_ARM_SMC
 ENUMX
-  BFD_RELOC_ARM_COPY
+  BFD_RELOC_ARM_SWI
 ENUMX
-  BFD_RELOC_ARM_GLOB_DAT
+  BFD_RELOC_ARM_MULTI
 ENUMX
-  BFD_RELOC_ARM_PLT32
+  BFD_RELOC_ARM_CP_OFF_IMM
 ENUMX
-  BFD_RELOC_ARM_RELATIVE
+  BFD_RELOC_ARM_CP_OFF_IMM_S2
 ENUMX
-  BFD_RELOC_ARM_GOTOFF
+  BFD_RELOC_ARM_T32_CP_OFF_IMM
 ENUMX
-  BFD_RELOC_ARM_GOTPC
+  BFD_RELOC_ARM_T32_CP_OFF_IMM_S2
 ENUMX
-  BFD_RELOC_ARM_TLS_GD32
+  BFD_RELOC_ARM_ADR_IMM
 ENUMX
-  BFD_RELOC_ARM_TLS_LDO32
+  BFD_RELOC_ARM_LDR_IMM
 ENUMX
-  BFD_RELOC_ARM_TLS_LDM32
+  BFD_RELOC_ARM_LITERAL
 ENUMX
-  BFD_RELOC_ARM_TLS_DTPOFF32
+  BFD_RELOC_ARM_IN_POOL
 ENUMX
-  BFD_RELOC_ARM_TLS_DTPMOD32
+  BFD_RELOC_ARM_OFFSET_IMM8
 ENUMX
-  BFD_RELOC_ARM_TLS_TPOFF32
+  BFD_RELOC_ARM_T32_OFFSET_U8
 ENUMX
-  BFD_RELOC_ARM_TLS_IE32
+  BFD_RELOC_ARM_T32_OFFSET_IMM
 ENUMX
-  BFD_RELOC_ARM_TLS_LE32
+  BFD_RELOC_ARM_HWLITERAL
+ENUMX
+  BFD_RELOC_ARM_THUMB_ADD
+ENUMX
+  BFD_RELOC_ARM_THUMB_IMM
+ENUMX
+  BFD_RELOC_ARM_THUMB_SHIFT
 ENUMDOC
   These relocs are only used within the ARM assembler.  They are not
   (at present) written to any object files.
-ENUM
-  BFD_RELOC_ARM_TARGET1
-ENUMDOC
-  Pc-relative or absolute relocation depending on target.  Used for
-  entries in .init_array sections.
-ENUM
-  BFD_RELOC_ARM_ROSEGREL32
-ENUMDOC
-  Read-only segment base relative address.
-ENUM
-  BFD_RELOC_ARM_SBREL32
-ENUMDOC
-  Data segment base relative address.
-ENUM
-  BFD_RELOC_ARM_TARGET2
-ENUMDOC
-  This reloc is used for References to RTTI dta from exception handling
-  tables.  The actual definition depends on the target.  It may be a
-  pc-relative or some form of GOT-indirect relocation.
-ENUM
-  BFD_RELOC_ARM_PREL31
-ENUMDOC
-  31-bit PC relative address.
 
 ENUM
   BFD_RELOC_SH_PCDISP8BY2
@@ -2904,16 +2966,6 @@ ENUMX
 ENUMDOC
   Renesas / SuperH SH relocs.  Not all of these appear in object files.
 
-ENUM
-  BFD_RELOC_THUMB_PCREL_BRANCH9
-ENUMX
-  BFD_RELOC_THUMB_PCREL_BRANCH12
-ENUMX
-  BFD_RELOC_THUMB_PCREL_BRANCH23
-ENUMDOC
-  Thumb 23-, 12- and 9-bit pc-relative branches.  The lowest bit must
-  be zero and is not stored in the instruction.
-
 ENUM
   BFD_RELOC_ARC_B22_PCREL
 ENUMDOC
@@ -2928,6 +2980,139 @@ ENUMDOC
   stored in the instruction.  The high 24 bits are installed in bits 23
   through 0.
 
+ENUM
+  BFD_RELOC_BFIN_16_IMM
+ENUMDOC
+  ADI Blackfin 16 bit immediate absolute reloc.
+ENUM
+  BFD_RELOC_BFIN_16_HIGH
+ENUMDOC
+  ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.
+ENUM
+  BFD_RELOC_BFIN_4_PCREL
+ENUMDOC
+  ADI Blackfin 'a' part of LSETUP.
+ENUM
+  BFD_RELOC_BFIN_5_PCREL
+ENUMDOC
+  ADI Blackfin.
+ENUM
+  BFD_RELOC_BFIN_16_LOW
+ENUMDOC
+  ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.
+ENUM
+  BFD_RELOC_BFIN_10_PCREL
+ENUMDOC
+  ADI Blackfin.
+ENUM
+  BFD_RELOC_BFIN_11_PCREL
+ENUMDOC
+  ADI Blackfin 'b' part of LSETUP.
+ENUM
+  BFD_RELOC_BFIN_12_PCREL_JUMP
+ENUMDOC
+  ADI Blackfin.
+ENUM
+  BFD_RELOC_BFIN_12_PCREL_JUMP_S
+ENUMDOC
+  ADI Blackfin Short jump, pcrel.
+ENUM
+  BFD_RELOC_BFIN_24_PCREL_CALL_X
+ENUMDOC
+  ADI Blackfin Call.x not implemented.
+ENUM
+  BFD_RELOC_BFIN_24_PCREL_JUMP_L
+ENUMDOC
+  ADI Blackfin Long Jump pcrel.
+ENUM
+  BFD_RELOC_BFIN_GOT
+ENUMDOC
+  ADI Blackfin GOT relocation.
+ENUM
+  BFD_RELOC_BFIN_PLTPC
+ENUMDOC
+  ADI Blackfin PLTPC relocation.
+ENUM
+  BFD_ARELOC_BFIN_PUSH
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_CONST
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_ADD
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_SUB
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_MULT
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_DIV
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_MOD
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_LSHIFT
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_RSHIFT
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_AND
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_OR
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_XOR
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_LAND
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_LOR
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_LEN
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_NEG
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_COMP
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_PAGE
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_HWPAGE
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+ENUM
+  BFD_ARELOC_BFIN_ADDR
+ENUMDOC
+  ADI Blackfin arithmetic relocation.
+
 ENUM
   BFD_RELOC_D10V_10_PCREL_R
 ENUMDOC
@@ -3026,6 +3211,11 @@ ENUM
 ENUMDOC
   DLX relocs
 
+ENUM
+  BFD_RELOC_M32C_HI8
+ENUMDOC
+  Renesas M16C/M32C Relocations.
+
 ENUM
   BFD_RELOC_M32R_24
 ENUMDOC
@@ -4002,7 +4192,7 @@ ENUMX
 ENUMDOC
   NS CR16C Relocations.
 
-ENUM 
+ENUM
   BFD_RELOC_CRX_REL4
 ENUMX
   BFD_RELOC_CRX_REL8
@@ -4214,6 +4404,27 @@ ENUMX
 ENUMDOC
   Relocations used by VAX ELF.
   
+ENUM
+  BFD_RELOC_MS1_PC16
+ENUMDOC
+  Morpho MS1 - 16 bit immediate relocation. 
+ENUM
+  BFD_RELOC_MS1_HI16
+ENUMDOC
+  Morpho MS1 - Hi 16 bits of an address. 
+ENUM
+  BFD_RELOC_MS1_LO16
+ENUMDOC
+  Morpho MS1 - Low 16 bits of an address. 
+ENUM
+  BFD_RELOC_MS1_GNU_VTINHERIT
+ENUMDOC
+  Morpho MS1 - Used to tell the linker which vtable entries are used.
+ENUM
+  BFD_RELOC_MS1_GNU_VTENTRY
+ENUMDOC
+  Morpho MS1 - Used to tell the linker which vtable entries are used.
+
 ENUM
   BFD_RELOC_MSP430_10_PCREL
 ENUMX
@@ -4363,6 +4574,24 @@ ENUMDOC
   internally by the linker after analysis of a 
   BFD_RELOC_XTENSA_ASM_EXPAND.
 
+ENUM
+  BFD_RELOC_Z80_DISP8
+ENUMDOC
+  8 bit signed offset in (ix+d) or (iy+d).
+
+ENUM
+  BFD_RELOC_Z8K_DISP7
+ENUMDOC
+  DJNZ offset.
+ENUM
+  BFD_RELOC_Z8K_CALLR
+ENUMDOC
+  CALR offset.
+ENUM
+  BFD_RELOC_Z8K_IMM4L
+ENUMDOC
+  4 bit value.
+
 ENDSENUM
   BFD_RELOC_UNUSED
 CODE_FRAGMENT
@@ -4493,7 +4722,7 @@ DESCRIPTION
 
 bfd_boolean
 bfd_generic_gc_sections (bfd *abfd ATTRIBUTE_UNUSED,
-                        struct bfd_link_info *link_info ATTRIBUTE_UNUSED)
+                        struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   return TRUE;
 }
This page took 0.037001 seconds and 4 git commands to generate.