xref: /dflybsd-src/contrib/gdb-7/bfd/reloc.c (revision de8e141f24382815c10a4012d209bbbf7abf1112)
15796c8dcSSimon Schubert /* BFD support for handling relocation entries.
25796c8dcSSimon Schubert    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3*ef5ccd6cSJohn Marino    2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
4*ef5ccd6cSJohn Marino    2012
55796c8dcSSimon Schubert    Free Software Foundation, Inc.
65796c8dcSSimon Schubert    Written by Cygnus Support.
75796c8dcSSimon Schubert 
85796c8dcSSimon Schubert    This file is part of BFD, the Binary File Descriptor library.
95796c8dcSSimon Schubert 
105796c8dcSSimon Schubert    This program is free software; you can redistribute it and/or modify
115796c8dcSSimon Schubert    it under the terms of the GNU General Public License as published by
125796c8dcSSimon Schubert    the Free Software Foundation; either version 3 of the License, or
135796c8dcSSimon Schubert    (at your option) any later version.
145796c8dcSSimon Schubert 
155796c8dcSSimon Schubert    This program is distributed in the hope that it will be useful,
165796c8dcSSimon Schubert    but WITHOUT ANY WARRANTY; without even the implied warranty of
175796c8dcSSimon Schubert    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
185796c8dcSSimon Schubert    GNU General Public License for more details.
195796c8dcSSimon Schubert 
205796c8dcSSimon Schubert    You should have received a copy of the GNU General Public License
215796c8dcSSimon Schubert    along with this program; if not, write to the Free Software
225796c8dcSSimon Schubert    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
235796c8dcSSimon Schubert    MA 02110-1301, USA.  */
245796c8dcSSimon Schubert 
255796c8dcSSimon Schubert /*
265796c8dcSSimon Schubert SECTION
275796c8dcSSimon Schubert 	Relocations
285796c8dcSSimon Schubert 
295796c8dcSSimon Schubert 	BFD maintains relocations in much the same way it maintains
305796c8dcSSimon Schubert 	symbols: they are left alone until required, then read in
315796c8dcSSimon Schubert 	en-masse and translated into an internal form.  A common
325796c8dcSSimon Schubert 	routine <<bfd_perform_relocation>> acts upon the
335796c8dcSSimon Schubert 	canonical form to do the fixup.
345796c8dcSSimon Schubert 
355796c8dcSSimon Schubert 	Relocations are maintained on a per section basis,
365796c8dcSSimon Schubert 	while symbols are maintained on a per BFD basis.
375796c8dcSSimon Schubert 
385796c8dcSSimon Schubert 	All that a back end has to do to fit the BFD interface is to create
395796c8dcSSimon Schubert 	a <<struct reloc_cache_entry>> for each relocation
405796c8dcSSimon Schubert 	in a particular section, and fill in the right bits of the structures.
415796c8dcSSimon Schubert 
425796c8dcSSimon Schubert @menu
435796c8dcSSimon Schubert @* typedef arelent::
445796c8dcSSimon Schubert @* howto manager::
455796c8dcSSimon Schubert @end menu
465796c8dcSSimon Schubert 
475796c8dcSSimon Schubert */
485796c8dcSSimon Schubert 
495796c8dcSSimon Schubert /* DO compile in the reloc_code name table from libbfd.h.  */
505796c8dcSSimon Schubert #define _BFD_MAKE_TABLE_bfd_reloc_code_real
515796c8dcSSimon Schubert 
525796c8dcSSimon Schubert #include "sysdep.h"
535796c8dcSSimon Schubert #include "bfd.h"
545796c8dcSSimon Schubert #include "bfdlink.h"
555796c8dcSSimon Schubert #include "libbfd.h"
565796c8dcSSimon Schubert /*
575796c8dcSSimon Schubert DOCDD
585796c8dcSSimon Schubert INODE
595796c8dcSSimon Schubert 	typedef arelent, howto manager, Relocations, Relocations
605796c8dcSSimon Schubert 
615796c8dcSSimon Schubert SUBSECTION
625796c8dcSSimon Schubert 	typedef arelent
635796c8dcSSimon Schubert 
645796c8dcSSimon Schubert 	This is the structure of a relocation entry:
655796c8dcSSimon Schubert 
665796c8dcSSimon Schubert CODE_FRAGMENT
675796c8dcSSimon Schubert .
685796c8dcSSimon Schubert .typedef enum bfd_reloc_status
695796c8dcSSimon Schubert .{
705796c8dcSSimon Schubert .  {* No errors detected.  *}
715796c8dcSSimon Schubert .  bfd_reloc_ok,
725796c8dcSSimon Schubert .
735796c8dcSSimon Schubert .  {* The relocation was performed, but there was an overflow.  *}
745796c8dcSSimon Schubert .  bfd_reloc_overflow,
755796c8dcSSimon Schubert .
765796c8dcSSimon Schubert .  {* The address to relocate was not within the section supplied.  *}
775796c8dcSSimon Schubert .  bfd_reloc_outofrange,
785796c8dcSSimon Schubert .
795796c8dcSSimon Schubert .  {* Used by special functions.  *}
805796c8dcSSimon Schubert .  bfd_reloc_continue,
815796c8dcSSimon Schubert .
825796c8dcSSimon Schubert .  {* Unsupported relocation size requested.  *}
835796c8dcSSimon Schubert .  bfd_reloc_notsupported,
845796c8dcSSimon Schubert .
855796c8dcSSimon Schubert .  {* Unused.  *}
865796c8dcSSimon Schubert .  bfd_reloc_other,
875796c8dcSSimon Schubert .
885796c8dcSSimon Schubert .  {* The symbol to relocate against was undefined.  *}
895796c8dcSSimon Schubert .  bfd_reloc_undefined,
905796c8dcSSimon Schubert .
915796c8dcSSimon Schubert .  {* The relocation was performed, but may not be ok - presently
925796c8dcSSimon Schubert .     generated only when linking i960 coff files with i960 b.out
935796c8dcSSimon Schubert .     symbols.  If this type is returned, the error_message argument
945796c8dcSSimon Schubert .     to bfd_perform_relocation will be set.  *}
955796c8dcSSimon Schubert .  bfd_reloc_dangerous
965796c8dcSSimon Schubert . }
975796c8dcSSimon Schubert . bfd_reloc_status_type;
985796c8dcSSimon Schubert .
995796c8dcSSimon Schubert .
1005796c8dcSSimon Schubert .typedef struct reloc_cache_entry
1015796c8dcSSimon Schubert .{
1025796c8dcSSimon Schubert .  {* A pointer into the canonical table of pointers.  *}
1035796c8dcSSimon Schubert .  struct bfd_symbol **sym_ptr_ptr;
1045796c8dcSSimon Schubert .
1055796c8dcSSimon Schubert .  {* offset in section.  *}
1065796c8dcSSimon Schubert .  bfd_size_type address;
1075796c8dcSSimon Schubert .
1085796c8dcSSimon Schubert .  {* addend for relocation value.  *}
1095796c8dcSSimon Schubert .  bfd_vma addend;
1105796c8dcSSimon Schubert .
1115796c8dcSSimon Schubert .  {* Pointer to how to perform the required relocation.  *}
1125796c8dcSSimon Schubert .  reloc_howto_type *howto;
1135796c8dcSSimon Schubert .
1145796c8dcSSimon Schubert .}
1155796c8dcSSimon Schubert .arelent;
1165796c8dcSSimon Schubert .
1175796c8dcSSimon Schubert */
1185796c8dcSSimon Schubert 
1195796c8dcSSimon Schubert /*
1205796c8dcSSimon Schubert DESCRIPTION
1215796c8dcSSimon Schubert 
1225796c8dcSSimon Schubert         Here is a description of each of the fields within an <<arelent>>:
1235796c8dcSSimon Schubert 
1245796c8dcSSimon Schubert         o <<sym_ptr_ptr>>
1255796c8dcSSimon Schubert 
1265796c8dcSSimon Schubert         The symbol table pointer points to a pointer to the symbol
1275796c8dcSSimon Schubert         associated with the relocation request.  It is the pointer
1285796c8dcSSimon Schubert         into the table returned by the back end's
1295796c8dcSSimon Schubert         <<canonicalize_symtab>> action. @xref{Symbols}. The symbol is
1305796c8dcSSimon Schubert         referenced through a pointer to a pointer so that tools like
1315796c8dcSSimon Schubert         the linker can fix up all the symbols of the same name by
1325796c8dcSSimon Schubert         modifying only one pointer. The relocation routine looks in
1335796c8dcSSimon Schubert         the symbol and uses the base of the section the symbol is
1345796c8dcSSimon Schubert         attached to and the value of the symbol as the initial
1355796c8dcSSimon Schubert         relocation offset. If the symbol pointer is zero, then the
1365796c8dcSSimon Schubert         section provided is looked up.
1375796c8dcSSimon Schubert 
1385796c8dcSSimon Schubert         o <<address>>
1395796c8dcSSimon Schubert 
1405796c8dcSSimon Schubert         The <<address>> field gives the offset in bytes from the base of
1415796c8dcSSimon Schubert         the section data which owns the relocation record to the first
1425796c8dcSSimon Schubert         byte of relocatable information. The actual data relocated
1435796c8dcSSimon Schubert         will be relative to this point; for example, a relocation
1445796c8dcSSimon Schubert         type which modifies the bottom two bytes of a four byte word
1455796c8dcSSimon Schubert         would not touch the first byte pointed to in a big endian
1465796c8dcSSimon Schubert         world.
1475796c8dcSSimon Schubert 
1485796c8dcSSimon Schubert 	o <<addend>>
1495796c8dcSSimon Schubert 
1505796c8dcSSimon Schubert 	The <<addend>> is a value provided by the back end to be added (!)
1515796c8dcSSimon Schubert 	to the relocation offset. Its interpretation is dependent upon
1525796c8dcSSimon Schubert 	the howto. For example, on the 68k the code:
1535796c8dcSSimon Schubert 
1545796c8dcSSimon Schubert |        char foo[];
1555796c8dcSSimon Schubert |        main()
1565796c8dcSSimon Schubert |                {
1575796c8dcSSimon Schubert |                return foo[0x12345678];
1585796c8dcSSimon Schubert |                }
1595796c8dcSSimon Schubert 
1605796c8dcSSimon Schubert         Could be compiled into:
1615796c8dcSSimon Schubert 
1625796c8dcSSimon Schubert |        linkw fp,#-4
1635796c8dcSSimon Schubert |        moveb @@#12345678,d0
1645796c8dcSSimon Schubert |        extbl d0
1655796c8dcSSimon Schubert |        unlk fp
1665796c8dcSSimon Schubert |        rts
1675796c8dcSSimon Schubert 
1685796c8dcSSimon Schubert         This could create a reloc pointing to <<foo>>, but leave the
1695796c8dcSSimon Schubert         offset in the data, something like:
1705796c8dcSSimon Schubert 
1715796c8dcSSimon Schubert |RELOCATION RECORDS FOR [.text]:
1725796c8dcSSimon Schubert |offset   type      value
1735796c8dcSSimon Schubert |00000006 32        _foo
1745796c8dcSSimon Schubert |
1755796c8dcSSimon Schubert |00000000 4e56 fffc          ; linkw fp,#-4
1765796c8dcSSimon Schubert |00000004 1039 1234 5678     ; moveb @@#12345678,d0
1775796c8dcSSimon Schubert |0000000a 49c0               ; extbl d0
1785796c8dcSSimon Schubert |0000000c 4e5e               ; unlk fp
1795796c8dcSSimon Schubert |0000000e 4e75               ; rts
1805796c8dcSSimon Schubert 
1815796c8dcSSimon Schubert         Using coff and an 88k, some instructions don't have enough
1825796c8dcSSimon Schubert         space in them to represent the full address range, and
1835796c8dcSSimon Schubert         pointers have to be loaded in two parts. So you'd get something like:
1845796c8dcSSimon Schubert 
1855796c8dcSSimon Schubert |        or.u     r13,r0,hi16(_foo+0x12345678)
1865796c8dcSSimon Schubert |        ld.b     r2,r13,lo16(_foo+0x12345678)
1875796c8dcSSimon Schubert |        jmp      r1
1885796c8dcSSimon Schubert 
1895796c8dcSSimon Schubert         This should create two relocs, both pointing to <<_foo>>, and with
1905796c8dcSSimon Schubert         0x12340000 in their addend field. The data would consist of:
1915796c8dcSSimon Schubert 
1925796c8dcSSimon Schubert |RELOCATION RECORDS FOR [.text]:
1935796c8dcSSimon Schubert |offset   type      value
1945796c8dcSSimon Schubert |00000002 HVRT16    _foo+0x12340000
1955796c8dcSSimon Schubert |00000006 LVRT16    _foo+0x12340000
1965796c8dcSSimon Schubert |
1975796c8dcSSimon Schubert |00000000 5da05678           ; or.u r13,r0,0x5678
1985796c8dcSSimon Schubert |00000004 1c4d5678           ; ld.b r2,r13,0x5678
1995796c8dcSSimon Schubert |00000008 f400c001           ; jmp r1
2005796c8dcSSimon Schubert 
2015796c8dcSSimon Schubert         The relocation routine digs out the value from the data, adds
2025796c8dcSSimon Schubert         it to the addend to get the original offset, and then adds the
2035796c8dcSSimon Schubert         value of <<_foo>>. Note that all 32 bits have to be kept around
2045796c8dcSSimon Schubert         somewhere, to cope with carry from bit 15 to bit 16.
2055796c8dcSSimon Schubert 
2065796c8dcSSimon Schubert         One further example is the sparc and the a.out format. The
2075796c8dcSSimon Schubert         sparc has a similar problem to the 88k, in that some
2085796c8dcSSimon Schubert         instructions don't have room for an entire offset, but on the
2095796c8dcSSimon Schubert         sparc the parts are created in odd sized lumps. The designers of
2105796c8dcSSimon Schubert         the a.out format chose to not use the data within the section
2115796c8dcSSimon Schubert         for storing part of the offset; all the offset is kept within
2125796c8dcSSimon Schubert         the reloc. Anything in the data should be ignored.
2135796c8dcSSimon Schubert 
2145796c8dcSSimon Schubert |        save %sp,-112,%sp
2155796c8dcSSimon Schubert |        sethi %hi(_foo+0x12345678),%g2
2165796c8dcSSimon Schubert |        ldsb [%g2+%lo(_foo+0x12345678)],%i0
2175796c8dcSSimon Schubert |        ret
2185796c8dcSSimon Schubert |        restore
2195796c8dcSSimon Schubert 
2205796c8dcSSimon Schubert         Both relocs contain a pointer to <<foo>>, and the offsets
2215796c8dcSSimon Schubert         contain junk.
2225796c8dcSSimon Schubert 
2235796c8dcSSimon Schubert |RELOCATION RECORDS FOR [.text]:
2245796c8dcSSimon Schubert |offset   type      value
2255796c8dcSSimon Schubert |00000004 HI22      _foo+0x12345678
2265796c8dcSSimon Schubert |00000008 LO10      _foo+0x12345678
2275796c8dcSSimon Schubert |
2285796c8dcSSimon Schubert |00000000 9de3bf90     ; save %sp,-112,%sp
2295796c8dcSSimon Schubert |00000004 05000000     ; sethi %hi(_foo+0),%g2
2305796c8dcSSimon Schubert |00000008 f048a000     ; ldsb [%g2+%lo(_foo+0)],%i0
2315796c8dcSSimon Schubert |0000000c 81c7e008     ; ret
2325796c8dcSSimon Schubert |00000010 81e80000     ; restore
2335796c8dcSSimon Schubert 
2345796c8dcSSimon Schubert         o <<howto>>
2355796c8dcSSimon Schubert 
2365796c8dcSSimon Schubert         The <<howto>> field can be imagined as a
2375796c8dcSSimon Schubert         relocation instruction. It is a pointer to a structure which
2385796c8dcSSimon Schubert         contains information on what to do with all of the other
2395796c8dcSSimon Schubert         information in the reloc record and data section. A back end
2405796c8dcSSimon Schubert         would normally have a relocation instruction set and turn
2415796c8dcSSimon Schubert         relocations into pointers to the correct structure on input -
2425796c8dcSSimon Schubert         but it would be possible to create each howto field on demand.
2435796c8dcSSimon Schubert 
2445796c8dcSSimon Schubert */
2455796c8dcSSimon Schubert 
2465796c8dcSSimon Schubert /*
2475796c8dcSSimon Schubert SUBSUBSECTION
2485796c8dcSSimon Schubert 	<<enum complain_overflow>>
2495796c8dcSSimon Schubert 
2505796c8dcSSimon Schubert 	Indicates what sort of overflow checking should be done when
2515796c8dcSSimon Schubert 	performing a relocation.
2525796c8dcSSimon Schubert 
2535796c8dcSSimon Schubert CODE_FRAGMENT
2545796c8dcSSimon Schubert .
2555796c8dcSSimon Schubert .enum complain_overflow
2565796c8dcSSimon Schubert .{
2575796c8dcSSimon Schubert .  {* Do not complain on overflow.  *}
2585796c8dcSSimon Schubert .  complain_overflow_dont,
2595796c8dcSSimon Schubert .
2605796c8dcSSimon Schubert .  {* Complain if the value overflows when considered as a signed
2615796c8dcSSimon Schubert .     number one bit larger than the field.  ie. A bitfield of N bits
2625796c8dcSSimon Schubert .     is allowed to represent -2**n to 2**n-1.  *}
2635796c8dcSSimon Schubert .  complain_overflow_bitfield,
2645796c8dcSSimon Schubert .
2655796c8dcSSimon Schubert .  {* Complain if the value overflows when considered as a signed
2665796c8dcSSimon Schubert .     number.  *}
2675796c8dcSSimon Schubert .  complain_overflow_signed,
2685796c8dcSSimon Schubert .
2695796c8dcSSimon Schubert .  {* Complain if the value overflows when considered as an
2705796c8dcSSimon Schubert .     unsigned number.  *}
2715796c8dcSSimon Schubert .  complain_overflow_unsigned
2725796c8dcSSimon Schubert .};
2735796c8dcSSimon Schubert 
2745796c8dcSSimon Schubert */
2755796c8dcSSimon Schubert 
2765796c8dcSSimon Schubert /*
2775796c8dcSSimon Schubert SUBSUBSECTION
2785796c8dcSSimon Schubert         <<reloc_howto_type>>
2795796c8dcSSimon Schubert 
2805796c8dcSSimon Schubert         The <<reloc_howto_type>> is a structure which contains all the
2815796c8dcSSimon Schubert         information that libbfd needs to know to tie up a back end's data.
2825796c8dcSSimon Schubert 
2835796c8dcSSimon Schubert CODE_FRAGMENT
2845796c8dcSSimon Schubert .struct bfd_symbol;		{* Forward declaration.  *}
2855796c8dcSSimon Schubert .
2865796c8dcSSimon Schubert .struct reloc_howto_struct
2875796c8dcSSimon Schubert .{
2885796c8dcSSimon Schubert .  {*  The type field has mainly a documentary use - the back end can
2895796c8dcSSimon Schubert .      do what it wants with it, though normally the back end's
2905796c8dcSSimon Schubert .      external idea of what a reloc number is stored
2915796c8dcSSimon Schubert .      in this field.  For example, a PC relative word relocation
2925796c8dcSSimon Schubert .      in a coff environment has the type 023 - because that's
2935796c8dcSSimon Schubert .      what the outside world calls a R_PCRWORD reloc.  *}
2945796c8dcSSimon Schubert .  unsigned int type;
2955796c8dcSSimon Schubert .
2965796c8dcSSimon Schubert .  {*  The value the final relocation is shifted right by.  This drops
2975796c8dcSSimon Schubert .      unwanted data from the relocation.  *}
2985796c8dcSSimon Schubert .  unsigned int rightshift;
2995796c8dcSSimon Schubert .
3005796c8dcSSimon Schubert .  {*  The size of the item to be relocated.  This is *not* a
3015796c8dcSSimon Schubert .      power-of-two measure.  To get the number of bytes operated
3025796c8dcSSimon Schubert .      on by a type of relocation, use bfd_get_reloc_size.  *}
3035796c8dcSSimon Schubert .  int size;
3045796c8dcSSimon Schubert .
3055796c8dcSSimon Schubert .  {*  The number of bits in the item to be relocated.  This is used
3065796c8dcSSimon Schubert .      when doing overflow checking.  *}
3075796c8dcSSimon Schubert .  unsigned int bitsize;
3085796c8dcSSimon Schubert .
309cf7f2e2dSJohn Marino .  {*  The relocation is relative to the field being relocated.  *}
3105796c8dcSSimon Schubert .  bfd_boolean pc_relative;
3115796c8dcSSimon Schubert .
3125796c8dcSSimon Schubert .  {*  The bit position of the reloc value in the destination.
3135796c8dcSSimon Schubert .      The relocated value is left shifted by this amount.  *}
3145796c8dcSSimon Schubert .  unsigned int bitpos;
3155796c8dcSSimon Schubert .
3165796c8dcSSimon Schubert .  {* What type of overflow error should be checked for when
3175796c8dcSSimon Schubert .     relocating.  *}
3185796c8dcSSimon Schubert .  enum complain_overflow complain_on_overflow;
3195796c8dcSSimon Schubert .
3205796c8dcSSimon Schubert .  {* If this field is non null, then the supplied function is
3215796c8dcSSimon Schubert .     called rather than the normal function.  This allows really
3225796c8dcSSimon Schubert .     strange relocation methods to be accommodated (e.g., i960 callj
3235796c8dcSSimon Schubert .     instructions).  *}
3245796c8dcSSimon Schubert .  bfd_reloc_status_type (*special_function)
3255796c8dcSSimon Schubert .    (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
3265796c8dcSSimon Schubert .     bfd *, char **);
3275796c8dcSSimon Schubert .
3285796c8dcSSimon Schubert .  {* The textual name of the relocation type.  *}
3295796c8dcSSimon Schubert .  char *name;
3305796c8dcSSimon Schubert .
3315796c8dcSSimon Schubert .  {* Some formats record a relocation addend in the section contents
3325796c8dcSSimon Schubert .     rather than with the relocation.  For ELF formats this is the
3335796c8dcSSimon Schubert .     distinction between USE_REL and USE_RELA (though the code checks
3345796c8dcSSimon Schubert .     for USE_REL == 1/0).  The value of this field is TRUE if the
3355796c8dcSSimon Schubert .     addend is recorded with the section contents; when performing a
3365796c8dcSSimon Schubert .     partial link (ld -r) the section contents (the data) will be
3375796c8dcSSimon Schubert .     modified.  The value of this field is FALSE if addends are
3385796c8dcSSimon Schubert .     recorded with the relocation (in arelent.addend); when performing
3395796c8dcSSimon Schubert .     a partial link the relocation will be modified.
3405796c8dcSSimon Schubert .     All relocations for all ELF USE_RELA targets should set this field
3415796c8dcSSimon Schubert .     to FALSE (values of TRUE should be looked on with suspicion).
3425796c8dcSSimon Schubert .     However, the converse is not true: not all relocations of all ELF
3435796c8dcSSimon Schubert .     USE_REL targets set this field to TRUE.  Why this is so is peculiar
3445796c8dcSSimon Schubert .     to each particular target.  For relocs that aren't used in partial
3455796c8dcSSimon Schubert .     links (e.g. GOT stuff) it doesn't matter what this is set to.  *}
3465796c8dcSSimon Schubert .  bfd_boolean partial_inplace;
3475796c8dcSSimon Schubert .
3485796c8dcSSimon Schubert .  {* src_mask selects the part of the instruction (or data) to be used
3495796c8dcSSimon Schubert .     in the relocation sum.  If the target relocations don't have an
3505796c8dcSSimon Schubert .     addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
3515796c8dcSSimon Schubert .     dst_mask to extract the addend from the section contents.  If
3525796c8dcSSimon Schubert .     relocations do have an addend in the reloc, eg. ELF USE_RELA, this
3535796c8dcSSimon Schubert .     field should be zero.  Non-zero values for ELF USE_RELA targets are
3545796c8dcSSimon Schubert .     bogus as in those cases the value in the dst_mask part of the
3555796c8dcSSimon Schubert .     section contents should be treated as garbage.  *}
3565796c8dcSSimon Schubert .  bfd_vma src_mask;
3575796c8dcSSimon Schubert .
3585796c8dcSSimon Schubert .  {* dst_mask selects which parts of the instruction (or data) are
3595796c8dcSSimon Schubert .     replaced with a relocated value.  *}
3605796c8dcSSimon Schubert .  bfd_vma dst_mask;
3615796c8dcSSimon Schubert .
3625796c8dcSSimon Schubert .  {* When some formats create PC relative instructions, they leave
3635796c8dcSSimon Schubert .     the value of the pc of the place being relocated in the offset
3645796c8dcSSimon Schubert .     slot of the instruction, so that a PC relative relocation can
3655796c8dcSSimon Schubert .     be made just by adding in an ordinary offset (e.g., sun3 a.out).
3665796c8dcSSimon Schubert .     Some formats leave the displacement part of an instruction
3675796c8dcSSimon Schubert .     empty (e.g., m88k bcs); this flag signals the fact.  *}
3685796c8dcSSimon Schubert .  bfd_boolean pcrel_offset;
3695796c8dcSSimon Schubert .};
3705796c8dcSSimon Schubert .
3715796c8dcSSimon Schubert */
3725796c8dcSSimon Schubert 
3735796c8dcSSimon Schubert /*
3745796c8dcSSimon Schubert FUNCTION
3755796c8dcSSimon Schubert 	The HOWTO Macro
3765796c8dcSSimon Schubert 
3775796c8dcSSimon Schubert DESCRIPTION
3785796c8dcSSimon Schubert 	The HOWTO define is horrible and will go away.
3795796c8dcSSimon Schubert 
3805796c8dcSSimon Schubert .#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
3815796c8dcSSimon Schubert .  { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
3825796c8dcSSimon Schubert 
3835796c8dcSSimon Schubert DESCRIPTION
3845796c8dcSSimon Schubert 	And will be replaced with the totally magic way. But for the
3855796c8dcSSimon Schubert 	moment, we are compatible, so do it this way.
3865796c8dcSSimon Schubert 
3875796c8dcSSimon Schubert .#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
3885796c8dcSSimon Schubert .  HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
3895796c8dcSSimon Schubert .         NAME, FALSE, 0, 0, IN)
3905796c8dcSSimon Schubert .
3915796c8dcSSimon Schubert 
3925796c8dcSSimon Schubert DESCRIPTION
3935796c8dcSSimon Schubert 	This is used to fill in an empty howto entry in an array.
3945796c8dcSSimon Schubert 
3955796c8dcSSimon Schubert .#define EMPTY_HOWTO(C) \
3965796c8dcSSimon Schubert .  HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
3975796c8dcSSimon Schubert .         NULL, FALSE, 0, 0, FALSE)
3985796c8dcSSimon Schubert .
3995796c8dcSSimon Schubert 
4005796c8dcSSimon Schubert DESCRIPTION
4015796c8dcSSimon Schubert 	Helper routine to turn a symbol into a relocation value.
4025796c8dcSSimon Schubert 
4035796c8dcSSimon Schubert .#define HOWTO_PREPARE(relocation, symbol)               \
4045796c8dcSSimon Schubert .  {                                                     \
4055796c8dcSSimon Schubert .    if (symbol != NULL)                                 \
4065796c8dcSSimon Schubert .      {                                                 \
4075796c8dcSSimon Schubert .        if (bfd_is_com_section (symbol->section))       \
4085796c8dcSSimon Schubert .          {                                             \
4095796c8dcSSimon Schubert .            relocation = 0;                             \
4105796c8dcSSimon Schubert .          }                                             \
4115796c8dcSSimon Schubert .        else                                            \
4125796c8dcSSimon Schubert .          {                                             \
4135796c8dcSSimon Schubert .            relocation = symbol->value;                 \
4145796c8dcSSimon Schubert .          }                                             \
4155796c8dcSSimon Schubert .      }                                                 \
4165796c8dcSSimon Schubert .  }
4175796c8dcSSimon Schubert .
4185796c8dcSSimon Schubert */
4195796c8dcSSimon Schubert 
4205796c8dcSSimon Schubert /*
4215796c8dcSSimon Schubert FUNCTION
4225796c8dcSSimon Schubert 	bfd_get_reloc_size
4235796c8dcSSimon Schubert 
4245796c8dcSSimon Schubert SYNOPSIS
4255796c8dcSSimon Schubert 	unsigned int bfd_get_reloc_size (reloc_howto_type *);
4265796c8dcSSimon Schubert 
4275796c8dcSSimon Schubert DESCRIPTION
4285796c8dcSSimon Schubert 	For a reloc_howto_type that operates on a fixed number of bytes,
4295796c8dcSSimon Schubert 	this returns the number of bytes operated on.
4305796c8dcSSimon Schubert  */
4315796c8dcSSimon Schubert 
4325796c8dcSSimon Schubert unsigned int
bfd_get_reloc_size(reloc_howto_type * howto)4335796c8dcSSimon Schubert bfd_get_reloc_size (reloc_howto_type *howto)
4345796c8dcSSimon Schubert {
4355796c8dcSSimon Schubert   switch (howto->size)
4365796c8dcSSimon Schubert     {
4375796c8dcSSimon Schubert     case 0: return 1;
4385796c8dcSSimon Schubert     case 1: return 2;
4395796c8dcSSimon Schubert     case 2: return 4;
4405796c8dcSSimon Schubert     case 3: return 0;
4415796c8dcSSimon Schubert     case 4: return 8;
4425796c8dcSSimon Schubert     case 8: return 16;
4435796c8dcSSimon Schubert     case -2: return 4;
4445796c8dcSSimon Schubert     default: abort ();
4455796c8dcSSimon Schubert     }
4465796c8dcSSimon Schubert }
4475796c8dcSSimon Schubert 
4485796c8dcSSimon Schubert /*
4495796c8dcSSimon Schubert TYPEDEF
4505796c8dcSSimon Schubert 	arelent_chain
4515796c8dcSSimon Schubert 
4525796c8dcSSimon Schubert DESCRIPTION
4535796c8dcSSimon Schubert 
4545796c8dcSSimon Schubert 	How relocs are tied together in an <<asection>>:
4555796c8dcSSimon Schubert 
4565796c8dcSSimon Schubert .typedef struct relent_chain
4575796c8dcSSimon Schubert .{
4585796c8dcSSimon Schubert .  arelent relent;
4595796c8dcSSimon Schubert .  struct relent_chain *next;
4605796c8dcSSimon Schubert .}
4615796c8dcSSimon Schubert .arelent_chain;
4625796c8dcSSimon Schubert .
4635796c8dcSSimon Schubert */
4645796c8dcSSimon Schubert 
4655796c8dcSSimon Schubert /* N_ONES produces N one bits, without overflowing machine arithmetic.  */
4665796c8dcSSimon Schubert #define N_ONES(n) (((((bfd_vma) 1 << ((n) - 1)) - 1) << 1) | 1)
4675796c8dcSSimon Schubert 
4685796c8dcSSimon Schubert /*
4695796c8dcSSimon Schubert FUNCTION
4705796c8dcSSimon Schubert 	bfd_check_overflow
4715796c8dcSSimon Schubert 
4725796c8dcSSimon Schubert SYNOPSIS
4735796c8dcSSimon Schubert 	bfd_reloc_status_type bfd_check_overflow
4745796c8dcSSimon Schubert 	  (enum complain_overflow how,
4755796c8dcSSimon Schubert 	   unsigned int bitsize,
4765796c8dcSSimon Schubert 	   unsigned int rightshift,
4775796c8dcSSimon Schubert 	   unsigned int addrsize,
4785796c8dcSSimon Schubert 	   bfd_vma relocation);
4795796c8dcSSimon Schubert 
4805796c8dcSSimon Schubert DESCRIPTION
4815796c8dcSSimon Schubert 	Perform overflow checking on @var{relocation} which has
4825796c8dcSSimon Schubert 	@var{bitsize} significant bits and will be shifted right by
4835796c8dcSSimon Schubert 	@var{rightshift} bits, on a machine with addresses containing
4845796c8dcSSimon Schubert 	@var{addrsize} significant bits.  The result is either of
4855796c8dcSSimon Schubert 	@code{bfd_reloc_ok} or @code{bfd_reloc_overflow}.
4865796c8dcSSimon Schubert 
4875796c8dcSSimon Schubert */
4885796c8dcSSimon Schubert 
4895796c8dcSSimon Schubert bfd_reloc_status_type
bfd_check_overflow(enum complain_overflow how,unsigned int bitsize,unsigned int rightshift,unsigned int addrsize,bfd_vma relocation)4905796c8dcSSimon Schubert bfd_check_overflow (enum complain_overflow how,
4915796c8dcSSimon Schubert 		    unsigned int bitsize,
4925796c8dcSSimon Schubert 		    unsigned int rightshift,
4935796c8dcSSimon Schubert 		    unsigned int addrsize,
4945796c8dcSSimon Schubert 		    bfd_vma relocation)
4955796c8dcSSimon Schubert {
4965796c8dcSSimon Schubert   bfd_vma fieldmask, addrmask, signmask, ss, a;
4975796c8dcSSimon Schubert   bfd_reloc_status_type flag = bfd_reloc_ok;
4985796c8dcSSimon Schubert 
4995796c8dcSSimon Schubert   /* Note: BITSIZE should always be <= ADDRSIZE, but in case it's not,
5005796c8dcSSimon Schubert      we'll be permissive: extra bits in the field mask will
5015796c8dcSSimon Schubert      automatically extend the address mask for purposes of the
5025796c8dcSSimon Schubert      overflow check.  */
5035796c8dcSSimon Schubert   fieldmask = N_ONES (bitsize);
5045796c8dcSSimon Schubert   signmask = ~fieldmask;
505cf7f2e2dSJohn Marino   addrmask = N_ONES (addrsize) | (fieldmask << rightshift);
506*ef5ccd6cSJohn Marino   a = (relocation & addrmask) >> rightshift;
5075796c8dcSSimon Schubert 
5085796c8dcSSimon Schubert   switch (how)
5095796c8dcSSimon Schubert     {
5105796c8dcSSimon Schubert     case complain_overflow_dont:
5115796c8dcSSimon Schubert       break;
5125796c8dcSSimon Schubert 
5135796c8dcSSimon Schubert     case complain_overflow_signed:
5145796c8dcSSimon Schubert       /* If any sign bits are set, all sign bits must be set.  That
5155796c8dcSSimon Schubert          is, A must be a valid negative address after shifting.  */
5165796c8dcSSimon Schubert       signmask = ~ (fieldmask >> 1);
5175796c8dcSSimon Schubert       /* Fall thru */
5185796c8dcSSimon Schubert 
5195796c8dcSSimon Schubert     case complain_overflow_bitfield:
5205796c8dcSSimon Schubert       /* Bitfields are sometimes signed, sometimes unsigned.  We
5215796c8dcSSimon Schubert 	 explicitly allow an address wrap too, which means a bitfield
5225796c8dcSSimon Schubert 	 of n bits is allowed to store -2**n to 2**n-1.  Thus overflow
5235796c8dcSSimon Schubert 	 if the value has some, but not all, bits set outside the
5245796c8dcSSimon Schubert 	 field.  */
5255796c8dcSSimon Schubert       ss = a & signmask;
5265796c8dcSSimon Schubert       if (ss != 0 && ss != ((addrmask >> rightshift) & signmask))
5275796c8dcSSimon Schubert 	flag = bfd_reloc_overflow;
5285796c8dcSSimon Schubert       break;
5295796c8dcSSimon Schubert 
5305796c8dcSSimon Schubert     case complain_overflow_unsigned:
5315796c8dcSSimon Schubert       /* We have an overflow if the address does not fit in the field.  */
5325796c8dcSSimon Schubert       if ((a & signmask) != 0)
5335796c8dcSSimon Schubert 	flag = bfd_reloc_overflow;
5345796c8dcSSimon Schubert       break;
5355796c8dcSSimon Schubert 
5365796c8dcSSimon Schubert     default:
5375796c8dcSSimon Schubert       abort ();
5385796c8dcSSimon Schubert     }
5395796c8dcSSimon Schubert 
5405796c8dcSSimon Schubert   return flag;
5415796c8dcSSimon Schubert }
5425796c8dcSSimon Schubert 
5435796c8dcSSimon Schubert /*
5445796c8dcSSimon Schubert FUNCTION
5455796c8dcSSimon Schubert 	bfd_perform_relocation
5465796c8dcSSimon Schubert 
5475796c8dcSSimon Schubert SYNOPSIS
5485796c8dcSSimon Schubert 	bfd_reloc_status_type bfd_perform_relocation
5495796c8dcSSimon Schubert           (bfd *abfd,
5505796c8dcSSimon Schubert            arelent *reloc_entry,
5515796c8dcSSimon Schubert            void *data,
5525796c8dcSSimon Schubert            asection *input_section,
5535796c8dcSSimon Schubert            bfd *output_bfd,
5545796c8dcSSimon Schubert 	   char **error_message);
5555796c8dcSSimon Schubert 
5565796c8dcSSimon Schubert DESCRIPTION
5575796c8dcSSimon Schubert 	If @var{output_bfd} is supplied to this function, the
5585796c8dcSSimon Schubert 	generated image will be relocatable; the relocations are
5595796c8dcSSimon Schubert 	copied to the output file after they have been changed to
5605796c8dcSSimon Schubert 	reflect the new state of the world. There are two ways of
5615796c8dcSSimon Schubert 	reflecting the results of partial linkage in an output file:
5625796c8dcSSimon Schubert 	by modifying the output data in place, and by modifying the
5635796c8dcSSimon Schubert 	relocation record.  Some native formats (e.g., basic a.out and
5645796c8dcSSimon Schubert 	basic coff) have no way of specifying an addend in the
5655796c8dcSSimon Schubert 	relocation type, so the addend has to go in the output data.
5665796c8dcSSimon Schubert 	This is no big deal since in these formats the output data
5675796c8dcSSimon Schubert 	slot will always be big enough for the addend. Complex reloc
5685796c8dcSSimon Schubert 	types with addends were invented to solve just this problem.
5695796c8dcSSimon Schubert 	The @var{error_message} argument is set to an error message if
5705796c8dcSSimon Schubert 	this return @code{bfd_reloc_dangerous}.
5715796c8dcSSimon Schubert 
5725796c8dcSSimon Schubert */
5735796c8dcSSimon Schubert 
5745796c8dcSSimon Schubert bfd_reloc_status_type
bfd_perform_relocation(bfd * abfd,arelent * reloc_entry,void * data,asection * input_section,bfd * output_bfd,char ** error_message)5755796c8dcSSimon Schubert bfd_perform_relocation (bfd *abfd,
5765796c8dcSSimon Schubert 			arelent *reloc_entry,
5775796c8dcSSimon Schubert 			void *data,
5785796c8dcSSimon Schubert 			asection *input_section,
5795796c8dcSSimon Schubert 			bfd *output_bfd,
5805796c8dcSSimon Schubert 			char **error_message)
5815796c8dcSSimon Schubert {
5825796c8dcSSimon Schubert   bfd_vma relocation;
5835796c8dcSSimon Schubert   bfd_reloc_status_type flag = bfd_reloc_ok;
5845796c8dcSSimon Schubert   bfd_size_type octets = reloc_entry->address * bfd_octets_per_byte (abfd);
5855796c8dcSSimon Schubert   bfd_vma output_base = 0;
5865796c8dcSSimon Schubert   reloc_howto_type *howto = reloc_entry->howto;
5875796c8dcSSimon Schubert   asection *reloc_target_output_section;
5885796c8dcSSimon Schubert   asymbol *symbol;
5895796c8dcSSimon Schubert 
5905796c8dcSSimon Schubert   symbol = *(reloc_entry->sym_ptr_ptr);
5915796c8dcSSimon Schubert   if (bfd_is_abs_section (symbol->section)
5925796c8dcSSimon Schubert       && output_bfd != NULL)
5935796c8dcSSimon Schubert     {
5945796c8dcSSimon Schubert       reloc_entry->address += input_section->output_offset;
5955796c8dcSSimon Schubert       return bfd_reloc_ok;
5965796c8dcSSimon Schubert     }
5975796c8dcSSimon Schubert 
5985796c8dcSSimon Schubert   /* If we are not producing relocatable output, return an error if
5995796c8dcSSimon Schubert      the symbol is not defined.  An undefined weak symbol is
6005796c8dcSSimon Schubert      considered to have a value of zero (SVR4 ABI, p. 4-27).  */
6015796c8dcSSimon Schubert   if (bfd_is_und_section (symbol->section)
6025796c8dcSSimon Schubert       && (symbol->flags & BSF_WEAK) == 0
6035796c8dcSSimon Schubert       && output_bfd == NULL)
6045796c8dcSSimon Schubert     flag = bfd_reloc_undefined;
6055796c8dcSSimon Schubert 
6065796c8dcSSimon Schubert   /* If there is a function supplied to handle this relocation type,
6075796c8dcSSimon Schubert      call it.  It'll return `bfd_reloc_continue' if further processing
6085796c8dcSSimon Schubert      can be done.  */
6095796c8dcSSimon Schubert   if (howto->special_function)
6105796c8dcSSimon Schubert     {
6115796c8dcSSimon Schubert       bfd_reloc_status_type cont;
6125796c8dcSSimon Schubert       cont = howto->special_function (abfd, reloc_entry, symbol, data,
6135796c8dcSSimon Schubert 				      input_section, output_bfd,
6145796c8dcSSimon Schubert 				      error_message);
6155796c8dcSSimon Schubert       if (cont != bfd_reloc_continue)
6165796c8dcSSimon Schubert 	return cont;
6175796c8dcSSimon Schubert     }
6185796c8dcSSimon Schubert 
6195796c8dcSSimon Schubert   /* Is the address of the relocation really within the section?  */
6205796c8dcSSimon Schubert   if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
6215796c8dcSSimon Schubert     return bfd_reloc_outofrange;
6225796c8dcSSimon Schubert 
6235796c8dcSSimon Schubert   /* Work out which section the relocation is targeted at and the
6245796c8dcSSimon Schubert      initial relocation command value.  */
6255796c8dcSSimon Schubert 
6265796c8dcSSimon Schubert   /* Get symbol value.  (Common symbols are special.)  */
6275796c8dcSSimon Schubert   if (bfd_is_com_section (symbol->section))
6285796c8dcSSimon Schubert     relocation = 0;
6295796c8dcSSimon Schubert   else
6305796c8dcSSimon Schubert     relocation = symbol->value;
6315796c8dcSSimon Schubert 
6325796c8dcSSimon Schubert   reloc_target_output_section = symbol->section->output_section;
6335796c8dcSSimon Schubert 
6345796c8dcSSimon Schubert   /* Convert input-section-relative symbol value to absolute.  */
6355796c8dcSSimon Schubert   if ((output_bfd && ! howto->partial_inplace)
6365796c8dcSSimon Schubert       || reloc_target_output_section == NULL)
6375796c8dcSSimon Schubert     output_base = 0;
6385796c8dcSSimon Schubert   else
6395796c8dcSSimon Schubert     output_base = reloc_target_output_section->vma;
6405796c8dcSSimon Schubert 
6415796c8dcSSimon Schubert   relocation += output_base + symbol->section->output_offset;
6425796c8dcSSimon Schubert 
6435796c8dcSSimon Schubert   /* Add in supplied addend.  */
6445796c8dcSSimon Schubert   relocation += reloc_entry->addend;
6455796c8dcSSimon Schubert 
6465796c8dcSSimon Schubert   /* Here the variable relocation holds the final address of the
6475796c8dcSSimon Schubert      symbol we are relocating against, plus any addend.  */
6485796c8dcSSimon Schubert 
6495796c8dcSSimon Schubert   if (howto->pc_relative)
6505796c8dcSSimon Schubert     {
6515796c8dcSSimon Schubert       /* This is a PC relative relocation.  We want to set RELOCATION
6525796c8dcSSimon Schubert 	 to the distance between the address of the symbol and the
6535796c8dcSSimon Schubert 	 location.  RELOCATION is already the address of the symbol.
6545796c8dcSSimon Schubert 
6555796c8dcSSimon Schubert 	 We start by subtracting the address of the section containing
6565796c8dcSSimon Schubert 	 the location.
6575796c8dcSSimon Schubert 
6585796c8dcSSimon Schubert 	 If pcrel_offset is set, we must further subtract the position
6595796c8dcSSimon Schubert 	 of the location within the section.  Some targets arrange for
6605796c8dcSSimon Schubert 	 the addend to be the negative of the position of the location
6615796c8dcSSimon Schubert 	 within the section; for example, i386-aout does this.  For
6625796c8dcSSimon Schubert 	 i386-aout, pcrel_offset is FALSE.  Some other targets do not
6635796c8dcSSimon Schubert 	 include the position of the location; for example, m88kbcs,
6645796c8dcSSimon Schubert 	 or ELF.  For those targets, pcrel_offset is TRUE.
6655796c8dcSSimon Schubert 
6665796c8dcSSimon Schubert 	 If we are producing relocatable output, then we must ensure
6675796c8dcSSimon Schubert 	 that this reloc will be correctly computed when the final
6685796c8dcSSimon Schubert 	 relocation is done.  If pcrel_offset is FALSE we want to wind
6695796c8dcSSimon Schubert 	 up with the negative of the location within the section,
6705796c8dcSSimon Schubert 	 which means we must adjust the existing addend by the change
6715796c8dcSSimon Schubert 	 in the location within the section.  If pcrel_offset is TRUE
6725796c8dcSSimon Schubert 	 we do not want to adjust the existing addend at all.
6735796c8dcSSimon Schubert 
6745796c8dcSSimon Schubert 	 FIXME: This seems logical to me, but for the case of
6755796c8dcSSimon Schubert 	 producing relocatable output it is not what the code
6765796c8dcSSimon Schubert 	 actually does.  I don't want to change it, because it seems
6775796c8dcSSimon Schubert 	 far too likely that something will break.  */
6785796c8dcSSimon Schubert 
6795796c8dcSSimon Schubert       relocation -=
6805796c8dcSSimon Schubert 	input_section->output_section->vma + input_section->output_offset;
6815796c8dcSSimon Schubert 
6825796c8dcSSimon Schubert       if (howto->pcrel_offset)
6835796c8dcSSimon Schubert 	relocation -= reloc_entry->address;
6845796c8dcSSimon Schubert     }
6855796c8dcSSimon Schubert 
6865796c8dcSSimon Schubert   if (output_bfd != NULL)
6875796c8dcSSimon Schubert     {
6885796c8dcSSimon Schubert       if (! howto->partial_inplace)
6895796c8dcSSimon Schubert 	{
6905796c8dcSSimon Schubert 	  /* This is a partial relocation, and we want to apply the relocation
6915796c8dcSSimon Schubert 	     to the reloc entry rather than the raw data. Modify the reloc
6925796c8dcSSimon Schubert 	     inplace to reflect what we now know.  */
6935796c8dcSSimon Schubert 	  reloc_entry->addend = relocation;
6945796c8dcSSimon Schubert 	  reloc_entry->address += input_section->output_offset;
6955796c8dcSSimon Schubert 	  return flag;
6965796c8dcSSimon Schubert 	}
6975796c8dcSSimon Schubert       else
6985796c8dcSSimon Schubert 	{
6995796c8dcSSimon Schubert 	  /* This is a partial relocation, but inplace, so modify the
7005796c8dcSSimon Schubert 	     reloc record a bit.
7015796c8dcSSimon Schubert 
7025796c8dcSSimon Schubert 	     If we've relocated with a symbol with a section, change
7035796c8dcSSimon Schubert 	     into a ref to the section belonging to the symbol.  */
7045796c8dcSSimon Schubert 
7055796c8dcSSimon Schubert 	  reloc_entry->address += input_section->output_offset;
7065796c8dcSSimon Schubert 
7075796c8dcSSimon Schubert 	  /* WTF?? */
7085796c8dcSSimon Schubert 	  if (abfd->xvec->flavour == bfd_target_coff_flavour
7095796c8dcSSimon Schubert 	      && strcmp (abfd->xvec->name, "coff-Intel-little") != 0
7105796c8dcSSimon Schubert 	      && strcmp (abfd->xvec->name, "coff-Intel-big") != 0)
7115796c8dcSSimon Schubert 	    {
7125796c8dcSSimon Schubert 	      /* For m68k-coff, the addend was being subtracted twice during
7135796c8dcSSimon Schubert 		 relocation with -r.  Removing the line below this comment
7145796c8dcSSimon Schubert 		 fixes that problem; see PR 2953.
7155796c8dcSSimon Schubert 
7165796c8dcSSimon Schubert However, Ian wrote the following, regarding removing the line below,
7175796c8dcSSimon Schubert which explains why it is still enabled:  --djm
7185796c8dcSSimon Schubert 
7195796c8dcSSimon Schubert If you put a patch like that into BFD you need to check all the COFF
7205796c8dcSSimon Schubert linkers.  I am fairly certain that patch will break coff-i386 (e.g.,
7215796c8dcSSimon Schubert SCO); see coff_i386_reloc in coff-i386.c where I worked around the
7225796c8dcSSimon Schubert problem in a different way.  There may very well be a reason that the
7235796c8dcSSimon Schubert code works as it does.
7245796c8dcSSimon Schubert 
7255796c8dcSSimon Schubert Hmmm.  The first obvious point is that bfd_perform_relocation should
7265796c8dcSSimon Schubert not have any tests that depend upon the flavour.  It's seem like
7275796c8dcSSimon Schubert entirely the wrong place for such a thing.  The second obvious point
7285796c8dcSSimon Schubert is that the current code ignores the reloc addend when producing
7295796c8dcSSimon Schubert relocatable output for COFF.  That's peculiar.  In fact, I really
7305796c8dcSSimon Schubert have no idea what the point of the line you want to remove is.
7315796c8dcSSimon Schubert 
7325796c8dcSSimon Schubert A typical COFF reloc subtracts the old value of the symbol and adds in
7335796c8dcSSimon Schubert the new value to the location in the object file (if it's a pc
7345796c8dcSSimon Schubert relative reloc it adds the difference between the symbol value and the
7355796c8dcSSimon Schubert location).  When relocating we need to preserve that property.
7365796c8dcSSimon Schubert 
7375796c8dcSSimon Schubert BFD handles this by setting the addend to the negative of the old
7385796c8dcSSimon Schubert value of the symbol.  Unfortunately it handles common symbols in a
7395796c8dcSSimon Schubert non-standard way (it doesn't subtract the old value) but that's a
7405796c8dcSSimon Schubert different story (we can't change it without losing backward
7415796c8dcSSimon Schubert compatibility with old object files) (coff-i386 does subtract the old
7425796c8dcSSimon Schubert value, to be compatible with existing coff-i386 targets, like SCO).
7435796c8dcSSimon Schubert 
7445796c8dcSSimon Schubert So everything works fine when not producing relocatable output.  When
7455796c8dcSSimon Schubert we are producing relocatable output, logically we should do exactly
7465796c8dcSSimon Schubert what we do when not producing relocatable output.  Therefore, your
7475796c8dcSSimon Schubert patch is correct.  In fact, it should probably always just set
7485796c8dcSSimon Schubert reloc_entry->addend to 0 for all cases, since it is, in fact, going to
7495796c8dcSSimon Schubert add the value into the object file.  This won't hurt the COFF code,
7505796c8dcSSimon Schubert which doesn't use the addend; I'm not sure what it will do to other
7515796c8dcSSimon Schubert formats (the thing to check for would be whether any formats both use
7525796c8dcSSimon Schubert the addend and set partial_inplace).
7535796c8dcSSimon Schubert 
7545796c8dcSSimon Schubert When I wanted to make coff-i386 produce relocatable output, I ran
7555796c8dcSSimon Schubert into the problem that you are running into: I wanted to remove that
7565796c8dcSSimon Schubert line.  Rather than risk it, I made the coff-i386 relocs use a special
7575796c8dcSSimon Schubert function; it's coff_i386_reloc in coff-i386.c.  The function
7585796c8dcSSimon Schubert specifically adds the addend field into the object file, knowing that
7595796c8dcSSimon Schubert bfd_perform_relocation is not going to.  If you remove that line, then
7605796c8dcSSimon Schubert coff-i386.c will wind up adding the addend field in twice.  It's
7615796c8dcSSimon Schubert trivial to fix; it just needs to be done.
7625796c8dcSSimon Schubert 
7635796c8dcSSimon Schubert The problem with removing the line is just that it may break some
7645796c8dcSSimon Schubert working code.  With BFD it's hard to be sure of anything.  The right
7655796c8dcSSimon Schubert way to deal with this is simply to build and test at least all the
7665796c8dcSSimon Schubert supported COFF targets.  It should be straightforward if time and disk
7675796c8dcSSimon Schubert space consuming.  For each target:
7685796c8dcSSimon Schubert     1) build the linker
7695796c8dcSSimon Schubert     2) generate some executable, and link it using -r (I would
7705796c8dcSSimon Schubert        probably use paranoia.o and link against newlib/libc.a, which
7715796c8dcSSimon Schubert        for all the supported targets would be available in
7725796c8dcSSimon Schubert        /usr/cygnus/progressive/H-host/target/lib/libc.a).
7735796c8dcSSimon Schubert     3) make the change to reloc.c
7745796c8dcSSimon Schubert     4) rebuild the linker
7755796c8dcSSimon Schubert     5) repeat step 2
7765796c8dcSSimon Schubert     6) if the resulting object files are the same, you have at least
7775796c8dcSSimon Schubert        made it no worse
7785796c8dcSSimon Schubert     7) if they are different you have to figure out which version is
7795796c8dcSSimon Schubert        right
7805796c8dcSSimon Schubert */
7815796c8dcSSimon Schubert 	      relocation -= reloc_entry->addend;
7825796c8dcSSimon Schubert 	      reloc_entry->addend = 0;
7835796c8dcSSimon Schubert 	    }
7845796c8dcSSimon Schubert 	  else
7855796c8dcSSimon Schubert 	    {
7865796c8dcSSimon Schubert 	      reloc_entry->addend = relocation;
7875796c8dcSSimon Schubert 	    }
7885796c8dcSSimon Schubert 	}
7895796c8dcSSimon Schubert     }
7905796c8dcSSimon Schubert   else
7915796c8dcSSimon Schubert     {
7925796c8dcSSimon Schubert       reloc_entry->addend = 0;
7935796c8dcSSimon Schubert     }
7945796c8dcSSimon Schubert 
7955796c8dcSSimon Schubert   /* FIXME: This overflow checking is incomplete, because the value
7965796c8dcSSimon Schubert      might have overflowed before we get here.  For a correct check we
7975796c8dcSSimon Schubert      need to compute the value in a size larger than bitsize, but we
7985796c8dcSSimon Schubert      can't reasonably do that for a reloc the same size as a host
7995796c8dcSSimon Schubert      machine word.
8005796c8dcSSimon Schubert      FIXME: We should also do overflow checking on the result after
8015796c8dcSSimon Schubert      adding in the value contained in the object file.  */
8025796c8dcSSimon Schubert   if (howto->complain_on_overflow != complain_overflow_dont
8035796c8dcSSimon Schubert       && flag == bfd_reloc_ok)
8045796c8dcSSimon Schubert     flag = bfd_check_overflow (howto->complain_on_overflow,
8055796c8dcSSimon Schubert 			       howto->bitsize,
8065796c8dcSSimon Schubert 			       howto->rightshift,
8075796c8dcSSimon Schubert 			       bfd_arch_bits_per_address (abfd),
8085796c8dcSSimon Schubert 			       relocation);
8095796c8dcSSimon Schubert 
8105796c8dcSSimon Schubert   /* Either we are relocating all the way, or we don't want to apply
8115796c8dcSSimon Schubert      the relocation to the reloc entry (probably because there isn't
8125796c8dcSSimon Schubert      any room in the output format to describe addends to relocs).  */
8135796c8dcSSimon Schubert 
8145796c8dcSSimon Schubert   /* The cast to bfd_vma avoids a bug in the Alpha OSF/1 C compiler
8155796c8dcSSimon Schubert      (OSF version 1.3, compiler version 3.11).  It miscompiles the
8165796c8dcSSimon Schubert      following program:
8175796c8dcSSimon Schubert 
8185796c8dcSSimon Schubert      struct str
8195796c8dcSSimon Schubert      {
8205796c8dcSSimon Schubert        unsigned int i0;
8215796c8dcSSimon Schubert      } s = { 0 };
8225796c8dcSSimon Schubert 
8235796c8dcSSimon Schubert      int
8245796c8dcSSimon Schubert      main ()
8255796c8dcSSimon Schubert      {
8265796c8dcSSimon Schubert        unsigned long x;
8275796c8dcSSimon Schubert 
8285796c8dcSSimon Schubert        x = 0x100000000;
8295796c8dcSSimon Schubert        x <<= (unsigned long) s.i0;
8305796c8dcSSimon Schubert        if (x == 0)
8315796c8dcSSimon Schubert 	 printf ("failed\n");
8325796c8dcSSimon Schubert        else
8335796c8dcSSimon Schubert 	 printf ("succeeded (%lx)\n", x);
8345796c8dcSSimon Schubert      }
8355796c8dcSSimon Schubert      */
8365796c8dcSSimon Schubert 
8375796c8dcSSimon Schubert   relocation >>= (bfd_vma) howto->rightshift;
8385796c8dcSSimon Schubert 
8395796c8dcSSimon Schubert   /* Shift everything up to where it's going to be used.  */
8405796c8dcSSimon Schubert   relocation <<= (bfd_vma) howto->bitpos;
8415796c8dcSSimon Schubert 
8425796c8dcSSimon Schubert   /* Wait for the day when all have the mask in them.  */
8435796c8dcSSimon Schubert 
8445796c8dcSSimon Schubert   /* What we do:
8455796c8dcSSimon Schubert      i instruction to be left alone
8465796c8dcSSimon Schubert      o offset within instruction
8475796c8dcSSimon Schubert      r relocation offset to apply
8485796c8dcSSimon Schubert      S src mask
8495796c8dcSSimon Schubert      D dst mask
8505796c8dcSSimon Schubert      N ~dst mask
8515796c8dcSSimon Schubert      A part 1
8525796c8dcSSimon Schubert      B part 2
8535796c8dcSSimon Schubert      R result
8545796c8dcSSimon Schubert 
8555796c8dcSSimon Schubert      Do this:
8565796c8dcSSimon Schubert      ((  i i i i i o o o o o  from bfd_get<size>
8575796c8dcSSimon Schubert      and           S S S S S) to get the size offset we want
8585796c8dcSSimon Schubert      +   r r r r r r r r r r) to get the final value to place
8595796c8dcSSimon Schubert      and           D D D D D  to chop to right size
8605796c8dcSSimon Schubert      -----------------------
8615796c8dcSSimon Schubert      =             A A A A A
8625796c8dcSSimon Schubert      And this:
8635796c8dcSSimon Schubert      (   i i i i i o o o o o  from bfd_get<size>
8645796c8dcSSimon Schubert      and N N N N N          ) get instruction
8655796c8dcSSimon Schubert      -----------------------
8665796c8dcSSimon Schubert      =   B B B B B
8675796c8dcSSimon Schubert 
8685796c8dcSSimon Schubert      And then:
8695796c8dcSSimon Schubert      (   B B B B B
8705796c8dcSSimon Schubert      or            A A A A A)
8715796c8dcSSimon Schubert      -----------------------
8725796c8dcSSimon Schubert      =   R R R R R R R R R R  put into bfd_put<size>
8735796c8dcSSimon Schubert      */
8745796c8dcSSimon Schubert 
8755796c8dcSSimon Schubert #define DOIT(x) \
8765796c8dcSSimon Schubert   x = ( (x & ~howto->dst_mask) | (((x & howto->src_mask) +  relocation) & howto->dst_mask))
8775796c8dcSSimon Schubert 
8785796c8dcSSimon Schubert   switch (howto->size)
8795796c8dcSSimon Schubert     {
8805796c8dcSSimon Schubert     case 0:
8815796c8dcSSimon Schubert       {
8825796c8dcSSimon Schubert 	char x = bfd_get_8 (abfd, (char *) data + octets);
8835796c8dcSSimon Schubert 	DOIT (x);
8845796c8dcSSimon Schubert 	bfd_put_8 (abfd, x, (unsigned char *) data + octets);
8855796c8dcSSimon Schubert       }
8865796c8dcSSimon Schubert       break;
8875796c8dcSSimon Schubert 
8885796c8dcSSimon Schubert     case 1:
8895796c8dcSSimon Schubert       {
8905796c8dcSSimon Schubert 	short x = bfd_get_16 (abfd, (bfd_byte *) data + octets);
8915796c8dcSSimon Schubert 	DOIT (x);
8925796c8dcSSimon Schubert 	bfd_put_16 (abfd, (bfd_vma) x, (unsigned char *) data + octets);
8935796c8dcSSimon Schubert       }
8945796c8dcSSimon Schubert       break;
8955796c8dcSSimon Schubert     case 2:
8965796c8dcSSimon Schubert       {
8975796c8dcSSimon Schubert 	long x = bfd_get_32 (abfd, (bfd_byte *) data + octets);
8985796c8dcSSimon Schubert 	DOIT (x);
8995796c8dcSSimon Schubert 	bfd_put_32 (abfd, (bfd_vma) x, (bfd_byte *) data + octets);
9005796c8dcSSimon Schubert       }
9015796c8dcSSimon Schubert       break;
9025796c8dcSSimon Schubert     case -2:
9035796c8dcSSimon Schubert       {
9045796c8dcSSimon Schubert 	long x = bfd_get_32 (abfd, (bfd_byte *) data + octets);
9055796c8dcSSimon Schubert 	relocation = -relocation;
9065796c8dcSSimon Schubert 	DOIT (x);
9075796c8dcSSimon Schubert 	bfd_put_32 (abfd, (bfd_vma) x, (bfd_byte *) data + octets);
9085796c8dcSSimon Schubert       }
9095796c8dcSSimon Schubert       break;
9105796c8dcSSimon Schubert 
9115796c8dcSSimon Schubert     case -1:
9125796c8dcSSimon Schubert       {
9135796c8dcSSimon Schubert 	long x = bfd_get_16 (abfd, (bfd_byte *) data + octets);
9145796c8dcSSimon Schubert 	relocation = -relocation;
9155796c8dcSSimon Schubert 	DOIT (x);
9165796c8dcSSimon Schubert 	bfd_put_16 (abfd, (bfd_vma) x, (bfd_byte *) data + octets);
9175796c8dcSSimon Schubert       }
9185796c8dcSSimon Schubert       break;
9195796c8dcSSimon Schubert 
9205796c8dcSSimon Schubert     case 3:
9215796c8dcSSimon Schubert       /* Do nothing */
9225796c8dcSSimon Schubert       break;
9235796c8dcSSimon Schubert 
9245796c8dcSSimon Schubert     case 4:
9255796c8dcSSimon Schubert #ifdef BFD64
9265796c8dcSSimon Schubert       {
9275796c8dcSSimon Schubert 	bfd_vma x = bfd_get_64 (abfd, (bfd_byte *) data + octets);
9285796c8dcSSimon Schubert 	DOIT (x);
9295796c8dcSSimon Schubert 	bfd_put_64 (abfd, x, (bfd_byte *) data + octets);
9305796c8dcSSimon Schubert       }
9315796c8dcSSimon Schubert #else
9325796c8dcSSimon Schubert       abort ();
9335796c8dcSSimon Schubert #endif
9345796c8dcSSimon Schubert       break;
9355796c8dcSSimon Schubert     default:
9365796c8dcSSimon Schubert       return bfd_reloc_other;
9375796c8dcSSimon Schubert     }
9385796c8dcSSimon Schubert 
9395796c8dcSSimon Schubert   return flag;
9405796c8dcSSimon Schubert }
9415796c8dcSSimon Schubert 
9425796c8dcSSimon Schubert /*
9435796c8dcSSimon Schubert FUNCTION
9445796c8dcSSimon Schubert 	bfd_install_relocation
9455796c8dcSSimon Schubert 
9465796c8dcSSimon Schubert SYNOPSIS
9475796c8dcSSimon Schubert 	bfd_reloc_status_type bfd_install_relocation
9485796c8dcSSimon Schubert           (bfd *abfd,
9495796c8dcSSimon Schubert            arelent *reloc_entry,
9505796c8dcSSimon Schubert            void *data, bfd_vma data_start,
9515796c8dcSSimon Schubert            asection *input_section,
9525796c8dcSSimon Schubert 	   char **error_message);
9535796c8dcSSimon Schubert 
9545796c8dcSSimon Schubert DESCRIPTION
9555796c8dcSSimon Schubert 	This looks remarkably like <<bfd_perform_relocation>>, except it
9565796c8dcSSimon Schubert 	does not expect that the section contents have been filled in.
9575796c8dcSSimon Schubert 	I.e., it's suitable for use when creating, rather than applying
9585796c8dcSSimon Schubert 	a relocation.
9595796c8dcSSimon Schubert 
9605796c8dcSSimon Schubert 	For now, this function should be considered reserved for the
9615796c8dcSSimon Schubert 	assembler.
9625796c8dcSSimon Schubert */
9635796c8dcSSimon Schubert 
9645796c8dcSSimon Schubert bfd_reloc_status_type
bfd_install_relocation(bfd * abfd,arelent * reloc_entry,void * data_start,bfd_vma data_start_offset,asection * input_section,char ** error_message)9655796c8dcSSimon Schubert bfd_install_relocation (bfd *abfd,
9665796c8dcSSimon Schubert 			arelent *reloc_entry,
9675796c8dcSSimon Schubert 			void *data_start,
9685796c8dcSSimon Schubert 			bfd_vma data_start_offset,
9695796c8dcSSimon Schubert 			asection *input_section,
9705796c8dcSSimon Schubert 			char **error_message)
9715796c8dcSSimon Schubert {
9725796c8dcSSimon Schubert   bfd_vma relocation;
9735796c8dcSSimon Schubert   bfd_reloc_status_type flag = bfd_reloc_ok;
9745796c8dcSSimon Schubert   bfd_size_type octets = reloc_entry->address * bfd_octets_per_byte (abfd);
9755796c8dcSSimon Schubert   bfd_vma output_base = 0;
9765796c8dcSSimon Schubert   reloc_howto_type *howto = reloc_entry->howto;
9775796c8dcSSimon Schubert   asection *reloc_target_output_section;
9785796c8dcSSimon Schubert   asymbol *symbol;
9795796c8dcSSimon Schubert   bfd_byte *data;
9805796c8dcSSimon Schubert 
9815796c8dcSSimon Schubert   symbol = *(reloc_entry->sym_ptr_ptr);
9825796c8dcSSimon Schubert   if (bfd_is_abs_section (symbol->section))
9835796c8dcSSimon Schubert     {
9845796c8dcSSimon Schubert       reloc_entry->address += input_section->output_offset;
9855796c8dcSSimon Schubert       return bfd_reloc_ok;
9865796c8dcSSimon Schubert     }
9875796c8dcSSimon Schubert 
9885796c8dcSSimon Schubert   /* If there is a function supplied to handle this relocation type,
9895796c8dcSSimon Schubert      call it.  It'll return `bfd_reloc_continue' if further processing
9905796c8dcSSimon Schubert      can be done.  */
9915796c8dcSSimon Schubert   if (howto->special_function)
9925796c8dcSSimon Schubert     {
9935796c8dcSSimon Schubert       bfd_reloc_status_type cont;
9945796c8dcSSimon Schubert 
9955796c8dcSSimon Schubert       /* XXX - The special_function calls haven't been fixed up to deal
9965796c8dcSSimon Schubert 	 with creating new relocations and section contents.  */
9975796c8dcSSimon Schubert       cont = howto->special_function (abfd, reloc_entry, symbol,
9985796c8dcSSimon Schubert 				      /* XXX - Non-portable! */
9995796c8dcSSimon Schubert 				      ((bfd_byte *) data_start
10005796c8dcSSimon Schubert 				       - data_start_offset),
10015796c8dcSSimon Schubert 				      input_section, abfd, error_message);
10025796c8dcSSimon Schubert       if (cont != bfd_reloc_continue)
10035796c8dcSSimon Schubert 	return cont;
10045796c8dcSSimon Schubert     }
10055796c8dcSSimon Schubert 
10065796c8dcSSimon Schubert   /* Is the address of the relocation really within the section?  */
10075796c8dcSSimon Schubert   if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
10085796c8dcSSimon Schubert     return bfd_reloc_outofrange;
10095796c8dcSSimon Schubert 
10105796c8dcSSimon Schubert   /* Work out which section the relocation is targeted at and the
10115796c8dcSSimon Schubert      initial relocation command value.  */
10125796c8dcSSimon Schubert 
10135796c8dcSSimon Schubert   /* Get symbol value.  (Common symbols are special.)  */
10145796c8dcSSimon Schubert   if (bfd_is_com_section (symbol->section))
10155796c8dcSSimon Schubert     relocation = 0;
10165796c8dcSSimon Schubert   else
10175796c8dcSSimon Schubert     relocation = symbol->value;
10185796c8dcSSimon Schubert 
10195796c8dcSSimon Schubert   reloc_target_output_section = symbol->section->output_section;
10205796c8dcSSimon Schubert 
10215796c8dcSSimon Schubert   /* Convert input-section-relative symbol value to absolute.  */
10225796c8dcSSimon Schubert   if (! howto->partial_inplace)
10235796c8dcSSimon Schubert     output_base = 0;
10245796c8dcSSimon Schubert   else
10255796c8dcSSimon Schubert     output_base = reloc_target_output_section->vma;
10265796c8dcSSimon Schubert 
10275796c8dcSSimon Schubert   relocation += output_base + symbol->section->output_offset;
10285796c8dcSSimon Schubert 
10295796c8dcSSimon Schubert   /* Add in supplied addend.  */
10305796c8dcSSimon Schubert   relocation += reloc_entry->addend;
10315796c8dcSSimon Schubert 
10325796c8dcSSimon Schubert   /* Here the variable relocation holds the final address of the
10335796c8dcSSimon Schubert      symbol we are relocating against, plus any addend.  */
10345796c8dcSSimon Schubert 
10355796c8dcSSimon Schubert   if (howto->pc_relative)
10365796c8dcSSimon Schubert     {
10375796c8dcSSimon Schubert       /* This is a PC relative relocation.  We want to set RELOCATION
10385796c8dcSSimon Schubert 	 to the distance between the address of the symbol and the
10395796c8dcSSimon Schubert 	 location.  RELOCATION is already the address of the symbol.
10405796c8dcSSimon Schubert 
10415796c8dcSSimon Schubert 	 We start by subtracting the address of the section containing
10425796c8dcSSimon Schubert 	 the location.
10435796c8dcSSimon Schubert 
10445796c8dcSSimon Schubert 	 If pcrel_offset is set, we must further subtract the position
10455796c8dcSSimon Schubert 	 of the location within the section.  Some targets arrange for
10465796c8dcSSimon Schubert 	 the addend to be the negative of the position of the location
10475796c8dcSSimon Schubert 	 within the section; for example, i386-aout does this.  For
10485796c8dcSSimon Schubert 	 i386-aout, pcrel_offset is FALSE.  Some other targets do not
10495796c8dcSSimon Schubert 	 include the position of the location; for example, m88kbcs,
10505796c8dcSSimon Schubert 	 or ELF.  For those targets, pcrel_offset is TRUE.
10515796c8dcSSimon Schubert 
10525796c8dcSSimon Schubert 	 If we are producing relocatable output, then we must ensure
10535796c8dcSSimon Schubert 	 that this reloc will be correctly computed when the final
10545796c8dcSSimon Schubert 	 relocation is done.  If pcrel_offset is FALSE we want to wind
10555796c8dcSSimon Schubert 	 up with the negative of the location within the section,
10565796c8dcSSimon Schubert 	 which means we must adjust the existing addend by the change
10575796c8dcSSimon Schubert 	 in the location within the section.  If pcrel_offset is TRUE
10585796c8dcSSimon Schubert 	 we do not want to adjust the existing addend at all.
10595796c8dcSSimon Schubert 
10605796c8dcSSimon Schubert 	 FIXME: This seems logical to me, but for the case of
10615796c8dcSSimon Schubert 	 producing relocatable output it is not what the code
10625796c8dcSSimon Schubert 	 actually does.  I don't want to change it, because it seems
10635796c8dcSSimon Schubert 	 far too likely that something will break.  */
10645796c8dcSSimon Schubert 
10655796c8dcSSimon Schubert       relocation -=
10665796c8dcSSimon Schubert 	input_section->output_section->vma + input_section->output_offset;
10675796c8dcSSimon Schubert 
10685796c8dcSSimon Schubert       if (howto->pcrel_offset && howto->partial_inplace)
10695796c8dcSSimon Schubert 	relocation -= reloc_entry->address;
10705796c8dcSSimon Schubert     }
10715796c8dcSSimon Schubert 
10725796c8dcSSimon Schubert   if (! howto->partial_inplace)
10735796c8dcSSimon Schubert     {
10745796c8dcSSimon Schubert       /* This is a partial relocation, and we want to apply the relocation
10755796c8dcSSimon Schubert 	 to the reloc entry rather than the raw data. Modify the reloc
10765796c8dcSSimon Schubert 	 inplace to reflect what we now know.  */
10775796c8dcSSimon Schubert       reloc_entry->addend = relocation;
10785796c8dcSSimon Schubert       reloc_entry->address += input_section->output_offset;
10795796c8dcSSimon Schubert       return flag;
10805796c8dcSSimon Schubert     }
10815796c8dcSSimon Schubert   else
10825796c8dcSSimon Schubert     {
10835796c8dcSSimon Schubert       /* This is a partial relocation, but inplace, so modify the
10845796c8dcSSimon Schubert 	 reloc record a bit.
10855796c8dcSSimon Schubert 
10865796c8dcSSimon Schubert 	 If we've relocated with a symbol with a section, change
10875796c8dcSSimon Schubert 	 into a ref to the section belonging to the symbol.  */
10885796c8dcSSimon Schubert       reloc_entry->address += input_section->output_offset;
10895796c8dcSSimon Schubert 
10905796c8dcSSimon Schubert       /* WTF?? */
10915796c8dcSSimon Schubert       if (abfd->xvec->flavour == bfd_target_coff_flavour
10925796c8dcSSimon Schubert 	  && strcmp (abfd->xvec->name, "coff-Intel-little") != 0
10935796c8dcSSimon Schubert 	  && strcmp (abfd->xvec->name, "coff-Intel-big") != 0)
10945796c8dcSSimon Schubert 	{
10955796c8dcSSimon Schubert 
10965796c8dcSSimon Schubert 	  /* For m68k-coff, the addend was being subtracted twice during
10975796c8dcSSimon Schubert 	     relocation with -r.  Removing the line below this comment
10985796c8dcSSimon Schubert 	     fixes that problem; see PR 2953.
10995796c8dcSSimon Schubert 
11005796c8dcSSimon Schubert However, Ian wrote the following, regarding removing the line below,
11015796c8dcSSimon Schubert which explains why it is still enabled:  --djm
11025796c8dcSSimon Schubert 
11035796c8dcSSimon Schubert If you put a patch like that into BFD you need to check all the COFF
11045796c8dcSSimon Schubert linkers.  I am fairly certain that patch will break coff-i386 (e.g.,
11055796c8dcSSimon Schubert SCO); see coff_i386_reloc in coff-i386.c where I worked around the
11065796c8dcSSimon Schubert problem in a different way.  There may very well be a reason that the
11075796c8dcSSimon Schubert code works as it does.
11085796c8dcSSimon Schubert 
11095796c8dcSSimon Schubert Hmmm.  The first obvious point is that bfd_install_relocation should
11105796c8dcSSimon Schubert not have any tests that depend upon the flavour.  It's seem like
11115796c8dcSSimon Schubert entirely the wrong place for such a thing.  The second obvious point
11125796c8dcSSimon Schubert is that the current code ignores the reloc addend when producing
11135796c8dcSSimon Schubert relocatable output for COFF.  That's peculiar.  In fact, I really
11145796c8dcSSimon Schubert have no idea what the point of the line you want to remove is.
11155796c8dcSSimon Schubert 
11165796c8dcSSimon Schubert A typical COFF reloc subtracts the old value of the symbol and adds in
11175796c8dcSSimon Schubert the new value to the location in the object file (if it's a pc
11185796c8dcSSimon Schubert relative reloc it adds the difference between the symbol value and the
11195796c8dcSSimon Schubert location).  When relocating we need to preserve that property.
11205796c8dcSSimon Schubert 
11215796c8dcSSimon Schubert BFD handles this by setting the addend to the negative of the old
11225796c8dcSSimon Schubert value of the symbol.  Unfortunately it handles common symbols in a
11235796c8dcSSimon Schubert non-standard way (it doesn't subtract the old value) but that's a
11245796c8dcSSimon Schubert different story (we can't change it without losing backward
11255796c8dcSSimon Schubert compatibility with old object files) (coff-i386 does subtract the old
11265796c8dcSSimon Schubert value, to be compatible with existing coff-i386 targets, like SCO).
11275796c8dcSSimon Schubert 
11285796c8dcSSimon Schubert So everything works fine when not producing relocatable output.  When
11295796c8dcSSimon Schubert we are producing relocatable output, logically we should do exactly
11305796c8dcSSimon Schubert what we do when not producing relocatable output.  Therefore, your
11315796c8dcSSimon Schubert patch is correct.  In fact, it should probably always just set
11325796c8dcSSimon Schubert reloc_entry->addend to 0 for all cases, since it is, in fact, going to
11335796c8dcSSimon Schubert add the value into the object file.  This won't hurt the COFF code,
11345796c8dcSSimon Schubert which doesn't use the addend; I'm not sure what it will do to other
11355796c8dcSSimon Schubert formats (the thing to check for would be whether any formats both use
11365796c8dcSSimon Schubert the addend and set partial_inplace).
11375796c8dcSSimon Schubert 
11385796c8dcSSimon Schubert When I wanted to make coff-i386 produce relocatable output, I ran
11395796c8dcSSimon Schubert into the problem that you are running into: I wanted to remove that
11405796c8dcSSimon Schubert line.  Rather than risk it, I made the coff-i386 relocs use a special
11415796c8dcSSimon Schubert function; it's coff_i386_reloc in coff-i386.c.  The function
11425796c8dcSSimon Schubert specifically adds the addend field into the object file, knowing that
11435796c8dcSSimon Schubert bfd_install_relocation is not going to.  If you remove that line, then
11445796c8dcSSimon Schubert coff-i386.c will wind up adding the addend field in twice.  It's
11455796c8dcSSimon Schubert trivial to fix; it just needs to be done.
11465796c8dcSSimon Schubert 
11475796c8dcSSimon Schubert The problem with removing the line is just that it may break some
11485796c8dcSSimon Schubert working code.  With BFD it's hard to be sure of anything.  The right
11495796c8dcSSimon Schubert way to deal with this is simply to build and test at least all the
11505796c8dcSSimon Schubert supported COFF targets.  It should be straightforward if time and disk
11515796c8dcSSimon Schubert space consuming.  For each target:
11525796c8dcSSimon Schubert     1) build the linker
11535796c8dcSSimon Schubert     2) generate some executable, and link it using -r (I would
11545796c8dcSSimon Schubert        probably use paranoia.o and link against newlib/libc.a, which
11555796c8dcSSimon Schubert        for all the supported targets would be available in
11565796c8dcSSimon Schubert        /usr/cygnus/progressive/H-host/target/lib/libc.a).
11575796c8dcSSimon Schubert     3) make the change to reloc.c
11585796c8dcSSimon Schubert     4) rebuild the linker
11595796c8dcSSimon Schubert     5) repeat step 2
11605796c8dcSSimon Schubert     6) if the resulting object files are the same, you have at least
11615796c8dcSSimon Schubert        made it no worse
11625796c8dcSSimon Schubert     7) if they are different you have to figure out which version is
11635796c8dcSSimon Schubert        right.  */
11645796c8dcSSimon Schubert 	  relocation -= reloc_entry->addend;
11655796c8dcSSimon Schubert 	  /* FIXME: There should be no target specific code here...  */
11665796c8dcSSimon Schubert 	  if (strcmp (abfd->xvec->name, "coff-z8k") != 0)
11675796c8dcSSimon Schubert 	    reloc_entry->addend = 0;
11685796c8dcSSimon Schubert 	}
11695796c8dcSSimon Schubert       else
11705796c8dcSSimon Schubert 	{
11715796c8dcSSimon Schubert 	  reloc_entry->addend = relocation;
11725796c8dcSSimon Schubert 	}
11735796c8dcSSimon Schubert     }
11745796c8dcSSimon Schubert 
11755796c8dcSSimon Schubert   /* FIXME: This overflow checking is incomplete, because the value
11765796c8dcSSimon Schubert      might have overflowed before we get here.  For a correct check we
11775796c8dcSSimon Schubert      need to compute the value in a size larger than bitsize, but we
11785796c8dcSSimon Schubert      can't reasonably do that for a reloc the same size as a host
11795796c8dcSSimon Schubert      machine word.
11805796c8dcSSimon Schubert      FIXME: We should also do overflow checking on the result after
11815796c8dcSSimon Schubert      adding in the value contained in the object file.  */
11825796c8dcSSimon Schubert   if (howto->complain_on_overflow != complain_overflow_dont)
11835796c8dcSSimon Schubert     flag = bfd_check_overflow (howto->complain_on_overflow,
11845796c8dcSSimon Schubert 			       howto->bitsize,
11855796c8dcSSimon Schubert 			       howto->rightshift,
11865796c8dcSSimon Schubert 			       bfd_arch_bits_per_address (abfd),
11875796c8dcSSimon Schubert 			       relocation);
11885796c8dcSSimon Schubert 
11895796c8dcSSimon Schubert   /* Either we are relocating all the way, or we don't want to apply
11905796c8dcSSimon Schubert      the relocation to the reloc entry (probably because there isn't
11915796c8dcSSimon Schubert      any room in the output format to describe addends to relocs).  */
11925796c8dcSSimon Schubert 
11935796c8dcSSimon Schubert   /* The cast to bfd_vma avoids a bug in the Alpha OSF/1 C compiler
11945796c8dcSSimon Schubert      (OSF version 1.3, compiler version 3.11).  It miscompiles the
11955796c8dcSSimon Schubert      following program:
11965796c8dcSSimon Schubert 
11975796c8dcSSimon Schubert      struct str
11985796c8dcSSimon Schubert      {
11995796c8dcSSimon Schubert        unsigned int i0;
12005796c8dcSSimon Schubert      } s = { 0 };
12015796c8dcSSimon Schubert 
12025796c8dcSSimon Schubert      int
12035796c8dcSSimon Schubert      main ()
12045796c8dcSSimon Schubert      {
12055796c8dcSSimon Schubert        unsigned long x;
12065796c8dcSSimon Schubert 
12075796c8dcSSimon Schubert        x = 0x100000000;
12085796c8dcSSimon Schubert        x <<= (unsigned long) s.i0;
12095796c8dcSSimon Schubert        if (x == 0)
12105796c8dcSSimon Schubert 	 printf ("failed\n");
12115796c8dcSSimon Schubert        else
12125796c8dcSSimon Schubert 	 printf ("succeeded (%lx)\n", x);
12135796c8dcSSimon Schubert      }
12145796c8dcSSimon Schubert      */
12155796c8dcSSimon Schubert 
12165796c8dcSSimon Schubert   relocation >>= (bfd_vma) howto->rightshift;
12175796c8dcSSimon Schubert 
12185796c8dcSSimon Schubert   /* Shift everything up to where it's going to be used.  */
12195796c8dcSSimon Schubert   relocation <<= (bfd_vma) howto->bitpos;
12205796c8dcSSimon Schubert 
12215796c8dcSSimon Schubert   /* Wait for the day when all have the mask in them.  */
12225796c8dcSSimon Schubert 
12235796c8dcSSimon Schubert   /* What we do:
12245796c8dcSSimon Schubert      i instruction to be left alone
12255796c8dcSSimon Schubert      o offset within instruction
12265796c8dcSSimon Schubert      r relocation offset to apply
12275796c8dcSSimon Schubert      S src mask
12285796c8dcSSimon Schubert      D dst mask
12295796c8dcSSimon Schubert      N ~dst mask
12305796c8dcSSimon Schubert      A part 1
12315796c8dcSSimon Schubert      B part 2
12325796c8dcSSimon Schubert      R result
12335796c8dcSSimon Schubert 
12345796c8dcSSimon Schubert      Do this:
12355796c8dcSSimon Schubert      ((  i i i i i o o o o o  from bfd_get<size>
12365796c8dcSSimon Schubert      and           S S S S S) to get the size offset we want
12375796c8dcSSimon Schubert      +   r r r r r r r r r r) to get the final value to place
12385796c8dcSSimon Schubert      and           D D D D D  to chop to right size
12395796c8dcSSimon Schubert      -----------------------
12405796c8dcSSimon Schubert      =             A A A A A
12415796c8dcSSimon Schubert      And this:
12425796c8dcSSimon Schubert      (   i i i i i o o o o o  from bfd_get<size>
12435796c8dcSSimon Schubert      and N N N N N          ) get instruction
12445796c8dcSSimon Schubert      -----------------------
12455796c8dcSSimon Schubert      =   B B B B B
12465796c8dcSSimon Schubert 
12475796c8dcSSimon Schubert      And then:
12485796c8dcSSimon Schubert      (   B B B B B
12495796c8dcSSimon Schubert      or            A A A A A)
12505796c8dcSSimon Schubert      -----------------------
12515796c8dcSSimon Schubert      =   R R R R R R R R R R  put into bfd_put<size>
12525796c8dcSSimon Schubert      */
12535796c8dcSSimon Schubert 
12545796c8dcSSimon Schubert #define DOIT(x) \
12555796c8dcSSimon Schubert   x = ( (x & ~howto->dst_mask) | (((x & howto->src_mask) +  relocation) & howto->dst_mask))
12565796c8dcSSimon Schubert 
12575796c8dcSSimon Schubert   data = (bfd_byte *) data_start + (octets - data_start_offset);
12585796c8dcSSimon Schubert 
12595796c8dcSSimon Schubert   switch (howto->size)
12605796c8dcSSimon Schubert     {
12615796c8dcSSimon Schubert     case 0:
12625796c8dcSSimon Schubert       {
12635796c8dcSSimon Schubert 	char x = bfd_get_8 (abfd, data);
12645796c8dcSSimon Schubert 	DOIT (x);
12655796c8dcSSimon Schubert 	bfd_put_8 (abfd, x, data);
12665796c8dcSSimon Schubert       }
12675796c8dcSSimon Schubert       break;
12685796c8dcSSimon Schubert 
12695796c8dcSSimon Schubert     case 1:
12705796c8dcSSimon Schubert       {
12715796c8dcSSimon Schubert 	short x = bfd_get_16 (abfd, data);
12725796c8dcSSimon Schubert 	DOIT (x);
12735796c8dcSSimon Schubert 	bfd_put_16 (abfd, (bfd_vma) x, data);
12745796c8dcSSimon Schubert       }
12755796c8dcSSimon Schubert       break;
12765796c8dcSSimon Schubert     case 2:
12775796c8dcSSimon Schubert       {
12785796c8dcSSimon Schubert 	long x = bfd_get_32 (abfd, data);
12795796c8dcSSimon Schubert 	DOIT (x);
12805796c8dcSSimon Schubert 	bfd_put_32 (abfd, (bfd_vma) x, data);
12815796c8dcSSimon Schubert       }
12825796c8dcSSimon Schubert       break;
12835796c8dcSSimon Schubert     case -2:
12845796c8dcSSimon Schubert       {
12855796c8dcSSimon Schubert 	long x = bfd_get_32 (abfd, data);
12865796c8dcSSimon Schubert 	relocation = -relocation;
12875796c8dcSSimon Schubert 	DOIT (x);
12885796c8dcSSimon Schubert 	bfd_put_32 (abfd, (bfd_vma) x, data);
12895796c8dcSSimon Schubert       }
12905796c8dcSSimon Schubert       break;
12915796c8dcSSimon Schubert 
12925796c8dcSSimon Schubert     case 3:
12935796c8dcSSimon Schubert       /* Do nothing */
12945796c8dcSSimon Schubert       break;
12955796c8dcSSimon Schubert 
12965796c8dcSSimon Schubert     case 4:
12975796c8dcSSimon Schubert       {
12985796c8dcSSimon Schubert 	bfd_vma x = bfd_get_64 (abfd, data);
12995796c8dcSSimon Schubert 	DOIT (x);
13005796c8dcSSimon Schubert 	bfd_put_64 (abfd, x, data);
13015796c8dcSSimon Schubert       }
13025796c8dcSSimon Schubert       break;
13035796c8dcSSimon Schubert     default:
13045796c8dcSSimon Schubert       return bfd_reloc_other;
13055796c8dcSSimon Schubert     }
13065796c8dcSSimon Schubert 
13075796c8dcSSimon Schubert   return flag;
13085796c8dcSSimon Schubert }
13095796c8dcSSimon Schubert 
13105796c8dcSSimon Schubert /* This relocation routine is used by some of the backend linkers.
13115796c8dcSSimon Schubert    They do not construct asymbol or arelent structures, so there is no
13125796c8dcSSimon Schubert    reason for them to use bfd_perform_relocation.  Also,
13135796c8dcSSimon Schubert    bfd_perform_relocation is so hacked up it is easier to write a new
13145796c8dcSSimon Schubert    function than to try to deal with it.
13155796c8dcSSimon Schubert 
13165796c8dcSSimon Schubert    This routine does a final relocation.  Whether it is useful for a
13175796c8dcSSimon Schubert    relocatable link depends upon how the object format defines
13185796c8dcSSimon Schubert    relocations.
13195796c8dcSSimon Schubert 
13205796c8dcSSimon Schubert    FIXME: This routine ignores any special_function in the HOWTO,
13215796c8dcSSimon Schubert    since the existing special_function values have been written for
13225796c8dcSSimon Schubert    bfd_perform_relocation.
13235796c8dcSSimon Schubert 
13245796c8dcSSimon Schubert    HOWTO is the reloc howto information.
13255796c8dcSSimon Schubert    INPUT_BFD is the BFD which the reloc applies to.
13265796c8dcSSimon Schubert    INPUT_SECTION is the section which the reloc applies to.
13275796c8dcSSimon Schubert    CONTENTS is the contents of the section.
13285796c8dcSSimon Schubert    ADDRESS is the address of the reloc within INPUT_SECTION.
13295796c8dcSSimon Schubert    VALUE is the value of the symbol the reloc refers to.
13305796c8dcSSimon Schubert    ADDEND is the addend of the reloc.  */
13315796c8dcSSimon Schubert 
13325796c8dcSSimon Schubert bfd_reloc_status_type
_bfd_final_link_relocate(reloc_howto_type * howto,bfd * input_bfd,asection * input_section,bfd_byte * contents,bfd_vma address,bfd_vma value,bfd_vma addend)13335796c8dcSSimon Schubert _bfd_final_link_relocate (reloc_howto_type *howto,
13345796c8dcSSimon Schubert 			  bfd *input_bfd,
13355796c8dcSSimon Schubert 			  asection *input_section,
13365796c8dcSSimon Schubert 			  bfd_byte *contents,
13375796c8dcSSimon Schubert 			  bfd_vma address,
13385796c8dcSSimon Schubert 			  bfd_vma value,
13395796c8dcSSimon Schubert 			  bfd_vma addend)
13405796c8dcSSimon Schubert {
13415796c8dcSSimon Schubert   bfd_vma relocation;
13425796c8dcSSimon Schubert 
13435796c8dcSSimon Schubert   /* Sanity check the address.  */
13445796c8dcSSimon Schubert   if (address > bfd_get_section_limit (input_bfd, input_section))
13455796c8dcSSimon Schubert     return bfd_reloc_outofrange;
13465796c8dcSSimon Schubert 
13475796c8dcSSimon Schubert   /* This function assumes that we are dealing with a basic relocation
13485796c8dcSSimon Schubert      against a symbol.  We want to compute the value of the symbol to
13495796c8dcSSimon Schubert      relocate to.  This is just VALUE, the value of the symbol, plus
13505796c8dcSSimon Schubert      ADDEND, any addend associated with the reloc.  */
13515796c8dcSSimon Schubert   relocation = value + addend;
13525796c8dcSSimon Schubert 
13535796c8dcSSimon Schubert   /* If the relocation is PC relative, we want to set RELOCATION to
13545796c8dcSSimon Schubert      the distance between the symbol (currently in RELOCATION) and the
13555796c8dcSSimon Schubert      location we are relocating.  Some targets (e.g., i386-aout)
13565796c8dcSSimon Schubert      arrange for the contents of the section to be the negative of the
13575796c8dcSSimon Schubert      offset of the location within the section; for such targets
13585796c8dcSSimon Schubert      pcrel_offset is FALSE.  Other targets (e.g., m88kbcs or ELF)
13595796c8dcSSimon Schubert      simply leave the contents of the section as zero; for such
13605796c8dcSSimon Schubert      targets pcrel_offset is TRUE.  If pcrel_offset is FALSE we do not
13615796c8dcSSimon Schubert      need to subtract out the offset of the location within the
13625796c8dcSSimon Schubert      section (which is just ADDRESS).  */
13635796c8dcSSimon Schubert   if (howto->pc_relative)
13645796c8dcSSimon Schubert     {
13655796c8dcSSimon Schubert       relocation -= (input_section->output_section->vma
13665796c8dcSSimon Schubert 		     + input_section->output_offset);
13675796c8dcSSimon Schubert       if (howto->pcrel_offset)
13685796c8dcSSimon Schubert 	relocation -= address;
13695796c8dcSSimon Schubert     }
13705796c8dcSSimon Schubert 
13715796c8dcSSimon Schubert   return _bfd_relocate_contents (howto, input_bfd, relocation,
13725796c8dcSSimon Schubert 				 contents + address);
13735796c8dcSSimon Schubert }
13745796c8dcSSimon Schubert 
13755796c8dcSSimon Schubert /* Relocate a given location using a given value and howto.  */
13765796c8dcSSimon Schubert 
13775796c8dcSSimon Schubert bfd_reloc_status_type
_bfd_relocate_contents(reloc_howto_type * howto,bfd * input_bfd,bfd_vma relocation,bfd_byte * location)13785796c8dcSSimon Schubert _bfd_relocate_contents (reloc_howto_type *howto,
13795796c8dcSSimon Schubert 			bfd *input_bfd,
13805796c8dcSSimon Schubert 			bfd_vma relocation,
13815796c8dcSSimon Schubert 			bfd_byte *location)
13825796c8dcSSimon Schubert {
13835796c8dcSSimon Schubert   int size;
13845796c8dcSSimon Schubert   bfd_vma x = 0;
13855796c8dcSSimon Schubert   bfd_reloc_status_type flag;
13865796c8dcSSimon Schubert   unsigned int rightshift = howto->rightshift;
13875796c8dcSSimon Schubert   unsigned int bitpos = howto->bitpos;
13885796c8dcSSimon Schubert 
13895796c8dcSSimon Schubert   /* If the size is negative, negate RELOCATION.  This isn't very
13905796c8dcSSimon Schubert      general.  */
13915796c8dcSSimon Schubert   if (howto->size < 0)
13925796c8dcSSimon Schubert     relocation = -relocation;
13935796c8dcSSimon Schubert 
13945796c8dcSSimon Schubert   /* Get the value we are going to relocate.  */
13955796c8dcSSimon Schubert   size = bfd_get_reloc_size (howto);
13965796c8dcSSimon Schubert   switch (size)
13975796c8dcSSimon Schubert     {
13985796c8dcSSimon Schubert     default:
13995796c8dcSSimon Schubert     case 0:
14005796c8dcSSimon Schubert       abort ();
14015796c8dcSSimon Schubert     case 1:
14025796c8dcSSimon Schubert       x = bfd_get_8 (input_bfd, location);
14035796c8dcSSimon Schubert       break;
14045796c8dcSSimon Schubert     case 2:
14055796c8dcSSimon Schubert       x = bfd_get_16 (input_bfd, location);
14065796c8dcSSimon Schubert       break;
14075796c8dcSSimon Schubert     case 4:
14085796c8dcSSimon Schubert       x = bfd_get_32 (input_bfd, location);
14095796c8dcSSimon Schubert       break;
14105796c8dcSSimon Schubert     case 8:
14115796c8dcSSimon Schubert #ifdef BFD64
14125796c8dcSSimon Schubert       x = bfd_get_64 (input_bfd, location);
14135796c8dcSSimon Schubert #else
14145796c8dcSSimon Schubert       abort ();
14155796c8dcSSimon Schubert #endif
14165796c8dcSSimon Schubert       break;
14175796c8dcSSimon Schubert     }
14185796c8dcSSimon Schubert 
14195796c8dcSSimon Schubert   /* Check for overflow.  FIXME: We may drop bits during the addition
14205796c8dcSSimon Schubert      which we don't check for.  We must either check at every single
14215796c8dcSSimon Schubert      operation, which would be tedious, or we must do the computations
14225796c8dcSSimon Schubert      in a type larger than bfd_vma, which would be inefficient.  */
14235796c8dcSSimon Schubert   flag = bfd_reloc_ok;
14245796c8dcSSimon Schubert   if (howto->complain_on_overflow != complain_overflow_dont)
14255796c8dcSSimon Schubert     {
14265796c8dcSSimon Schubert       bfd_vma addrmask, fieldmask, signmask, ss;
14275796c8dcSSimon Schubert       bfd_vma a, b, sum;
14285796c8dcSSimon Schubert 
14295796c8dcSSimon Schubert       /* Get the values to be added together.  For signed and unsigned
14305796c8dcSSimon Schubert          relocations, we assume that all values should be truncated to
14315796c8dcSSimon Schubert          the size of an address.  For bitfields, all the bits matter.
14325796c8dcSSimon Schubert          See also bfd_check_overflow.  */
14335796c8dcSSimon Schubert       fieldmask = N_ONES (howto->bitsize);
14345796c8dcSSimon Schubert       signmask = ~fieldmask;
1435cf7f2e2dSJohn Marino       addrmask = (N_ONES (bfd_arch_bits_per_address (input_bfd))
1436cf7f2e2dSJohn Marino 		  | (fieldmask << rightshift));
14375796c8dcSSimon Schubert       a = (relocation & addrmask) >> rightshift;
14385796c8dcSSimon Schubert       b = (x & howto->src_mask & addrmask) >> bitpos;
1439cf7f2e2dSJohn Marino       addrmask >>= rightshift;
14405796c8dcSSimon Schubert 
14415796c8dcSSimon Schubert       switch (howto->complain_on_overflow)
14425796c8dcSSimon Schubert 	{
14435796c8dcSSimon Schubert 	case complain_overflow_signed:
14445796c8dcSSimon Schubert 	  /* If any sign bits are set, all sign bits must be set.
14455796c8dcSSimon Schubert 	     That is, A must be a valid negative address after
14465796c8dcSSimon Schubert 	     shifting.  */
14475796c8dcSSimon Schubert 	  signmask = ~(fieldmask >> 1);
14485796c8dcSSimon Schubert 	  /* Fall thru */
14495796c8dcSSimon Schubert 
14505796c8dcSSimon Schubert 	case complain_overflow_bitfield:
14515796c8dcSSimon Schubert 	  /* Much like the signed check, but for a field one bit
14525796c8dcSSimon Schubert 	     wider.  We allow a bitfield to represent numbers in the
14535796c8dcSSimon Schubert 	     range -2**n to 2**n-1, where n is the number of bits in the
14545796c8dcSSimon Schubert 	     field.  Note that when bfd_vma is 32 bits, a 32-bit reloc
14555796c8dcSSimon Schubert 	     can't overflow, which is exactly what we want.  */
14565796c8dcSSimon Schubert 	  ss = a & signmask;
1457cf7f2e2dSJohn Marino 	  if (ss != 0 && ss != (addrmask & signmask))
14585796c8dcSSimon Schubert 	    flag = bfd_reloc_overflow;
14595796c8dcSSimon Schubert 
14605796c8dcSSimon Schubert 	  /* We only need this next bit of code if the sign bit of B
14615796c8dcSSimon Schubert              is below the sign bit of A.  This would only happen if
14625796c8dcSSimon Schubert              SRC_MASK had fewer bits than BITSIZE.  Note that if
14635796c8dcSSimon Schubert              SRC_MASK has more bits than BITSIZE, we can get into
14645796c8dcSSimon Schubert              trouble; we would need to verify that B is in range, as
14655796c8dcSSimon Schubert              we do for A above.  */
14665796c8dcSSimon Schubert 	  ss = ((~howto->src_mask) >> 1) & howto->src_mask;
14675796c8dcSSimon Schubert 	  ss >>= bitpos;
14685796c8dcSSimon Schubert 
14695796c8dcSSimon Schubert 	  /* Set all the bits above the sign bit.  */
14705796c8dcSSimon Schubert 	  b = (b ^ ss) - ss;
14715796c8dcSSimon Schubert 
14725796c8dcSSimon Schubert 	  /* Now we can do the addition.  */
14735796c8dcSSimon Schubert 	  sum = a + b;
14745796c8dcSSimon Schubert 
14755796c8dcSSimon Schubert 	  /* See if the result has the correct sign.  Bits above the
14765796c8dcSSimon Schubert              sign bit are junk now; ignore them.  If the sum is
14775796c8dcSSimon Schubert              positive, make sure we did not have all negative inputs;
14785796c8dcSSimon Schubert              if the sum is negative, make sure we did not have all
14795796c8dcSSimon Schubert              positive inputs.  The test below looks only at the sign
14805796c8dcSSimon Schubert              bits, and it really just
14815796c8dcSSimon Schubert 	         SIGN (A) == SIGN (B) && SIGN (A) != SIGN (SUM)
14825796c8dcSSimon Schubert 
14835796c8dcSSimon Schubert 	     We mask with addrmask here to explicitly allow an address
14845796c8dcSSimon Schubert 	     wrap-around.  The Linux kernel relies on it, and it is
14855796c8dcSSimon Schubert 	     the only way to write assembler code which can run when
14865796c8dcSSimon Schubert 	     loaded at a location 0x80000000 away from the location at
14875796c8dcSSimon Schubert 	     which it is linked.  */
14885796c8dcSSimon Schubert 	  if (((~(a ^ b)) & (a ^ sum)) & signmask & addrmask)
14895796c8dcSSimon Schubert 	    flag = bfd_reloc_overflow;
14905796c8dcSSimon Schubert 	  break;
14915796c8dcSSimon Schubert 
14925796c8dcSSimon Schubert 	case complain_overflow_unsigned:
14935796c8dcSSimon Schubert 	  /* Checking for an unsigned overflow is relatively easy:
14945796c8dcSSimon Schubert              trim the addresses and add, and trim the result as well.
14955796c8dcSSimon Schubert              Overflow is normally indicated when the result does not
14965796c8dcSSimon Schubert              fit in the field.  However, we also need to consider the
14975796c8dcSSimon Schubert              case when, e.g., fieldmask is 0x7fffffff or smaller, an
14985796c8dcSSimon Schubert              input is 0x80000000, and bfd_vma is only 32 bits; then we
14995796c8dcSSimon Schubert              will get sum == 0, but there is an overflow, since the
15005796c8dcSSimon Schubert              inputs did not fit in the field.  Instead of doing a
15015796c8dcSSimon Schubert              separate test, we can check for this by or-ing in the
15025796c8dcSSimon Schubert              operands when testing for the sum overflowing its final
15035796c8dcSSimon Schubert              field.  */
15045796c8dcSSimon Schubert 	  sum = (a + b) & addrmask;
15055796c8dcSSimon Schubert 	  if ((a | b | sum) & signmask)
15065796c8dcSSimon Schubert 	    flag = bfd_reloc_overflow;
15075796c8dcSSimon Schubert 	  break;
15085796c8dcSSimon Schubert 
15095796c8dcSSimon Schubert 	default:
15105796c8dcSSimon Schubert 	  abort ();
15115796c8dcSSimon Schubert 	}
15125796c8dcSSimon Schubert     }
15135796c8dcSSimon Schubert 
15145796c8dcSSimon Schubert   /* Put RELOCATION in the right bits.  */
15155796c8dcSSimon Schubert   relocation >>= (bfd_vma) rightshift;
15165796c8dcSSimon Schubert   relocation <<= (bfd_vma) bitpos;
15175796c8dcSSimon Schubert 
15185796c8dcSSimon Schubert   /* Add RELOCATION to the right bits of X.  */
15195796c8dcSSimon Schubert   x = ((x & ~howto->dst_mask)
15205796c8dcSSimon Schubert        | (((x & howto->src_mask) + relocation) & howto->dst_mask));
15215796c8dcSSimon Schubert 
15225796c8dcSSimon Schubert   /* Put the relocated value back in the object file.  */
15235796c8dcSSimon Schubert   switch (size)
15245796c8dcSSimon Schubert     {
15255796c8dcSSimon Schubert     default:
15265796c8dcSSimon Schubert       abort ();
15275796c8dcSSimon Schubert     case 1:
15285796c8dcSSimon Schubert       bfd_put_8 (input_bfd, x, location);
15295796c8dcSSimon Schubert       break;
15305796c8dcSSimon Schubert     case 2:
15315796c8dcSSimon Schubert       bfd_put_16 (input_bfd, x, location);
15325796c8dcSSimon Schubert       break;
15335796c8dcSSimon Schubert     case 4:
15345796c8dcSSimon Schubert       bfd_put_32 (input_bfd, x, location);
15355796c8dcSSimon Schubert       break;
15365796c8dcSSimon Schubert     case 8:
15375796c8dcSSimon Schubert #ifdef BFD64
15385796c8dcSSimon Schubert       bfd_put_64 (input_bfd, x, location);
15395796c8dcSSimon Schubert #else
15405796c8dcSSimon Schubert       abort ();
15415796c8dcSSimon Schubert #endif
15425796c8dcSSimon Schubert       break;
15435796c8dcSSimon Schubert     }
15445796c8dcSSimon Schubert 
15455796c8dcSSimon Schubert   return flag;
15465796c8dcSSimon Schubert }
15475796c8dcSSimon Schubert 
1548c50c785cSJohn Marino /* Clear a given location using a given howto, by applying a fixed relocation
1549c50c785cSJohn Marino    value and discarding any in-place addend.  This is used for fixed-up
15505796c8dcSSimon Schubert    relocations against discarded symbols, to make ignorable debug or unwind
15515796c8dcSSimon Schubert    information more obvious.  */
15525796c8dcSSimon Schubert 
15535796c8dcSSimon Schubert void
_bfd_clear_contents(reloc_howto_type * howto,bfd * input_bfd,asection * input_section,bfd_byte * location)15545796c8dcSSimon Schubert _bfd_clear_contents (reloc_howto_type *howto,
15555796c8dcSSimon Schubert 		     bfd *input_bfd,
1556c50c785cSJohn Marino 		     asection *input_section,
15575796c8dcSSimon Schubert 		     bfd_byte *location)
15585796c8dcSSimon Schubert {
15595796c8dcSSimon Schubert   int size;
15605796c8dcSSimon Schubert   bfd_vma x = 0;
15615796c8dcSSimon Schubert 
15625796c8dcSSimon Schubert   /* Get the value we are going to relocate.  */
15635796c8dcSSimon Schubert   size = bfd_get_reloc_size (howto);
15645796c8dcSSimon Schubert   switch (size)
15655796c8dcSSimon Schubert     {
15665796c8dcSSimon Schubert     default:
15675796c8dcSSimon Schubert     case 0:
15685796c8dcSSimon Schubert       abort ();
15695796c8dcSSimon Schubert     case 1:
15705796c8dcSSimon Schubert       x = bfd_get_8 (input_bfd, location);
15715796c8dcSSimon Schubert       break;
15725796c8dcSSimon Schubert     case 2:
15735796c8dcSSimon Schubert       x = bfd_get_16 (input_bfd, location);
15745796c8dcSSimon Schubert       break;
15755796c8dcSSimon Schubert     case 4:
15765796c8dcSSimon Schubert       x = bfd_get_32 (input_bfd, location);
15775796c8dcSSimon Schubert       break;
15785796c8dcSSimon Schubert     case 8:
15795796c8dcSSimon Schubert #ifdef BFD64
15805796c8dcSSimon Schubert       x = bfd_get_64 (input_bfd, location);
15815796c8dcSSimon Schubert #else
15825796c8dcSSimon Schubert       abort ();
15835796c8dcSSimon Schubert #endif
15845796c8dcSSimon Schubert       break;
15855796c8dcSSimon Schubert     }
15865796c8dcSSimon Schubert 
15875796c8dcSSimon Schubert   /* Zero out the unwanted bits of X.  */
15885796c8dcSSimon Schubert   x &= ~howto->dst_mask;
15895796c8dcSSimon Schubert 
1590c50c785cSJohn Marino   /* For a range list, use 1 instead of 0 as placeholder.  0
1591c50c785cSJohn Marino      would terminate the list, hiding any later entries.  */
1592c50c785cSJohn Marino   if (strcmp (bfd_get_section_name (input_bfd, input_section),
1593c50c785cSJohn Marino 	      ".debug_ranges") == 0
1594c50c785cSJohn Marino       && (howto->dst_mask & 1) != 0)
1595c50c785cSJohn Marino     x |= 1;
1596c50c785cSJohn Marino 
15975796c8dcSSimon Schubert   /* Put the relocated value back in the object file.  */
15985796c8dcSSimon Schubert   switch (size)
15995796c8dcSSimon Schubert     {
16005796c8dcSSimon Schubert     default:
16015796c8dcSSimon Schubert     case 0:
16025796c8dcSSimon Schubert       abort ();
16035796c8dcSSimon Schubert     case 1:
16045796c8dcSSimon Schubert       bfd_put_8 (input_bfd, x, location);
16055796c8dcSSimon Schubert       break;
16065796c8dcSSimon Schubert     case 2:
16075796c8dcSSimon Schubert       bfd_put_16 (input_bfd, x, location);
16085796c8dcSSimon Schubert       break;
16095796c8dcSSimon Schubert     case 4:
16105796c8dcSSimon Schubert       bfd_put_32 (input_bfd, x, location);
16115796c8dcSSimon Schubert       break;
16125796c8dcSSimon Schubert     case 8:
16135796c8dcSSimon Schubert #ifdef BFD64
16145796c8dcSSimon Schubert       bfd_put_64 (input_bfd, x, location);
16155796c8dcSSimon Schubert #else
16165796c8dcSSimon Schubert       abort ();
16175796c8dcSSimon Schubert #endif
16185796c8dcSSimon Schubert       break;
16195796c8dcSSimon Schubert     }
16205796c8dcSSimon Schubert }
16215796c8dcSSimon Schubert 
16225796c8dcSSimon Schubert /*
16235796c8dcSSimon Schubert DOCDD
16245796c8dcSSimon Schubert INODE
16255796c8dcSSimon Schubert 	howto manager,  , typedef arelent, Relocations
16265796c8dcSSimon Schubert 
16275796c8dcSSimon Schubert SUBSECTION
16285796c8dcSSimon Schubert 	The howto manager
16295796c8dcSSimon Schubert 
16305796c8dcSSimon Schubert 	When an application wants to create a relocation, but doesn't
16315796c8dcSSimon Schubert 	know what the target machine might call it, it can find out by
16325796c8dcSSimon Schubert 	using this bit of code.
16335796c8dcSSimon Schubert 
16345796c8dcSSimon Schubert */
16355796c8dcSSimon Schubert 
16365796c8dcSSimon Schubert /*
16375796c8dcSSimon Schubert TYPEDEF
16385796c8dcSSimon Schubert 	bfd_reloc_code_type
16395796c8dcSSimon Schubert 
16405796c8dcSSimon Schubert DESCRIPTION
16415796c8dcSSimon Schubert 	The insides of a reloc code.  The idea is that, eventually, there
16425796c8dcSSimon Schubert 	will be one enumerator for every type of relocation we ever do.
16435796c8dcSSimon Schubert 	Pass one of these values to <<bfd_reloc_type_lookup>>, and it'll
16445796c8dcSSimon Schubert 	return a howto pointer.
16455796c8dcSSimon Schubert 
16465796c8dcSSimon Schubert 	This does mean that the application must determine the correct
16475796c8dcSSimon Schubert 	enumerator value; you can't get a howto pointer from a random set
16485796c8dcSSimon Schubert 	of attributes.
16495796c8dcSSimon Schubert 
16505796c8dcSSimon Schubert SENUM
16515796c8dcSSimon Schubert    bfd_reloc_code_real
16525796c8dcSSimon Schubert 
16535796c8dcSSimon Schubert ENUM
16545796c8dcSSimon Schubert   BFD_RELOC_64
16555796c8dcSSimon Schubert ENUMX
16565796c8dcSSimon Schubert   BFD_RELOC_32
16575796c8dcSSimon Schubert ENUMX
16585796c8dcSSimon Schubert   BFD_RELOC_26
16595796c8dcSSimon Schubert ENUMX
16605796c8dcSSimon Schubert   BFD_RELOC_24
16615796c8dcSSimon Schubert ENUMX
16625796c8dcSSimon Schubert   BFD_RELOC_16
16635796c8dcSSimon Schubert ENUMX
16645796c8dcSSimon Schubert   BFD_RELOC_14
16655796c8dcSSimon Schubert ENUMX
16665796c8dcSSimon Schubert   BFD_RELOC_8
16675796c8dcSSimon Schubert ENUMDOC
16685796c8dcSSimon Schubert   Basic absolute relocations of N bits.
16695796c8dcSSimon Schubert 
16705796c8dcSSimon Schubert ENUM
16715796c8dcSSimon Schubert   BFD_RELOC_64_PCREL
16725796c8dcSSimon Schubert ENUMX
16735796c8dcSSimon Schubert   BFD_RELOC_32_PCREL
16745796c8dcSSimon Schubert ENUMX
16755796c8dcSSimon Schubert   BFD_RELOC_24_PCREL
16765796c8dcSSimon Schubert ENUMX
16775796c8dcSSimon Schubert   BFD_RELOC_16_PCREL
16785796c8dcSSimon Schubert ENUMX
16795796c8dcSSimon Schubert   BFD_RELOC_12_PCREL
16805796c8dcSSimon Schubert ENUMX
16815796c8dcSSimon Schubert   BFD_RELOC_8_PCREL
16825796c8dcSSimon Schubert ENUMDOC
16835796c8dcSSimon Schubert   PC-relative relocations.  Sometimes these are relative to the address
16845796c8dcSSimon Schubert of the relocation itself; sometimes they are relative to the start of
16855796c8dcSSimon Schubert the section containing the relocation.  It depends on the specific target.
16865796c8dcSSimon Schubert 
16875796c8dcSSimon Schubert The 24-bit relocation is used in some Intel 960 configurations.
16885796c8dcSSimon Schubert 
16895796c8dcSSimon Schubert ENUM
16905796c8dcSSimon Schubert   BFD_RELOC_32_SECREL
16915796c8dcSSimon Schubert ENUMDOC
16925796c8dcSSimon Schubert   Section relative relocations.  Some targets need this for DWARF2.
16935796c8dcSSimon Schubert 
16945796c8dcSSimon Schubert ENUM
16955796c8dcSSimon Schubert   BFD_RELOC_32_GOT_PCREL
16965796c8dcSSimon Schubert ENUMX
16975796c8dcSSimon Schubert   BFD_RELOC_16_GOT_PCREL
16985796c8dcSSimon Schubert ENUMX
16995796c8dcSSimon Schubert   BFD_RELOC_8_GOT_PCREL
17005796c8dcSSimon Schubert ENUMX
17015796c8dcSSimon Schubert   BFD_RELOC_32_GOTOFF
17025796c8dcSSimon Schubert ENUMX
17035796c8dcSSimon Schubert   BFD_RELOC_16_GOTOFF
17045796c8dcSSimon Schubert ENUMX
17055796c8dcSSimon Schubert   BFD_RELOC_LO16_GOTOFF
17065796c8dcSSimon Schubert ENUMX
17075796c8dcSSimon Schubert   BFD_RELOC_HI16_GOTOFF
17085796c8dcSSimon Schubert ENUMX
17095796c8dcSSimon Schubert   BFD_RELOC_HI16_S_GOTOFF
17105796c8dcSSimon Schubert ENUMX
17115796c8dcSSimon Schubert   BFD_RELOC_8_GOTOFF
17125796c8dcSSimon Schubert ENUMX
17135796c8dcSSimon Schubert   BFD_RELOC_64_PLT_PCREL
17145796c8dcSSimon Schubert ENUMX
17155796c8dcSSimon Schubert   BFD_RELOC_32_PLT_PCREL
17165796c8dcSSimon Schubert ENUMX
17175796c8dcSSimon Schubert   BFD_RELOC_24_PLT_PCREL
17185796c8dcSSimon Schubert ENUMX
17195796c8dcSSimon Schubert   BFD_RELOC_16_PLT_PCREL
17205796c8dcSSimon Schubert ENUMX
17215796c8dcSSimon Schubert   BFD_RELOC_8_PLT_PCREL
17225796c8dcSSimon Schubert ENUMX
17235796c8dcSSimon Schubert   BFD_RELOC_64_PLTOFF
17245796c8dcSSimon Schubert ENUMX
17255796c8dcSSimon Schubert   BFD_RELOC_32_PLTOFF
17265796c8dcSSimon Schubert ENUMX
17275796c8dcSSimon Schubert   BFD_RELOC_16_PLTOFF
17285796c8dcSSimon Schubert ENUMX
17295796c8dcSSimon Schubert   BFD_RELOC_LO16_PLTOFF
17305796c8dcSSimon Schubert ENUMX
17315796c8dcSSimon Schubert   BFD_RELOC_HI16_PLTOFF
17325796c8dcSSimon Schubert ENUMX
17335796c8dcSSimon Schubert   BFD_RELOC_HI16_S_PLTOFF
17345796c8dcSSimon Schubert ENUMX
17355796c8dcSSimon Schubert   BFD_RELOC_8_PLTOFF
17365796c8dcSSimon Schubert ENUMDOC
17375796c8dcSSimon Schubert   For ELF.
17385796c8dcSSimon Schubert 
17395796c8dcSSimon Schubert ENUM
1740*ef5ccd6cSJohn Marino   BFD_RELOC_SIZE32
1741*ef5ccd6cSJohn Marino ENUMX
1742*ef5ccd6cSJohn Marino   BFD_RELOC_SIZE64
1743*ef5ccd6cSJohn Marino ENUMDOC
1744*ef5ccd6cSJohn Marino   Size relocations.
1745*ef5ccd6cSJohn Marino 
1746*ef5ccd6cSJohn Marino ENUM
17475796c8dcSSimon Schubert   BFD_RELOC_68K_GLOB_DAT
17485796c8dcSSimon Schubert ENUMX
17495796c8dcSSimon Schubert   BFD_RELOC_68K_JMP_SLOT
17505796c8dcSSimon Schubert ENUMX
17515796c8dcSSimon Schubert   BFD_RELOC_68K_RELATIVE
17525796c8dcSSimon Schubert ENUMX
17535796c8dcSSimon Schubert   BFD_RELOC_68K_TLS_GD32
17545796c8dcSSimon Schubert ENUMX
17555796c8dcSSimon Schubert   BFD_RELOC_68K_TLS_GD16
17565796c8dcSSimon Schubert ENUMX
17575796c8dcSSimon Schubert   BFD_RELOC_68K_TLS_GD8
17585796c8dcSSimon Schubert ENUMX
17595796c8dcSSimon Schubert   BFD_RELOC_68K_TLS_LDM32
17605796c8dcSSimon Schubert ENUMX
17615796c8dcSSimon Schubert   BFD_RELOC_68K_TLS_LDM16
17625796c8dcSSimon Schubert ENUMX
17635796c8dcSSimon Schubert   BFD_RELOC_68K_TLS_LDM8
17645796c8dcSSimon Schubert ENUMX
17655796c8dcSSimon Schubert   BFD_RELOC_68K_TLS_LDO32
17665796c8dcSSimon Schubert ENUMX
17675796c8dcSSimon Schubert   BFD_RELOC_68K_TLS_LDO16
17685796c8dcSSimon Schubert ENUMX
17695796c8dcSSimon Schubert   BFD_RELOC_68K_TLS_LDO8
17705796c8dcSSimon Schubert ENUMX
17715796c8dcSSimon Schubert   BFD_RELOC_68K_TLS_IE32
17725796c8dcSSimon Schubert ENUMX
17735796c8dcSSimon Schubert   BFD_RELOC_68K_TLS_IE16
17745796c8dcSSimon Schubert ENUMX
17755796c8dcSSimon Schubert   BFD_RELOC_68K_TLS_IE8
17765796c8dcSSimon Schubert ENUMX
17775796c8dcSSimon Schubert   BFD_RELOC_68K_TLS_LE32
17785796c8dcSSimon Schubert ENUMX
17795796c8dcSSimon Schubert   BFD_RELOC_68K_TLS_LE16
17805796c8dcSSimon Schubert ENUMX
17815796c8dcSSimon Schubert   BFD_RELOC_68K_TLS_LE8
17825796c8dcSSimon Schubert ENUMDOC
17835796c8dcSSimon Schubert   Relocations used by 68K ELF.
17845796c8dcSSimon Schubert 
17855796c8dcSSimon Schubert ENUM
17865796c8dcSSimon Schubert   BFD_RELOC_32_BASEREL
17875796c8dcSSimon Schubert ENUMX
17885796c8dcSSimon Schubert   BFD_RELOC_16_BASEREL
17895796c8dcSSimon Schubert ENUMX
17905796c8dcSSimon Schubert   BFD_RELOC_LO16_BASEREL
17915796c8dcSSimon Schubert ENUMX
17925796c8dcSSimon Schubert   BFD_RELOC_HI16_BASEREL
17935796c8dcSSimon Schubert ENUMX
17945796c8dcSSimon Schubert   BFD_RELOC_HI16_S_BASEREL
17955796c8dcSSimon Schubert ENUMX
17965796c8dcSSimon Schubert   BFD_RELOC_8_BASEREL
17975796c8dcSSimon Schubert ENUMX
17985796c8dcSSimon Schubert   BFD_RELOC_RVA
17995796c8dcSSimon Schubert ENUMDOC
18005796c8dcSSimon Schubert   Linkage-table relative.
18015796c8dcSSimon Schubert 
18025796c8dcSSimon Schubert ENUM
18035796c8dcSSimon Schubert   BFD_RELOC_8_FFnn
18045796c8dcSSimon Schubert ENUMDOC
18055796c8dcSSimon Schubert   Absolute 8-bit relocation, but used to form an address like 0xFFnn.
18065796c8dcSSimon Schubert 
18075796c8dcSSimon Schubert ENUM
18085796c8dcSSimon Schubert   BFD_RELOC_32_PCREL_S2
18095796c8dcSSimon Schubert ENUMX
18105796c8dcSSimon Schubert   BFD_RELOC_16_PCREL_S2
18115796c8dcSSimon Schubert ENUMX
18125796c8dcSSimon Schubert   BFD_RELOC_23_PCREL_S2
18135796c8dcSSimon Schubert ENUMDOC
18145796c8dcSSimon Schubert   These PC-relative relocations are stored as word displacements --
18155796c8dcSSimon Schubert i.e., byte displacements shifted right two bits.  The 30-bit word
18165796c8dcSSimon Schubert displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
18175796c8dcSSimon Schubert SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
18185796c8dcSSimon Schubert signed 16-bit displacement is used on the MIPS, and the 23-bit
18195796c8dcSSimon Schubert displacement is used on the Alpha.
18205796c8dcSSimon Schubert 
18215796c8dcSSimon Schubert ENUM
18225796c8dcSSimon Schubert   BFD_RELOC_HI22
18235796c8dcSSimon Schubert ENUMX
18245796c8dcSSimon Schubert   BFD_RELOC_LO10
18255796c8dcSSimon Schubert ENUMDOC
18265796c8dcSSimon Schubert   High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
18275796c8dcSSimon Schubert the target word.  These are used on the SPARC.
18285796c8dcSSimon Schubert 
18295796c8dcSSimon Schubert ENUM
18305796c8dcSSimon Schubert   BFD_RELOC_GPREL16
18315796c8dcSSimon Schubert ENUMX
18325796c8dcSSimon Schubert   BFD_RELOC_GPREL32
18335796c8dcSSimon Schubert ENUMDOC
18345796c8dcSSimon Schubert   For systems that allocate a Global Pointer register, these are
18355796c8dcSSimon Schubert displacements off that register.  These relocation types are
18365796c8dcSSimon Schubert handled specially, because the value the register will have is
18375796c8dcSSimon Schubert decided relatively late.
18385796c8dcSSimon Schubert 
18395796c8dcSSimon Schubert ENUM
18405796c8dcSSimon Schubert   BFD_RELOC_I960_CALLJ
18415796c8dcSSimon Schubert ENUMDOC
18425796c8dcSSimon Schubert   Reloc types used for i960/b.out.
18435796c8dcSSimon Schubert 
18445796c8dcSSimon Schubert ENUM
18455796c8dcSSimon Schubert   BFD_RELOC_NONE
18465796c8dcSSimon Schubert ENUMX
18475796c8dcSSimon Schubert   BFD_RELOC_SPARC_WDISP22
18485796c8dcSSimon Schubert ENUMX
18495796c8dcSSimon Schubert   BFD_RELOC_SPARC22
18505796c8dcSSimon Schubert ENUMX
18515796c8dcSSimon Schubert   BFD_RELOC_SPARC13
18525796c8dcSSimon Schubert ENUMX
18535796c8dcSSimon Schubert   BFD_RELOC_SPARC_GOT10
18545796c8dcSSimon Schubert ENUMX
18555796c8dcSSimon Schubert   BFD_RELOC_SPARC_GOT13
18565796c8dcSSimon Schubert ENUMX
18575796c8dcSSimon Schubert   BFD_RELOC_SPARC_GOT22
18585796c8dcSSimon Schubert ENUMX
18595796c8dcSSimon Schubert   BFD_RELOC_SPARC_PC10
18605796c8dcSSimon Schubert ENUMX
18615796c8dcSSimon Schubert   BFD_RELOC_SPARC_PC22
18625796c8dcSSimon Schubert ENUMX
18635796c8dcSSimon Schubert   BFD_RELOC_SPARC_WPLT30
18645796c8dcSSimon Schubert ENUMX
18655796c8dcSSimon Schubert   BFD_RELOC_SPARC_COPY
18665796c8dcSSimon Schubert ENUMX
18675796c8dcSSimon Schubert   BFD_RELOC_SPARC_GLOB_DAT
18685796c8dcSSimon Schubert ENUMX
18695796c8dcSSimon Schubert   BFD_RELOC_SPARC_JMP_SLOT
18705796c8dcSSimon Schubert ENUMX
18715796c8dcSSimon Schubert   BFD_RELOC_SPARC_RELATIVE
18725796c8dcSSimon Schubert ENUMX
18735796c8dcSSimon Schubert   BFD_RELOC_SPARC_UA16
18745796c8dcSSimon Schubert ENUMX
18755796c8dcSSimon Schubert   BFD_RELOC_SPARC_UA32
18765796c8dcSSimon Schubert ENUMX
18775796c8dcSSimon Schubert   BFD_RELOC_SPARC_UA64
18785796c8dcSSimon Schubert ENUMX
18795796c8dcSSimon Schubert   BFD_RELOC_SPARC_GOTDATA_HIX22
18805796c8dcSSimon Schubert ENUMX
18815796c8dcSSimon Schubert   BFD_RELOC_SPARC_GOTDATA_LOX10
18825796c8dcSSimon Schubert ENUMX
18835796c8dcSSimon Schubert   BFD_RELOC_SPARC_GOTDATA_OP_HIX22
18845796c8dcSSimon Schubert ENUMX
18855796c8dcSSimon Schubert   BFD_RELOC_SPARC_GOTDATA_OP_LOX10
18865796c8dcSSimon Schubert ENUMX
18875796c8dcSSimon Schubert   BFD_RELOC_SPARC_GOTDATA_OP
1888cf7f2e2dSJohn Marino ENUMX
1889cf7f2e2dSJohn Marino   BFD_RELOC_SPARC_JMP_IREL
1890cf7f2e2dSJohn Marino ENUMX
1891cf7f2e2dSJohn Marino   BFD_RELOC_SPARC_IRELATIVE
18925796c8dcSSimon Schubert ENUMDOC
18935796c8dcSSimon Schubert   SPARC ELF relocations.  There is probably some overlap with other
18945796c8dcSSimon Schubert   relocation types already defined.
18955796c8dcSSimon Schubert 
18965796c8dcSSimon Schubert ENUM
18975796c8dcSSimon Schubert   BFD_RELOC_SPARC_BASE13
18985796c8dcSSimon Schubert ENUMX
18995796c8dcSSimon Schubert   BFD_RELOC_SPARC_BASE22
19005796c8dcSSimon Schubert ENUMDOC
19015796c8dcSSimon Schubert   I think these are specific to SPARC a.out (e.g., Sun 4).
19025796c8dcSSimon Schubert 
19035796c8dcSSimon Schubert ENUMEQ
19045796c8dcSSimon Schubert   BFD_RELOC_SPARC_64
19055796c8dcSSimon Schubert   BFD_RELOC_64
19065796c8dcSSimon Schubert ENUMX
19075796c8dcSSimon Schubert   BFD_RELOC_SPARC_10
19085796c8dcSSimon Schubert ENUMX
19095796c8dcSSimon Schubert   BFD_RELOC_SPARC_11
19105796c8dcSSimon Schubert ENUMX
19115796c8dcSSimon Schubert   BFD_RELOC_SPARC_OLO10
19125796c8dcSSimon Schubert ENUMX
19135796c8dcSSimon Schubert   BFD_RELOC_SPARC_HH22
19145796c8dcSSimon Schubert ENUMX
19155796c8dcSSimon Schubert   BFD_RELOC_SPARC_HM10
19165796c8dcSSimon Schubert ENUMX
19175796c8dcSSimon Schubert   BFD_RELOC_SPARC_LM22
19185796c8dcSSimon Schubert ENUMX
19195796c8dcSSimon Schubert   BFD_RELOC_SPARC_PC_HH22
19205796c8dcSSimon Schubert ENUMX
19215796c8dcSSimon Schubert   BFD_RELOC_SPARC_PC_HM10
19225796c8dcSSimon Schubert ENUMX
19235796c8dcSSimon Schubert   BFD_RELOC_SPARC_PC_LM22
19245796c8dcSSimon Schubert ENUMX
19255796c8dcSSimon Schubert   BFD_RELOC_SPARC_WDISP16
19265796c8dcSSimon Schubert ENUMX
19275796c8dcSSimon Schubert   BFD_RELOC_SPARC_WDISP19
19285796c8dcSSimon Schubert ENUMX
19295796c8dcSSimon Schubert   BFD_RELOC_SPARC_7
19305796c8dcSSimon Schubert ENUMX
19315796c8dcSSimon Schubert   BFD_RELOC_SPARC_6
19325796c8dcSSimon Schubert ENUMX
19335796c8dcSSimon Schubert   BFD_RELOC_SPARC_5
19345796c8dcSSimon Schubert ENUMEQX
19355796c8dcSSimon Schubert   BFD_RELOC_SPARC_DISP64
19365796c8dcSSimon Schubert   BFD_RELOC_64_PCREL
19375796c8dcSSimon Schubert ENUMX
19385796c8dcSSimon Schubert   BFD_RELOC_SPARC_PLT32
19395796c8dcSSimon Schubert ENUMX
19405796c8dcSSimon Schubert   BFD_RELOC_SPARC_PLT64
19415796c8dcSSimon Schubert ENUMX
19425796c8dcSSimon Schubert   BFD_RELOC_SPARC_HIX22
19435796c8dcSSimon Schubert ENUMX
19445796c8dcSSimon Schubert   BFD_RELOC_SPARC_LOX10
19455796c8dcSSimon Schubert ENUMX
19465796c8dcSSimon Schubert   BFD_RELOC_SPARC_H44
19475796c8dcSSimon Schubert ENUMX
19485796c8dcSSimon Schubert   BFD_RELOC_SPARC_M44
19495796c8dcSSimon Schubert ENUMX
19505796c8dcSSimon Schubert   BFD_RELOC_SPARC_L44
19515796c8dcSSimon Schubert ENUMX
19525796c8dcSSimon Schubert   BFD_RELOC_SPARC_REGISTER
1953*ef5ccd6cSJohn Marino ENUMX
1954*ef5ccd6cSJohn Marino   BFD_RELOC_SPARC_H34
1955*ef5ccd6cSJohn Marino ENUMX
1956*ef5ccd6cSJohn Marino   BFD_RELOC_SPARC_SIZE32
1957*ef5ccd6cSJohn Marino ENUMX
1958*ef5ccd6cSJohn Marino   BFD_RELOC_SPARC_SIZE64
1959*ef5ccd6cSJohn Marino ENUMX
1960*ef5ccd6cSJohn Marino   BFD_RELOC_SPARC_WDISP10
19615796c8dcSSimon Schubert ENUMDOC
19625796c8dcSSimon Schubert   SPARC64 relocations
19635796c8dcSSimon Schubert 
19645796c8dcSSimon Schubert ENUM
19655796c8dcSSimon Schubert   BFD_RELOC_SPARC_REV32
19665796c8dcSSimon Schubert ENUMDOC
19675796c8dcSSimon Schubert   SPARC little endian relocation
19685796c8dcSSimon Schubert ENUM
19695796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_GD_HI22
19705796c8dcSSimon Schubert ENUMX
19715796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_GD_LO10
19725796c8dcSSimon Schubert ENUMX
19735796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_GD_ADD
19745796c8dcSSimon Schubert ENUMX
19755796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_GD_CALL
19765796c8dcSSimon Schubert ENUMX
19775796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_LDM_HI22
19785796c8dcSSimon Schubert ENUMX
19795796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_LDM_LO10
19805796c8dcSSimon Schubert ENUMX
19815796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_LDM_ADD
19825796c8dcSSimon Schubert ENUMX
19835796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_LDM_CALL
19845796c8dcSSimon Schubert ENUMX
19855796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_LDO_HIX22
19865796c8dcSSimon Schubert ENUMX
19875796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_LDO_LOX10
19885796c8dcSSimon Schubert ENUMX
19895796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_LDO_ADD
19905796c8dcSSimon Schubert ENUMX
19915796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_IE_HI22
19925796c8dcSSimon Schubert ENUMX
19935796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_IE_LO10
19945796c8dcSSimon Schubert ENUMX
19955796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_IE_LD
19965796c8dcSSimon Schubert ENUMX
19975796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_IE_LDX
19985796c8dcSSimon Schubert ENUMX
19995796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_IE_ADD
20005796c8dcSSimon Schubert ENUMX
20015796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_LE_HIX22
20025796c8dcSSimon Schubert ENUMX
20035796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_LE_LOX10
20045796c8dcSSimon Schubert ENUMX
20055796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_DTPMOD32
20065796c8dcSSimon Schubert ENUMX
20075796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_DTPMOD64
20085796c8dcSSimon Schubert ENUMX
20095796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_DTPOFF32
20105796c8dcSSimon Schubert ENUMX
20115796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_DTPOFF64
20125796c8dcSSimon Schubert ENUMX
20135796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_TPOFF32
20145796c8dcSSimon Schubert ENUMX
20155796c8dcSSimon Schubert   BFD_RELOC_SPARC_TLS_TPOFF64
20165796c8dcSSimon Schubert ENUMDOC
20175796c8dcSSimon Schubert   SPARC TLS relocations
20185796c8dcSSimon Schubert 
20195796c8dcSSimon Schubert ENUM
20205796c8dcSSimon Schubert   BFD_RELOC_SPU_IMM7
20215796c8dcSSimon Schubert ENUMX
20225796c8dcSSimon Schubert   BFD_RELOC_SPU_IMM8
20235796c8dcSSimon Schubert ENUMX
20245796c8dcSSimon Schubert   BFD_RELOC_SPU_IMM10
20255796c8dcSSimon Schubert ENUMX
20265796c8dcSSimon Schubert   BFD_RELOC_SPU_IMM10W
20275796c8dcSSimon Schubert ENUMX
20285796c8dcSSimon Schubert   BFD_RELOC_SPU_IMM16
20295796c8dcSSimon Schubert ENUMX
20305796c8dcSSimon Schubert   BFD_RELOC_SPU_IMM16W
20315796c8dcSSimon Schubert ENUMX
20325796c8dcSSimon Schubert   BFD_RELOC_SPU_IMM18
20335796c8dcSSimon Schubert ENUMX
20345796c8dcSSimon Schubert   BFD_RELOC_SPU_PCREL9a
20355796c8dcSSimon Schubert ENUMX
20365796c8dcSSimon Schubert   BFD_RELOC_SPU_PCREL9b
20375796c8dcSSimon Schubert ENUMX
20385796c8dcSSimon Schubert   BFD_RELOC_SPU_PCREL16
20395796c8dcSSimon Schubert ENUMX
20405796c8dcSSimon Schubert   BFD_RELOC_SPU_LO16
20415796c8dcSSimon Schubert ENUMX
20425796c8dcSSimon Schubert   BFD_RELOC_SPU_HI16
20435796c8dcSSimon Schubert ENUMX
20445796c8dcSSimon Schubert   BFD_RELOC_SPU_PPU32
20455796c8dcSSimon Schubert ENUMX
20465796c8dcSSimon Schubert   BFD_RELOC_SPU_PPU64
20475796c8dcSSimon Schubert ENUMX
20485796c8dcSSimon Schubert   BFD_RELOC_SPU_ADD_PIC
20495796c8dcSSimon Schubert ENUMDOC
20505796c8dcSSimon Schubert   SPU Relocations.
20515796c8dcSSimon Schubert 
20525796c8dcSSimon Schubert ENUM
20535796c8dcSSimon Schubert   BFD_RELOC_ALPHA_GPDISP_HI16
20545796c8dcSSimon Schubert ENUMDOC
20555796c8dcSSimon Schubert   Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
20565796c8dcSSimon Schubert      "addend" in some special way.
20575796c8dcSSimon Schubert   For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
20585796c8dcSSimon Schubert      writing; when reading, it will be the absolute section symbol.  The
20595796c8dcSSimon Schubert      addend is the displacement in bytes of the "lda" instruction from
20605796c8dcSSimon Schubert      the "ldah" instruction (which is at the address of this reloc).
20615796c8dcSSimon Schubert ENUM
20625796c8dcSSimon Schubert   BFD_RELOC_ALPHA_GPDISP_LO16
20635796c8dcSSimon Schubert ENUMDOC
20645796c8dcSSimon Schubert   For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
20655796c8dcSSimon Schubert      with GPDISP_HI16 relocs.  The addend is ignored when writing the
20665796c8dcSSimon Schubert      relocations out, and is filled in with the file's GP value on
20675796c8dcSSimon Schubert      reading, for convenience.
20685796c8dcSSimon Schubert 
20695796c8dcSSimon Schubert ENUM
20705796c8dcSSimon Schubert   BFD_RELOC_ALPHA_GPDISP
20715796c8dcSSimon Schubert ENUMDOC
20725796c8dcSSimon Schubert   The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
20735796c8dcSSimon Schubert      relocation except that there is no accompanying GPDISP_LO16
20745796c8dcSSimon Schubert      relocation.
20755796c8dcSSimon Schubert 
20765796c8dcSSimon Schubert ENUM
20775796c8dcSSimon Schubert   BFD_RELOC_ALPHA_LITERAL
20785796c8dcSSimon Schubert ENUMX
20795796c8dcSSimon Schubert   BFD_RELOC_ALPHA_ELF_LITERAL
20805796c8dcSSimon Schubert ENUMX
20815796c8dcSSimon Schubert   BFD_RELOC_ALPHA_LITUSE
20825796c8dcSSimon Schubert ENUMDOC
20835796c8dcSSimon Schubert   The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
20845796c8dcSSimon Schubert      the assembler turns it into a LDQ instruction to load the address of
20855796c8dcSSimon Schubert      the symbol, and then fills in a register in the real instruction.
20865796c8dcSSimon Schubert 
20875796c8dcSSimon Schubert      The LITERAL reloc, at the LDQ instruction, refers to the .lita
20885796c8dcSSimon Schubert      section symbol.  The addend is ignored when writing, but is filled
20895796c8dcSSimon Schubert      in with the file's GP value on reading, for convenience, as with the
20905796c8dcSSimon Schubert      GPDISP_LO16 reloc.
20915796c8dcSSimon Schubert 
20925796c8dcSSimon Schubert      The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
20935796c8dcSSimon Schubert      It should refer to the symbol to be referenced, as with 16_GOTOFF,
20945796c8dcSSimon Schubert      but it generates output not based on the position within the .got
20955796c8dcSSimon Schubert      section, but relative to the GP value chosen for the file during the
20965796c8dcSSimon Schubert      final link stage.
20975796c8dcSSimon Schubert 
20985796c8dcSSimon Schubert      The LITUSE reloc, on the instruction using the loaded address, gives
20995796c8dcSSimon Schubert      information to the linker that it might be able to use to optimize
21005796c8dcSSimon Schubert      away some literal section references.  The symbol is ignored (read
21015796c8dcSSimon Schubert      as the absolute section symbol), and the "addend" indicates the type
21025796c8dcSSimon Schubert      of instruction using the register:
21035796c8dcSSimon Schubert               1 - "memory" fmt insn
21045796c8dcSSimon Schubert               2 - byte-manipulation (byte offset reg)
21055796c8dcSSimon Schubert               3 - jsr (target of branch)
21065796c8dcSSimon Schubert 
21075796c8dcSSimon Schubert ENUM
21085796c8dcSSimon Schubert   BFD_RELOC_ALPHA_HINT
21095796c8dcSSimon Schubert ENUMDOC
21105796c8dcSSimon Schubert   The HINT relocation indicates a value that should be filled into the
21115796c8dcSSimon Schubert      "hint" field of a jmp/jsr/ret instruction, for possible branch-
21125796c8dcSSimon Schubert      prediction logic which may be provided on some processors.
21135796c8dcSSimon Schubert 
21145796c8dcSSimon Schubert ENUM
21155796c8dcSSimon Schubert   BFD_RELOC_ALPHA_LINKAGE
21165796c8dcSSimon Schubert ENUMDOC
21175796c8dcSSimon Schubert   The LINKAGE relocation outputs a linkage pair in the object file,
21185796c8dcSSimon Schubert      which is filled by the linker.
21195796c8dcSSimon Schubert 
21205796c8dcSSimon Schubert ENUM
21215796c8dcSSimon Schubert   BFD_RELOC_ALPHA_CODEADDR
21225796c8dcSSimon Schubert ENUMDOC
21235796c8dcSSimon Schubert   The CODEADDR relocation outputs a STO_CA in the object file,
21245796c8dcSSimon Schubert      which is filled by the linker.
21255796c8dcSSimon Schubert 
21265796c8dcSSimon Schubert ENUM
21275796c8dcSSimon Schubert   BFD_RELOC_ALPHA_GPREL_HI16
21285796c8dcSSimon Schubert ENUMX
21295796c8dcSSimon Schubert   BFD_RELOC_ALPHA_GPREL_LO16
21305796c8dcSSimon Schubert ENUMDOC
21315796c8dcSSimon Schubert   The GPREL_HI/LO relocations together form a 32-bit offset from the
21325796c8dcSSimon Schubert      GP register.
21335796c8dcSSimon Schubert 
21345796c8dcSSimon Schubert ENUM
21355796c8dcSSimon Schubert   BFD_RELOC_ALPHA_BRSGP
21365796c8dcSSimon Schubert ENUMDOC
21375796c8dcSSimon Schubert   Like BFD_RELOC_23_PCREL_S2, except that the source and target must
21385796c8dcSSimon Schubert   share a common GP, and the target address is adjusted for
21395796c8dcSSimon Schubert   STO_ALPHA_STD_GPLOAD.
21405796c8dcSSimon Schubert 
21415796c8dcSSimon Schubert ENUM
21425796c8dcSSimon Schubert   BFD_RELOC_ALPHA_NOP
21435796c8dcSSimon Schubert ENUMDOC
21445796c8dcSSimon Schubert   The NOP relocation outputs a NOP if the longword displacement
21455796c8dcSSimon Schubert      between two procedure entry points is < 2^21.
21465796c8dcSSimon Schubert 
21475796c8dcSSimon Schubert ENUM
21485796c8dcSSimon Schubert   BFD_RELOC_ALPHA_BSR
21495796c8dcSSimon Schubert ENUMDOC
21505796c8dcSSimon Schubert   The BSR relocation outputs a BSR if the longword displacement
21515796c8dcSSimon Schubert      between two procedure entry points is < 2^21.
21525796c8dcSSimon Schubert 
21535796c8dcSSimon Schubert ENUM
21545796c8dcSSimon Schubert   BFD_RELOC_ALPHA_LDA
21555796c8dcSSimon Schubert ENUMDOC
21565796c8dcSSimon Schubert   The LDA relocation outputs a LDA if the longword displacement
21575796c8dcSSimon Schubert      between two procedure entry points is < 2^16.
21585796c8dcSSimon Schubert 
21595796c8dcSSimon Schubert ENUM
21605796c8dcSSimon Schubert   BFD_RELOC_ALPHA_BOH
21615796c8dcSSimon Schubert ENUMDOC
21625796c8dcSSimon Schubert   The BOH relocation outputs a BSR if the longword displacement
21635796c8dcSSimon Schubert      between two procedure entry points is < 2^21, or else a hint.
21645796c8dcSSimon Schubert 
21655796c8dcSSimon Schubert ENUM
21665796c8dcSSimon Schubert   BFD_RELOC_ALPHA_TLSGD
21675796c8dcSSimon Schubert ENUMX
21685796c8dcSSimon Schubert   BFD_RELOC_ALPHA_TLSLDM
21695796c8dcSSimon Schubert ENUMX
21705796c8dcSSimon Schubert   BFD_RELOC_ALPHA_DTPMOD64
21715796c8dcSSimon Schubert ENUMX
21725796c8dcSSimon Schubert   BFD_RELOC_ALPHA_GOTDTPREL16
21735796c8dcSSimon Schubert ENUMX
21745796c8dcSSimon Schubert   BFD_RELOC_ALPHA_DTPREL64
21755796c8dcSSimon Schubert ENUMX
21765796c8dcSSimon Schubert   BFD_RELOC_ALPHA_DTPREL_HI16
21775796c8dcSSimon Schubert ENUMX
21785796c8dcSSimon Schubert   BFD_RELOC_ALPHA_DTPREL_LO16
21795796c8dcSSimon Schubert ENUMX
21805796c8dcSSimon Schubert   BFD_RELOC_ALPHA_DTPREL16
21815796c8dcSSimon Schubert ENUMX
21825796c8dcSSimon Schubert   BFD_RELOC_ALPHA_GOTTPREL16
21835796c8dcSSimon Schubert ENUMX
21845796c8dcSSimon Schubert   BFD_RELOC_ALPHA_TPREL64
21855796c8dcSSimon Schubert ENUMX
21865796c8dcSSimon Schubert   BFD_RELOC_ALPHA_TPREL_HI16
21875796c8dcSSimon Schubert ENUMX
21885796c8dcSSimon Schubert   BFD_RELOC_ALPHA_TPREL_LO16
21895796c8dcSSimon Schubert ENUMX
21905796c8dcSSimon Schubert   BFD_RELOC_ALPHA_TPREL16
21915796c8dcSSimon Schubert ENUMDOC
21925796c8dcSSimon Schubert   Alpha thread-local storage relocations.
21935796c8dcSSimon Schubert 
21945796c8dcSSimon Schubert ENUM
21955796c8dcSSimon Schubert   BFD_RELOC_MIPS_JMP
2196a45ae5f8SJohn Marino ENUMX
2197a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_JMP
21985796c8dcSSimon Schubert ENUMDOC
2199a45ae5f8SJohn Marino   The MIPS jump instruction.
22005796c8dcSSimon Schubert 
22015796c8dcSSimon Schubert ENUM
22025796c8dcSSimon Schubert   BFD_RELOC_MIPS16_JMP
22035796c8dcSSimon Schubert ENUMDOC
22045796c8dcSSimon Schubert   The MIPS16 jump instruction.
22055796c8dcSSimon Schubert 
22065796c8dcSSimon Schubert ENUM
22075796c8dcSSimon Schubert   BFD_RELOC_MIPS16_GPREL
22085796c8dcSSimon Schubert ENUMDOC
22095796c8dcSSimon Schubert   MIPS16 GP relative reloc.
22105796c8dcSSimon Schubert 
22115796c8dcSSimon Schubert ENUM
22125796c8dcSSimon Schubert   BFD_RELOC_HI16
22135796c8dcSSimon Schubert ENUMDOC
22145796c8dcSSimon Schubert   High 16 bits of 32-bit value; simple reloc.
2215a45ae5f8SJohn Marino 
22165796c8dcSSimon Schubert ENUM
22175796c8dcSSimon Schubert   BFD_RELOC_HI16_S
22185796c8dcSSimon Schubert ENUMDOC
22195796c8dcSSimon Schubert   High 16 bits of 32-bit value but the low 16 bits will be sign
22205796c8dcSSimon Schubert      extended and added to form the final result.  If the low 16
22215796c8dcSSimon Schubert      bits form a negative number, we need to add one to the high value
22225796c8dcSSimon Schubert      to compensate for the borrow when the low bits are added.
2223a45ae5f8SJohn Marino 
22245796c8dcSSimon Schubert ENUM
22255796c8dcSSimon Schubert   BFD_RELOC_LO16
22265796c8dcSSimon Schubert ENUMDOC
22275796c8dcSSimon Schubert   Low 16 bits.
22285796c8dcSSimon Schubert 
22295796c8dcSSimon Schubert ENUM
22305796c8dcSSimon Schubert   BFD_RELOC_HI16_PCREL
22315796c8dcSSimon Schubert ENUMDOC
22325796c8dcSSimon Schubert   High 16 bits of 32-bit pc-relative value
22335796c8dcSSimon Schubert ENUM
22345796c8dcSSimon Schubert   BFD_RELOC_HI16_S_PCREL
22355796c8dcSSimon Schubert ENUMDOC
22365796c8dcSSimon Schubert   High 16 bits of 32-bit pc-relative value, adjusted
22375796c8dcSSimon Schubert ENUM
22385796c8dcSSimon Schubert   BFD_RELOC_LO16_PCREL
22395796c8dcSSimon Schubert ENUMDOC
22405796c8dcSSimon Schubert   Low 16 bits of pc-relative value
22415796c8dcSSimon Schubert 
22425796c8dcSSimon Schubert ENUM
22435796c8dcSSimon Schubert   BFD_RELOC_MIPS16_GOT16
22445796c8dcSSimon Schubert ENUMX
22455796c8dcSSimon Schubert   BFD_RELOC_MIPS16_CALL16
22465796c8dcSSimon Schubert ENUMDOC
22475796c8dcSSimon Schubert   Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
22485796c8dcSSimon Schubert      16-bit immediate fields
22495796c8dcSSimon Schubert ENUM
22505796c8dcSSimon Schubert   BFD_RELOC_MIPS16_HI16
22515796c8dcSSimon Schubert ENUMDOC
22525796c8dcSSimon Schubert   MIPS16 high 16 bits of 32-bit value.
22535796c8dcSSimon Schubert ENUM
22545796c8dcSSimon Schubert   BFD_RELOC_MIPS16_HI16_S
22555796c8dcSSimon Schubert ENUMDOC
22565796c8dcSSimon Schubert   MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
22575796c8dcSSimon Schubert      extended and added to form the final result.  If the low 16
22585796c8dcSSimon Schubert      bits form a negative number, we need to add one to the high value
22595796c8dcSSimon Schubert      to compensate for the borrow when the low bits are added.
22605796c8dcSSimon Schubert ENUM
22615796c8dcSSimon Schubert   BFD_RELOC_MIPS16_LO16
22625796c8dcSSimon Schubert ENUMDOC
22635796c8dcSSimon Schubert   MIPS16 low 16 bits.
22645796c8dcSSimon Schubert 
22655796c8dcSSimon Schubert ENUM
2266*ef5ccd6cSJohn Marino   BFD_RELOC_MIPS16_TLS_GD
2267*ef5ccd6cSJohn Marino ENUMX
2268*ef5ccd6cSJohn Marino   BFD_RELOC_MIPS16_TLS_LDM
2269*ef5ccd6cSJohn Marino ENUMX
2270*ef5ccd6cSJohn Marino   BFD_RELOC_MIPS16_TLS_DTPREL_HI16
2271*ef5ccd6cSJohn Marino ENUMX
2272*ef5ccd6cSJohn Marino   BFD_RELOC_MIPS16_TLS_DTPREL_LO16
2273*ef5ccd6cSJohn Marino ENUMX
2274*ef5ccd6cSJohn Marino   BFD_RELOC_MIPS16_TLS_GOTTPREL
2275*ef5ccd6cSJohn Marino ENUMX
2276*ef5ccd6cSJohn Marino   BFD_RELOC_MIPS16_TLS_TPREL_HI16
2277*ef5ccd6cSJohn Marino ENUMX
2278*ef5ccd6cSJohn Marino   BFD_RELOC_MIPS16_TLS_TPREL_LO16
2279*ef5ccd6cSJohn Marino ENUMDOC
2280*ef5ccd6cSJohn Marino   MIPS16 TLS relocations
2281*ef5ccd6cSJohn Marino 
2282*ef5ccd6cSJohn Marino ENUM
22835796c8dcSSimon Schubert   BFD_RELOC_MIPS_LITERAL
2284a45ae5f8SJohn Marino ENUMX
2285a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_LITERAL
22865796c8dcSSimon Schubert ENUMDOC
22875796c8dcSSimon Schubert   Relocation against a MIPS literal section.
22885796c8dcSSimon Schubert 
22895796c8dcSSimon Schubert ENUM
2290a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_7_PCREL_S1
2291a45ae5f8SJohn Marino ENUMX
2292a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_10_PCREL_S1
2293a45ae5f8SJohn Marino ENUMX
2294a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_16_PCREL_S1
2295a45ae5f8SJohn Marino ENUMDOC
2296a45ae5f8SJohn Marino   microMIPS PC-relative relocations.
2297a45ae5f8SJohn Marino 
2298a45ae5f8SJohn Marino ENUM
2299a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_GPREL16
2300a45ae5f8SJohn Marino ENUMX
2301a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_HI16
2302a45ae5f8SJohn Marino ENUMX
2303a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_HI16_S
2304a45ae5f8SJohn Marino ENUMX
2305a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_LO16
2306a45ae5f8SJohn Marino ENUMDOC
2307a45ae5f8SJohn Marino   microMIPS versions of generic BFD relocs.
2308a45ae5f8SJohn Marino 
2309a45ae5f8SJohn Marino ENUM
23105796c8dcSSimon Schubert   BFD_RELOC_MIPS_GOT16
23115796c8dcSSimon Schubert ENUMX
2312a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_GOT16
2313a45ae5f8SJohn Marino ENUMX
23145796c8dcSSimon Schubert   BFD_RELOC_MIPS_CALL16
23155796c8dcSSimon Schubert ENUMX
2316a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_CALL16
2317a45ae5f8SJohn Marino ENUMX
23185796c8dcSSimon Schubert   BFD_RELOC_MIPS_GOT_HI16
23195796c8dcSSimon Schubert ENUMX
2320a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_GOT_HI16
2321a45ae5f8SJohn Marino ENUMX
23225796c8dcSSimon Schubert   BFD_RELOC_MIPS_GOT_LO16
23235796c8dcSSimon Schubert ENUMX
2324a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_GOT_LO16
2325a45ae5f8SJohn Marino ENUMX
23265796c8dcSSimon Schubert   BFD_RELOC_MIPS_CALL_HI16
23275796c8dcSSimon Schubert ENUMX
2328a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_CALL_HI16
2329a45ae5f8SJohn Marino ENUMX
23305796c8dcSSimon Schubert   BFD_RELOC_MIPS_CALL_LO16
23315796c8dcSSimon Schubert ENUMX
2332a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_CALL_LO16
2333a45ae5f8SJohn Marino ENUMX
23345796c8dcSSimon Schubert   BFD_RELOC_MIPS_SUB
23355796c8dcSSimon Schubert ENUMX
2336a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_SUB
2337a45ae5f8SJohn Marino ENUMX
23385796c8dcSSimon Schubert   BFD_RELOC_MIPS_GOT_PAGE
23395796c8dcSSimon Schubert ENUMX
2340a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_GOT_PAGE
2341a45ae5f8SJohn Marino ENUMX
23425796c8dcSSimon Schubert   BFD_RELOC_MIPS_GOT_OFST
23435796c8dcSSimon Schubert ENUMX
2344a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_GOT_OFST
2345a45ae5f8SJohn Marino ENUMX
23465796c8dcSSimon Schubert   BFD_RELOC_MIPS_GOT_DISP
23475796c8dcSSimon Schubert ENUMX
2348a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_GOT_DISP
2349a45ae5f8SJohn Marino ENUMX
23505796c8dcSSimon Schubert   BFD_RELOC_MIPS_SHIFT5
23515796c8dcSSimon Schubert ENUMX
23525796c8dcSSimon Schubert   BFD_RELOC_MIPS_SHIFT6
23535796c8dcSSimon Schubert ENUMX
23545796c8dcSSimon Schubert   BFD_RELOC_MIPS_INSERT_A
23555796c8dcSSimon Schubert ENUMX
23565796c8dcSSimon Schubert   BFD_RELOC_MIPS_INSERT_B
23575796c8dcSSimon Schubert ENUMX
23585796c8dcSSimon Schubert   BFD_RELOC_MIPS_DELETE
23595796c8dcSSimon Schubert ENUMX
23605796c8dcSSimon Schubert   BFD_RELOC_MIPS_HIGHEST
23615796c8dcSSimon Schubert ENUMX
2362a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_HIGHEST
2363a45ae5f8SJohn Marino ENUMX
23645796c8dcSSimon Schubert   BFD_RELOC_MIPS_HIGHER
23655796c8dcSSimon Schubert ENUMX
2366a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_HIGHER
2367a45ae5f8SJohn Marino ENUMX
23685796c8dcSSimon Schubert   BFD_RELOC_MIPS_SCN_DISP
23695796c8dcSSimon Schubert ENUMX
2370a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_SCN_DISP
2371a45ae5f8SJohn Marino ENUMX
23725796c8dcSSimon Schubert   BFD_RELOC_MIPS_REL16
23735796c8dcSSimon Schubert ENUMX
23745796c8dcSSimon Schubert   BFD_RELOC_MIPS_RELGOT
23755796c8dcSSimon Schubert ENUMX
23765796c8dcSSimon Schubert   BFD_RELOC_MIPS_JALR
23775796c8dcSSimon Schubert ENUMX
2378a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_JALR
2379a45ae5f8SJohn Marino ENUMX
23805796c8dcSSimon Schubert   BFD_RELOC_MIPS_TLS_DTPMOD32
23815796c8dcSSimon Schubert ENUMX
23825796c8dcSSimon Schubert   BFD_RELOC_MIPS_TLS_DTPREL32
23835796c8dcSSimon Schubert ENUMX
23845796c8dcSSimon Schubert   BFD_RELOC_MIPS_TLS_DTPMOD64
23855796c8dcSSimon Schubert ENUMX
23865796c8dcSSimon Schubert   BFD_RELOC_MIPS_TLS_DTPREL64
23875796c8dcSSimon Schubert ENUMX
23885796c8dcSSimon Schubert   BFD_RELOC_MIPS_TLS_GD
23895796c8dcSSimon Schubert ENUMX
2390a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_TLS_GD
2391a45ae5f8SJohn Marino ENUMX
23925796c8dcSSimon Schubert   BFD_RELOC_MIPS_TLS_LDM
23935796c8dcSSimon Schubert ENUMX
2394a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_TLS_LDM
2395a45ae5f8SJohn Marino ENUMX
23965796c8dcSSimon Schubert   BFD_RELOC_MIPS_TLS_DTPREL_HI16
23975796c8dcSSimon Schubert ENUMX
2398a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16
2399a45ae5f8SJohn Marino ENUMX
24005796c8dcSSimon Schubert   BFD_RELOC_MIPS_TLS_DTPREL_LO16
24015796c8dcSSimon Schubert ENUMX
2402a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16
2403a45ae5f8SJohn Marino ENUMX
24045796c8dcSSimon Schubert   BFD_RELOC_MIPS_TLS_GOTTPREL
24055796c8dcSSimon Schubert ENUMX
2406a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_TLS_GOTTPREL
2407a45ae5f8SJohn Marino ENUMX
24085796c8dcSSimon Schubert   BFD_RELOC_MIPS_TLS_TPREL32
24095796c8dcSSimon Schubert ENUMX
24105796c8dcSSimon Schubert   BFD_RELOC_MIPS_TLS_TPREL64
24115796c8dcSSimon Schubert ENUMX
24125796c8dcSSimon Schubert   BFD_RELOC_MIPS_TLS_TPREL_HI16
24135796c8dcSSimon Schubert ENUMX
2414a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_TLS_TPREL_HI16
2415a45ae5f8SJohn Marino ENUMX
24165796c8dcSSimon Schubert   BFD_RELOC_MIPS_TLS_TPREL_LO16
2417a45ae5f8SJohn Marino ENUMX
2418a45ae5f8SJohn Marino   BFD_RELOC_MICROMIPS_TLS_TPREL_LO16
24195796c8dcSSimon Schubert ENUMDOC
24205796c8dcSSimon Schubert   MIPS ELF relocations.
24215796c8dcSSimon Schubert COMMENT
24225796c8dcSSimon Schubert 
24235796c8dcSSimon Schubert ENUM
24245796c8dcSSimon Schubert   BFD_RELOC_MIPS_COPY
24255796c8dcSSimon Schubert ENUMX
24265796c8dcSSimon Schubert   BFD_RELOC_MIPS_JUMP_SLOT
24275796c8dcSSimon Schubert ENUMDOC
24285796c8dcSSimon Schubert   MIPS ELF relocations (VxWorks and PLT extensions).
24295796c8dcSSimon Schubert COMMENT
24305796c8dcSSimon Schubert 
24315796c8dcSSimon Schubert ENUM
24325796c8dcSSimon Schubert   BFD_RELOC_MOXIE_10_PCREL
24335796c8dcSSimon Schubert ENUMDOC
24345796c8dcSSimon Schubert   Moxie ELF relocations.
24355796c8dcSSimon Schubert COMMENT
24365796c8dcSSimon Schubert 
24375796c8dcSSimon Schubert ENUM
24385796c8dcSSimon Schubert   BFD_RELOC_FRV_LABEL16
24395796c8dcSSimon Schubert ENUMX
24405796c8dcSSimon Schubert   BFD_RELOC_FRV_LABEL24
24415796c8dcSSimon Schubert ENUMX
24425796c8dcSSimon Schubert   BFD_RELOC_FRV_LO16
24435796c8dcSSimon Schubert ENUMX
24445796c8dcSSimon Schubert   BFD_RELOC_FRV_HI16
24455796c8dcSSimon Schubert ENUMX
24465796c8dcSSimon Schubert   BFD_RELOC_FRV_GPREL12
24475796c8dcSSimon Schubert ENUMX
24485796c8dcSSimon Schubert   BFD_RELOC_FRV_GPRELU12
24495796c8dcSSimon Schubert ENUMX
24505796c8dcSSimon Schubert   BFD_RELOC_FRV_GPREL32
24515796c8dcSSimon Schubert ENUMX
24525796c8dcSSimon Schubert   BFD_RELOC_FRV_GPRELHI
24535796c8dcSSimon Schubert ENUMX
24545796c8dcSSimon Schubert   BFD_RELOC_FRV_GPRELLO
24555796c8dcSSimon Schubert ENUMX
24565796c8dcSSimon Schubert   BFD_RELOC_FRV_GOT12
24575796c8dcSSimon Schubert ENUMX
24585796c8dcSSimon Schubert   BFD_RELOC_FRV_GOTHI
24595796c8dcSSimon Schubert ENUMX
24605796c8dcSSimon Schubert   BFD_RELOC_FRV_GOTLO
24615796c8dcSSimon Schubert ENUMX
24625796c8dcSSimon Schubert   BFD_RELOC_FRV_FUNCDESC
24635796c8dcSSimon Schubert ENUMX
24645796c8dcSSimon Schubert   BFD_RELOC_FRV_FUNCDESC_GOT12
24655796c8dcSSimon Schubert ENUMX
24665796c8dcSSimon Schubert   BFD_RELOC_FRV_FUNCDESC_GOTHI
24675796c8dcSSimon Schubert ENUMX
24685796c8dcSSimon Schubert   BFD_RELOC_FRV_FUNCDESC_GOTLO
24695796c8dcSSimon Schubert ENUMX
24705796c8dcSSimon Schubert   BFD_RELOC_FRV_FUNCDESC_VALUE
24715796c8dcSSimon Schubert ENUMX
24725796c8dcSSimon Schubert   BFD_RELOC_FRV_FUNCDESC_GOTOFF12
24735796c8dcSSimon Schubert ENUMX
24745796c8dcSSimon Schubert   BFD_RELOC_FRV_FUNCDESC_GOTOFFHI
24755796c8dcSSimon Schubert ENUMX
24765796c8dcSSimon Schubert   BFD_RELOC_FRV_FUNCDESC_GOTOFFLO
24775796c8dcSSimon Schubert ENUMX
24785796c8dcSSimon Schubert   BFD_RELOC_FRV_GOTOFF12
24795796c8dcSSimon Schubert ENUMX
24805796c8dcSSimon Schubert   BFD_RELOC_FRV_GOTOFFHI
24815796c8dcSSimon Schubert ENUMX
24825796c8dcSSimon Schubert   BFD_RELOC_FRV_GOTOFFLO
24835796c8dcSSimon Schubert ENUMX
24845796c8dcSSimon Schubert   BFD_RELOC_FRV_GETTLSOFF
24855796c8dcSSimon Schubert ENUMX
24865796c8dcSSimon Schubert   BFD_RELOC_FRV_TLSDESC_VALUE
24875796c8dcSSimon Schubert ENUMX
24885796c8dcSSimon Schubert   BFD_RELOC_FRV_GOTTLSDESC12
24895796c8dcSSimon Schubert ENUMX
24905796c8dcSSimon Schubert   BFD_RELOC_FRV_GOTTLSDESCHI
24915796c8dcSSimon Schubert ENUMX
24925796c8dcSSimon Schubert   BFD_RELOC_FRV_GOTTLSDESCLO
24935796c8dcSSimon Schubert ENUMX
24945796c8dcSSimon Schubert   BFD_RELOC_FRV_TLSMOFF12
24955796c8dcSSimon Schubert ENUMX
24965796c8dcSSimon Schubert   BFD_RELOC_FRV_TLSMOFFHI
24975796c8dcSSimon Schubert ENUMX
24985796c8dcSSimon Schubert   BFD_RELOC_FRV_TLSMOFFLO
24995796c8dcSSimon Schubert ENUMX
25005796c8dcSSimon Schubert   BFD_RELOC_FRV_GOTTLSOFF12
25015796c8dcSSimon Schubert ENUMX
25025796c8dcSSimon Schubert   BFD_RELOC_FRV_GOTTLSOFFHI
25035796c8dcSSimon Schubert ENUMX
25045796c8dcSSimon Schubert   BFD_RELOC_FRV_GOTTLSOFFLO
25055796c8dcSSimon Schubert ENUMX
25065796c8dcSSimon Schubert   BFD_RELOC_FRV_TLSOFF
25075796c8dcSSimon Schubert ENUMX
25085796c8dcSSimon Schubert   BFD_RELOC_FRV_TLSDESC_RELAX
25095796c8dcSSimon Schubert ENUMX
25105796c8dcSSimon Schubert   BFD_RELOC_FRV_GETTLSOFF_RELAX
25115796c8dcSSimon Schubert ENUMX
25125796c8dcSSimon Schubert   BFD_RELOC_FRV_TLSOFF_RELAX
25135796c8dcSSimon Schubert ENUMX
25145796c8dcSSimon Schubert   BFD_RELOC_FRV_TLSMOFF
25155796c8dcSSimon Schubert ENUMDOC
25165796c8dcSSimon Schubert   Fujitsu Frv Relocations.
25175796c8dcSSimon Schubert COMMENT
25185796c8dcSSimon Schubert 
25195796c8dcSSimon Schubert ENUM
25205796c8dcSSimon Schubert   BFD_RELOC_MN10300_GOTOFF24
25215796c8dcSSimon Schubert ENUMDOC
25225796c8dcSSimon Schubert   This is a 24bit GOT-relative reloc for the mn10300.
25235796c8dcSSimon Schubert ENUM
25245796c8dcSSimon Schubert   BFD_RELOC_MN10300_GOT32
25255796c8dcSSimon Schubert ENUMDOC
25265796c8dcSSimon Schubert   This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
25275796c8dcSSimon Schubert   in the instruction.
25285796c8dcSSimon Schubert ENUM
25295796c8dcSSimon Schubert   BFD_RELOC_MN10300_GOT24
25305796c8dcSSimon Schubert ENUMDOC
25315796c8dcSSimon Schubert   This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
25325796c8dcSSimon Schubert   in the instruction.
25335796c8dcSSimon Schubert ENUM
25345796c8dcSSimon Schubert   BFD_RELOC_MN10300_GOT16
25355796c8dcSSimon Schubert ENUMDOC
25365796c8dcSSimon Schubert   This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
25375796c8dcSSimon Schubert   in the instruction.
25385796c8dcSSimon Schubert ENUM
25395796c8dcSSimon Schubert   BFD_RELOC_MN10300_COPY
25405796c8dcSSimon Schubert ENUMDOC
25415796c8dcSSimon Schubert   Copy symbol at runtime.
25425796c8dcSSimon Schubert ENUM
25435796c8dcSSimon Schubert   BFD_RELOC_MN10300_GLOB_DAT
25445796c8dcSSimon Schubert ENUMDOC
25455796c8dcSSimon Schubert   Create GOT entry.
25465796c8dcSSimon Schubert ENUM
25475796c8dcSSimon Schubert   BFD_RELOC_MN10300_JMP_SLOT
25485796c8dcSSimon Schubert ENUMDOC
25495796c8dcSSimon Schubert   Create PLT entry.
25505796c8dcSSimon Schubert ENUM
25515796c8dcSSimon Schubert   BFD_RELOC_MN10300_RELATIVE
25525796c8dcSSimon Schubert ENUMDOC
25535796c8dcSSimon Schubert   Adjust by program base.
25545796c8dcSSimon Schubert ENUM
25555796c8dcSSimon Schubert   BFD_RELOC_MN10300_SYM_DIFF
25565796c8dcSSimon Schubert ENUMDOC
25575796c8dcSSimon Schubert   Together with another reloc targeted at the same location,
25585796c8dcSSimon Schubert   allows for a value that is the difference of two symbols
25595796c8dcSSimon Schubert   in the same section.
25605796c8dcSSimon Schubert ENUM
25615796c8dcSSimon Schubert   BFD_RELOC_MN10300_ALIGN
25625796c8dcSSimon Schubert ENUMDOC
25635796c8dcSSimon Schubert   The addend of this reloc is an alignment power that must
25645796c8dcSSimon Schubert   be honoured at the offset's location, regardless of linker
25655796c8dcSSimon Schubert   relaxation.
2566*ef5ccd6cSJohn Marino ENUM
2567*ef5ccd6cSJohn Marino   BFD_RELOC_MN10300_TLS_GD
2568*ef5ccd6cSJohn Marino ENUMX
2569*ef5ccd6cSJohn Marino   BFD_RELOC_MN10300_TLS_LD
2570*ef5ccd6cSJohn Marino ENUMX
2571*ef5ccd6cSJohn Marino   BFD_RELOC_MN10300_TLS_LDO
2572*ef5ccd6cSJohn Marino ENUMX
2573*ef5ccd6cSJohn Marino   BFD_RELOC_MN10300_TLS_GOTIE
2574*ef5ccd6cSJohn Marino ENUMX
2575*ef5ccd6cSJohn Marino   BFD_RELOC_MN10300_TLS_IE
2576*ef5ccd6cSJohn Marino ENUMX
2577*ef5ccd6cSJohn Marino   BFD_RELOC_MN10300_TLS_LE
2578*ef5ccd6cSJohn Marino ENUMX
2579*ef5ccd6cSJohn Marino   BFD_RELOC_MN10300_TLS_DTPMOD
2580*ef5ccd6cSJohn Marino ENUMX
2581*ef5ccd6cSJohn Marino   BFD_RELOC_MN10300_TLS_DTPOFF
2582*ef5ccd6cSJohn Marino ENUMX
2583*ef5ccd6cSJohn Marino   BFD_RELOC_MN10300_TLS_TPOFF
2584*ef5ccd6cSJohn Marino ENUMDOC
2585*ef5ccd6cSJohn Marino   Various TLS-related relocations.
2586*ef5ccd6cSJohn Marino ENUM
2587*ef5ccd6cSJohn Marino   BFD_RELOC_MN10300_32_PCREL
2588*ef5ccd6cSJohn Marino ENUMDOC
2589*ef5ccd6cSJohn Marino   This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
2590*ef5ccd6cSJohn Marino   instruction.
2591*ef5ccd6cSJohn Marino ENUM
2592*ef5ccd6cSJohn Marino   BFD_RELOC_MN10300_16_PCREL
2593*ef5ccd6cSJohn Marino ENUMDOC
2594*ef5ccd6cSJohn Marino   This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
2595*ef5ccd6cSJohn Marino   instruction.
25965796c8dcSSimon Schubert COMMENT
25975796c8dcSSimon Schubert 
25985796c8dcSSimon Schubert ENUM
25995796c8dcSSimon Schubert   BFD_RELOC_386_GOT32
26005796c8dcSSimon Schubert ENUMX
26015796c8dcSSimon Schubert   BFD_RELOC_386_PLT32
26025796c8dcSSimon Schubert ENUMX
26035796c8dcSSimon Schubert   BFD_RELOC_386_COPY
26045796c8dcSSimon Schubert ENUMX
26055796c8dcSSimon Schubert   BFD_RELOC_386_GLOB_DAT
26065796c8dcSSimon Schubert ENUMX
26075796c8dcSSimon Schubert   BFD_RELOC_386_JUMP_SLOT
26085796c8dcSSimon Schubert ENUMX
26095796c8dcSSimon Schubert   BFD_RELOC_386_RELATIVE
26105796c8dcSSimon Schubert ENUMX
26115796c8dcSSimon Schubert   BFD_RELOC_386_GOTOFF
26125796c8dcSSimon Schubert ENUMX
26135796c8dcSSimon Schubert   BFD_RELOC_386_GOTPC
26145796c8dcSSimon Schubert ENUMX
26155796c8dcSSimon Schubert   BFD_RELOC_386_TLS_TPOFF
26165796c8dcSSimon Schubert ENUMX
26175796c8dcSSimon Schubert   BFD_RELOC_386_TLS_IE
26185796c8dcSSimon Schubert ENUMX
26195796c8dcSSimon Schubert   BFD_RELOC_386_TLS_GOTIE
26205796c8dcSSimon Schubert ENUMX
26215796c8dcSSimon Schubert   BFD_RELOC_386_TLS_LE
26225796c8dcSSimon Schubert ENUMX
26235796c8dcSSimon Schubert   BFD_RELOC_386_TLS_GD
26245796c8dcSSimon Schubert ENUMX
26255796c8dcSSimon Schubert   BFD_RELOC_386_TLS_LDM
26265796c8dcSSimon Schubert ENUMX
26275796c8dcSSimon Schubert   BFD_RELOC_386_TLS_LDO_32
26285796c8dcSSimon Schubert ENUMX
26295796c8dcSSimon Schubert   BFD_RELOC_386_TLS_IE_32
26305796c8dcSSimon Schubert ENUMX
26315796c8dcSSimon Schubert   BFD_RELOC_386_TLS_LE_32
26325796c8dcSSimon Schubert ENUMX
26335796c8dcSSimon Schubert   BFD_RELOC_386_TLS_DTPMOD32
26345796c8dcSSimon Schubert ENUMX
26355796c8dcSSimon Schubert   BFD_RELOC_386_TLS_DTPOFF32
26365796c8dcSSimon Schubert ENUMX
26375796c8dcSSimon Schubert   BFD_RELOC_386_TLS_TPOFF32
26385796c8dcSSimon Schubert ENUMX
26395796c8dcSSimon Schubert   BFD_RELOC_386_TLS_GOTDESC
26405796c8dcSSimon Schubert ENUMX
26415796c8dcSSimon Schubert   BFD_RELOC_386_TLS_DESC_CALL
26425796c8dcSSimon Schubert ENUMX
26435796c8dcSSimon Schubert   BFD_RELOC_386_TLS_DESC
26445796c8dcSSimon Schubert ENUMX
26455796c8dcSSimon Schubert   BFD_RELOC_386_IRELATIVE
26465796c8dcSSimon Schubert ENUMDOC
26475796c8dcSSimon Schubert   i386/elf relocations
26485796c8dcSSimon Schubert 
26495796c8dcSSimon Schubert ENUM
26505796c8dcSSimon Schubert   BFD_RELOC_X86_64_GOT32
26515796c8dcSSimon Schubert ENUMX
26525796c8dcSSimon Schubert   BFD_RELOC_X86_64_PLT32
26535796c8dcSSimon Schubert ENUMX
26545796c8dcSSimon Schubert   BFD_RELOC_X86_64_COPY
26555796c8dcSSimon Schubert ENUMX
26565796c8dcSSimon Schubert   BFD_RELOC_X86_64_GLOB_DAT
26575796c8dcSSimon Schubert ENUMX
26585796c8dcSSimon Schubert   BFD_RELOC_X86_64_JUMP_SLOT
26595796c8dcSSimon Schubert ENUMX
26605796c8dcSSimon Schubert   BFD_RELOC_X86_64_RELATIVE
26615796c8dcSSimon Schubert ENUMX
26625796c8dcSSimon Schubert   BFD_RELOC_X86_64_GOTPCREL
26635796c8dcSSimon Schubert ENUMX
26645796c8dcSSimon Schubert   BFD_RELOC_X86_64_32S
26655796c8dcSSimon Schubert ENUMX
26665796c8dcSSimon Schubert   BFD_RELOC_X86_64_DTPMOD64
26675796c8dcSSimon Schubert ENUMX
26685796c8dcSSimon Schubert   BFD_RELOC_X86_64_DTPOFF64
26695796c8dcSSimon Schubert ENUMX
26705796c8dcSSimon Schubert   BFD_RELOC_X86_64_TPOFF64
26715796c8dcSSimon Schubert ENUMX
26725796c8dcSSimon Schubert   BFD_RELOC_X86_64_TLSGD
26735796c8dcSSimon Schubert ENUMX
26745796c8dcSSimon Schubert   BFD_RELOC_X86_64_TLSLD
26755796c8dcSSimon Schubert ENUMX
26765796c8dcSSimon Schubert   BFD_RELOC_X86_64_DTPOFF32
26775796c8dcSSimon Schubert ENUMX
26785796c8dcSSimon Schubert   BFD_RELOC_X86_64_GOTTPOFF
26795796c8dcSSimon Schubert ENUMX
26805796c8dcSSimon Schubert   BFD_RELOC_X86_64_TPOFF32
26815796c8dcSSimon Schubert ENUMX
26825796c8dcSSimon Schubert   BFD_RELOC_X86_64_GOTOFF64
26835796c8dcSSimon Schubert ENUMX
26845796c8dcSSimon Schubert   BFD_RELOC_X86_64_GOTPC32
26855796c8dcSSimon Schubert ENUMX
26865796c8dcSSimon Schubert   BFD_RELOC_X86_64_GOT64
26875796c8dcSSimon Schubert ENUMX
26885796c8dcSSimon Schubert   BFD_RELOC_X86_64_GOTPCREL64
26895796c8dcSSimon Schubert ENUMX
26905796c8dcSSimon Schubert   BFD_RELOC_X86_64_GOTPC64
26915796c8dcSSimon Schubert ENUMX
26925796c8dcSSimon Schubert   BFD_RELOC_X86_64_GOTPLT64
26935796c8dcSSimon Schubert ENUMX
26945796c8dcSSimon Schubert   BFD_RELOC_X86_64_PLTOFF64
26955796c8dcSSimon Schubert ENUMX
26965796c8dcSSimon Schubert   BFD_RELOC_X86_64_GOTPC32_TLSDESC
26975796c8dcSSimon Schubert ENUMX
26985796c8dcSSimon Schubert   BFD_RELOC_X86_64_TLSDESC_CALL
26995796c8dcSSimon Schubert ENUMX
27005796c8dcSSimon Schubert   BFD_RELOC_X86_64_TLSDESC
27015796c8dcSSimon Schubert ENUMX
27025796c8dcSSimon Schubert   BFD_RELOC_X86_64_IRELATIVE
27035796c8dcSSimon Schubert ENUMDOC
27045796c8dcSSimon Schubert   x86-64/elf relocations
27055796c8dcSSimon Schubert 
27065796c8dcSSimon Schubert ENUM
27075796c8dcSSimon Schubert   BFD_RELOC_NS32K_IMM_8
27085796c8dcSSimon Schubert ENUMX
27095796c8dcSSimon Schubert   BFD_RELOC_NS32K_IMM_16
27105796c8dcSSimon Schubert ENUMX
27115796c8dcSSimon Schubert   BFD_RELOC_NS32K_IMM_32
27125796c8dcSSimon Schubert ENUMX
27135796c8dcSSimon Schubert   BFD_RELOC_NS32K_IMM_8_PCREL
27145796c8dcSSimon Schubert ENUMX
27155796c8dcSSimon Schubert   BFD_RELOC_NS32K_IMM_16_PCREL
27165796c8dcSSimon Schubert ENUMX
27175796c8dcSSimon Schubert   BFD_RELOC_NS32K_IMM_32_PCREL
27185796c8dcSSimon Schubert ENUMX
27195796c8dcSSimon Schubert   BFD_RELOC_NS32K_DISP_8
27205796c8dcSSimon Schubert ENUMX
27215796c8dcSSimon Schubert   BFD_RELOC_NS32K_DISP_16
27225796c8dcSSimon Schubert ENUMX
27235796c8dcSSimon Schubert   BFD_RELOC_NS32K_DISP_32
27245796c8dcSSimon Schubert ENUMX
27255796c8dcSSimon Schubert   BFD_RELOC_NS32K_DISP_8_PCREL
27265796c8dcSSimon Schubert ENUMX
27275796c8dcSSimon Schubert   BFD_RELOC_NS32K_DISP_16_PCREL
27285796c8dcSSimon Schubert ENUMX
27295796c8dcSSimon Schubert   BFD_RELOC_NS32K_DISP_32_PCREL
27305796c8dcSSimon Schubert ENUMDOC
27315796c8dcSSimon Schubert   ns32k relocations
27325796c8dcSSimon Schubert 
27335796c8dcSSimon Schubert ENUM
27345796c8dcSSimon Schubert   BFD_RELOC_PDP11_DISP_8_PCREL
27355796c8dcSSimon Schubert ENUMX
27365796c8dcSSimon Schubert   BFD_RELOC_PDP11_DISP_6_PCREL
27375796c8dcSSimon Schubert ENUMDOC
27385796c8dcSSimon Schubert   PDP11 relocations
27395796c8dcSSimon Schubert 
27405796c8dcSSimon Schubert ENUM
27415796c8dcSSimon Schubert   BFD_RELOC_PJ_CODE_HI16
27425796c8dcSSimon Schubert ENUMX
27435796c8dcSSimon Schubert   BFD_RELOC_PJ_CODE_LO16
27445796c8dcSSimon Schubert ENUMX
27455796c8dcSSimon Schubert   BFD_RELOC_PJ_CODE_DIR16
27465796c8dcSSimon Schubert ENUMX
27475796c8dcSSimon Schubert   BFD_RELOC_PJ_CODE_DIR32
27485796c8dcSSimon Schubert ENUMX
27495796c8dcSSimon Schubert   BFD_RELOC_PJ_CODE_REL16
27505796c8dcSSimon Schubert ENUMX
27515796c8dcSSimon Schubert   BFD_RELOC_PJ_CODE_REL32
27525796c8dcSSimon Schubert ENUMDOC
27535796c8dcSSimon Schubert   Picojava relocs.  Not all of these appear in object files.
27545796c8dcSSimon Schubert 
27555796c8dcSSimon Schubert ENUM
27565796c8dcSSimon Schubert   BFD_RELOC_PPC_B26
27575796c8dcSSimon Schubert ENUMX
27585796c8dcSSimon Schubert   BFD_RELOC_PPC_BA26
27595796c8dcSSimon Schubert ENUMX
27605796c8dcSSimon Schubert   BFD_RELOC_PPC_TOC16
27615796c8dcSSimon Schubert ENUMX
27625796c8dcSSimon Schubert   BFD_RELOC_PPC_B16
27635796c8dcSSimon Schubert ENUMX
27645796c8dcSSimon Schubert   BFD_RELOC_PPC_B16_BRTAKEN
27655796c8dcSSimon Schubert ENUMX
27665796c8dcSSimon Schubert   BFD_RELOC_PPC_B16_BRNTAKEN
27675796c8dcSSimon Schubert ENUMX
27685796c8dcSSimon Schubert   BFD_RELOC_PPC_BA16
27695796c8dcSSimon Schubert ENUMX
27705796c8dcSSimon Schubert   BFD_RELOC_PPC_BA16_BRTAKEN
27715796c8dcSSimon Schubert ENUMX
27725796c8dcSSimon Schubert   BFD_RELOC_PPC_BA16_BRNTAKEN
27735796c8dcSSimon Schubert ENUMX
27745796c8dcSSimon Schubert   BFD_RELOC_PPC_COPY
27755796c8dcSSimon Schubert ENUMX
27765796c8dcSSimon Schubert   BFD_RELOC_PPC_GLOB_DAT
27775796c8dcSSimon Schubert ENUMX
27785796c8dcSSimon Schubert   BFD_RELOC_PPC_JMP_SLOT
27795796c8dcSSimon Schubert ENUMX
27805796c8dcSSimon Schubert   BFD_RELOC_PPC_RELATIVE
27815796c8dcSSimon Schubert ENUMX
27825796c8dcSSimon Schubert   BFD_RELOC_PPC_LOCAL24PC
27835796c8dcSSimon Schubert ENUMX
27845796c8dcSSimon Schubert   BFD_RELOC_PPC_EMB_NADDR32
27855796c8dcSSimon Schubert ENUMX
27865796c8dcSSimon Schubert   BFD_RELOC_PPC_EMB_NADDR16
27875796c8dcSSimon Schubert ENUMX
27885796c8dcSSimon Schubert   BFD_RELOC_PPC_EMB_NADDR16_LO
27895796c8dcSSimon Schubert ENUMX
27905796c8dcSSimon Schubert   BFD_RELOC_PPC_EMB_NADDR16_HI
27915796c8dcSSimon Schubert ENUMX
27925796c8dcSSimon Schubert   BFD_RELOC_PPC_EMB_NADDR16_HA
27935796c8dcSSimon Schubert ENUMX
27945796c8dcSSimon Schubert   BFD_RELOC_PPC_EMB_SDAI16
27955796c8dcSSimon Schubert ENUMX
27965796c8dcSSimon Schubert   BFD_RELOC_PPC_EMB_SDA2I16
27975796c8dcSSimon Schubert ENUMX
27985796c8dcSSimon Schubert   BFD_RELOC_PPC_EMB_SDA2REL
27995796c8dcSSimon Schubert ENUMX
28005796c8dcSSimon Schubert   BFD_RELOC_PPC_EMB_SDA21
28015796c8dcSSimon Schubert ENUMX
28025796c8dcSSimon Schubert   BFD_RELOC_PPC_EMB_MRKREF
28035796c8dcSSimon Schubert ENUMX
28045796c8dcSSimon Schubert   BFD_RELOC_PPC_EMB_RELSEC16
28055796c8dcSSimon Schubert ENUMX
28065796c8dcSSimon Schubert   BFD_RELOC_PPC_EMB_RELST_LO
28075796c8dcSSimon Schubert ENUMX
28085796c8dcSSimon Schubert   BFD_RELOC_PPC_EMB_RELST_HI
28095796c8dcSSimon Schubert ENUMX
28105796c8dcSSimon Schubert   BFD_RELOC_PPC_EMB_RELST_HA
28115796c8dcSSimon Schubert ENUMX
28125796c8dcSSimon Schubert   BFD_RELOC_PPC_EMB_BIT_FLD
28135796c8dcSSimon Schubert ENUMX
28145796c8dcSSimon Schubert   BFD_RELOC_PPC_EMB_RELSDA
28155796c8dcSSimon Schubert ENUMX
2816*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_REL8
2817*ef5ccd6cSJohn Marino ENUMX
2818*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_REL15
2819*ef5ccd6cSJohn Marino ENUMX
2820*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_REL24
2821*ef5ccd6cSJohn Marino ENUMX
2822*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_LO16A
2823*ef5ccd6cSJohn Marino ENUMX
2824*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_LO16D
2825*ef5ccd6cSJohn Marino ENUMX
2826*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_HI16A
2827*ef5ccd6cSJohn Marino ENUMX
2828*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_HI16D
2829*ef5ccd6cSJohn Marino ENUMX
2830*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_HA16A
2831*ef5ccd6cSJohn Marino ENUMX
2832*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_HA16D
2833*ef5ccd6cSJohn Marino ENUMX
2834*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_SDA21
2835*ef5ccd6cSJohn Marino ENUMX
2836*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_SDA21_LO
2837*ef5ccd6cSJohn Marino ENUMX
2838*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_SDAREL_LO16A
2839*ef5ccd6cSJohn Marino ENUMX
2840*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_SDAREL_LO16D
2841*ef5ccd6cSJohn Marino ENUMX
2842*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_SDAREL_HI16A
2843*ef5ccd6cSJohn Marino ENUMX
2844*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_SDAREL_HI16D
2845*ef5ccd6cSJohn Marino ENUMX
2846*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_SDAREL_HA16A
2847*ef5ccd6cSJohn Marino ENUMX
2848*ef5ccd6cSJohn Marino   BFD_RELOC_PPC_VLE_SDAREL_HA16D
2849*ef5ccd6cSJohn Marino ENUMX
28505796c8dcSSimon Schubert   BFD_RELOC_PPC64_HIGHER
28515796c8dcSSimon Schubert ENUMX
28525796c8dcSSimon Schubert   BFD_RELOC_PPC64_HIGHER_S
28535796c8dcSSimon Schubert ENUMX
28545796c8dcSSimon Schubert   BFD_RELOC_PPC64_HIGHEST
28555796c8dcSSimon Schubert ENUMX
28565796c8dcSSimon Schubert   BFD_RELOC_PPC64_HIGHEST_S
28575796c8dcSSimon Schubert ENUMX
28585796c8dcSSimon Schubert   BFD_RELOC_PPC64_TOC16_LO
28595796c8dcSSimon Schubert ENUMX
28605796c8dcSSimon Schubert   BFD_RELOC_PPC64_TOC16_HI
28615796c8dcSSimon Schubert ENUMX
28625796c8dcSSimon Schubert   BFD_RELOC_PPC64_TOC16_HA
28635796c8dcSSimon Schubert ENUMX
28645796c8dcSSimon Schubert   BFD_RELOC_PPC64_TOC
28655796c8dcSSimon Schubert ENUMX
28665796c8dcSSimon Schubert   BFD_RELOC_PPC64_PLTGOT16
28675796c8dcSSimon Schubert ENUMX
28685796c8dcSSimon Schubert   BFD_RELOC_PPC64_PLTGOT16_LO
28695796c8dcSSimon Schubert ENUMX
28705796c8dcSSimon Schubert   BFD_RELOC_PPC64_PLTGOT16_HI
28715796c8dcSSimon Schubert ENUMX
28725796c8dcSSimon Schubert   BFD_RELOC_PPC64_PLTGOT16_HA
28735796c8dcSSimon Schubert ENUMX
28745796c8dcSSimon Schubert   BFD_RELOC_PPC64_ADDR16_DS
28755796c8dcSSimon Schubert ENUMX
28765796c8dcSSimon Schubert   BFD_RELOC_PPC64_ADDR16_LO_DS
28775796c8dcSSimon Schubert ENUMX
28785796c8dcSSimon Schubert   BFD_RELOC_PPC64_GOT16_DS
28795796c8dcSSimon Schubert ENUMX
28805796c8dcSSimon Schubert   BFD_RELOC_PPC64_GOT16_LO_DS
28815796c8dcSSimon Schubert ENUMX
28825796c8dcSSimon Schubert   BFD_RELOC_PPC64_PLT16_LO_DS
28835796c8dcSSimon Schubert ENUMX
28845796c8dcSSimon Schubert   BFD_RELOC_PPC64_SECTOFF_DS
28855796c8dcSSimon Schubert ENUMX
28865796c8dcSSimon Schubert   BFD_RELOC_PPC64_SECTOFF_LO_DS
28875796c8dcSSimon Schubert ENUMX
28885796c8dcSSimon Schubert   BFD_RELOC_PPC64_TOC16_DS
28895796c8dcSSimon Schubert ENUMX
28905796c8dcSSimon Schubert   BFD_RELOC_PPC64_TOC16_LO_DS
28915796c8dcSSimon Schubert ENUMX
28925796c8dcSSimon Schubert   BFD_RELOC_PPC64_PLTGOT16_DS
28935796c8dcSSimon Schubert ENUMX
28945796c8dcSSimon Schubert   BFD_RELOC_PPC64_PLTGOT16_LO_DS
28955796c8dcSSimon Schubert ENUMDOC
28965796c8dcSSimon Schubert   Power(rs6000) and PowerPC relocations.
28975796c8dcSSimon Schubert 
28985796c8dcSSimon Schubert ENUM
28995796c8dcSSimon Schubert   BFD_RELOC_PPC_TLS
29005796c8dcSSimon Schubert ENUMX
29015796c8dcSSimon Schubert   BFD_RELOC_PPC_TLSGD
29025796c8dcSSimon Schubert ENUMX
29035796c8dcSSimon Schubert   BFD_RELOC_PPC_TLSLD
29045796c8dcSSimon Schubert ENUMX
29055796c8dcSSimon Schubert   BFD_RELOC_PPC_DTPMOD
29065796c8dcSSimon Schubert ENUMX
29075796c8dcSSimon Schubert   BFD_RELOC_PPC_TPREL16
29085796c8dcSSimon Schubert ENUMX
29095796c8dcSSimon Schubert   BFD_RELOC_PPC_TPREL16_LO
29105796c8dcSSimon Schubert ENUMX
29115796c8dcSSimon Schubert   BFD_RELOC_PPC_TPREL16_HI
29125796c8dcSSimon Schubert ENUMX
29135796c8dcSSimon Schubert   BFD_RELOC_PPC_TPREL16_HA
29145796c8dcSSimon Schubert ENUMX
29155796c8dcSSimon Schubert   BFD_RELOC_PPC_TPREL
29165796c8dcSSimon Schubert ENUMX
29175796c8dcSSimon Schubert   BFD_RELOC_PPC_DTPREL16
29185796c8dcSSimon Schubert ENUMX
29195796c8dcSSimon Schubert   BFD_RELOC_PPC_DTPREL16_LO
29205796c8dcSSimon Schubert ENUMX
29215796c8dcSSimon Schubert   BFD_RELOC_PPC_DTPREL16_HI
29225796c8dcSSimon Schubert ENUMX
29235796c8dcSSimon Schubert   BFD_RELOC_PPC_DTPREL16_HA
29245796c8dcSSimon Schubert ENUMX
29255796c8dcSSimon Schubert   BFD_RELOC_PPC_DTPREL
29265796c8dcSSimon Schubert ENUMX
29275796c8dcSSimon Schubert   BFD_RELOC_PPC_GOT_TLSGD16
29285796c8dcSSimon Schubert ENUMX
29295796c8dcSSimon Schubert   BFD_RELOC_PPC_GOT_TLSGD16_LO
29305796c8dcSSimon Schubert ENUMX
29315796c8dcSSimon Schubert   BFD_RELOC_PPC_GOT_TLSGD16_HI
29325796c8dcSSimon Schubert ENUMX
29335796c8dcSSimon Schubert   BFD_RELOC_PPC_GOT_TLSGD16_HA
29345796c8dcSSimon Schubert ENUMX
29355796c8dcSSimon Schubert   BFD_RELOC_PPC_GOT_TLSLD16
29365796c8dcSSimon Schubert ENUMX
29375796c8dcSSimon Schubert   BFD_RELOC_PPC_GOT_TLSLD16_LO
29385796c8dcSSimon Schubert ENUMX
29395796c8dcSSimon Schubert   BFD_RELOC_PPC_GOT_TLSLD16_HI
29405796c8dcSSimon Schubert ENUMX
29415796c8dcSSimon Schubert   BFD_RELOC_PPC_GOT_TLSLD16_HA
29425796c8dcSSimon Schubert ENUMX
29435796c8dcSSimon Schubert   BFD_RELOC_PPC_GOT_TPREL16
29445796c8dcSSimon Schubert ENUMX
29455796c8dcSSimon Schubert   BFD_RELOC_PPC_GOT_TPREL16_LO
29465796c8dcSSimon Schubert ENUMX
29475796c8dcSSimon Schubert   BFD_RELOC_PPC_GOT_TPREL16_HI
29485796c8dcSSimon Schubert ENUMX
29495796c8dcSSimon Schubert   BFD_RELOC_PPC_GOT_TPREL16_HA
29505796c8dcSSimon Schubert ENUMX
29515796c8dcSSimon Schubert   BFD_RELOC_PPC_GOT_DTPREL16
29525796c8dcSSimon Schubert ENUMX
29535796c8dcSSimon Schubert   BFD_RELOC_PPC_GOT_DTPREL16_LO
29545796c8dcSSimon Schubert ENUMX
29555796c8dcSSimon Schubert   BFD_RELOC_PPC_GOT_DTPREL16_HI
29565796c8dcSSimon Schubert ENUMX
29575796c8dcSSimon Schubert   BFD_RELOC_PPC_GOT_DTPREL16_HA
29585796c8dcSSimon Schubert ENUMX
29595796c8dcSSimon Schubert   BFD_RELOC_PPC64_TPREL16_DS
29605796c8dcSSimon Schubert ENUMX
29615796c8dcSSimon Schubert   BFD_RELOC_PPC64_TPREL16_LO_DS
29625796c8dcSSimon Schubert ENUMX
29635796c8dcSSimon Schubert   BFD_RELOC_PPC64_TPREL16_HIGHER
29645796c8dcSSimon Schubert ENUMX
29655796c8dcSSimon Schubert   BFD_RELOC_PPC64_TPREL16_HIGHERA
29665796c8dcSSimon Schubert ENUMX
29675796c8dcSSimon Schubert   BFD_RELOC_PPC64_TPREL16_HIGHEST
29685796c8dcSSimon Schubert ENUMX
29695796c8dcSSimon Schubert   BFD_RELOC_PPC64_TPREL16_HIGHESTA
29705796c8dcSSimon Schubert ENUMX
29715796c8dcSSimon Schubert   BFD_RELOC_PPC64_DTPREL16_DS
29725796c8dcSSimon Schubert ENUMX
29735796c8dcSSimon Schubert   BFD_RELOC_PPC64_DTPREL16_LO_DS
29745796c8dcSSimon Schubert ENUMX
29755796c8dcSSimon Schubert   BFD_RELOC_PPC64_DTPREL16_HIGHER
29765796c8dcSSimon Schubert ENUMX
29775796c8dcSSimon Schubert   BFD_RELOC_PPC64_DTPREL16_HIGHERA
29785796c8dcSSimon Schubert ENUMX
29795796c8dcSSimon Schubert   BFD_RELOC_PPC64_DTPREL16_HIGHEST
29805796c8dcSSimon Schubert ENUMX
29815796c8dcSSimon Schubert   BFD_RELOC_PPC64_DTPREL16_HIGHESTA
29825796c8dcSSimon Schubert ENUMDOC
29835796c8dcSSimon Schubert   PowerPC and PowerPC64 thread-local storage relocations.
29845796c8dcSSimon Schubert 
29855796c8dcSSimon Schubert ENUM
29865796c8dcSSimon Schubert   BFD_RELOC_I370_D12
29875796c8dcSSimon Schubert ENUMDOC
29885796c8dcSSimon Schubert   IBM 370/390 relocations
29895796c8dcSSimon Schubert 
29905796c8dcSSimon Schubert ENUM
29915796c8dcSSimon Schubert   BFD_RELOC_CTOR
29925796c8dcSSimon Schubert ENUMDOC
29935796c8dcSSimon Schubert   The type of reloc used to build a constructor table - at the moment
29945796c8dcSSimon Schubert   probably a 32 bit wide absolute relocation, but the target can choose.
29955796c8dcSSimon Schubert   It generally does map to one of the other relocation types.
29965796c8dcSSimon Schubert 
29975796c8dcSSimon Schubert ENUM
29985796c8dcSSimon Schubert   BFD_RELOC_ARM_PCREL_BRANCH
29995796c8dcSSimon Schubert ENUMDOC
30005796c8dcSSimon Schubert   ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
30015796c8dcSSimon Schubert   not stored in the instruction.
30025796c8dcSSimon Schubert ENUM
30035796c8dcSSimon Schubert   BFD_RELOC_ARM_PCREL_BLX
30045796c8dcSSimon Schubert ENUMDOC
30055796c8dcSSimon Schubert   ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
30065796c8dcSSimon Schubert   not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
30075796c8dcSSimon Schubert   field in the instruction.
30085796c8dcSSimon Schubert ENUM
30095796c8dcSSimon Schubert   BFD_RELOC_THUMB_PCREL_BLX
30105796c8dcSSimon Schubert ENUMDOC
30115796c8dcSSimon Schubert   Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
30125796c8dcSSimon Schubert   not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
30135796c8dcSSimon Schubert   field in the instruction.
30145796c8dcSSimon Schubert ENUM
30155796c8dcSSimon Schubert   BFD_RELOC_ARM_PCREL_CALL
30165796c8dcSSimon Schubert ENUMDOC
30175796c8dcSSimon Schubert   ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.
30185796c8dcSSimon Schubert ENUM
30195796c8dcSSimon Schubert   BFD_RELOC_ARM_PCREL_JUMP
30205796c8dcSSimon Schubert ENUMDOC
30215796c8dcSSimon Schubert   ARM 26-bit pc-relative branch for B or conditional BL instruction.
30225796c8dcSSimon Schubert 
30235796c8dcSSimon Schubert ENUM
30245796c8dcSSimon Schubert   BFD_RELOC_THUMB_PCREL_BRANCH7
30255796c8dcSSimon Schubert ENUMX
30265796c8dcSSimon Schubert   BFD_RELOC_THUMB_PCREL_BRANCH9
30275796c8dcSSimon Schubert ENUMX
30285796c8dcSSimon Schubert   BFD_RELOC_THUMB_PCREL_BRANCH12
30295796c8dcSSimon Schubert ENUMX
30305796c8dcSSimon Schubert   BFD_RELOC_THUMB_PCREL_BRANCH20
30315796c8dcSSimon Schubert ENUMX
30325796c8dcSSimon Schubert   BFD_RELOC_THUMB_PCREL_BRANCH23
30335796c8dcSSimon Schubert ENUMX
30345796c8dcSSimon Schubert   BFD_RELOC_THUMB_PCREL_BRANCH25
30355796c8dcSSimon Schubert ENUMDOC
30365796c8dcSSimon Schubert   Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
30375796c8dcSSimon Schubert   The lowest bit must be zero and is not stored in the instruction.
30385796c8dcSSimon Schubert   Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
30395796c8dcSSimon Schubert   "nn" one smaller in all cases.  Note further that BRANCH23
30405796c8dcSSimon Schubert   corresponds to R_ARM_THM_CALL.
30415796c8dcSSimon Schubert 
30425796c8dcSSimon Schubert ENUM
30435796c8dcSSimon Schubert   BFD_RELOC_ARM_OFFSET_IMM
30445796c8dcSSimon Schubert ENUMDOC
30455796c8dcSSimon Schubert   12-bit immediate offset, used in ARM-format ldr and str instructions.
30465796c8dcSSimon Schubert 
30475796c8dcSSimon Schubert ENUM
30485796c8dcSSimon Schubert   BFD_RELOC_ARM_THUMB_OFFSET
30495796c8dcSSimon Schubert ENUMDOC
30505796c8dcSSimon Schubert   5-bit immediate offset, used in Thumb-format ldr and str instructions.
30515796c8dcSSimon Schubert 
30525796c8dcSSimon Schubert ENUM
30535796c8dcSSimon Schubert   BFD_RELOC_ARM_TARGET1
30545796c8dcSSimon Schubert ENUMDOC
30555796c8dcSSimon Schubert   Pc-relative or absolute relocation depending on target.  Used for
30565796c8dcSSimon Schubert   entries in .init_array sections.
30575796c8dcSSimon Schubert ENUM
30585796c8dcSSimon Schubert   BFD_RELOC_ARM_ROSEGREL32
30595796c8dcSSimon Schubert ENUMDOC
30605796c8dcSSimon Schubert   Read-only segment base relative address.
30615796c8dcSSimon Schubert ENUM
30625796c8dcSSimon Schubert   BFD_RELOC_ARM_SBREL32
30635796c8dcSSimon Schubert ENUMDOC
30645796c8dcSSimon Schubert   Data segment base relative address.
30655796c8dcSSimon Schubert ENUM
30665796c8dcSSimon Schubert   BFD_RELOC_ARM_TARGET2
30675796c8dcSSimon Schubert ENUMDOC
30685796c8dcSSimon Schubert   This reloc is used for references to RTTI data from exception handling
30695796c8dcSSimon Schubert   tables.  The actual definition depends on the target.  It may be a
30705796c8dcSSimon Schubert   pc-relative or some form of GOT-indirect relocation.
30715796c8dcSSimon Schubert ENUM
30725796c8dcSSimon Schubert   BFD_RELOC_ARM_PREL31
30735796c8dcSSimon Schubert ENUMDOC
30745796c8dcSSimon Schubert   31-bit PC relative address.
30755796c8dcSSimon Schubert ENUM
30765796c8dcSSimon Schubert   BFD_RELOC_ARM_MOVW
30775796c8dcSSimon Schubert ENUMX
30785796c8dcSSimon Schubert   BFD_RELOC_ARM_MOVT
30795796c8dcSSimon Schubert ENUMX
30805796c8dcSSimon Schubert   BFD_RELOC_ARM_MOVW_PCREL
30815796c8dcSSimon Schubert ENUMX
30825796c8dcSSimon Schubert   BFD_RELOC_ARM_MOVT_PCREL
30835796c8dcSSimon Schubert ENUMX
30845796c8dcSSimon Schubert   BFD_RELOC_ARM_THUMB_MOVW
30855796c8dcSSimon Schubert ENUMX
30865796c8dcSSimon Schubert   BFD_RELOC_ARM_THUMB_MOVT
30875796c8dcSSimon Schubert ENUMX
30885796c8dcSSimon Schubert   BFD_RELOC_ARM_THUMB_MOVW_PCREL
30895796c8dcSSimon Schubert ENUMX
30905796c8dcSSimon Schubert   BFD_RELOC_ARM_THUMB_MOVT_PCREL
30915796c8dcSSimon Schubert ENUMDOC
30925796c8dcSSimon Schubert   Low and High halfword relocations for MOVW and MOVT instructions.
30935796c8dcSSimon Schubert 
30945796c8dcSSimon Schubert ENUM
30955796c8dcSSimon Schubert   BFD_RELOC_ARM_JUMP_SLOT
30965796c8dcSSimon Schubert ENUMX
30975796c8dcSSimon Schubert   BFD_RELOC_ARM_GLOB_DAT
30985796c8dcSSimon Schubert ENUMX
30995796c8dcSSimon Schubert   BFD_RELOC_ARM_GOT32
31005796c8dcSSimon Schubert ENUMX
31015796c8dcSSimon Schubert   BFD_RELOC_ARM_PLT32
31025796c8dcSSimon Schubert ENUMX
31035796c8dcSSimon Schubert   BFD_RELOC_ARM_RELATIVE
31045796c8dcSSimon Schubert ENUMX
31055796c8dcSSimon Schubert   BFD_RELOC_ARM_GOTOFF
31065796c8dcSSimon Schubert ENUMX
31075796c8dcSSimon Schubert   BFD_RELOC_ARM_GOTPC
3108cf7f2e2dSJohn Marino ENUMX
3109cf7f2e2dSJohn Marino   BFD_RELOC_ARM_GOT_PREL
31105796c8dcSSimon Schubert ENUMDOC
31115796c8dcSSimon Schubert   Relocations for setting up GOTs and PLTs for shared libraries.
31125796c8dcSSimon Schubert 
31135796c8dcSSimon Schubert ENUM
31145796c8dcSSimon Schubert   BFD_RELOC_ARM_TLS_GD32
31155796c8dcSSimon Schubert ENUMX
31165796c8dcSSimon Schubert   BFD_RELOC_ARM_TLS_LDO32
31175796c8dcSSimon Schubert ENUMX
31185796c8dcSSimon Schubert   BFD_RELOC_ARM_TLS_LDM32
31195796c8dcSSimon Schubert ENUMX
31205796c8dcSSimon Schubert   BFD_RELOC_ARM_TLS_DTPOFF32
31215796c8dcSSimon Schubert ENUMX
31225796c8dcSSimon Schubert   BFD_RELOC_ARM_TLS_DTPMOD32
31235796c8dcSSimon Schubert ENUMX
31245796c8dcSSimon Schubert   BFD_RELOC_ARM_TLS_TPOFF32
31255796c8dcSSimon Schubert ENUMX
31265796c8dcSSimon Schubert   BFD_RELOC_ARM_TLS_IE32
31275796c8dcSSimon Schubert ENUMX
31285796c8dcSSimon Schubert   BFD_RELOC_ARM_TLS_LE32
3129c50c785cSJohn Marino ENUMX
3130c50c785cSJohn Marino   BFD_RELOC_ARM_TLS_GOTDESC
3131c50c785cSJohn Marino ENUMX
3132c50c785cSJohn Marino   BFD_RELOC_ARM_TLS_CALL
3133c50c785cSJohn Marino ENUMX
3134c50c785cSJohn Marino   BFD_RELOC_ARM_THM_TLS_CALL
3135c50c785cSJohn Marino ENUMX
3136c50c785cSJohn Marino   BFD_RELOC_ARM_TLS_DESCSEQ
3137c50c785cSJohn Marino ENUMX
3138c50c785cSJohn Marino   BFD_RELOC_ARM_THM_TLS_DESCSEQ
3139c50c785cSJohn Marino ENUMX
3140c50c785cSJohn Marino   BFD_RELOC_ARM_TLS_DESC
31415796c8dcSSimon Schubert ENUMDOC
31425796c8dcSSimon Schubert   ARM thread-local storage relocations.
31435796c8dcSSimon Schubert 
31445796c8dcSSimon Schubert ENUM
31455796c8dcSSimon Schubert   BFD_RELOC_ARM_ALU_PC_G0_NC
31465796c8dcSSimon Schubert ENUMX
31475796c8dcSSimon Schubert   BFD_RELOC_ARM_ALU_PC_G0
31485796c8dcSSimon Schubert ENUMX
31495796c8dcSSimon Schubert   BFD_RELOC_ARM_ALU_PC_G1_NC
31505796c8dcSSimon Schubert ENUMX
31515796c8dcSSimon Schubert   BFD_RELOC_ARM_ALU_PC_G1
31525796c8dcSSimon Schubert ENUMX
31535796c8dcSSimon Schubert   BFD_RELOC_ARM_ALU_PC_G2
31545796c8dcSSimon Schubert ENUMX
31555796c8dcSSimon Schubert   BFD_RELOC_ARM_LDR_PC_G0
31565796c8dcSSimon Schubert ENUMX
31575796c8dcSSimon Schubert   BFD_RELOC_ARM_LDR_PC_G1
31585796c8dcSSimon Schubert ENUMX
31595796c8dcSSimon Schubert   BFD_RELOC_ARM_LDR_PC_G2
31605796c8dcSSimon Schubert ENUMX
31615796c8dcSSimon Schubert   BFD_RELOC_ARM_LDRS_PC_G0
31625796c8dcSSimon Schubert ENUMX
31635796c8dcSSimon Schubert   BFD_RELOC_ARM_LDRS_PC_G1
31645796c8dcSSimon Schubert ENUMX
31655796c8dcSSimon Schubert   BFD_RELOC_ARM_LDRS_PC_G2
31665796c8dcSSimon Schubert ENUMX
31675796c8dcSSimon Schubert   BFD_RELOC_ARM_LDC_PC_G0
31685796c8dcSSimon Schubert ENUMX
31695796c8dcSSimon Schubert   BFD_RELOC_ARM_LDC_PC_G1
31705796c8dcSSimon Schubert ENUMX
31715796c8dcSSimon Schubert   BFD_RELOC_ARM_LDC_PC_G2
31725796c8dcSSimon Schubert ENUMX
31735796c8dcSSimon Schubert   BFD_RELOC_ARM_ALU_SB_G0_NC
31745796c8dcSSimon Schubert ENUMX
31755796c8dcSSimon Schubert   BFD_RELOC_ARM_ALU_SB_G0
31765796c8dcSSimon Schubert ENUMX
31775796c8dcSSimon Schubert   BFD_RELOC_ARM_ALU_SB_G1_NC
31785796c8dcSSimon Schubert ENUMX
31795796c8dcSSimon Schubert   BFD_RELOC_ARM_ALU_SB_G1
31805796c8dcSSimon Schubert ENUMX
31815796c8dcSSimon Schubert   BFD_RELOC_ARM_ALU_SB_G2
31825796c8dcSSimon Schubert ENUMX
31835796c8dcSSimon Schubert   BFD_RELOC_ARM_LDR_SB_G0
31845796c8dcSSimon Schubert ENUMX
31855796c8dcSSimon Schubert   BFD_RELOC_ARM_LDR_SB_G1
31865796c8dcSSimon Schubert ENUMX
31875796c8dcSSimon Schubert   BFD_RELOC_ARM_LDR_SB_G2
31885796c8dcSSimon Schubert ENUMX
31895796c8dcSSimon Schubert   BFD_RELOC_ARM_LDRS_SB_G0
31905796c8dcSSimon Schubert ENUMX
31915796c8dcSSimon Schubert   BFD_RELOC_ARM_LDRS_SB_G1
31925796c8dcSSimon Schubert ENUMX
31935796c8dcSSimon Schubert   BFD_RELOC_ARM_LDRS_SB_G2
31945796c8dcSSimon Schubert ENUMX
31955796c8dcSSimon Schubert   BFD_RELOC_ARM_LDC_SB_G0
31965796c8dcSSimon Schubert ENUMX
31975796c8dcSSimon Schubert   BFD_RELOC_ARM_LDC_SB_G1
31985796c8dcSSimon Schubert ENUMX
31995796c8dcSSimon Schubert   BFD_RELOC_ARM_LDC_SB_G2
32005796c8dcSSimon Schubert ENUMDOC
32015796c8dcSSimon Schubert   ARM group relocations.
32025796c8dcSSimon Schubert 
32035796c8dcSSimon Schubert ENUM
32045796c8dcSSimon Schubert   BFD_RELOC_ARM_V4BX
32055796c8dcSSimon Schubert ENUMDOC
32065796c8dcSSimon Schubert   Annotation of BX instructions.
32075796c8dcSSimon Schubert 
32085796c8dcSSimon Schubert ENUM
3209c50c785cSJohn Marino   BFD_RELOC_ARM_IRELATIVE
3210c50c785cSJohn Marino ENUMDOC
3211c50c785cSJohn Marino   ARM support for STT_GNU_IFUNC.
3212c50c785cSJohn Marino 
3213c50c785cSJohn Marino ENUM
32145796c8dcSSimon Schubert   BFD_RELOC_ARM_IMMEDIATE
32155796c8dcSSimon Schubert ENUMX
32165796c8dcSSimon Schubert   BFD_RELOC_ARM_ADRL_IMMEDIATE
32175796c8dcSSimon Schubert ENUMX
32185796c8dcSSimon Schubert   BFD_RELOC_ARM_T32_IMMEDIATE
32195796c8dcSSimon Schubert ENUMX
32205796c8dcSSimon Schubert   BFD_RELOC_ARM_T32_ADD_IMM
32215796c8dcSSimon Schubert ENUMX
32225796c8dcSSimon Schubert   BFD_RELOC_ARM_T32_IMM12
32235796c8dcSSimon Schubert ENUMX
32245796c8dcSSimon Schubert   BFD_RELOC_ARM_T32_ADD_PC12
32255796c8dcSSimon Schubert ENUMX
32265796c8dcSSimon Schubert   BFD_RELOC_ARM_SHIFT_IMM
32275796c8dcSSimon Schubert ENUMX
32285796c8dcSSimon Schubert   BFD_RELOC_ARM_SMC
32295796c8dcSSimon Schubert ENUMX
3230c50c785cSJohn Marino   BFD_RELOC_ARM_HVC
3231c50c785cSJohn Marino ENUMX
32325796c8dcSSimon Schubert   BFD_RELOC_ARM_SWI
32335796c8dcSSimon Schubert ENUMX
32345796c8dcSSimon Schubert   BFD_RELOC_ARM_MULTI
32355796c8dcSSimon Schubert ENUMX
32365796c8dcSSimon Schubert   BFD_RELOC_ARM_CP_OFF_IMM
32375796c8dcSSimon Schubert ENUMX
32385796c8dcSSimon Schubert   BFD_RELOC_ARM_CP_OFF_IMM_S2
32395796c8dcSSimon Schubert ENUMX
32405796c8dcSSimon Schubert   BFD_RELOC_ARM_T32_CP_OFF_IMM
32415796c8dcSSimon Schubert ENUMX
32425796c8dcSSimon Schubert   BFD_RELOC_ARM_T32_CP_OFF_IMM_S2
32435796c8dcSSimon Schubert ENUMX
32445796c8dcSSimon Schubert   BFD_RELOC_ARM_ADR_IMM
32455796c8dcSSimon Schubert ENUMX
32465796c8dcSSimon Schubert   BFD_RELOC_ARM_LDR_IMM
32475796c8dcSSimon Schubert ENUMX
32485796c8dcSSimon Schubert   BFD_RELOC_ARM_LITERAL
32495796c8dcSSimon Schubert ENUMX
32505796c8dcSSimon Schubert   BFD_RELOC_ARM_IN_POOL
32515796c8dcSSimon Schubert ENUMX
32525796c8dcSSimon Schubert   BFD_RELOC_ARM_OFFSET_IMM8
32535796c8dcSSimon Schubert ENUMX
32545796c8dcSSimon Schubert   BFD_RELOC_ARM_T32_OFFSET_U8
32555796c8dcSSimon Schubert ENUMX
32565796c8dcSSimon Schubert   BFD_RELOC_ARM_T32_OFFSET_IMM
32575796c8dcSSimon Schubert ENUMX
32585796c8dcSSimon Schubert   BFD_RELOC_ARM_HWLITERAL
32595796c8dcSSimon Schubert ENUMX
32605796c8dcSSimon Schubert   BFD_RELOC_ARM_THUMB_ADD
32615796c8dcSSimon Schubert ENUMX
32625796c8dcSSimon Schubert   BFD_RELOC_ARM_THUMB_IMM
32635796c8dcSSimon Schubert ENUMX
32645796c8dcSSimon Schubert   BFD_RELOC_ARM_THUMB_SHIFT
32655796c8dcSSimon Schubert ENUMDOC
32665796c8dcSSimon Schubert   These relocs are only used within the ARM assembler.  They are not
32675796c8dcSSimon Schubert   (at present) written to any object files.
32685796c8dcSSimon Schubert 
32695796c8dcSSimon Schubert ENUM
32705796c8dcSSimon Schubert   BFD_RELOC_SH_PCDISP8BY2
32715796c8dcSSimon Schubert ENUMX
32725796c8dcSSimon Schubert   BFD_RELOC_SH_PCDISP12BY2
32735796c8dcSSimon Schubert ENUMX
32745796c8dcSSimon Schubert   BFD_RELOC_SH_IMM3
32755796c8dcSSimon Schubert ENUMX
32765796c8dcSSimon Schubert   BFD_RELOC_SH_IMM3U
32775796c8dcSSimon Schubert ENUMX
32785796c8dcSSimon Schubert   BFD_RELOC_SH_DISP12
32795796c8dcSSimon Schubert ENUMX
32805796c8dcSSimon Schubert   BFD_RELOC_SH_DISP12BY2
32815796c8dcSSimon Schubert ENUMX
32825796c8dcSSimon Schubert   BFD_RELOC_SH_DISP12BY4
32835796c8dcSSimon Schubert ENUMX
32845796c8dcSSimon Schubert   BFD_RELOC_SH_DISP12BY8
32855796c8dcSSimon Schubert ENUMX
32865796c8dcSSimon Schubert   BFD_RELOC_SH_DISP20
32875796c8dcSSimon Schubert ENUMX
32885796c8dcSSimon Schubert   BFD_RELOC_SH_DISP20BY8
32895796c8dcSSimon Schubert ENUMX
32905796c8dcSSimon Schubert   BFD_RELOC_SH_IMM4
32915796c8dcSSimon Schubert ENUMX
32925796c8dcSSimon Schubert   BFD_RELOC_SH_IMM4BY2
32935796c8dcSSimon Schubert ENUMX
32945796c8dcSSimon Schubert   BFD_RELOC_SH_IMM4BY4
32955796c8dcSSimon Schubert ENUMX
32965796c8dcSSimon Schubert   BFD_RELOC_SH_IMM8
32975796c8dcSSimon Schubert ENUMX
32985796c8dcSSimon Schubert   BFD_RELOC_SH_IMM8BY2
32995796c8dcSSimon Schubert ENUMX
33005796c8dcSSimon Schubert   BFD_RELOC_SH_IMM8BY4
33015796c8dcSSimon Schubert ENUMX
33025796c8dcSSimon Schubert   BFD_RELOC_SH_PCRELIMM8BY2
33035796c8dcSSimon Schubert ENUMX
33045796c8dcSSimon Schubert   BFD_RELOC_SH_PCRELIMM8BY4
33055796c8dcSSimon Schubert ENUMX
33065796c8dcSSimon Schubert   BFD_RELOC_SH_SWITCH16
33075796c8dcSSimon Schubert ENUMX
33085796c8dcSSimon Schubert   BFD_RELOC_SH_SWITCH32
33095796c8dcSSimon Schubert ENUMX
33105796c8dcSSimon Schubert   BFD_RELOC_SH_USES
33115796c8dcSSimon Schubert ENUMX
33125796c8dcSSimon Schubert   BFD_RELOC_SH_COUNT
33135796c8dcSSimon Schubert ENUMX
33145796c8dcSSimon Schubert   BFD_RELOC_SH_ALIGN
33155796c8dcSSimon Schubert ENUMX
33165796c8dcSSimon Schubert   BFD_RELOC_SH_CODE
33175796c8dcSSimon Schubert ENUMX
33185796c8dcSSimon Schubert   BFD_RELOC_SH_DATA
33195796c8dcSSimon Schubert ENUMX
33205796c8dcSSimon Schubert   BFD_RELOC_SH_LABEL
33215796c8dcSSimon Schubert ENUMX
33225796c8dcSSimon Schubert   BFD_RELOC_SH_LOOP_START
33235796c8dcSSimon Schubert ENUMX
33245796c8dcSSimon Schubert   BFD_RELOC_SH_LOOP_END
33255796c8dcSSimon Schubert ENUMX
33265796c8dcSSimon Schubert   BFD_RELOC_SH_COPY
33275796c8dcSSimon Schubert ENUMX
33285796c8dcSSimon Schubert   BFD_RELOC_SH_GLOB_DAT
33295796c8dcSSimon Schubert ENUMX
33305796c8dcSSimon Schubert   BFD_RELOC_SH_JMP_SLOT
33315796c8dcSSimon Schubert ENUMX
33325796c8dcSSimon Schubert   BFD_RELOC_SH_RELATIVE
33335796c8dcSSimon Schubert ENUMX
33345796c8dcSSimon Schubert   BFD_RELOC_SH_GOTPC
33355796c8dcSSimon Schubert ENUMX
33365796c8dcSSimon Schubert   BFD_RELOC_SH_GOT_LOW16
33375796c8dcSSimon Schubert ENUMX
33385796c8dcSSimon Schubert   BFD_RELOC_SH_GOT_MEDLOW16
33395796c8dcSSimon Schubert ENUMX
33405796c8dcSSimon Schubert   BFD_RELOC_SH_GOT_MEDHI16
33415796c8dcSSimon Schubert ENUMX
33425796c8dcSSimon Schubert   BFD_RELOC_SH_GOT_HI16
33435796c8dcSSimon Schubert ENUMX
33445796c8dcSSimon Schubert   BFD_RELOC_SH_GOTPLT_LOW16
33455796c8dcSSimon Schubert ENUMX
33465796c8dcSSimon Schubert   BFD_RELOC_SH_GOTPLT_MEDLOW16
33475796c8dcSSimon Schubert ENUMX
33485796c8dcSSimon Schubert   BFD_RELOC_SH_GOTPLT_MEDHI16
33495796c8dcSSimon Schubert ENUMX
33505796c8dcSSimon Schubert   BFD_RELOC_SH_GOTPLT_HI16
33515796c8dcSSimon Schubert ENUMX
33525796c8dcSSimon Schubert   BFD_RELOC_SH_PLT_LOW16
33535796c8dcSSimon Schubert ENUMX
33545796c8dcSSimon Schubert   BFD_RELOC_SH_PLT_MEDLOW16
33555796c8dcSSimon Schubert ENUMX
33565796c8dcSSimon Schubert   BFD_RELOC_SH_PLT_MEDHI16
33575796c8dcSSimon Schubert ENUMX
33585796c8dcSSimon Schubert   BFD_RELOC_SH_PLT_HI16
33595796c8dcSSimon Schubert ENUMX
33605796c8dcSSimon Schubert   BFD_RELOC_SH_GOTOFF_LOW16
33615796c8dcSSimon Schubert ENUMX
33625796c8dcSSimon Schubert   BFD_RELOC_SH_GOTOFF_MEDLOW16
33635796c8dcSSimon Schubert ENUMX
33645796c8dcSSimon Schubert   BFD_RELOC_SH_GOTOFF_MEDHI16
33655796c8dcSSimon Schubert ENUMX
33665796c8dcSSimon Schubert   BFD_RELOC_SH_GOTOFF_HI16
33675796c8dcSSimon Schubert ENUMX
33685796c8dcSSimon Schubert   BFD_RELOC_SH_GOTPC_LOW16
33695796c8dcSSimon Schubert ENUMX
33705796c8dcSSimon Schubert   BFD_RELOC_SH_GOTPC_MEDLOW16
33715796c8dcSSimon Schubert ENUMX
33725796c8dcSSimon Schubert   BFD_RELOC_SH_GOTPC_MEDHI16
33735796c8dcSSimon Schubert ENUMX
33745796c8dcSSimon Schubert   BFD_RELOC_SH_GOTPC_HI16
33755796c8dcSSimon Schubert ENUMX
33765796c8dcSSimon Schubert   BFD_RELOC_SH_COPY64
33775796c8dcSSimon Schubert ENUMX
33785796c8dcSSimon Schubert   BFD_RELOC_SH_GLOB_DAT64
33795796c8dcSSimon Schubert ENUMX
33805796c8dcSSimon Schubert   BFD_RELOC_SH_JMP_SLOT64
33815796c8dcSSimon Schubert ENUMX
33825796c8dcSSimon Schubert   BFD_RELOC_SH_RELATIVE64
33835796c8dcSSimon Schubert ENUMX
33845796c8dcSSimon Schubert   BFD_RELOC_SH_GOT10BY4
33855796c8dcSSimon Schubert ENUMX
33865796c8dcSSimon Schubert   BFD_RELOC_SH_GOT10BY8
33875796c8dcSSimon Schubert ENUMX
33885796c8dcSSimon Schubert   BFD_RELOC_SH_GOTPLT10BY4
33895796c8dcSSimon Schubert ENUMX
33905796c8dcSSimon Schubert   BFD_RELOC_SH_GOTPLT10BY8
33915796c8dcSSimon Schubert ENUMX
33925796c8dcSSimon Schubert   BFD_RELOC_SH_GOTPLT32
33935796c8dcSSimon Schubert ENUMX
33945796c8dcSSimon Schubert   BFD_RELOC_SH_SHMEDIA_CODE
33955796c8dcSSimon Schubert ENUMX
33965796c8dcSSimon Schubert   BFD_RELOC_SH_IMMU5
33975796c8dcSSimon Schubert ENUMX
33985796c8dcSSimon Schubert   BFD_RELOC_SH_IMMS6
33995796c8dcSSimon Schubert ENUMX
34005796c8dcSSimon Schubert   BFD_RELOC_SH_IMMS6BY32
34015796c8dcSSimon Schubert ENUMX
34025796c8dcSSimon Schubert   BFD_RELOC_SH_IMMU6
34035796c8dcSSimon Schubert ENUMX
34045796c8dcSSimon Schubert   BFD_RELOC_SH_IMMS10
34055796c8dcSSimon Schubert ENUMX
34065796c8dcSSimon Schubert   BFD_RELOC_SH_IMMS10BY2
34075796c8dcSSimon Schubert ENUMX
34085796c8dcSSimon Schubert   BFD_RELOC_SH_IMMS10BY4
34095796c8dcSSimon Schubert ENUMX
34105796c8dcSSimon Schubert   BFD_RELOC_SH_IMMS10BY8
34115796c8dcSSimon Schubert ENUMX
34125796c8dcSSimon Schubert   BFD_RELOC_SH_IMMS16
34135796c8dcSSimon Schubert ENUMX
34145796c8dcSSimon Schubert   BFD_RELOC_SH_IMMU16
34155796c8dcSSimon Schubert ENUMX
34165796c8dcSSimon Schubert   BFD_RELOC_SH_IMM_LOW16
34175796c8dcSSimon Schubert ENUMX
34185796c8dcSSimon Schubert   BFD_RELOC_SH_IMM_LOW16_PCREL
34195796c8dcSSimon Schubert ENUMX
34205796c8dcSSimon Schubert   BFD_RELOC_SH_IMM_MEDLOW16
34215796c8dcSSimon Schubert ENUMX
34225796c8dcSSimon Schubert   BFD_RELOC_SH_IMM_MEDLOW16_PCREL
34235796c8dcSSimon Schubert ENUMX
34245796c8dcSSimon Schubert   BFD_RELOC_SH_IMM_MEDHI16
34255796c8dcSSimon Schubert ENUMX
34265796c8dcSSimon Schubert   BFD_RELOC_SH_IMM_MEDHI16_PCREL
34275796c8dcSSimon Schubert ENUMX
34285796c8dcSSimon Schubert   BFD_RELOC_SH_IMM_HI16
34295796c8dcSSimon Schubert ENUMX
34305796c8dcSSimon Schubert   BFD_RELOC_SH_IMM_HI16_PCREL
34315796c8dcSSimon Schubert ENUMX
34325796c8dcSSimon Schubert   BFD_RELOC_SH_PT_16
34335796c8dcSSimon Schubert ENUMX
34345796c8dcSSimon Schubert   BFD_RELOC_SH_TLS_GD_32
34355796c8dcSSimon Schubert ENUMX
34365796c8dcSSimon Schubert   BFD_RELOC_SH_TLS_LD_32
34375796c8dcSSimon Schubert ENUMX
34385796c8dcSSimon Schubert   BFD_RELOC_SH_TLS_LDO_32
34395796c8dcSSimon Schubert ENUMX
34405796c8dcSSimon Schubert   BFD_RELOC_SH_TLS_IE_32
34415796c8dcSSimon Schubert ENUMX
34425796c8dcSSimon Schubert   BFD_RELOC_SH_TLS_LE_32
34435796c8dcSSimon Schubert ENUMX
34445796c8dcSSimon Schubert   BFD_RELOC_SH_TLS_DTPMOD32
34455796c8dcSSimon Schubert ENUMX
34465796c8dcSSimon Schubert   BFD_RELOC_SH_TLS_DTPOFF32
34475796c8dcSSimon Schubert ENUMX
34485796c8dcSSimon Schubert   BFD_RELOC_SH_TLS_TPOFF32
3449cf7f2e2dSJohn Marino ENUMX
3450cf7f2e2dSJohn Marino   BFD_RELOC_SH_GOT20
3451cf7f2e2dSJohn Marino ENUMX
3452cf7f2e2dSJohn Marino   BFD_RELOC_SH_GOTOFF20
3453cf7f2e2dSJohn Marino ENUMX
3454cf7f2e2dSJohn Marino   BFD_RELOC_SH_GOTFUNCDESC
3455cf7f2e2dSJohn Marino ENUMX
3456cf7f2e2dSJohn Marino   BFD_RELOC_SH_GOTFUNCDESC20
3457cf7f2e2dSJohn Marino ENUMX
3458cf7f2e2dSJohn Marino   BFD_RELOC_SH_GOTOFFFUNCDESC
3459cf7f2e2dSJohn Marino ENUMX
3460cf7f2e2dSJohn Marino   BFD_RELOC_SH_GOTOFFFUNCDESC20
3461cf7f2e2dSJohn Marino ENUMX
3462cf7f2e2dSJohn Marino   BFD_RELOC_SH_FUNCDESC
34635796c8dcSSimon Schubert ENUMDOC
34645796c8dcSSimon Schubert   Renesas / SuperH SH relocs.  Not all of these appear in object files.
34655796c8dcSSimon Schubert 
34665796c8dcSSimon Schubert ENUM
34675796c8dcSSimon Schubert   BFD_RELOC_ARC_B22_PCREL
34685796c8dcSSimon Schubert ENUMDOC
34695796c8dcSSimon Schubert   ARC Cores relocs.
34705796c8dcSSimon Schubert   ARC 22 bit pc-relative branch.  The lowest two bits must be zero and are
34715796c8dcSSimon Schubert   not stored in the instruction.  The high 20 bits are installed in bits 26
34725796c8dcSSimon Schubert   through 7 of the instruction.
34735796c8dcSSimon Schubert ENUM
34745796c8dcSSimon Schubert   BFD_RELOC_ARC_B26
34755796c8dcSSimon Schubert ENUMDOC
34765796c8dcSSimon Schubert   ARC 26 bit absolute branch.  The lowest two bits must be zero and are not
34775796c8dcSSimon Schubert   stored in the instruction.  The high 24 bits are installed in bits 23
34785796c8dcSSimon Schubert   through 0.
34795796c8dcSSimon Schubert 
34805796c8dcSSimon Schubert ENUM
34815796c8dcSSimon Schubert   BFD_RELOC_BFIN_16_IMM
34825796c8dcSSimon Schubert ENUMDOC
34835796c8dcSSimon Schubert   ADI Blackfin 16 bit immediate absolute reloc.
34845796c8dcSSimon Schubert ENUM
34855796c8dcSSimon Schubert   BFD_RELOC_BFIN_16_HIGH
34865796c8dcSSimon Schubert ENUMDOC
34875796c8dcSSimon Schubert   ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.
34885796c8dcSSimon Schubert ENUM
34895796c8dcSSimon Schubert   BFD_RELOC_BFIN_4_PCREL
34905796c8dcSSimon Schubert ENUMDOC
34915796c8dcSSimon Schubert   ADI Blackfin 'a' part of LSETUP.
34925796c8dcSSimon Schubert ENUM
34935796c8dcSSimon Schubert   BFD_RELOC_BFIN_5_PCREL
34945796c8dcSSimon Schubert ENUMDOC
34955796c8dcSSimon Schubert   ADI Blackfin.
34965796c8dcSSimon Schubert ENUM
34975796c8dcSSimon Schubert   BFD_RELOC_BFIN_16_LOW
34985796c8dcSSimon Schubert ENUMDOC
34995796c8dcSSimon Schubert   ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.
35005796c8dcSSimon Schubert ENUM
35015796c8dcSSimon Schubert   BFD_RELOC_BFIN_10_PCREL
35025796c8dcSSimon Schubert ENUMDOC
35035796c8dcSSimon Schubert   ADI Blackfin.
35045796c8dcSSimon Schubert ENUM
35055796c8dcSSimon Schubert   BFD_RELOC_BFIN_11_PCREL
35065796c8dcSSimon Schubert ENUMDOC
35075796c8dcSSimon Schubert   ADI Blackfin 'b' part of LSETUP.
35085796c8dcSSimon Schubert ENUM
35095796c8dcSSimon Schubert   BFD_RELOC_BFIN_12_PCREL_JUMP
35105796c8dcSSimon Schubert ENUMDOC
35115796c8dcSSimon Schubert   ADI Blackfin.
35125796c8dcSSimon Schubert ENUM
35135796c8dcSSimon Schubert   BFD_RELOC_BFIN_12_PCREL_JUMP_S
35145796c8dcSSimon Schubert ENUMDOC
35155796c8dcSSimon Schubert   ADI Blackfin Short jump, pcrel.
35165796c8dcSSimon Schubert ENUM
35175796c8dcSSimon Schubert   BFD_RELOC_BFIN_24_PCREL_CALL_X
35185796c8dcSSimon Schubert ENUMDOC
35195796c8dcSSimon Schubert   ADI Blackfin Call.x not implemented.
35205796c8dcSSimon Schubert ENUM
35215796c8dcSSimon Schubert   BFD_RELOC_BFIN_24_PCREL_JUMP_L
35225796c8dcSSimon Schubert ENUMDOC
35235796c8dcSSimon Schubert   ADI Blackfin Long Jump pcrel.
35245796c8dcSSimon Schubert ENUM
35255796c8dcSSimon Schubert   BFD_RELOC_BFIN_GOT17M4
35265796c8dcSSimon Schubert ENUMX
35275796c8dcSSimon Schubert   BFD_RELOC_BFIN_GOTHI
35285796c8dcSSimon Schubert ENUMX
35295796c8dcSSimon Schubert   BFD_RELOC_BFIN_GOTLO
35305796c8dcSSimon Schubert ENUMX
35315796c8dcSSimon Schubert   BFD_RELOC_BFIN_FUNCDESC
35325796c8dcSSimon Schubert ENUMX
35335796c8dcSSimon Schubert   BFD_RELOC_BFIN_FUNCDESC_GOT17M4
35345796c8dcSSimon Schubert ENUMX
35355796c8dcSSimon Schubert   BFD_RELOC_BFIN_FUNCDESC_GOTHI
35365796c8dcSSimon Schubert ENUMX
35375796c8dcSSimon Schubert   BFD_RELOC_BFIN_FUNCDESC_GOTLO
35385796c8dcSSimon Schubert ENUMX
35395796c8dcSSimon Schubert   BFD_RELOC_BFIN_FUNCDESC_VALUE
35405796c8dcSSimon Schubert ENUMX
35415796c8dcSSimon Schubert   BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4
35425796c8dcSSimon Schubert ENUMX
35435796c8dcSSimon Schubert   BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI
35445796c8dcSSimon Schubert ENUMX
35455796c8dcSSimon Schubert   BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO
35465796c8dcSSimon Schubert ENUMX
35475796c8dcSSimon Schubert   BFD_RELOC_BFIN_GOTOFF17M4
35485796c8dcSSimon Schubert ENUMX
35495796c8dcSSimon Schubert   BFD_RELOC_BFIN_GOTOFFHI
35505796c8dcSSimon Schubert ENUMX
35515796c8dcSSimon Schubert   BFD_RELOC_BFIN_GOTOFFLO
35525796c8dcSSimon Schubert ENUMDOC
35535796c8dcSSimon Schubert   ADI Blackfin FD-PIC relocations.
35545796c8dcSSimon Schubert ENUM
35555796c8dcSSimon Schubert   BFD_RELOC_BFIN_GOT
35565796c8dcSSimon Schubert ENUMDOC
35575796c8dcSSimon Schubert   ADI Blackfin GOT relocation.
35585796c8dcSSimon Schubert ENUM
35595796c8dcSSimon Schubert   BFD_RELOC_BFIN_PLTPC
35605796c8dcSSimon Schubert ENUMDOC
35615796c8dcSSimon Schubert   ADI Blackfin PLTPC relocation.
35625796c8dcSSimon Schubert ENUM
35635796c8dcSSimon Schubert   BFD_ARELOC_BFIN_PUSH
35645796c8dcSSimon Schubert ENUMDOC
35655796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
35665796c8dcSSimon Schubert ENUM
35675796c8dcSSimon Schubert   BFD_ARELOC_BFIN_CONST
35685796c8dcSSimon Schubert ENUMDOC
35695796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
35705796c8dcSSimon Schubert ENUM
35715796c8dcSSimon Schubert   BFD_ARELOC_BFIN_ADD
35725796c8dcSSimon Schubert ENUMDOC
35735796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
35745796c8dcSSimon Schubert ENUM
35755796c8dcSSimon Schubert   BFD_ARELOC_BFIN_SUB
35765796c8dcSSimon Schubert ENUMDOC
35775796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
35785796c8dcSSimon Schubert ENUM
35795796c8dcSSimon Schubert   BFD_ARELOC_BFIN_MULT
35805796c8dcSSimon Schubert ENUMDOC
35815796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
35825796c8dcSSimon Schubert ENUM
35835796c8dcSSimon Schubert   BFD_ARELOC_BFIN_DIV
35845796c8dcSSimon Schubert ENUMDOC
35855796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
35865796c8dcSSimon Schubert ENUM
35875796c8dcSSimon Schubert   BFD_ARELOC_BFIN_MOD
35885796c8dcSSimon Schubert ENUMDOC
35895796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
35905796c8dcSSimon Schubert ENUM
35915796c8dcSSimon Schubert   BFD_ARELOC_BFIN_LSHIFT
35925796c8dcSSimon Schubert ENUMDOC
35935796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
35945796c8dcSSimon Schubert ENUM
35955796c8dcSSimon Schubert   BFD_ARELOC_BFIN_RSHIFT
35965796c8dcSSimon Schubert ENUMDOC
35975796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
35985796c8dcSSimon Schubert ENUM
35995796c8dcSSimon Schubert   BFD_ARELOC_BFIN_AND
36005796c8dcSSimon Schubert ENUMDOC
36015796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
36025796c8dcSSimon Schubert ENUM
36035796c8dcSSimon Schubert   BFD_ARELOC_BFIN_OR
36045796c8dcSSimon Schubert ENUMDOC
36055796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
36065796c8dcSSimon Schubert ENUM
36075796c8dcSSimon Schubert   BFD_ARELOC_BFIN_XOR
36085796c8dcSSimon Schubert ENUMDOC
36095796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
36105796c8dcSSimon Schubert ENUM
36115796c8dcSSimon Schubert   BFD_ARELOC_BFIN_LAND
36125796c8dcSSimon Schubert ENUMDOC
36135796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
36145796c8dcSSimon Schubert ENUM
36155796c8dcSSimon Schubert   BFD_ARELOC_BFIN_LOR
36165796c8dcSSimon Schubert ENUMDOC
36175796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
36185796c8dcSSimon Schubert ENUM
36195796c8dcSSimon Schubert   BFD_ARELOC_BFIN_LEN
36205796c8dcSSimon Schubert ENUMDOC
36215796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
36225796c8dcSSimon Schubert ENUM
36235796c8dcSSimon Schubert   BFD_ARELOC_BFIN_NEG
36245796c8dcSSimon Schubert ENUMDOC
36255796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
36265796c8dcSSimon Schubert ENUM
36275796c8dcSSimon Schubert   BFD_ARELOC_BFIN_COMP
36285796c8dcSSimon Schubert ENUMDOC
36295796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
36305796c8dcSSimon Schubert ENUM
36315796c8dcSSimon Schubert   BFD_ARELOC_BFIN_PAGE
36325796c8dcSSimon Schubert ENUMDOC
36335796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
36345796c8dcSSimon Schubert ENUM
36355796c8dcSSimon Schubert   BFD_ARELOC_BFIN_HWPAGE
36365796c8dcSSimon Schubert ENUMDOC
36375796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
36385796c8dcSSimon Schubert ENUM
36395796c8dcSSimon Schubert   BFD_ARELOC_BFIN_ADDR
36405796c8dcSSimon Schubert ENUMDOC
36415796c8dcSSimon Schubert   ADI Blackfin arithmetic relocation.
36425796c8dcSSimon Schubert 
36435796c8dcSSimon Schubert ENUM
36445796c8dcSSimon Schubert   BFD_RELOC_D10V_10_PCREL_R
36455796c8dcSSimon Schubert ENUMDOC
36465796c8dcSSimon Schubert   Mitsubishi D10V relocs.
36475796c8dcSSimon Schubert   This is a 10-bit reloc with the right 2 bits
36485796c8dcSSimon Schubert   assumed to be 0.
36495796c8dcSSimon Schubert ENUM
36505796c8dcSSimon Schubert   BFD_RELOC_D10V_10_PCREL_L
36515796c8dcSSimon Schubert ENUMDOC
36525796c8dcSSimon Schubert   Mitsubishi D10V relocs.
36535796c8dcSSimon Schubert   This is a 10-bit reloc with the right 2 bits
36545796c8dcSSimon Schubert   assumed to be 0.  This is the same as the previous reloc
36555796c8dcSSimon Schubert   except it is in the left container, i.e.,
36565796c8dcSSimon Schubert   shifted left 15 bits.
36575796c8dcSSimon Schubert ENUM
36585796c8dcSSimon Schubert   BFD_RELOC_D10V_18
36595796c8dcSSimon Schubert ENUMDOC
36605796c8dcSSimon Schubert   This is an 18-bit reloc with the right 2 bits
36615796c8dcSSimon Schubert   assumed to be 0.
36625796c8dcSSimon Schubert ENUM
36635796c8dcSSimon Schubert   BFD_RELOC_D10V_18_PCREL
36645796c8dcSSimon Schubert ENUMDOC
36655796c8dcSSimon Schubert   This is an 18-bit reloc with the right 2 bits
36665796c8dcSSimon Schubert   assumed to be 0.
36675796c8dcSSimon Schubert 
36685796c8dcSSimon Schubert ENUM
36695796c8dcSSimon Schubert   BFD_RELOC_D30V_6
36705796c8dcSSimon Schubert ENUMDOC
36715796c8dcSSimon Schubert   Mitsubishi D30V relocs.
36725796c8dcSSimon Schubert   This is a 6-bit absolute reloc.
36735796c8dcSSimon Schubert ENUM
36745796c8dcSSimon Schubert   BFD_RELOC_D30V_9_PCREL
36755796c8dcSSimon Schubert ENUMDOC
36765796c8dcSSimon Schubert   This is a 6-bit pc-relative reloc with
36775796c8dcSSimon Schubert   the right 3 bits assumed to be 0.
36785796c8dcSSimon Schubert ENUM
36795796c8dcSSimon Schubert   BFD_RELOC_D30V_9_PCREL_R
36805796c8dcSSimon Schubert ENUMDOC
36815796c8dcSSimon Schubert   This is a 6-bit pc-relative reloc with
36825796c8dcSSimon Schubert   the right 3 bits assumed to be 0. Same
36835796c8dcSSimon Schubert   as the previous reloc but on the right side
36845796c8dcSSimon Schubert   of the container.
36855796c8dcSSimon Schubert ENUM
36865796c8dcSSimon Schubert   BFD_RELOC_D30V_15
36875796c8dcSSimon Schubert ENUMDOC
36885796c8dcSSimon Schubert   This is a 12-bit absolute reloc with the
36895796c8dcSSimon Schubert   right 3 bitsassumed to be 0.
36905796c8dcSSimon Schubert ENUM
36915796c8dcSSimon Schubert   BFD_RELOC_D30V_15_PCREL
36925796c8dcSSimon Schubert ENUMDOC
36935796c8dcSSimon Schubert   This is a 12-bit pc-relative reloc with
36945796c8dcSSimon Schubert   the right 3 bits assumed to be 0.
36955796c8dcSSimon Schubert ENUM
36965796c8dcSSimon Schubert   BFD_RELOC_D30V_15_PCREL_R
36975796c8dcSSimon Schubert ENUMDOC
36985796c8dcSSimon Schubert   This is a 12-bit pc-relative reloc with
36995796c8dcSSimon Schubert   the right 3 bits assumed to be 0. Same
37005796c8dcSSimon Schubert   as the previous reloc but on the right side
37015796c8dcSSimon Schubert   of the container.
37025796c8dcSSimon Schubert ENUM
37035796c8dcSSimon Schubert   BFD_RELOC_D30V_21
37045796c8dcSSimon Schubert ENUMDOC
37055796c8dcSSimon Schubert   This is an 18-bit absolute reloc with
37065796c8dcSSimon Schubert   the right 3 bits assumed to be 0.
37075796c8dcSSimon Schubert ENUM
37085796c8dcSSimon Schubert   BFD_RELOC_D30V_21_PCREL
37095796c8dcSSimon Schubert ENUMDOC
37105796c8dcSSimon Schubert   This is an 18-bit pc-relative reloc with
37115796c8dcSSimon Schubert   the right 3 bits assumed to be 0.
37125796c8dcSSimon Schubert ENUM
37135796c8dcSSimon Schubert   BFD_RELOC_D30V_21_PCREL_R
37145796c8dcSSimon Schubert ENUMDOC
37155796c8dcSSimon Schubert   This is an 18-bit pc-relative reloc with
37165796c8dcSSimon Schubert   the right 3 bits assumed to be 0. Same
37175796c8dcSSimon Schubert   as the previous reloc but on the right side
37185796c8dcSSimon Schubert   of the container.
37195796c8dcSSimon Schubert ENUM
37205796c8dcSSimon Schubert   BFD_RELOC_D30V_32
37215796c8dcSSimon Schubert ENUMDOC
37225796c8dcSSimon Schubert   This is a 32-bit absolute reloc.
37235796c8dcSSimon Schubert ENUM
37245796c8dcSSimon Schubert   BFD_RELOC_D30V_32_PCREL
37255796c8dcSSimon Schubert ENUMDOC
37265796c8dcSSimon Schubert   This is a 32-bit pc-relative reloc.
37275796c8dcSSimon Schubert 
37285796c8dcSSimon Schubert ENUM
37295796c8dcSSimon Schubert   BFD_RELOC_DLX_HI16_S
37305796c8dcSSimon Schubert ENUMDOC
37315796c8dcSSimon Schubert   DLX relocs
37325796c8dcSSimon Schubert ENUM
37335796c8dcSSimon Schubert   BFD_RELOC_DLX_LO16
37345796c8dcSSimon Schubert ENUMDOC
37355796c8dcSSimon Schubert   DLX relocs
37365796c8dcSSimon Schubert ENUM
37375796c8dcSSimon Schubert   BFD_RELOC_DLX_JMP26
37385796c8dcSSimon Schubert ENUMDOC
37395796c8dcSSimon Schubert   DLX relocs
37405796c8dcSSimon Schubert 
37415796c8dcSSimon Schubert ENUM
37425796c8dcSSimon Schubert   BFD_RELOC_M32C_HI8
37435796c8dcSSimon Schubert ENUMX
37445796c8dcSSimon Schubert   BFD_RELOC_M32C_RL_JUMP
37455796c8dcSSimon Schubert ENUMX
37465796c8dcSSimon Schubert   BFD_RELOC_M32C_RL_1ADDR
37475796c8dcSSimon Schubert ENUMX
37485796c8dcSSimon Schubert   BFD_RELOC_M32C_RL_2ADDR
37495796c8dcSSimon Schubert ENUMDOC
37505796c8dcSSimon Schubert   Renesas M16C/M32C Relocations.
37515796c8dcSSimon Schubert 
37525796c8dcSSimon Schubert ENUM
37535796c8dcSSimon Schubert   BFD_RELOC_M32R_24
37545796c8dcSSimon Schubert ENUMDOC
37555796c8dcSSimon Schubert   Renesas M32R (formerly Mitsubishi M32R) relocs.
37565796c8dcSSimon Schubert   This is a 24 bit absolute address.
37575796c8dcSSimon Schubert ENUM
37585796c8dcSSimon Schubert   BFD_RELOC_M32R_10_PCREL
37595796c8dcSSimon Schubert ENUMDOC
37605796c8dcSSimon Schubert   This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.
37615796c8dcSSimon Schubert ENUM
37625796c8dcSSimon Schubert   BFD_RELOC_M32R_18_PCREL
37635796c8dcSSimon Schubert ENUMDOC
37645796c8dcSSimon Schubert   This is an 18-bit reloc with the right 2 bits assumed to be 0.
37655796c8dcSSimon Schubert ENUM
37665796c8dcSSimon Schubert   BFD_RELOC_M32R_26_PCREL
37675796c8dcSSimon Schubert ENUMDOC
37685796c8dcSSimon Schubert   This is a 26-bit reloc with the right 2 bits assumed to be 0.
37695796c8dcSSimon Schubert ENUM
37705796c8dcSSimon Schubert   BFD_RELOC_M32R_HI16_ULO
37715796c8dcSSimon Schubert ENUMDOC
37725796c8dcSSimon Schubert   This is a 16-bit reloc containing the high 16 bits of an address
37735796c8dcSSimon Schubert   used when the lower 16 bits are treated as unsigned.
37745796c8dcSSimon Schubert ENUM
37755796c8dcSSimon Schubert   BFD_RELOC_M32R_HI16_SLO
37765796c8dcSSimon Schubert ENUMDOC
37775796c8dcSSimon Schubert   This is a 16-bit reloc containing the high 16 bits of an address
37785796c8dcSSimon Schubert   used when the lower 16 bits are treated as signed.
37795796c8dcSSimon Schubert ENUM
37805796c8dcSSimon Schubert   BFD_RELOC_M32R_LO16
37815796c8dcSSimon Schubert ENUMDOC
37825796c8dcSSimon Schubert   This is a 16-bit reloc containing the lower 16 bits of an address.
37835796c8dcSSimon Schubert ENUM
37845796c8dcSSimon Schubert   BFD_RELOC_M32R_SDA16
37855796c8dcSSimon Schubert ENUMDOC
37865796c8dcSSimon Schubert   This is a 16-bit reloc containing the small data area offset for use in
37875796c8dcSSimon Schubert   add3, load, and store instructions.
37885796c8dcSSimon Schubert ENUM
37895796c8dcSSimon Schubert   BFD_RELOC_M32R_GOT24
37905796c8dcSSimon Schubert ENUMX
37915796c8dcSSimon Schubert   BFD_RELOC_M32R_26_PLTREL
37925796c8dcSSimon Schubert ENUMX
37935796c8dcSSimon Schubert   BFD_RELOC_M32R_COPY
37945796c8dcSSimon Schubert ENUMX
37955796c8dcSSimon Schubert   BFD_RELOC_M32R_GLOB_DAT
37965796c8dcSSimon Schubert ENUMX
37975796c8dcSSimon Schubert   BFD_RELOC_M32R_JMP_SLOT
37985796c8dcSSimon Schubert ENUMX
37995796c8dcSSimon Schubert   BFD_RELOC_M32R_RELATIVE
38005796c8dcSSimon Schubert ENUMX
38015796c8dcSSimon Schubert   BFD_RELOC_M32R_GOTOFF
38025796c8dcSSimon Schubert ENUMX
38035796c8dcSSimon Schubert   BFD_RELOC_M32R_GOTOFF_HI_ULO
38045796c8dcSSimon Schubert ENUMX
38055796c8dcSSimon Schubert   BFD_RELOC_M32R_GOTOFF_HI_SLO
38065796c8dcSSimon Schubert ENUMX
38075796c8dcSSimon Schubert   BFD_RELOC_M32R_GOTOFF_LO
38085796c8dcSSimon Schubert ENUMX
38095796c8dcSSimon Schubert   BFD_RELOC_M32R_GOTPC24
38105796c8dcSSimon Schubert ENUMX
38115796c8dcSSimon Schubert   BFD_RELOC_M32R_GOT16_HI_ULO
38125796c8dcSSimon Schubert ENUMX
38135796c8dcSSimon Schubert   BFD_RELOC_M32R_GOT16_HI_SLO
38145796c8dcSSimon Schubert ENUMX
38155796c8dcSSimon Schubert   BFD_RELOC_M32R_GOT16_LO
38165796c8dcSSimon Schubert ENUMX
38175796c8dcSSimon Schubert   BFD_RELOC_M32R_GOTPC_HI_ULO
38185796c8dcSSimon Schubert ENUMX
38195796c8dcSSimon Schubert   BFD_RELOC_M32R_GOTPC_HI_SLO
38205796c8dcSSimon Schubert ENUMX
38215796c8dcSSimon Schubert   BFD_RELOC_M32R_GOTPC_LO
38225796c8dcSSimon Schubert ENUMDOC
38235796c8dcSSimon Schubert   For PIC.
38245796c8dcSSimon Schubert 
38255796c8dcSSimon Schubert 
38265796c8dcSSimon Schubert ENUM
38275796c8dcSSimon Schubert   BFD_RELOC_V850_9_PCREL
38285796c8dcSSimon Schubert ENUMDOC
38295796c8dcSSimon Schubert   This is a 9-bit reloc
38305796c8dcSSimon Schubert ENUM
38315796c8dcSSimon Schubert   BFD_RELOC_V850_22_PCREL
38325796c8dcSSimon Schubert ENUMDOC
38335796c8dcSSimon Schubert   This is a 22-bit reloc
38345796c8dcSSimon Schubert 
38355796c8dcSSimon Schubert ENUM
38365796c8dcSSimon Schubert   BFD_RELOC_V850_SDA_16_16_OFFSET
38375796c8dcSSimon Schubert ENUMDOC
38385796c8dcSSimon Schubert   This is a 16 bit offset from the short data area pointer.
38395796c8dcSSimon Schubert ENUM
38405796c8dcSSimon Schubert   BFD_RELOC_V850_SDA_15_16_OFFSET
38415796c8dcSSimon Schubert ENUMDOC
38425796c8dcSSimon Schubert   This is a 16 bit offset (of which only 15 bits are used) from the
38435796c8dcSSimon Schubert   short data area pointer.
38445796c8dcSSimon Schubert ENUM
38455796c8dcSSimon Schubert   BFD_RELOC_V850_ZDA_16_16_OFFSET
38465796c8dcSSimon Schubert ENUMDOC
38475796c8dcSSimon Schubert   This is a 16 bit offset from the zero data area pointer.
38485796c8dcSSimon Schubert ENUM
38495796c8dcSSimon Schubert   BFD_RELOC_V850_ZDA_15_16_OFFSET
38505796c8dcSSimon Schubert ENUMDOC
38515796c8dcSSimon Schubert   This is a 16 bit offset (of which only 15 bits are used) from the
38525796c8dcSSimon Schubert   zero data area pointer.
38535796c8dcSSimon Schubert ENUM
38545796c8dcSSimon Schubert   BFD_RELOC_V850_TDA_6_8_OFFSET
38555796c8dcSSimon Schubert ENUMDOC
38565796c8dcSSimon Schubert   This is an 8 bit offset (of which only 6 bits are used) from the
38575796c8dcSSimon Schubert   tiny data area pointer.
38585796c8dcSSimon Schubert ENUM
38595796c8dcSSimon Schubert   BFD_RELOC_V850_TDA_7_8_OFFSET
38605796c8dcSSimon Schubert ENUMDOC
38615796c8dcSSimon Schubert   This is an 8bit offset (of which only 7 bits are used) from the tiny
38625796c8dcSSimon Schubert   data area pointer.
38635796c8dcSSimon Schubert ENUM
38645796c8dcSSimon Schubert   BFD_RELOC_V850_TDA_7_7_OFFSET
38655796c8dcSSimon Schubert ENUMDOC
38665796c8dcSSimon Schubert   This is a 7 bit offset from the tiny data area pointer.
38675796c8dcSSimon Schubert ENUM
38685796c8dcSSimon Schubert   BFD_RELOC_V850_TDA_16_16_OFFSET
38695796c8dcSSimon Schubert ENUMDOC
38705796c8dcSSimon Schubert   This is a 16 bit offset from the tiny data area pointer.
38715796c8dcSSimon Schubert COMMENT
38725796c8dcSSimon Schubert ENUM
38735796c8dcSSimon Schubert   BFD_RELOC_V850_TDA_4_5_OFFSET
38745796c8dcSSimon Schubert ENUMDOC
38755796c8dcSSimon Schubert   This is a 5 bit offset (of which only 4 bits are used) from the tiny
38765796c8dcSSimon Schubert   data area pointer.
38775796c8dcSSimon Schubert ENUM
38785796c8dcSSimon Schubert   BFD_RELOC_V850_TDA_4_4_OFFSET
38795796c8dcSSimon Schubert ENUMDOC
38805796c8dcSSimon Schubert   This is a 4 bit offset from the tiny data area pointer.
38815796c8dcSSimon Schubert ENUM
38825796c8dcSSimon Schubert   BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET
38835796c8dcSSimon Schubert ENUMDOC
38845796c8dcSSimon Schubert   This is a 16 bit offset from the short data area pointer, with the
38855796c8dcSSimon Schubert   bits placed non-contiguously in the instruction.
38865796c8dcSSimon Schubert ENUM
38875796c8dcSSimon Schubert   BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET
38885796c8dcSSimon Schubert ENUMDOC
38895796c8dcSSimon Schubert   This is a 16 bit offset from the zero data area pointer, with the
38905796c8dcSSimon Schubert   bits placed non-contiguously in the instruction.
38915796c8dcSSimon Schubert ENUM
38925796c8dcSSimon Schubert   BFD_RELOC_V850_CALLT_6_7_OFFSET
38935796c8dcSSimon Schubert ENUMDOC
38945796c8dcSSimon Schubert   This is a 6 bit offset from the call table base pointer.
38955796c8dcSSimon Schubert ENUM
38965796c8dcSSimon Schubert   BFD_RELOC_V850_CALLT_16_16_OFFSET
38975796c8dcSSimon Schubert ENUMDOC
38985796c8dcSSimon Schubert   This is a 16 bit offset from the call table base pointer.
38995796c8dcSSimon Schubert ENUM
39005796c8dcSSimon Schubert   BFD_RELOC_V850_LONGCALL
39015796c8dcSSimon Schubert ENUMDOC
39025796c8dcSSimon Schubert   Used for relaxing indirect function calls.
39035796c8dcSSimon Schubert ENUM
39045796c8dcSSimon Schubert   BFD_RELOC_V850_LONGJUMP
39055796c8dcSSimon Schubert ENUMDOC
39065796c8dcSSimon Schubert   Used for relaxing indirect jumps.
39075796c8dcSSimon Schubert ENUM
39085796c8dcSSimon Schubert   BFD_RELOC_V850_ALIGN
39095796c8dcSSimon Schubert ENUMDOC
39105796c8dcSSimon Schubert   Used to maintain alignment whilst relaxing.
39115796c8dcSSimon Schubert ENUM
39125796c8dcSSimon Schubert   BFD_RELOC_V850_LO16_SPLIT_OFFSET
39135796c8dcSSimon Schubert ENUMDOC
39145796c8dcSSimon Schubert   This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
39155796c8dcSSimon Schubert   instructions.
39165796c8dcSSimon Schubert ENUM
3917c50c785cSJohn Marino   BFD_RELOC_V850_16_PCREL
3918c50c785cSJohn Marino ENUMDOC
3919c50c785cSJohn Marino   This is a 16-bit reloc.
3920c50c785cSJohn Marino ENUM
3921c50c785cSJohn Marino   BFD_RELOC_V850_17_PCREL
3922c50c785cSJohn Marino ENUMDOC
3923c50c785cSJohn Marino   This is a 17-bit reloc.
3924c50c785cSJohn Marino ENUM
3925c50c785cSJohn Marino   BFD_RELOC_V850_23
3926c50c785cSJohn Marino ENUMDOC
3927c50c785cSJohn Marino   This is a 23-bit reloc.
3928c50c785cSJohn Marino ENUM
3929c50c785cSJohn Marino   BFD_RELOC_V850_32_PCREL
3930c50c785cSJohn Marino ENUMDOC
3931c50c785cSJohn Marino   This is a 32-bit reloc.
3932c50c785cSJohn Marino ENUM
3933c50c785cSJohn Marino   BFD_RELOC_V850_32_ABS
3934c50c785cSJohn Marino ENUMDOC
3935c50c785cSJohn Marino   This is a 32-bit reloc.
3936c50c785cSJohn Marino ENUM
3937c50c785cSJohn Marino   BFD_RELOC_V850_16_SPLIT_OFFSET
3938c50c785cSJohn Marino ENUMDOC
3939c50c785cSJohn Marino   This is a 16-bit reloc.
3940c50c785cSJohn Marino ENUM
3941c50c785cSJohn Marino   BFD_RELOC_V850_16_S1
3942c50c785cSJohn Marino ENUMDOC
3943c50c785cSJohn Marino   This is a 16-bit reloc.
3944c50c785cSJohn Marino ENUM
3945c50c785cSJohn Marino   BFD_RELOC_V850_LO16_S1
3946c50c785cSJohn Marino ENUMDOC
3947c50c785cSJohn Marino   Low 16 bits. 16 bit shifted by 1.
3948c50c785cSJohn Marino ENUM
3949c50c785cSJohn Marino   BFD_RELOC_V850_CALLT_15_16_OFFSET
3950c50c785cSJohn Marino ENUMDOC
3951c50c785cSJohn Marino   This is a 16 bit offset from the call table base pointer.
3952c50c785cSJohn Marino ENUM
3953c50c785cSJohn Marino   BFD_RELOC_V850_32_GOTPCREL
3954c50c785cSJohn Marino ENUMDOC
3955c50c785cSJohn Marino   DSO relocations.
3956c50c785cSJohn Marino ENUM
3957c50c785cSJohn Marino   BFD_RELOC_V850_16_GOT
3958c50c785cSJohn Marino ENUMDOC
3959c50c785cSJohn Marino   DSO relocations.
3960c50c785cSJohn Marino ENUM
3961c50c785cSJohn Marino   BFD_RELOC_V850_32_GOT
3962c50c785cSJohn Marino ENUMDOC
3963c50c785cSJohn Marino   DSO relocations.
3964c50c785cSJohn Marino ENUM
3965c50c785cSJohn Marino   BFD_RELOC_V850_22_PLT_PCREL
3966c50c785cSJohn Marino ENUMDOC
3967c50c785cSJohn Marino   DSO relocations.
3968c50c785cSJohn Marino ENUM
3969c50c785cSJohn Marino   BFD_RELOC_V850_32_PLT_PCREL
3970c50c785cSJohn Marino ENUMDOC
3971c50c785cSJohn Marino   DSO relocations.
3972c50c785cSJohn Marino ENUM
3973c50c785cSJohn Marino   BFD_RELOC_V850_COPY
3974c50c785cSJohn Marino ENUMDOC
3975c50c785cSJohn Marino   DSO relocations.
3976c50c785cSJohn Marino ENUM
3977c50c785cSJohn Marino   BFD_RELOC_V850_GLOB_DAT
3978c50c785cSJohn Marino ENUMDOC
3979c50c785cSJohn Marino   DSO relocations.
3980c50c785cSJohn Marino ENUM
3981c50c785cSJohn Marino   BFD_RELOC_V850_JMP_SLOT
3982c50c785cSJohn Marino ENUMDOC
3983c50c785cSJohn Marino   DSO relocations.
3984c50c785cSJohn Marino ENUM
3985c50c785cSJohn Marino   BFD_RELOC_V850_RELATIVE
3986c50c785cSJohn Marino ENUMDOC
3987c50c785cSJohn Marino   DSO relocations.
3988c50c785cSJohn Marino ENUM
3989c50c785cSJohn Marino   BFD_RELOC_V850_16_GOTOFF
3990c50c785cSJohn Marino ENUMDOC
3991c50c785cSJohn Marino   DSO relocations.
3992c50c785cSJohn Marino ENUM
3993c50c785cSJohn Marino   BFD_RELOC_V850_32_GOTOFF
3994c50c785cSJohn Marino ENUMDOC
3995c50c785cSJohn Marino   DSO relocations.
3996c50c785cSJohn Marino ENUM
3997c50c785cSJohn Marino   BFD_RELOC_V850_CODE
3998c50c785cSJohn Marino ENUMDOC
3999c50c785cSJohn Marino   start code.
4000c50c785cSJohn Marino ENUM
4001c50c785cSJohn Marino   BFD_RELOC_V850_DATA
4002c50c785cSJohn Marino ENUMDOC
4003c50c785cSJohn Marino   start data in text.
40045796c8dcSSimon Schubert 
40055796c8dcSSimon Schubert ENUM
40065796c8dcSSimon Schubert   BFD_RELOC_TIC30_LDP
40075796c8dcSSimon Schubert ENUMDOC
40085796c8dcSSimon Schubert   This is a 8bit DP reloc for the tms320c30, where the most
40095796c8dcSSimon Schubert   significant 8 bits of a 24 bit word are placed into the least
40105796c8dcSSimon Schubert   significant 8 bits of the opcode.
40115796c8dcSSimon Schubert 
40125796c8dcSSimon Schubert ENUM
40135796c8dcSSimon Schubert   BFD_RELOC_TIC54X_PARTLS7
40145796c8dcSSimon Schubert ENUMDOC
40155796c8dcSSimon Schubert   This is a 7bit reloc for the tms320c54x, where the least
40165796c8dcSSimon Schubert   significant 7 bits of a 16 bit word are placed into the least
40175796c8dcSSimon Schubert   significant 7 bits of the opcode.
40185796c8dcSSimon Schubert 
40195796c8dcSSimon Schubert ENUM
40205796c8dcSSimon Schubert   BFD_RELOC_TIC54X_PARTMS9
40215796c8dcSSimon Schubert ENUMDOC
40225796c8dcSSimon Schubert   This is a 9bit DP reloc for the tms320c54x, where the most
40235796c8dcSSimon Schubert   significant 9 bits of a 16 bit word are placed into the least
40245796c8dcSSimon Schubert   significant 9 bits of the opcode.
40255796c8dcSSimon Schubert 
40265796c8dcSSimon Schubert ENUM
40275796c8dcSSimon Schubert   BFD_RELOC_TIC54X_23
40285796c8dcSSimon Schubert ENUMDOC
40295796c8dcSSimon Schubert   This is an extended address 23-bit reloc for the tms320c54x.
40305796c8dcSSimon Schubert 
40315796c8dcSSimon Schubert ENUM
40325796c8dcSSimon Schubert   BFD_RELOC_TIC54X_16_OF_23
40335796c8dcSSimon Schubert ENUMDOC
40345796c8dcSSimon Schubert   This is a 16-bit reloc for the tms320c54x, where the least
40355796c8dcSSimon Schubert   significant 16 bits of a 23-bit extended address are placed into
40365796c8dcSSimon Schubert   the opcode.
40375796c8dcSSimon Schubert 
40385796c8dcSSimon Schubert ENUM
40395796c8dcSSimon Schubert   BFD_RELOC_TIC54X_MS7_OF_23
40405796c8dcSSimon Schubert ENUMDOC
40415796c8dcSSimon Schubert   This is a reloc for the tms320c54x, where the most
40425796c8dcSSimon Schubert   significant 7 bits of a 23-bit extended address are placed into
40435796c8dcSSimon Schubert   the opcode.
40445796c8dcSSimon Schubert 
40455796c8dcSSimon Schubert ENUM
4046cf7f2e2dSJohn Marino   BFD_RELOC_C6000_PCR_S21
4047cf7f2e2dSJohn Marino ENUMX
4048cf7f2e2dSJohn Marino   BFD_RELOC_C6000_PCR_S12
4049cf7f2e2dSJohn Marino ENUMX
4050cf7f2e2dSJohn Marino   BFD_RELOC_C6000_PCR_S10
4051cf7f2e2dSJohn Marino ENUMX
4052cf7f2e2dSJohn Marino   BFD_RELOC_C6000_PCR_S7
4053cf7f2e2dSJohn Marino ENUMX
4054cf7f2e2dSJohn Marino   BFD_RELOC_C6000_ABS_S16
4055cf7f2e2dSJohn Marino ENUMX
4056cf7f2e2dSJohn Marino   BFD_RELOC_C6000_ABS_L16
4057cf7f2e2dSJohn Marino ENUMX
4058cf7f2e2dSJohn Marino   BFD_RELOC_C6000_ABS_H16
4059cf7f2e2dSJohn Marino ENUMX
4060cf7f2e2dSJohn Marino   BFD_RELOC_C6000_SBR_U15_B
4061cf7f2e2dSJohn Marino ENUMX
4062cf7f2e2dSJohn Marino   BFD_RELOC_C6000_SBR_U15_H
4063cf7f2e2dSJohn Marino ENUMX
4064cf7f2e2dSJohn Marino   BFD_RELOC_C6000_SBR_U15_W
4065cf7f2e2dSJohn Marino ENUMX
4066cf7f2e2dSJohn Marino   BFD_RELOC_C6000_SBR_S16
4067cf7f2e2dSJohn Marino ENUMX
4068cf7f2e2dSJohn Marino   BFD_RELOC_C6000_SBR_L16_B
4069cf7f2e2dSJohn Marino ENUMX
4070cf7f2e2dSJohn Marino   BFD_RELOC_C6000_SBR_L16_H
4071cf7f2e2dSJohn Marino ENUMX
4072cf7f2e2dSJohn Marino   BFD_RELOC_C6000_SBR_L16_W
4073cf7f2e2dSJohn Marino ENUMX
4074cf7f2e2dSJohn Marino   BFD_RELOC_C6000_SBR_H16_B
4075cf7f2e2dSJohn Marino ENUMX
4076cf7f2e2dSJohn Marino   BFD_RELOC_C6000_SBR_H16_H
4077cf7f2e2dSJohn Marino ENUMX
4078cf7f2e2dSJohn Marino   BFD_RELOC_C6000_SBR_H16_W
4079cf7f2e2dSJohn Marino ENUMX
4080cf7f2e2dSJohn Marino   BFD_RELOC_C6000_SBR_GOT_U15_W
4081cf7f2e2dSJohn Marino ENUMX
4082cf7f2e2dSJohn Marino   BFD_RELOC_C6000_SBR_GOT_L16_W
4083cf7f2e2dSJohn Marino ENUMX
4084cf7f2e2dSJohn Marino   BFD_RELOC_C6000_SBR_GOT_H16_W
4085cf7f2e2dSJohn Marino ENUMX
4086cf7f2e2dSJohn Marino   BFD_RELOC_C6000_DSBT_INDEX
4087cf7f2e2dSJohn Marino ENUMX
4088cf7f2e2dSJohn Marino   BFD_RELOC_C6000_PREL31
4089cf7f2e2dSJohn Marino ENUMX
4090cf7f2e2dSJohn Marino   BFD_RELOC_C6000_COPY
4091cf7f2e2dSJohn Marino ENUMX
4092c50c785cSJohn Marino   BFD_RELOC_C6000_JUMP_SLOT
4093c50c785cSJohn Marino ENUMX
4094c50c785cSJohn Marino   BFD_RELOC_C6000_EHTYPE
4095c50c785cSJohn Marino ENUMX
4096c50c785cSJohn Marino   BFD_RELOC_C6000_PCR_H16
4097c50c785cSJohn Marino ENUMX
4098c50c785cSJohn Marino   BFD_RELOC_C6000_PCR_L16
4099c50c785cSJohn Marino ENUMX
4100cf7f2e2dSJohn Marino   BFD_RELOC_C6000_ALIGN
4101cf7f2e2dSJohn Marino ENUMX
4102cf7f2e2dSJohn Marino   BFD_RELOC_C6000_FPHEAD
4103cf7f2e2dSJohn Marino ENUMX
4104cf7f2e2dSJohn Marino   BFD_RELOC_C6000_NOCMP
4105cf7f2e2dSJohn Marino ENUMDOC
4106cf7f2e2dSJohn Marino   TMS320C6000 relocations.
4107cf7f2e2dSJohn Marino 
4108cf7f2e2dSJohn Marino ENUM
41095796c8dcSSimon Schubert   BFD_RELOC_FR30_48
41105796c8dcSSimon Schubert ENUMDOC
41115796c8dcSSimon Schubert   This is a 48 bit reloc for the FR30 that stores 32 bits.
41125796c8dcSSimon Schubert ENUM
41135796c8dcSSimon Schubert   BFD_RELOC_FR30_20
41145796c8dcSSimon Schubert ENUMDOC
41155796c8dcSSimon Schubert   This is a 32 bit reloc for the FR30 that stores 20 bits split up into
41165796c8dcSSimon Schubert   two sections.
41175796c8dcSSimon Schubert ENUM
41185796c8dcSSimon Schubert   BFD_RELOC_FR30_6_IN_4
41195796c8dcSSimon Schubert ENUMDOC
41205796c8dcSSimon Schubert   This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
41215796c8dcSSimon Schubert   4 bits.
41225796c8dcSSimon Schubert ENUM
41235796c8dcSSimon Schubert   BFD_RELOC_FR30_8_IN_8
41245796c8dcSSimon Schubert ENUMDOC
41255796c8dcSSimon Schubert   This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
41265796c8dcSSimon Schubert   into 8 bits.
41275796c8dcSSimon Schubert ENUM
41285796c8dcSSimon Schubert   BFD_RELOC_FR30_9_IN_8
41295796c8dcSSimon Schubert ENUMDOC
41305796c8dcSSimon Schubert   This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
41315796c8dcSSimon Schubert   into 8 bits.
41325796c8dcSSimon Schubert ENUM
41335796c8dcSSimon Schubert   BFD_RELOC_FR30_10_IN_8
41345796c8dcSSimon Schubert ENUMDOC
41355796c8dcSSimon Schubert   This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
41365796c8dcSSimon Schubert   into 8 bits.
41375796c8dcSSimon Schubert ENUM
41385796c8dcSSimon Schubert   BFD_RELOC_FR30_9_PCREL
41395796c8dcSSimon Schubert ENUMDOC
41405796c8dcSSimon Schubert   This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
41415796c8dcSSimon Schubert   short offset into 8 bits.
41425796c8dcSSimon Schubert ENUM
41435796c8dcSSimon Schubert   BFD_RELOC_FR30_12_PCREL
41445796c8dcSSimon Schubert ENUMDOC
41455796c8dcSSimon Schubert   This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
41465796c8dcSSimon Schubert   short offset into 11 bits.
41475796c8dcSSimon Schubert 
41485796c8dcSSimon Schubert ENUM
41495796c8dcSSimon Schubert   BFD_RELOC_MCORE_PCREL_IMM8BY4
41505796c8dcSSimon Schubert ENUMX
41515796c8dcSSimon Schubert   BFD_RELOC_MCORE_PCREL_IMM11BY2
41525796c8dcSSimon Schubert ENUMX
41535796c8dcSSimon Schubert   BFD_RELOC_MCORE_PCREL_IMM4BY2
41545796c8dcSSimon Schubert ENUMX
41555796c8dcSSimon Schubert   BFD_RELOC_MCORE_PCREL_32
41565796c8dcSSimon Schubert ENUMX
41575796c8dcSSimon Schubert   BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2
41585796c8dcSSimon Schubert ENUMX
41595796c8dcSSimon Schubert   BFD_RELOC_MCORE_RVA
41605796c8dcSSimon Schubert ENUMDOC
41615796c8dcSSimon Schubert   Motorola Mcore relocations.
41625796c8dcSSimon Schubert 
41635796c8dcSSimon Schubert ENUM
41645796c8dcSSimon Schubert   BFD_RELOC_MEP_8
41655796c8dcSSimon Schubert ENUMX
41665796c8dcSSimon Schubert   BFD_RELOC_MEP_16
41675796c8dcSSimon Schubert ENUMX
41685796c8dcSSimon Schubert   BFD_RELOC_MEP_32
41695796c8dcSSimon Schubert ENUMX
41705796c8dcSSimon Schubert   BFD_RELOC_MEP_PCREL8A2
41715796c8dcSSimon Schubert ENUMX
41725796c8dcSSimon Schubert   BFD_RELOC_MEP_PCREL12A2
41735796c8dcSSimon Schubert ENUMX
41745796c8dcSSimon Schubert   BFD_RELOC_MEP_PCREL17A2
41755796c8dcSSimon Schubert ENUMX
41765796c8dcSSimon Schubert   BFD_RELOC_MEP_PCREL24A2
41775796c8dcSSimon Schubert ENUMX
41785796c8dcSSimon Schubert   BFD_RELOC_MEP_PCABS24A2
41795796c8dcSSimon Schubert ENUMX
41805796c8dcSSimon Schubert   BFD_RELOC_MEP_LOW16
41815796c8dcSSimon Schubert ENUMX
41825796c8dcSSimon Schubert   BFD_RELOC_MEP_HI16U
41835796c8dcSSimon Schubert ENUMX
41845796c8dcSSimon Schubert   BFD_RELOC_MEP_HI16S
41855796c8dcSSimon Schubert ENUMX
41865796c8dcSSimon Schubert   BFD_RELOC_MEP_GPREL
41875796c8dcSSimon Schubert ENUMX
41885796c8dcSSimon Schubert   BFD_RELOC_MEP_TPREL
41895796c8dcSSimon Schubert ENUMX
41905796c8dcSSimon Schubert   BFD_RELOC_MEP_TPREL7
41915796c8dcSSimon Schubert ENUMX
41925796c8dcSSimon Schubert   BFD_RELOC_MEP_TPREL7A2
41935796c8dcSSimon Schubert ENUMX
41945796c8dcSSimon Schubert   BFD_RELOC_MEP_TPREL7A4
41955796c8dcSSimon Schubert ENUMX
41965796c8dcSSimon Schubert   BFD_RELOC_MEP_UIMM24
41975796c8dcSSimon Schubert ENUMX
41985796c8dcSSimon Schubert   BFD_RELOC_MEP_ADDR24A4
41995796c8dcSSimon Schubert ENUMX
42005796c8dcSSimon Schubert   BFD_RELOC_MEP_GNU_VTINHERIT
42015796c8dcSSimon Schubert ENUMX
42025796c8dcSSimon Schubert   BFD_RELOC_MEP_GNU_VTENTRY
42035796c8dcSSimon Schubert ENUMDOC
42045796c8dcSSimon Schubert   Toshiba Media Processor Relocations.
42055796c8dcSSimon Schubert COMMENT
42065796c8dcSSimon Schubert 
42075796c8dcSSimon Schubert ENUM
4208*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_HIADDR16
4209*ef5ccd6cSJohn Marino ENUMX
4210*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_LOADDR16
4211*ef5ccd6cSJohn Marino ENUMX
4212*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_RELBRANCH
4213*ef5ccd6cSJohn Marino ENUMX
4214*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_GETSETOFF
4215*ef5ccd6cSJohn Marino ENUMX
4216*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_HIOG
4217*ef5ccd6cSJohn Marino ENUMX
4218*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_LOOG
4219*ef5ccd6cSJohn Marino ENUMX
4220*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_REL8
4221*ef5ccd6cSJohn Marino ENUMX
4222*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_REL16
4223*ef5ccd6cSJohn Marino ENUMX
4224*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_HI16_GOTOFF
4225*ef5ccd6cSJohn Marino ENUMX
4226*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_LO16_GOTOFF
4227*ef5ccd6cSJohn Marino ENUMX
4228*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_GETSET_GOTOFF
4229*ef5ccd6cSJohn Marino ENUMX
4230*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_GETSET_GOT
4231*ef5ccd6cSJohn Marino ENUMX
4232*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_HI16_GOTPC
4233*ef5ccd6cSJohn Marino ENUMX
4234*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_LO16_GOTPC
4235*ef5ccd6cSJohn Marino ENUMX
4236*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_HI16_PLT
4237*ef5ccd6cSJohn Marino ENUMX
4238*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_LO16_PLT
4239*ef5ccd6cSJohn Marino ENUMX
4240*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_RELBRANCH_PLT
4241*ef5ccd6cSJohn Marino ENUMX
4242*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_GOTOFF
4243*ef5ccd6cSJohn Marino ENUMX
4244*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_PLT
4245*ef5ccd6cSJohn Marino ENUMX
4246*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_COPY
4247*ef5ccd6cSJohn Marino ENUMX
4248*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_JMP_SLOT
4249*ef5ccd6cSJohn Marino ENUMX
4250*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_RELATIVE
4251*ef5ccd6cSJohn Marino ENUMX
4252*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_GLOB_DAT
4253*ef5ccd6cSJohn Marino ENUMX
4254*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_TLS_GD
4255*ef5ccd6cSJohn Marino ENUMX
4256*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_TLS_LDM
4257*ef5ccd6cSJohn Marino ENUMX
4258*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_TLS_LDO_HI16
4259*ef5ccd6cSJohn Marino ENUMX
4260*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_TLS_LDO_LO16
4261*ef5ccd6cSJohn Marino ENUMX
4262*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_TLS_LDO
4263*ef5ccd6cSJohn Marino ENUMX
4264*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_TLS_IE
4265*ef5ccd6cSJohn Marino ENUMX
4266*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_TLS_IENONPIC
4267*ef5ccd6cSJohn Marino ENUMX
4268*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_TLS_IENONPIC_HI16
4269*ef5ccd6cSJohn Marino ENUMX
4270*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_TLS_IENONPIC_LO16
4271*ef5ccd6cSJohn Marino ENUMX
4272*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_TLS_TPOFF
4273*ef5ccd6cSJohn Marino ENUMX
4274*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_TLS_DTPMOD
4275*ef5ccd6cSJohn Marino ENUMX
4276*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_TLS_DTPOFF
4277*ef5ccd6cSJohn Marino ENUMX
4278*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_TLS_LE
4279*ef5ccd6cSJohn Marino ENUMX
4280*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_TLS_LE_HI16
4281*ef5ccd6cSJohn Marino ENUMX
4282*ef5ccd6cSJohn Marino   BFD_RELOC_METAG_TLS_LE_LO16
4283*ef5ccd6cSJohn Marino ENUMDOC
4284*ef5ccd6cSJohn Marino   Imagination Technologies Meta relocations.
4285*ef5ccd6cSJohn Marino 
4286*ef5ccd6cSJohn Marino ENUM
42875796c8dcSSimon Schubert   BFD_RELOC_MMIX_GETA
42885796c8dcSSimon Schubert ENUMX
42895796c8dcSSimon Schubert   BFD_RELOC_MMIX_GETA_1
42905796c8dcSSimon Schubert ENUMX
42915796c8dcSSimon Schubert   BFD_RELOC_MMIX_GETA_2
42925796c8dcSSimon Schubert ENUMX
42935796c8dcSSimon Schubert   BFD_RELOC_MMIX_GETA_3
42945796c8dcSSimon Schubert ENUMDOC
42955796c8dcSSimon Schubert   These are relocations for the GETA instruction.
42965796c8dcSSimon Schubert ENUM
42975796c8dcSSimon Schubert   BFD_RELOC_MMIX_CBRANCH
42985796c8dcSSimon Schubert ENUMX
42995796c8dcSSimon Schubert   BFD_RELOC_MMIX_CBRANCH_J
43005796c8dcSSimon Schubert ENUMX
43015796c8dcSSimon Schubert   BFD_RELOC_MMIX_CBRANCH_1
43025796c8dcSSimon Schubert ENUMX
43035796c8dcSSimon Schubert   BFD_RELOC_MMIX_CBRANCH_2
43045796c8dcSSimon Schubert ENUMX
43055796c8dcSSimon Schubert   BFD_RELOC_MMIX_CBRANCH_3
43065796c8dcSSimon Schubert ENUMDOC
43075796c8dcSSimon Schubert   These are relocations for a conditional branch instruction.
43085796c8dcSSimon Schubert ENUM
43095796c8dcSSimon Schubert   BFD_RELOC_MMIX_PUSHJ
43105796c8dcSSimon Schubert ENUMX
43115796c8dcSSimon Schubert   BFD_RELOC_MMIX_PUSHJ_1
43125796c8dcSSimon Schubert ENUMX
43135796c8dcSSimon Schubert   BFD_RELOC_MMIX_PUSHJ_2
43145796c8dcSSimon Schubert ENUMX
43155796c8dcSSimon Schubert   BFD_RELOC_MMIX_PUSHJ_3
43165796c8dcSSimon Schubert ENUMX
43175796c8dcSSimon Schubert   BFD_RELOC_MMIX_PUSHJ_STUBBABLE
43185796c8dcSSimon Schubert ENUMDOC
43195796c8dcSSimon Schubert   These are relocations for the PUSHJ instruction.
43205796c8dcSSimon Schubert ENUM
43215796c8dcSSimon Schubert   BFD_RELOC_MMIX_JMP
43225796c8dcSSimon Schubert ENUMX
43235796c8dcSSimon Schubert   BFD_RELOC_MMIX_JMP_1
43245796c8dcSSimon Schubert ENUMX
43255796c8dcSSimon Schubert   BFD_RELOC_MMIX_JMP_2
43265796c8dcSSimon Schubert ENUMX
43275796c8dcSSimon Schubert   BFD_RELOC_MMIX_JMP_3
43285796c8dcSSimon Schubert ENUMDOC
43295796c8dcSSimon Schubert   These are relocations for the JMP instruction.
43305796c8dcSSimon Schubert ENUM
43315796c8dcSSimon Schubert   BFD_RELOC_MMIX_ADDR19
43325796c8dcSSimon Schubert ENUMDOC
43335796c8dcSSimon Schubert   This is a relocation for a relative address as in a GETA instruction or
43345796c8dcSSimon Schubert   a branch.
43355796c8dcSSimon Schubert ENUM
43365796c8dcSSimon Schubert   BFD_RELOC_MMIX_ADDR27
43375796c8dcSSimon Schubert ENUMDOC
43385796c8dcSSimon Schubert   This is a relocation for a relative address as in a JMP instruction.
43395796c8dcSSimon Schubert ENUM
43405796c8dcSSimon Schubert   BFD_RELOC_MMIX_REG_OR_BYTE
43415796c8dcSSimon Schubert ENUMDOC
43425796c8dcSSimon Schubert   This is a relocation for an instruction field that may be a general
43435796c8dcSSimon Schubert   register or a value 0..255.
43445796c8dcSSimon Schubert ENUM
43455796c8dcSSimon Schubert   BFD_RELOC_MMIX_REG
43465796c8dcSSimon Schubert ENUMDOC
43475796c8dcSSimon Schubert   This is a relocation for an instruction field that may be a general
43485796c8dcSSimon Schubert   register.
43495796c8dcSSimon Schubert ENUM
43505796c8dcSSimon Schubert   BFD_RELOC_MMIX_BASE_PLUS_OFFSET
43515796c8dcSSimon Schubert ENUMDOC
43525796c8dcSSimon Schubert   This is a relocation for two instruction fields holding a register and
43535796c8dcSSimon Schubert   an offset, the equivalent of the relocation.
43545796c8dcSSimon Schubert ENUM
43555796c8dcSSimon Schubert   BFD_RELOC_MMIX_LOCAL
43565796c8dcSSimon Schubert ENUMDOC
43575796c8dcSSimon Schubert   This relocation is an assertion that the expression is not allocated as
43585796c8dcSSimon Schubert   a global register.  It does not modify contents.
43595796c8dcSSimon Schubert 
43605796c8dcSSimon Schubert ENUM
43615796c8dcSSimon Schubert   BFD_RELOC_AVR_7_PCREL
43625796c8dcSSimon Schubert ENUMDOC
43635796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores 8 bit pc relative
43645796c8dcSSimon Schubert   short offset into 7 bits.
43655796c8dcSSimon Schubert ENUM
43665796c8dcSSimon Schubert   BFD_RELOC_AVR_13_PCREL
43675796c8dcSSimon Schubert ENUMDOC
43685796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores 13 bit pc relative
43695796c8dcSSimon Schubert   short offset into 12 bits.
43705796c8dcSSimon Schubert ENUM
43715796c8dcSSimon Schubert   BFD_RELOC_AVR_16_PM
43725796c8dcSSimon Schubert ENUMDOC
43735796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores 17 bit value (usually
43745796c8dcSSimon Schubert   program memory address) into 16 bits.
43755796c8dcSSimon Schubert ENUM
43765796c8dcSSimon Schubert   BFD_RELOC_AVR_LO8_LDI
43775796c8dcSSimon Schubert ENUMDOC
43785796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores 8 bit value (usually
43795796c8dcSSimon Schubert   data memory address) into 8 bit immediate value of LDI insn.
43805796c8dcSSimon Schubert ENUM
43815796c8dcSSimon Schubert   BFD_RELOC_AVR_HI8_LDI
43825796c8dcSSimon Schubert ENUMDOC
43835796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
43845796c8dcSSimon Schubert   of data memory address) into 8 bit immediate value of LDI insn.
43855796c8dcSSimon Schubert ENUM
43865796c8dcSSimon Schubert   BFD_RELOC_AVR_HH8_LDI
43875796c8dcSSimon Schubert ENUMDOC
43885796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
43895796c8dcSSimon Schubert   of program memory address) into 8 bit immediate value of LDI insn.
43905796c8dcSSimon Schubert ENUM
43915796c8dcSSimon Schubert   BFD_RELOC_AVR_MS8_LDI
43925796c8dcSSimon Schubert ENUMDOC
43935796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
43945796c8dcSSimon Schubert   of 32 bit value) into 8 bit immediate value of LDI insn.
43955796c8dcSSimon Schubert ENUM
43965796c8dcSSimon Schubert   BFD_RELOC_AVR_LO8_LDI_NEG
43975796c8dcSSimon Schubert ENUMDOC
43985796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores negated 8 bit value
43995796c8dcSSimon Schubert   (usually data memory address) into 8 bit immediate value of SUBI insn.
44005796c8dcSSimon Schubert ENUM
44015796c8dcSSimon Schubert   BFD_RELOC_AVR_HI8_LDI_NEG
44025796c8dcSSimon Schubert ENUMDOC
44035796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores negated 8 bit value
44045796c8dcSSimon Schubert   (high 8 bit of data memory address) into 8 bit immediate value of
44055796c8dcSSimon Schubert   SUBI insn.
44065796c8dcSSimon Schubert ENUM
44075796c8dcSSimon Schubert   BFD_RELOC_AVR_HH8_LDI_NEG
44085796c8dcSSimon Schubert ENUMDOC
44095796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores negated 8 bit value
44105796c8dcSSimon Schubert   (most high 8 bit of program memory address) into 8 bit immediate value
44115796c8dcSSimon Schubert   of LDI or SUBI insn.
44125796c8dcSSimon Schubert ENUM
44135796c8dcSSimon Schubert   BFD_RELOC_AVR_MS8_LDI_NEG
44145796c8dcSSimon Schubert ENUMDOC
44155796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
44165796c8dcSSimon Schubert   of 32 bit value) into 8 bit immediate value of LDI insn.
44175796c8dcSSimon Schubert ENUM
44185796c8dcSSimon Schubert   BFD_RELOC_AVR_LO8_LDI_PM
44195796c8dcSSimon Schubert ENUMDOC
44205796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores 8 bit value (usually
44215796c8dcSSimon Schubert   command address) into 8 bit immediate value of LDI insn.
44225796c8dcSSimon Schubert ENUM
44235796c8dcSSimon Schubert   BFD_RELOC_AVR_LO8_LDI_GS
44245796c8dcSSimon Schubert ENUMDOC
44255796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores 8 bit value
44265796c8dcSSimon Schubert   (command address) into 8 bit immediate value of LDI insn. If the address
44275796c8dcSSimon Schubert   is beyond the 128k boundary, the linker inserts a jump stub for this reloc
44285796c8dcSSimon Schubert   in the lower 128k.
44295796c8dcSSimon Schubert ENUM
44305796c8dcSSimon Schubert   BFD_RELOC_AVR_HI8_LDI_PM
44315796c8dcSSimon Schubert ENUMDOC
44325796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
44335796c8dcSSimon Schubert   of command address) into 8 bit immediate value of LDI insn.
44345796c8dcSSimon Schubert ENUM
44355796c8dcSSimon Schubert   BFD_RELOC_AVR_HI8_LDI_GS
44365796c8dcSSimon Schubert ENUMDOC
44375796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
44385796c8dcSSimon Schubert   of command address) into 8 bit immediate value of LDI insn.  If the address
44395796c8dcSSimon Schubert   is beyond the 128k boundary, the linker inserts a jump stub for this reloc
44405796c8dcSSimon Schubert   below 128k.
44415796c8dcSSimon Schubert ENUM
44425796c8dcSSimon Schubert   BFD_RELOC_AVR_HH8_LDI_PM
44435796c8dcSSimon Schubert ENUMDOC
44445796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
44455796c8dcSSimon Schubert   of command address) into 8 bit immediate value of LDI insn.
44465796c8dcSSimon Schubert ENUM
44475796c8dcSSimon Schubert   BFD_RELOC_AVR_LO8_LDI_PM_NEG
44485796c8dcSSimon Schubert ENUMDOC
44495796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores negated 8 bit value
44505796c8dcSSimon Schubert   (usually command address) into 8 bit immediate value of SUBI insn.
44515796c8dcSSimon Schubert ENUM
44525796c8dcSSimon Schubert   BFD_RELOC_AVR_HI8_LDI_PM_NEG
44535796c8dcSSimon Schubert ENUMDOC
44545796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores negated 8 bit value
44555796c8dcSSimon Schubert   (high 8 bit of 16 bit command address) into 8 bit immediate value
44565796c8dcSSimon Schubert   of SUBI insn.
44575796c8dcSSimon Schubert ENUM
44585796c8dcSSimon Schubert   BFD_RELOC_AVR_HH8_LDI_PM_NEG
44595796c8dcSSimon Schubert ENUMDOC
44605796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores negated 8 bit value
44615796c8dcSSimon Schubert   (high 6 bit of 22 bit command address) into 8 bit immediate
44625796c8dcSSimon Schubert   value of SUBI insn.
44635796c8dcSSimon Schubert ENUM
44645796c8dcSSimon Schubert   BFD_RELOC_AVR_CALL
44655796c8dcSSimon Schubert ENUMDOC
44665796c8dcSSimon Schubert   This is a 32 bit reloc for the AVR that stores 23 bit value
44675796c8dcSSimon Schubert   into 22 bits.
44685796c8dcSSimon Schubert ENUM
44695796c8dcSSimon Schubert   BFD_RELOC_AVR_LDI
44705796c8dcSSimon Schubert ENUMDOC
44715796c8dcSSimon Schubert   This is a 16 bit reloc for the AVR that stores all needed bits
44725796c8dcSSimon Schubert   for absolute addressing with ldi with overflow check to linktime
44735796c8dcSSimon Schubert ENUM
44745796c8dcSSimon Schubert   BFD_RELOC_AVR_6
44755796c8dcSSimon Schubert ENUMDOC
44765796c8dcSSimon Schubert   This is a 6 bit reloc for the AVR that stores offset for ldd/std
44775796c8dcSSimon Schubert   instructions
44785796c8dcSSimon Schubert ENUM
44795796c8dcSSimon Schubert   BFD_RELOC_AVR_6_ADIW
44805796c8dcSSimon Schubert ENUMDOC
44815796c8dcSSimon Schubert   This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
44825796c8dcSSimon Schubert   instructions
4483*ef5ccd6cSJohn Marino ENUM
4484*ef5ccd6cSJohn Marino   BFD_RELOC_AVR_8_LO
4485*ef5ccd6cSJohn Marino ENUMDOC
4486*ef5ccd6cSJohn Marino   This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
4487*ef5ccd6cSJohn Marino   in .byte lo8(symbol)
4488*ef5ccd6cSJohn Marino ENUM
4489*ef5ccd6cSJohn Marino   BFD_RELOC_AVR_8_HI
4490*ef5ccd6cSJohn Marino ENUMDOC
4491*ef5ccd6cSJohn Marino   This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol
4492*ef5ccd6cSJohn Marino   in .byte hi8(symbol)
4493*ef5ccd6cSJohn Marino ENUM
4494*ef5ccd6cSJohn Marino   BFD_RELOC_AVR_8_HLO
4495*ef5ccd6cSJohn Marino ENUMDOC
4496*ef5ccd6cSJohn Marino   This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol
4497*ef5ccd6cSJohn Marino   in .byte hlo8(symbol)
44985796c8dcSSimon Schubert 
44995796c8dcSSimon Schubert ENUM
4500a45ae5f8SJohn Marino   BFD_RELOC_RL78_NEG8
4501a45ae5f8SJohn Marino ENUMX
4502a45ae5f8SJohn Marino   BFD_RELOC_RL78_NEG16
4503a45ae5f8SJohn Marino ENUMX
4504a45ae5f8SJohn Marino   BFD_RELOC_RL78_NEG24
4505a45ae5f8SJohn Marino ENUMX
4506a45ae5f8SJohn Marino   BFD_RELOC_RL78_NEG32
4507a45ae5f8SJohn Marino ENUMX
4508a45ae5f8SJohn Marino   BFD_RELOC_RL78_16_OP
4509a45ae5f8SJohn Marino ENUMX
4510a45ae5f8SJohn Marino   BFD_RELOC_RL78_24_OP
4511a45ae5f8SJohn Marino ENUMX
4512a45ae5f8SJohn Marino   BFD_RELOC_RL78_32_OP
4513a45ae5f8SJohn Marino ENUMX
4514a45ae5f8SJohn Marino   BFD_RELOC_RL78_8U
4515a45ae5f8SJohn Marino ENUMX
4516a45ae5f8SJohn Marino   BFD_RELOC_RL78_16U
4517a45ae5f8SJohn Marino ENUMX
4518a45ae5f8SJohn Marino   BFD_RELOC_RL78_24U
4519a45ae5f8SJohn Marino ENUMX
4520a45ae5f8SJohn Marino   BFD_RELOC_RL78_DIR3U_PCREL
4521a45ae5f8SJohn Marino ENUMX
4522a45ae5f8SJohn Marino   BFD_RELOC_RL78_DIFF
4523a45ae5f8SJohn Marino ENUMX
4524a45ae5f8SJohn Marino   BFD_RELOC_RL78_GPRELB
4525a45ae5f8SJohn Marino ENUMX
4526a45ae5f8SJohn Marino   BFD_RELOC_RL78_GPRELW
4527a45ae5f8SJohn Marino ENUMX
4528a45ae5f8SJohn Marino   BFD_RELOC_RL78_GPRELL
4529a45ae5f8SJohn Marino ENUMX
4530a45ae5f8SJohn Marino   BFD_RELOC_RL78_SYM
4531a45ae5f8SJohn Marino ENUMX
4532a45ae5f8SJohn Marino   BFD_RELOC_RL78_OP_SUBTRACT
4533a45ae5f8SJohn Marino ENUMX
4534a45ae5f8SJohn Marino   BFD_RELOC_RL78_OP_NEG
4535a45ae5f8SJohn Marino ENUMX
4536a45ae5f8SJohn Marino   BFD_RELOC_RL78_OP_AND
4537a45ae5f8SJohn Marino ENUMX
4538a45ae5f8SJohn Marino   BFD_RELOC_RL78_OP_SHRA
4539a45ae5f8SJohn Marino ENUMX
4540a45ae5f8SJohn Marino   BFD_RELOC_RL78_ABS8
4541a45ae5f8SJohn Marino ENUMX
4542a45ae5f8SJohn Marino   BFD_RELOC_RL78_ABS16
4543a45ae5f8SJohn Marino ENUMX
4544a45ae5f8SJohn Marino   BFD_RELOC_RL78_ABS16_REV
4545a45ae5f8SJohn Marino ENUMX
4546a45ae5f8SJohn Marino   BFD_RELOC_RL78_ABS32
4547a45ae5f8SJohn Marino ENUMX
4548a45ae5f8SJohn Marino   BFD_RELOC_RL78_ABS32_REV
4549a45ae5f8SJohn Marino ENUMX
4550a45ae5f8SJohn Marino   BFD_RELOC_RL78_ABS16U
4551a45ae5f8SJohn Marino ENUMX
4552a45ae5f8SJohn Marino   BFD_RELOC_RL78_ABS16UW
4553a45ae5f8SJohn Marino ENUMX
4554a45ae5f8SJohn Marino   BFD_RELOC_RL78_ABS16UL
4555a45ae5f8SJohn Marino ENUMX
4556a45ae5f8SJohn Marino   BFD_RELOC_RL78_RELAX
4557a45ae5f8SJohn Marino ENUMX
4558a45ae5f8SJohn Marino   BFD_RELOC_RL78_HI16
4559a45ae5f8SJohn Marino ENUMX
4560a45ae5f8SJohn Marino   BFD_RELOC_RL78_HI8
4561a45ae5f8SJohn Marino ENUMX
4562a45ae5f8SJohn Marino   BFD_RELOC_RL78_LO16
4563*ef5ccd6cSJohn Marino ENUMX
4564*ef5ccd6cSJohn Marino   BFD_RELOC_RL78_CODE
4565a45ae5f8SJohn Marino ENUMDOC
4566a45ae5f8SJohn Marino   Renesas RL78 Relocations.
4567a45ae5f8SJohn Marino 
4568a45ae5f8SJohn Marino ENUM
4569cf7f2e2dSJohn Marino   BFD_RELOC_RX_NEG8
4570cf7f2e2dSJohn Marino ENUMX
4571cf7f2e2dSJohn Marino   BFD_RELOC_RX_NEG16
4572cf7f2e2dSJohn Marino ENUMX
4573cf7f2e2dSJohn Marino   BFD_RELOC_RX_NEG24
4574cf7f2e2dSJohn Marino ENUMX
4575cf7f2e2dSJohn Marino   BFD_RELOC_RX_NEG32
4576cf7f2e2dSJohn Marino ENUMX
4577cf7f2e2dSJohn Marino   BFD_RELOC_RX_16_OP
4578cf7f2e2dSJohn Marino ENUMX
4579cf7f2e2dSJohn Marino   BFD_RELOC_RX_24_OP
4580cf7f2e2dSJohn Marino ENUMX
4581cf7f2e2dSJohn Marino   BFD_RELOC_RX_32_OP
4582cf7f2e2dSJohn Marino ENUMX
4583cf7f2e2dSJohn Marino   BFD_RELOC_RX_8U
4584cf7f2e2dSJohn Marino ENUMX
4585cf7f2e2dSJohn Marino   BFD_RELOC_RX_16U
4586cf7f2e2dSJohn Marino ENUMX
4587cf7f2e2dSJohn Marino   BFD_RELOC_RX_24U
4588cf7f2e2dSJohn Marino ENUMX
4589cf7f2e2dSJohn Marino   BFD_RELOC_RX_DIR3U_PCREL
4590cf7f2e2dSJohn Marino ENUMX
4591cf7f2e2dSJohn Marino   BFD_RELOC_RX_DIFF
4592cf7f2e2dSJohn Marino ENUMX
4593cf7f2e2dSJohn Marino   BFD_RELOC_RX_GPRELB
4594cf7f2e2dSJohn Marino ENUMX
4595cf7f2e2dSJohn Marino   BFD_RELOC_RX_GPRELW
4596cf7f2e2dSJohn Marino ENUMX
4597cf7f2e2dSJohn Marino   BFD_RELOC_RX_GPRELL
4598cf7f2e2dSJohn Marino ENUMX
4599cf7f2e2dSJohn Marino   BFD_RELOC_RX_SYM
4600cf7f2e2dSJohn Marino ENUMX
4601cf7f2e2dSJohn Marino   BFD_RELOC_RX_OP_SUBTRACT
4602cf7f2e2dSJohn Marino ENUMX
4603c50c785cSJohn Marino   BFD_RELOC_RX_OP_NEG
4604c50c785cSJohn Marino ENUMX
4605cf7f2e2dSJohn Marino   BFD_RELOC_RX_ABS8
4606cf7f2e2dSJohn Marino ENUMX
4607cf7f2e2dSJohn Marino   BFD_RELOC_RX_ABS16
4608cf7f2e2dSJohn Marino ENUMX
4609c50c785cSJohn Marino   BFD_RELOC_RX_ABS16_REV
4610c50c785cSJohn Marino ENUMX
4611cf7f2e2dSJohn Marino   BFD_RELOC_RX_ABS32
4612cf7f2e2dSJohn Marino ENUMX
4613c50c785cSJohn Marino   BFD_RELOC_RX_ABS32_REV
4614c50c785cSJohn Marino ENUMX
4615cf7f2e2dSJohn Marino   BFD_RELOC_RX_ABS16U
4616cf7f2e2dSJohn Marino ENUMX
4617cf7f2e2dSJohn Marino   BFD_RELOC_RX_ABS16UW
4618cf7f2e2dSJohn Marino ENUMX
4619cf7f2e2dSJohn Marino   BFD_RELOC_RX_ABS16UL
4620cf7f2e2dSJohn Marino ENUMX
4621cf7f2e2dSJohn Marino   BFD_RELOC_RX_RELAX
4622cf7f2e2dSJohn Marino ENUMDOC
4623cf7f2e2dSJohn Marino   Renesas RX Relocations.
4624cf7f2e2dSJohn Marino 
4625cf7f2e2dSJohn Marino ENUM
46265796c8dcSSimon Schubert   BFD_RELOC_390_12
46275796c8dcSSimon Schubert ENUMDOC
46285796c8dcSSimon Schubert    Direct 12 bit.
46295796c8dcSSimon Schubert ENUM
46305796c8dcSSimon Schubert   BFD_RELOC_390_GOT12
46315796c8dcSSimon Schubert ENUMDOC
46325796c8dcSSimon Schubert   12 bit GOT offset.
46335796c8dcSSimon Schubert ENUM
46345796c8dcSSimon Schubert   BFD_RELOC_390_PLT32
46355796c8dcSSimon Schubert ENUMDOC
46365796c8dcSSimon Schubert   32 bit PC relative PLT address.
46375796c8dcSSimon Schubert ENUM
46385796c8dcSSimon Schubert   BFD_RELOC_390_COPY
46395796c8dcSSimon Schubert ENUMDOC
46405796c8dcSSimon Schubert   Copy symbol at runtime.
46415796c8dcSSimon Schubert ENUM
46425796c8dcSSimon Schubert   BFD_RELOC_390_GLOB_DAT
46435796c8dcSSimon Schubert ENUMDOC
46445796c8dcSSimon Schubert   Create GOT entry.
46455796c8dcSSimon Schubert ENUM
46465796c8dcSSimon Schubert   BFD_RELOC_390_JMP_SLOT
46475796c8dcSSimon Schubert ENUMDOC
46485796c8dcSSimon Schubert   Create PLT entry.
46495796c8dcSSimon Schubert ENUM
46505796c8dcSSimon Schubert   BFD_RELOC_390_RELATIVE
46515796c8dcSSimon Schubert ENUMDOC
46525796c8dcSSimon Schubert   Adjust by program base.
46535796c8dcSSimon Schubert ENUM
46545796c8dcSSimon Schubert   BFD_RELOC_390_GOTPC
46555796c8dcSSimon Schubert ENUMDOC
46565796c8dcSSimon Schubert   32 bit PC relative offset to GOT.
46575796c8dcSSimon Schubert ENUM
46585796c8dcSSimon Schubert   BFD_RELOC_390_GOT16
46595796c8dcSSimon Schubert ENUMDOC
46605796c8dcSSimon Schubert   16 bit GOT offset.
46615796c8dcSSimon Schubert ENUM
46625796c8dcSSimon Schubert   BFD_RELOC_390_PC16DBL
46635796c8dcSSimon Schubert ENUMDOC
46645796c8dcSSimon Schubert   PC relative 16 bit shifted by 1.
46655796c8dcSSimon Schubert ENUM
46665796c8dcSSimon Schubert   BFD_RELOC_390_PLT16DBL
46675796c8dcSSimon Schubert ENUMDOC
46685796c8dcSSimon Schubert   16 bit PC rel. PLT shifted by 1.
46695796c8dcSSimon Schubert ENUM
46705796c8dcSSimon Schubert   BFD_RELOC_390_PC32DBL
46715796c8dcSSimon Schubert ENUMDOC
46725796c8dcSSimon Schubert   PC relative 32 bit shifted by 1.
46735796c8dcSSimon Schubert ENUM
46745796c8dcSSimon Schubert   BFD_RELOC_390_PLT32DBL
46755796c8dcSSimon Schubert ENUMDOC
46765796c8dcSSimon Schubert   32 bit PC rel. PLT shifted by 1.
46775796c8dcSSimon Schubert ENUM
46785796c8dcSSimon Schubert   BFD_RELOC_390_GOTPCDBL
46795796c8dcSSimon Schubert ENUMDOC
46805796c8dcSSimon Schubert   32 bit PC rel. GOT shifted by 1.
46815796c8dcSSimon Schubert ENUM
46825796c8dcSSimon Schubert   BFD_RELOC_390_GOT64
46835796c8dcSSimon Schubert ENUMDOC
46845796c8dcSSimon Schubert   64 bit GOT offset.
46855796c8dcSSimon Schubert ENUM
46865796c8dcSSimon Schubert   BFD_RELOC_390_PLT64
46875796c8dcSSimon Schubert ENUMDOC
46885796c8dcSSimon Schubert   64 bit PC relative PLT address.
46895796c8dcSSimon Schubert ENUM
46905796c8dcSSimon Schubert   BFD_RELOC_390_GOTENT
46915796c8dcSSimon Schubert ENUMDOC
46925796c8dcSSimon Schubert   32 bit rel. offset to GOT entry.
46935796c8dcSSimon Schubert ENUM
46945796c8dcSSimon Schubert   BFD_RELOC_390_GOTOFF64
46955796c8dcSSimon Schubert ENUMDOC
46965796c8dcSSimon Schubert   64 bit offset to GOT.
46975796c8dcSSimon Schubert ENUM
46985796c8dcSSimon Schubert   BFD_RELOC_390_GOTPLT12
46995796c8dcSSimon Schubert ENUMDOC
47005796c8dcSSimon Schubert   12-bit offset to symbol-entry within GOT, with PLT handling.
47015796c8dcSSimon Schubert ENUM
47025796c8dcSSimon Schubert   BFD_RELOC_390_GOTPLT16
47035796c8dcSSimon Schubert ENUMDOC
47045796c8dcSSimon Schubert   16-bit offset to symbol-entry within GOT, with PLT handling.
47055796c8dcSSimon Schubert ENUM
47065796c8dcSSimon Schubert   BFD_RELOC_390_GOTPLT32
47075796c8dcSSimon Schubert ENUMDOC
47085796c8dcSSimon Schubert   32-bit offset to symbol-entry within GOT, with PLT handling.
47095796c8dcSSimon Schubert ENUM
47105796c8dcSSimon Schubert   BFD_RELOC_390_GOTPLT64
47115796c8dcSSimon Schubert ENUMDOC
47125796c8dcSSimon Schubert   64-bit offset to symbol-entry within GOT, with PLT handling.
47135796c8dcSSimon Schubert ENUM
47145796c8dcSSimon Schubert   BFD_RELOC_390_GOTPLTENT
47155796c8dcSSimon Schubert ENUMDOC
47165796c8dcSSimon Schubert   32-bit rel. offset to symbol-entry within GOT, with PLT handling.
47175796c8dcSSimon Schubert ENUM
47185796c8dcSSimon Schubert   BFD_RELOC_390_PLTOFF16
47195796c8dcSSimon Schubert ENUMDOC
47205796c8dcSSimon Schubert   16-bit rel. offset from the GOT to a PLT entry.
47215796c8dcSSimon Schubert ENUM
47225796c8dcSSimon Schubert   BFD_RELOC_390_PLTOFF32
47235796c8dcSSimon Schubert ENUMDOC
47245796c8dcSSimon Schubert   32-bit rel. offset from the GOT to a PLT entry.
47255796c8dcSSimon Schubert ENUM
47265796c8dcSSimon Schubert   BFD_RELOC_390_PLTOFF64
47275796c8dcSSimon Schubert ENUMDOC
47285796c8dcSSimon Schubert   64-bit rel. offset from the GOT to a PLT entry.
47295796c8dcSSimon Schubert 
47305796c8dcSSimon Schubert ENUM
47315796c8dcSSimon Schubert   BFD_RELOC_390_TLS_LOAD
47325796c8dcSSimon Schubert ENUMX
47335796c8dcSSimon Schubert   BFD_RELOC_390_TLS_GDCALL
47345796c8dcSSimon Schubert ENUMX
47355796c8dcSSimon Schubert   BFD_RELOC_390_TLS_LDCALL
47365796c8dcSSimon Schubert ENUMX
47375796c8dcSSimon Schubert   BFD_RELOC_390_TLS_GD32
47385796c8dcSSimon Schubert ENUMX
47395796c8dcSSimon Schubert   BFD_RELOC_390_TLS_GD64
47405796c8dcSSimon Schubert ENUMX
47415796c8dcSSimon Schubert   BFD_RELOC_390_TLS_GOTIE12
47425796c8dcSSimon Schubert ENUMX
47435796c8dcSSimon Schubert   BFD_RELOC_390_TLS_GOTIE32
47445796c8dcSSimon Schubert ENUMX
47455796c8dcSSimon Schubert   BFD_RELOC_390_TLS_GOTIE64
47465796c8dcSSimon Schubert ENUMX
47475796c8dcSSimon Schubert   BFD_RELOC_390_TLS_LDM32
47485796c8dcSSimon Schubert ENUMX
47495796c8dcSSimon Schubert   BFD_RELOC_390_TLS_LDM64
47505796c8dcSSimon Schubert ENUMX
47515796c8dcSSimon Schubert   BFD_RELOC_390_TLS_IE32
47525796c8dcSSimon Schubert ENUMX
47535796c8dcSSimon Schubert   BFD_RELOC_390_TLS_IE64
47545796c8dcSSimon Schubert ENUMX
47555796c8dcSSimon Schubert   BFD_RELOC_390_TLS_IEENT
47565796c8dcSSimon Schubert ENUMX
47575796c8dcSSimon Schubert   BFD_RELOC_390_TLS_LE32
47585796c8dcSSimon Schubert ENUMX
47595796c8dcSSimon Schubert   BFD_RELOC_390_TLS_LE64
47605796c8dcSSimon Schubert ENUMX
47615796c8dcSSimon Schubert   BFD_RELOC_390_TLS_LDO32
47625796c8dcSSimon Schubert ENUMX
47635796c8dcSSimon Schubert   BFD_RELOC_390_TLS_LDO64
47645796c8dcSSimon Schubert ENUMX
47655796c8dcSSimon Schubert   BFD_RELOC_390_TLS_DTPMOD
47665796c8dcSSimon Schubert ENUMX
47675796c8dcSSimon Schubert   BFD_RELOC_390_TLS_DTPOFF
47685796c8dcSSimon Schubert ENUMX
47695796c8dcSSimon Schubert   BFD_RELOC_390_TLS_TPOFF
47705796c8dcSSimon Schubert ENUMDOC
47715796c8dcSSimon Schubert   s390 tls relocations.
47725796c8dcSSimon Schubert 
47735796c8dcSSimon Schubert ENUM
47745796c8dcSSimon Schubert   BFD_RELOC_390_20
47755796c8dcSSimon Schubert ENUMX
47765796c8dcSSimon Schubert   BFD_RELOC_390_GOT20
47775796c8dcSSimon Schubert ENUMX
47785796c8dcSSimon Schubert   BFD_RELOC_390_GOTPLT20
47795796c8dcSSimon Schubert ENUMX
47805796c8dcSSimon Schubert   BFD_RELOC_390_TLS_GOTIE20
47815796c8dcSSimon Schubert ENUMDOC
47825796c8dcSSimon Schubert   Long displacement extension.
47835796c8dcSSimon Schubert 
47845796c8dcSSimon Schubert ENUM
4785*ef5ccd6cSJohn Marino   BFD_RELOC_390_IRELATIVE
4786*ef5ccd6cSJohn Marino ENUMDOC
4787*ef5ccd6cSJohn Marino   STT_GNU_IFUNC relocation.
4788*ef5ccd6cSJohn Marino 
4789*ef5ccd6cSJohn Marino ENUM
47905796c8dcSSimon Schubert   BFD_RELOC_SCORE_GPREL15
47915796c8dcSSimon Schubert ENUMDOC
47925796c8dcSSimon Schubert   Score relocations
47935796c8dcSSimon Schubert   Low 16 bit for load/store
47945796c8dcSSimon Schubert ENUM
47955796c8dcSSimon Schubert   BFD_RELOC_SCORE_DUMMY2
47965796c8dcSSimon Schubert ENUMX
47975796c8dcSSimon Schubert   BFD_RELOC_SCORE_JMP
47985796c8dcSSimon Schubert ENUMDOC
47995796c8dcSSimon Schubert   This is a 24-bit reloc with the right 1 bit assumed to be 0
48005796c8dcSSimon Schubert ENUM
48015796c8dcSSimon Schubert   BFD_RELOC_SCORE_BRANCH
48025796c8dcSSimon Schubert ENUMDOC
48035796c8dcSSimon Schubert   This is a 19-bit reloc with the right 1 bit assumed to be 0
48045796c8dcSSimon Schubert ENUM
48055796c8dcSSimon Schubert   BFD_RELOC_SCORE_IMM30
48065796c8dcSSimon Schubert ENUMDOC
48075796c8dcSSimon Schubert   This is a 32-bit reloc for 48-bit instructions.
48085796c8dcSSimon Schubert ENUM
48095796c8dcSSimon Schubert   BFD_RELOC_SCORE_IMM32
48105796c8dcSSimon Schubert ENUMDOC
48115796c8dcSSimon Schubert   This is a 32-bit reloc for 48-bit instructions.
48125796c8dcSSimon Schubert ENUM
48135796c8dcSSimon Schubert   BFD_RELOC_SCORE16_JMP
48145796c8dcSSimon Schubert ENUMDOC
48155796c8dcSSimon Schubert   This is a 11-bit reloc with the right 1 bit assumed to be 0
48165796c8dcSSimon Schubert ENUM
48175796c8dcSSimon Schubert   BFD_RELOC_SCORE16_BRANCH
48185796c8dcSSimon Schubert ENUMDOC
48195796c8dcSSimon Schubert   This is a 8-bit reloc with the right 1 bit assumed to be 0
48205796c8dcSSimon Schubert ENUM
48215796c8dcSSimon Schubert   BFD_RELOC_SCORE_BCMP
48225796c8dcSSimon Schubert ENUMDOC
48235796c8dcSSimon Schubert    This is a 9-bit reloc with the right 1 bit assumed to be 0
48245796c8dcSSimon Schubert ENUM
48255796c8dcSSimon Schubert   BFD_RELOC_SCORE_GOT15
48265796c8dcSSimon Schubert ENUMX
48275796c8dcSSimon Schubert   BFD_RELOC_SCORE_GOT_LO16
48285796c8dcSSimon Schubert ENUMX
48295796c8dcSSimon Schubert   BFD_RELOC_SCORE_CALL15
48305796c8dcSSimon Schubert ENUMX
48315796c8dcSSimon Schubert   BFD_RELOC_SCORE_DUMMY_HI16
48325796c8dcSSimon Schubert ENUMDOC
48335796c8dcSSimon Schubert   Undocumented Score relocs
48345796c8dcSSimon Schubert 
48355796c8dcSSimon Schubert ENUM
48365796c8dcSSimon Schubert   BFD_RELOC_IP2K_FR9
48375796c8dcSSimon Schubert ENUMDOC
48385796c8dcSSimon Schubert   Scenix IP2K - 9-bit register number / data address
48395796c8dcSSimon Schubert ENUM
48405796c8dcSSimon Schubert   BFD_RELOC_IP2K_BANK
48415796c8dcSSimon Schubert ENUMDOC
48425796c8dcSSimon Schubert   Scenix IP2K - 4-bit register/data bank number
48435796c8dcSSimon Schubert ENUM
48445796c8dcSSimon Schubert   BFD_RELOC_IP2K_ADDR16CJP
48455796c8dcSSimon Schubert ENUMDOC
48465796c8dcSSimon Schubert   Scenix IP2K - low 13 bits of instruction word address
48475796c8dcSSimon Schubert ENUM
48485796c8dcSSimon Schubert   BFD_RELOC_IP2K_PAGE3
48495796c8dcSSimon Schubert ENUMDOC
48505796c8dcSSimon Schubert   Scenix IP2K - high 3 bits of instruction word address
48515796c8dcSSimon Schubert ENUM
48525796c8dcSSimon Schubert   BFD_RELOC_IP2K_LO8DATA
48535796c8dcSSimon Schubert ENUMX
48545796c8dcSSimon Schubert   BFD_RELOC_IP2K_HI8DATA
48555796c8dcSSimon Schubert ENUMX
48565796c8dcSSimon Schubert   BFD_RELOC_IP2K_EX8DATA
48575796c8dcSSimon Schubert ENUMDOC
48585796c8dcSSimon Schubert   Scenix IP2K - ext/low/high 8 bits of data address
48595796c8dcSSimon Schubert ENUM
48605796c8dcSSimon Schubert   BFD_RELOC_IP2K_LO8INSN
48615796c8dcSSimon Schubert ENUMX
48625796c8dcSSimon Schubert   BFD_RELOC_IP2K_HI8INSN
48635796c8dcSSimon Schubert ENUMDOC
48645796c8dcSSimon Schubert   Scenix IP2K - low/high 8 bits of instruction word address
48655796c8dcSSimon Schubert ENUM
48665796c8dcSSimon Schubert   BFD_RELOC_IP2K_PC_SKIP
48675796c8dcSSimon Schubert ENUMDOC
48685796c8dcSSimon Schubert   Scenix IP2K - even/odd PC modifier to modify snb pcl.0
48695796c8dcSSimon Schubert ENUM
48705796c8dcSSimon Schubert   BFD_RELOC_IP2K_TEXT
48715796c8dcSSimon Schubert ENUMDOC
48725796c8dcSSimon Schubert   Scenix IP2K - 16 bit word address in text section.
48735796c8dcSSimon Schubert ENUM
48745796c8dcSSimon Schubert   BFD_RELOC_IP2K_FR_OFFSET
48755796c8dcSSimon Schubert ENUMDOC
48765796c8dcSSimon Schubert   Scenix IP2K - 7-bit sp or dp offset
48775796c8dcSSimon Schubert ENUM
48785796c8dcSSimon Schubert   BFD_RELOC_VPE4KMATH_DATA
48795796c8dcSSimon Schubert ENUMX
48805796c8dcSSimon Schubert   BFD_RELOC_VPE4KMATH_INSN
48815796c8dcSSimon Schubert ENUMDOC
48825796c8dcSSimon Schubert   Scenix VPE4K coprocessor - data/insn-space addressing
48835796c8dcSSimon Schubert 
48845796c8dcSSimon Schubert ENUM
48855796c8dcSSimon Schubert   BFD_RELOC_VTABLE_INHERIT
48865796c8dcSSimon Schubert ENUMX
48875796c8dcSSimon Schubert   BFD_RELOC_VTABLE_ENTRY
48885796c8dcSSimon Schubert ENUMDOC
48895796c8dcSSimon Schubert   These two relocations are used by the linker to determine which of
48905796c8dcSSimon Schubert   the entries in a C++ virtual function table are actually used.  When
48915796c8dcSSimon Schubert   the --gc-sections option is given, the linker will zero out the entries
48925796c8dcSSimon Schubert   that are not used, so that the code for those functions need not be
48935796c8dcSSimon Schubert   included in the output.
48945796c8dcSSimon Schubert 
48955796c8dcSSimon Schubert   VTABLE_INHERIT is a zero-space relocation used to describe to the
48965796c8dcSSimon Schubert   linker the inheritance tree of a C++ virtual function table.  The
48975796c8dcSSimon Schubert   relocation's symbol should be the parent class' vtable, and the
48985796c8dcSSimon Schubert   relocation should be located at the child vtable.
48995796c8dcSSimon Schubert 
49005796c8dcSSimon Schubert   VTABLE_ENTRY is a zero-space relocation that describes the use of a
49015796c8dcSSimon Schubert   virtual function table entry.  The reloc's symbol should refer to the
49025796c8dcSSimon Schubert   table of the class mentioned in the code.  Off of that base, an offset
49035796c8dcSSimon Schubert   describes the entry that is being used.  For Rela hosts, this offset
49045796c8dcSSimon Schubert   is stored in the reloc's addend.  For Rel hosts, we are forced to put
49055796c8dcSSimon Schubert   this offset in the reloc's section offset.
49065796c8dcSSimon Schubert 
49075796c8dcSSimon Schubert ENUM
49085796c8dcSSimon Schubert   BFD_RELOC_IA64_IMM14
49095796c8dcSSimon Schubert ENUMX
49105796c8dcSSimon Schubert   BFD_RELOC_IA64_IMM22
49115796c8dcSSimon Schubert ENUMX
49125796c8dcSSimon Schubert   BFD_RELOC_IA64_IMM64
49135796c8dcSSimon Schubert ENUMX
49145796c8dcSSimon Schubert   BFD_RELOC_IA64_DIR32MSB
49155796c8dcSSimon Schubert ENUMX
49165796c8dcSSimon Schubert   BFD_RELOC_IA64_DIR32LSB
49175796c8dcSSimon Schubert ENUMX
49185796c8dcSSimon Schubert   BFD_RELOC_IA64_DIR64MSB
49195796c8dcSSimon Schubert ENUMX
49205796c8dcSSimon Schubert   BFD_RELOC_IA64_DIR64LSB
49215796c8dcSSimon Schubert ENUMX
49225796c8dcSSimon Schubert   BFD_RELOC_IA64_GPREL22
49235796c8dcSSimon Schubert ENUMX
49245796c8dcSSimon Schubert   BFD_RELOC_IA64_GPREL64I
49255796c8dcSSimon Schubert ENUMX
49265796c8dcSSimon Schubert   BFD_RELOC_IA64_GPREL32MSB
49275796c8dcSSimon Schubert ENUMX
49285796c8dcSSimon Schubert   BFD_RELOC_IA64_GPREL32LSB
49295796c8dcSSimon Schubert ENUMX
49305796c8dcSSimon Schubert   BFD_RELOC_IA64_GPREL64MSB
49315796c8dcSSimon Schubert ENUMX
49325796c8dcSSimon Schubert   BFD_RELOC_IA64_GPREL64LSB
49335796c8dcSSimon Schubert ENUMX
49345796c8dcSSimon Schubert   BFD_RELOC_IA64_LTOFF22
49355796c8dcSSimon Schubert ENUMX
49365796c8dcSSimon Schubert   BFD_RELOC_IA64_LTOFF64I
49375796c8dcSSimon Schubert ENUMX
49385796c8dcSSimon Schubert   BFD_RELOC_IA64_PLTOFF22
49395796c8dcSSimon Schubert ENUMX
49405796c8dcSSimon Schubert   BFD_RELOC_IA64_PLTOFF64I
49415796c8dcSSimon Schubert ENUMX
49425796c8dcSSimon Schubert   BFD_RELOC_IA64_PLTOFF64MSB
49435796c8dcSSimon Schubert ENUMX
49445796c8dcSSimon Schubert   BFD_RELOC_IA64_PLTOFF64LSB
49455796c8dcSSimon Schubert ENUMX
49465796c8dcSSimon Schubert   BFD_RELOC_IA64_FPTR64I
49475796c8dcSSimon Schubert ENUMX
49485796c8dcSSimon Schubert   BFD_RELOC_IA64_FPTR32MSB
49495796c8dcSSimon Schubert ENUMX
49505796c8dcSSimon Schubert   BFD_RELOC_IA64_FPTR32LSB
49515796c8dcSSimon Schubert ENUMX
49525796c8dcSSimon Schubert   BFD_RELOC_IA64_FPTR64MSB
49535796c8dcSSimon Schubert ENUMX
49545796c8dcSSimon Schubert   BFD_RELOC_IA64_FPTR64LSB
49555796c8dcSSimon Schubert ENUMX
49565796c8dcSSimon Schubert   BFD_RELOC_IA64_PCREL21B
49575796c8dcSSimon Schubert ENUMX
49585796c8dcSSimon Schubert   BFD_RELOC_IA64_PCREL21BI
49595796c8dcSSimon Schubert ENUMX
49605796c8dcSSimon Schubert   BFD_RELOC_IA64_PCREL21M
49615796c8dcSSimon Schubert ENUMX
49625796c8dcSSimon Schubert   BFD_RELOC_IA64_PCREL21F
49635796c8dcSSimon Schubert ENUMX
49645796c8dcSSimon Schubert   BFD_RELOC_IA64_PCREL22
49655796c8dcSSimon Schubert ENUMX
49665796c8dcSSimon Schubert   BFD_RELOC_IA64_PCREL60B
49675796c8dcSSimon Schubert ENUMX
49685796c8dcSSimon Schubert   BFD_RELOC_IA64_PCREL64I
49695796c8dcSSimon Schubert ENUMX
49705796c8dcSSimon Schubert   BFD_RELOC_IA64_PCREL32MSB
49715796c8dcSSimon Schubert ENUMX
49725796c8dcSSimon Schubert   BFD_RELOC_IA64_PCREL32LSB
49735796c8dcSSimon Schubert ENUMX
49745796c8dcSSimon Schubert   BFD_RELOC_IA64_PCREL64MSB
49755796c8dcSSimon Schubert ENUMX
49765796c8dcSSimon Schubert   BFD_RELOC_IA64_PCREL64LSB
49775796c8dcSSimon Schubert ENUMX
49785796c8dcSSimon Schubert   BFD_RELOC_IA64_LTOFF_FPTR22
49795796c8dcSSimon Schubert ENUMX
49805796c8dcSSimon Schubert   BFD_RELOC_IA64_LTOFF_FPTR64I
49815796c8dcSSimon Schubert ENUMX
49825796c8dcSSimon Schubert   BFD_RELOC_IA64_LTOFF_FPTR32MSB
49835796c8dcSSimon Schubert ENUMX
49845796c8dcSSimon Schubert   BFD_RELOC_IA64_LTOFF_FPTR32LSB
49855796c8dcSSimon Schubert ENUMX
49865796c8dcSSimon Schubert   BFD_RELOC_IA64_LTOFF_FPTR64MSB
49875796c8dcSSimon Schubert ENUMX
49885796c8dcSSimon Schubert   BFD_RELOC_IA64_LTOFF_FPTR64LSB
49895796c8dcSSimon Schubert ENUMX
49905796c8dcSSimon Schubert   BFD_RELOC_IA64_SEGREL32MSB
49915796c8dcSSimon Schubert ENUMX
49925796c8dcSSimon Schubert   BFD_RELOC_IA64_SEGREL32LSB
49935796c8dcSSimon Schubert ENUMX
49945796c8dcSSimon Schubert   BFD_RELOC_IA64_SEGREL64MSB
49955796c8dcSSimon Schubert ENUMX
49965796c8dcSSimon Schubert   BFD_RELOC_IA64_SEGREL64LSB
49975796c8dcSSimon Schubert ENUMX
49985796c8dcSSimon Schubert   BFD_RELOC_IA64_SECREL32MSB
49995796c8dcSSimon Schubert ENUMX
50005796c8dcSSimon Schubert   BFD_RELOC_IA64_SECREL32LSB
50015796c8dcSSimon Schubert ENUMX
50025796c8dcSSimon Schubert   BFD_RELOC_IA64_SECREL64MSB
50035796c8dcSSimon Schubert ENUMX
50045796c8dcSSimon Schubert   BFD_RELOC_IA64_SECREL64LSB
50055796c8dcSSimon Schubert ENUMX
50065796c8dcSSimon Schubert   BFD_RELOC_IA64_REL32MSB
50075796c8dcSSimon Schubert ENUMX
50085796c8dcSSimon Schubert   BFD_RELOC_IA64_REL32LSB
50095796c8dcSSimon Schubert ENUMX
50105796c8dcSSimon Schubert   BFD_RELOC_IA64_REL64MSB
50115796c8dcSSimon Schubert ENUMX
50125796c8dcSSimon Schubert   BFD_RELOC_IA64_REL64LSB
50135796c8dcSSimon Schubert ENUMX
50145796c8dcSSimon Schubert   BFD_RELOC_IA64_LTV32MSB
50155796c8dcSSimon Schubert ENUMX
50165796c8dcSSimon Schubert   BFD_RELOC_IA64_LTV32LSB
50175796c8dcSSimon Schubert ENUMX
50185796c8dcSSimon Schubert   BFD_RELOC_IA64_LTV64MSB
50195796c8dcSSimon Schubert ENUMX
50205796c8dcSSimon Schubert   BFD_RELOC_IA64_LTV64LSB
50215796c8dcSSimon Schubert ENUMX
50225796c8dcSSimon Schubert   BFD_RELOC_IA64_IPLTMSB
50235796c8dcSSimon Schubert ENUMX
50245796c8dcSSimon Schubert   BFD_RELOC_IA64_IPLTLSB
50255796c8dcSSimon Schubert ENUMX
50265796c8dcSSimon Schubert   BFD_RELOC_IA64_COPY
50275796c8dcSSimon Schubert ENUMX
50285796c8dcSSimon Schubert   BFD_RELOC_IA64_LTOFF22X
50295796c8dcSSimon Schubert ENUMX
50305796c8dcSSimon Schubert   BFD_RELOC_IA64_LDXMOV
50315796c8dcSSimon Schubert ENUMX
50325796c8dcSSimon Schubert   BFD_RELOC_IA64_TPREL14
50335796c8dcSSimon Schubert ENUMX
50345796c8dcSSimon Schubert   BFD_RELOC_IA64_TPREL22
50355796c8dcSSimon Schubert ENUMX
50365796c8dcSSimon Schubert   BFD_RELOC_IA64_TPREL64I
50375796c8dcSSimon Schubert ENUMX
50385796c8dcSSimon Schubert   BFD_RELOC_IA64_TPREL64MSB
50395796c8dcSSimon Schubert ENUMX
50405796c8dcSSimon Schubert   BFD_RELOC_IA64_TPREL64LSB
50415796c8dcSSimon Schubert ENUMX
50425796c8dcSSimon Schubert   BFD_RELOC_IA64_LTOFF_TPREL22
50435796c8dcSSimon Schubert ENUMX
50445796c8dcSSimon Schubert   BFD_RELOC_IA64_DTPMOD64MSB
50455796c8dcSSimon Schubert ENUMX
50465796c8dcSSimon Schubert   BFD_RELOC_IA64_DTPMOD64LSB
50475796c8dcSSimon Schubert ENUMX
50485796c8dcSSimon Schubert   BFD_RELOC_IA64_LTOFF_DTPMOD22
50495796c8dcSSimon Schubert ENUMX
50505796c8dcSSimon Schubert   BFD_RELOC_IA64_DTPREL14
50515796c8dcSSimon Schubert ENUMX
50525796c8dcSSimon Schubert   BFD_RELOC_IA64_DTPREL22
50535796c8dcSSimon Schubert ENUMX
50545796c8dcSSimon Schubert   BFD_RELOC_IA64_DTPREL64I
50555796c8dcSSimon Schubert ENUMX
50565796c8dcSSimon Schubert   BFD_RELOC_IA64_DTPREL32MSB
50575796c8dcSSimon Schubert ENUMX
50585796c8dcSSimon Schubert   BFD_RELOC_IA64_DTPREL32LSB
50595796c8dcSSimon Schubert ENUMX
50605796c8dcSSimon Schubert   BFD_RELOC_IA64_DTPREL64MSB
50615796c8dcSSimon Schubert ENUMX
50625796c8dcSSimon Schubert   BFD_RELOC_IA64_DTPREL64LSB
50635796c8dcSSimon Schubert ENUMX
50645796c8dcSSimon Schubert   BFD_RELOC_IA64_LTOFF_DTPREL22
50655796c8dcSSimon Schubert ENUMDOC
50665796c8dcSSimon Schubert   Intel IA64 Relocations.
50675796c8dcSSimon Schubert 
50685796c8dcSSimon Schubert ENUM
50695796c8dcSSimon Schubert   BFD_RELOC_M68HC11_HI8
50705796c8dcSSimon Schubert ENUMDOC
50715796c8dcSSimon Schubert   Motorola 68HC11 reloc.
50725796c8dcSSimon Schubert   This is the 8 bit high part of an absolute address.
50735796c8dcSSimon Schubert ENUM
50745796c8dcSSimon Schubert   BFD_RELOC_M68HC11_LO8
50755796c8dcSSimon Schubert ENUMDOC
50765796c8dcSSimon Schubert   Motorola 68HC11 reloc.
50775796c8dcSSimon Schubert   This is the 8 bit low part of an absolute address.
50785796c8dcSSimon Schubert ENUM
50795796c8dcSSimon Schubert   BFD_RELOC_M68HC11_3B
50805796c8dcSSimon Schubert ENUMDOC
50815796c8dcSSimon Schubert   Motorola 68HC11 reloc.
50825796c8dcSSimon Schubert   This is the 3 bit of a value.
50835796c8dcSSimon Schubert ENUM
50845796c8dcSSimon Schubert   BFD_RELOC_M68HC11_RL_JUMP
50855796c8dcSSimon Schubert ENUMDOC
50865796c8dcSSimon Schubert   Motorola 68HC11 reloc.
50875796c8dcSSimon Schubert   This reloc marks the beginning of a jump/call instruction.
50885796c8dcSSimon Schubert   It is used for linker relaxation to correctly identify beginning
50895796c8dcSSimon Schubert   of instruction and change some branches to use PC-relative
50905796c8dcSSimon Schubert   addressing mode.
50915796c8dcSSimon Schubert ENUM
50925796c8dcSSimon Schubert   BFD_RELOC_M68HC11_RL_GROUP
50935796c8dcSSimon Schubert ENUMDOC
50945796c8dcSSimon Schubert   Motorola 68HC11 reloc.
50955796c8dcSSimon Schubert   This reloc marks a group of several instructions that gcc generates
50965796c8dcSSimon Schubert   and for which the linker relaxation pass can modify and/or remove
50975796c8dcSSimon Schubert   some of them.
50985796c8dcSSimon Schubert ENUM
50995796c8dcSSimon Schubert   BFD_RELOC_M68HC11_LO16
51005796c8dcSSimon Schubert ENUMDOC
51015796c8dcSSimon Schubert   Motorola 68HC11 reloc.
51025796c8dcSSimon Schubert   This is the 16-bit lower part of an address.  It is used for 'call'
51035796c8dcSSimon Schubert   instruction to specify the symbol address without any special
51045796c8dcSSimon Schubert   transformation (due to memory bank window).
51055796c8dcSSimon Schubert ENUM
51065796c8dcSSimon Schubert   BFD_RELOC_M68HC11_PAGE
51075796c8dcSSimon Schubert ENUMDOC
51085796c8dcSSimon Schubert   Motorola 68HC11 reloc.
51095796c8dcSSimon Schubert   This is a 8-bit reloc that specifies the page number of an address.
51105796c8dcSSimon Schubert   It is used by 'call' instruction to specify the page number of
51115796c8dcSSimon Schubert   the symbol.
51125796c8dcSSimon Schubert ENUM
51135796c8dcSSimon Schubert   BFD_RELOC_M68HC11_24
51145796c8dcSSimon Schubert ENUMDOC
51155796c8dcSSimon Schubert   Motorola 68HC11 reloc.
51165796c8dcSSimon Schubert   This is a 24-bit reloc that represents the address with a 16-bit
51175796c8dcSSimon Schubert   value and a 8-bit page number.  The symbol address is transformed
51185796c8dcSSimon Schubert   to follow the 16K memory bank of 68HC12 (seen as mapped in the window).
51195796c8dcSSimon Schubert ENUM
51205796c8dcSSimon Schubert   BFD_RELOC_M68HC12_5B
51215796c8dcSSimon Schubert ENUMDOC
51225796c8dcSSimon Schubert   Motorola 68HC12 reloc.
51235796c8dcSSimon Schubert   This is the 5 bits of a value.
5124*ef5ccd6cSJohn Marino ENUM
5125*ef5ccd6cSJohn Marino   BFD_RELOC_XGATE_RL_JUMP
5126*ef5ccd6cSJohn Marino ENUMDOC
5127*ef5ccd6cSJohn Marino   Freescale XGATE reloc.
5128*ef5ccd6cSJohn Marino   This reloc marks the beginning of a bra/jal instruction.
5129*ef5ccd6cSJohn Marino ENUM
5130*ef5ccd6cSJohn Marino   BFD_RELOC_XGATE_RL_GROUP
5131*ef5ccd6cSJohn Marino ENUMDOC
5132*ef5ccd6cSJohn Marino   Freescale XGATE reloc.
5133*ef5ccd6cSJohn Marino   This reloc marks a group of several instructions that gcc generates
5134*ef5ccd6cSJohn Marino   and for which the linker relaxation pass can modify and/or remove
5135*ef5ccd6cSJohn Marino   some of them.
5136*ef5ccd6cSJohn Marino ENUM
5137*ef5ccd6cSJohn Marino   BFD_RELOC_XGATE_LO16
5138*ef5ccd6cSJohn Marino ENUMDOC
5139*ef5ccd6cSJohn Marino   Freescale XGATE reloc.
5140*ef5ccd6cSJohn Marino   This is the 16-bit lower part of an address.  It is used for the '16-bit'
5141*ef5ccd6cSJohn Marino   instructions.
5142*ef5ccd6cSJohn Marino ENUM
5143*ef5ccd6cSJohn Marino   BFD_RELOC_XGATE_GPAGE
5144*ef5ccd6cSJohn Marino ENUMDOC
5145*ef5ccd6cSJohn Marino   Freescale XGATE reloc.
5146*ef5ccd6cSJohn Marino ENUM
5147*ef5ccd6cSJohn Marino   BFD_RELOC_XGATE_24
5148*ef5ccd6cSJohn Marino ENUMDOC
5149*ef5ccd6cSJohn Marino   Freescale XGATE reloc.
5150*ef5ccd6cSJohn Marino ENUM
5151*ef5ccd6cSJohn Marino   BFD_RELOC_XGATE_PCREL_9
5152*ef5ccd6cSJohn Marino ENUMDOC
5153*ef5ccd6cSJohn Marino   Freescale XGATE reloc.
5154*ef5ccd6cSJohn Marino   This is a 9-bit pc-relative reloc.
5155*ef5ccd6cSJohn Marino ENUM
5156*ef5ccd6cSJohn Marino   BFD_RELOC_XGATE_PCREL_10
5157*ef5ccd6cSJohn Marino ENUMDOC
5158*ef5ccd6cSJohn Marino   Freescale XGATE reloc.
5159*ef5ccd6cSJohn Marino   This is a 10-bit pc-relative reloc.
5160*ef5ccd6cSJohn Marino ENUM
5161*ef5ccd6cSJohn Marino   BFD_RELOC_XGATE_IMM8_LO
5162*ef5ccd6cSJohn Marino ENUMDOC
5163*ef5ccd6cSJohn Marino   Freescale XGATE reloc.
5164*ef5ccd6cSJohn Marino   This is the 16-bit lower part of an address.  It is used for the '16-bit'
5165*ef5ccd6cSJohn Marino   instructions.
5166*ef5ccd6cSJohn Marino ENUM
5167*ef5ccd6cSJohn Marino   BFD_RELOC_XGATE_IMM8_HI
5168*ef5ccd6cSJohn Marino ENUMDOC
5169*ef5ccd6cSJohn Marino   Freescale XGATE reloc.
5170*ef5ccd6cSJohn Marino   This is the 16-bit higher part of an address.  It is used for the '16-bit'
5171*ef5ccd6cSJohn Marino   instructions.
5172*ef5ccd6cSJohn Marino ENUM
5173*ef5ccd6cSJohn Marino   BFD_RELOC_XGATE_IMM3
5174*ef5ccd6cSJohn Marino ENUMDOC
5175*ef5ccd6cSJohn Marino   Freescale XGATE reloc.
5176*ef5ccd6cSJohn Marino   This is a 3-bit pc-relative reloc.
5177*ef5ccd6cSJohn Marino ENUM
5178*ef5ccd6cSJohn Marino   BFD_RELOC_XGATE_IMM4
5179*ef5ccd6cSJohn Marino ENUMDOC
5180*ef5ccd6cSJohn Marino   Freescale XGATE reloc.
5181*ef5ccd6cSJohn Marino   This is a 4-bit pc-relative reloc.
5182*ef5ccd6cSJohn Marino ENUM
5183*ef5ccd6cSJohn Marino   BFD_RELOC_XGATE_IMM5
5184*ef5ccd6cSJohn Marino ENUMDOC
5185*ef5ccd6cSJohn Marino   Freescale XGATE reloc.
5186*ef5ccd6cSJohn Marino   This is a 5-bit pc-relative reloc.
5187*ef5ccd6cSJohn Marino ENUM
5188*ef5ccd6cSJohn Marino   BFD_RELOC_M68HC12_9B
5189*ef5ccd6cSJohn Marino ENUMDOC
5190*ef5ccd6cSJohn Marino   Motorola 68HC12 reloc.
5191*ef5ccd6cSJohn Marino   This is the 9 bits of a value.
5192*ef5ccd6cSJohn Marino ENUM
5193*ef5ccd6cSJohn Marino   BFD_RELOC_M68HC12_16B
5194*ef5ccd6cSJohn Marino ENUMDOC
5195*ef5ccd6cSJohn Marino   Motorola 68HC12 reloc.
5196*ef5ccd6cSJohn Marino   This is the 16 bits of a value.
5197*ef5ccd6cSJohn Marino ENUM
5198*ef5ccd6cSJohn Marino   BFD_RELOC_M68HC12_9_PCREL
5199*ef5ccd6cSJohn Marino ENUMDOC
5200*ef5ccd6cSJohn Marino   Motorola 68HC12/XGATE reloc.
5201*ef5ccd6cSJohn Marino   This is a PCREL9 branch.
5202*ef5ccd6cSJohn Marino ENUM
5203*ef5ccd6cSJohn Marino   BFD_RELOC_M68HC12_10_PCREL
5204*ef5ccd6cSJohn Marino ENUMDOC
5205*ef5ccd6cSJohn Marino   Motorola 68HC12/XGATE reloc.
5206*ef5ccd6cSJohn Marino   This is a PCREL10 branch.
5207*ef5ccd6cSJohn Marino ENUM
5208*ef5ccd6cSJohn Marino   BFD_RELOC_M68HC12_LO8XG
5209*ef5ccd6cSJohn Marino ENUMDOC
5210*ef5ccd6cSJohn Marino   Motorola 68HC12/XGATE reloc.
5211*ef5ccd6cSJohn Marino   This is the 8 bit low part of an absolute address and immediately precedes
5212*ef5ccd6cSJohn Marino   a matching HI8XG part.
5213*ef5ccd6cSJohn Marino ENUM
5214*ef5ccd6cSJohn Marino   BFD_RELOC_M68HC12_HI8XG
5215*ef5ccd6cSJohn Marino ENUMDOC
5216*ef5ccd6cSJohn Marino   Motorola 68HC12/XGATE reloc.
5217*ef5ccd6cSJohn Marino   This is the 8 bit high part of an absolute address and immediately follows
5218*ef5ccd6cSJohn Marino   a matching LO8XG part.
52195796c8dcSSimon Schubert ENUM
52205796c8dcSSimon Schubert   BFD_RELOC_16C_NUM08
52215796c8dcSSimon Schubert ENUMX
52225796c8dcSSimon Schubert   BFD_RELOC_16C_NUM08_C
52235796c8dcSSimon Schubert ENUMX
52245796c8dcSSimon Schubert   BFD_RELOC_16C_NUM16
52255796c8dcSSimon Schubert ENUMX
52265796c8dcSSimon Schubert   BFD_RELOC_16C_NUM16_C
52275796c8dcSSimon Schubert ENUMX
52285796c8dcSSimon Schubert   BFD_RELOC_16C_NUM32
52295796c8dcSSimon Schubert ENUMX
52305796c8dcSSimon Schubert   BFD_RELOC_16C_NUM32_C
52315796c8dcSSimon Schubert ENUMX
52325796c8dcSSimon Schubert   BFD_RELOC_16C_DISP04
52335796c8dcSSimon Schubert ENUMX
52345796c8dcSSimon Schubert   BFD_RELOC_16C_DISP04_C
52355796c8dcSSimon Schubert ENUMX
52365796c8dcSSimon Schubert   BFD_RELOC_16C_DISP08
52375796c8dcSSimon Schubert ENUMX
52385796c8dcSSimon Schubert   BFD_RELOC_16C_DISP08_C
52395796c8dcSSimon Schubert ENUMX
52405796c8dcSSimon Schubert   BFD_RELOC_16C_DISP16
52415796c8dcSSimon Schubert ENUMX
52425796c8dcSSimon Schubert   BFD_RELOC_16C_DISP16_C
52435796c8dcSSimon Schubert ENUMX
52445796c8dcSSimon Schubert   BFD_RELOC_16C_DISP24
52455796c8dcSSimon Schubert ENUMX
52465796c8dcSSimon Schubert   BFD_RELOC_16C_DISP24_C
52475796c8dcSSimon Schubert ENUMX
52485796c8dcSSimon Schubert   BFD_RELOC_16C_DISP24a
52495796c8dcSSimon Schubert ENUMX
52505796c8dcSSimon Schubert   BFD_RELOC_16C_DISP24a_C
52515796c8dcSSimon Schubert ENUMX
52525796c8dcSSimon Schubert   BFD_RELOC_16C_REG04
52535796c8dcSSimon Schubert ENUMX
52545796c8dcSSimon Schubert   BFD_RELOC_16C_REG04_C
52555796c8dcSSimon Schubert ENUMX
52565796c8dcSSimon Schubert   BFD_RELOC_16C_REG04a
52575796c8dcSSimon Schubert ENUMX
52585796c8dcSSimon Schubert   BFD_RELOC_16C_REG04a_C
52595796c8dcSSimon Schubert ENUMX
52605796c8dcSSimon Schubert   BFD_RELOC_16C_REG14
52615796c8dcSSimon Schubert ENUMX
52625796c8dcSSimon Schubert   BFD_RELOC_16C_REG14_C
52635796c8dcSSimon Schubert ENUMX
52645796c8dcSSimon Schubert   BFD_RELOC_16C_REG16
52655796c8dcSSimon Schubert ENUMX
52665796c8dcSSimon Schubert   BFD_RELOC_16C_REG16_C
52675796c8dcSSimon Schubert ENUMX
52685796c8dcSSimon Schubert   BFD_RELOC_16C_REG20
52695796c8dcSSimon Schubert ENUMX
52705796c8dcSSimon Schubert   BFD_RELOC_16C_REG20_C
52715796c8dcSSimon Schubert ENUMX
52725796c8dcSSimon Schubert   BFD_RELOC_16C_ABS20
52735796c8dcSSimon Schubert ENUMX
52745796c8dcSSimon Schubert   BFD_RELOC_16C_ABS20_C
52755796c8dcSSimon Schubert ENUMX
52765796c8dcSSimon Schubert   BFD_RELOC_16C_ABS24
52775796c8dcSSimon Schubert ENUMX
52785796c8dcSSimon Schubert   BFD_RELOC_16C_ABS24_C
52795796c8dcSSimon Schubert ENUMX
52805796c8dcSSimon Schubert   BFD_RELOC_16C_IMM04
52815796c8dcSSimon Schubert ENUMX
52825796c8dcSSimon Schubert   BFD_RELOC_16C_IMM04_C
52835796c8dcSSimon Schubert ENUMX
52845796c8dcSSimon Schubert   BFD_RELOC_16C_IMM16
52855796c8dcSSimon Schubert ENUMX
52865796c8dcSSimon Schubert   BFD_RELOC_16C_IMM16_C
52875796c8dcSSimon Schubert ENUMX
52885796c8dcSSimon Schubert   BFD_RELOC_16C_IMM20
52895796c8dcSSimon Schubert ENUMX
52905796c8dcSSimon Schubert   BFD_RELOC_16C_IMM20_C
52915796c8dcSSimon Schubert ENUMX
52925796c8dcSSimon Schubert   BFD_RELOC_16C_IMM24
52935796c8dcSSimon Schubert ENUMX
52945796c8dcSSimon Schubert   BFD_RELOC_16C_IMM24_C
52955796c8dcSSimon Schubert ENUMX
52965796c8dcSSimon Schubert   BFD_RELOC_16C_IMM32
52975796c8dcSSimon Schubert ENUMX
52985796c8dcSSimon Schubert   BFD_RELOC_16C_IMM32_C
52995796c8dcSSimon Schubert ENUMDOC
53005796c8dcSSimon Schubert   NS CR16C Relocations.
53015796c8dcSSimon Schubert 
53025796c8dcSSimon Schubert ENUM
53035796c8dcSSimon Schubert   BFD_RELOC_CR16_NUM8
53045796c8dcSSimon Schubert ENUMX
53055796c8dcSSimon Schubert   BFD_RELOC_CR16_NUM16
53065796c8dcSSimon Schubert ENUMX
53075796c8dcSSimon Schubert   BFD_RELOC_CR16_NUM32
53085796c8dcSSimon Schubert ENUMX
53095796c8dcSSimon Schubert   BFD_RELOC_CR16_NUM32a
53105796c8dcSSimon Schubert ENUMX
53115796c8dcSSimon Schubert   BFD_RELOC_CR16_REGREL0
53125796c8dcSSimon Schubert ENUMX
53135796c8dcSSimon Schubert   BFD_RELOC_CR16_REGREL4
53145796c8dcSSimon Schubert ENUMX
53155796c8dcSSimon Schubert   BFD_RELOC_CR16_REGREL4a
53165796c8dcSSimon Schubert ENUMX
53175796c8dcSSimon Schubert   BFD_RELOC_CR16_REGREL14
53185796c8dcSSimon Schubert ENUMX
53195796c8dcSSimon Schubert   BFD_RELOC_CR16_REGREL14a
53205796c8dcSSimon Schubert ENUMX
53215796c8dcSSimon Schubert   BFD_RELOC_CR16_REGREL16
53225796c8dcSSimon Schubert ENUMX
53235796c8dcSSimon Schubert   BFD_RELOC_CR16_REGREL20
53245796c8dcSSimon Schubert ENUMX
53255796c8dcSSimon Schubert   BFD_RELOC_CR16_REGREL20a
53265796c8dcSSimon Schubert ENUMX
53275796c8dcSSimon Schubert   BFD_RELOC_CR16_ABS20
53285796c8dcSSimon Schubert ENUMX
53295796c8dcSSimon Schubert   BFD_RELOC_CR16_ABS24
53305796c8dcSSimon Schubert ENUMX
53315796c8dcSSimon Schubert   BFD_RELOC_CR16_IMM4
53325796c8dcSSimon Schubert ENUMX
53335796c8dcSSimon Schubert   BFD_RELOC_CR16_IMM8
53345796c8dcSSimon Schubert ENUMX
53355796c8dcSSimon Schubert   BFD_RELOC_CR16_IMM16
53365796c8dcSSimon Schubert ENUMX
53375796c8dcSSimon Schubert   BFD_RELOC_CR16_IMM20
53385796c8dcSSimon Schubert ENUMX
53395796c8dcSSimon Schubert   BFD_RELOC_CR16_IMM24
53405796c8dcSSimon Schubert ENUMX
53415796c8dcSSimon Schubert   BFD_RELOC_CR16_IMM32
53425796c8dcSSimon Schubert ENUMX
53435796c8dcSSimon Schubert   BFD_RELOC_CR16_IMM32a
53445796c8dcSSimon Schubert ENUMX
53455796c8dcSSimon Schubert   BFD_RELOC_CR16_DISP4
53465796c8dcSSimon Schubert ENUMX
53475796c8dcSSimon Schubert   BFD_RELOC_CR16_DISP8
53485796c8dcSSimon Schubert ENUMX
53495796c8dcSSimon Schubert   BFD_RELOC_CR16_DISP16
53505796c8dcSSimon Schubert ENUMX
53515796c8dcSSimon Schubert   BFD_RELOC_CR16_DISP20
53525796c8dcSSimon Schubert ENUMX
53535796c8dcSSimon Schubert   BFD_RELOC_CR16_DISP24
53545796c8dcSSimon Schubert ENUMX
53555796c8dcSSimon Schubert   BFD_RELOC_CR16_DISP24a
53565796c8dcSSimon Schubert ENUMX
53575796c8dcSSimon Schubert   BFD_RELOC_CR16_SWITCH8
53585796c8dcSSimon Schubert ENUMX
53595796c8dcSSimon Schubert   BFD_RELOC_CR16_SWITCH16
53605796c8dcSSimon Schubert ENUMX
53615796c8dcSSimon Schubert   BFD_RELOC_CR16_SWITCH32
53625796c8dcSSimon Schubert ENUMX
53635796c8dcSSimon Schubert   BFD_RELOC_CR16_GOT_REGREL20
53645796c8dcSSimon Schubert ENUMX
53655796c8dcSSimon Schubert   BFD_RELOC_CR16_GOTC_REGREL20
53665796c8dcSSimon Schubert ENUMX
53675796c8dcSSimon Schubert   BFD_RELOC_CR16_GLOB_DAT
53685796c8dcSSimon Schubert ENUMDOC
53695796c8dcSSimon Schubert   NS CR16 Relocations.
53705796c8dcSSimon Schubert 
53715796c8dcSSimon Schubert ENUM
53725796c8dcSSimon Schubert   BFD_RELOC_CRX_REL4
53735796c8dcSSimon Schubert ENUMX
53745796c8dcSSimon Schubert   BFD_RELOC_CRX_REL8
53755796c8dcSSimon Schubert ENUMX
53765796c8dcSSimon Schubert   BFD_RELOC_CRX_REL8_CMP
53775796c8dcSSimon Schubert ENUMX
53785796c8dcSSimon Schubert   BFD_RELOC_CRX_REL16
53795796c8dcSSimon Schubert ENUMX
53805796c8dcSSimon Schubert   BFD_RELOC_CRX_REL24
53815796c8dcSSimon Schubert ENUMX
53825796c8dcSSimon Schubert   BFD_RELOC_CRX_REL32
53835796c8dcSSimon Schubert ENUMX
53845796c8dcSSimon Schubert   BFD_RELOC_CRX_REGREL12
53855796c8dcSSimon Schubert ENUMX
53865796c8dcSSimon Schubert   BFD_RELOC_CRX_REGREL22
53875796c8dcSSimon Schubert ENUMX
53885796c8dcSSimon Schubert   BFD_RELOC_CRX_REGREL28
53895796c8dcSSimon Schubert ENUMX
53905796c8dcSSimon Schubert   BFD_RELOC_CRX_REGREL32
53915796c8dcSSimon Schubert ENUMX
53925796c8dcSSimon Schubert   BFD_RELOC_CRX_ABS16
53935796c8dcSSimon Schubert ENUMX
53945796c8dcSSimon Schubert   BFD_RELOC_CRX_ABS32
53955796c8dcSSimon Schubert ENUMX
53965796c8dcSSimon Schubert   BFD_RELOC_CRX_NUM8
53975796c8dcSSimon Schubert ENUMX
53985796c8dcSSimon Schubert   BFD_RELOC_CRX_NUM16
53995796c8dcSSimon Schubert ENUMX
54005796c8dcSSimon Schubert   BFD_RELOC_CRX_NUM32
54015796c8dcSSimon Schubert ENUMX
54025796c8dcSSimon Schubert   BFD_RELOC_CRX_IMM16
54035796c8dcSSimon Schubert ENUMX
54045796c8dcSSimon Schubert   BFD_RELOC_CRX_IMM32
54055796c8dcSSimon Schubert ENUMX
54065796c8dcSSimon Schubert   BFD_RELOC_CRX_SWITCH8
54075796c8dcSSimon Schubert ENUMX
54085796c8dcSSimon Schubert   BFD_RELOC_CRX_SWITCH16
54095796c8dcSSimon Schubert ENUMX
54105796c8dcSSimon Schubert   BFD_RELOC_CRX_SWITCH32
54115796c8dcSSimon Schubert ENUMDOC
54125796c8dcSSimon Schubert   NS CRX Relocations.
54135796c8dcSSimon Schubert 
54145796c8dcSSimon Schubert ENUM
54155796c8dcSSimon Schubert   BFD_RELOC_CRIS_BDISP8
54165796c8dcSSimon Schubert ENUMX
54175796c8dcSSimon Schubert   BFD_RELOC_CRIS_UNSIGNED_5
54185796c8dcSSimon Schubert ENUMX
54195796c8dcSSimon Schubert   BFD_RELOC_CRIS_SIGNED_6
54205796c8dcSSimon Schubert ENUMX
54215796c8dcSSimon Schubert   BFD_RELOC_CRIS_UNSIGNED_6
54225796c8dcSSimon Schubert ENUMX
54235796c8dcSSimon Schubert   BFD_RELOC_CRIS_SIGNED_8
54245796c8dcSSimon Schubert ENUMX
54255796c8dcSSimon Schubert   BFD_RELOC_CRIS_UNSIGNED_8
54265796c8dcSSimon Schubert ENUMX
54275796c8dcSSimon Schubert   BFD_RELOC_CRIS_SIGNED_16
54285796c8dcSSimon Schubert ENUMX
54295796c8dcSSimon Schubert   BFD_RELOC_CRIS_UNSIGNED_16
54305796c8dcSSimon Schubert ENUMX
54315796c8dcSSimon Schubert   BFD_RELOC_CRIS_LAPCQ_OFFSET
54325796c8dcSSimon Schubert ENUMX
54335796c8dcSSimon Schubert   BFD_RELOC_CRIS_UNSIGNED_4
54345796c8dcSSimon Schubert ENUMDOC
54355796c8dcSSimon Schubert   These relocs are only used within the CRIS assembler.  They are not
54365796c8dcSSimon Schubert   (at present) written to any object files.
54375796c8dcSSimon Schubert ENUM
54385796c8dcSSimon Schubert   BFD_RELOC_CRIS_COPY
54395796c8dcSSimon Schubert ENUMX
54405796c8dcSSimon Schubert   BFD_RELOC_CRIS_GLOB_DAT
54415796c8dcSSimon Schubert ENUMX
54425796c8dcSSimon Schubert   BFD_RELOC_CRIS_JUMP_SLOT
54435796c8dcSSimon Schubert ENUMX
54445796c8dcSSimon Schubert   BFD_RELOC_CRIS_RELATIVE
54455796c8dcSSimon Schubert ENUMDOC
54465796c8dcSSimon Schubert   Relocs used in ELF shared libraries for CRIS.
54475796c8dcSSimon Schubert ENUM
54485796c8dcSSimon Schubert   BFD_RELOC_CRIS_32_GOT
54495796c8dcSSimon Schubert ENUMDOC
54505796c8dcSSimon Schubert   32-bit offset to symbol-entry within GOT.
54515796c8dcSSimon Schubert ENUM
54525796c8dcSSimon Schubert   BFD_RELOC_CRIS_16_GOT
54535796c8dcSSimon Schubert ENUMDOC
54545796c8dcSSimon Schubert   16-bit offset to symbol-entry within GOT.
54555796c8dcSSimon Schubert ENUM
54565796c8dcSSimon Schubert   BFD_RELOC_CRIS_32_GOTPLT
54575796c8dcSSimon Schubert ENUMDOC
54585796c8dcSSimon Schubert   32-bit offset to symbol-entry within GOT, with PLT handling.
54595796c8dcSSimon Schubert ENUM
54605796c8dcSSimon Schubert   BFD_RELOC_CRIS_16_GOTPLT
54615796c8dcSSimon Schubert ENUMDOC
54625796c8dcSSimon Schubert   16-bit offset to symbol-entry within GOT, with PLT handling.
54635796c8dcSSimon Schubert ENUM
54645796c8dcSSimon Schubert   BFD_RELOC_CRIS_32_GOTREL
54655796c8dcSSimon Schubert ENUMDOC
54665796c8dcSSimon Schubert   32-bit offset to symbol, relative to GOT.
54675796c8dcSSimon Schubert ENUM
54685796c8dcSSimon Schubert   BFD_RELOC_CRIS_32_PLT_GOTREL
54695796c8dcSSimon Schubert ENUMDOC
54705796c8dcSSimon Schubert   32-bit offset to symbol with PLT entry, relative to GOT.
54715796c8dcSSimon Schubert ENUM
54725796c8dcSSimon Schubert   BFD_RELOC_CRIS_32_PLT_PCREL
54735796c8dcSSimon Schubert ENUMDOC
54745796c8dcSSimon Schubert   32-bit offset to symbol with PLT entry, relative to this relocation.
54755796c8dcSSimon Schubert 
54765796c8dcSSimon Schubert ENUM
54775796c8dcSSimon Schubert   BFD_RELOC_CRIS_32_GOT_GD
54785796c8dcSSimon Schubert ENUMX
54795796c8dcSSimon Schubert   BFD_RELOC_CRIS_16_GOT_GD
54805796c8dcSSimon Schubert ENUMX
54815796c8dcSSimon Schubert   BFD_RELOC_CRIS_32_GD
54825796c8dcSSimon Schubert ENUMX
54835796c8dcSSimon Schubert   BFD_RELOC_CRIS_DTP
54845796c8dcSSimon Schubert ENUMX
54855796c8dcSSimon Schubert   BFD_RELOC_CRIS_32_DTPREL
54865796c8dcSSimon Schubert ENUMX
54875796c8dcSSimon Schubert   BFD_RELOC_CRIS_16_DTPREL
54885796c8dcSSimon Schubert ENUMX
54895796c8dcSSimon Schubert   BFD_RELOC_CRIS_32_GOT_TPREL
54905796c8dcSSimon Schubert ENUMX
54915796c8dcSSimon Schubert   BFD_RELOC_CRIS_16_GOT_TPREL
54925796c8dcSSimon Schubert ENUMX
54935796c8dcSSimon Schubert   BFD_RELOC_CRIS_32_TPREL
54945796c8dcSSimon Schubert ENUMX
54955796c8dcSSimon Schubert   BFD_RELOC_CRIS_16_TPREL
54965796c8dcSSimon Schubert ENUMX
54975796c8dcSSimon Schubert   BFD_RELOC_CRIS_DTPMOD
54985796c8dcSSimon Schubert ENUMX
54995796c8dcSSimon Schubert   BFD_RELOC_CRIS_32_IE
55005796c8dcSSimon Schubert ENUMDOC
55015796c8dcSSimon Schubert   Relocs used in TLS code for CRIS.
55025796c8dcSSimon Schubert 
55035796c8dcSSimon Schubert ENUM
55045796c8dcSSimon Schubert   BFD_RELOC_860_COPY
55055796c8dcSSimon Schubert ENUMX
55065796c8dcSSimon Schubert   BFD_RELOC_860_GLOB_DAT
55075796c8dcSSimon Schubert ENUMX
55085796c8dcSSimon Schubert   BFD_RELOC_860_JUMP_SLOT
55095796c8dcSSimon Schubert ENUMX
55105796c8dcSSimon Schubert   BFD_RELOC_860_RELATIVE
55115796c8dcSSimon Schubert ENUMX
55125796c8dcSSimon Schubert   BFD_RELOC_860_PC26
55135796c8dcSSimon Schubert ENUMX
55145796c8dcSSimon Schubert   BFD_RELOC_860_PLT26
55155796c8dcSSimon Schubert ENUMX
55165796c8dcSSimon Schubert   BFD_RELOC_860_PC16
55175796c8dcSSimon Schubert ENUMX
55185796c8dcSSimon Schubert   BFD_RELOC_860_LOW0
55195796c8dcSSimon Schubert ENUMX
55205796c8dcSSimon Schubert   BFD_RELOC_860_SPLIT0
55215796c8dcSSimon Schubert ENUMX
55225796c8dcSSimon Schubert   BFD_RELOC_860_LOW1
55235796c8dcSSimon Schubert ENUMX
55245796c8dcSSimon Schubert   BFD_RELOC_860_SPLIT1
55255796c8dcSSimon Schubert ENUMX
55265796c8dcSSimon Schubert   BFD_RELOC_860_LOW2
55275796c8dcSSimon Schubert ENUMX
55285796c8dcSSimon Schubert   BFD_RELOC_860_SPLIT2
55295796c8dcSSimon Schubert ENUMX
55305796c8dcSSimon Schubert   BFD_RELOC_860_LOW3
55315796c8dcSSimon Schubert ENUMX
55325796c8dcSSimon Schubert   BFD_RELOC_860_LOGOT0
55335796c8dcSSimon Schubert ENUMX
55345796c8dcSSimon Schubert   BFD_RELOC_860_SPGOT0
55355796c8dcSSimon Schubert ENUMX
55365796c8dcSSimon Schubert   BFD_RELOC_860_LOGOT1
55375796c8dcSSimon Schubert ENUMX
55385796c8dcSSimon Schubert   BFD_RELOC_860_SPGOT1
55395796c8dcSSimon Schubert ENUMX
55405796c8dcSSimon Schubert   BFD_RELOC_860_LOGOTOFF0
55415796c8dcSSimon Schubert ENUMX
55425796c8dcSSimon Schubert   BFD_RELOC_860_SPGOTOFF0
55435796c8dcSSimon Schubert ENUMX
55445796c8dcSSimon Schubert   BFD_RELOC_860_LOGOTOFF1
55455796c8dcSSimon Schubert ENUMX
55465796c8dcSSimon Schubert   BFD_RELOC_860_SPGOTOFF1
55475796c8dcSSimon Schubert ENUMX
55485796c8dcSSimon Schubert   BFD_RELOC_860_LOGOTOFF2
55495796c8dcSSimon Schubert ENUMX
55505796c8dcSSimon Schubert   BFD_RELOC_860_LOGOTOFF3
55515796c8dcSSimon Schubert ENUMX
55525796c8dcSSimon Schubert   BFD_RELOC_860_LOPC
55535796c8dcSSimon Schubert ENUMX
55545796c8dcSSimon Schubert   BFD_RELOC_860_HIGHADJ
55555796c8dcSSimon Schubert ENUMX
55565796c8dcSSimon Schubert   BFD_RELOC_860_HAGOT
55575796c8dcSSimon Schubert ENUMX
55585796c8dcSSimon Schubert   BFD_RELOC_860_HAGOTOFF
55595796c8dcSSimon Schubert ENUMX
55605796c8dcSSimon Schubert   BFD_RELOC_860_HAPC
55615796c8dcSSimon Schubert ENUMX
55625796c8dcSSimon Schubert   BFD_RELOC_860_HIGH
55635796c8dcSSimon Schubert ENUMX
55645796c8dcSSimon Schubert   BFD_RELOC_860_HIGOT
55655796c8dcSSimon Schubert ENUMX
55665796c8dcSSimon Schubert   BFD_RELOC_860_HIGOTOFF
55675796c8dcSSimon Schubert ENUMDOC
55685796c8dcSSimon Schubert   Intel i860 Relocations.
55695796c8dcSSimon Schubert 
55705796c8dcSSimon Schubert ENUM
55715796c8dcSSimon Schubert   BFD_RELOC_OPENRISC_ABS_26
55725796c8dcSSimon Schubert ENUMX
55735796c8dcSSimon Schubert   BFD_RELOC_OPENRISC_REL_26
55745796c8dcSSimon Schubert ENUMDOC
55755796c8dcSSimon Schubert   OpenRISC Relocations.
55765796c8dcSSimon Schubert 
55775796c8dcSSimon Schubert ENUM
55785796c8dcSSimon Schubert   BFD_RELOC_H8_DIR16A8
55795796c8dcSSimon Schubert ENUMX
55805796c8dcSSimon Schubert   BFD_RELOC_H8_DIR16R8
55815796c8dcSSimon Schubert ENUMX
55825796c8dcSSimon Schubert   BFD_RELOC_H8_DIR24A8
55835796c8dcSSimon Schubert ENUMX
55845796c8dcSSimon Schubert   BFD_RELOC_H8_DIR24R8
55855796c8dcSSimon Schubert ENUMX
55865796c8dcSSimon Schubert   BFD_RELOC_H8_DIR32A16
55875796c8dcSSimon Schubert ENUMDOC
55885796c8dcSSimon Schubert   H8 elf Relocations.
55895796c8dcSSimon Schubert 
55905796c8dcSSimon Schubert ENUM
55915796c8dcSSimon Schubert   BFD_RELOC_XSTORMY16_REL_12
55925796c8dcSSimon Schubert ENUMX
55935796c8dcSSimon Schubert   BFD_RELOC_XSTORMY16_12
55945796c8dcSSimon Schubert ENUMX
55955796c8dcSSimon Schubert   BFD_RELOC_XSTORMY16_24
55965796c8dcSSimon Schubert ENUMX
55975796c8dcSSimon Schubert   BFD_RELOC_XSTORMY16_FPTR16
55985796c8dcSSimon Schubert ENUMDOC
55995796c8dcSSimon Schubert   Sony Xstormy16 Relocations.
56005796c8dcSSimon Schubert 
56015796c8dcSSimon Schubert ENUM
56025796c8dcSSimon Schubert   BFD_RELOC_RELC
56035796c8dcSSimon Schubert ENUMDOC
56045796c8dcSSimon Schubert   Self-describing complex relocations.
56055796c8dcSSimon Schubert COMMENT
56065796c8dcSSimon Schubert 
56075796c8dcSSimon Schubert ENUM
56085796c8dcSSimon Schubert   BFD_RELOC_XC16X_PAG
56095796c8dcSSimon Schubert ENUMX
56105796c8dcSSimon Schubert   BFD_RELOC_XC16X_POF
56115796c8dcSSimon Schubert ENUMX
56125796c8dcSSimon Schubert   BFD_RELOC_XC16X_SEG
56135796c8dcSSimon Schubert ENUMX
56145796c8dcSSimon Schubert   BFD_RELOC_XC16X_SOF
56155796c8dcSSimon Schubert ENUMDOC
56165796c8dcSSimon Schubert   Infineon Relocations.
56175796c8dcSSimon Schubert 
56185796c8dcSSimon Schubert ENUM
56195796c8dcSSimon Schubert   BFD_RELOC_VAX_GLOB_DAT
56205796c8dcSSimon Schubert ENUMX
56215796c8dcSSimon Schubert   BFD_RELOC_VAX_JMP_SLOT
56225796c8dcSSimon Schubert ENUMX
56235796c8dcSSimon Schubert   BFD_RELOC_VAX_RELATIVE
56245796c8dcSSimon Schubert ENUMDOC
56255796c8dcSSimon Schubert   Relocations used by VAX ELF.
56265796c8dcSSimon Schubert 
56275796c8dcSSimon Schubert ENUM
56285796c8dcSSimon Schubert   BFD_RELOC_MT_PC16
56295796c8dcSSimon Schubert ENUMDOC
56305796c8dcSSimon Schubert   Morpho MT - 16 bit immediate relocation.
56315796c8dcSSimon Schubert ENUM
56325796c8dcSSimon Schubert   BFD_RELOC_MT_HI16
56335796c8dcSSimon Schubert ENUMDOC
56345796c8dcSSimon Schubert   Morpho MT - Hi 16 bits of an address.
56355796c8dcSSimon Schubert ENUM
56365796c8dcSSimon Schubert   BFD_RELOC_MT_LO16
56375796c8dcSSimon Schubert ENUMDOC
56385796c8dcSSimon Schubert   Morpho MT - Low 16 bits of an address.
56395796c8dcSSimon Schubert ENUM
56405796c8dcSSimon Schubert   BFD_RELOC_MT_GNU_VTINHERIT
56415796c8dcSSimon Schubert ENUMDOC
56425796c8dcSSimon Schubert   Morpho MT - Used to tell the linker which vtable entries are used.
56435796c8dcSSimon Schubert ENUM
56445796c8dcSSimon Schubert   BFD_RELOC_MT_GNU_VTENTRY
56455796c8dcSSimon Schubert ENUMDOC
56465796c8dcSSimon Schubert   Morpho MT - Used to tell the linker which vtable entries are used.
56475796c8dcSSimon Schubert ENUM
56485796c8dcSSimon Schubert   BFD_RELOC_MT_PCINSN8
56495796c8dcSSimon Schubert ENUMDOC
56505796c8dcSSimon Schubert   Morpho MT - 8 bit immediate relocation.
56515796c8dcSSimon Schubert 
56525796c8dcSSimon Schubert ENUM
56535796c8dcSSimon Schubert   BFD_RELOC_MSP430_10_PCREL
56545796c8dcSSimon Schubert ENUMX
56555796c8dcSSimon Schubert   BFD_RELOC_MSP430_16_PCREL
56565796c8dcSSimon Schubert ENUMX
56575796c8dcSSimon Schubert   BFD_RELOC_MSP430_16
56585796c8dcSSimon Schubert ENUMX
56595796c8dcSSimon Schubert   BFD_RELOC_MSP430_16_PCREL_BYTE
56605796c8dcSSimon Schubert ENUMX
56615796c8dcSSimon Schubert   BFD_RELOC_MSP430_16_BYTE
56625796c8dcSSimon Schubert ENUMX
56635796c8dcSSimon Schubert   BFD_RELOC_MSP430_2X_PCREL
56645796c8dcSSimon Schubert ENUMX
56655796c8dcSSimon Schubert   BFD_RELOC_MSP430_RL_PCREL
56665796c8dcSSimon Schubert ENUMDOC
56675796c8dcSSimon Schubert   msp430 specific relocation codes
56685796c8dcSSimon Schubert 
56695796c8dcSSimon Schubert ENUM
5670*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_S16
5671*ef5ccd6cSJohn Marino ENUMX
5672*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_U16
5673*ef5ccd6cSJohn Marino ENUMX
5674*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_CALL26
5675*ef5ccd6cSJohn Marino ENUMX
5676*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_IMM5
5677*ef5ccd6cSJohn Marino ENUMX
5678*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_CACHE_OPX
5679*ef5ccd6cSJohn Marino ENUMX
5680*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_IMM6
5681*ef5ccd6cSJohn Marino ENUMX
5682*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_IMM8
5683*ef5ccd6cSJohn Marino ENUMX
5684*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_HI16
5685*ef5ccd6cSJohn Marino ENUMX
5686*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_LO16
5687*ef5ccd6cSJohn Marino ENUMX
5688*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_HIADJ16
5689*ef5ccd6cSJohn Marino ENUMX
5690*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_GPREL
5691*ef5ccd6cSJohn Marino ENUMX
5692*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_UJMP
5693*ef5ccd6cSJohn Marino ENUMX
5694*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_CJMP
5695*ef5ccd6cSJohn Marino ENUMX
5696*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_CALLR
5697*ef5ccd6cSJohn Marino ENUMX
5698*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_ALIGN
5699*ef5ccd6cSJohn Marino ENUMX
5700*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_GOT16
5701*ef5ccd6cSJohn Marino ENUMX
5702*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_CALL16
5703*ef5ccd6cSJohn Marino ENUMX
5704*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_GOTOFF_LO
5705*ef5ccd6cSJohn Marino ENUMX
5706*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_GOTOFF_HA
5707*ef5ccd6cSJohn Marino ENUMX
5708*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_PCREL_LO
5709*ef5ccd6cSJohn Marino ENUMX
5710*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_PCREL_HA
5711*ef5ccd6cSJohn Marino ENUMX
5712*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_TLS_GD16
5713*ef5ccd6cSJohn Marino ENUMX
5714*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_TLS_LDM16
5715*ef5ccd6cSJohn Marino ENUMX
5716*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_TLS_LDO16
5717*ef5ccd6cSJohn Marino ENUMX
5718*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_TLS_IE16
5719*ef5ccd6cSJohn Marino ENUMX
5720*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_TLS_LE16
5721*ef5ccd6cSJohn Marino ENUMX
5722*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_TLS_DTPMOD
5723*ef5ccd6cSJohn Marino ENUMX
5724*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_TLS_DTPREL
5725*ef5ccd6cSJohn Marino ENUMX
5726*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_TLS_TPREL
5727*ef5ccd6cSJohn Marino ENUMX
5728*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_COPY
5729*ef5ccd6cSJohn Marino ENUMX
5730*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_GLOB_DAT
5731*ef5ccd6cSJohn Marino ENUMX
5732*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_JUMP_SLOT
5733*ef5ccd6cSJohn Marino ENUMX
5734*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_RELATIVE
5735*ef5ccd6cSJohn Marino ENUMX
5736*ef5ccd6cSJohn Marino   BFD_RELOC_NIOS2_GOTOFF
5737*ef5ccd6cSJohn Marino ENUMDOC
5738*ef5ccd6cSJohn Marino   Relocations used by the Altera Nios II core.
5739*ef5ccd6cSJohn Marino 
5740*ef5ccd6cSJohn Marino ENUM
57415796c8dcSSimon Schubert   BFD_RELOC_IQ2000_OFFSET_16
57425796c8dcSSimon Schubert ENUMX
57435796c8dcSSimon Schubert   BFD_RELOC_IQ2000_OFFSET_21
57445796c8dcSSimon Schubert ENUMX
57455796c8dcSSimon Schubert   BFD_RELOC_IQ2000_UHI16
57465796c8dcSSimon Schubert ENUMDOC
57475796c8dcSSimon Schubert   IQ2000 Relocations.
57485796c8dcSSimon Schubert 
57495796c8dcSSimon Schubert ENUM
57505796c8dcSSimon Schubert   BFD_RELOC_XTENSA_RTLD
57515796c8dcSSimon Schubert ENUMDOC
57525796c8dcSSimon Schubert   Special Xtensa relocation used only by PLT entries in ELF shared
57535796c8dcSSimon Schubert   objects to indicate that the runtime linker should set the value
57545796c8dcSSimon Schubert   to one of its own internal functions or data structures.
57555796c8dcSSimon Schubert ENUM
57565796c8dcSSimon Schubert   BFD_RELOC_XTENSA_GLOB_DAT
57575796c8dcSSimon Schubert ENUMX
57585796c8dcSSimon Schubert   BFD_RELOC_XTENSA_JMP_SLOT
57595796c8dcSSimon Schubert ENUMX
57605796c8dcSSimon Schubert   BFD_RELOC_XTENSA_RELATIVE
57615796c8dcSSimon Schubert ENUMDOC
57625796c8dcSSimon Schubert   Xtensa relocations for ELF shared objects.
57635796c8dcSSimon Schubert ENUM
57645796c8dcSSimon Schubert   BFD_RELOC_XTENSA_PLT
57655796c8dcSSimon Schubert ENUMDOC
57665796c8dcSSimon Schubert   Xtensa relocation used in ELF object files for symbols that may require
57675796c8dcSSimon Schubert   PLT entries.  Otherwise, this is just a generic 32-bit relocation.
57685796c8dcSSimon Schubert ENUM
57695796c8dcSSimon Schubert   BFD_RELOC_XTENSA_DIFF8
57705796c8dcSSimon Schubert ENUMX
57715796c8dcSSimon Schubert   BFD_RELOC_XTENSA_DIFF16
57725796c8dcSSimon Schubert ENUMX
57735796c8dcSSimon Schubert   BFD_RELOC_XTENSA_DIFF32
57745796c8dcSSimon Schubert ENUMDOC
57755796c8dcSSimon Schubert   Xtensa relocations to mark the difference of two local symbols.
57765796c8dcSSimon Schubert   These are only needed to support linker relaxation and can be ignored
57775796c8dcSSimon Schubert   when not relaxing.  The field is set to the value of the difference
57785796c8dcSSimon Schubert   assuming no relaxation.  The relocation encodes the position of the
57795796c8dcSSimon Schubert   first symbol so the linker can determine whether to adjust the field
57805796c8dcSSimon Schubert   value.
57815796c8dcSSimon Schubert ENUM
57825796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT0_OP
57835796c8dcSSimon Schubert ENUMX
57845796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT1_OP
57855796c8dcSSimon Schubert ENUMX
57865796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT2_OP
57875796c8dcSSimon Schubert ENUMX
57885796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT3_OP
57895796c8dcSSimon Schubert ENUMX
57905796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT4_OP
57915796c8dcSSimon Schubert ENUMX
57925796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT5_OP
57935796c8dcSSimon Schubert ENUMX
57945796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT6_OP
57955796c8dcSSimon Schubert ENUMX
57965796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT7_OP
57975796c8dcSSimon Schubert ENUMX
57985796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT8_OP
57995796c8dcSSimon Schubert ENUMX
58005796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT9_OP
58015796c8dcSSimon Schubert ENUMX
58025796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT10_OP
58035796c8dcSSimon Schubert ENUMX
58045796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT11_OP
58055796c8dcSSimon Schubert ENUMX
58065796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT12_OP
58075796c8dcSSimon Schubert ENUMX
58085796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT13_OP
58095796c8dcSSimon Schubert ENUMX
58105796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT14_OP
58115796c8dcSSimon Schubert ENUMDOC
58125796c8dcSSimon Schubert   Generic Xtensa relocations for instruction operands.  Only the slot
58135796c8dcSSimon Schubert   number is encoded in the relocation.  The relocation applies to the
58145796c8dcSSimon Schubert   last PC-relative immediate operand, or if there are no PC-relative
58155796c8dcSSimon Schubert   immediates, to the last immediate operand.
58165796c8dcSSimon Schubert ENUM
58175796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT0_ALT
58185796c8dcSSimon Schubert ENUMX
58195796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT1_ALT
58205796c8dcSSimon Schubert ENUMX
58215796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT2_ALT
58225796c8dcSSimon Schubert ENUMX
58235796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT3_ALT
58245796c8dcSSimon Schubert ENUMX
58255796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT4_ALT
58265796c8dcSSimon Schubert ENUMX
58275796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT5_ALT
58285796c8dcSSimon Schubert ENUMX
58295796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT6_ALT
58305796c8dcSSimon Schubert ENUMX
58315796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT7_ALT
58325796c8dcSSimon Schubert ENUMX
58335796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT8_ALT
58345796c8dcSSimon Schubert ENUMX
58355796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT9_ALT
58365796c8dcSSimon Schubert ENUMX
58375796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT10_ALT
58385796c8dcSSimon Schubert ENUMX
58395796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT11_ALT
58405796c8dcSSimon Schubert ENUMX
58415796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT12_ALT
58425796c8dcSSimon Schubert ENUMX
58435796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT13_ALT
58445796c8dcSSimon Schubert ENUMX
58455796c8dcSSimon Schubert   BFD_RELOC_XTENSA_SLOT14_ALT
58465796c8dcSSimon Schubert ENUMDOC
58475796c8dcSSimon Schubert   Alternate Xtensa relocations.  Only the slot is encoded in the
58485796c8dcSSimon Schubert   relocation.  The meaning of these relocations is opcode-specific.
58495796c8dcSSimon Schubert ENUM
58505796c8dcSSimon Schubert   BFD_RELOC_XTENSA_OP0
58515796c8dcSSimon Schubert ENUMX
58525796c8dcSSimon Schubert   BFD_RELOC_XTENSA_OP1
58535796c8dcSSimon Schubert ENUMX
58545796c8dcSSimon Schubert   BFD_RELOC_XTENSA_OP2
58555796c8dcSSimon Schubert ENUMDOC
58565796c8dcSSimon Schubert   Xtensa relocations for backward compatibility.  These have all been
58575796c8dcSSimon Schubert   replaced by BFD_RELOC_XTENSA_SLOT0_OP.
58585796c8dcSSimon Schubert ENUM
58595796c8dcSSimon Schubert   BFD_RELOC_XTENSA_ASM_EXPAND
58605796c8dcSSimon Schubert ENUMDOC
58615796c8dcSSimon Schubert   Xtensa relocation to mark that the assembler expanded the
58625796c8dcSSimon Schubert   instructions from an original target.  The expansion size is
58635796c8dcSSimon Schubert   encoded in the reloc size.
58645796c8dcSSimon Schubert ENUM
58655796c8dcSSimon Schubert   BFD_RELOC_XTENSA_ASM_SIMPLIFY
58665796c8dcSSimon Schubert ENUMDOC
58675796c8dcSSimon Schubert   Xtensa relocation to mark that the linker should simplify
58685796c8dcSSimon Schubert   assembler-expanded instructions.  This is commonly used
58695796c8dcSSimon Schubert   internally by the linker after analysis of a
58705796c8dcSSimon Schubert   BFD_RELOC_XTENSA_ASM_EXPAND.
58715796c8dcSSimon Schubert ENUM
58725796c8dcSSimon Schubert   BFD_RELOC_XTENSA_TLSDESC_FN
58735796c8dcSSimon Schubert ENUMX
58745796c8dcSSimon Schubert   BFD_RELOC_XTENSA_TLSDESC_ARG
58755796c8dcSSimon Schubert ENUMX
58765796c8dcSSimon Schubert   BFD_RELOC_XTENSA_TLS_DTPOFF
58775796c8dcSSimon Schubert ENUMX
58785796c8dcSSimon Schubert   BFD_RELOC_XTENSA_TLS_TPOFF
58795796c8dcSSimon Schubert ENUMX
58805796c8dcSSimon Schubert   BFD_RELOC_XTENSA_TLS_FUNC
58815796c8dcSSimon Schubert ENUMX
58825796c8dcSSimon Schubert   BFD_RELOC_XTENSA_TLS_ARG
58835796c8dcSSimon Schubert ENUMX
58845796c8dcSSimon Schubert   BFD_RELOC_XTENSA_TLS_CALL
58855796c8dcSSimon Schubert ENUMDOC
58865796c8dcSSimon Schubert   Xtensa TLS relocations.
58875796c8dcSSimon Schubert 
58885796c8dcSSimon Schubert ENUM
58895796c8dcSSimon Schubert   BFD_RELOC_Z80_DISP8
58905796c8dcSSimon Schubert ENUMDOC
58915796c8dcSSimon Schubert   8 bit signed offset in (ix+d) or (iy+d).
58925796c8dcSSimon Schubert 
58935796c8dcSSimon Schubert ENUM
58945796c8dcSSimon Schubert   BFD_RELOC_Z8K_DISP7
58955796c8dcSSimon Schubert ENUMDOC
58965796c8dcSSimon Schubert   DJNZ offset.
58975796c8dcSSimon Schubert ENUM
58985796c8dcSSimon Schubert   BFD_RELOC_Z8K_CALLR
58995796c8dcSSimon Schubert ENUMDOC
59005796c8dcSSimon Schubert   CALR offset.
59015796c8dcSSimon Schubert ENUM
59025796c8dcSSimon Schubert   BFD_RELOC_Z8K_IMM4L
59035796c8dcSSimon Schubert ENUMDOC
59045796c8dcSSimon Schubert   4 bit value.
59055796c8dcSSimon Schubert 
59065796c8dcSSimon Schubert ENUM
59075796c8dcSSimon Schubert    BFD_RELOC_LM32_CALL
59085796c8dcSSimon Schubert ENUMX
59095796c8dcSSimon Schubert    BFD_RELOC_LM32_BRANCH
59105796c8dcSSimon Schubert ENUMX
59115796c8dcSSimon Schubert    BFD_RELOC_LM32_16_GOT
59125796c8dcSSimon Schubert ENUMX
59135796c8dcSSimon Schubert    BFD_RELOC_LM32_GOTOFF_HI16
59145796c8dcSSimon Schubert ENUMX
59155796c8dcSSimon Schubert    BFD_RELOC_LM32_GOTOFF_LO16
59165796c8dcSSimon Schubert ENUMX
59175796c8dcSSimon Schubert    BFD_RELOC_LM32_COPY
59185796c8dcSSimon Schubert ENUMX
59195796c8dcSSimon Schubert    BFD_RELOC_LM32_GLOB_DAT
59205796c8dcSSimon Schubert ENUMX
59215796c8dcSSimon Schubert    BFD_RELOC_LM32_JMP_SLOT
59225796c8dcSSimon Schubert ENUMX
59235796c8dcSSimon Schubert    BFD_RELOC_LM32_RELATIVE
59245796c8dcSSimon Schubert ENUMDOC
59255796c8dcSSimon Schubert  Lattice Mico32 relocations.
59265796c8dcSSimon Schubert 
59275796c8dcSSimon Schubert ENUM
59285796c8dcSSimon Schubert   BFD_RELOC_MACH_O_SECTDIFF
59295796c8dcSSimon Schubert ENUMDOC
59305796c8dcSSimon Schubert   Difference between two section addreses.  Must be followed by a
59315796c8dcSSimon Schubert   BFD_RELOC_MACH_O_PAIR.
59325796c8dcSSimon Schubert ENUM
5933*ef5ccd6cSJohn Marino   BFD_RELOC_MACH_O_LOCAL_SECTDIFF
5934*ef5ccd6cSJohn Marino ENUMDOC
5935*ef5ccd6cSJohn Marino   Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol.
5936*ef5ccd6cSJohn Marino ENUM
59375796c8dcSSimon Schubert   BFD_RELOC_MACH_O_PAIR
59385796c8dcSSimon Schubert ENUMDOC
5939cf7f2e2dSJohn Marino   Pair of relocation.  Contains the first symbol.
5940cf7f2e2dSJohn Marino 
5941cf7f2e2dSJohn Marino ENUM
5942cf7f2e2dSJohn Marino   BFD_RELOC_MACH_O_X86_64_BRANCH32
5943cf7f2e2dSJohn Marino ENUMX
5944cf7f2e2dSJohn Marino   BFD_RELOC_MACH_O_X86_64_BRANCH8
5945cf7f2e2dSJohn Marino ENUMDOC
5946cf7f2e2dSJohn Marino   PCREL relocations.  They are marked as branch to create PLT entry if
5947cf7f2e2dSJohn Marino   required.
5948cf7f2e2dSJohn Marino ENUM
5949cf7f2e2dSJohn Marino   BFD_RELOC_MACH_O_X86_64_GOT
5950cf7f2e2dSJohn Marino ENUMDOC
5951cf7f2e2dSJohn Marino   Used when referencing a GOT entry.
5952cf7f2e2dSJohn Marino ENUM
5953cf7f2e2dSJohn Marino   BFD_RELOC_MACH_O_X86_64_GOT_LOAD
5954cf7f2e2dSJohn Marino ENUMDOC
5955cf7f2e2dSJohn Marino   Used when loading a GOT entry with movq.  It is specially marked so that
5956cf7f2e2dSJohn Marino   the linker could optimize the movq to a leaq if possible.
5957cf7f2e2dSJohn Marino ENUM
5958cf7f2e2dSJohn Marino   BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32
5959cf7f2e2dSJohn Marino ENUMDOC
5960cf7f2e2dSJohn Marino   Symbol will be substracted.  Must be followed by a BFD_RELOC_64.
5961cf7f2e2dSJohn Marino ENUM
5962cf7f2e2dSJohn Marino   BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64
5963cf7f2e2dSJohn Marino ENUMDOC
5964cf7f2e2dSJohn Marino   Symbol will be substracted.  Must be followed by a BFD_RELOC_64.
5965cf7f2e2dSJohn Marino ENUM
5966cf7f2e2dSJohn Marino   BFD_RELOC_MACH_O_X86_64_PCREL32_1
5967cf7f2e2dSJohn Marino ENUMDOC
5968cf7f2e2dSJohn Marino   Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.
5969cf7f2e2dSJohn Marino ENUM
5970cf7f2e2dSJohn Marino   BFD_RELOC_MACH_O_X86_64_PCREL32_2
5971cf7f2e2dSJohn Marino ENUMDOC
5972cf7f2e2dSJohn Marino   Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.
5973cf7f2e2dSJohn Marino ENUM
5974cf7f2e2dSJohn Marino   BFD_RELOC_MACH_O_X86_64_PCREL32_4
5975cf7f2e2dSJohn Marino ENUMDOC
5976cf7f2e2dSJohn Marino   Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.
59775796c8dcSSimon Schubert 
59785796c8dcSSimon Schubert ENUM
59795796c8dcSSimon Schubert   BFD_RELOC_MICROBLAZE_32_LO
59805796c8dcSSimon Schubert ENUMDOC
59815796c8dcSSimon Schubert   This is a 32 bit reloc for the microblaze that stores the
59825796c8dcSSimon Schubert   low 16 bits of a value
59835796c8dcSSimon Schubert ENUM
59845796c8dcSSimon Schubert   BFD_RELOC_MICROBLAZE_32_LO_PCREL
59855796c8dcSSimon Schubert ENUMDOC
59865796c8dcSSimon Schubert   This is a 32 bit pc-relative reloc for the microblaze that
59875796c8dcSSimon Schubert   stores the low 16 bits of a value
59885796c8dcSSimon Schubert ENUM
59895796c8dcSSimon Schubert   BFD_RELOC_MICROBLAZE_32_ROSDA
59905796c8dcSSimon Schubert ENUMDOC
59915796c8dcSSimon Schubert   This is a 32 bit reloc for the microblaze that stores a
59925796c8dcSSimon Schubert   value relative to the read-only small data area anchor
59935796c8dcSSimon Schubert ENUM
59945796c8dcSSimon Schubert   BFD_RELOC_MICROBLAZE_32_RWSDA
59955796c8dcSSimon Schubert ENUMDOC
59965796c8dcSSimon Schubert   This is a 32 bit reloc for the microblaze that stores a
59975796c8dcSSimon Schubert   value relative to the read-write small data area anchor
59985796c8dcSSimon Schubert ENUM
59995796c8dcSSimon Schubert   BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM
60005796c8dcSSimon Schubert ENUMDOC
60015796c8dcSSimon Schubert   This is a 32 bit reloc for the microblaze to handle
60025796c8dcSSimon Schubert   expressions of the form "Symbol Op Symbol"
60035796c8dcSSimon Schubert ENUM
60045796c8dcSSimon Schubert   BFD_RELOC_MICROBLAZE_64_NONE
60055796c8dcSSimon Schubert ENUMDOC
60065796c8dcSSimon Schubert   This is a 64 bit reloc that stores the 32 bit pc relative
60075796c8dcSSimon Schubert   value in two words (with an imm instruction).  No relocation is
60085796c8dcSSimon Schubert   done here - only used for relaxing
60095796c8dcSSimon Schubert ENUM
60105796c8dcSSimon Schubert   BFD_RELOC_MICROBLAZE_64_GOTPC
60115796c8dcSSimon Schubert ENUMDOC
60125796c8dcSSimon Schubert   This is a 64 bit reloc that stores the 32 bit pc relative
60135796c8dcSSimon Schubert   value in two words (with an imm instruction).  The relocation is
60145796c8dcSSimon Schubert   PC-relative GOT offset
60155796c8dcSSimon Schubert ENUM
60165796c8dcSSimon Schubert   BFD_RELOC_MICROBLAZE_64_GOT
60175796c8dcSSimon Schubert ENUMDOC
60185796c8dcSSimon Schubert   This is a 64 bit reloc that stores the 32 bit pc relative
60195796c8dcSSimon Schubert   value in two words (with an imm instruction).  The relocation is
60205796c8dcSSimon Schubert   GOT offset
60215796c8dcSSimon Schubert ENUM
60225796c8dcSSimon Schubert   BFD_RELOC_MICROBLAZE_64_PLT
60235796c8dcSSimon Schubert ENUMDOC
60245796c8dcSSimon Schubert   This is a 64 bit reloc that stores the 32 bit pc relative
60255796c8dcSSimon Schubert   value in two words (with an imm instruction).  The relocation is
60265796c8dcSSimon Schubert   PC-relative offset into PLT
60275796c8dcSSimon Schubert ENUM
60285796c8dcSSimon Schubert   BFD_RELOC_MICROBLAZE_64_GOTOFF
60295796c8dcSSimon Schubert ENUMDOC
60305796c8dcSSimon Schubert   This is a 64 bit reloc that stores the 32 bit GOT relative
60315796c8dcSSimon Schubert   value in two words (with an imm instruction).  The relocation is
60325796c8dcSSimon Schubert   relative offset from _GLOBAL_OFFSET_TABLE_
60335796c8dcSSimon Schubert ENUM
60345796c8dcSSimon Schubert   BFD_RELOC_MICROBLAZE_32_GOTOFF
60355796c8dcSSimon Schubert ENUMDOC
60365796c8dcSSimon Schubert   This is a 32 bit reloc that stores the 32 bit GOT relative
60375796c8dcSSimon Schubert   value in a word.  The relocation is relative offset from
60385796c8dcSSimon Schubert   _GLOBAL_OFFSET_TABLE_
60395796c8dcSSimon Schubert ENUM
60405796c8dcSSimon Schubert   BFD_RELOC_MICROBLAZE_COPY
60415796c8dcSSimon Schubert ENUMDOC
60425796c8dcSSimon Schubert   This is used to tell the dynamic linker to copy the value out of
60435796c8dcSSimon Schubert   the dynamic object into the runtime process image.
6044*ef5ccd6cSJohn Marino ENUM
6045*ef5ccd6cSJohn Marino   BFD_RELOC_MICROBLAZE_64_TLS
6046*ef5ccd6cSJohn Marino ENUMDOC
6047*ef5ccd6cSJohn Marino   Unused Reloc
6048*ef5ccd6cSJohn Marino ENUM
6049*ef5ccd6cSJohn Marino   BFD_RELOC_MICROBLAZE_64_TLSGD
6050*ef5ccd6cSJohn Marino ENUMDOC
6051*ef5ccd6cSJohn Marino   This is a 64 bit reloc that stores the 32 bit GOT relative value
6052*ef5ccd6cSJohn Marino   of the GOT TLS GD info entry in two words (with an imm instruction). The
6053*ef5ccd6cSJohn Marino   relocation is GOT offset.
6054*ef5ccd6cSJohn Marino ENUM
6055*ef5ccd6cSJohn Marino   BFD_RELOC_MICROBLAZE_64_TLSLD
6056*ef5ccd6cSJohn Marino ENUMDOC
6057*ef5ccd6cSJohn Marino   This is a 64 bit reloc that stores the 32 bit GOT relative value
6058*ef5ccd6cSJohn Marino   of the GOT TLS LD info entry in two words (with an imm instruction). The
6059*ef5ccd6cSJohn Marino   relocation is GOT offset.
6060*ef5ccd6cSJohn Marino ENUM
6061*ef5ccd6cSJohn Marino   BFD_RELOC_MICROBLAZE_32_TLSDTPMOD
6062*ef5ccd6cSJohn Marino ENUMDOC
6063*ef5ccd6cSJohn Marino   This is a 32 bit reloc that stores the Module ID to GOT(n).
6064*ef5ccd6cSJohn Marino ENUM
6065*ef5ccd6cSJohn Marino   BFD_RELOC_MICROBLAZE_32_TLSDTPREL
6066*ef5ccd6cSJohn Marino ENUMDOC
6067*ef5ccd6cSJohn Marino   This is a 32 bit reloc that stores TLS offset to GOT(n+1).
6068*ef5ccd6cSJohn Marino ENUM
6069*ef5ccd6cSJohn Marino   BFD_RELOC_MICROBLAZE_64_TLSDTPREL
6070*ef5ccd6cSJohn Marino ENUMDOC
6071*ef5ccd6cSJohn Marino   This is a 32 bit reloc for storing TLS offset to two words (uses imm
6072*ef5ccd6cSJohn Marino   instruction)
6073*ef5ccd6cSJohn Marino ENUM
6074*ef5ccd6cSJohn Marino   BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL
6075*ef5ccd6cSJohn Marino ENUMDOC
6076*ef5ccd6cSJohn Marino   This is a 64 bit reloc that stores 32-bit thread pointer relative offset
6077*ef5ccd6cSJohn Marino   to two words (uses imm instruction).
6078*ef5ccd6cSJohn Marino ENUM
6079*ef5ccd6cSJohn Marino   BFD_RELOC_MICROBLAZE_64_TLSTPREL
6080*ef5ccd6cSJohn Marino ENUMDOC
6081*ef5ccd6cSJohn Marino   This is a 64 bit reloc that stores 32-bit thread pointer relative offset
6082*ef5ccd6cSJohn Marino   to two words (uses imm instruction).
6083*ef5ccd6cSJohn Marino 
6084*ef5ccd6cSJohn Marino ENUM
6085*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_ADD_LO12
6086*ef5ccd6cSJohn Marino ENUMDOC
6087*ef5ccd6cSJohn Marino   AArch64 ADD immediate instruction, holding bits 0 to 11 of the address.
6088*ef5ccd6cSJohn Marino   Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6089*ef5ccd6cSJohn Marino ENUM
6090*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_GOT_LD_PREL19
6091*ef5ccd6cSJohn Marino ENUMDOC
6092*ef5ccd6cSJohn Marino   AArch64 Load Literal instruction, holding a 19 bit PC relative word
6093*ef5ccd6cSJohn Marino   offset of the global offset table entry for a symbol.  The lowest two
6094*ef5ccd6cSJohn Marino   bits must be zero and are not stored in the instruction, giving a 21
6095*ef5ccd6cSJohn Marino   bit signed byte offset.  This relocation type requires signed overflow
6096*ef5ccd6cSJohn Marino   checking.
6097*ef5ccd6cSJohn Marino ENUM
6098*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_ADR_GOT_PAGE
6099*ef5ccd6cSJohn Marino ENUMDOC
6100*ef5ccd6cSJohn Marino   Get to the page base of the global offset table entry for a symbol as
6101*ef5ccd6cSJohn Marino   part of an ADRP instruction using a 21 bit PC relative value.Used in
6102*ef5ccd6cSJohn Marino   conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.
6103*ef5ccd6cSJohn Marino ENUM
6104*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_ADR_HI21_PCREL
6105*ef5ccd6cSJohn Marino ENUMDOC
6106*ef5ccd6cSJohn Marino   AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
6107*ef5ccd6cSJohn Marino   offset, giving a 4KB aligned page base address.
6108*ef5ccd6cSJohn Marino ENUM
6109*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL
6110*ef5ccd6cSJohn Marino ENUMDOC
6111*ef5ccd6cSJohn Marino   AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
6112*ef5ccd6cSJohn Marino   offset, giving a 4KB aligned page base address, but with no overflow
6113*ef5ccd6cSJohn Marino   checking.
6114*ef5ccd6cSJohn Marino ENUM
6115*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_ADR_LO21_PCREL
6116*ef5ccd6cSJohn Marino ENUMDOC
6117*ef5ccd6cSJohn Marino   AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset.
6118*ef5ccd6cSJohn Marino ENUM
6119*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_BRANCH19
6120*ef5ccd6cSJohn Marino ENUMDOC
6121*ef5ccd6cSJohn Marino   AArch64 19 bit pc-relative conditional branch and compare & branch.
6122*ef5ccd6cSJohn Marino   The lowest two bits must be zero and are not stored in the instruction,
6123*ef5ccd6cSJohn Marino   giving a 21 bit signed byte offset.
6124*ef5ccd6cSJohn Marino ENUM
6125*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_CALL26
6126*ef5ccd6cSJohn Marino ENUMDOC
6127*ef5ccd6cSJohn Marino   AArch64 26 bit pc-relative unconditional branch and link.
6128*ef5ccd6cSJohn Marino   The lowest two bits must be zero and are not stored in the instruction,
6129*ef5ccd6cSJohn Marino   giving a 28 bit signed byte offset.
6130*ef5ccd6cSJohn Marino ENUM
6131*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP
6132*ef5ccd6cSJohn Marino ENUMDOC
6133*ef5ccd6cSJohn Marino   AArch64 pseudo relocation code to be used internally by the AArch64
6134*ef5ccd6cSJohn Marino   assembler and not (currently) written to any object files.
6135*ef5ccd6cSJohn Marino ENUM
6136*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_JUMP26
6137*ef5ccd6cSJohn Marino ENUMDOC
6138*ef5ccd6cSJohn Marino   AArch64 26 bit pc-relative unconditional branch.
6139*ef5ccd6cSJohn Marino   The lowest two bits must be zero and are not stored in the instruction,
6140*ef5ccd6cSJohn Marino   giving a 28 bit signed byte offset.
6141*ef5ccd6cSJohn Marino ENUM
6142*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_LD_LO19_PCREL
6143*ef5ccd6cSJohn Marino ENUMDOC
6144*ef5ccd6cSJohn Marino   AArch64 Load Literal instruction, holding a 19 bit pc-relative word
6145*ef5ccd6cSJohn Marino   offset.  The lowest two bits must be zero and are not stored in the
6146*ef5ccd6cSJohn Marino   instruction, giving a 21 bit signed byte offset.
6147*ef5ccd6cSJohn Marino ENUM
6148*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_LD64_GOT_LO12_NC
6149*ef5ccd6cSJohn Marino ENUMDOC
6150*ef5ccd6cSJohn Marino   Unsigned 12 bit byte offset for 64 bit load/store from the page of
6151*ef5ccd6cSJohn Marino   the GOT entry for this symbol.  Used in conjunction with
6152*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_ADR_GOTPAGE.
6153*ef5ccd6cSJohn Marino ENUM
6154*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_LDST_LO12
6155*ef5ccd6cSJohn Marino ENUMDOC
6156*ef5ccd6cSJohn Marino   AArch64 unspecified load/store instruction, holding bits 0 to 11 of the
6157*ef5ccd6cSJohn Marino   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6158*ef5ccd6cSJohn Marino ENUM
6159*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_LDST8_LO12
6160*ef5ccd6cSJohn Marino ENUMDOC
6161*ef5ccd6cSJohn Marino   AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
6162*ef5ccd6cSJohn Marino   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6163*ef5ccd6cSJohn Marino ENUM
6164*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_LDST16_LO12
6165*ef5ccd6cSJohn Marino ENUMDOC
6166*ef5ccd6cSJohn Marino   AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
6167*ef5ccd6cSJohn Marino   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6168*ef5ccd6cSJohn Marino ENUM
6169*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_LDST32_LO12
6170*ef5ccd6cSJohn Marino ENUMDOC
6171*ef5ccd6cSJohn Marino   AArch64 32-bit load/store instruction, holding bits 0 to 11 of the
6172*ef5ccd6cSJohn Marino   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6173*ef5ccd6cSJohn Marino ENUM
6174*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_LDST64_LO12
6175*ef5ccd6cSJohn Marino ENUMDOC
6176*ef5ccd6cSJohn Marino   AArch64 64-bit load/store instruction, holding bits 0 to 11 of the
6177*ef5ccd6cSJohn Marino   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6178*ef5ccd6cSJohn Marino ENUM
6179*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_LDST128_LO12
6180*ef5ccd6cSJohn Marino ENUMDOC
6181*ef5ccd6cSJohn Marino   AArch64 128-bit load/store instruction, holding bits 0 to 11 of the
6182*ef5ccd6cSJohn Marino   address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
6183*ef5ccd6cSJohn Marino ENUM
6184*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_MOVW_G0
6185*ef5ccd6cSJohn Marino ENUMDOC
6186*ef5ccd6cSJohn Marino   AArch64 MOV[NZK] instruction with most significant bits 0 to 15
6187*ef5ccd6cSJohn Marino   of an unsigned address/value.
6188*ef5ccd6cSJohn Marino ENUM
6189*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_MOVW_G0_S
6190*ef5ccd6cSJohn Marino ENUMDOC
6191*ef5ccd6cSJohn Marino   AArch64 MOV[NZ] instruction with most significant bits 0 to 15
6192*ef5ccd6cSJohn Marino   of a signed value.  Changes instruction to MOVZ or MOVN depending on the
6193*ef5ccd6cSJohn Marino   value's sign.
6194*ef5ccd6cSJohn Marino ENUM
6195*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_MOVW_G0_NC
6196*ef5ccd6cSJohn Marino ENUMDOC
6197*ef5ccd6cSJohn Marino   AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
6198*ef5ccd6cSJohn Marino   an address/value.  No overflow checking.
6199*ef5ccd6cSJohn Marino ENUM
6200*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_MOVW_G1
6201*ef5ccd6cSJohn Marino ENUMDOC
6202*ef5ccd6cSJohn Marino   AArch64 MOV[NZK] instruction with most significant bits 16 to 31
6203*ef5ccd6cSJohn Marino   of an unsigned address/value.
6204*ef5ccd6cSJohn Marino ENUM
6205*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_MOVW_G1_NC
6206*ef5ccd6cSJohn Marino ENUMDOC
6207*ef5ccd6cSJohn Marino   AArch64 MOV[NZK] instruction with less significant bits 16 to 31
6208*ef5ccd6cSJohn Marino   of an address/value.  No overflow checking.
6209*ef5ccd6cSJohn Marino ENUM
6210*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_MOVW_G1_S
6211*ef5ccd6cSJohn Marino ENUMDOC
6212*ef5ccd6cSJohn Marino   AArch64 MOV[NZ] instruction with most significant bits 16 to 31
6213*ef5ccd6cSJohn Marino   of a signed value.  Changes instruction to MOVZ or MOVN depending on the
6214*ef5ccd6cSJohn Marino   value's sign.
6215*ef5ccd6cSJohn Marino ENUM
6216*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_MOVW_G2
6217*ef5ccd6cSJohn Marino ENUMDOC
6218*ef5ccd6cSJohn Marino   AArch64 MOV[NZK] instruction with most significant bits 32 to 47
6219*ef5ccd6cSJohn Marino   of an unsigned address/value.
6220*ef5ccd6cSJohn Marino ENUM
6221*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_MOVW_G2_NC
6222*ef5ccd6cSJohn Marino ENUMDOC
6223*ef5ccd6cSJohn Marino   AArch64 MOV[NZK] instruction with less significant bits 32 to 47
6224*ef5ccd6cSJohn Marino   of an address/value.  No overflow checking.
6225*ef5ccd6cSJohn Marino ENUM
6226*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_MOVW_G2_S
6227*ef5ccd6cSJohn Marino ENUMDOC
6228*ef5ccd6cSJohn Marino   AArch64 MOV[NZ] instruction with most significant bits 32 to 47
6229*ef5ccd6cSJohn Marino   of a signed value.  Changes instruction to MOVZ or MOVN depending on the
6230*ef5ccd6cSJohn Marino   value's sign.
6231*ef5ccd6cSJohn Marino ENUM
6232*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_MOVW_G3
6233*ef5ccd6cSJohn Marino ENUMDOC
6234*ef5ccd6cSJohn Marino   AArch64 MOV[NZK] instruction with most signficant bits 48 to 64
6235*ef5ccd6cSJohn Marino   of a signed or unsigned address/value.
6236*ef5ccd6cSJohn Marino ENUM
6237*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSDESC
6238*ef5ccd6cSJohn Marino ENUMDOC
6239*ef5ccd6cSJohn Marino   AArch64 TLS relocation.
6240*ef5ccd6cSJohn Marino ENUM
6241*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSDESC_ADD
6242*ef5ccd6cSJohn Marino ENUMDOC
6243*ef5ccd6cSJohn Marino   AArch64 TLS DESC relocation.
6244*ef5ccd6cSJohn Marino ENUM
6245*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC
6246*ef5ccd6cSJohn Marino ENUMDOC
6247*ef5ccd6cSJohn Marino   AArch64 TLS DESC relocation.
6248*ef5ccd6cSJohn Marino ENUM
6249*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE
6250*ef5ccd6cSJohn Marino ENUMDOC
6251*ef5ccd6cSJohn Marino   AArch64 TLS DESC relocation.
6252*ef5ccd6cSJohn Marino ENUM
6253*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21
6254*ef5ccd6cSJohn Marino ENUMDOC
6255*ef5ccd6cSJohn Marino   AArch64 TLS DESC relocation.
6256*ef5ccd6cSJohn Marino ENUM
6257*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSDESC_CALL
6258*ef5ccd6cSJohn Marino ENUMDOC
6259*ef5ccd6cSJohn Marino   AArch64 TLS DESC relocation.
6260*ef5ccd6cSJohn Marino ENUM
6261*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC
6262*ef5ccd6cSJohn Marino ENUMDOC
6263*ef5ccd6cSJohn Marino   AArch64 TLS DESC relocation.
6264*ef5ccd6cSJohn Marino ENUM
6265*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSDESC_LD64_PREL19
6266*ef5ccd6cSJohn Marino ENUMDOC
6267*ef5ccd6cSJohn Marino   AArch64 TLS DESC relocation.
6268*ef5ccd6cSJohn Marino ENUM
6269*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSDESC_LDR
6270*ef5ccd6cSJohn Marino ENUMDOC
6271*ef5ccd6cSJohn Marino   AArch64 TLS DESC relocation.
6272*ef5ccd6cSJohn Marino ENUM
6273*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC
6274*ef5ccd6cSJohn Marino ENUMDOC
6275*ef5ccd6cSJohn Marino   AArch64 TLS DESC relocation.
6276*ef5ccd6cSJohn Marino ENUM
6277*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSDESC_OFF_G1
6278*ef5ccd6cSJohn Marino ENUMDOC
6279*ef5ccd6cSJohn Marino   AArch64 TLS DESC relocation.
6280*ef5ccd6cSJohn Marino ENUM
6281*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC
6282*ef5ccd6cSJohn Marino ENUMDOC
6283*ef5ccd6cSJohn Marino   Unsigned 12 bit byte offset to global offset table entry for a symbols
6284*ef5ccd6cSJohn Marino   tls_index structure.  Used in conjunction with
6285*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.
6286*ef5ccd6cSJohn Marino ENUM
6287*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21
6288*ef5ccd6cSJohn Marino ENUMDOC
6289*ef5ccd6cSJohn Marino   Get to the page base of the global offset table entry for a symbols
6290*ef5ccd6cSJohn Marino   tls_index structure as part of an adrp instruction using a 21 bit PC
6291*ef5ccd6cSJohn Marino   relative value.  Used in conjunction with
6292*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC.
6293*ef5ccd6cSJohn Marino ENUM
6294*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21
6295*ef5ccd6cSJohn Marino ENUMDOC
6296*ef5ccd6cSJohn Marino   AArch64 TLS INITIAL EXEC relocation.
6297*ef5ccd6cSJohn Marino ENUM
6298*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19
6299*ef5ccd6cSJohn Marino ENUMDOC
6300*ef5ccd6cSJohn Marino   AArch64 TLS INITIAL EXEC relocation.
6301*ef5ccd6cSJohn Marino ENUM
6302*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC
6303*ef5ccd6cSJohn Marino ENUMDOC
6304*ef5ccd6cSJohn Marino   AArch64 TLS INITIAL EXEC relocation.
6305*ef5ccd6cSJohn Marino ENUM
6306*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC
6307*ef5ccd6cSJohn Marino ENUMDOC
6308*ef5ccd6cSJohn Marino   AArch64 TLS INITIAL EXEC relocation.
6309*ef5ccd6cSJohn Marino ENUM
6310*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1
6311*ef5ccd6cSJohn Marino ENUMDOC
6312*ef5ccd6cSJohn Marino   AArch64 TLS INITIAL EXEC relocation.
6313*ef5ccd6cSJohn Marino ENUM
6314*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12
6315*ef5ccd6cSJohn Marino ENUMDOC
6316*ef5ccd6cSJohn Marino   AArch64 TLS LOCAL EXEC relocation.
6317*ef5ccd6cSJohn Marino ENUM
6318*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12
6319*ef5ccd6cSJohn Marino ENUMDOC
6320*ef5ccd6cSJohn Marino   AArch64 TLS LOCAL EXEC relocation.
6321*ef5ccd6cSJohn Marino ENUM
6322*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC
6323*ef5ccd6cSJohn Marino ENUMDOC
6324*ef5ccd6cSJohn Marino   AArch64 TLS LOCAL EXEC relocation.
6325*ef5ccd6cSJohn Marino ENUM
6326*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0
6327*ef5ccd6cSJohn Marino ENUMDOC
6328*ef5ccd6cSJohn Marino   AArch64 TLS LOCAL EXEC relocation.
6329*ef5ccd6cSJohn Marino ENUM
6330*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC
6331*ef5ccd6cSJohn Marino ENUMDOC
6332*ef5ccd6cSJohn Marino   AArch64 TLS LOCAL EXEC relocation.
6333*ef5ccd6cSJohn Marino ENUM
6334*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1
6335*ef5ccd6cSJohn Marino ENUMDOC
6336*ef5ccd6cSJohn Marino   AArch64 TLS LOCAL EXEC relocation.
6337*ef5ccd6cSJohn Marino ENUM
6338*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC
6339*ef5ccd6cSJohn Marino ENUMDOC
6340*ef5ccd6cSJohn Marino   AArch64 TLS LOCAL EXEC relocation.
6341*ef5ccd6cSJohn Marino ENUM
6342*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2
6343*ef5ccd6cSJohn Marino ENUMDOC
6344*ef5ccd6cSJohn Marino   AArch64 TLS LOCAL EXEC relocation.
6345*ef5ccd6cSJohn Marino ENUM
6346*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLS_DTPMOD64
6347*ef5ccd6cSJohn Marino ENUMDOC
6348*ef5ccd6cSJohn Marino   AArch64 TLS relocation.
6349*ef5ccd6cSJohn Marino ENUM
6350*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLS_DTPREL64
6351*ef5ccd6cSJohn Marino ENUMDOC
6352*ef5ccd6cSJohn Marino   AArch64 TLS relocation.
6353*ef5ccd6cSJohn Marino ENUM
6354*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TLS_TPREL64
6355*ef5ccd6cSJohn Marino ENUMDOC
6356*ef5ccd6cSJohn Marino   AArch64 TLS relocation.
6357*ef5ccd6cSJohn Marino ENUM
6358*ef5ccd6cSJohn Marino   BFD_RELOC_AARCH64_TSTBR14
6359*ef5ccd6cSJohn Marino ENUMDOC
6360*ef5ccd6cSJohn Marino   AArch64 14 bit pc-relative test bit and branch.
6361*ef5ccd6cSJohn Marino   The lowest two bits must be zero and are not stored in the instruction,
6362*ef5ccd6cSJohn Marino   giving a 16 bit signed byte offset.
63635796c8dcSSimon Schubert 
6364a45ae5f8SJohn Marino ENUM
6365a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_COPY
6366a45ae5f8SJohn Marino ENUMX
6367a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_GLOB_DAT
6368a45ae5f8SJohn Marino ENUMX
6369a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_JMP_SLOT
6370a45ae5f8SJohn Marino ENUMX
6371a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_RELATIVE
6372a45ae5f8SJohn Marino ENUMX
6373a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_BROFF_X1
6374a45ae5f8SJohn Marino ENUMX
6375a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_JOFFLONG_X1
6376a45ae5f8SJohn Marino ENUMX
6377a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT
6378a45ae5f8SJohn Marino ENUMX
6379a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM8_X0
6380a45ae5f8SJohn Marino ENUMX
6381a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM8_Y0
6382a45ae5f8SJohn Marino ENUMX
6383a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM8_X1
6384a45ae5f8SJohn Marino ENUMX
6385a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM8_Y1
6386a45ae5f8SJohn Marino ENUMX
6387a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_DEST_IMM8_X1
6388a45ae5f8SJohn Marino ENUMX
6389a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_MT_IMM15_X1
6390a45ae5f8SJohn Marino ENUMX
6391a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_MF_IMM15_X1
6392a45ae5f8SJohn Marino ENUMX
6393a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0
6394a45ae5f8SJohn Marino ENUMX
6395a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1
6396a45ae5f8SJohn Marino ENUMX
6397a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_LO
6398a45ae5f8SJohn Marino ENUMX
6399a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_LO
6400a45ae5f8SJohn Marino ENUMX
6401a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_HI
6402a45ae5f8SJohn Marino ENUMX
6403a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_HI
6404a45ae5f8SJohn Marino ENUMX
6405a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_HA
6406a45ae5f8SJohn Marino ENUMX
6407a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_HA
6408a45ae5f8SJohn Marino ENUMX
6409a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_PCREL
6410a45ae5f8SJohn Marino ENUMX
6411a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_PCREL
6412a45ae5f8SJohn Marino ENUMX
6413a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL
6414a45ae5f8SJohn Marino ENUMX
6415a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL
6416a45ae5f8SJohn Marino ENUMX
6417a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL
6418a45ae5f8SJohn Marino ENUMX
6419a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL
6420a45ae5f8SJohn Marino ENUMX
6421a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL
6422a45ae5f8SJohn Marino ENUMX
6423a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL
6424a45ae5f8SJohn Marino ENUMX
6425a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_GOT
6426a45ae5f8SJohn Marino ENUMX
6427a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_GOT
6428a45ae5f8SJohn Marino ENUMX
6429a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO
6430a45ae5f8SJohn Marino ENUMX
6431a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO
6432a45ae5f8SJohn Marino ENUMX
6433a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI
6434a45ae5f8SJohn Marino ENUMX
6435a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI
6436a45ae5f8SJohn Marino ENUMX
6437a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA
6438a45ae5f8SJohn Marino ENUMX
6439a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA
6440a45ae5f8SJohn Marino ENUMX
6441a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_MMSTART_X0
6442a45ae5f8SJohn Marino ENUMX
6443a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_MMEND_X0
6444a45ae5f8SJohn Marino ENUMX
6445a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_MMSTART_X1
6446a45ae5f8SJohn Marino ENUMX
6447a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_MMEND_X1
6448a45ae5f8SJohn Marino ENUMX
6449a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_SHAMT_X0
6450a45ae5f8SJohn Marino ENUMX
6451a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_SHAMT_X1
6452a45ae5f8SJohn Marino ENUMX
6453a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_SHAMT_Y0
6454a45ae5f8SJohn Marino ENUMX
6455a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_SHAMT_Y1
6456a45ae5f8SJohn Marino ENUMX
6457*ef5ccd6cSJohn Marino   BFD_RELOC_TILEPRO_TLS_GD_CALL
6458*ef5ccd6cSJohn Marino ENUMX
6459*ef5ccd6cSJohn Marino   BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD
6460*ef5ccd6cSJohn Marino ENUMX
6461*ef5ccd6cSJohn Marino   BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD
6462*ef5ccd6cSJohn Marino ENUMX
6463*ef5ccd6cSJohn Marino   BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD
6464*ef5ccd6cSJohn Marino ENUMX
6465*ef5ccd6cSJohn Marino   BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD
6466*ef5ccd6cSJohn Marino ENUMX
6467*ef5ccd6cSJohn Marino   BFD_RELOC_TILEPRO_TLS_IE_LOAD
6468*ef5ccd6cSJohn Marino ENUMX
6469a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD
6470a45ae5f8SJohn Marino ENUMX
6471a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD
6472a45ae5f8SJohn Marino ENUMX
6473a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO
6474a45ae5f8SJohn Marino ENUMX
6475a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO
6476a45ae5f8SJohn Marino ENUMX
6477a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI
6478a45ae5f8SJohn Marino ENUMX
6479a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI
6480a45ae5f8SJohn Marino ENUMX
6481a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA
6482a45ae5f8SJohn Marino ENUMX
6483a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA
6484a45ae5f8SJohn Marino ENUMX
6485a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE
6486a45ae5f8SJohn Marino ENUMX
6487a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE
6488a45ae5f8SJohn Marino ENUMX
6489a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO
6490a45ae5f8SJohn Marino ENUMX
6491a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO
6492a45ae5f8SJohn Marino ENUMX
6493a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI
6494a45ae5f8SJohn Marino ENUMX
6495a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI
6496a45ae5f8SJohn Marino ENUMX
6497a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA
6498a45ae5f8SJohn Marino ENUMX
6499a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA
6500a45ae5f8SJohn Marino ENUMX
6501a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_TLS_DTPMOD32
6502a45ae5f8SJohn Marino ENUMX
6503a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_TLS_DTPOFF32
6504a45ae5f8SJohn Marino ENUMX
6505a45ae5f8SJohn Marino   BFD_RELOC_TILEPRO_TLS_TPOFF32
6506*ef5ccd6cSJohn Marino ENUMX
6507*ef5ccd6cSJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE
6508*ef5ccd6cSJohn Marino ENUMX
6509*ef5ccd6cSJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE
6510*ef5ccd6cSJohn Marino ENUMX
6511*ef5ccd6cSJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO
6512*ef5ccd6cSJohn Marino ENUMX
6513*ef5ccd6cSJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO
6514*ef5ccd6cSJohn Marino ENUMX
6515*ef5ccd6cSJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI
6516*ef5ccd6cSJohn Marino ENUMX
6517*ef5ccd6cSJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI
6518*ef5ccd6cSJohn Marino ENUMX
6519*ef5ccd6cSJohn Marino   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA
6520*ef5ccd6cSJohn Marino ENUMX
6521*ef5ccd6cSJohn Marino   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA
6522a45ae5f8SJohn Marino ENUMDOC
6523a45ae5f8SJohn Marino   Tilera TILEPro Relocations.
6524a45ae5f8SJohn Marino ENUM
6525a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_HW0
6526a45ae5f8SJohn Marino ENUMX
6527a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_HW1
6528a45ae5f8SJohn Marino ENUMX
6529a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_HW2
6530a45ae5f8SJohn Marino ENUMX
6531a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_HW3
6532a45ae5f8SJohn Marino ENUMX
6533a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_HW0_LAST
6534a45ae5f8SJohn Marino ENUMX
6535a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_HW1_LAST
6536a45ae5f8SJohn Marino ENUMX
6537a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_HW2_LAST
6538a45ae5f8SJohn Marino ENUMX
6539a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_COPY
6540a45ae5f8SJohn Marino ENUMX
6541a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_GLOB_DAT
6542a45ae5f8SJohn Marino ENUMX
6543a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_JMP_SLOT
6544a45ae5f8SJohn Marino ENUMX
6545a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_RELATIVE
6546a45ae5f8SJohn Marino ENUMX
6547a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_BROFF_X1
6548a45ae5f8SJohn Marino ENUMX
6549a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_JUMPOFF_X1
6550a45ae5f8SJohn Marino ENUMX
6551a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_JUMPOFF_X1_PLT
6552a45ae5f8SJohn Marino ENUMX
6553a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM8_X0
6554a45ae5f8SJohn Marino ENUMX
6555a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM8_Y0
6556a45ae5f8SJohn Marino ENUMX
6557a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM8_X1
6558a45ae5f8SJohn Marino ENUMX
6559a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM8_Y1
6560a45ae5f8SJohn Marino ENUMX
6561a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_DEST_IMM8_X1
6562a45ae5f8SJohn Marino ENUMX
6563a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_MT_IMM14_X1
6564a45ae5f8SJohn Marino ENUMX
6565a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_MF_IMM14_X1
6566a45ae5f8SJohn Marino ENUMX
6567a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_MMSTART_X0
6568a45ae5f8SJohn Marino ENUMX
6569a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_MMEND_X0
6570a45ae5f8SJohn Marino ENUMX
6571a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_SHAMT_X0
6572a45ae5f8SJohn Marino ENUMX
6573a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_SHAMT_X1
6574a45ae5f8SJohn Marino ENUMX
6575a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_SHAMT_Y0
6576a45ae5f8SJohn Marino ENUMX
6577a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_SHAMT_Y1
6578a45ae5f8SJohn Marino ENUMX
6579a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW0
6580a45ae5f8SJohn Marino ENUMX
6581a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW0
6582a45ae5f8SJohn Marino ENUMX
6583a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW1
6584a45ae5f8SJohn Marino ENUMX
6585a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW1
6586a45ae5f8SJohn Marino ENUMX
6587a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW2
6588a45ae5f8SJohn Marino ENUMX
6589a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW2
6590a45ae5f8SJohn Marino ENUMX
6591a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW3
6592a45ae5f8SJohn Marino ENUMX
6593a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW3
6594a45ae5f8SJohn Marino ENUMX
6595a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST
6596a45ae5f8SJohn Marino ENUMX
6597a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST
6598a45ae5f8SJohn Marino ENUMX
6599a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST
6600a45ae5f8SJohn Marino ENUMX
6601a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST
6602a45ae5f8SJohn Marino ENUMX
6603a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST
6604a45ae5f8SJohn Marino ENUMX
6605a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST
6606a45ae5f8SJohn Marino ENUMX
6607a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL
6608a45ae5f8SJohn Marino ENUMX
6609a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL
6610a45ae5f8SJohn Marino ENUMX
6611a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL
6612a45ae5f8SJohn Marino ENUMX
6613a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL
6614a45ae5f8SJohn Marino ENUMX
6615a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL
6616a45ae5f8SJohn Marino ENUMX
6617a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL
6618a45ae5f8SJohn Marino ENUMX
6619a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL
6620a45ae5f8SJohn Marino ENUMX
6621a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL
6622a45ae5f8SJohn Marino ENUMX
6623a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL
6624a45ae5f8SJohn Marino ENUMX
6625a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL
6626a45ae5f8SJohn Marino ENUMX
6627a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL
6628a45ae5f8SJohn Marino ENUMX
6629a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL
6630a45ae5f8SJohn Marino ENUMX
6631a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL
6632a45ae5f8SJohn Marino ENUMX
6633a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL
6634a45ae5f8SJohn Marino ENUMX
6635a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT
6636a45ae5f8SJohn Marino ENUMX
6637a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT
6638a45ae5f8SJohn Marino ENUMX
6639*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL
6640a45ae5f8SJohn Marino ENUMX
6641*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL
6642a45ae5f8SJohn Marino ENUMX
6643*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL
6644a45ae5f8SJohn Marino ENUMX
6645*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL
6646a45ae5f8SJohn Marino ENUMX
6647*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL
6648a45ae5f8SJohn Marino ENUMX
6649*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL
6650a45ae5f8SJohn Marino ENUMX
6651a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT
6652a45ae5f8SJohn Marino ENUMX
6653a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT
6654a45ae5f8SJohn Marino ENUMX
6655a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT
6656a45ae5f8SJohn Marino ENUMX
6657a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT
6658a45ae5f8SJohn Marino ENUMX
6659*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL
6660a45ae5f8SJohn Marino ENUMX
6661*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL
6662a45ae5f8SJohn Marino ENUMX
6663a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD
6664a45ae5f8SJohn Marino ENUMX
6665a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD
6666a45ae5f8SJohn Marino ENUMX
6667*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE
6668a45ae5f8SJohn Marino ENUMX
6669*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE
6670a45ae5f8SJohn Marino ENUMX
6671*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE
6672a45ae5f8SJohn Marino ENUMX
6673*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE
6674a45ae5f8SJohn Marino ENUMX
6675*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE
6676a45ae5f8SJohn Marino ENUMX
6677*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE
6678a45ae5f8SJohn Marino ENUMX
6679a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD
6680a45ae5f8SJohn Marino ENUMX
6681a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD
6682a45ae5f8SJohn Marino ENUMX
6683a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD
6684a45ae5f8SJohn Marino ENUMX
6685a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD
6686a45ae5f8SJohn Marino ENUMX
6687a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE
6688a45ae5f8SJohn Marino ENUMX
6689a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE
6690a45ae5f8SJohn Marino ENUMX
6691*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL
6692a45ae5f8SJohn Marino ENUMX
6693*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL
6694a45ae5f8SJohn Marino ENUMX
6695*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL
6696a45ae5f8SJohn Marino ENUMX
6697*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL
6698a45ae5f8SJohn Marino ENUMX
6699*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL
6700a45ae5f8SJohn Marino ENUMX
6701*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL
6702a45ae5f8SJohn Marino ENUMX
6703a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE
6704a45ae5f8SJohn Marino ENUMX
6705a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE
6706a45ae5f8SJohn Marino ENUMX
6707a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE
6708a45ae5f8SJohn Marino ENUMX
6709a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE
6710a45ae5f8SJohn Marino ENUMX
6711a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_TLS_DTPMOD64
6712a45ae5f8SJohn Marino ENUMX
6713a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_TLS_DTPOFF64
6714a45ae5f8SJohn Marino ENUMX
6715a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_TLS_TPOFF64
6716a45ae5f8SJohn Marino ENUMX
6717a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_TLS_DTPMOD32
6718a45ae5f8SJohn Marino ENUMX
6719a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_TLS_DTPOFF32
6720a45ae5f8SJohn Marino ENUMX
6721a45ae5f8SJohn Marino   BFD_RELOC_TILEGX_TLS_TPOFF32
6722*ef5ccd6cSJohn Marino ENUMX
6723*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_TLS_GD_CALL
6724*ef5ccd6cSJohn Marino ENUMX
6725*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD
6726*ef5ccd6cSJohn Marino ENUMX
6727*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD
6728*ef5ccd6cSJohn Marino ENUMX
6729*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD
6730*ef5ccd6cSJohn Marino ENUMX
6731*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD
6732*ef5ccd6cSJohn Marino ENUMX
6733*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_TLS_IE_LOAD
6734*ef5ccd6cSJohn Marino ENUMX
6735*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD
6736*ef5ccd6cSJohn Marino ENUMX
6737*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD
6738*ef5ccd6cSJohn Marino ENUMX
6739*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD
6740*ef5ccd6cSJohn Marino ENUMX
6741*ef5ccd6cSJohn Marino   BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD
6742a45ae5f8SJohn Marino ENUMDOC
6743a45ae5f8SJohn Marino   Tilera TILE-Gx Relocations.
6744a45ae5f8SJohn Marino ENUM
6745a45ae5f8SJohn Marino   BFD_RELOC_EPIPHANY_SIMM8
6746a45ae5f8SJohn Marino ENUMDOC
6747a45ae5f8SJohn Marino   Adapteva EPIPHANY - 8 bit signed pc-relative displacement
6748a45ae5f8SJohn Marino ENUM
6749a45ae5f8SJohn Marino   BFD_RELOC_EPIPHANY_SIMM24
6750a45ae5f8SJohn Marino ENUMDOC
6751a45ae5f8SJohn Marino   Adapteva EPIPHANY - 24 bit signed pc-relative displacement
6752a45ae5f8SJohn Marino ENUM
6753a45ae5f8SJohn Marino   BFD_RELOC_EPIPHANY_HIGH
6754a45ae5f8SJohn Marino ENUMDOC
6755a45ae5f8SJohn Marino   Adapteva EPIPHANY - 16 most-significant bits of absolute address
6756a45ae5f8SJohn Marino ENUM
6757a45ae5f8SJohn Marino   BFD_RELOC_EPIPHANY_LOW
6758a45ae5f8SJohn Marino ENUMDOC
6759a45ae5f8SJohn Marino   Adapteva EPIPHANY - 16 least-significant bits of absolute address
6760a45ae5f8SJohn Marino ENUM
6761a45ae5f8SJohn Marino   BFD_RELOC_EPIPHANY_SIMM11
6762a45ae5f8SJohn Marino ENUMDOC
6763a45ae5f8SJohn Marino   Adapteva EPIPHANY - 11 bit signed number - add/sub immediate
6764a45ae5f8SJohn Marino ENUM
6765a45ae5f8SJohn Marino   BFD_RELOC_EPIPHANY_IMM11
6766a45ae5f8SJohn Marino ENUMDOC
6767a45ae5f8SJohn Marino   Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement)
6768a45ae5f8SJohn Marino ENUM
6769a45ae5f8SJohn Marino   BFD_RELOC_EPIPHANY_IMM8
6770a45ae5f8SJohn Marino ENUMDOC
6771a45ae5f8SJohn Marino   Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.
6772a45ae5f8SJohn Marino 
67735796c8dcSSimon Schubert 
67745796c8dcSSimon Schubert ENDSENUM
67755796c8dcSSimon Schubert   BFD_RELOC_UNUSED
67765796c8dcSSimon Schubert CODE_FRAGMENT
67775796c8dcSSimon Schubert .
67785796c8dcSSimon Schubert .typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
67795796c8dcSSimon Schubert */
67805796c8dcSSimon Schubert 
67815796c8dcSSimon Schubert /*
67825796c8dcSSimon Schubert FUNCTION
67835796c8dcSSimon Schubert 	bfd_reloc_type_lookup
67845796c8dcSSimon Schubert 	bfd_reloc_name_lookup
67855796c8dcSSimon Schubert 
67865796c8dcSSimon Schubert SYNOPSIS
67875796c8dcSSimon Schubert 	reloc_howto_type *bfd_reloc_type_lookup
67885796c8dcSSimon Schubert 	  (bfd *abfd, bfd_reloc_code_real_type code);
67895796c8dcSSimon Schubert 	reloc_howto_type *bfd_reloc_name_lookup
67905796c8dcSSimon Schubert 	  (bfd *abfd, const char *reloc_name);
67915796c8dcSSimon Schubert 
67925796c8dcSSimon Schubert DESCRIPTION
67935796c8dcSSimon Schubert 	Return a pointer to a howto structure which, when
67945796c8dcSSimon Schubert 	invoked, will perform the relocation @var{code} on data from the
67955796c8dcSSimon Schubert 	architecture noted.
67965796c8dcSSimon Schubert 
67975796c8dcSSimon Schubert */
67985796c8dcSSimon Schubert 
67995796c8dcSSimon Schubert reloc_howto_type *
bfd_reloc_type_lookup(bfd * abfd,bfd_reloc_code_real_type code)68005796c8dcSSimon Schubert bfd_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
68015796c8dcSSimon Schubert {
68025796c8dcSSimon Schubert   return BFD_SEND (abfd, reloc_type_lookup, (abfd, code));
68035796c8dcSSimon Schubert }
68045796c8dcSSimon Schubert 
68055796c8dcSSimon Schubert reloc_howto_type *
bfd_reloc_name_lookup(bfd * abfd,const char * reloc_name)68065796c8dcSSimon Schubert bfd_reloc_name_lookup (bfd *abfd, const char *reloc_name)
68075796c8dcSSimon Schubert {
68085796c8dcSSimon Schubert   return BFD_SEND (abfd, reloc_name_lookup, (abfd, reloc_name));
68095796c8dcSSimon Schubert }
68105796c8dcSSimon Schubert 
68115796c8dcSSimon Schubert static reloc_howto_type bfd_howto_32 =
68125796c8dcSSimon Schubert HOWTO (0, 00, 2, 32, FALSE, 0, complain_overflow_dont, 0, "VRT32", FALSE, 0xffffffff, 0xffffffff, TRUE);
68135796c8dcSSimon Schubert 
68145796c8dcSSimon Schubert /*
68155796c8dcSSimon Schubert INTERNAL_FUNCTION
68165796c8dcSSimon Schubert 	bfd_default_reloc_type_lookup
68175796c8dcSSimon Schubert 
68185796c8dcSSimon Schubert SYNOPSIS
68195796c8dcSSimon Schubert 	reloc_howto_type *bfd_default_reloc_type_lookup
68205796c8dcSSimon Schubert 	  (bfd *abfd, bfd_reloc_code_real_type  code);
68215796c8dcSSimon Schubert 
68225796c8dcSSimon Schubert DESCRIPTION
68235796c8dcSSimon Schubert 	Provides a default relocation lookup routine for any architecture.
68245796c8dcSSimon Schubert 
68255796c8dcSSimon Schubert */
68265796c8dcSSimon Schubert 
68275796c8dcSSimon Schubert reloc_howto_type *
bfd_default_reloc_type_lookup(bfd * abfd,bfd_reloc_code_real_type code)68285796c8dcSSimon Schubert bfd_default_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
68295796c8dcSSimon Schubert {
68305796c8dcSSimon Schubert   switch (code)
68315796c8dcSSimon Schubert     {
68325796c8dcSSimon Schubert     case BFD_RELOC_CTOR:
68335796c8dcSSimon Schubert       /* The type of reloc used in a ctor, which will be as wide as the
68345796c8dcSSimon Schubert 	 address - so either a 64, 32, or 16 bitter.  */
6835c50c785cSJohn Marino       switch (bfd_arch_bits_per_address (abfd))
68365796c8dcSSimon Schubert 	{
68375796c8dcSSimon Schubert 	case 64:
68385796c8dcSSimon Schubert 	  BFD_FAIL ();
68395796c8dcSSimon Schubert 	case 32:
68405796c8dcSSimon Schubert 	  return &bfd_howto_32;
68415796c8dcSSimon Schubert 	case 16:
68425796c8dcSSimon Schubert 	  BFD_FAIL ();
68435796c8dcSSimon Schubert 	default:
68445796c8dcSSimon Schubert 	  BFD_FAIL ();
68455796c8dcSSimon Schubert 	}
68465796c8dcSSimon Schubert     default:
68475796c8dcSSimon Schubert       BFD_FAIL ();
68485796c8dcSSimon Schubert     }
68495796c8dcSSimon Schubert   return NULL;
68505796c8dcSSimon Schubert }
68515796c8dcSSimon Schubert 
68525796c8dcSSimon Schubert /*
68535796c8dcSSimon Schubert FUNCTION
68545796c8dcSSimon Schubert 	bfd_get_reloc_code_name
68555796c8dcSSimon Schubert 
68565796c8dcSSimon Schubert SYNOPSIS
68575796c8dcSSimon Schubert 	const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
68585796c8dcSSimon Schubert 
68595796c8dcSSimon Schubert DESCRIPTION
68605796c8dcSSimon Schubert 	Provides a printable name for the supplied relocation code.
68615796c8dcSSimon Schubert 	Useful mainly for printing error messages.
68625796c8dcSSimon Schubert */
68635796c8dcSSimon Schubert 
68645796c8dcSSimon Schubert const char *
bfd_get_reloc_code_name(bfd_reloc_code_real_type code)68655796c8dcSSimon Schubert bfd_get_reloc_code_name (bfd_reloc_code_real_type code)
68665796c8dcSSimon Schubert {
68675796c8dcSSimon Schubert   if (code > BFD_RELOC_UNUSED)
68685796c8dcSSimon Schubert     return 0;
68695796c8dcSSimon Schubert   return bfd_reloc_code_real_names[code];
68705796c8dcSSimon Schubert }
68715796c8dcSSimon Schubert 
68725796c8dcSSimon Schubert /*
68735796c8dcSSimon Schubert INTERNAL_FUNCTION
68745796c8dcSSimon Schubert 	bfd_generic_relax_section
68755796c8dcSSimon Schubert 
68765796c8dcSSimon Schubert SYNOPSIS
68775796c8dcSSimon Schubert 	bfd_boolean bfd_generic_relax_section
68785796c8dcSSimon Schubert 	  (bfd *abfd,
68795796c8dcSSimon Schubert 	   asection *section,
68805796c8dcSSimon Schubert 	   struct bfd_link_info *,
68815796c8dcSSimon Schubert 	   bfd_boolean *);
68825796c8dcSSimon Schubert 
68835796c8dcSSimon Schubert DESCRIPTION
68845796c8dcSSimon Schubert 	Provides default handling for relaxing for back ends which
68855796c8dcSSimon Schubert 	don't do relaxing.
68865796c8dcSSimon Schubert */
68875796c8dcSSimon Schubert 
68885796c8dcSSimon Schubert bfd_boolean
bfd_generic_relax_section(bfd * abfd ATTRIBUTE_UNUSED,asection * section ATTRIBUTE_UNUSED,struct bfd_link_info * link_info ATTRIBUTE_UNUSED,bfd_boolean * again)68895796c8dcSSimon Schubert bfd_generic_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
68905796c8dcSSimon Schubert 			   asection *section ATTRIBUTE_UNUSED,
68915796c8dcSSimon Schubert 			   struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
68925796c8dcSSimon Schubert 			   bfd_boolean *again)
68935796c8dcSSimon Schubert {
68945796c8dcSSimon Schubert   if (link_info->relocatable)
68955796c8dcSSimon Schubert     (*link_info->callbacks->einfo)
68965796c8dcSSimon Schubert       (_("%P%F: --relax and -r may not be used together\n"));
68975796c8dcSSimon Schubert 
68985796c8dcSSimon Schubert   *again = FALSE;
68995796c8dcSSimon Schubert   return TRUE;
69005796c8dcSSimon Schubert }
69015796c8dcSSimon Schubert 
69025796c8dcSSimon Schubert /*
69035796c8dcSSimon Schubert INTERNAL_FUNCTION
69045796c8dcSSimon Schubert 	bfd_generic_gc_sections
69055796c8dcSSimon Schubert 
69065796c8dcSSimon Schubert SYNOPSIS
69075796c8dcSSimon Schubert 	bfd_boolean bfd_generic_gc_sections
69085796c8dcSSimon Schubert 	  (bfd *, struct bfd_link_info *);
69095796c8dcSSimon Schubert 
69105796c8dcSSimon Schubert DESCRIPTION
69115796c8dcSSimon Schubert 	Provides default handling for relaxing for back ends which
69125796c8dcSSimon Schubert 	don't do section gc -- i.e., does nothing.
69135796c8dcSSimon Schubert */
69145796c8dcSSimon Schubert 
69155796c8dcSSimon Schubert bfd_boolean
bfd_generic_gc_sections(bfd * abfd ATTRIBUTE_UNUSED,struct bfd_link_info * info ATTRIBUTE_UNUSED)69165796c8dcSSimon Schubert bfd_generic_gc_sections (bfd *abfd ATTRIBUTE_UNUSED,
69175796c8dcSSimon Schubert 			 struct bfd_link_info *info ATTRIBUTE_UNUSED)
69185796c8dcSSimon Schubert {
69195796c8dcSSimon Schubert   return TRUE;
69205796c8dcSSimon Schubert }
69215796c8dcSSimon Schubert 
69225796c8dcSSimon Schubert /*
69235796c8dcSSimon Schubert INTERNAL_FUNCTION
6924a45ae5f8SJohn Marino 	bfd_generic_lookup_section_flags
6925a45ae5f8SJohn Marino 
6926a45ae5f8SJohn Marino SYNOPSIS
6927*ef5ccd6cSJohn Marino 	bfd_boolean bfd_generic_lookup_section_flags
6928*ef5ccd6cSJohn Marino 	  (struct bfd_link_info *, struct flag_info *, asection *);
6929a45ae5f8SJohn Marino 
6930a45ae5f8SJohn Marino DESCRIPTION
6931a45ae5f8SJohn Marino 	Provides default handling for section flags lookup
6932a45ae5f8SJohn Marino 	-- i.e., does nothing.
6933*ef5ccd6cSJohn Marino 	Returns FALSE if the section should be omitted, otherwise TRUE.
6934a45ae5f8SJohn Marino */
6935a45ae5f8SJohn Marino 
6936*ef5ccd6cSJohn Marino bfd_boolean
bfd_generic_lookup_section_flags(struct bfd_link_info * info ATTRIBUTE_UNUSED,struct flag_info * flaginfo,asection * section ATTRIBUTE_UNUSED)6937a45ae5f8SJohn Marino bfd_generic_lookup_section_flags (struct bfd_link_info *info ATTRIBUTE_UNUSED,
6938*ef5ccd6cSJohn Marino 				  struct flag_info *flaginfo,
6939*ef5ccd6cSJohn Marino 				  asection *section ATTRIBUTE_UNUSED)
6940a45ae5f8SJohn Marino {
6941*ef5ccd6cSJohn Marino   if (flaginfo != NULL)
6942a45ae5f8SJohn Marino     {
6943a45ae5f8SJohn Marino       (*_bfd_error_handler) (_("INPUT_SECTION_FLAGS are not supported.\n"));
6944*ef5ccd6cSJohn Marino       return FALSE;
6945a45ae5f8SJohn Marino     }
6946*ef5ccd6cSJohn Marino   return TRUE;
6947a45ae5f8SJohn Marino }
6948a45ae5f8SJohn Marino 
6949a45ae5f8SJohn Marino /*
6950a45ae5f8SJohn Marino INTERNAL_FUNCTION
69515796c8dcSSimon Schubert 	bfd_generic_merge_sections
69525796c8dcSSimon Schubert 
69535796c8dcSSimon Schubert SYNOPSIS
69545796c8dcSSimon Schubert 	bfd_boolean bfd_generic_merge_sections
69555796c8dcSSimon Schubert 	  (bfd *, struct bfd_link_info *);
69565796c8dcSSimon Schubert 
69575796c8dcSSimon Schubert DESCRIPTION
69585796c8dcSSimon Schubert 	Provides default handling for SEC_MERGE section merging for back ends
69595796c8dcSSimon Schubert 	which don't have SEC_MERGE support -- i.e., does nothing.
69605796c8dcSSimon Schubert */
69615796c8dcSSimon Schubert 
69625796c8dcSSimon Schubert bfd_boolean
bfd_generic_merge_sections(bfd * abfd ATTRIBUTE_UNUSED,struct bfd_link_info * link_info ATTRIBUTE_UNUSED)69635796c8dcSSimon Schubert bfd_generic_merge_sections (bfd *abfd ATTRIBUTE_UNUSED,
69645796c8dcSSimon Schubert 			    struct bfd_link_info *link_info ATTRIBUTE_UNUSED)
69655796c8dcSSimon Schubert {
69665796c8dcSSimon Schubert   return TRUE;
69675796c8dcSSimon Schubert }
69685796c8dcSSimon Schubert 
69695796c8dcSSimon Schubert /*
69705796c8dcSSimon Schubert INTERNAL_FUNCTION
69715796c8dcSSimon Schubert 	bfd_generic_get_relocated_section_contents
69725796c8dcSSimon Schubert 
69735796c8dcSSimon Schubert SYNOPSIS
69745796c8dcSSimon Schubert 	bfd_byte *bfd_generic_get_relocated_section_contents
69755796c8dcSSimon Schubert 	  (bfd *abfd,
69765796c8dcSSimon Schubert 	   struct bfd_link_info *link_info,
69775796c8dcSSimon Schubert 	   struct bfd_link_order *link_order,
69785796c8dcSSimon Schubert 	   bfd_byte *data,
69795796c8dcSSimon Schubert 	   bfd_boolean relocatable,
69805796c8dcSSimon Schubert 	   asymbol **symbols);
69815796c8dcSSimon Schubert 
69825796c8dcSSimon Schubert DESCRIPTION
69835796c8dcSSimon Schubert 	Provides default handling of relocation effort for back ends
69845796c8dcSSimon Schubert 	which can't be bothered to do it efficiently.
69855796c8dcSSimon Schubert 
69865796c8dcSSimon Schubert */
69875796c8dcSSimon Schubert 
69885796c8dcSSimon Schubert bfd_byte *
bfd_generic_get_relocated_section_contents(bfd * abfd,struct bfd_link_info * link_info,struct bfd_link_order * link_order,bfd_byte * data,bfd_boolean relocatable,asymbol ** symbols)69895796c8dcSSimon Schubert bfd_generic_get_relocated_section_contents (bfd *abfd,
69905796c8dcSSimon Schubert 					    struct bfd_link_info *link_info,
69915796c8dcSSimon Schubert 					    struct bfd_link_order *link_order,
69925796c8dcSSimon Schubert 					    bfd_byte *data,
69935796c8dcSSimon Schubert 					    bfd_boolean relocatable,
69945796c8dcSSimon Schubert 					    asymbol **symbols)
69955796c8dcSSimon Schubert {
69965796c8dcSSimon Schubert   bfd *input_bfd = link_order->u.indirect.section->owner;
69975796c8dcSSimon Schubert   asection *input_section = link_order->u.indirect.section;
69985796c8dcSSimon Schubert   long reloc_size;
69995796c8dcSSimon Schubert   arelent **reloc_vector;
70005796c8dcSSimon Schubert   long reloc_count;
70015796c8dcSSimon Schubert 
70025796c8dcSSimon Schubert   reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
70035796c8dcSSimon Schubert   if (reloc_size < 0)
70045796c8dcSSimon Schubert     return NULL;
70055796c8dcSSimon Schubert 
70065796c8dcSSimon Schubert   /* Read in the section.  */
7007c50c785cSJohn Marino   if (!bfd_get_full_section_contents (input_bfd, input_section, &data))
70085796c8dcSSimon Schubert     return NULL;
70095796c8dcSSimon Schubert 
70105796c8dcSSimon Schubert   if (reloc_size == 0)
70115796c8dcSSimon Schubert     return data;
70125796c8dcSSimon Schubert 
70135796c8dcSSimon Schubert   reloc_vector = (arelent **) bfd_malloc (reloc_size);
70145796c8dcSSimon Schubert   if (reloc_vector == NULL)
70155796c8dcSSimon Schubert     return NULL;
70165796c8dcSSimon Schubert 
70175796c8dcSSimon Schubert   reloc_count = bfd_canonicalize_reloc (input_bfd,
70185796c8dcSSimon Schubert 					input_section,
70195796c8dcSSimon Schubert 					reloc_vector,
70205796c8dcSSimon Schubert 					symbols);
70215796c8dcSSimon Schubert   if (reloc_count < 0)
70225796c8dcSSimon Schubert     goto error_return;
70235796c8dcSSimon Schubert 
70245796c8dcSSimon Schubert   if (reloc_count > 0)
70255796c8dcSSimon Schubert     {
70265796c8dcSSimon Schubert       arelent **parent;
70275796c8dcSSimon Schubert       for (parent = reloc_vector; *parent != NULL; parent++)
70285796c8dcSSimon Schubert 	{
70295796c8dcSSimon Schubert 	  char *error_message = NULL;
70305796c8dcSSimon Schubert 	  asymbol *symbol;
70315796c8dcSSimon Schubert 	  bfd_reloc_status_type r;
70325796c8dcSSimon Schubert 
70335796c8dcSSimon Schubert 	  symbol = *(*parent)->sym_ptr_ptr;
7034*ef5ccd6cSJohn Marino 	  if (symbol->section && discarded_section (symbol->section))
70355796c8dcSSimon Schubert 	    {
70365796c8dcSSimon Schubert 	      bfd_byte *p;
70375796c8dcSSimon Schubert 	      static reloc_howto_type none_howto
70385796c8dcSSimon Schubert 		= HOWTO (0, 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL,
70395796c8dcSSimon Schubert 			 "unused", FALSE, 0, 0, FALSE);
70405796c8dcSSimon Schubert 
70415796c8dcSSimon Schubert 	      p = data + (*parent)->address * bfd_octets_per_byte (input_bfd);
7042c50c785cSJohn Marino 	      _bfd_clear_contents ((*parent)->howto, input_bfd, input_section,
7043c50c785cSJohn Marino 				   p);
7044*ef5ccd6cSJohn Marino 	      (*parent)->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
70455796c8dcSSimon Schubert 	      (*parent)->addend = 0;
70465796c8dcSSimon Schubert 	      (*parent)->howto = &none_howto;
70475796c8dcSSimon Schubert 	      r = bfd_reloc_ok;
70485796c8dcSSimon Schubert 	    }
70495796c8dcSSimon Schubert 	  else
70505796c8dcSSimon Schubert 	    r = bfd_perform_relocation (input_bfd,
70515796c8dcSSimon Schubert 					*parent,
70525796c8dcSSimon Schubert 					data,
70535796c8dcSSimon Schubert 					input_section,
70545796c8dcSSimon Schubert 					relocatable ? abfd : NULL,
70555796c8dcSSimon Schubert 					&error_message);
70565796c8dcSSimon Schubert 
70575796c8dcSSimon Schubert 	  if (relocatable)
70585796c8dcSSimon Schubert 	    {
70595796c8dcSSimon Schubert 	      asection *os = input_section->output_section;
70605796c8dcSSimon Schubert 
70615796c8dcSSimon Schubert 	      /* A partial link, so keep the relocs.  */
70625796c8dcSSimon Schubert 	      os->orelocation[os->reloc_count] = *parent;
70635796c8dcSSimon Schubert 	      os->reloc_count++;
70645796c8dcSSimon Schubert 	    }
70655796c8dcSSimon Schubert 
70665796c8dcSSimon Schubert 	  if (r != bfd_reloc_ok)
70675796c8dcSSimon Schubert 	    {
70685796c8dcSSimon Schubert 	      switch (r)
70695796c8dcSSimon Schubert 		{
70705796c8dcSSimon Schubert 		case bfd_reloc_undefined:
70715796c8dcSSimon Schubert 		  if (!((*link_info->callbacks->undefined_symbol)
70725796c8dcSSimon Schubert 			(link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
70735796c8dcSSimon Schubert 			 input_bfd, input_section, (*parent)->address,
70745796c8dcSSimon Schubert 			 TRUE)))
70755796c8dcSSimon Schubert 		    goto error_return;
70765796c8dcSSimon Schubert 		  break;
70775796c8dcSSimon Schubert 		case bfd_reloc_dangerous:
70785796c8dcSSimon Schubert 		  BFD_ASSERT (error_message != NULL);
70795796c8dcSSimon Schubert 		  if (!((*link_info->callbacks->reloc_dangerous)
70805796c8dcSSimon Schubert 			(link_info, error_message, input_bfd, input_section,
70815796c8dcSSimon Schubert 			 (*parent)->address)))
70825796c8dcSSimon Schubert 		    goto error_return;
70835796c8dcSSimon Schubert 		  break;
70845796c8dcSSimon Schubert 		case bfd_reloc_overflow:
70855796c8dcSSimon Schubert 		  if (!((*link_info->callbacks->reloc_overflow)
70865796c8dcSSimon Schubert 			(link_info, NULL,
70875796c8dcSSimon Schubert 			 bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
70885796c8dcSSimon Schubert 			 (*parent)->howto->name, (*parent)->addend,
70895796c8dcSSimon Schubert 			 input_bfd, input_section, (*parent)->address)))
70905796c8dcSSimon Schubert 		    goto error_return;
70915796c8dcSSimon Schubert 		  break;
70925796c8dcSSimon Schubert 		case bfd_reloc_outofrange:
7093*ef5ccd6cSJohn Marino 		  /* PR ld/13730:
7094*ef5ccd6cSJohn Marino 		     This error can result when processing some partially
7095*ef5ccd6cSJohn Marino 		     complete binaries.  Do not abort, but issue an error
7096*ef5ccd6cSJohn Marino 		     message instead.  */
7097*ef5ccd6cSJohn Marino 		  link_info->callbacks->einfo
7098*ef5ccd6cSJohn Marino 		    (_("%X%P: %B(%A): relocation \"%R\" goes out of range\n"),
7099*ef5ccd6cSJohn Marino 		     abfd, input_section, * parent);
7100*ef5ccd6cSJohn Marino 		  goto error_return;
7101*ef5ccd6cSJohn Marino 
71025796c8dcSSimon Schubert 		default:
71035796c8dcSSimon Schubert 		  abort ();
71045796c8dcSSimon Schubert 		  break;
71055796c8dcSSimon Schubert 		}
71065796c8dcSSimon Schubert 
71075796c8dcSSimon Schubert 	    }
71085796c8dcSSimon Schubert 	}
71095796c8dcSSimon Schubert     }
71105796c8dcSSimon Schubert 
71115796c8dcSSimon Schubert   free (reloc_vector);
71125796c8dcSSimon Schubert   return data;
71135796c8dcSSimon Schubert 
71145796c8dcSSimon Schubert error_return:
71155796c8dcSSimon Schubert   free (reloc_vector);
71165796c8dcSSimon Schubert   return NULL;
71175796c8dcSSimon Schubert }
7118