xref: /minix3/external/gpl3/binutils/lib/libbfd/arch/riscv32/bfd.h (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc /* This file is automatically generated.  DO NOT EDIT! */
2*0a6a1f1dSLionel Sambuc /* Generated from: NetBSD: mknative-binutils,v 1.9 2013/10/01 15:41:17 skrll Exp  */
3*0a6a1f1dSLionel Sambuc /* Generated from: NetBSD: mknative.common,v 1.11 2014/02/17 21:39:43 christos Exp  */
4*0a6a1f1dSLionel Sambuc 
5*0a6a1f1dSLionel Sambuc /* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically
6*0a6a1f1dSLionel Sambuc    generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
7*0a6a1f1dSLionel Sambuc    "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
8*0a6a1f1dSLionel Sambuc    "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
9*0a6a1f1dSLionel Sambuc    "linker.c", "simple.c" and "compress.c".
10*0a6a1f1dSLionel Sambuc    Run "make headers" in your build bfd/ to regenerate.  */
11*0a6a1f1dSLionel Sambuc 
12*0a6a1f1dSLionel Sambuc /* Main header file for the bfd library -- portable access to object files.
13*0a6a1f1dSLionel Sambuc 
14*0a6a1f1dSLionel Sambuc    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
15*0a6a1f1dSLionel Sambuc    2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
16*0a6a1f1dSLionel Sambuc    2012 Free Software Foundation, Inc.
17*0a6a1f1dSLionel Sambuc 
18*0a6a1f1dSLionel Sambuc    Contributed by Cygnus Support.
19*0a6a1f1dSLionel Sambuc 
20*0a6a1f1dSLionel Sambuc    This file is part of BFD, the Binary File Descriptor library.
21*0a6a1f1dSLionel Sambuc 
22*0a6a1f1dSLionel Sambuc    This program is free software; you can redistribute it and/or modify
23*0a6a1f1dSLionel Sambuc    it under the terms of the GNU General Public License as published by
24*0a6a1f1dSLionel Sambuc    the Free Software Foundation; either version 3 of the License, or
25*0a6a1f1dSLionel Sambuc    (at your option) any later version.
26*0a6a1f1dSLionel Sambuc 
27*0a6a1f1dSLionel Sambuc    This program is distributed in the hope that it will be useful,
28*0a6a1f1dSLionel Sambuc    but WITHOUT ANY WARRANTY; without even the implied warranty of
29*0a6a1f1dSLionel Sambuc    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
30*0a6a1f1dSLionel Sambuc    GNU General Public License for more details.
31*0a6a1f1dSLionel Sambuc 
32*0a6a1f1dSLionel Sambuc    You should have received a copy of the GNU General Public License
33*0a6a1f1dSLionel Sambuc    along with this program; if not, write to the Free Software
34*0a6a1f1dSLionel Sambuc    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
35*0a6a1f1dSLionel Sambuc 
36*0a6a1f1dSLionel Sambuc #ifndef __BFD_H_SEEN__
37*0a6a1f1dSLionel Sambuc #define __BFD_H_SEEN__
38*0a6a1f1dSLionel Sambuc 
39*0a6a1f1dSLionel Sambuc /* PR 14072: Ensure that config.h is included first.  */
40*0a6a1f1dSLionel Sambuc #if !defined PACKAGE && !defined PACKAGE_VERSION
41*0a6a1f1dSLionel Sambuc #error config.h must be included before this header
42*0a6a1f1dSLionel Sambuc #endif
43*0a6a1f1dSLionel Sambuc 
44*0a6a1f1dSLionel Sambuc #ifdef __cplusplus
45*0a6a1f1dSLionel Sambuc extern "C" {
46*0a6a1f1dSLionel Sambuc #endif
47*0a6a1f1dSLionel Sambuc 
48*0a6a1f1dSLionel Sambuc #include "ansidecl.h"
49*0a6a1f1dSLionel Sambuc #include "symcat.h"
50*0a6a1f1dSLionel Sambuc #include <sys/stat.h>
51*0a6a1f1dSLionel Sambuc 
52*0a6a1f1dSLionel Sambuc #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
53*0a6a1f1dSLionel Sambuc #ifndef SABER
54*0a6a1f1dSLionel Sambuc /* This hack is to avoid a problem with some strict ANSI C preprocessors.
55*0a6a1f1dSLionel Sambuc    The problem is, "32_" is not a valid preprocessing token, and we don't
56*0a6a1f1dSLionel Sambuc    want extra underscores (e.g., "nlm_32_").  The XCONCAT2 macro will
57*0a6a1f1dSLionel Sambuc    cause the inner CONCAT2 macros to be evaluated first, producing
58*0a6a1f1dSLionel Sambuc    still-valid pp-tokens.  Then the final concatenation can be done.  */
59*0a6a1f1dSLionel Sambuc #undef CONCAT4
60*0a6a1f1dSLionel Sambuc #define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
61*0a6a1f1dSLionel Sambuc #endif
62*0a6a1f1dSLionel Sambuc #endif
63*0a6a1f1dSLionel Sambuc 
64*0a6a1f1dSLionel Sambuc /* This is a utility macro to handle the situation where the code
65*0a6a1f1dSLionel Sambuc    wants to place a constant string into the code, followed by a
66*0a6a1f1dSLionel Sambuc    comma and then the length of the string.  Doing this by hand
67*0a6a1f1dSLionel Sambuc    is error prone, so using this macro is safer.  */
68*0a6a1f1dSLionel Sambuc #define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1)
69*0a6a1f1dSLionel Sambuc /* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
70*0a6a1f1dSLionel Sambuc    to create the arguments to another macro, since the preprocessor
71*0a6a1f1dSLionel Sambuc    will mis-count the number of arguments to the outer macro (by not
72*0a6a1f1dSLionel Sambuc    evaluating STRING_COMMA_LEN and so missing the comma).  This is a
73*0a6a1f1dSLionel Sambuc    problem for example when trying to use STRING_COMMA_LEN to build
74*0a6a1f1dSLionel Sambuc    the arguments to the strncmp() macro.  Hence this alternative
75*0a6a1f1dSLionel Sambuc    definition of strncmp is provided here.
76*0a6a1f1dSLionel Sambuc 
77*0a6a1f1dSLionel Sambuc    Note - these macros do NOT work if STR2 is not a constant string.  */
78*0a6a1f1dSLionel Sambuc #define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
79*0a6a1f1dSLionel Sambuc   /* strcpy() can have a similar problem, but since we know we are
80*0a6a1f1dSLionel Sambuc      copying a constant string, we can use memcpy which will be faster
81*0a6a1f1dSLionel Sambuc      since there is no need to check for a NUL byte inside STR.  We
82*0a6a1f1dSLionel Sambuc      can also save time if we do not need to copy the terminating NUL.  */
83*0a6a1f1dSLionel Sambuc #define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
84*0a6a1f1dSLionel Sambuc #define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
85*0a6a1f1dSLionel Sambuc 
86*0a6a1f1dSLionel Sambuc 
87*0a6a1f1dSLionel Sambuc #define BFD_SUPPORTS_PLUGINS 0
88*0a6a1f1dSLionel Sambuc 
89*0a6a1f1dSLionel Sambuc /* The word size used by BFD on the host.  This may be 64 with a 32
90*0a6a1f1dSLionel Sambuc    bit target if the host is 64 bit, or if other 64 bit targets have
91*0a6a1f1dSLionel Sambuc    been selected with --enable-targets, or if --enable-64-bit-bfd.  */
92*0a6a1f1dSLionel Sambuc #define BFD_ARCH_SIZE 64
93*0a6a1f1dSLionel Sambuc 
94*0a6a1f1dSLionel Sambuc /* The word size of the default bfd target.  */
95*0a6a1f1dSLionel Sambuc #define BFD_DEFAULT_TARGET_SIZE 64
96*0a6a1f1dSLionel Sambuc 
97*0a6a1f1dSLionel Sambuc #define BFD_HOST_64BIT_LONG 0
98*0a6a1f1dSLionel Sambuc #define BFD_HOST_64BIT_LONG_LONG 1
99*0a6a1f1dSLionel Sambuc #if 1
100*0a6a1f1dSLionel Sambuc #define BFD_HOST_64_BIT long long
101*0a6a1f1dSLionel Sambuc #define BFD_HOST_U_64_BIT unsigned long long
102*0a6a1f1dSLionel Sambuc typedef BFD_HOST_64_BIT bfd_int64_t;
103*0a6a1f1dSLionel Sambuc typedef BFD_HOST_U_64_BIT bfd_uint64_t;
104*0a6a1f1dSLionel Sambuc #endif
105*0a6a1f1dSLionel Sambuc 
106*0a6a1f1dSLionel Sambuc #if BFD_ARCH_SIZE >= 64
107*0a6a1f1dSLionel Sambuc #define BFD64
108*0a6a1f1dSLionel Sambuc #endif
109*0a6a1f1dSLionel Sambuc 
110*0a6a1f1dSLionel Sambuc #ifndef INLINE
111*0a6a1f1dSLionel Sambuc #if __GNUC__ >= 2
112*0a6a1f1dSLionel Sambuc #define INLINE __inline__
113*0a6a1f1dSLionel Sambuc #else
114*0a6a1f1dSLionel Sambuc #define INLINE
115*0a6a1f1dSLionel Sambuc #endif
116*0a6a1f1dSLionel Sambuc #endif
117*0a6a1f1dSLionel Sambuc 
118*0a6a1f1dSLionel Sambuc /* Declaring a type wide enough to hold a host long and a host pointer.  */
119*0a6a1f1dSLionel Sambuc #define BFD_HOSTPTR_T	unsigned long
120*0a6a1f1dSLionel Sambuc typedef BFD_HOSTPTR_T bfd_hostptr_t;
121*0a6a1f1dSLionel Sambuc 
122*0a6a1f1dSLionel Sambuc /* Forward declaration.  */
123*0a6a1f1dSLionel Sambuc typedef struct bfd bfd;
124*0a6a1f1dSLionel Sambuc 
125*0a6a1f1dSLionel Sambuc /* Boolean type used in bfd.  Too many systems define their own
126*0a6a1f1dSLionel Sambuc    versions of "boolean" for us to safely typedef a "boolean" of
127*0a6a1f1dSLionel Sambuc    our own.  Using an enum for "bfd_boolean" has its own set of
128*0a6a1f1dSLionel Sambuc    problems, with strange looking casts required to avoid warnings
129*0a6a1f1dSLionel Sambuc    on some older compilers.  Thus we just use an int.
130*0a6a1f1dSLionel Sambuc 
131*0a6a1f1dSLionel Sambuc    General rule: Functions which are bfd_boolean return TRUE on
132*0a6a1f1dSLionel Sambuc    success and FALSE on failure (unless they're a predicate).  */
133*0a6a1f1dSLionel Sambuc 
134*0a6a1f1dSLionel Sambuc typedef int bfd_boolean;
135*0a6a1f1dSLionel Sambuc #undef FALSE
136*0a6a1f1dSLionel Sambuc #undef TRUE
137*0a6a1f1dSLionel Sambuc #define FALSE 0
138*0a6a1f1dSLionel Sambuc #define TRUE 1
139*0a6a1f1dSLionel Sambuc 
140*0a6a1f1dSLionel Sambuc #ifdef BFD64
141*0a6a1f1dSLionel Sambuc 
142*0a6a1f1dSLionel Sambuc #ifndef BFD_HOST_64_BIT
143*0a6a1f1dSLionel Sambuc  #error No 64 bit integer type available
144*0a6a1f1dSLionel Sambuc #endif /* ! defined (BFD_HOST_64_BIT) */
145*0a6a1f1dSLionel Sambuc 
146*0a6a1f1dSLionel Sambuc typedef BFD_HOST_U_64_BIT bfd_vma;
147*0a6a1f1dSLionel Sambuc typedef BFD_HOST_64_BIT bfd_signed_vma;
148*0a6a1f1dSLionel Sambuc typedef BFD_HOST_U_64_BIT bfd_size_type;
149*0a6a1f1dSLionel Sambuc typedef BFD_HOST_U_64_BIT symvalue;
150*0a6a1f1dSLionel Sambuc 
151*0a6a1f1dSLionel Sambuc #if BFD_HOST_64BIT_LONG
152*0a6a1f1dSLionel Sambuc #define BFD_VMA_FMT "l"
153*0a6a1f1dSLionel Sambuc #elif defined (__MSVCRT__)
154*0a6a1f1dSLionel Sambuc #define BFD_VMA_FMT "I64"
155*0a6a1f1dSLionel Sambuc #else
156*0a6a1f1dSLionel Sambuc #define BFD_VMA_FMT "ll"
157*0a6a1f1dSLionel Sambuc #endif
158*0a6a1f1dSLionel Sambuc 
159*0a6a1f1dSLionel Sambuc #ifndef fprintf_vma
160*0a6a1f1dSLionel Sambuc #define sprintf_vma(s,x) sprintf (s, "%016" BFD_VMA_FMT "x", x)
161*0a6a1f1dSLionel Sambuc #define fprintf_vma(f,x) fprintf (f, "%016" BFD_VMA_FMT "x", x)
162*0a6a1f1dSLionel Sambuc #endif
163*0a6a1f1dSLionel Sambuc 
164*0a6a1f1dSLionel Sambuc #else /* not BFD64  */
165*0a6a1f1dSLionel Sambuc 
166*0a6a1f1dSLionel Sambuc /* Represent a target address.  Also used as a generic unsigned type
167*0a6a1f1dSLionel Sambuc    which is guaranteed to be big enough to hold any arithmetic types
168*0a6a1f1dSLionel Sambuc    we need to deal with.  */
169*0a6a1f1dSLionel Sambuc typedef unsigned long bfd_vma;
170*0a6a1f1dSLionel Sambuc 
171*0a6a1f1dSLionel Sambuc /* A generic signed type which is guaranteed to be big enough to hold any
172*0a6a1f1dSLionel Sambuc    arithmetic types we need to deal with.  Can be assumed to be compatible
173*0a6a1f1dSLionel Sambuc    with bfd_vma in the same way that signed and unsigned ints are compatible
174*0a6a1f1dSLionel Sambuc    (as parameters, in assignment, etc).  */
175*0a6a1f1dSLionel Sambuc typedef long bfd_signed_vma;
176*0a6a1f1dSLionel Sambuc 
177*0a6a1f1dSLionel Sambuc typedef unsigned long symvalue;
178*0a6a1f1dSLionel Sambuc typedef unsigned long bfd_size_type;
179*0a6a1f1dSLionel Sambuc 
180*0a6a1f1dSLionel Sambuc /* Print a bfd_vma x on stream s.  */
181*0a6a1f1dSLionel Sambuc #define BFD_VMA_FMT "l"
182*0a6a1f1dSLionel Sambuc #define fprintf_vma(s,x) fprintf (s, "%08" BFD_VMA_FMT "x", x)
183*0a6a1f1dSLionel Sambuc #define sprintf_vma(s,x) sprintf (s, "%08" BFD_VMA_FMT "x", x)
184*0a6a1f1dSLionel Sambuc 
185*0a6a1f1dSLionel Sambuc #endif /* not BFD64  */
186*0a6a1f1dSLionel Sambuc 
187*0a6a1f1dSLionel Sambuc #define HALF_BFD_SIZE_TYPE \
188*0a6a1f1dSLionel Sambuc   (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
189*0a6a1f1dSLionel Sambuc 
190*0a6a1f1dSLionel Sambuc #ifndef BFD_HOST_64_BIT
191*0a6a1f1dSLionel Sambuc /* Fall back on a 32 bit type.  The idea is to make these types always
192*0a6a1f1dSLionel Sambuc    available for function return types, but in the case that
193*0a6a1f1dSLionel Sambuc    BFD_HOST_64_BIT is undefined such a function should abort or
194*0a6a1f1dSLionel Sambuc    otherwise signal an error.  */
195*0a6a1f1dSLionel Sambuc typedef bfd_signed_vma bfd_int64_t;
196*0a6a1f1dSLionel Sambuc typedef bfd_vma bfd_uint64_t;
197*0a6a1f1dSLionel Sambuc #endif
198*0a6a1f1dSLionel Sambuc 
199*0a6a1f1dSLionel Sambuc /* An offset into a file.  BFD always uses the largest possible offset
200*0a6a1f1dSLionel Sambuc    based on the build time availability of fseek, fseeko, or fseeko64.  */
201*0a6a1f1dSLionel Sambuc typedef BFD_HOST_64_BIT file_ptr;
202*0a6a1f1dSLionel Sambuc typedef unsigned BFD_HOST_64_BIT ufile_ptr;
203*0a6a1f1dSLionel Sambuc 
204*0a6a1f1dSLionel Sambuc extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
205*0a6a1f1dSLionel Sambuc extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
206*0a6a1f1dSLionel Sambuc 
207*0a6a1f1dSLionel Sambuc #define printf_vma(x) fprintf_vma(stdout,x)
208*0a6a1f1dSLionel Sambuc #define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
209*0a6a1f1dSLionel Sambuc 
210*0a6a1f1dSLionel Sambuc typedef unsigned int flagword;	/* 32 bits of flags */
211*0a6a1f1dSLionel Sambuc typedef unsigned char bfd_byte;
212*0a6a1f1dSLionel Sambuc 
213*0a6a1f1dSLionel Sambuc /* File formats.  */
214*0a6a1f1dSLionel Sambuc 
215*0a6a1f1dSLionel Sambuc typedef enum bfd_format
216*0a6a1f1dSLionel Sambuc {
217*0a6a1f1dSLionel Sambuc   bfd_unknown = 0,	/* File format is unknown.  */
218*0a6a1f1dSLionel Sambuc   bfd_object,		/* Linker/assembler/compiler output.  */
219*0a6a1f1dSLionel Sambuc   bfd_archive,		/* Object archive file.  */
220*0a6a1f1dSLionel Sambuc   bfd_core,		/* Core dump.  */
221*0a6a1f1dSLionel Sambuc   bfd_type_end		/* Marks the end; don't use it!  */
222*0a6a1f1dSLionel Sambuc }
223*0a6a1f1dSLionel Sambuc bfd_format;
224*0a6a1f1dSLionel Sambuc 
225*0a6a1f1dSLionel Sambuc /* Symbols and relocation.  */
226*0a6a1f1dSLionel Sambuc 
227*0a6a1f1dSLionel Sambuc /* A count of carsyms (canonical archive symbols).  */
228*0a6a1f1dSLionel Sambuc typedef unsigned long symindex;
229*0a6a1f1dSLionel Sambuc 
230*0a6a1f1dSLionel Sambuc /* How to perform a relocation.  */
231*0a6a1f1dSLionel Sambuc typedef const struct reloc_howto_struct reloc_howto_type;
232*0a6a1f1dSLionel Sambuc 
233*0a6a1f1dSLionel Sambuc #define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
234*0a6a1f1dSLionel Sambuc 
235*0a6a1f1dSLionel Sambuc /* General purpose part of a symbol X;
236*0a6a1f1dSLionel Sambuc    target specific parts are in libcoff.h, libaout.h, etc.  */
237*0a6a1f1dSLionel Sambuc 
238*0a6a1f1dSLionel Sambuc #define bfd_get_section(x) ((x)->section)
239*0a6a1f1dSLionel Sambuc #define bfd_get_output_section(x) ((x)->section->output_section)
240*0a6a1f1dSLionel Sambuc #define bfd_set_section(x,y) ((x)->section) = (y)
241*0a6a1f1dSLionel Sambuc #define bfd_asymbol_base(x) ((x)->section->vma)
242*0a6a1f1dSLionel Sambuc #define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
243*0a6a1f1dSLionel Sambuc #define bfd_asymbol_name(x) ((x)->name)
244*0a6a1f1dSLionel Sambuc /*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
245*0a6a1f1dSLionel Sambuc #define bfd_asymbol_bfd(x) ((x)->the_bfd)
246*0a6a1f1dSLionel Sambuc #define bfd_asymbol_flavour(x)			\
247*0a6a1f1dSLionel Sambuc   (((x)->flags & BSF_SYNTHETIC) != 0		\
248*0a6a1f1dSLionel Sambuc    ? bfd_target_unknown_flavour			\
249*0a6a1f1dSLionel Sambuc    : bfd_asymbol_bfd (x)->xvec->flavour)
250*0a6a1f1dSLionel Sambuc 
251*0a6a1f1dSLionel Sambuc /* A canonical archive symbol.  */
252*0a6a1f1dSLionel Sambuc /* This is a type pun with struct ranlib on purpose!  */
253*0a6a1f1dSLionel Sambuc typedef struct carsym
254*0a6a1f1dSLionel Sambuc {
255*0a6a1f1dSLionel Sambuc   char *name;
256*0a6a1f1dSLionel Sambuc   file_ptr file_offset;	/* Look here to find the file.  */
257*0a6a1f1dSLionel Sambuc }
258*0a6a1f1dSLionel Sambuc carsym;			/* To make these you call a carsymogen.  */
259*0a6a1f1dSLionel Sambuc 
260*0a6a1f1dSLionel Sambuc /* Used in generating armaps (archive tables of contents).
261*0a6a1f1dSLionel Sambuc    Perhaps just a forward definition would do?  */
262*0a6a1f1dSLionel Sambuc struct orl 			/* Output ranlib.  */
263*0a6a1f1dSLionel Sambuc {
264*0a6a1f1dSLionel Sambuc   char **name;		/* Symbol name.  */
265*0a6a1f1dSLionel Sambuc   union
266*0a6a1f1dSLionel Sambuc   {
267*0a6a1f1dSLionel Sambuc     file_ptr pos;
268*0a6a1f1dSLionel Sambuc     bfd *abfd;
269*0a6a1f1dSLionel Sambuc   } u;			/* bfd* or file position.  */
270*0a6a1f1dSLionel Sambuc   int namidx;		/* Index into string table.  */
271*0a6a1f1dSLionel Sambuc };
272*0a6a1f1dSLionel Sambuc 
273*0a6a1f1dSLionel Sambuc /* Linenumber stuff.  */
274*0a6a1f1dSLionel Sambuc typedef struct lineno_cache_entry
275*0a6a1f1dSLionel Sambuc {
276*0a6a1f1dSLionel Sambuc   unsigned int line_number;	/* Linenumber from start of function.  */
277*0a6a1f1dSLionel Sambuc   union
278*0a6a1f1dSLionel Sambuc   {
279*0a6a1f1dSLionel Sambuc     struct bfd_symbol *sym;	/* Function name.  */
280*0a6a1f1dSLionel Sambuc     bfd_vma offset;	    		/* Offset into section.  */
281*0a6a1f1dSLionel Sambuc   } u;
282*0a6a1f1dSLionel Sambuc }
283*0a6a1f1dSLionel Sambuc alent;
284*0a6a1f1dSLionel Sambuc 
285*0a6a1f1dSLionel Sambuc /* Object and core file sections.  */
286*0a6a1f1dSLionel Sambuc 
287*0a6a1f1dSLionel Sambuc #define	align_power(addr, align)	\
288*0a6a1f1dSLionel Sambuc   (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
289*0a6a1f1dSLionel Sambuc 
290*0a6a1f1dSLionel Sambuc typedef struct bfd_section *sec_ptr;
291*0a6a1f1dSLionel Sambuc 
292*0a6a1f1dSLionel Sambuc #define bfd_get_section_name(bfd, ptr) ((void) bfd, (ptr)->name)
293*0a6a1f1dSLionel Sambuc #define bfd_get_section_vma(bfd, ptr) ((void) bfd, (ptr)->vma)
294*0a6a1f1dSLionel Sambuc #define bfd_get_section_lma(bfd, ptr) ((void) bfd, (ptr)->lma)
295*0a6a1f1dSLionel Sambuc #define bfd_get_section_alignment(bfd, ptr) ((void) bfd, \
296*0a6a1f1dSLionel Sambuc 					     (ptr)->alignment_power)
297*0a6a1f1dSLionel Sambuc #define bfd_section_name(bfd, ptr) ((ptr)->name)
298*0a6a1f1dSLionel Sambuc #define bfd_section_size(bfd, ptr) ((ptr)->size)
299*0a6a1f1dSLionel Sambuc #define bfd_get_section_size(ptr) ((ptr)->size)
300*0a6a1f1dSLionel Sambuc #define bfd_section_vma(bfd, ptr) ((ptr)->vma)
301*0a6a1f1dSLionel Sambuc #define bfd_section_lma(bfd, ptr) ((ptr)->lma)
302*0a6a1f1dSLionel Sambuc #define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
303*0a6a1f1dSLionel Sambuc #define bfd_get_section_flags(bfd, ptr) ((void) bfd, (ptr)->flags)
304*0a6a1f1dSLionel Sambuc #define bfd_get_section_userdata(bfd, ptr) ((void) bfd, (ptr)->userdata)
305*0a6a1f1dSLionel Sambuc 
306*0a6a1f1dSLionel Sambuc #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
307*0a6a1f1dSLionel Sambuc 
308*0a6a1f1dSLionel Sambuc #define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
309*0a6a1f1dSLionel Sambuc #define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
310*0a6a1f1dSLionel Sambuc #define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
311*0a6a1f1dSLionel Sambuc /* Find the address one past the end of SEC.  */
312*0a6a1f1dSLionel Sambuc #define bfd_get_section_limit(bfd, sec) \
313*0a6a1f1dSLionel Sambuc   (((bfd)->direction != write_direction && (sec)->rawsize != 0	\
314*0a6a1f1dSLionel Sambuc     ? (sec)->rawsize : (sec)->size) / bfd_octets_per_byte (bfd))
315*0a6a1f1dSLionel Sambuc 
316*0a6a1f1dSLionel Sambuc /* Return TRUE if input section SEC has been discarded.  */
317*0a6a1f1dSLionel Sambuc #define discarded_section(sec)				\
318*0a6a1f1dSLionel Sambuc   (!bfd_is_abs_section (sec)					\
319*0a6a1f1dSLionel Sambuc    && bfd_is_abs_section ((sec)->output_section)		\
320*0a6a1f1dSLionel Sambuc    && (sec)->sec_info_type != SEC_INFO_TYPE_MERGE		\
321*0a6a1f1dSLionel Sambuc    && (sec)->sec_info_type != SEC_INFO_TYPE_JUST_SYMS)
322*0a6a1f1dSLionel Sambuc 
323*0a6a1f1dSLionel Sambuc typedef enum bfd_print_symbol
324*0a6a1f1dSLionel Sambuc {
325*0a6a1f1dSLionel Sambuc   bfd_print_symbol_name,
326*0a6a1f1dSLionel Sambuc   bfd_print_symbol_more,
327*0a6a1f1dSLionel Sambuc   bfd_print_symbol_all
328*0a6a1f1dSLionel Sambuc } bfd_print_symbol_type;
329*0a6a1f1dSLionel Sambuc 
330*0a6a1f1dSLionel Sambuc /* Information about a symbol that nm needs.  */
331*0a6a1f1dSLionel Sambuc 
332*0a6a1f1dSLionel Sambuc typedef struct _symbol_info
333*0a6a1f1dSLionel Sambuc {
334*0a6a1f1dSLionel Sambuc   symvalue value;
335*0a6a1f1dSLionel Sambuc   char type;
336*0a6a1f1dSLionel Sambuc   const char *name;            /* Symbol name.  */
337*0a6a1f1dSLionel Sambuc   unsigned char stab_type;     /* Stab type.  */
338*0a6a1f1dSLionel Sambuc   char stab_other;             /* Stab other.  */
339*0a6a1f1dSLionel Sambuc   short stab_desc;             /* Stab desc.  */
340*0a6a1f1dSLionel Sambuc   const char *stab_name;       /* String for stab type.  */
341*0a6a1f1dSLionel Sambuc } symbol_info;
342*0a6a1f1dSLionel Sambuc 
343*0a6a1f1dSLionel Sambuc /* Get the name of a stabs type code.  */
344*0a6a1f1dSLionel Sambuc 
345*0a6a1f1dSLionel Sambuc extern const char *bfd_get_stab_name (int);
346*0a6a1f1dSLionel Sambuc 
347*0a6a1f1dSLionel Sambuc /* Hash table routines.  There is no way to free up a hash table.  */
348*0a6a1f1dSLionel Sambuc 
349*0a6a1f1dSLionel Sambuc /* An element in the hash table.  Most uses will actually use a larger
350*0a6a1f1dSLionel Sambuc    structure, and an instance of this will be the first field.  */
351*0a6a1f1dSLionel Sambuc 
352*0a6a1f1dSLionel Sambuc struct bfd_hash_entry
353*0a6a1f1dSLionel Sambuc {
354*0a6a1f1dSLionel Sambuc   /* Next entry for this hash code.  */
355*0a6a1f1dSLionel Sambuc   struct bfd_hash_entry *next;
356*0a6a1f1dSLionel Sambuc   /* String being hashed.  */
357*0a6a1f1dSLionel Sambuc   const char *string;
358*0a6a1f1dSLionel Sambuc   /* Hash code.  This is the full hash code, not the index into the
359*0a6a1f1dSLionel Sambuc      table.  */
360*0a6a1f1dSLionel Sambuc   unsigned long hash;
361*0a6a1f1dSLionel Sambuc };
362*0a6a1f1dSLionel Sambuc 
363*0a6a1f1dSLionel Sambuc /* A hash table.  */
364*0a6a1f1dSLionel Sambuc 
365*0a6a1f1dSLionel Sambuc struct bfd_hash_table
366*0a6a1f1dSLionel Sambuc {
367*0a6a1f1dSLionel Sambuc   /* The hash array.  */
368*0a6a1f1dSLionel Sambuc   struct bfd_hash_entry **table;
369*0a6a1f1dSLionel Sambuc   /* A function used to create new elements in the hash table.  The
370*0a6a1f1dSLionel Sambuc      first entry is itself a pointer to an element.  When this
371*0a6a1f1dSLionel Sambuc      function is first invoked, this pointer will be NULL.  However,
372*0a6a1f1dSLionel Sambuc      having the pointer permits a hierarchy of method functions to be
373*0a6a1f1dSLionel Sambuc      built each of which calls the function in the superclass.  Thus
374*0a6a1f1dSLionel Sambuc      each function should be written to allocate a new block of memory
375*0a6a1f1dSLionel Sambuc      only if the argument is NULL.  */
376*0a6a1f1dSLionel Sambuc   struct bfd_hash_entry *(*newfunc)
377*0a6a1f1dSLionel Sambuc     (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
378*0a6a1f1dSLionel Sambuc    /* An objalloc for this hash table.  This is a struct objalloc *,
379*0a6a1f1dSLionel Sambuc      but we use void * to avoid requiring the inclusion of objalloc.h.  */
380*0a6a1f1dSLionel Sambuc   void *memory;
381*0a6a1f1dSLionel Sambuc   /* The number of slots in the hash table.  */
382*0a6a1f1dSLionel Sambuc   unsigned int size;
383*0a6a1f1dSLionel Sambuc   /* The number of entries in the hash table.  */
384*0a6a1f1dSLionel Sambuc   unsigned int count;
385*0a6a1f1dSLionel Sambuc   /* The size of elements.  */
386*0a6a1f1dSLionel Sambuc   unsigned int entsize;
387*0a6a1f1dSLionel Sambuc   /* If non-zero, don't grow the hash table.  */
388*0a6a1f1dSLionel Sambuc   unsigned int frozen:1;
389*0a6a1f1dSLionel Sambuc };
390*0a6a1f1dSLionel Sambuc 
391*0a6a1f1dSLionel Sambuc /* Initialize a hash table.  */
392*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_hash_table_init
393*0a6a1f1dSLionel Sambuc   (struct bfd_hash_table *,
394*0a6a1f1dSLionel Sambuc    struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
395*0a6a1f1dSLionel Sambuc 			       struct bfd_hash_table *,
396*0a6a1f1dSLionel Sambuc 			       const char *),
397*0a6a1f1dSLionel Sambuc    unsigned int);
398*0a6a1f1dSLionel Sambuc 
399*0a6a1f1dSLionel Sambuc /* Initialize a hash table specifying a size.  */
400*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_hash_table_init_n
401*0a6a1f1dSLionel Sambuc   (struct bfd_hash_table *,
402*0a6a1f1dSLionel Sambuc    struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
403*0a6a1f1dSLionel Sambuc 			       struct bfd_hash_table *,
404*0a6a1f1dSLionel Sambuc 			       const char *),
405*0a6a1f1dSLionel Sambuc    unsigned int, unsigned int);
406*0a6a1f1dSLionel Sambuc 
407*0a6a1f1dSLionel Sambuc /* Free up a hash table.  */
408*0a6a1f1dSLionel Sambuc extern void bfd_hash_table_free
409*0a6a1f1dSLionel Sambuc   (struct bfd_hash_table *);
410*0a6a1f1dSLionel Sambuc 
411*0a6a1f1dSLionel Sambuc /* Look up a string in a hash table.  If CREATE is TRUE, a new entry
412*0a6a1f1dSLionel Sambuc    will be created for this string if one does not already exist.  The
413*0a6a1f1dSLionel Sambuc    COPY argument must be TRUE if this routine should copy the string
414*0a6a1f1dSLionel Sambuc    into newly allocated memory when adding an entry.  */
415*0a6a1f1dSLionel Sambuc extern struct bfd_hash_entry *bfd_hash_lookup
416*0a6a1f1dSLionel Sambuc   (struct bfd_hash_table *, const char *, bfd_boolean create,
417*0a6a1f1dSLionel Sambuc    bfd_boolean copy);
418*0a6a1f1dSLionel Sambuc 
419*0a6a1f1dSLionel Sambuc /* Insert an entry in a hash table.  */
420*0a6a1f1dSLionel Sambuc extern struct bfd_hash_entry *bfd_hash_insert
421*0a6a1f1dSLionel Sambuc   (struct bfd_hash_table *, const char *, unsigned long);
422*0a6a1f1dSLionel Sambuc 
423*0a6a1f1dSLionel Sambuc /* Rename an entry in a hash table.  */
424*0a6a1f1dSLionel Sambuc extern void bfd_hash_rename
425*0a6a1f1dSLionel Sambuc   (struct bfd_hash_table *, const char *, struct bfd_hash_entry *);
426*0a6a1f1dSLionel Sambuc 
427*0a6a1f1dSLionel Sambuc /* Replace an entry in a hash table.  */
428*0a6a1f1dSLionel Sambuc extern void bfd_hash_replace
429*0a6a1f1dSLionel Sambuc   (struct bfd_hash_table *, struct bfd_hash_entry *old,
430*0a6a1f1dSLionel Sambuc    struct bfd_hash_entry *nw);
431*0a6a1f1dSLionel Sambuc 
432*0a6a1f1dSLionel Sambuc /* Base method for creating a hash table entry.  */
433*0a6a1f1dSLionel Sambuc extern struct bfd_hash_entry *bfd_hash_newfunc
434*0a6a1f1dSLionel Sambuc   (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
435*0a6a1f1dSLionel Sambuc 
436*0a6a1f1dSLionel Sambuc /* Grab some space for a hash table entry.  */
437*0a6a1f1dSLionel Sambuc extern void *bfd_hash_allocate
438*0a6a1f1dSLionel Sambuc   (struct bfd_hash_table *, unsigned int);
439*0a6a1f1dSLionel Sambuc 
440*0a6a1f1dSLionel Sambuc /* Traverse a hash table in a random order, calling a function on each
441*0a6a1f1dSLionel Sambuc    element.  If the function returns FALSE, the traversal stops.  The
442*0a6a1f1dSLionel Sambuc    INFO argument is passed to the function.  */
443*0a6a1f1dSLionel Sambuc extern void bfd_hash_traverse
444*0a6a1f1dSLionel Sambuc   (struct bfd_hash_table *,
445*0a6a1f1dSLionel Sambuc    bfd_boolean (*) (struct bfd_hash_entry *, void *),
446*0a6a1f1dSLionel Sambuc    void *info);
447*0a6a1f1dSLionel Sambuc 
448*0a6a1f1dSLionel Sambuc /* Allows the default size of a hash table to be configured. New hash
449*0a6a1f1dSLionel Sambuc    tables allocated using bfd_hash_table_init will be created with
450*0a6a1f1dSLionel Sambuc    this size.  */
451*0a6a1f1dSLionel Sambuc extern unsigned long bfd_hash_set_default_size (unsigned long);
452*0a6a1f1dSLionel Sambuc 
453*0a6a1f1dSLionel Sambuc /* This structure is used to keep track of stabs in sections
454*0a6a1f1dSLionel Sambuc    information while linking.  */
455*0a6a1f1dSLionel Sambuc 
456*0a6a1f1dSLionel Sambuc struct stab_info
457*0a6a1f1dSLionel Sambuc {
458*0a6a1f1dSLionel Sambuc   /* A hash table used to hold stabs strings.  */
459*0a6a1f1dSLionel Sambuc   struct bfd_strtab_hash *strings;
460*0a6a1f1dSLionel Sambuc   /* The header file hash table.  */
461*0a6a1f1dSLionel Sambuc   struct bfd_hash_table includes;
462*0a6a1f1dSLionel Sambuc   /* The first .stabstr section.  */
463*0a6a1f1dSLionel Sambuc   struct bfd_section *stabstr;
464*0a6a1f1dSLionel Sambuc };
465*0a6a1f1dSLionel Sambuc 
466*0a6a1f1dSLionel Sambuc #define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
467*0a6a1f1dSLionel Sambuc 
468*0a6a1f1dSLionel Sambuc /* User program access to BFD facilities.  */
469*0a6a1f1dSLionel Sambuc 
470*0a6a1f1dSLionel Sambuc /* Direct I/O routines, for programs which know more about the object
471*0a6a1f1dSLionel Sambuc    file than BFD does.  Use higher level routines if possible.  */
472*0a6a1f1dSLionel Sambuc 
473*0a6a1f1dSLionel Sambuc extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
474*0a6a1f1dSLionel Sambuc extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
475*0a6a1f1dSLionel Sambuc extern int bfd_seek (bfd *, file_ptr, int);
476*0a6a1f1dSLionel Sambuc extern file_ptr bfd_tell (bfd *);
477*0a6a1f1dSLionel Sambuc extern int bfd_flush (bfd *);
478*0a6a1f1dSLionel Sambuc extern int bfd_stat (bfd *, struct stat *);
479*0a6a1f1dSLionel Sambuc 
480*0a6a1f1dSLionel Sambuc /* Deprecated old routines.  */
481*0a6a1f1dSLionel Sambuc #if __GNUC__
482*0a6a1f1dSLionel Sambuc #define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
483*0a6a1f1dSLionel Sambuc   (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__),	\
484*0a6a1f1dSLionel Sambuc    bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
485*0a6a1f1dSLionel Sambuc #define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
486*0a6a1f1dSLionel Sambuc   (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__),	\
487*0a6a1f1dSLionel Sambuc    bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
488*0a6a1f1dSLionel Sambuc #else
489*0a6a1f1dSLionel Sambuc #define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
490*0a6a1f1dSLionel Sambuc   (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
491*0a6a1f1dSLionel Sambuc    bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
492*0a6a1f1dSLionel Sambuc #define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
493*0a6a1f1dSLionel Sambuc   (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
494*0a6a1f1dSLionel Sambuc    bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
495*0a6a1f1dSLionel Sambuc #endif
496*0a6a1f1dSLionel Sambuc extern void warn_deprecated (const char *, const char *, int, const char *);
497*0a6a1f1dSLionel Sambuc 
498*0a6a1f1dSLionel Sambuc /* Cast from const char * to char * so that caller can assign to
499*0a6a1f1dSLionel Sambuc    a char * without a warning.  */
500*0a6a1f1dSLionel Sambuc #define bfd_get_filename(abfd) ((char *) (abfd)->filename)
501*0a6a1f1dSLionel Sambuc #define bfd_get_cacheable(abfd) ((abfd)->cacheable)
502*0a6a1f1dSLionel Sambuc #define bfd_get_format(abfd) ((abfd)->format)
503*0a6a1f1dSLionel Sambuc #define bfd_get_target(abfd) ((abfd)->xvec->name)
504*0a6a1f1dSLionel Sambuc #define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
505*0a6a1f1dSLionel Sambuc #define bfd_family_coff(abfd) \
506*0a6a1f1dSLionel Sambuc   (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
507*0a6a1f1dSLionel Sambuc    bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
508*0a6a1f1dSLionel Sambuc #define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
509*0a6a1f1dSLionel Sambuc #define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
510*0a6a1f1dSLionel Sambuc #define bfd_header_big_endian(abfd) \
511*0a6a1f1dSLionel Sambuc   ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
512*0a6a1f1dSLionel Sambuc #define bfd_header_little_endian(abfd) \
513*0a6a1f1dSLionel Sambuc   ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
514*0a6a1f1dSLionel Sambuc #define bfd_get_file_flags(abfd) ((abfd)->flags)
515*0a6a1f1dSLionel Sambuc #define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
516*0a6a1f1dSLionel Sambuc #define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
517*0a6a1f1dSLionel Sambuc #define bfd_my_archive(abfd) ((abfd)->my_archive)
518*0a6a1f1dSLionel Sambuc #define bfd_has_map(abfd) ((abfd)->has_armap)
519*0a6a1f1dSLionel Sambuc #define bfd_is_thin_archive(abfd) ((abfd)->is_thin_archive)
520*0a6a1f1dSLionel Sambuc 
521*0a6a1f1dSLionel Sambuc #define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
522*0a6a1f1dSLionel Sambuc #define bfd_usrdata(abfd) ((abfd)->usrdata)
523*0a6a1f1dSLionel Sambuc 
524*0a6a1f1dSLionel Sambuc #define bfd_get_start_address(abfd) ((abfd)->start_address)
525*0a6a1f1dSLionel Sambuc #define bfd_get_symcount(abfd) ((abfd)->symcount)
526*0a6a1f1dSLionel Sambuc #define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
527*0a6a1f1dSLionel Sambuc #define bfd_count_sections(abfd) ((abfd)->section_count)
528*0a6a1f1dSLionel Sambuc 
529*0a6a1f1dSLionel Sambuc #define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
530*0a6a1f1dSLionel Sambuc 
531*0a6a1f1dSLionel Sambuc #define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
532*0a6a1f1dSLionel Sambuc 
533*0a6a1f1dSLionel Sambuc #define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
534*0a6a1f1dSLionel Sambuc 
535*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_cache_close
536*0a6a1f1dSLionel Sambuc   (bfd *abfd);
537*0a6a1f1dSLionel Sambuc /* NB: This declaration should match the autogenerated one in libbfd.h.  */
538*0a6a1f1dSLionel Sambuc 
539*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_cache_close_all (void);
540*0a6a1f1dSLionel Sambuc 
541*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_record_phdr
542*0a6a1f1dSLionel Sambuc   (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
543*0a6a1f1dSLionel Sambuc    bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
544*0a6a1f1dSLionel Sambuc 
545*0a6a1f1dSLionel Sambuc /* Byte swapping routines.  */
546*0a6a1f1dSLionel Sambuc 
547*0a6a1f1dSLionel Sambuc bfd_uint64_t bfd_getb64 (const void *);
548*0a6a1f1dSLionel Sambuc bfd_uint64_t bfd_getl64 (const void *);
549*0a6a1f1dSLionel Sambuc bfd_int64_t bfd_getb_signed_64 (const void *);
550*0a6a1f1dSLionel Sambuc bfd_int64_t bfd_getl_signed_64 (const void *);
551*0a6a1f1dSLionel Sambuc bfd_vma bfd_getb32 (const void *);
552*0a6a1f1dSLionel Sambuc bfd_vma bfd_getl32 (const void *);
553*0a6a1f1dSLionel Sambuc bfd_signed_vma bfd_getb_signed_32 (const void *);
554*0a6a1f1dSLionel Sambuc bfd_signed_vma bfd_getl_signed_32 (const void *);
555*0a6a1f1dSLionel Sambuc bfd_vma bfd_getb16 (const void *);
556*0a6a1f1dSLionel Sambuc bfd_vma bfd_getl16 (const void *);
557*0a6a1f1dSLionel Sambuc bfd_signed_vma bfd_getb_signed_16 (const void *);
558*0a6a1f1dSLionel Sambuc bfd_signed_vma bfd_getl_signed_16 (const void *);
559*0a6a1f1dSLionel Sambuc void bfd_putb64 (bfd_uint64_t, void *);
560*0a6a1f1dSLionel Sambuc void bfd_putl64 (bfd_uint64_t, void *);
561*0a6a1f1dSLionel Sambuc void bfd_putb32 (bfd_vma, void *);
562*0a6a1f1dSLionel Sambuc void bfd_putl32 (bfd_vma, void *);
563*0a6a1f1dSLionel Sambuc void bfd_putb16 (bfd_vma, void *);
564*0a6a1f1dSLionel Sambuc void bfd_putl16 (bfd_vma, void *);
565*0a6a1f1dSLionel Sambuc 
566*0a6a1f1dSLionel Sambuc /* Byte swapping routines which take size and endiannes as arguments.  */
567*0a6a1f1dSLionel Sambuc 
568*0a6a1f1dSLionel Sambuc bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
569*0a6a1f1dSLionel Sambuc void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
570*0a6a1f1dSLionel Sambuc 
571*0a6a1f1dSLionel Sambuc #if defined(__STDC__) || defined(ALMOST_STDC)
572*0a6a1f1dSLionel Sambuc struct ecoff_debug_info;
573*0a6a1f1dSLionel Sambuc struct ecoff_debug_swap;
574*0a6a1f1dSLionel Sambuc struct ecoff_extr;
575*0a6a1f1dSLionel Sambuc struct bfd_symbol;
576*0a6a1f1dSLionel Sambuc struct bfd_link_info;
577*0a6a1f1dSLionel Sambuc struct bfd_link_hash_entry;
578*0a6a1f1dSLionel Sambuc struct bfd_section_already_linked;
579*0a6a1f1dSLionel Sambuc struct bfd_elf_version_tree;
580*0a6a1f1dSLionel Sambuc #endif
581*0a6a1f1dSLionel Sambuc 
582*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_section_already_linked_table_init (void);
583*0a6a1f1dSLionel Sambuc extern void bfd_section_already_linked_table_free (void);
584*0a6a1f1dSLionel Sambuc extern bfd_boolean _bfd_handle_already_linked
585*0a6a1f1dSLionel Sambuc   (struct bfd_section *, struct bfd_section_already_linked *,
586*0a6a1f1dSLionel Sambuc    struct bfd_link_info *);
587*0a6a1f1dSLionel Sambuc 
588*0a6a1f1dSLionel Sambuc /* Externally visible ECOFF routines.  */
589*0a6a1f1dSLionel Sambuc 
590*0a6a1f1dSLionel Sambuc extern bfd_vma bfd_ecoff_get_gp_value
591*0a6a1f1dSLionel Sambuc   (bfd * abfd);
592*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_ecoff_set_gp_value
593*0a6a1f1dSLionel Sambuc   (bfd *abfd, bfd_vma gp_value);
594*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_ecoff_set_regmasks
595*0a6a1f1dSLionel Sambuc   (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
596*0a6a1f1dSLionel Sambuc    unsigned long *cprmask);
597*0a6a1f1dSLionel Sambuc extern void *bfd_ecoff_debug_init
598*0a6a1f1dSLionel Sambuc   (bfd *output_bfd, struct ecoff_debug_info *output_debug,
599*0a6a1f1dSLionel Sambuc    const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
600*0a6a1f1dSLionel Sambuc extern void bfd_ecoff_debug_free
601*0a6a1f1dSLionel Sambuc   (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
602*0a6a1f1dSLionel Sambuc    const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
603*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_ecoff_debug_accumulate
604*0a6a1f1dSLionel Sambuc   (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
605*0a6a1f1dSLionel Sambuc    const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
606*0a6a1f1dSLionel Sambuc    struct ecoff_debug_info *input_debug,
607*0a6a1f1dSLionel Sambuc    const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
608*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_ecoff_debug_accumulate_other
609*0a6a1f1dSLionel Sambuc   (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
610*0a6a1f1dSLionel Sambuc    const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
611*0a6a1f1dSLionel Sambuc    struct bfd_link_info *);
612*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_ecoff_debug_externals
613*0a6a1f1dSLionel Sambuc   (bfd *abfd, struct ecoff_debug_info *debug,
614*0a6a1f1dSLionel Sambuc    const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
615*0a6a1f1dSLionel Sambuc    bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
616*0a6a1f1dSLionel Sambuc    void (*set_index) (struct bfd_symbol *, bfd_size_type));
617*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_ecoff_debug_one_external
618*0a6a1f1dSLionel Sambuc   (bfd *abfd, struct ecoff_debug_info *debug,
619*0a6a1f1dSLionel Sambuc    const struct ecoff_debug_swap *swap, const char *name,
620*0a6a1f1dSLionel Sambuc    struct ecoff_extr *esym);
621*0a6a1f1dSLionel Sambuc extern bfd_size_type bfd_ecoff_debug_size
622*0a6a1f1dSLionel Sambuc   (bfd *abfd, struct ecoff_debug_info *debug,
623*0a6a1f1dSLionel Sambuc    const struct ecoff_debug_swap *swap);
624*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_ecoff_write_debug
625*0a6a1f1dSLionel Sambuc   (bfd *abfd, struct ecoff_debug_info *debug,
626*0a6a1f1dSLionel Sambuc    const struct ecoff_debug_swap *swap, file_ptr where);
627*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_ecoff_write_accumulated_debug
628*0a6a1f1dSLionel Sambuc   (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
629*0a6a1f1dSLionel Sambuc    const struct ecoff_debug_swap *swap,
630*0a6a1f1dSLionel Sambuc    struct bfd_link_info *info, file_ptr where);
631*0a6a1f1dSLionel Sambuc 
632*0a6a1f1dSLionel Sambuc /* Externally visible ELF routines.  */
633*0a6a1f1dSLionel Sambuc 
634*0a6a1f1dSLionel Sambuc struct bfd_link_needed_list
635*0a6a1f1dSLionel Sambuc {
636*0a6a1f1dSLionel Sambuc   struct bfd_link_needed_list *next;
637*0a6a1f1dSLionel Sambuc   bfd *by;
638*0a6a1f1dSLionel Sambuc   const char *name;
639*0a6a1f1dSLionel Sambuc };
640*0a6a1f1dSLionel Sambuc 
641*0a6a1f1dSLionel Sambuc enum dynamic_lib_link_class {
642*0a6a1f1dSLionel Sambuc   DYN_NORMAL = 0,
643*0a6a1f1dSLionel Sambuc   DYN_AS_NEEDED = 1,
644*0a6a1f1dSLionel Sambuc   DYN_DT_NEEDED = 2,
645*0a6a1f1dSLionel Sambuc   DYN_NO_ADD_NEEDED = 4,
646*0a6a1f1dSLionel Sambuc   DYN_NO_NEEDED = 8
647*0a6a1f1dSLionel Sambuc };
648*0a6a1f1dSLionel Sambuc 
649*0a6a1f1dSLionel Sambuc enum notice_asneeded_action {
650*0a6a1f1dSLionel Sambuc   notice_as_needed,
651*0a6a1f1dSLionel Sambuc   notice_not_needed,
652*0a6a1f1dSLionel Sambuc   notice_needed
653*0a6a1f1dSLionel Sambuc };
654*0a6a1f1dSLionel Sambuc 
655*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_elf_record_link_assignment
656*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
657*0a6a1f1dSLionel Sambuc    bfd_boolean);
658*0a6a1f1dSLionel Sambuc extern struct bfd_link_needed_list *bfd_elf_get_needed_list
659*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
660*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_elf_get_bfd_needed_list
661*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_needed_list **);
662*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_elf_size_dynamic_sections
663*0a6a1f1dSLionel Sambuc   (bfd *, const char *, const char *, const char *, const char *, const char *,
664*0a6a1f1dSLionel Sambuc    const char * const *, struct bfd_link_info *, struct bfd_section **);
665*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
666*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
667*0a6a1f1dSLionel Sambuc extern void bfd_elf_set_dt_needed_name
668*0a6a1f1dSLionel Sambuc   (bfd *, const char *);
669*0a6a1f1dSLionel Sambuc extern const char *bfd_elf_get_dt_soname
670*0a6a1f1dSLionel Sambuc   (bfd *);
671*0a6a1f1dSLionel Sambuc extern void bfd_elf_set_dyn_lib_class
672*0a6a1f1dSLionel Sambuc   (bfd *, enum dynamic_lib_link_class);
673*0a6a1f1dSLionel Sambuc extern int bfd_elf_get_dyn_lib_class
674*0a6a1f1dSLionel Sambuc   (bfd *);
675*0a6a1f1dSLionel Sambuc extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
676*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
677*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_elf_discard_info
678*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
679*0a6a1f1dSLionel Sambuc extern unsigned int _bfd_elf_default_action_discarded
680*0a6a1f1dSLionel Sambuc   (struct bfd_section *);
681*0a6a1f1dSLionel Sambuc 
682*0a6a1f1dSLionel Sambuc /* Return an upper bound on the number of bytes required to store a
683*0a6a1f1dSLionel Sambuc    copy of ABFD's program header table entries.  Return -1 if an error
684*0a6a1f1dSLionel Sambuc    occurs; bfd_get_error will return an appropriate code.  */
685*0a6a1f1dSLionel Sambuc extern long bfd_get_elf_phdr_upper_bound
686*0a6a1f1dSLionel Sambuc   (bfd *abfd);
687*0a6a1f1dSLionel Sambuc 
688*0a6a1f1dSLionel Sambuc /* Copy ABFD's program header table entries to *PHDRS.  The entries
689*0a6a1f1dSLionel Sambuc    will be stored as an array of Elf_Internal_Phdr structures, as
690*0a6a1f1dSLionel Sambuc    defined in include/elf/internal.h.  To find out how large the
691*0a6a1f1dSLionel Sambuc    buffer needs to be, call bfd_get_elf_phdr_upper_bound.
692*0a6a1f1dSLionel Sambuc 
693*0a6a1f1dSLionel Sambuc    Return the number of program header table entries read, or -1 if an
694*0a6a1f1dSLionel Sambuc    error occurs; bfd_get_error will return an appropriate code.  */
695*0a6a1f1dSLionel Sambuc extern int bfd_get_elf_phdrs
696*0a6a1f1dSLionel Sambuc   (bfd *abfd, void *phdrs);
697*0a6a1f1dSLionel Sambuc 
698*0a6a1f1dSLionel Sambuc /* Create a new BFD as if by bfd_openr.  Rather than opening a file,
699*0a6a1f1dSLionel Sambuc    reconstruct an ELF file by reading the segments out of remote memory
700*0a6a1f1dSLionel Sambuc    based on the ELF file header at EHDR_VMA and the ELF program headers it
701*0a6a1f1dSLionel Sambuc    points to.  If not null, *LOADBASEP is filled in with the difference
702*0a6a1f1dSLionel Sambuc    between the VMAs from which the segments were read, and the VMAs the
703*0a6a1f1dSLionel Sambuc    file headers (and hence BFD's idea of each section's VMA) put them at.
704*0a6a1f1dSLionel Sambuc 
705*0a6a1f1dSLionel Sambuc    The function TARGET_READ_MEMORY is called to copy LEN bytes from the
706*0a6a1f1dSLionel Sambuc    remote memory at target address VMA into the local buffer at MYADDR; it
707*0a6a1f1dSLionel Sambuc    should return zero on success or an `errno' code on failure.  TEMPL must
708*0a6a1f1dSLionel Sambuc    be a BFD for an ELF target with the word size and byte order found in
709*0a6a1f1dSLionel Sambuc    the remote memory.  */
710*0a6a1f1dSLionel Sambuc extern bfd *bfd_elf_bfd_from_remote_memory
711*0a6a1f1dSLionel Sambuc   (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
712*0a6a1f1dSLionel Sambuc    int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
713*0a6a1f1dSLionel Sambuc 			      bfd_size_type len));
714*0a6a1f1dSLionel Sambuc 
715*0a6a1f1dSLionel Sambuc extern struct bfd_section *_bfd_elf_tls_setup
716*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
717*0a6a1f1dSLionel Sambuc 
718*0a6a1f1dSLionel Sambuc extern struct bfd_section *
719*0a6a1f1dSLionel Sambuc _bfd_nearby_section (bfd *, struct bfd_section *, bfd_vma);
720*0a6a1f1dSLionel Sambuc 
721*0a6a1f1dSLionel Sambuc extern void _bfd_fix_excluded_sec_syms
722*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
723*0a6a1f1dSLionel Sambuc 
724*0a6a1f1dSLionel Sambuc extern unsigned bfd_m68k_mach_to_features (int);
725*0a6a1f1dSLionel Sambuc 
726*0a6a1f1dSLionel Sambuc extern int bfd_m68k_features_to_mach (unsigned);
727*0a6a1f1dSLionel Sambuc 
728*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
729*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
730*0a6a1f1dSLionel Sambuc    char **);
731*0a6a1f1dSLionel Sambuc 
732*0a6a1f1dSLionel Sambuc extern void bfd_elf_m68k_set_target_options (struct bfd_link_info *, int);
733*0a6a1f1dSLionel Sambuc 
734*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
735*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
736*0a6a1f1dSLionel Sambuc    char **);
737*0a6a1f1dSLionel Sambuc 
738*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_cr16_elf32_create_embedded_relocs
739*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
740*0a6a1f1dSLionel Sambuc    char **);
741*0a6a1f1dSLionel Sambuc 
742*0a6a1f1dSLionel Sambuc /* SunOS shared library support routines for the linker.  */
743*0a6a1f1dSLionel Sambuc 
744*0a6a1f1dSLionel Sambuc extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
745*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
746*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_sunos_record_link_assignment
747*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, const char *);
748*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_sunos_size_dynamic_sections
749*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_section **,
750*0a6a1f1dSLionel Sambuc    struct bfd_section **, struct bfd_section **);
751*0a6a1f1dSLionel Sambuc 
752*0a6a1f1dSLionel Sambuc /* Linux shared library support routines for the linker.  */
753*0a6a1f1dSLionel Sambuc 
754*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_i386linux_size_dynamic_sections
755*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
756*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_m68klinux_size_dynamic_sections
757*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
758*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_sparclinux_size_dynamic_sections
759*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
760*0a6a1f1dSLionel Sambuc 
761*0a6a1f1dSLionel Sambuc /* mmap hacks */
762*0a6a1f1dSLionel Sambuc 
763*0a6a1f1dSLionel Sambuc struct _bfd_window_internal;
764*0a6a1f1dSLionel Sambuc typedef struct _bfd_window_internal bfd_window_internal;
765*0a6a1f1dSLionel Sambuc 
766*0a6a1f1dSLionel Sambuc typedef struct _bfd_window
767*0a6a1f1dSLionel Sambuc {
768*0a6a1f1dSLionel Sambuc   /* What the user asked for.  */
769*0a6a1f1dSLionel Sambuc   void *data;
770*0a6a1f1dSLionel Sambuc   bfd_size_type size;
771*0a6a1f1dSLionel Sambuc   /* The actual window used by BFD.  Small user-requested read-only
772*0a6a1f1dSLionel Sambuc      regions sharing a page may share a single window into the object
773*0a6a1f1dSLionel Sambuc      file.  Read-write versions shouldn't until I've fixed things to
774*0a6a1f1dSLionel Sambuc      keep track of which portions have been claimed by the
775*0a6a1f1dSLionel Sambuc      application; don't want to give the same region back when the
776*0a6a1f1dSLionel Sambuc      application wants two writable copies!  */
777*0a6a1f1dSLionel Sambuc   struct _bfd_window_internal *i;
778*0a6a1f1dSLionel Sambuc }
779*0a6a1f1dSLionel Sambuc bfd_window;
780*0a6a1f1dSLionel Sambuc 
781*0a6a1f1dSLionel Sambuc extern void bfd_init_window
782*0a6a1f1dSLionel Sambuc   (bfd_window *);
783*0a6a1f1dSLionel Sambuc extern void bfd_free_window
784*0a6a1f1dSLionel Sambuc   (bfd_window *);
785*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_get_file_window
786*0a6a1f1dSLionel Sambuc   (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
787*0a6a1f1dSLionel Sambuc 
788*0a6a1f1dSLionel Sambuc /* XCOFF support routines for the linker.  */
789*0a6a1f1dSLionel Sambuc 
790*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_xcoff_split_import_path
791*0a6a1f1dSLionel Sambuc   (bfd *, const char *, const char **, const char **);
792*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_xcoff_set_archive_import_path
793*0a6a1f1dSLionel Sambuc   (struct bfd_link_info *, bfd *, const char *);
794*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_xcoff_link_record_set
795*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
796*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_xcoff_import_symbol
797*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
798*0a6a1f1dSLionel Sambuc    const char *, const char *, const char *, unsigned int);
799*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_xcoff_export_symbol
800*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
801*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_xcoff_link_count_reloc
802*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, const char *);
803*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_xcoff_record_link_assignment
804*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, const char *);
805*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_xcoff_size_dynamic_sections
806*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, const char *, const char *,
807*0a6a1f1dSLionel Sambuc    unsigned long, unsigned long, unsigned long, bfd_boolean,
808*0a6a1f1dSLionel Sambuc    int, bfd_boolean, unsigned int, struct bfd_section **, bfd_boolean);
809*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_xcoff_link_generate_rtinit
810*0a6a1f1dSLionel Sambuc   (bfd *, const char *, const char *, bfd_boolean);
811*0a6a1f1dSLionel Sambuc 
812*0a6a1f1dSLionel Sambuc /* XCOFF support routines for ar.  */
813*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_xcoff_ar_archive_set_magic
814*0a6a1f1dSLionel Sambuc   (bfd *, char *);
815*0a6a1f1dSLionel Sambuc 
816*0a6a1f1dSLionel Sambuc /* Externally visible COFF routines.  */
817*0a6a1f1dSLionel Sambuc 
818*0a6a1f1dSLionel Sambuc #if defined(__STDC__) || defined(ALMOST_STDC)
819*0a6a1f1dSLionel Sambuc struct internal_syment;
820*0a6a1f1dSLionel Sambuc union internal_auxent;
821*0a6a1f1dSLionel Sambuc #endif
822*0a6a1f1dSLionel Sambuc 
823*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_coff_get_syment
824*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_symbol *, struct internal_syment *);
825*0a6a1f1dSLionel Sambuc 
826*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_coff_get_auxent
827*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_symbol *, int, union internal_auxent *);
828*0a6a1f1dSLionel Sambuc 
829*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_coff_set_symbol_class
830*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_symbol *, unsigned int);
831*0a6a1f1dSLionel Sambuc 
832*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
833*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
834*0a6a1f1dSLionel Sambuc 
835*0a6a1f1dSLionel Sambuc /* ARM VFP11 erratum workaround support.  */
836*0a6a1f1dSLionel Sambuc typedef enum
837*0a6a1f1dSLionel Sambuc {
838*0a6a1f1dSLionel Sambuc   BFD_ARM_VFP11_FIX_DEFAULT,
839*0a6a1f1dSLionel Sambuc   BFD_ARM_VFP11_FIX_NONE,
840*0a6a1f1dSLionel Sambuc   BFD_ARM_VFP11_FIX_SCALAR,
841*0a6a1f1dSLionel Sambuc   BFD_ARM_VFP11_FIX_VECTOR
842*0a6a1f1dSLionel Sambuc } bfd_arm_vfp11_fix;
843*0a6a1f1dSLionel Sambuc 
844*0a6a1f1dSLionel Sambuc extern void bfd_elf32_arm_init_maps
845*0a6a1f1dSLionel Sambuc   (bfd *);
846*0a6a1f1dSLionel Sambuc 
847*0a6a1f1dSLionel Sambuc extern void bfd_elf32_arm_set_vfp11_fix
848*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
849*0a6a1f1dSLionel Sambuc 
850*0a6a1f1dSLionel Sambuc extern void bfd_elf32_arm_set_cortex_a8_fix
851*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
852*0a6a1f1dSLionel Sambuc 
853*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
854*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
855*0a6a1f1dSLionel Sambuc 
856*0a6a1f1dSLionel Sambuc extern void bfd_elf32_arm_vfp11_fix_veneer_locations
857*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
858*0a6a1f1dSLionel Sambuc 
859*0a6a1f1dSLionel Sambuc /* ARM Interworking support.  Called from linker.  */
860*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_arm_allocate_interworking_sections
861*0a6a1f1dSLionel Sambuc   (struct bfd_link_info *);
862*0a6a1f1dSLionel Sambuc 
863*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_arm_process_before_allocation
864*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, int);
865*0a6a1f1dSLionel Sambuc 
866*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_arm_get_bfd_for_interworking
867*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
868*0a6a1f1dSLionel Sambuc 
869*0a6a1f1dSLionel Sambuc /* PE ARM Interworking support.  Called from linker.  */
870*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
871*0a6a1f1dSLionel Sambuc   (struct bfd_link_info *);
872*0a6a1f1dSLionel Sambuc 
873*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_arm_pe_process_before_allocation
874*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, int);
875*0a6a1f1dSLionel Sambuc 
876*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
877*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
878*0a6a1f1dSLionel Sambuc 
879*0a6a1f1dSLionel Sambuc /* ELF ARM Interworking support.  Called from linker.  */
880*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
881*0a6a1f1dSLionel Sambuc   (struct bfd_link_info *);
882*0a6a1f1dSLionel Sambuc 
883*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_elf32_arm_process_before_allocation
884*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
885*0a6a1f1dSLionel Sambuc 
886*0a6a1f1dSLionel Sambuc void bfd_elf32_arm_set_target_relocs
887*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
888*0a6a1f1dSLionel Sambuc    int, int, int, int, int);
889*0a6a1f1dSLionel Sambuc 
890*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
891*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
892*0a6a1f1dSLionel Sambuc 
893*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
894*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
895*0a6a1f1dSLionel Sambuc 
896*0a6a1f1dSLionel Sambuc /* ELF ARM mapping symbol support */
897*0a6a1f1dSLionel Sambuc #define BFD_ARM_SPECIAL_SYM_TYPE_MAP	(1 << 0)
898*0a6a1f1dSLionel Sambuc #define BFD_ARM_SPECIAL_SYM_TYPE_TAG	(1 << 1)
899*0a6a1f1dSLionel Sambuc #define BFD_ARM_SPECIAL_SYM_TYPE_OTHER  (1 << 2)
900*0a6a1f1dSLionel Sambuc #define BFD_ARM_SPECIAL_SYM_TYPE_ANY	(~0)
901*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_is_arm_special_symbol_name
902*0a6a1f1dSLionel Sambuc   (const char * name, int type);
903*0a6a1f1dSLionel Sambuc 
904*0a6a1f1dSLionel Sambuc extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
905*0a6a1f1dSLionel Sambuc 
906*0a6a1f1dSLionel Sambuc /* ARM Note section processing.  */
907*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_arm_merge_machines
908*0a6a1f1dSLionel Sambuc   (bfd *, bfd *);
909*0a6a1f1dSLionel Sambuc 
910*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_arm_update_notes
911*0a6a1f1dSLionel Sambuc   (bfd *, const char *);
912*0a6a1f1dSLionel Sambuc 
913*0a6a1f1dSLionel Sambuc extern unsigned int bfd_arm_get_mach_from_notes
914*0a6a1f1dSLionel Sambuc   (bfd *, const char *);
915*0a6a1f1dSLionel Sambuc 
916*0a6a1f1dSLionel Sambuc /* ARM stub generation support.  Called from the linker.  */
917*0a6a1f1dSLionel Sambuc extern int elf32_arm_setup_section_lists
918*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
919*0a6a1f1dSLionel Sambuc extern void elf32_arm_next_input_section
920*0a6a1f1dSLionel Sambuc   (struct bfd_link_info *, struct bfd_section *);
921*0a6a1f1dSLionel Sambuc extern bfd_boolean elf32_arm_size_stubs
922*0a6a1f1dSLionel Sambuc   (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
923*0a6a1f1dSLionel Sambuc    struct bfd_section * (*) (const char *, struct bfd_section *), void (*) (void));
924*0a6a1f1dSLionel Sambuc extern bfd_boolean elf32_arm_build_stubs
925*0a6a1f1dSLionel Sambuc   (struct bfd_link_info *);
926*0a6a1f1dSLionel Sambuc 
927*0a6a1f1dSLionel Sambuc /* ARM unwind section editing support.  */
928*0a6a1f1dSLionel Sambuc extern bfd_boolean elf32_arm_fix_exidx_coverage
929*0a6a1f1dSLionel Sambuc (struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
930*0a6a1f1dSLionel Sambuc 
931*0a6a1f1dSLionel Sambuc /* C6x unwind section editing support.  */
932*0a6a1f1dSLionel Sambuc extern bfd_boolean elf32_tic6x_fix_exidx_coverage
933*0a6a1f1dSLionel Sambuc (struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
934*0a6a1f1dSLionel Sambuc 
935*0a6a1f1dSLionel Sambuc /* PowerPC @tls opcode transform/validate.  */
936*0a6a1f1dSLionel Sambuc extern unsigned int _bfd_elf_ppc_at_tls_transform
937*0a6a1f1dSLionel Sambuc   (unsigned int, unsigned int);
938*0a6a1f1dSLionel Sambuc /* PowerPC @tprel opcode transform/validate.  */
939*0a6a1f1dSLionel Sambuc extern unsigned int _bfd_elf_ppc_at_tprel_transform
940*0a6a1f1dSLionel Sambuc   (unsigned int, unsigned int);
941*0a6a1f1dSLionel Sambuc 
942*0a6a1f1dSLionel Sambuc extern void bfd_elf64_aarch64_init_maps
943*0a6a1f1dSLionel Sambuc   (bfd *);
944*0a6a1f1dSLionel Sambuc 
945*0a6a1f1dSLionel Sambuc void bfd_elf64_aarch64_set_options
946*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, int, int, int);
947*0a6a1f1dSLionel Sambuc 
948*0a6a1f1dSLionel Sambuc /* ELF AArch64 mapping symbol support.  */
949*0a6a1f1dSLionel Sambuc #define BFD_AARCH64_SPECIAL_SYM_TYPE_MAP	(1 << 0)
950*0a6a1f1dSLionel Sambuc #define BFD_AARCH64_SPECIAL_SYM_TYPE_TAG	(1 << 1)
951*0a6a1f1dSLionel Sambuc #define BFD_AARCH64_SPECIAL_SYM_TYPE_OTHER	(1 << 2)
952*0a6a1f1dSLionel Sambuc #define BFD_AARCH64_SPECIAL_SYM_TYPE_ANY	(~0)
953*0a6a1f1dSLionel Sambuc extern bfd_boolean bfd_is_aarch64_special_symbol_name
954*0a6a1f1dSLionel Sambuc   (const char * name, int type);
955*0a6a1f1dSLionel Sambuc 
956*0a6a1f1dSLionel Sambuc /* AArch64 stub generation support.  Called from the linker.  */
957*0a6a1f1dSLionel Sambuc extern int elf64_aarch64_setup_section_lists
958*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *);
959*0a6a1f1dSLionel Sambuc extern void elf64_aarch64_next_input_section
960*0a6a1f1dSLionel Sambuc   (struct bfd_link_info *, struct bfd_section *);
961*0a6a1f1dSLionel Sambuc extern bfd_boolean elf64_aarch64_size_stubs
962*0a6a1f1dSLionel Sambuc   (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
963*0a6a1f1dSLionel Sambuc    struct bfd_section * (*) (const char *, struct bfd_section *),
964*0a6a1f1dSLionel Sambuc    void (*) (void));
965*0a6a1f1dSLionel Sambuc extern bfd_boolean elf64_aarch64_build_stubs
966*0a6a1f1dSLionel Sambuc   (struct bfd_link_info *);
967*0a6a1f1dSLionel Sambuc 
968*0a6a1f1dSLionel Sambuc /* TI COFF load page support.  */
969*0a6a1f1dSLionel Sambuc extern void bfd_ticoff_set_section_load_page
970*0a6a1f1dSLionel Sambuc   (struct bfd_section *, int);
971*0a6a1f1dSLionel Sambuc 
972*0a6a1f1dSLionel Sambuc extern int bfd_ticoff_get_section_load_page
973*0a6a1f1dSLionel Sambuc   (struct bfd_section *);
974*0a6a1f1dSLionel Sambuc 
975*0a6a1f1dSLionel Sambuc /* H8/300 functions.  */
976*0a6a1f1dSLionel Sambuc extern bfd_vma bfd_h8300_pad_address
977*0a6a1f1dSLionel Sambuc   (bfd *, bfd_vma);
978*0a6a1f1dSLionel Sambuc 
979*0a6a1f1dSLionel Sambuc /* IA64 Itanium code generation.  Called from linker.  */
980*0a6a1f1dSLionel Sambuc extern void bfd_elf32_ia64_after_parse
981*0a6a1f1dSLionel Sambuc   (int);
982*0a6a1f1dSLionel Sambuc 
983*0a6a1f1dSLionel Sambuc extern void bfd_elf64_ia64_after_parse
984*0a6a1f1dSLionel Sambuc   (int);
985*0a6a1f1dSLionel Sambuc 
986*0a6a1f1dSLionel Sambuc /* This structure is used for a comdat section, as in PE.  A comdat
987*0a6a1f1dSLionel Sambuc    section is associated with a particular symbol.  When the linker
988*0a6a1f1dSLionel Sambuc    sees a comdat section, it keeps only one of the sections with a
989*0a6a1f1dSLionel Sambuc    given name and associated with a given symbol.  */
990*0a6a1f1dSLionel Sambuc 
991*0a6a1f1dSLionel Sambuc struct coff_comdat_info
992*0a6a1f1dSLionel Sambuc {
993*0a6a1f1dSLionel Sambuc   /* The name of the symbol associated with a comdat section.  */
994*0a6a1f1dSLionel Sambuc   const char *name;
995*0a6a1f1dSLionel Sambuc 
996*0a6a1f1dSLionel Sambuc   /* The local symbol table index of the symbol associated with a
997*0a6a1f1dSLionel Sambuc      comdat section.  This is only meaningful to the object file format
998*0a6a1f1dSLionel Sambuc      specific code; it is not an index into the list returned by
999*0a6a1f1dSLionel Sambuc      bfd_canonicalize_symtab.  */
1000*0a6a1f1dSLionel Sambuc   long symbol;
1001*0a6a1f1dSLionel Sambuc };
1002*0a6a1f1dSLionel Sambuc 
1003*0a6a1f1dSLionel Sambuc extern struct coff_comdat_info *bfd_coff_get_comdat_section
1004*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_section *);
1005*0a6a1f1dSLionel Sambuc 
1006*0a6a1f1dSLionel Sambuc /* Extracted from init.c.  */
1007*0a6a1f1dSLionel Sambuc void bfd_init (void);
1008*0a6a1f1dSLionel Sambuc 
1009*0a6a1f1dSLionel Sambuc /* Extracted from opncls.c.  */
1010*0a6a1f1dSLionel Sambuc extern unsigned int bfd_use_reserved_id;
1011*0a6a1f1dSLionel Sambuc bfd *bfd_fopen (const char *filename, const char *target,
1012*0a6a1f1dSLionel Sambuc     const char *mode, int fd);
1013*0a6a1f1dSLionel Sambuc 
1014*0a6a1f1dSLionel Sambuc bfd *bfd_openr (const char *filename, const char *target);
1015*0a6a1f1dSLionel Sambuc 
1016*0a6a1f1dSLionel Sambuc bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
1017*0a6a1f1dSLionel Sambuc 
1018*0a6a1f1dSLionel Sambuc bfd *bfd_openstreamr (const char *, const char *, void *);
1019*0a6a1f1dSLionel Sambuc 
1020*0a6a1f1dSLionel Sambuc bfd *bfd_openr_iovec (const char *filename, const char *target,
1021*0a6a1f1dSLionel Sambuc     void *(*open_func) (struct bfd *nbfd,
1022*0a6a1f1dSLionel Sambuc     void *open_closure),
1023*0a6a1f1dSLionel Sambuc     void *open_closure,
1024*0a6a1f1dSLionel Sambuc     file_ptr (*pread_func) (struct bfd *nbfd,
1025*0a6a1f1dSLionel Sambuc     void *stream,
1026*0a6a1f1dSLionel Sambuc     void *buf,
1027*0a6a1f1dSLionel Sambuc     file_ptr nbytes,
1028*0a6a1f1dSLionel Sambuc     file_ptr offset),
1029*0a6a1f1dSLionel Sambuc     int (*close_func) (struct bfd *nbfd,
1030*0a6a1f1dSLionel Sambuc     void *stream),
1031*0a6a1f1dSLionel Sambuc     int (*stat_func) (struct bfd *abfd,
1032*0a6a1f1dSLionel Sambuc     void *stream,
1033*0a6a1f1dSLionel Sambuc     struct stat *sb));
1034*0a6a1f1dSLionel Sambuc 
1035*0a6a1f1dSLionel Sambuc bfd *bfd_openw (const char *filename, const char *target);
1036*0a6a1f1dSLionel Sambuc 
1037*0a6a1f1dSLionel Sambuc bfd_boolean bfd_close (bfd *abfd);
1038*0a6a1f1dSLionel Sambuc 
1039*0a6a1f1dSLionel Sambuc bfd_boolean bfd_close_all_done (bfd *);
1040*0a6a1f1dSLionel Sambuc 
1041*0a6a1f1dSLionel Sambuc bfd *bfd_create (const char *filename, bfd *templ);
1042*0a6a1f1dSLionel Sambuc 
1043*0a6a1f1dSLionel Sambuc bfd_boolean bfd_make_writable (bfd *abfd);
1044*0a6a1f1dSLionel Sambuc 
1045*0a6a1f1dSLionel Sambuc bfd_boolean bfd_make_readable (bfd *abfd);
1046*0a6a1f1dSLionel Sambuc 
1047*0a6a1f1dSLionel Sambuc void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
1048*0a6a1f1dSLionel Sambuc 
1049*0a6a1f1dSLionel Sambuc void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
1050*0a6a1f1dSLionel Sambuc 
1051*0a6a1f1dSLionel Sambuc unsigned long bfd_calc_gnu_debuglink_crc32
1052*0a6a1f1dSLionel Sambuc    (unsigned long crc, const unsigned char *buf, bfd_size_type len);
1053*0a6a1f1dSLionel Sambuc 
1054*0a6a1f1dSLionel Sambuc char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
1055*0a6a1f1dSLionel Sambuc 
1056*0a6a1f1dSLionel Sambuc struct bfd_section *bfd_create_gnu_debuglink_section
1057*0a6a1f1dSLionel Sambuc    (bfd *abfd, const char *filename);
1058*0a6a1f1dSLionel Sambuc 
1059*0a6a1f1dSLionel Sambuc bfd_boolean bfd_fill_in_gnu_debuglink_section
1060*0a6a1f1dSLionel Sambuc    (bfd *abfd, struct bfd_section *sect, const char *filename);
1061*0a6a1f1dSLionel Sambuc 
1062*0a6a1f1dSLionel Sambuc /* Extracted from libbfd.c.  */
1063*0a6a1f1dSLionel Sambuc 
1064*0a6a1f1dSLionel Sambuc /* Byte swapping macros for user section data.  */
1065*0a6a1f1dSLionel Sambuc 
1066*0a6a1f1dSLionel Sambuc #define bfd_put_8(abfd, val, ptr) \
1067*0a6a1f1dSLionel Sambuc   ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
1068*0a6a1f1dSLionel Sambuc #define bfd_put_signed_8 \
1069*0a6a1f1dSLionel Sambuc   bfd_put_8
1070*0a6a1f1dSLionel Sambuc #define bfd_get_8(abfd, ptr) \
1071*0a6a1f1dSLionel Sambuc   (*(const unsigned char *) (ptr) & 0xff)
1072*0a6a1f1dSLionel Sambuc #define bfd_get_signed_8(abfd, ptr) \
1073*0a6a1f1dSLionel Sambuc   (((*(const unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
1074*0a6a1f1dSLionel Sambuc 
1075*0a6a1f1dSLionel Sambuc #define bfd_put_16(abfd, val, ptr) \
1076*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
1077*0a6a1f1dSLionel Sambuc #define bfd_put_signed_16 \
1078*0a6a1f1dSLionel Sambuc   bfd_put_16
1079*0a6a1f1dSLionel Sambuc #define bfd_get_16(abfd, ptr) \
1080*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_getx16, (ptr))
1081*0a6a1f1dSLionel Sambuc #define bfd_get_signed_16(abfd, ptr) \
1082*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
1083*0a6a1f1dSLionel Sambuc 
1084*0a6a1f1dSLionel Sambuc #define bfd_put_32(abfd, val, ptr) \
1085*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
1086*0a6a1f1dSLionel Sambuc #define bfd_put_signed_32 \
1087*0a6a1f1dSLionel Sambuc   bfd_put_32
1088*0a6a1f1dSLionel Sambuc #define bfd_get_32(abfd, ptr) \
1089*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_getx32, (ptr))
1090*0a6a1f1dSLionel Sambuc #define bfd_get_signed_32(abfd, ptr) \
1091*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
1092*0a6a1f1dSLionel Sambuc 
1093*0a6a1f1dSLionel Sambuc #define bfd_put_64(abfd, val, ptr) \
1094*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
1095*0a6a1f1dSLionel Sambuc #define bfd_put_signed_64 \
1096*0a6a1f1dSLionel Sambuc   bfd_put_64
1097*0a6a1f1dSLionel Sambuc #define bfd_get_64(abfd, ptr) \
1098*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_getx64, (ptr))
1099*0a6a1f1dSLionel Sambuc #define bfd_get_signed_64(abfd, ptr) \
1100*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
1101*0a6a1f1dSLionel Sambuc 
1102*0a6a1f1dSLionel Sambuc #define bfd_get(bits, abfd, ptr)                       \
1103*0a6a1f1dSLionel Sambuc   ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
1104*0a6a1f1dSLionel Sambuc    : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
1105*0a6a1f1dSLionel Sambuc    : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
1106*0a6a1f1dSLionel Sambuc    : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
1107*0a6a1f1dSLionel Sambuc    : (abort (), (bfd_vma) - 1))
1108*0a6a1f1dSLionel Sambuc 
1109*0a6a1f1dSLionel Sambuc #define bfd_put(bits, abfd, val, ptr)                  \
1110*0a6a1f1dSLionel Sambuc   ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
1111*0a6a1f1dSLionel Sambuc    : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \
1112*0a6a1f1dSLionel Sambuc    : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \
1113*0a6a1f1dSLionel Sambuc    : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \
1114*0a6a1f1dSLionel Sambuc    : (abort (), (void) 0))
1115*0a6a1f1dSLionel Sambuc 
1116*0a6a1f1dSLionel Sambuc 
1117*0a6a1f1dSLionel Sambuc /* Byte swapping macros for file header data.  */
1118*0a6a1f1dSLionel Sambuc 
1119*0a6a1f1dSLionel Sambuc #define bfd_h_put_8(abfd, val, ptr) \
1120*0a6a1f1dSLionel Sambuc   bfd_put_8 (abfd, val, ptr)
1121*0a6a1f1dSLionel Sambuc #define bfd_h_put_signed_8(abfd, val, ptr) \
1122*0a6a1f1dSLionel Sambuc   bfd_put_8 (abfd, val, ptr)
1123*0a6a1f1dSLionel Sambuc #define bfd_h_get_8(abfd, ptr) \
1124*0a6a1f1dSLionel Sambuc   bfd_get_8 (abfd, ptr)
1125*0a6a1f1dSLionel Sambuc #define bfd_h_get_signed_8(abfd, ptr) \
1126*0a6a1f1dSLionel Sambuc   bfd_get_signed_8 (abfd, ptr)
1127*0a6a1f1dSLionel Sambuc 
1128*0a6a1f1dSLionel Sambuc #define bfd_h_put_16(abfd, val, ptr) \
1129*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
1130*0a6a1f1dSLionel Sambuc #define bfd_h_put_signed_16 \
1131*0a6a1f1dSLionel Sambuc   bfd_h_put_16
1132*0a6a1f1dSLionel Sambuc #define bfd_h_get_16(abfd, ptr) \
1133*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_h_getx16, (ptr))
1134*0a6a1f1dSLionel Sambuc #define bfd_h_get_signed_16(abfd, ptr) \
1135*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
1136*0a6a1f1dSLionel Sambuc 
1137*0a6a1f1dSLionel Sambuc #define bfd_h_put_32(abfd, val, ptr) \
1138*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
1139*0a6a1f1dSLionel Sambuc #define bfd_h_put_signed_32 \
1140*0a6a1f1dSLionel Sambuc   bfd_h_put_32
1141*0a6a1f1dSLionel Sambuc #define bfd_h_get_32(abfd, ptr) \
1142*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_h_getx32, (ptr))
1143*0a6a1f1dSLionel Sambuc #define bfd_h_get_signed_32(abfd, ptr) \
1144*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
1145*0a6a1f1dSLionel Sambuc 
1146*0a6a1f1dSLionel Sambuc #define bfd_h_put_64(abfd, val, ptr) \
1147*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
1148*0a6a1f1dSLionel Sambuc #define bfd_h_put_signed_64 \
1149*0a6a1f1dSLionel Sambuc   bfd_h_put_64
1150*0a6a1f1dSLionel Sambuc #define bfd_h_get_64(abfd, ptr) \
1151*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_h_getx64, (ptr))
1152*0a6a1f1dSLionel Sambuc #define bfd_h_get_signed_64(abfd, ptr) \
1153*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
1154*0a6a1f1dSLionel Sambuc 
1155*0a6a1f1dSLionel Sambuc /* Aliases for the above, which should eventually go away.  */
1156*0a6a1f1dSLionel Sambuc 
1157*0a6a1f1dSLionel Sambuc #define H_PUT_64  bfd_h_put_64
1158*0a6a1f1dSLionel Sambuc #define H_PUT_32  bfd_h_put_32
1159*0a6a1f1dSLionel Sambuc #define H_PUT_16  bfd_h_put_16
1160*0a6a1f1dSLionel Sambuc #define H_PUT_8   bfd_h_put_8
1161*0a6a1f1dSLionel Sambuc #define H_PUT_S64 bfd_h_put_signed_64
1162*0a6a1f1dSLionel Sambuc #define H_PUT_S32 bfd_h_put_signed_32
1163*0a6a1f1dSLionel Sambuc #define H_PUT_S16 bfd_h_put_signed_16
1164*0a6a1f1dSLionel Sambuc #define H_PUT_S8  bfd_h_put_signed_8
1165*0a6a1f1dSLionel Sambuc #define H_GET_64  bfd_h_get_64
1166*0a6a1f1dSLionel Sambuc #define H_GET_32  bfd_h_get_32
1167*0a6a1f1dSLionel Sambuc #define H_GET_16  bfd_h_get_16
1168*0a6a1f1dSLionel Sambuc #define H_GET_8   bfd_h_get_8
1169*0a6a1f1dSLionel Sambuc #define H_GET_S64 bfd_h_get_signed_64
1170*0a6a1f1dSLionel Sambuc #define H_GET_S32 bfd_h_get_signed_32
1171*0a6a1f1dSLionel Sambuc #define H_GET_S16 bfd_h_get_signed_16
1172*0a6a1f1dSLionel Sambuc #define H_GET_S8  bfd_h_get_signed_8
1173*0a6a1f1dSLionel Sambuc 
1174*0a6a1f1dSLionel Sambuc 
1175*0a6a1f1dSLionel Sambuc /* Extracted from bfdio.c.  */
1176*0a6a1f1dSLionel Sambuc long bfd_get_mtime (bfd *abfd);
1177*0a6a1f1dSLionel Sambuc 
1178*0a6a1f1dSLionel Sambuc file_ptr bfd_get_size (bfd *abfd);
1179*0a6a1f1dSLionel Sambuc 
1180*0a6a1f1dSLionel Sambuc void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len,
1181*0a6a1f1dSLionel Sambuc     int prot, int flags, file_ptr offset,
1182*0a6a1f1dSLionel Sambuc     void **map_addr, bfd_size_type *map_len);
1183*0a6a1f1dSLionel Sambuc 
1184*0a6a1f1dSLionel Sambuc /* Extracted from bfdwin.c.  */
1185*0a6a1f1dSLionel Sambuc /* Extracted from section.c.  */
1186*0a6a1f1dSLionel Sambuc typedef struct bfd_section
1187*0a6a1f1dSLionel Sambuc {
1188*0a6a1f1dSLionel Sambuc   /* The name of the section; the name isn't a copy, the pointer is
1189*0a6a1f1dSLionel Sambuc      the same as that passed to bfd_make_section.  */
1190*0a6a1f1dSLionel Sambuc   const char *name;
1191*0a6a1f1dSLionel Sambuc 
1192*0a6a1f1dSLionel Sambuc   /* A unique sequence number.  */
1193*0a6a1f1dSLionel Sambuc   int id;
1194*0a6a1f1dSLionel Sambuc 
1195*0a6a1f1dSLionel Sambuc   /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
1196*0a6a1f1dSLionel Sambuc   int index;
1197*0a6a1f1dSLionel Sambuc 
1198*0a6a1f1dSLionel Sambuc   /* The next section in the list belonging to the BFD, or NULL.  */
1199*0a6a1f1dSLionel Sambuc   struct bfd_section *next;
1200*0a6a1f1dSLionel Sambuc 
1201*0a6a1f1dSLionel Sambuc   /* The previous section in the list belonging to the BFD, or NULL.  */
1202*0a6a1f1dSLionel Sambuc   struct bfd_section *prev;
1203*0a6a1f1dSLionel Sambuc 
1204*0a6a1f1dSLionel Sambuc   /* The field flags contains attributes of the section. Some
1205*0a6a1f1dSLionel Sambuc      flags are read in from the object file, and some are
1206*0a6a1f1dSLionel Sambuc      synthesized from other information.  */
1207*0a6a1f1dSLionel Sambuc   flagword flags;
1208*0a6a1f1dSLionel Sambuc 
1209*0a6a1f1dSLionel Sambuc #define SEC_NO_FLAGS   0x000
1210*0a6a1f1dSLionel Sambuc 
1211*0a6a1f1dSLionel Sambuc   /* Tells the OS to allocate space for this section when loading.
1212*0a6a1f1dSLionel Sambuc      This is clear for a section containing debug information only.  */
1213*0a6a1f1dSLionel Sambuc #define SEC_ALLOC      0x001
1214*0a6a1f1dSLionel Sambuc 
1215*0a6a1f1dSLionel Sambuc   /* Tells the OS to load the section from the file when loading.
1216*0a6a1f1dSLionel Sambuc      This is clear for a .bss section.  */
1217*0a6a1f1dSLionel Sambuc #define SEC_LOAD       0x002
1218*0a6a1f1dSLionel Sambuc 
1219*0a6a1f1dSLionel Sambuc   /* The section contains data still to be relocated, so there is
1220*0a6a1f1dSLionel Sambuc      some relocation information too.  */
1221*0a6a1f1dSLionel Sambuc #define SEC_RELOC      0x004
1222*0a6a1f1dSLionel Sambuc 
1223*0a6a1f1dSLionel Sambuc   /* A signal to the OS that the section contains read only data.  */
1224*0a6a1f1dSLionel Sambuc #define SEC_READONLY   0x008
1225*0a6a1f1dSLionel Sambuc 
1226*0a6a1f1dSLionel Sambuc   /* The section contains code only.  */
1227*0a6a1f1dSLionel Sambuc #define SEC_CODE       0x010
1228*0a6a1f1dSLionel Sambuc 
1229*0a6a1f1dSLionel Sambuc   /* The section contains data only.  */
1230*0a6a1f1dSLionel Sambuc #define SEC_DATA       0x020
1231*0a6a1f1dSLionel Sambuc 
1232*0a6a1f1dSLionel Sambuc   /* The section will reside in ROM.  */
1233*0a6a1f1dSLionel Sambuc #define SEC_ROM        0x040
1234*0a6a1f1dSLionel Sambuc 
1235*0a6a1f1dSLionel Sambuc   /* The section contains constructor information. This section
1236*0a6a1f1dSLionel Sambuc      type is used by the linker to create lists of constructors and
1237*0a6a1f1dSLionel Sambuc      destructors used by <<g++>>. When a back end sees a symbol
1238*0a6a1f1dSLionel Sambuc      which should be used in a constructor list, it creates a new
1239*0a6a1f1dSLionel Sambuc      section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
1240*0a6a1f1dSLionel Sambuc      the symbol to it, and builds a relocation. To build the lists
1241*0a6a1f1dSLionel Sambuc      of constructors, all the linker has to do is catenate all the
1242*0a6a1f1dSLionel Sambuc      sections called <<__CTOR_LIST__>> and relocate the data
1243*0a6a1f1dSLionel Sambuc      contained within - exactly the operations it would peform on
1244*0a6a1f1dSLionel Sambuc      standard data.  */
1245*0a6a1f1dSLionel Sambuc #define SEC_CONSTRUCTOR 0x080
1246*0a6a1f1dSLionel Sambuc 
1247*0a6a1f1dSLionel Sambuc   /* The section has contents - a data section could be
1248*0a6a1f1dSLionel Sambuc      <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
1249*0a6a1f1dSLionel Sambuc      <<SEC_HAS_CONTENTS>>  */
1250*0a6a1f1dSLionel Sambuc #define SEC_HAS_CONTENTS 0x100
1251*0a6a1f1dSLionel Sambuc 
1252*0a6a1f1dSLionel Sambuc   /* An instruction to the linker to not output the section
1253*0a6a1f1dSLionel Sambuc      even if it has information which would normally be written.  */
1254*0a6a1f1dSLionel Sambuc #define SEC_NEVER_LOAD 0x200
1255*0a6a1f1dSLionel Sambuc 
1256*0a6a1f1dSLionel Sambuc   /* The section contains thread local data.  */
1257*0a6a1f1dSLionel Sambuc #define SEC_THREAD_LOCAL 0x400
1258*0a6a1f1dSLionel Sambuc 
1259*0a6a1f1dSLionel Sambuc   /* The section has GOT references.  This flag is only for the
1260*0a6a1f1dSLionel Sambuc      linker, and is currently only used by the elf32-hppa back end.
1261*0a6a1f1dSLionel Sambuc      It will be set if global offset table references were detected
1262*0a6a1f1dSLionel Sambuc      in this section, which indicate to the linker that the section
1263*0a6a1f1dSLionel Sambuc      contains PIC code, and must be handled specially when doing a
1264*0a6a1f1dSLionel Sambuc      static link.  */
1265*0a6a1f1dSLionel Sambuc #define SEC_HAS_GOT_REF 0x800
1266*0a6a1f1dSLionel Sambuc 
1267*0a6a1f1dSLionel Sambuc   /* The section contains common symbols (symbols may be defined
1268*0a6a1f1dSLionel Sambuc      multiple times, the value of a symbol is the amount of
1269*0a6a1f1dSLionel Sambuc      space it requires, and the largest symbol value is the one
1270*0a6a1f1dSLionel Sambuc      used).  Most targets have exactly one of these (which we
1271*0a6a1f1dSLionel Sambuc      translate to bfd_com_section_ptr), but ECOFF has two.  */
1272*0a6a1f1dSLionel Sambuc #define SEC_IS_COMMON 0x1000
1273*0a6a1f1dSLionel Sambuc 
1274*0a6a1f1dSLionel Sambuc   /* The section contains only debugging information.  For
1275*0a6a1f1dSLionel Sambuc      example, this is set for ELF .debug and .stab sections.
1276*0a6a1f1dSLionel Sambuc      strip tests this flag to see if a section can be
1277*0a6a1f1dSLionel Sambuc      discarded.  */
1278*0a6a1f1dSLionel Sambuc #define SEC_DEBUGGING 0x2000
1279*0a6a1f1dSLionel Sambuc 
1280*0a6a1f1dSLionel Sambuc   /* The contents of this section are held in memory pointed to
1281*0a6a1f1dSLionel Sambuc      by the contents field.  This is checked by bfd_get_section_contents,
1282*0a6a1f1dSLionel Sambuc      and the data is retrieved from memory if appropriate.  */
1283*0a6a1f1dSLionel Sambuc #define SEC_IN_MEMORY 0x4000
1284*0a6a1f1dSLionel Sambuc 
1285*0a6a1f1dSLionel Sambuc   /* The contents of this section are to be excluded by the
1286*0a6a1f1dSLionel Sambuc      linker for executable and shared objects unless those
1287*0a6a1f1dSLionel Sambuc      objects are to be further relocated.  */
1288*0a6a1f1dSLionel Sambuc #define SEC_EXCLUDE 0x8000
1289*0a6a1f1dSLionel Sambuc 
1290*0a6a1f1dSLionel Sambuc   /* The contents of this section are to be sorted based on the sum of
1291*0a6a1f1dSLionel Sambuc      the symbol and addend values specified by the associated relocation
1292*0a6a1f1dSLionel Sambuc      entries.  Entries without associated relocation entries will be
1293*0a6a1f1dSLionel Sambuc      appended to the end of the section in an unspecified order.  */
1294*0a6a1f1dSLionel Sambuc #define SEC_SORT_ENTRIES 0x10000
1295*0a6a1f1dSLionel Sambuc 
1296*0a6a1f1dSLionel Sambuc   /* When linking, duplicate sections of the same name should be
1297*0a6a1f1dSLionel Sambuc      discarded, rather than being combined into a single section as
1298*0a6a1f1dSLionel Sambuc      is usually done.  This is similar to how common symbols are
1299*0a6a1f1dSLionel Sambuc      handled.  See SEC_LINK_DUPLICATES below.  */
1300*0a6a1f1dSLionel Sambuc #define SEC_LINK_ONCE 0x20000
1301*0a6a1f1dSLionel Sambuc 
1302*0a6a1f1dSLionel Sambuc   /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
1303*0a6a1f1dSLionel Sambuc      should handle duplicate sections.  */
1304*0a6a1f1dSLionel Sambuc #define SEC_LINK_DUPLICATES 0xc0000
1305*0a6a1f1dSLionel Sambuc 
1306*0a6a1f1dSLionel Sambuc   /* This value for SEC_LINK_DUPLICATES means that duplicate
1307*0a6a1f1dSLionel Sambuc      sections with the same name should simply be discarded.  */
1308*0a6a1f1dSLionel Sambuc #define SEC_LINK_DUPLICATES_DISCARD 0x0
1309*0a6a1f1dSLionel Sambuc 
1310*0a6a1f1dSLionel Sambuc   /* This value for SEC_LINK_DUPLICATES means that the linker
1311*0a6a1f1dSLionel Sambuc      should warn if there are any duplicate sections, although
1312*0a6a1f1dSLionel Sambuc      it should still only link one copy.  */
1313*0a6a1f1dSLionel Sambuc #define SEC_LINK_DUPLICATES_ONE_ONLY 0x40000
1314*0a6a1f1dSLionel Sambuc 
1315*0a6a1f1dSLionel Sambuc   /* This value for SEC_LINK_DUPLICATES means that the linker
1316*0a6a1f1dSLionel Sambuc      should warn if any duplicate sections are a different size.  */
1317*0a6a1f1dSLionel Sambuc #define SEC_LINK_DUPLICATES_SAME_SIZE 0x80000
1318*0a6a1f1dSLionel Sambuc 
1319*0a6a1f1dSLionel Sambuc   /* This value for SEC_LINK_DUPLICATES means that the linker
1320*0a6a1f1dSLionel Sambuc      should warn if any duplicate sections contain different
1321*0a6a1f1dSLionel Sambuc      contents.  */
1322*0a6a1f1dSLionel Sambuc #define SEC_LINK_DUPLICATES_SAME_CONTENTS \
1323*0a6a1f1dSLionel Sambuc   (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
1324*0a6a1f1dSLionel Sambuc 
1325*0a6a1f1dSLionel Sambuc   /* This section was created by the linker as part of dynamic
1326*0a6a1f1dSLionel Sambuc      relocation or other arcane processing.  It is skipped when
1327*0a6a1f1dSLionel Sambuc      going through the first-pass output, trusting that someone
1328*0a6a1f1dSLionel Sambuc      else up the line will take care of it later.  */
1329*0a6a1f1dSLionel Sambuc #define SEC_LINKER_CREATED 0x100000
1330*0a6a1f1dSLionel Sambuc 
1331*0a6a1f1dSLionel Sambuc   /* This section should not be subject to garbage collection.
1332*0a6a1f1dSLionel Sambuc      Also set to inform the linker that this section should not be
1333*0a6a1f1dSLionel Sambuc      listed in the link map as discarded.  */
1334*0a6a1f1dSLionel Sambuc #define SEC_KEEP 0x200000
1335*0a6a1f1dSLionel Sambuc 
1336*0a6a1f1dSLionel Sambuc   /* This section contains "short" data, and should be placed
1337*0a6a1f1dSLionel Sambuc      "near" the GP.  */
1338*0a6a1f1dSLionel Sambuc #define SEC_SMALL_DATA 0x400000
1339*0a6a1f1dSLionel Sambuc 
1340*0a6a1f1dSLionel Sambuc   /* Attempt to merge identical entities in the section.
1341*0a6a1f1dSLionel Sambuc      Entity size is given in the entsize field.  */
1342*0a6a1f1dSLionel Sambuc #define SEC_MERGE 0x800000
1343*0a6a1f1dSLionel Sambuc 
1344*0a6a1f1dSLionel Sambuc   /* If given with SEC_MERGE, entities to merge are zero terminated
1345*0a6a1f1dSLionel Sambuc      strings where entsize specifies character size instead of fixed
1346*0a6a1f1dSLionel Sambuc      size entries.  */
1347*0a6a1f1dSLionel Sambuc #define SEC_STRINGS 0x1000000
1348*0a6a1f1dSLionel Sambuc 
1349*0a6a1f1dSLionel Sambuc   /* This section contains data about section groups.  */
1350*0a6a1f1dSLionel Sambuc #define SEC_GROUP 0x2000000
1351*0a6a1f1dSLionel Sambuc 
1352*0a6a1f1dSLionel Sambuc   /* The section is a COFF shared library section.  This flag is
1353*0a6a1f1dSLionel Sambuc      only for the linker.  If this type of section appears in
1354*0a6a1f1dSLionel Sambuc      the input file, the linker must copy it to the output file
1355*0a6a1f1dSLionel Sambuc      without changing the vma or size.  FIXME: Although this
1356*0a6a1f1dSLionel Sambuc      was originally intended to be general, it really is COFF
1357*0a6a1f1dSLionel Sambuc      specific (and the flag was renamed to indicate this).  It
1358*0a6a1f1dSLionel Sambuc      might be cleaner to have some more general mechanism to
1359*0a6a1f1dSLionel Sambuc      allow the back end to control what the linker does with
1360*0a6a1f1dSLionel Sambuc      sections.  */
1361*0a6a1f1dSLionel Sambuc #define SEC_COFF_SHARED_LIBRARY 0x4000000
1362*0a6a1f1dSLionel Sambuc 
1363*0a6a1f1dSLionel Sambuc   /* This input section should be copied to output in reverse order
1364*0a6a1f1dSLionel Sambuc      as an array of pointers.  This is for ELF linker internal use
1365*0a6a1f1dSLionel Sambuc      only.  */
1366*0a6a1f1dSLionel Sambuc #define SEC_ELF_REVERSE_COPY 0x4000000
1367*0a6a1f1dSLionel Sambuc 
1368*0a6a1f1dSLionel Sambuc   /* This section contains data which may be shared with other
1369*0a6a1f1dSLionel Sambuc      executables or shared objects. This is for COFF only.  */
1370*0a6a1f1dSLionel Sambuc #define SEC_COFF_SHARED 0x8000000
1371*0a6a1f1dSLionel Sambuc 
1372*0a6a1f1dSLionel Sambuc   /* When a section with this flag is being linked, then if the size of
1373*0a6a1f1dSLionel Sambuc      the input section is less than a page, it should not cross a page
1374*0a6a1f1dSLionel Sambuc      boundary.  If the size of the input section is one page or more,
1375*0a6a1f1dSLionel Sambuc      it should be aligned on a page boundary.  This is for TI
1376*0a6a1f1dSLionel Sambuc      TMS320C54X only.  */
1377*0a6a1f1dSLionel Sambuc #define SEC_TIC54X_BLOCK 0x10000000
1378*0a6a1f1dSLionel Sambuc 
1379*0a6a1f1dSLionel Sambuc   /* Conditionally link this section; do not link if there are no
1380*0a6a1f1dSLionel Sambuc      references found to any symbol in the section.  This is for TI
1381*0a6a1f1dSLionel Sambuc      TMS320C54X only.  */
1382*0a6a1f1dSLionel Sambuc #define SEC_TIC54X_CLINK 0x20000000
1383*0a6a1f1dSLionel Sambuc 
1384*0a6a1f1dSLionel Sambuc   /* Indicate that section has the no read flag set. This happens
1385*0a6a1f1dSLionel Sambuc      when memory read flag isn't set. */
1386*0a6a1f1dSLionel Sambuc #define SEC_COFF_NOREAD 0x40000000
1387*0a6a1f1dSLionel Sambuc 
1388*0a6a1f1dSLionel Sambuc   /*  End of section flags.  */
1389*0a6a1f1dSLionel Sambuc 
1390*0a6a1f1dSLionel Sambuc   /* Some internal packed boolean fields.  */
1391*0a6a1f1dSLionel Sambuc 
1392*0a6a1f1dSLionel Sambuc   /* See the vma field.  */
1393*0a6a1f1dSLionel Sambuc   unsigned int user_set_vma : 1;
1394*0a6a1f1dSLionel Sambuc 
1395*0a6a1f1dSLionel Sambuc   /* A mark flag used by some of the linker backends.  */
1396*0a6a1f1dSLionel Sambuc   unsigned int linker_mark : 1;
1397*0a6a1f1dSLionel Sambuc 
1398*0a6a1f1dSLionel Sambuc   /* Another mark flag used by some of the linker backends.  Set for
1399*0a6a1f1dSLionel Sambuc      output sections that have an input section.  */
1400*0a6a1f1dSLionel Sambuc   unsigned int linker_has_input : 1;
1401*0a6a1f1dSLionel Sambuc 
1402*0a6a1f1dSLionel Sambuc   /* Mark flag used by some linker backends for garbage collection.  */
1403*0a6a1f1dSLionel Sambuc   unsigned int gc_mark : 1;
1404*0a6a1f1dSLionel Sambuc 
1405*0a6a1f1dSLionel Sambuc   /* Section compression status.  */
1406*0a6a1f1dSLionel Sambuc   unsigned int compress_status : 2;
1407*0a6a1f1dSLionel Sambuc #define COMPRESS_SECTION_NONE    0
1408*0a6a1f1dSLionel Sambuc #define COMPRESS_SECTION_DONE    1
1409*0a6a1f1dSLionel Sambuc #define DECOMPRESS_SECTION_SIZED 2
1410*0a6a1f1dSLionel Sambuc 
1411*0a6a1f1dSLionel Sambuc   /* The following flags are used by the ELF linker. */
1412*0a6a1f1dSLionel Sambuc 
1413*0a6a1f1dSLionel Sambuc   /* Mark sections which have been allocated to segments.  */
1414*0a6a1f1dSLionel Sambuc   unsigned int segment_mark : 1;
1415*0a6a1f1dSLionel Sambuc 
1416*0a6a1f1dSLionel Sambuc   /* Type of sec_info information.  */
1417*0a6a1f1dSLionel Sambuc   unsigned int sec_info_type:3;
1418*0a6a1f1dSLionel Sambuc #define SEC_INFO_TYPE_NONE      0
1419*0a6a1f1dSLionel Sambuc #define SEC_INFO_TYPE_STABS     1
1420*0a6a1f1dSLionel Sambuc #define SEC_INFO_TYPE_MERGE     2
1421*0a6a1f1dSLionel Sambuc #define SEC_INFO_TYPE_EH_FRAME  3
1422*0a6a1f1dSLionel Sambuc #define SEC_INFO_TYPE_JUST_SYMS 4
1423*0a6a1f1dSLionel Sambuc 
1424*0a6a1f1dSLionel Sambuc   /* Nonzero if this section uses RELA relocations, rather than REL.  */
1425*0a6a1f1dSLionel Sambuc   unsigned int use_rela_p:1;
1426*0a6a1f1dSLionel Sambuc 
1427*0a6a1f1dSLionel Sambuc   /* Bits used by various backends.  The generic code doesn't touch
1428*0a6a1f1dSLionel Sambuc      these fields.  */
1429*0a6a1f1dSLionel Sambuc 
1430*0a6a1f1dSLionel Sambuc   unsigned int sec_flg0:1;
1431*0a6a1f1dSLionel Sambuc   unsigned int sec_flg1:1;
1432*0a6a1f1dSLionel Sambuc   unsigned int sec_flg2:1;
1433*0a6a1f1dSLionel Sambuc   unsigned int sec_flg3:1;
1434*0a6a1f1dSLionel Sambuc   unsigned int sec_flg4:1;
1435*0a6a1f1dSLionel Sambuc   unsigned int sec_flg5:1;
1436*0a6a1f1dSLionel Sambuc 
1437*0a6a1f1dSLionel Sambuc   /* End of internal packed boolean fields.  */
1438*0a6a1f1dSLionel Sambuc 
1439*0a6a1f1dSLionel Sambuc   /*  The virtual memory address of the section - where it will be
1440*0a6a1f1dSLionel Sambuc       at run time.  The symbols are relocated against this.  The
1441*0a6a1f1dSLionel Sambuc       user_set_vma flag is maintained by bfd; if it's not set, the
1442*0a6a1f1dSLionel Sambuc       backend can assign addresses (for example, in <<a.out>>, where
1443*0a6a1f1dSLionel Sambuc       the default address for <<.data>> is dependent on the specific
1444*0a6a1f1dSLionel Sambuc       target and various flags).  */
1445*0a6a1f1dSLionel Sambuc   bfd_vma vma;
1446*0a6a1f1dSLionel Sambuc 
1447*0a6a1f1dSLionel Sambuc   /*  The load address of the section - where it would be in a
1448*0a6a1f1dSLionel Sambuc       rom image; really only used for writing section header
1449*0a6a1f1dSLionel Sambuc       information.  */
1450*0a6a1f1dSLionel Sambuc   bfd_vma lma;
1451*0a6a1f1dSLionel Sambuc 
1452*0a6a1f1dSLionel Sambuc   /* The size of the section in octets, as it will be output.
1453*0a6a1f1dSLionel Sambuc      Contains a value even if the section has no contents (e.g., the
1454*0a6a1f1dSLionel Sambuc      size of <<.bss>>).  */
1455*0a6a1f1dSLionel Sambuc   bfd_size_type size;
1456*0a6a1f1dSLionel Sambuc 
1457*0a6a1f1dSLionel Sambuc   /* For input sections, the original size on disk of the section, in
1458*0a6a1f1dSLionel Sambuc      octets.  This field should be set for any section whose size is
1459*0a6a1f1dSLionel Sambuc      changed by linker relaxation.  It is required for sections where
1460*0a6a1f1dSLionel Sambuc      the linker relaxation scheme doesn't cache altered section and
1461*0a6a1f1dSLionel Sambuc      reloc contents (stabs, eh_frame, SEC_MERGE, some coff relaxing
1462*0a6a1f1dSLionel Sambuc      targets), and thus the original size needs to be kept to read the
1463*0a6a1f1dSLionel Sambuc      section multiple times.  For output sections, rawsize holds the
1464*0a6a1f1dSLionel Sambuc      section size calculated on a previous linker relaxation pass.  */
1465*0a6a1f1dSLionel Sambuc   bfd_size_type rawsize;
1466*0a6a1f1dSLionel Sambuc 
1467*0a6a1f1dSLionel Sambuc   /* The compressed size of the section in octets.  */
1468*0a6a1f1dSLionel Sambuc   bfd_size_type compressed_size;
1469*0a6a1f1dSLionel Sambuc 
1470*0a6a1f1dSLionel Sambuc   /* Relaxation table. */
1471*0a6a1f1dSLionel Sambuc   struct relax_table *relax;
1472*0a6a1f1dSLionel Sambuc 
1473*0a6a1f1dSLionel Sambuc   /* Count of used relaxation table entries. */
1474*0a6a1f1dSLionel Sambuc   int relax_count;
1475*0a6a1f1dSLionel Sambuc 
1476*0a6a1f1dSLionel Sambuc 
1477*0a6a1f1dSLionel Sambuc   /* If this section is going to be output, then this value is the
1478*0a6a1f1dSLionel Sambuc      offset in *bytes* into the output section of the first byte in the
1479*0a6a1f1dSLionel Sambuc      input section (byte ==> smallest addressable unit on the
1480*0a6a1f1dSLionel Sambuc      target).  In most cases, if this was going to start at the
1481*0a6a1f1dSLionel Sambuc      100th octet (8-bit quantity) in the output section, this value
1482*0a6a1f1dSLionel Sambuc      would be 100.  However, if the target byte size is 16 bits
1483*0a6a1f1dSLionel Sambuc      (bfd_octets_per_byte is "2"), this value would be 50.  */
1484*0a6a1f1dSLionel Sambuc   bfd_vma output_offset;
1485*0a6a1f1dSLionel Sambuc 
1486*0a6a1f1dSLionel Sambuc   /* The output section through which to map on output.  */
1487*0a6a1f1dSLionel Sambuc   struct bfd_section *output_section;
1488*0a6a1f1dSLionel Sambuc 
1489*0a6a1f1dSLionel Sambuc   /* The alignment requirement of the section, as an exponent of 2 -
1490*0a6a1f1dSLionel Sambuc      e.g., 3 aligns to 2^3 (or 8).  */
1491*0a6a1f1dSLionel Sambuc   unsigned int alignment_power;
1492*0a6a1f1dSLionel Sambuc 
1493*0a6a1f1dSLionel Sambuc   /* If an input section, a pointer to a vector of relocation
1494*0a6a1f1dSLionel Sambuc      records for the data in this section.  */
1495*0a6a1f1dSLionel Sambuc   struct reloc_cache_entry *relocation;
1496*0a6a1f1dSLionel Sambuc 
1497*0a6a1f1dSLionel Sambuc   /* If an output section, a pointer to a vector of pointers to
1498*0a6a1f1dSLionel Sambuc      relocation records for the data in this section.  */
1499*0a6a1f1dSLionel Sambuc   struct reloc_cache_entry **orelocation;
1500*0a6a1f1dSLionel Sambuc 
1501*0a6a1f1dSLionel Sambuc   /* The number of relocation records in one of the above.  */
1502*0a6a1f1dSLionel Sambuc   unsigned reloc_count;
1503*0a6a1f1dSLionel Sambuc 
1504*0a6a1f1dSLionel Sambuc   /* Information below is back end specific - and not always used
1505*0a6a1f1dSLionel Sambuc      or updated.  */
1506*0a6a1f1dSLionel Sambuc 
1507*0a6a1f1dSLionel Sambuc   /* File position of section data.  */
1508*0a6a1f1dSLionel Sambuc   file_ptr filepos;
1509*0a6a1f1dSLionel Sambuc 
1510*0a6a1f1dSLionel Sambuc   /* File position of relocation info.  */
1511*0a6a1f1dSLionel Sambuc   file_ptr rel_filepos;
1512*0a6a1f1dSLionel Sambuc 
1513*0a6a1f1dSLionel Sambuc   /* File position of line data.  */
1514*0a6a1f1dSLionel Sambuc   file_ptr line_filepos;
1515*0a6a1f1dSLionel Sambuc 
1516*0a6a1f1dSLionel Sambuc   /* Pointer to data for applications.  */
1517*0a6a1f1dSLionel Sambuc   void *userdata;
1518*0a6a1f1dSLionel Sambuc 
1519*0a6a1f1dSLionel Sambuc   /* If the SEC_IN_MEMORY flag is set, this points to the actual
1520*0a6a1f1dSLionel Sambuc      contents.  */
1521*0a6a1f1dSLionel Sambuc   unsigned char *contents;
1522*0a6a1f1dSLionel Sambuc 
1523*0a6a1f1dSLionel Sambuc   /* Attached line number information.  */
1524*0a6a1f1dSLionel Sambuc   alent *lineno;
1525*0a6a1f1dSLionel Sambuc 
1526*0a6a1f1dSLionel Sambuc   /* Number of line number records.  */
1527*0a6a1f1dSLionel Sambuc   unsigned int lineno_count;
1528*0a6a1f1dSLionel Sambuc 
1529*0a6a1f1dSLionel Sambuc   /* Entity size for merging purposes.  */
1530*0a6a1f1dSLionel Sambuc   unsigned int entsize;
1531*0a6a1f1dSLionel Sambuc 
1532*0a6a1f1dSLionel Sambuc   /* Points to the kept section if this section is a link-once section,
1533*0a6a1f1dSLionel Sambuc      and is discarded.  */
1534*0a6a1f1dSLionel Sambuc   struct bfd_section *kept_section;
1535*0a6a1f1dSLionel Sambuc 
1536*0a6a1f1dSLionel Sambuc   /* When a section is being output, this value changes as more
1537*0a6a1f1dSLionel Sambuc      linenumbers are written out.  */
1538*0a6a1f1dSLionel Sambuc   file_ptr moving_line_filepos;
1539*0a6a1f1dSLionel Sambuc 
1540*0a6a1f1dSLionel Sambuc   /* What the section number is in the target world.  */
1541*0a6a1f1dSLionel Sambuc   int target_index;
1542*0a6a1f1dSLionel Sambuc 
1543*0a6a1f1dSLionel Sambuc   void *used_by_bfd;
1544*0a6a1f1dSLionel Sambuc 
1545*0a6a1f1dSLionel Sambuc   /* If this is a constructor section then here is a list of the
1546*0a6a1f1dSLionel Sambuc      relocations created to relocate items within it.  */
1547*0a6a1f1dSLionel Sambuc   struct relent_chain *constructor_chain;
1548*0a6a1f1dSLionel Sambuc 
1549*0a6a1f1dSLionel Sambuc   /* The BFD which owns the section.  */
1550*0a6a1f1dSLionel Sambuc   bfd *owner;
1551*0a6a1f1dSLionel Sambuc 
1552*0a6a1f1dSLionel Sambuc   /* A symbol which points at this section only.  */
1553*0a6a1f1dSLionel Sambuc   struct bfd_symbol *symbol;
1554*0a6a1f1dSLionel Sambuc   struct bfd_symbol **symbol_ptr_ptr;
1555*0a6a1f1dSLionel Sambuc 
1556*0a6a1f1dSLionel Sambuc   /* Early in the link process, map_head and map_tail are used to build
1557*0a6a1f1dSLionel Sambuc      a list of input sections attached to an output section.  Later,
1558*0a6a1f1dSLionel Sambuc      output sections use these fields for a list of bfd_link_order
1559*0a6a1f1dSLionel Sambuc      structs.  */
1560*0a6a1f1dSLionel Sambuc   union {
1561*0a6a1f1dSLionel Sambuc     struct bfd_link_order *link_order;
1562*0a6a1f1dSLionel Sambuc     struct bfd_section *s;
1563*0a6a1f1dSLionel Sambuc   } map_head, map_tail;
1564*0a6a1f1dSLionel Sambuc } asection;
1565*0a6a1f1dSLionel Sambuc 
1566*0a6a1f1dSLionel Sambuc /* Relax table contains information about instructions which can
1567*0a6a1f1dSLionel Sambuc    be removed by relaxation -- replacing a long address with a
1568*0a6a1f1dSLionel Sambuc    short address.  */
1569*0a6a1f1dSLionel Sambuc struct relax_table {
1570*0a6a1f1dSLionel Sambuc   /* Address where bytes may be deleted. */
1571*0a6a1f1dSLionel Sambuc   bfd_vma addr;
1572*0a6a1f1dSLionel Sambuc 
1573*0a6a1f1dSLionel Sambuc   /* Number of bytes to be deleted.  */
1574*0a6a1f1dSLionel Sambuc   int size;
1575*0a6a1f1dSLionel Sambuc };
1576*0a6a1f1dSLionel Sambuc 
1577*0a6a1f1dSLionel Sambuc /* These sections are global, and are managed by BFD.  The application
1578*0a6a1f1dSLionel Sambuc    and target back end are not permitted to change the values in
1579*0a6a1f1dSLionel Sambuc    these sections.  */
1580*0a6a1f1dSLionel Sambuc extern asection std_section[4];
1581*0a6a1f1dSLionel Sambuc 
1582*0a6a1f1dSLionel Sambuc #define BFD_ABS_SECTION_NAME "*ABS*"
1583*0a6a1f1dSLionel Sambuc #define BFD_UND_SECTION_NAME "*UND*"
1584*0a6a1f1dSLionel Sambuc #define BFD_COM_SECTION_NAME "*COM*"
1585*0a6a1f1dSLionel Sambuc #define BFD_IND_SECTION_NAME "*IND*"
1586*0a6a1f1dSLionel Sambuc 
1587*0a6a1f1dSLionel Sambuc /* Pointer to the common section.  */
1588*0a6a1f1dSLionel Sambuc #define bfd_com_section_ptr (&std_section[0])
1589*0a6a1f1dSLionel Sambuc /* Pointer to the undefined section.  */
1590*0a6a1f1dSLionel Sambuc #define bfd_und_section_ptr (&std_section[1])
1591*0a6a1f1dSLionel Sambuc /* Pointer to the absolute section.  */
1592*0a6a1f1dSLionel Sambuc #define bfd_abs_section_ptr (&std_section[2])
1593*0a6a1f1dSLionel Sambuc /* Pointer to the indirect section.  */
1594*0a6a1f1dSLionel Sambuc #define bfd_ind_section_ptr (&std_section[3])
1595*0a6a1f1dSLionel Sambuc 
1596*0a6a1f1dSLionel Sambuc #define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
1597*0a6a1f1dSLionel Sambuc #define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
1598*0a6a1f1dSLionel Sambuc #define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
1599*0a6a1f1dSLionel Sambuc 
1600*0a6a1f1dSLionel Sambuc #define bfd_is_const_section(SEC)              \
1601*0a6a1f1dSLionel Sambuc  (   ((SEC) == bfd_abs_section_ptr)            \
1602*0a6a1f1dSLionel Sambuc   || ((SEC) == bfd_und_section_ptr)            \
1603*0a6a1f1dSLionel Sambuc   || ((SEC) == bfd_com_section_ptr)            \
1604*0a6a1f1dSLionel Sambuc   || ((SEC) == bfd_ind_section_ptr))
1605*0a6a1f1dSLionel Sambuc 
1606*0a6a1f1dSLionel Sambuc /* Macros to handle insertion and deletion of a bfd's sections.  These
1607*0a6a1f1dSLionel Sambuc    only handle the list pointers, ie. do not adjust section_count,
1608*0a6a1f1dSLionel Sambuc    target_index etc.  */
1609*0a6a1f1dSLionel Sambuc #define bfd_section_list_remove(ABFD, S) \
1610*0a6a1f1dSLionel Sambuc   do                                                   \
1611*0a6a1f1dSLionel Sambuc     {                                                  \
1612*0a6a1f1dSLionel Sambuc       asection *_s = S;                                \
1613*0a6a1f1dSLionel Sambuc       asection *_next = _s->next;                      \
1614*0a6a1f1dSLionel Sambuc       asection *_prev = _s->prev;                      \
1615*0a6a1f1dSLionel Sambuc       if (_prev)                                       \
1616*0a6a1f1dSLionel Sambuc         _prev->next = _next;                           \
1617*0a6a1f1dSLionel Sambuc       else                                             \
1618*0a6a1f1dSLionel Sambuc         (ABFD)->sections = _next;                      \
1619*0a6a1f1dSLionel Sambuc       if (_next)                                       \
1620*0a6a1f1dSLionel Sambuc         _next->prev = _prev;                           \
1621*0a6a1f1dSLionel Sambuc       else                                             \
1622*0a6a1f1dSLionel Sambuc         (ABFD)->section_last = _prev;                  \
1623*0a6a1f1dSLionel Sambuc     }                                                  \
1624*0a6a1f1dSLionel Sambuc   while (0)
1625*0a6a1f1dSLionel Sambuc #define bfd_section_list_append(ABFD, S) \
1626*0a6a1f1dSLionel Sambuc   do                                                   \
1627*0a6a1f1dSLionel Sambuc     {                                                  \
1628*0a6a1f1dSLionel Sambuc       asection *_s = S;                                \
1629*0a6a1f1dSLionel Sambuc       bfd *_abfd = ABFD;                               \
1630*0a6a1f1dSLionel Sambuc       _s->next = NULL;                                 \
1631*0a6a1f1dSLionel Sambuc       if (_abfd->section_last)                         \
1632*0a6a1f1dSLionel Sambuc         {                                              \
1633*0a6a1f1dSLionel Sambuc           _s->prev = _abfd->section_last;              \
1634*0a6a1f1dSLionel Sambuc           _abfd->section_last->next = _s;              \
1635*0a6a1f1dSLionel Sambuc         }                                              \
1636*0a6a1f1dSLionel Sambuc       else                                             \
1637*0a6a1f1dSLionel Sambuc         {                                              \
1638*0a6a1f1dSLionel Sambuc           _s->prev = NULL;                             \
1639*0a6a1f1dSLionel Sambuc           _abfd->sections = _s;                        \
1640*0a6a1f1dSLionel Sambuc         }                                              \
1641*0a6a1f1dSLionel Sambuc       _abfd->section_last = _s;                        \
1642*0a6a1f1dSLionel Sambuc     }                                                  \
1643*0a6a1f1dSLionel Sambuc   while (0)
1644*0a6a1f1dSLionel Sambuc #define bfd_section_list_prepend(ABFD, S) \
1645*0a6a1f1dSLionel Sambuc   do                                                   \
1646*0a6a1f1dSLionel Sambuc     {                                                  \
1647*0a6a1f1dSLionel Sambuc       asection *_s = S;                                \
1648*0a6a1f1dSLionel Sambuc       bfd *_abfd = ABFD;                               \
1649*0a6a1f1dSLionel Sambuc       _s->prev = NULL;                                 \
1650*0a6a1f1dSLionel Sambuc       if (_abfd->sections)                             \
1651*0a6a1f1dSLionel Sambuc         {                                              \
1652*0a6a1f1dSLionel Sambuc           _s->next = _abfd->sections;                  \
1653*0a6a1f1dSLionel Sambuc           _abfd->sections->prev = _s;                  \
1654*0a6a1f1dSLionel Sambuc         }                                              \
1655*0a6a1f1dSLionel Sambuc       else                                             \
1656*0a6a1f1dSLionel Sambuc         {                                              \
1657*0a6a1f1dSLionel Sambuc           _s->next = NULL;                             \
1658*0a6a1f1dSLionel Sambuc           _abfd->section_last = _s;                    \
1659*0a6a1f1dSLionel Sambuc         }                                              \
1660*0a6a1f1dSLionel Sambuc       _abfd->sections = _s;                            \
1661*0a6a1f1dSLionel Sambuc     }                                                  \
1662*0a6a1f1dSLionel Sambuc   while (0)
1663*0a6a1f1dSLionel Sambuc #define bfd_section_list_insert_after(ABFD, A, S) \
1664*0a6a1f1dSLionel Sambuc   do                                                   \
1665*0a6a1f1dSLionel Sambuc     {                                                  \
1666*0a6a1f1dSLionel Sambuc       asection *_a = A;                                \
1667*0a6a1f1dSLionel Sambuc       asection *_s = S;                                \
1668*0a6a1f1dSLionel Sambuc       asection *_next = _a->next;                      \
1669*0a6a1f1dSLionel Sambuc       _s->next = _next;                                \
1670*0a6a1f1dSLionel Sambuc       _s->prev = _a;                                   \
1671*0a6a1f1dSLionel Sambuc       _a->next = _s;                                   \
1672*0a6a1f1dSLionel Sambuc       if (_next)                                       \
1673*0a6a1f1dSLionel Sambuc         _next->prev = _s;                              \
1674*0a6a1f1dSLionel Sambuc       else                                             \
1675*0a6a1f1dSLionel Sambuc         (ABFD)->section_last = _s;                     \
1676*0a6a1f1dSLionel Sambuc     }                                                  \
1677*0a6a1f1dSLionel Sambuc   while (0)
1678*0a6a1f1dSLionel Sambuc #define bfd_section_list_insert_before(ABFD, B, S) \
1679*0a6a1f1dSLionel Sambuc   do                                                   \
1680*0a6a1f1dSLionel Sambuc     {                                                  \
1681*0a6a1f1dSLionel Sambuc       asection *_b = B;                                \
1682*0a6a1f1dSLionel Sambuc       asection *_s = S;                                \
1683*0a6a1f1dSLionel Sambuc       asection *_prev = _b->prev;                      \
1684*0a6a1f1dSLionel Sambuc       _s->prev = _prev;                                \
1685*0a6a1f1dSLionel Sambuc       _s->next = _b;                                   \
1686*0a6a1f1dSLionel Sambuc       _b->prev = _s;                                   \
1687*0a6a1f1dSLionel Sambuc       if (_prev)                                       \
1688*0a6a1f1dSLionel Sambuc         _prev->next = _s;                              \
1689*0a6a1f1dSLionel Sambuc       else                                             \
1690*0a6a1f1dSLionel Sambuc         (ABFD)->sections = _s;                         \
1691*0a6a1f1dSLionel Sambuc     }                                                  \
1692*0a6a1f1dSLionel Sambuc   while (0)
1693*0a6a1f1dSLionel Sambuc #define bfd_section_removed_from_list(ABFD, S) \
1694*0a6a1f1dSLionel Sambuc   ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
1695*0a6a1f1dSLionel Sambuc 
1696*0a6a1f1dSLionel Sambuc #define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \
1697*0a6a1f1dSLionel Sambuc   /* name, id,  index, next, prev, flags, user_set_vma,            */  \
1698*0a6a1f1dSLionel Sambuc   { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \
1699*0a6a1f1dSLionel Sambuc                                                                        \
1700*0a6a1f1dSLionel Sambuc   /* linker_mark, linker_has_input, gc_mark, decompress_status,    */  \
1701*0a6a1f1dSLionel Sambuc      0,           0,                1,       0,                        \
1702*0a6a1f1dSLionel Sambuc                                                                        \
1703*0a6a1f1dSLionel Sambuc   /* segment_mark, sec_info_type, use_rela_p,                      */  \
1704*0a6a1f1dSLionel Sambuc      0,            0,             0,                                   \
1705*0a6a1f1dSLionel Sambuc                                                                        \
1706*0a6a1f1dSLionel Sambuc   /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5,   */  \
1707*0a6a1f1dSLionel Sambuc      0,        0,        0,        0,        0,        0,              \
1708*0a6a1f1dSLionel Sambuc                                                                        \
1709*0a6a1f1dSLionel Sambuc   /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */  \
1710*0a6a1f1dSLionel Sambuc      0,   0,   0,    0,       0,               0,     0,               \
1711*0a6a1f1dSLionel Sambuc                                                                        \
1712*0a6a1f1dSLionel Sambuc   /* output_offset, output_section, alignment_power,               */  \
1713*0a6a1f1dSLionel Sambuc      0,             &SEC,           0,                                 \
1714*0a6a1f1dSLionel Sambuc                                                                        \
1715*0a6a1f1dSLionel Sambuc   /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
1716*0a6a1f1dSLionel Sambuc      NULL,       NULL,        0,           0,       0,                 \
1717*0a6a1f1dSLionel Sambuc                                                                        \
1718*0a6a1f1dSLionel Sambuc   /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
1719*0a6a1f1dSLionel Sambuc      0,            NULL,     NULL,     NULL,   0,                      \
1720*0a6a1f1dSLionel Sambuc                                                                        \
1721*0a6a1f1dSLionel Sambuc   /* entsize, kept_section, moving_line_filepos,                    */ \
1722*0a6a1f1dSLionel Sambuc      0,       NULL,          0,                                        \
1723*0a6a1f1dSLionel Sambuc                                                                        \
1724*0a6a1f1dSLionel Sambuc   /* target_index, used_by_bfd, constructor_chain, owner,          */  \
1725*0a6a1f1dSLionel Sambuc      0,            NULL,        NULL,              NULL,               \
1726*0a6a1f1dSLionel Sambuc                                                                        \
1727*0a6a1f1dSLionel Sambuc   /* symbol,                    symbol_ptr_ptr,                    */  \
1728*0a6a1f1dSLionel Sambuc      (struct bfd_symbol *) SYM, &SEC.symbol,                           \
1729*0a6a1f1dSLionel Sambuc                                                                        \
1730*0a6a1f1dSLionel Sambuc   /* map_head, map_tail                                            */  \
1731*0a6a1f1dSLionel Sambuc      { NULL }, { NULL }                                                \
1732*0a6a1f1dSLionel Sambuc     }
1733*0a6a1f1dSLionel Sambuc 
1734*0a6a1f1dSLionel Sambuc void bfd_section_list_clear (bfd *);
1735*0a6a1f1dSLionel Sambuc 
1736*0a6a1f1dSLionel Sambuc asection *bfd_get_section_by_name (bfd *abfd, const char *name);
1737*0a6a1f1dSLionel Sambuc 
1738*0a6a1f1dSLionel Sambuc asection *bfd_get_next_section_by_name (asection *sec);
1739*0a6a1f1dSLionel Sambuc 
1740*0a6a1f1dSLionel Sambuc asection *bfd_get_linker_section (bfd *abfd, const char *name);
1741*0a6a1f1dSLionel Sambuc 
1742*0a6a1f1dSLionel Sambuc asection *bfd_get_section_by_name_if
1743*0a6a1f1dSLionel Sambuc    (bfd *abfd,
1744*0a6a1f1dSLionel Sambuc     const char *name,
1745*0a6a1f1dSLionel Sambuc     bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
1746*0a6a1f1dSLionel Sambuc     void *obj);
1747*0a6a1f1dSLionel Sambuc 
1748*0a6a1f1dSLionel Sambuc char *bfd_get_unique_section_name
1749*0a6a1f1dSLionel Sambuc    (bfd *abfd, const char *templat, int *count);
1750*0a6a1f1dSLionel Sambuc 
1751*0a6a1f1dSLionel Sambuc asection *bfd_make_section_old_way (bfd *abfd, const char *name);
1752*0a6a1f1dSLionel Sambuc 
1753*0a6a1f1dSLionel Sambuc asection *bfd_make_section_anyway_with_flags
1754*0a6a1f1dSLionel Sambuc    (bfd *abfd, const char *name, flagword flags);
1755*0a6a1f1dSLionel Sambuc 
1756*0a6a1f1dSLionel Sambuc asection *bfd_make_section_anyway (bfd *abfd, const char *name);
1757*0a6a1f1dSLionel Sambuc 
1758*0a6a1f1dSLionel Sambuc asection *bfd_make_section_with_flags
1759*0a6a1f1dSLionel Sambuc    (bfd *, const char *name, flagword flags);
1760*0a6a1f1dSLionel Sambuc 
1761*0a6a1f1dSLionel Sambuc asection *bfd_make_section (bfd *, const char *name);
1762*0a6a1f1dSLionel Sambuc 
1763*0a6a1f1dSLionel Sambuc bfd_boolean bfd_set_section_flags
1764*0a6a1f1dSLionel Sambuc    (bfd *abfd, asection *sec, flagword flags);
1765*0a6a1f1dSLionel Sambuc 
1766*0a6a1f1dSLionel Sambuc void bfd_rename_section
1767*0a6a1f1dSLionel Sambuc    (bfd *abfd, asection *sec, const char *newname);
1768*0a6a1f1dSLionel Sambuc 
1769*0a6a1f1dSLionel Sambuc void bfd_map_over_sections
1770*0a6a1f1dSLionel Sambuc    (bfd *abfd,
1771*0a6a1f1dSLionel Sambuc     void (*func) (bfd *abfd, asection *sect, void *obj),
1772*0a6a1f1dSLionel Sambuc     void *obj);
1773*0a6a1f1dSLionel Sambuc 
1774*0a6a1f1dSLionel Sambuc asection *bfd_sections_find_if
1775*0a6a1f1dSLionel Sambuc    (bfd *abfd,
1776*0a6a1f1dSLionel Sambuc     bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
1777*0a6a1f1dSLionel Sambuc     void *obj);
1778*0a6a1f1dSLionel Sambuc 
1779*0a6a1f1dSLionel Sambuc bfd_boolean bfd_set_section_size
1780*0a6a1f1dSLionel Sambuc    (bfd *abfd, asection *sec, bfd_size_type val);
1781*0a6a1f1dSLionel Sambuc 
1782*0a6a1f1dSLionel Sambuc bfd_boolean bfd_set_section_contents
1783*0a6a1f1dSLionel Sambuc    (bfd *abfd, asection *section, const void *data,
1784*0a6a1f1dSLionel Sambuc     file_ptr offset, bfd_size_type count);
1785*0a6a1f1dSLionel Sambuc 
1786*0a6a1f1dSLionel Sambuc bfd_boolean bfd_get_section_contents
1787*0a6a1f1dSLionel Sambuc    (bfd *abfd, asection *section, void *location, file_ptr offset,
1788*0a6a1f1dSLionel Sambuc     bfd_size_type count);
1789*0a6a1f1dSLionel Sambuc 
1790*0a6a1f1dSLionel Sambuc bfd_boolean bfd_malloc_and_get_section
1791*0a6a1f1dSLionel Sambuc    (bfd *abfd, asection *section, bfd_byte **buf);
1792*0a6a1f1dSLionel Sambuc 
1793*0a6a1f1dSLionel Sambuc bfd_boolean bfd_copy_private_section_data
1794*0a6a1f1dSLionel Sambuc    (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
1795*0a6a1f1dSLionel Sambuc 
1796*0a6a1f1dSLionel Sambuc #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
1797*0a6a1f1dSLionel Sambuc      BFD_SEND (obfd, _bfd_copy_private_section_data, \
1798*0a6a1f1dSLionel Sambuc                (ibfd, isection, obfd, osection))
1799*0a6a1f1dSLionel Sambuc bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
1800*0a6a1f1dSLionel Sambuc 
1801*0a6a1f1dSLionel Sambuc bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
1802*0a6a1f1dSLionel Sambuc 
1803*0a6a1f1dSLionel Sambuc /* Extracted from archures.c.  */
1804*0a6a1f1dSLionel Sambuc enum bfd_architecture
1805*0a6a1f1dSLionel Sambuc {
1806*0a6a1f1dSLionel Sambuc   bfd_arch_unknown,   /* File arch not known.  */
1807*0a6a1f1dSLionel Sambuc   bfd_arch_obscure,   /* Arch known, not one of these.  */
1808*0a6a1f1dSLionel Sambuc   bfd_arch_m68k,      /* Motorola 68xxx */
1809*0a6a1f1dSLionel Sambuc #define bfd_mach_m68000 1
1810*0a6a1f1dSLionel Sambuc #define bfd_mach_m68008 2
1811*0a6a1f1dSLionel Sambuc #define bfd_mach_m68010 3
1812*0a6a1f1dSLionel Sambuc #define bfd_mach_m68020 4
1813*0a6a1f1dSLionel Sambuc #define bfd_mach_m68030 5
1814*0a6a1f1dSLionel Sambuc #define bfd_mach_m68040 6
1815*0a6a1f1dSLionel Sambuc #define bfd_mach_m68060 7
1816*0a6a1f1dSLionel Sambuc #define bfd_mach_cpu32  8
1817*0a6a1f1dSLionel Sambuc #define bfd_mach_fido   9
1818*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_a_nodiv 10
1819*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_a 11
1820*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_a_mac 12
1821*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_a_emac 13
1822*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_aplus 14
1823*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_aplus_mac 15
1824*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_aplus_emac 16
1825*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_b_nousp 17
1826*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_b_nousp_mac 18
1827*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_b_nousp_emac 19
1828*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_b 20
1829*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_b_mac 21
1830*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_b_emac 22
1831*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_b_float 23
1832*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_b_float_mac 24
1833*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_b_float_emac 25
1834*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_c 26
1835*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_c_mac 27
1836*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_c_emac 28
1837*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_c_nodiv 29
1838*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_c_nodiv_mac 30
1839*0a6a1f1dSLionel Sambuc #define bfd_mach_mcf_isa_c_nodiv_emac 31
1840*0a6a1f1dSLionel Sambuc   bfd_arch_vax,       /* DEC Vax */
1841*0a6a1f1dSLionel Sambuc   bfd_arch_i960,      /* Intel 960 */
1842*0a6a1f1dSLionel Sambuc     /* The order of the following is important.
1843*0a6a1f1dSLionel Sambuc        lower number indicates a machine type that
1844*0a6a1f1dSLionel Sambuc        only accepts a subset of the instructions
1845*0a6a1f1dSLionel Sambuc        available to machines with higher numbers.
1846*0a6a1f1dSLionel Sambuc        The exception is the "ca", which is
1847*0a6a1f1dSLionel Sambuc        incompatible with all other machines except
1848*0a6a1f1dSLionel Sambuc        "core".  */
1849*0a6a1f1dSLionel Sambuc 
1850*0a6a1f1dSLionel Sambuc #define bfd_mach_i960_core      1
1851*0a6a1f1dSLionel Sambuc #define bfd_mach_i960_ka_sa     2
1852*0a6a1f1dSLionel Sambuc #define bfd_mach_i960_kb_sb     3
1853*0a6a1f1dSLionel Sambuc #define bfd_mach_i960_mc        4
1854*0a6a1f1dSLionel Sambuc #define bfd_mach_i960_xa        5
1855*0a6a1f1dSLionel Sambuc #define bfd_mach_i960_ca        6
1856*0a6a1f1dSLionel Sambuc #define bfd_mach_i960_jx        7
1857*0a6a1f1dSLionel Sambuc #define bfd_mach_i960_hx        8
1858*0a6a1f1dSLionel Sambuc 
1859*0a6a1f1dSLionel Sambuc   bfd_arch_or1k,      /* OpenRISC 1000 */
1860*0a6a1f1dSLionel Sambuc #define bfd_mach_or1k		1
1861*0a6a1f1dSLionel Sambuc #define bfd_mach_or1knd		2
1862*0a6a1f1dSLionel Sambuc 
1863*0a6a1f1dSLionel Sambuc   bfd_arch_sparc,     /* SPARC */
1864*0a6a1f1dSLionel Sambuc #define bfd_mach_sparc                 1
1865*0a6a1f1dSLionel Sambuc /* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
1866*0a6a1f1dSLionel Sambuc #define bfd_mach_sparc_sparclet        2
1867*0a6a1f1dSLionel Sambuc #define bfd_mach_sparc_sparclite       3
1868*0a6a1f1dSLionel Sambuc #define bfd_mach_sparc_v8plus          4
1869*0a6a1f1dSLionel Sambuc #define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
1870*0a6a1f1dSLionel Sambuc #define bfd_mach_sparc_sparclite_le    6
1871*0a6a1f1dSLionel Sambuc #define bfd_mach_sparc_v9              7
1872*0a6a1f1dSLionel Sambuc #define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
1873*0a6a1f1dSLionel Sambuc #define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
1874*0a6a1f1dSLionel Sambuc #define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
1875*0a6a1f1dSLionel Sambuc /* Nonzero if MACH has the v9 instruction set.  */
1876*0a6a1f1dSLionel Sambuc #define bfd_mach_sparc_v9_p(mach) \
1877*0a6a1f1dSLionel Sambuc   ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
1878*0a6a1f1dSLionel Sambuc    && (mach) != bfd_mach_sparc_sparclite_le)
1879*0a6a1f1dSLionel Sambuc /* Nonzero if MACH is a 64 bit sparc architecture.  */
1880*0a6a1f1dSLionel Sambuc #define bfd_mach_sparc_64bit_p(mach) \
1881*0a6a1f1dSLionel Sambuc   ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
1882*0a6a1f1dSLionel Sambuc   bfd_arch_spu,       /* PowerPC SPU */
1883*0a6a1f1dSLionel Sambuc #define bfd_mach_spu           256
1884*0a6a1f1dSLionel Sambuc   bfd_arch_mips,      /* MIPS Rxxxx */
1885*0a6a1f1dSLionel Sambuc #define bfd_mach_mips3000              3000
1886*0a6a1f1dSLionel Sambuc #define bfd_mach_mips3900              3900
1887*0a6a1f1dSLionel Sambuc #define bfd_mach_mips4000              4000
1888*0a6a1f1dSLionel Sambuc #define bfd_mach_mips4010              4010
1889*0a6a1f1dSLionel Sambuc #define bfd_mach_mips4100              4100
1890*0a6a1f1dSLionel Sambuc #define bfd_mach_mips4111              4111
1891*0a6a1f1dSLionel Sambuc #define bfd_mach_mips4120              4120
1892*0a6a1f1dSLionel Sambuc #define bfd_mach_mips4300              4300
1893*0a6a1f1dSLionel Sambuc #define bfd_mach_mips4400              4400
1894*0a6a1f1dSLionel Sambuc #define bfd_mach_mips4600              4600
1895*0a6a1f1dSLionel Sambuc #define bfd_mach_mips4650              4650
1896*0a6a1f1dSLionel Sambuc #define bfd_mach_mips5000              5000
1897*0a6a1f1dSLionel Sambuc #define bfd_mach_mips5400              5400
1898*0a6a1f1dSLionel Sambuc #define bfd_mach_mips5500              5500
1899*0a6a1f1dSLionel Sambuc #define bfd_mach_mips6000              6000
1900*0a6a1f1dSLionel Sambuc #define bfd_mach_mips7000              7000
1901*0a6a1f1dSLionel Sambuc #define bfd_mach_mips8000              8000
1902*0a6a1f1dSLionel Sambuc #define bfd_mach_mips9000              9000
1903*0a6a1f1dSLionel Sambuc #define bfd_mach_mips10000             10000
1904*0a6a1f1dSLionel Sambuc #define bfd_mach_mips12000             12000
1905*0a6a1f1dSLionel Sambuc #define bfd_mach_mips14000             14000
1906*0a6a1f1dSLionel Sambuc #define bfd_mach_mips16000             16000
1907*0a6a1f1dSLionel Sambuc #define bfd_mach_mips16                16
1908*0a6a1f1dSLionel Sambuc #define bfd_mach_mips5                 5
1909*0a6a1f1dSLionel Sambuc #define bfd_mach_mips_loongson_2e      3001
1910*0a6a1f1dSLionel Sambuc #define bfd_mach_mips_loongson_2f      3002
1911*0a6a1f1dSLionel Sambuc #define bfd_mach_mips_loongson_3a      3003
1912*0a6a1f1dSLionel Sambuc #define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
1913*0a6a1f1dSLionel Sambuc #define bfd_mach_mips_octeon           6501
1914*0a6a1f1dSLionel Sambuc #define bfd_mach_mips_octeonp          6601
1915*0a6a1f1dSLionel Sambuc #define bfd_mach_mips_octeon2          6502
1916*0a6a1f1dSLionel Sambuc #define bfd_mach_mips_xlr              887682   /* decimal 'XLR'  */
1917*0a6a1f1dSLionel Sambuc #define bfd_mach_mipsisa32             32
1918*0a6a1f1dSLionel Sambuc #define bfd_mach_mipsisa32r2           33
1919*0a6a1f1dSLionel Sambuc #define bfd_mach_mipsisa64             64
1920*0a6a1f1dSLionel Sambuc #define bfd_mach_mipsisa64r2           65
1921*0a6a1f1dSLionel Sambuc #define bfd_mach_mips_micromips        96
1922*0a6a1f1dSLionel Sambuc   bfd_arch_i386,      /* Intel 386 */
1923*0a6a1f1dSLionel Sambuc #define bfd_mach_i386_intel_syntax     (1 << 0)
1924*0a6a1f1dSLionel Sambuc #define bfd_mach_i386_i8086            (1 << 1)
1925*0a6a1f1dSLionel Sambuc #define bfd_mach_i386_i386             (1 << 2)
1926*0a6a1f1dSLionel Sambuc #define bfd_mach_x86_64                (1 << 3)
1927*0a6a1f1dSLionel Sambuc #define bfd_mach_x64_32                (1 << 4)
1928*0a6a1f1dSLionel Sambuc #define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax)
1929*0a6a1f1dSLionel Sambuc #define bfd_mach_x86_64_intel_syntax   (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax)
1930*0a6a1f1dSLionel Sambuc #define bfd_mach_x64_32_intel_syntax   (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax)
1931*0a6a1f1dSLionel Sambuc   bfd_arch_l1om,   /* Intel L1OM */
1932*0a6a1f1dSLionel Sambuc #define bfd_mach_l1om                  (1 << 5)
1933*0a6a1f1dSLionel Sambuc #define bfd_mach_l1om_intel_syntax     (bfd_mach_l1om | bfd_mach_i386_intel_syntax)
1934*0a6a1f1dSLionel Sambuc   bfd_arch_k1om,   /* Intel K1OM */
1935*0a6a1f1dSLionel Sambuc #define bfd_mach_k1om                  (1 << 6)
1936*0a6a1f1dSLionel Sambuc #define bfd_mach_k1om_intel_syntax     (bfd_mach_k1om | bfd_mach_i386_intel_syntax)
1937*0a6a1f1dSLionel Sambuc   bfd_arch_we32k,     /* AT&T WE32xxx */
1938*0a6a1f1dSLionel Sambuc   bfd_arch_tahoe,     /* CCI/Harris Tahoe */
1939*0a6a1f1dSLionel Sambuc   bfd_arch_i860,      /* Intel 860 */
1940*0a6a1f1dSLionel Sambuc   bfd_arch_i370,      /* IBM 360/370 Mainframes */
1941*0a6a1f1dSLionel Sambuc   bfd_arch_romp,      /* IBM ROMP PC/RT */
1942*0a6a1f1dSLionel Sambuc   bfd_arch_convex,    /* Convex */
1943*0a6a1f1dSLionel Sambuc   bfd_arch_m88k,      /* Motorola 88xxx */
1944*0a6a1f1dSLionel Sambuc   bfd_arch_m98k,      /* Motorola 98xxx */
1945*0a6a1f1dSLionel Sambuc   bfd_arch_pyramid,   /* Pyramid Technology */
1946*0a6a1f1dSLionel Sambuc   bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
1947*0a6a1f1dSLionel Sambuc #define bfd_mach_h8300    1
1948*0a6a1f1dSLionel Sambuc #define bfd_mach_h8300h   2
1949*0a6a1f1dSLionel Sambuc #define bfd_mach_h8300s   3
1950*0a6a1f1dSLionel Sambuc #define bfd_mach_h8300hn  4
1951*0a6a1f1dSLionel Sambuc #define bfd_mach_h8300sn  5
1952*0a6a1f1dSLionel Sambuc #define bfd_mach_h8300sx  6
1953*0a6a1f1dSLionel Sambuc #define bfd_mach_h8300sxn 7
1954*0a6a1f1dSLionel Sambuc   bfd_arch_pdp11,     /* DEC PDP-11 */
1955*0a6a1f1dSLionel Sambuc   bfd_arch_plugin,
1956*0a6a1f1dSLionel Sambuc   bfd_arch_powerpc,   /* PowerPC */
1957*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc           32
1958*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc64         64
1959*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_403       403
1960*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_403gc     4030
1961*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_405       405
1962*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_505       505
1963*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_601       601
1964*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_602       602
1965*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_603       603
1966*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_ec603e    6031
1967*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_604       604
1968*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_620       620
1969*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_630       630
1970*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_750       750
1971*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_860       860
1972*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_a35       35
1973*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_rs64ii    642
1974*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_rs64iii   643
1975*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_7400      7400
1976*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_e500      500
1977*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_e500mc    5001
1978*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_e500mc64  5005
1979*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_e5500     5006
1980*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_e6500     5007
1981*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_titan     83
1982*0a6a1f1dSLionel Sambuc #define bfd_mach_ppc_vle       84
1983*0a6a1f1dSLionel Sambuc   bfd_arch_riscv,     /* RISC-V */
1984*0a6a1f1dSLionel Sambuc #define bfd_mach_riscv32       132
1985*0a6a1f1dSLionel Sambuc #define bfd_mach_riscv64       164
1986*0a6a1f1dSLionel Sambuc   bfd_arch_rs6000,    /* IBM RS/6000 */
1987*0a6a1f1dSLionel Sambuc #define bfd_mach_rs6k          6000
1988*0a6a1f1dSLionel Sambuc #define bfd_mach_rs6k_rs1      6001
1989*0a6a1f1dSLionel Sambuc #define bfd_mach_rs6k_rsc      6003
1990*0a6a1f1dSLionel Sambuc #define bfd_mach_rs6k_rs2      6002
1991*0a6a1f1dSLionel Sambuc   bfd_arch_hppa,      /* HP PA RISC */
1992*0a6a1f1dSLionel Sambuc #define bfd_mach_hppa10        10
1993*0a6a1f1dSLionel Sambuc #define bfd_mach_hppa11        11
1994*0a6a1f1dSLionel Sambuc #define bfd_mach_hppa20        20
1995*0a6a1f1dSLionel Sambuc #define bfd_mach_hppa20w       25
1996*0a6a1f1dSLionel Sambuc   bfd_arch_d10v,      /* Mitsubishi D10V */
1997*0a6a1f1dSLionel Sambuc #define bfd_mach_d10v          1
1998*0a6a1f1dSLionel Sambuc #define bfd_mach_d10v_ts2      2
1999*0a6a1f1dSLionel Sambuc #define bfd_mach_d10v_ts3      3
2000*0a6a1f1dSLionel Sambuc   bfd_arch_d30v,      /* Mitsubishi D30V */
2001*0a6a1f1dSLionel Sambuc   bfd_arch_dlx,       /* DLX */
2002*0a6a1f1dSLionel Sambuc   bfd_arch_m68hc11,   /* Motorola 68HC11 */
2003*0a6a1f1dSLionel Sambuc   bfd_arch_m68hc12,   /* Motorola 68HC12 */
2004*0a6a1f1dSLionel Sambuc #define bfd_mach_m6812_default 0
2005*0a6a1f1dSLionel Sambuc #define bfd_mach_m6812         1
2006*0a6a1f1dSLionel Sambuc #define bfd_mach_m6812s        2
2007*0a6a1f1dSLionel Sambuc   bfd_arch_m9s12x,   /* Freescale S12X */
2008*0a6a1f1dSLionel Sambuc   bfd_arch_m9s12xg,  /* Freescale XGATE */
2009*0a6a1f1dSLionel Sambuc   bfd_arch_z8k,       /* Zilog Z8000 */
2010*0a6a1f1dSLionel Sambuc #define bfd_mach_z8001         1
2011*0a6a1f1dSLionel Sambuc #define bfd_mach_z8002         2
2012*0a6a1f1dSLionel Sambuc   bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */
2013*0a6a1f1dSLionel Sambuc   bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */
2014*0a6a1f1dSLionel Sambuc #define bfd_mach_sh            1
2015*0a6a1f1dSLionel Sambuc #define bfd_mach_sh2        0x20
2016*0a6a1f1dSLionel Sambuc #define bfd_mach_sh_dsp     0x2d
2017*0a6a1f1dSLionel Sambuc #define bfd_mach_sh2a       0x2a
2018*0a6a1f1dSLionel Sambuc #define bfd_mach_sh2a_nofpu 0x2b
2019*0a6a1f1dSLionel Sambuc #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
2020*0a6a1f1dSLionel Sambuc #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
2021*0a6a1f1dSLionel Sambuc #define bfd_mach_sh2a_or_sh4  0x2a3
2022*0a6a1f1dSLionel Sambuc #define bfd_mach_sh2a_or_sh3e 0x2a4
2023*0a6a1f1dSLionel Sambuc #define bfd_mach_sh2e       0x2e
2024*0a6a1f1dSLionel Sambuc #define bfd_mach_sh3        0x30
2025*0a6a1f1dSLionel Sambuc #define bfd_mach_sh3_nommu  0x31
2026*0a6a1f1dSLionel Sambuc #define bfd_mach_sh3_dsp    0x3d
2027*0a6a1f1dSLionel Sambuc #define bfd_mach_sh3e       0x3e
2028*0a6a1f1dSLionel Sambuc #define bfd_mach_sh4        0x40
2029*0a6a1f1dSLionel Sambuc #define bfd_mach_sh4_nofpu  0x41
2030*0a6a1f1dSLionel Sambuc #define bfd_mach_sh4_nommu_nofpu  0x42
2031*0a6a1f1dSLionel Sambuc #define bfd_mach_sh4a       0x4a
2032*0a6a1f1dSLionel Sambuc #define bfd_mach_sh4a_nofpu 0x4b
2033*0a6a1f1dSLionel Sambuc #define bfd_mach_sh4al_dsp  0x4d
2034*0a6a1f1dSLionel Sambuc #define bfd_mach_sh5        0x50
2035*0a6a1f1dSLionel Sambuc   bfd_arch_alpha,     /* Dec Alpha */
2036*0a6a1f1dSLionel Sambuc #define bfd_mach_alpha_ev4  0x10
2037*0a6a1f1dSLionel Sambuc #define bfd_mach_alpha_ev5  0x20
2038*0a6a1f1dSLionel Sambuc #define bfd_mach_alpha_ev6  0x30
2039*0a6a1f1dSLionel Sambuc   bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
2040*0a6a1f1dSLionel Sambuc #define bfd_mach_arm_unknown   0
2041*0a6a1f1dSLionel Sambuc #define bfd_mach_arm_2         1
2042*0a6a1f1dSLionel Sambuc #define bfd_mach_arm_2a        2
2043*0a6a1f1dSLionel Sambuc #define bfd_mach_arm_3         3
2044*0a6a1f1dSLionel Sambuc #define bfd_mach_arm_3M        4
2045*0a6a1f1dSLionel Sambuc #define bfd_mach_arm_4         5
2046*0a6a1f1dSLionel Sambuc #define bfd_mach_arm_4T        6
2047*0a6a1f1dSLionel Sambuc #define bfd_mach_arm_5         7
2048*0a6a1f1dSLionel Sambuc #define bfd_mach_arm_5T        8
2049*0a6a1f1dSLionel Sambuc #define bfd_mach_arm_5TE       9
2050*0a6a1f1dSLionel Sambuc #define bfd_mach_arm_XScale    10
2051*0a6a1f1dSLionel Sambuc #define bfd_mach_arm_ep9312    11
2052*0a6a1f1dSLionel Sambuc #define bfd_mach_arm_iWMMXt    12
2053*0a6a1f1dSLionel Sambuc #define bfd_mach_arm_iWMMXt2   13
2054*0a6a1f1dSLionel Sambuc   bfd_arch_ns32k,     /* National Semiconductors ns32000 */
2055*0a6a1f1dSLionel Sambuc   bfd_arch_w65,       /* WDC 65816 */
2056*0a6a1f1dSLionel Sambuc   bfd_arch_tic30,     /* Texas Instruments TMS320C30 */
2057*0a6a1f1dSLionel Sambuc   bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */
2058*0a6a1f1dSLionel Sambuc #define bfd_mach_tic3x         30
2059*0a6a1f1dSLionel Sambuc #define bfd_mach_tic4x         40
2060*0a6a1f1dSLionel Sambuc   bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */
2061*0a6a1f1dSLionel Sambuc   bfd_arch_tic6x,     /* Texas Instruments TMS320C6X */
2062*0a6a1f1dSLionel Sambuc   bfd_arch_tic80,     /* TI TMS320c80 (MVP) */
2063*0a6a1f1dSLionel Sambuc   bfd_arch_v850,      /* NEC V850 */
2064*0a6a1f1dSLionel Sambuc #define bfd_mach_v850          1
2065*0a6a1f1dSLionel Sambuc #define bfd_mach_v850e         'E'
2066*0a6a1f1dSLionel Sambuc #define bfd_mach_v850e1        '1'
2067*0a6a1f1dSLionel Sambuc #define bfd_mach_v850e2        0x4532
2068*0a6a1f1dSLionel Sambuc #define bfd_mach_v850e2v3      0x45325633
2069*0a6a1f1dSLionel Sambuc   bfd_arch_arc,       /* ARC Cores */
2070*0a6a1f1dSLionel Sambuc #define bfd_mach_arc_5         5
2071*0a6a1f1dSLionel Sambuc #define bfd_mach_arc_6         6
2072*0a6a1f1dSLionel Sambuc #define bfd_mach_arc_7         7
2073*0a6a1f1dSLionel Sambuc #define bfd_mach_arc_8         8
2074*0a6a1f1dSLionel Sambuc  bfd_arch_m32c,     /* Renesas M16C/M32C.  */
2075*0a6a1f1dSLionel Sambuc #define bfd_mach_m16c        0x75
2076*0a6a1f1dSLionel Sambuc #define bfd_mach_m32c        0x78
2077*0a6a1f1dSLionel Sambuc   bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */
2078*0a6a1f1dSLionel Sambuc #define bfd_mach_m32r          1 /* For backwards compatibility.  */
2079*0a6a1f1dSLionel Sambuc #define bfd_mach_m32rx         'x'
2080*0a6a1f1dSLionel Sambuc #define bfd_mach_m32r2         '2'
2081*0a6a1f1dSLionel Sambuc   bfd_arch_mn10200,   /* Matsushita MN10200 */
2082*0a6a1f1dSLionel Sambuc   bfd_arch_mn10300,   /* Matsushita MN10300 */
2083*0a6a1f1dSLionel Sambuc #define bfd_mach_mn10300               300
2084*0a6a1f1dSLionel Sambuc #define bfd_mach_am33          330
2085*0a6a1f1dSLionel Sambuc #define bfd_mach_am33_2        332
2086*0a6a1f1dSLionel Sambuc   bfd_arch_fr30,
2087*0a6a1f1dSLionel Sambuc #define bfd_mach_fr30          0x46523330
2088*0a6a1f1dSLionel Sambuc   bfd_arch_frv,
2089*0a6a1f1dSLionel Sambuc #define bfd_mach_frv           1
2090*0a6a1f1dSLionel Sambuc #define bfd_mach_frvsimple     2
2091*0a6a1f1dSLionel Sambuc #define bfd_mach_fr300         300
2092*0a6a1f1dSLionel Sambuc #define bfd_mach_fr400         400
2093*0a6a1f1dSLionel Sambuc #define bfd_mach_fr450         450
2094*0a6a1f1dSLionel Sambuc #define bfd_mach_frvtomcat     499     /* fr500 prototype */
2095*0a6a1f1dSLionel Sambuc #define bfd_mach_fr500         500
2096*0a6a1f1dSLionel Sambuc #define bfd_mach_fr550         550
2097*0a6a1f1dSLionel Sambuc   bfd_arch_moxie,       /* The moxie processor */
2098*0a6a1f1dSLionel Sambuc #define bfd_mach_moxie         1
2099*0a6a1f1dSLionel Sambuc   bfd_arch_mcore,
2100*0a6a1f1dSLionel Sambuc   bfd_arch_mep,
2101*0a6a1f1dSLionel Sambuc #define bfd_mach_mep           1
2102*0a6a1f1dSLionel Sambuc #define bfd_mach_mep_h1        0x6831
2103*0a6a1f1dSLionel Sambuc #define bfd_mach_mep_c5        0x6335
2104*0a6a1f1dSLionel Sambuc   bfd_arch_ia64,      /* HP/Intel ia64 */
2105*0a6a1f1dSLionel Sambuc #define bfd_mach_ia64_elf64    64
2106*0a6a1f1dSLionel Sambuc #define bfd_mach_ia64_elf32    32
2107*0a6a1f1dSLionel Sambuc   bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
2108*0a6a1f1dSLionel Sambuc #define bfd_mach_ip2022        1
2109*0a6a1f1dSLionel Sambuc #define bfd_mach_ip2022ext     2
2110*0a6a1f1dSLionel Sambuc  bfd_arch_iq2000,     /* Vitesse IQ2000.  */
2111*0a6a1f1dSLionel Sambuc #define bfd_mach_iq2000        1
2112*0a6a1f1dSLionel Sambuc #define bfd_mach_iq10          2
2113*0a6a1f1dSLionel Sambuc   bfd_arch_epiphany,   /* Adapteva EPIPHANY */
2114*0a6a1f1dSLionel Sambuc #define bfd_mach_epiphany16    1
2115*0a6a1f1dSLionel Sambuc #define bfd_mach_epiphany32    2
2116*0a6a1f1dSLionel Sambuc   bfd_arch_mt,
2117*0a6a1f1dSLionel Sambuc #define bfd_mach_ms1           1
2118*0a6a1f1dSLionel Sambuc #define bfd_mach_mrisc2        2
2119*0a6a1f1dSLionel Sambuc #define bfd_mach_ms2           3
2120*0a6a1f1dSLionel Sambuc   bfd_arch_pj,
2121*0a6a1f1dSLionel Sambuc   bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
2122*0a6a1f1dSLionel Sambuc #define bfd_mach_avr1          1
2123*0a6a1f1dSLionel Sambuc #define bfd_mach_avr2          2
2124*0a6a1f1dSLionel Sambuc #define bfd_mach_avr25         25
2125*0a6a1f1dSLionel Sambuc #define bfd_mach_avr3          3
2126*0a6a1f1dSLionel Sambuc #define bfd_mach_avr31         31
2127*0a6a1f1dSLionel Sambuc #define bfd_mach_avr35         35
2128*0a6a1f1dSLionel Sambuc #define bfd_mach_avr4          4
2129*0a6a1f1dSLionel Sambuc #define bfd_mach_avr5          5
2130*0a6a1f1dSLionel Sambuc #define bfd_mach_avr51         51
2131*0a6a1f1dSLionel Sambuc #define bfd_mach_avr6          6
2132*0a6a1f1dSLionel Sambuc #define bfd_mach_avrxmega1 101
2133*0a6a1f1dSLionel Sambuc #define bfd_mach_avrxmega2 102
2134*0a6a1f1dSLionel Sambuc #define bfd_mach_avrxmega3 103
2135*0a6a1f1dSLionel Sambuc #define bfd_mach_avrxmega4 104
2136*0a6a1f1dSLionel Sambuc #define bfd_mach_avrxmega5 105
2137*0a6a1f1dSLionel Sambuc #define bfd_mach_avrxmega6 106
2138*0a6a1f1dSLionel Sambuc #define bfd_mach_avrxmega7 107
2139*0a6a1f1dSLionel Sambuc   bfd_arch_bfin,        /* ADI Blackfin */
2140*0a6a1f1dSLionel Sambuc #define bfd_mach_bfin          1
2141*0a6a1f1dSLionel Sambuc   bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
2142*0a6a1f1dSLionel Sambuc #define bfd_mach_cr16          1
2143*0a6a1f1dSLionel Sambuc   bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */
2144*0a6a1f1dSLionel Sambuc #define bfd_mach_cr16c         1
2145*0a6a1f1dSLionel Sambuc   bfd_arch_crx,       /*  National Semiconductor CRX.  */
2146*0a6a1f1dSLionel Sambuc #define bfd_mach_crx           1
2147*0a6a1f1dSLionel Sambuc   bfd_arch_cris,      /* Axis CRIS */
2148*0a6a1f1dSLionel Sambuc #define bfd_mach_cris_v0_v10   255
2149*0a6a1f1dSLionel Sambuc #define bfd_mach_cris_v32      32
2150*0a6a1f1dSLionel Sambuc #define bfd_mach_cris_v10_v32  1032
2151*0a6a1f1dSLionel Sambuc   bfd_arch_rl78,
2152*0a6a1f1dSLionel Sambuc #define bfd_mach_rl78  0x75
2153*0a6a1f1dSLionel Sambuc   bfd_arch_rx,        /* Renesas RX.  */
2154*0a6a1f1dSLionel Sambuc #define bfd_mach_rx            0x75
2155*0a6a1f1dSLionel Sambuc   bfd_arch_s390,      /* IBM s390 */
2156*0a6a1f1dSLionel Sambuc #define bfd_mach_s390_31       31
2157*0a6a1f1dSLionel Sambuc #define bfd_mach_s390_64       64
2158*0a6a1f1dSLionel Sambuc   bfd_arch_score,     /* Sunplus score */
2159*0a6a1f1dSLionel Sambuc #define bfd_mach_score3         3
2160*0a6a1f1dSLionel Sambuc #define bfd_mach_score7         7
2161*0a6a1f1dSLionel Sambuc   bfd_arch_openrisc,  /* OpenRISC */
2162*0a6a1f1dSLionel Sambuc   bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
2163*0a6a1f1dSLionel Sambuc   bfd_arch_xstormy16,
2164*0a6a1f1dSLionel Sambuc #define bfd_mach_xstormy16     1
2165*0a6a1f1dSLionel Sambuc   bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
2166*0a6a1f1dSLionel Sambuc #define bfd_mach_msp11          11
2167*0a6a1f1dSLionel Sambuc #define bfd_mach_msp110         110
2168*0a6a1f1dSLionel Sambuc #define bfd_mach_msp12          12
2169*0a6a1f1dSLionel Sambuc #define bfd_mach_msp13          13
2170*0a6a1f1dSLionel Sambuc #define bfd_mach_msp14          14
2171*0a6a1f1dSLionel Sambuc #define bfd_mach_msp15          15
2172*0a6a1f1dSLionel Sambuc #define bfd_mach_msp16          16
2173*0a6a1f1dSLionel Sambuc #define bfd_mach_msp21          21
2174*0a6a1f1dSLionel Sambuc #define bfd_mach_msp31          31
2175*0a6a1f1dSLionel Sambuc #define bfd_mach_msp32          32
2176*0a6a1f1dSLionel Sambuc #define bfd_mach_msp33          33
2177*0a6a1f1dSLionel Sambuc #define bfd_mach_msp41          41
2178*0a6a1f1dSLionel Sambuc #define bfd_mach_msp42          42
2179*0a6a1f1dSLionel Sambuc #define bfd_mach_msp43          43
2180*0a6a1f1dSLionel Sambuc #define bfd_mach_msp44          44
2181*0a6a1f1dSLionel Sambuc   bfd_arch_xc16x,     /* Infineon's XC16X Series.               */
2182*0a6a1f1dSLionel Sambuc #define bfd_mach_xc16x         1
2183*0a6a1f1dSLionel Sambuc #define bfd_mach_xc16xl        2
2184*0a6a1f1dSLionel Sambuc #define bfd_mach_xc16xs        3
2185*0a6a1f1dSLionel Sambuc   bfd_arch_xgate,   /* Freescale XGATE */
2186*0a6a1f1dSLionel Sambuc #define bfd_mach_xgate         1
2187*0a6a1f1dSLionel Sambuc   bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
2188*0a6a1f1dSLionel Sambuc #define bfd_mach_xtensa        1
2189*0a6a1f1dSLionel Sambuc   bfd_arch_z80,
2190*0a6a1f1dSLionel Sambuc #define bfd_mach_z80strict      1 /* No undocumented opcodes.  */
2191*0a6a1f1dSLionel Sambuc #define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */
2192*0a6a1f1dSLionel Sambuc #define bfd_mach_z80full        7 /* All undocumented instructions.  */
2193*0a6a1f1dSLionel Sambuc #define bfd_mach_r800           11 /* R800: successor with multiplication.  */
2194*0a6a1f1dSLionel Sambuc   bfd_arch_lm32,      /* Lattice Mico32 */
2195*0a6a1f1dSLionel Sambuc #define bfd_mach_lm32      1
2196*0a6a1f1dSLionel Sambuc   bfd_arch_microblaze,/* Xilinx MicroBlaze. */
2197*0a6a1f1dSLionel Sambuc   bfd_arch_tilepro,   /* Tilera TILEPro */
2198*0a6a1f1dSLionel Sambuc   bfd_arch_tilegx, /* Tilera TILE-Gx */
2199*0a6a1f1dSLionel Sambuc #define bfd_mach_tilepro   1
2200*0a6a1f1dSLionel Sambuc #define bfd_mach_tilegx    1
2201*0a6a1f1dSLionel Sambuc #define bfd_mach_tilegx32  2
2202*0a6a1f1dSLionel Sambuc   bfd_arch_aarch64,   /* AArch64  */
2203*0a6a1f1dSLionel Sambuc #define bfd_mach_aarch64 0
2204*0a6a1f1dSLionel Sambuc   bfd_arch_last
2205*0a6a1f1dSLionel Sambuc   };
2206*0a6a1f1dSLionel Sambuc 
2207*0a6a1f1dSLionel Sambuc typedef struct bfd_arch_info
2208*0a6a1f1dSLionel Sambuc {
2209*0a6a1f1dSLionel Sambuc   int bits_per_word;
2210*0a6a1f1dSLionel Sambuc   int bits_per_address;
2211*0a6a1f1dSLionel Sambuc   int bits_per_byte;
2212*0a6a1f1dSLionel Sambuc   enum bfd_architecture arch;
2213*0a6a1f1dSLionel Sambuc   unsigned long mach;
2214*0a6a1f1dSLionel Sambuc   const char *arch_name;
2215*0a6a1f1dSLionel Sambuc   const char *printable_name;
2216*0a6a1f1dSLionel Sambuc   unsigned int section_align_power;
2217*0a6a1f1dSLionel Sambuc   /* TRUE if this is the default machine for the architecture.
2218*0a6a1f1dSLionel Sambuc      The default arch should be the first entry for an arch so that
2219*0a6a1f1dSLionel Sambuc      all the entries for that arch can be accessed via <<next>>.  */
2220*0a6a1f1dSLionel Sambuc   bfd_boolean the_default;
2221*0a6a1f1dSLionel Sambuc   const struct bfd_arch_info * (*compatible)
2222*0a6a1f1dSLionel Sambuc     (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
2223*0a6a1f1dSLionel Sambuc 
2224*0a6a1f1dSLionel Sambuc   bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
2225*0a6a1f1dSLionel Sambuc 
2226*0a6a1f1dSLionel Sambuc   /* Allocate via bfd_malloc and return a fill buffer of size COUNT.  If
2227*0a6a1f1dSLionel Sambuc      IS_BIGENDIAN is TRUE, the order of bytes is big endian.  If CODE is
2228*0a6a1f1dSLionel Sambuc      TRUE, the buffer contains code.  */
2229*0a6a1f1dSLionel Sambuc   void *(*fill) (bfd_size_type count, bfd_boolean is_bigendian,
2230*0a6a1f1dSLionel Sambuc                  bfd_boolean code);
2231*0a6a1f1dSLionel Sambuc 
2232*0a6a1f1dSLionel Sambuc   const struct bfd_arch_info *next;
2233*0a6a1f1dSLionel Sambuc }
2234*0a6a1f1dSLionel Sambuc bfd_arch_info_type;
2235*0a6a1f1dSLionel Sambuc 
2236*0a6a1f1dSLionel Sambuc const char *bfd_printable_name (bfd *abfd);
2237*0a6a1f1dSLionel Sambuc 
2238*0a6a1f1dSLionel Sambuc const bfd_arch_info_type *bfd_scan_arch (const char *string);
2239*0a6a1f1dSLionel Sambuc 
2240*0a6a1f1dSLionel Sambuc const char **bfd_arch_list (void);
2241*0a6a1f1dSLionel Sambuc 
2242*0a6a1f1dSLionel Sambuc const bfd_arch_info_type *bfd_arch_get_compatible
2243*0a6a1f1dSLionel Sambuc    (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
2244*0a6a1f1dSLionel Sambuc 
2245*0a6a1f1dSLionel Sambuc void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
2246*0a6a1f1dSLionel Sambuc 
2247*0a6a1f1dSLionel Sambuc enum bfd_architecture bfd_get_arch (bfd *abfd);
2248*0a6a1f1dSLionel Sambuc 
2249*0a6a1f1dSLionel Sambuc unsigned long bfd_get_mach (bfd *abfd);
2250*0a6a1f1dSLionel Sambuc 
2251*0a6a1f1dSLionel Sambuc unsigned int bfd_arch_bits_per_byte (bfd *abfd);
2252*0a6a1f1dSLionel Sambuc 
2253*0a6a1f1dSLionel Sambuc unsigned int bfd_arch_bits_per_address (bfd *abfd);
2254*0a6a1f1dSLionel Sambuc 
2255*0a6a1f1dSLionel Sambuc const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
2256*0a6a1f1dSLionel Sambuc 
2257*0a6a1f1dSLionel Sambuc const bfd_arch_info_type *bfd_lookup_arch
2258*0a6a1f1dSLionel Sambuc    (enum bfd_architecture arch, unsigned long machine);
2259*0a6a1f1dSLionel Sambuc 
2260*0a6a1f1dSLionel Sambuc const char *bfd_printable_arch_mach
2261*0a6a1f1dSLionel Sambuc    (enum bfd_architecture arch, unsigned long machine);
2262*0a6a1f1dSLionel Sambuc 
2263*0a6a1f1dSLionel Sambuc unsigned int bfd_octets_per_byte (bfd *abfd);
2264*0a6a1f1dSLionel Sambuc 
2265*0a6a1f1dSLionel Sambuc unsigned int bfd_arch_mach_octets_per_byte
2266*0a6a1f1dSLionel Sambuc    (enum bfd_architecture arch, unsigned long machine);
2267*0a6a1f1dSLionel Sambuc 
2268*0a6a1f1dSLionel Sambuc /* Extracted from reloc.c.  */
2269*0a6a1f1dSLionel Sambuc typedef enum bfd_reloc_status
2270*0a6a1f1dSLionel Sambuc {
2271*0a6a1f1dSLionel Sambuc   /* No errors detected.  */
2272*0a6a1f1dSLionel Sambuc   bfd_reloc_ok,
2273*0a6a1f1dSLionel Sambuc 
2274*0a6a1f1dSLionel Sambuc   /* The relocation was performed, but there was an overflow.  */
2275*0a6a1f1dSLionel Sambuc   bfd_reloc_overflow,
2276*0a6a1f1dSLionel Sambuc 
2277*0a6a1f1dSLionel Sambuc   /* The address to relocate was not within the section supplied.  */
2278*0a6a1f1dSLionel Sambuc   bfd_reloc_outofrange,
2279*0a6a1f1dSLionel Sambuc 
2280*0a6a1f1dSLionel Sambuc   /* Used by special functions.  */
2281*0a6a1f1dSLionel Sambuc   bfd_reloc_continue,
2282*0a6a1f1dSLionel Sambuc 
2283*0a6a1f1dSLionel Sambuc   /* Unsupported relocation size requested.  */
2284*0a6a1f1dSLionel Sambuc   bfd_reloc_notsupported,
2285*0a6a1f1dSLionel Sambuc 
2286*0a6a1f1dSLionel Sambuc   /* Unused.  */
2287*0a6a1f1dSLionel Sambuc   bfd_reloc_other,
2288*0a6a1f1dSLionel Sambuc 
2289*0a6a1f1dSLionel Sambuc   /* The symbol to relocate against was undefined.  */
2290*0a6a1f1dSLionel Sambuc   bfd_reloc_undefined,
2291*0a6a1f1dSLionel Sambuc 
2292*0a6a1f1dSLionel Sambuc   /* The relocation was performed, but may not be ok - presently
2293*0a6a1f1dSLionel Sambuc      generated only when linking i960 coff files with i960 b.out
2294*0a6a1f1dSLionel Sambuc      symbols.  If this type is returned, the error_message argument
2295*0a6a1f1dSLionel Sambuc      to bfd_perform_relocation will be set.  */
2296*0a6a1f1dSLionel Sambuc   bfd_reloc_dangerous
2297*0a6a1f1dSLionel Sambuc  }
2298*0a6a1f1dSLionel Sambuc  bfd_reloc_status_type;
2299*0a6a1f1dSLionel Sambuc 
2300*0a6a1f1dSLionel Sambuc 
2301*0a6a1f1dSLionel Sambuc typedef struct reloc_cache_entry
2302*0a6a1f1dSLionel Sambuc {
2303*0a6a1f1dSLionel Sambuc   /* A pointer into the canonical table of pointers.  */
2304*0a6a1f1dSLionel Sambuc   struct bfd_symbol **sym_ptr_ptr;
2305*0a6a1f1dSLionel Sambuc 
2306*0a6a1f1dSLionel Sambuc   /* offset in section.  */
2307*0a6a1f1dSLionel Sambuc   bfd_size_type address;
2308*0a6a1f1dSLionel Sambuc 
2309*0a6a1f1dSLionel Sambuc   /* addend for relocation value.  */
2310*0a6a1f1dSLionel Sambuc   bfd_vma addend;
2311*0a6a1f1dSLionel Sambuc 
2312*0a6a1f1dSLionel Sambuc   /* Pointer to how to perform the required relocation.  */
2313*0a6a1f1dSLionel Sambuc   reloc_howto_type *howto;
2314*0a6a1f1dSLionel Sambuc 
2315*0a6a1f1dSLionel Sambuc }
2316*0a6a1f1dSLionel Sambuc arelent;
2317*0a6a1f1dSLionel Sambuc 
2318*0a6a1f1dSLionel Sambuc enum complain_overflow
2319*0a6a1f1dSLionel Sambuc {
2320*0a6a1f1dSLionel Sambuc   /* Do not complain on overflow.  */
2321*0a6a1f1dSLionel Sambuc   complain_overflow_dont,
2322*0a6a1f1dSLionel Sambuc 
2323*0a6a1f1dSLionel Sambuc   /* Complain if the value overflows when considered as a signed
2324*0a6a1f1dSLionel Sambuc      number one bit larger than the field.  ie. A bitfield of N bits
2325*0a6a1f1dSLionel Sambuc      is allowed to represent -2**n to 2**n-1.  */
2326*0a6a1f1dSLionel Sambuc   complain_overflow_bitfield,
2327*0a6a1f1dSLionel Sambuc 
2328*0a6a1f1dSLionel Sambuc   /* Complain if the value overflows when considered as a signed
2329*0a6a1f1dSLionel Sambuc      number.  */
2330*0a6a1f1dSLionel Sambuc   complain_overflow_signed,
2331*0a6a1f1dSLionel Sambuc 
2332*0a6a1f1dSLionel Sambuc   /* Complain if the value overflows when considered as an
2333*0a6a1f1dSLionel Sambuc      unsigned number.  */
2334*0a6a1f1dSLionel Sambuc   complain_overflow_unsigned
2335*0a6a1f1dSLionel Sambuc };
2336*0a6a1f1dSLionel Sambuc 
2337*0a6a1f1dSLionel Sambuc struct reloc_howto_struct
2338*0a6a1f1dSLionel Sambuc {
2339*0a6a1f1dSLionel Sambuc   /*  The type field has mainly a documentary use - the back end can
2340*0a6a1f1dSLionel Sambuc       do what it wants with it, though normally the back end's
2341*0a6a1f1dSLionel Sambuc       external idea of what a reloc number is stored
2342*0a6a1f1dSLionel Sambuc       in this field.  For example, a PC relative word relocation
2343*0a6a1f1dSLionel Sambuc       in a coff environment has the type 023 - because that's
2344*0a6a1f1dSLionel Sambuc       what the outside world calls a R_PCRWORD reloc.  */
2345*0a6a1f1dSLionel Sambuc   unsigned int type;
2346*0a6a1f1dSLionel Sambuc 
2347*0a6a1f1dSLionel Sambuc   /*  The value the final relocation is shifted right by.  This drops
2348*0a6a1f1dSLionel Sambuc       unwanted data from the relocation.  */
2349*0a6a1f1dSLionel Sambuc   unsigned int rightshift;
2350*0a6a1f1dSLionel Sambuc 
2351*0a6a1f1dSLionel Sambuc   /*  The size of the item to be relocated.  This is *not* a
2352*0a6a1f1dSLionel Sambuc       power-of-two measure.  To get the number of bytes operated
2353*0a6a1f1dSLionel Sambuc       on by a type of relocation, use bfd_get_reloc_size.  */
2354*0a6a1f1dSLionel Sambuc   int size;
2355*0a6a1f1dSLionel Sambuc 
2356*0a6a1f1dSLionel Sambuc   /*  The number of bits in the item to be relocated.  This is used
2357*0a6a1f1dSLionel Sambuc       when doing overflow checking.  */
2358*0a6a1f1dSLionel Sambuc   unsigned int bitsize;
2359*0a6a1f1dSLionel Sambuc 
2360*0a6a1f1dSLionel Sambuc   /*  The relocation is relative to the field being relocated.  */
2361*0a6a1f1dSLionel Sambuc   bfd_boolean pc_relative;
2362*0a6a1f1dSLionel Sambuc 
2363*0a6a1f1dSLionel Sambuc   /*  The bit position of the reloc value in the destination.
2364*0a6a1f1dSLionel Sambuc       The relocated value is left shifted by this amount.  */
2365*0a6a1f1dSLionel Sambuc   unsigned int bitpos;
2366*0a6a1f1dSLionel Sambuc 
2367*0a6a1f1dSLionel Sambuc   /* What type of overflow error should be checked for when
2368*0a6a1f1dSLionel Sambuc      relocating.  */
2369*0a6a1f1dSLionel Sambuc   enum complain_overflow complain_on_overflow;
2370*0a6a1f1dSLionel Sambuc 
2371*0a6a1f1dSLionel Sambuc   /* If this field is non null, then the supplied function is
2372*0a6a1f1dSLionel Sambuc      called rather than the normal function.  This allows really
2373*0a6a1f1dSLionel Sambuc      strange relocation methods to be accommodated (e.g., i960 callj
2374*0a6a1f1dSLionel Sambuc      instructions).  */
2375*0a6a1f1dSLionel Sambuc   bfd_reloc_status_type (*special_function)
2376*0a6a1f1dSLionel Sambuc     (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
2377*0a6a1f1dSLionel Sambuc      bfd *, char **);
2378*0a6a1f1dSLionel Sambuc 
2379*0a6a1f1dSLionel Sambuc   /* The textual name of the relocation type.  */
2380*0a6a1f1dSLionel Sambuc   char *name;
2381*0a6a1f1dSLionel Sambuc 
2382*0a6a1f1dSLionel Sambuc   /* Some formats record a relocation addend in the section contents
2383*0a6a1f1dSLionel Sambuc      rather than with the relocation.  For ELF formats this is the
2384*0a6a1f1dSLionel Sambuc      distinction between USE_REL and USE_RELA (though the code checks
2385*0a6a1f1dSLionel Sambuc      for USE_REL == 1/0).  The value of this field is TRUE if the
2386*0a6a1f1dSLionel Sambuc      addend is recorded with the section contents; when performing a
2387*0a6a1f1dSLionel Sambuc      partial link (ld -r) the section contents (the data) will be
2388*0a6a1f1dSLionel Sambuc      modified.  The value of this field is FALSE if addends are
2389*0a6a1f1dSLionel Sambuc      recorded with the relocation (in arelent.addend); when performing
2390*0a6a1f1dSLionel Sambuc      a partial link the relocation will be modified.
2391*0a6a1f1dSLionel Sambuc      All relocations for all ELF USE_RELA targets should set this field
2392*0a6a1f1dSLionel Sambuc      to FALSE (values of TRUE should be looked on with suspicion).
2393*0a6a1f1dSLionel Sambuc      However, the converse is not true: not all relocations of all ELF
2394*0a6a1f1dSLionel Sambuc      USE_REL targets set this field to TRUE.  Why this is so is peculiar
2395*0a6a1f1dSLionel Sambuc      to each particular target.  For relocs that aren't used in partial
2396*0a6a1f1dSLionel Sambuc      links (e.g. GOT stuff) it doesn't matter what this is set to.  */
2397*0a6a1f1dSLionel Sambuc   bfd_boolean partial_inplace;
2398*0a6a1f1dSLionel Sambuc 
2399*0a6a1f1dSLionel Sambuc   /* src_mask selects the part of the instruction (or data) to be used
2400*0a6a1f1dSLionel Sambuc      in the relocation sum.  If the target relocations don't have an
2401*0a6a1f1dSLionel Sambuc      addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
2402*0a6a1f1dSLionel Sambuc      dst_mask to extract the addend from the section contents.  If
2403*0a6a1f1dSLionel Sambuc      relocations do have an addend in the reloc, eg. ELF USE_RELA, this
2404*0a6a1f1dSLionel Sambuc      field should be zero.  Non-zero values for ELF USE_RELA targets are
2405*0a6a1f1dSLionel Sambuc      bogus as in those cases the value in the dst_mask part of the
2406*0a6a1f1dSLionel Sambuc      section contents should be treated as garbage.  */
2407*0a6a1f1dSLionel Sambuc   bfd_vma src_mask;
2408*0a6a1f1dSLionel Sambuc 
2409*0a6a1f1dSLionel Sambuc   /* dst_mask selects which parts of the instruction (or data) are
2410*0a6a1f1dSLionel Sambuc      replaced with a relocated value.  */
2411*0a6a1f1dSLionel Sambuc   bfd_vma dst_mask;
2412*0a6a1f1dSLionel Sambuc 
2413*0a6a1f1dSLionel Sambuc   /* When some formats create PC relative instructions, they leave
2414*0a6a1f1dSLionel Sambuc      the value of the pc of the place being relocated in the offset
2415*0a6a1f1dSLionel Sambuc      slot of the instruction, so that a PC relative relocation can
2416*0a6a1f1dSLionel Sambuc      be made just by adding in an ordinary offset (e.g., sun3 a.out).
2417*0a6a1f1dSLionel Sambuc      Some formats leave the displacement part of an instruction
2418*0a6a1f1dSLionel Sambuc      empty (e.g., m88k bcs); this flag signals the fact.  */
2419*0a6a1f1dSLionel Sambuc   bfd_boolean pcrel_offset;
2420*0a6a1f1dSLionel Sambuc };
2421*0a6a1f1dSLionel Sambuc 
2422*0a6a1f1dSLionel Sambuc #define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
2423*0a6a1f1dSLionel Sambuc   { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
2424*0a6a1f1dSLionel Sambuc #define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
2425*0a6a1f1dSLionel Sambuc   HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
2426*0a6a1f1dSLionel Sambuc          NAME, FALSE, 0, 0, IN)
2427*0a6a1f1dSLionel Sambuc 
2428*0a6a1f1dSLionel Sambuc #define EMPTY_HOWTO(C) \
2429*0a6a1f1dSLionel Sambuc   HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
2430*0a6a1f1dSLionel Sambuc          NULL, FALSE, 0, 0, FALSE)
2431*0a6a1f1dSLionel Sambuc 
2432*0a6a1f1dSLionel Sambuc #define HOWTO_PREPARE(relocation, symbol)               \
2433*0a6a1f1dSLionel Sambuc   {                                                     \
2434*0a6a1f1dSLionel Sambuc     if (symbol != NULL)                                 \
2435*0a6a1f1dSLionel Sambuc       {                                                 \
2436*0a6a1f1dSLionel Sambuc         if (bfd_is_com_section (symbol->section))       \
2437*0a6a1f1dSLionel Sambuc           {                                             \
2438*0a6a1f1dSLionel Sambuc             relocation = 0;                             \
2439*0a6a1f1dSLionel Sambuc           }                                             \
2440*0a6a1f1dSLionel Sambuc         else                                            \
2441*0a6a1f1dSLionel Sambuc           {                                             \
2442*0a6a1f1dSLionel Sambuc             relocation = symbol->value;                 \
2443*0a6a1f1dSLionel Sambuc           }                                             \
2444*0a6a1f1dSLionel Sambuc       }                                                 \
2445*0a6a1f1dSLionel Sambuc   }
2446*0a6a1f1dSLionel Sambuc 
2447*0a6a1f1dSLionel Sambuc unsigned int bfd_get_reloc_size (reloc_howto_type *);
2448*0a6a1f1dSLionel Sambuc 
2449*0a6a1f1dSLionel Sambuc typedef struct relent_chain
2450*0a6a1f1dSLionel Sambuc {
2451*0a6a1f1dSLionel Sambuc   arelent relent;
2452*0a6a1f1dSLionel Sambuc   struct relent_chain *next;
2453*0a6a1f1dSLionel Sambuc }
2454*0a6a1f1dSLionel Sambuc arelent_chain;
2455*0a6a1f1dSLionel Sambuc 
2456*0a6a1f1dSLionel Sambuc bfd_reloc_status_type bfd_check_overflow
2457*0a6a1f1dSLionel Sambuc    (enum complain_overflow how,
2458*0a6a1f1dSLionel Sambuc     unsigned int bitsize,
2459*0a6a1f1dSLionel Sambuc     unsigned int rightshift,
2460*0a6a1f1dSLionel Sambuc     unsigned int addrsize,
2461*0a6a1f1dSLionel Sambuc     bfd_vma relocation);
2462*0a6a1f1dSLionel Sambuc 
2463*0a6a1f1dSLionel Sambuc bfd_reloc_status_type bfd_perform_relocation
2464*0a6a1f1dSLionel Sambuc    (bfd *abfd,
2465*0a6a1f1dSLionel Sambuc     arelent *reloc_entry,
2466*0a6a1f1dSLionel Sambuc     void *data,
2467*0a6a1f1dSLionel Sambuc     asection *input_section,
2468*0a6a1f1dSLionel Sambuc     bfd *output_bfd,
2469*0a6a1f1dSLionel Sambuc     char **error_message);
2470*0a6a1f1dSLionel Sambuc 
2471*0a6a1f1dSLionel Sambuc bfd_reloc_status_type bfd_install_relocation
2472*0a6a1f1dSLionel Sambuc    (bfd *abfd,
2473*0a6a1f1dSLionel Sambuc     arelent *reloc_entry,
2474*0a6a1f1dSLionel Sambuc     void *data, bfd_vma data_start,
2475*0a6a1f1dSLionel Sambuc     asection *input_section,
2476*0a6a1f1dSLionel Sambuc     char **error_message);
2477*0a6a1f1dSLionel Sambuc 
2478*0a6a1f1dSLionel Sambuc enum bfd_reloc_code_real {
2479*0a6a1f1dSLionel Sambuc   _dummy_first_bfd_reloc_code_real,
2480*0a6a1f1dSLionel Sambuc 
2481*0a6a1f1dSLionel Sambuc 
2482*0a6a1f1dSLionel Sambuc /* Basic absolute relocations of N bits.  */
2483*0a6a1f1dSLionel Sambuc   BFD_RELOC_64,
2484*0a6a1f1dSLionel Sambuc   BFD_RELOC_32,
2485*0a6a1f1dSLionel Sambuc   BFD_RELOC_26,
2486*0a6a1f1dSLionel Sambuc   BFD_RELOC_24,
2487*0a6a1f1dSLionel Sambuc   BFD_RELOC_16,
2488*0a6a1f1dSLionel Sambuc   BFD_RELOC_14,
2489*0a6a1f1dSLionel Sambuc   BFD_RELOC_8,
2490*0a6a1f1dSLionel Sambuc 
2491*0a6a1f1dSLionel Sambuc /* PC-relative relocations.  Sometimes these are relative to the address
2492*0a6a1f1dSLionel Sambuc of the relocation itself; sometimes they are relative to the start of
2493*0a6a1f1dSLionel Sambuc the section containing the relocation.  It depends on the specific target.
2494*0a6a1f1dSLionel Sambuc 
2495*0a6a1f1dSLionel Sambuc The 24-bit relocation is used in some Intel 960 configurations.  */
2496*0a6a1f1dSLionel Sambuc   BFD_RELOC_64_PCREL,
2497*0a6a1f1dSLionel Sambuc   BFD_RELOC_32_PCREL,
2498*0a6a1f1dSLionel Sambuc   BFD_RELOC_24_PCREL,
2499*0a6a1f1dSLionel Sambuc   BFD_RELOC_16_PCREL,
2500*0a6a1f1dSLionel Sambuc   BFD_RELOC_12_PCREL,
2501*0a6a1f1dSLionel Sambuc   BFD_RELOC_8_PCREL,
2502*0a6a1f1dSLionel Sambuc 
2503*0a6a1f1dSLionel Sambuc /* Section relative relocations.  Some targets need this for DWARF2.  */
2504*0a6a1f1dSLionel Sambuc   BFD_RELOC_32_SECREL,
2505*0a6a1f1dSLionel Sambuc 
2506*0a6a1f1dSLionel Sambuc /* For ELF.  */
2507*0a6a1f1dSLionel Sambuc   BFD_RELOC_32_GOT_PCREL,
2508*0a6a1f1dSLionel Sambuc   BFD_RELOC_16_GOT_PCREL,
2509*0a6a1f1dSLionel Sambuc   BFD_RELOC_8_GOT_PCREL,
2510*0a6a1f1dSLionel Sambuc   BFD_RELOC_32_GOTOFF,
2511*0a6a1f1dSLionel Sambuc   BFD_RELOC_16_GOTOFF,
2512*0a6a1f1dSLionel Sambuc   BFD_RELOC_LO16_GOTOFF,
2513*0a6a1f1dSLionel Sambuc   BFD_RELOC_HI16_GOTOFF,
2514*0a6a1f1dSLionel Sambuc   BFD_RELOC_HI16_S_GOTOFF,
2515*0a6a1f1dSLionel Sambuc   BFD_RELOC_8_GOTOFF,
2516*0a6a1f1dSLionel Sambuc   BFD_RELOC_64_PLT_PCREL,
2517*0a6a1f1dSLionel Sambuc   BFD_RELOC_32_PLT_PCREL,
2518*0a6a1f1dSLionel Sambuc   BFD_RELOC_24_PLT_PCREL,
2519*0a6a1f1dSLionel Sambuc   BFD_RELOC_16_PLT_PCREL,
2520*0a6a1f1dSLionel Sambuc   BFD_RELOC_8_PLT_PCREL,
2521*0a6a1f1dSLionel Sambuc   BFD_RELOC_64_PLTOFF,
2522*0a6a1f1dSLionel Sambuc   BFD_RELOC_32_PLTOFF,
2523*0a6a1f1dSLionel Sambuc   BFD_RELOC_16_PLTOFF,
2524*0a6a1f1dSLionel Sambuc   BFD_RELOC_LO16_PLTOFF,
2525*0a6a1f1dSLionel Sambuc   BFD_RELOC_HI16_PLTOFF,
2526*0a6a1f1dSLionel Sambuc   BFD_RELOC_HI16_S_PLTOFF,
2527*0a6a1f1dSLionel Sambuc   BFD_RELOC_8_PLTOFF,
2528*0a6a1f1dSLionel Sambuc 
2529*0a6a1f1dSLionel Sambuc /* Relocations used by 68K ELF.  */
2530*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_GLOB_DAT,
2531*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_JMP_SLOT,
2532*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_RELATIVE,
2533*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_TLS_GD32,
2534*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_TLS_GD16,
2535*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_TLS_GD8,
2536*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_TLS_LDM32,
2537*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_TLS_LDM16,
2538*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_TLS_LDM8,
2539*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_TLS_LDO32,
2540*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_TLS_LDO16,
2541*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_TLS_LDO8,
2542*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_TLS_IE32,
2543*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_TLS_IE16,
2544*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_TLS_IE8,
2545*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_TLS_LE32,
2546*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_TLS_LE16,
2547*0a6a1f1dSLionel Sambuc   BFD_RELOC_68K_TLS_LE8,
2548*0a6a1f1dSLionel Sambuc 
2549*0a6a1f1dSLionel Sambuc /* Linkage-table relative.  */
2550*0a6a1f1dSLionel Sambuc   BFD_RELOC_32_BASEREL,
2551*0a6a1f1dSLionel Sambuc   BFD_RELOC_16_BASEREL,
2552*0a6a1f1dSLionel Sambuc   BFD_RELOC_LO16_BASEREL,
2553*0a6a1f1dSLionel Sambuc   BFD_RELOC_HI16_BASEREL,
2554*0a6a1f1dSLionel Sambuc   BFD_RELOC_HI16_S_BASEREL,
2555*0a6a1f1dSLionel Sambuc   BFD_RELOC_8_BASEREL,
2556*0a6a1f1dSLionel Sambuc   BFD_RELOC_RVA,
2557*0a6a1f1dSLionel Sambuc 
2558*0a6a1f1dSLionel Sambuc /* Absolute 8-bit relocation, but used to form an address like 0xFFnn.  */
2559*0a6a1f1dSLionel Sambuc   BFD_RELOC_8_FFnn,
2560*0a6a1f1dSLionel Sambuc 
2561*0a6a1f1dSLionel Sambuc /* These PC-relative relocations are stored as word displacements --
2562*0a6a1f1dSLionel Sambuc i.e., byte displacements shifted right two bits.  The 30-bit word
2563*0a6a1f1dSLionel Sambuc displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
2564*0a6a1f1dSLionel Sambuc SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
2565*0a6a1f1dSLionel Sambuc signed 16-bit displacement is used on the MIPS, and the 23-bit
2566*0a6a1f1dSLionel Sambuc displacement is used on the Alpha.  */
2567*0a6a1f1dSLionel Sambuc   BFD_RELOC_32_PCREL_S2,
2568*0a6a1f1dSLionel Sambuc   BFD_RELOC_16_PCREL_S2,
2569*0a6a1f1dSLionel Sambuc   BFD_RELOC_23_PCREL_S2,
2570*0a6a1f1dSLionel Sambuc 
2571*0a6a1f1dSLionel Sambuc /* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
2572*0a6a1f1dSLionel Sambuc the target word.  These are used on the SPARC.  */
2573*0a6a1f1dSLionel Sambuc   BFD_RELOC_HI22,
2574*0a6a1f1dSLionel Sambuc   BFD_RELOC_LO10,
2575*0a6a1f1dSLionel Sambuc 
2576*0a6a1f1dSLionel Sambuc /* For systems that allocate a Global Pointer register, these are
2577*0a6a1f1dSLionel Sambuc displacements off that register.  These relocation types are
2578*0a6a1f1dSLionel Sambuc handled specially, because the value the register will have is
2579*0a6a1f1dSLionel Sambuc decided relatively late.  */
2580*0a6a1f1dSLionel Sambuc   BFD_RELOC_GPREL16,
2581*0a6a1f1dSLionel Sambuc   BFD_RELOC_GPREL32,
2582*0a6a1f1dSLionel Sambuc 
2583*0a6a1f1dSLionel Sambuc /* Reloc types used for i960/b.out.  */
2584*0a6a1f1dSLionel Sambuc   BFD_RELOC_I960_CALLJ,
2585*0a6a1f1dSLionel Sambuc 
2586*0a6a1f1dSLionel Sambuc /* SPARC ELF relocations.  There is probably some overlap with other
2587*0a6a1f1dSLionel Sambuc relocation types already defined.  */
2588*0a6a1f1dSLionel Sambuc   BFD_RELOC_NONE,
2589*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_WDISP22,
2590*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC22,
2591*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC13,
2592*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_GOT10,
2593*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_GOT13,
2594*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_GOT22,
2595*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_PC10,
2596*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_PC22,
2597*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_WPLT30,
2598*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_COPY,
2599*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_GLOB_DAT,
2600*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_JMP_SLOT,
2601*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_RELATIVE,
2602*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_UA16,
2603*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_UA32,
2604*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_UA64,
2605*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_GOTDATA_HIX22,
2606*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_GOTDATA_LOX10,
2607*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_GOTDATA_OP_HIX22,
2608*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_GOTDATA_OP_LOX10,
2609*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_GOTDATA_OP,
2610*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_JMP_IREL,
2611*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_IRELATIVE,
2612*0a6a1f1dSLionel Sambuc 
2613*0a6a1f1dSLionel Sambuc /* I think these are specific to SPARC a.out (e.g., Sun 4).  */
2614*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_BASE13,
2615*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_BASE22,
2616*0a6a1f1dSLionel Sambuc 
2617*0a6a1f1dSLionel Sambuc /* SPARC64 relocations  */
2618*0a6a1f1dSLionel Sambuc #define BFD_RELOC_SPARC_64 BFD_RELOC_64
2619*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_10,
2620*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_11,
2621*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_OLO10,
2622*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_HH22,
2623*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_HM10,
2624*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_LM22,
2625*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_PC_HH22,
2626*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_PC_HM10,
2627*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_PC_LM22,
2628*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_WDISP16,
2629*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_WDISP19,
2630*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_7,
2631*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_6,
2632*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_5,
2633*0a6a1f1dSLionel Sambuc #define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
2634*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_PLT32,
2635*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_PLT64,
2636*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_HIX22,
2637*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_LOX10,
2638*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_H44,
2639*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_M44,
2640*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_L44,
2641*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_REGISTER,
2642*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_H34,
2643*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_SIZE32,
2644*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_SIZE64,
2645*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_WDISP10,
2646*0a6a1f1dSLionel Sambuc 
2647*0a6a1f1dSLionel Sambuc /* SPARC little endian relocation  */
2648*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_REV32,
2649*0a6a1f1dSLionel Sambuc 
2650*0a6a1f1dSLionel Sambuc /* SPARC TLS relocations  */
2651*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_GD_HI22,
2652*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_GD_LO10,
2653*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_GD_ADD,
2654*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_GD_CALL,
2655*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_LDM_HI22,
2656*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_LDM_LO10,
2657*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_LDM_ADD,
2658*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_LDM_CALL,
2659*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_LDO_HIX22,
2660*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_LDO_LOX10,
2661*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_LDO_ADD,
2662*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_IE_HI22,
2663*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_IE_LO10,
2664*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_IE_LD,
2665*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_IE_LDX,
2666*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_IE_ADD,
2667*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_LE_HIX22,
2668*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_LE_LOX10,
2669*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_DTPMOD32,
2670*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_DTPMOD64,
2671*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_DTPOFF32,
2672*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_DTPOFF64,
2673*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_TPOFF32,
2674*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPARC_TLS_TPOFF64,
2675*0a6a1f1dSLionel Sambuc 
2676*0a6a1f1dSLionel Sambuc /* SPU Relocations.  */
2677*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPU_IMM7,
2678*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPU_IMM8,
2679*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPU_IMM10,
2680*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPU_IMM10W,
2681*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPU_IMM16,
2682*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPU_IMM16W,
2683*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPU_IMM18,
2684*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPU_PCREL9a,
2685*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPU_PCREL9b,
2686*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPU_PCREL16,
2687*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPU_LO16,
2688*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPU_HI16,
2689*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPU_PPU32,
2690*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPU_PPU64,
2691*0a6a1f1dSLionel Sambuc   BFD_RELOC_SPU_ADD_PIC,
2692*0a6a1f1dSLionel Sambuc 
2693*0a6a1f1dSLionel Sambuc /* Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
2694*0a6a1f1dSLionel Sambuc "addend" in some special way.
2695*0a6a1f1dSLionel Sambuc For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
2696*0a6a1f1dSLionel Sambuc writing; when reading, it will be the absolute section symbol.  The
2697*0a6a1f1dSLionel Sambuc addend is the displacement in bytes of the "lda" instruction from
2698*0a6a1f1dSLionel Sambuc the "ldah" instruction (which is at the address of this reloc).  */
2699*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_GPDISP_HI16,
2700*0a6a1f1dSLionel Sambuc 
2701*0a6a1f1dSLionel Sambuc /* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
2702*0a6a1f1dSLionel Sambuc with GPDISP_HI16 relocs.  The addend is ignored when writing the
2703*0a6a1f1dSLionel Sambuc relocations out, and is filled in with the file's GP value on
2704*0a6a1f1dSLionel Sambuc reading, for convenience.  */
2705*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_GPDISP_LO16,
2706*0a6a1f1dSLionel Sambuc 
2707*0a6a1f1dSLionel Sambuc /* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
2708*0a6a1f1dSLionel Sambuc relocation except that there is no accompanying GPDISP_LO16
2709*0a6a1f1dSLionel Sambuc relocation.  */
2710*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_GPDISP,
2711*0a6a1f1dSLionel Sambuc 
2712*0a6a1f1dSLionel Sambuc /* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
2713*0a6a1f1dSLionel Sambuc the assembler turns it into a LDQ instruction to load the address of
2714*0a6a1f1dSLionel Sambuc the symbol, and then fills in a register in the real instruction.
2715*0a6a1f1dSLionel Sambuc 
2716*0a6a1f1dSLionel Sambuc The LITERAL reloc, at the LDQ instruction, refers to the .lita
2717*0a6a1f1dSLionel Sambuc section symbol.  The addend is ignored when writing, but is filled
2718*0a6a1f1dSLionel Sambuc in with the file's GP value on reading, for convenience, as with the
2719*0a6a1f1dSLionel Sambuc GPDISP_LO16 reloc.
2720*0a6a1f1dSLionel Sambuc 
2721*0a6a1f1dSLionel Sambuc The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
2722*0a6a1f1dSLionel Sambuc It should refer to the symbol to be referenced, as with 16_GOTOFF,
2723*0a6a1f1dSLionel Sambuc but it generates output not based on the position within the .got
2724*0a6a1f1dSLionel Sambuc section, but relative to the GP value chosen for the file during the
2725*0a6a1f1dSLionel Sambuc final link stage.
2726*0a6a1f1dSLionel Sambuc 
2727*0a6a1f1dSLionel Sambuc The LITUSE reloc, on the instruction using the loaded address, gives
2728*0a6a1f1dSLionel Sambuc information to the linker that it might be able to use to optimize
2729*0a6a1f1dSLionel Sambuc away some literal section references.  The symbol is ignored (read
2730*0a6a1f1dSLionel Sambuc as the absolute section symbol), and the "addend" indicates the type
2731*0a6a1f1dSLionel Sambuc of instruction using the register:
2732*0a6a1f1dSLionel Sambuc 1 - "memory" fmt insn
2733*0a6a1f1dSLionel Sambuc 2 - byte-manipulation (byte offset reg)
2734*0a6a1f1dSLionel Sambuc 3 - jsr (target of branch)  */
2735*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_LITERAL,
2736*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_ELF_LITERAL,
2737*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_LITUSE,
2738*0a6a1f1dSLionel Sambuc 
2739*0a6a1f1dSLionel Sambuc /* The HINT relocation indicates a value that should be filled into the
2740*0a6a1f1dSLionel Sambuc "hint" field of a jmp/jsr/ret instruction, for possible branch-
2741*0a6a1f1dSLionel Sambuc prediction logic which may be provided on some processors.  */
2742*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_HINT,
2743*0a6a1f1dSLionel Sambuc 
2744*0a6a1f1dSLionel Sambuc /* The LINKAGE relocation outputs a linkage pair in the object file,
2745*0a6a1f1dSLionel Sambuc which is filled by the linker.  */
2746*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_LINKAGE,
2747*0a6a1f1dSLionel Sambuc 
2748*0a6a1f1dSLionel Sambuc /* The CODEADDR relocation outputs a STO_CA in the object file,
2749*0a6a1f1dSLionel Sambuc which is filled by the linker.  */
2750*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_CODEADDR,
2751*0a6a1f1dSLionel Sambuc 
2752*0a6a1f1dSLionel Sambuc /* The GPREL_HI/LO relocations together form a 32-bit offset from the
2753*0a6a1f1dSLionel Sambuc GP register.  */
2754*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_GPREL_HI16,
2755*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_GPREL_LO16,
2756*0a6a1f1dSLionel Sambuc 
2757*0a6a1f1dSLionel Sambuc /* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
2758*0a6a1f1dSLionel Sambuc share a common GP, and the target address is adjusted for
2759*0a6a1f1dSLionel Sambuc STO_ALPHA_STD_GPLOAD.  */
2760*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_BRSGP,
2761*0a6a1f1dSLionel Sambuc 
2762*0a6a1f1dSLionel Sambuc /* The NOP relocation outputs a NOP if the longword displacement
2763*0a6a1f1dSLionel Sambuc between two procedure entry points is < 2^21.  */
2764*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_NOP,
2765*0a6a1f1dSLionel Sambuc 
2766*0a6a1f1dSLionel Sambuc /* The BSR relocation outputs a BSR if the longword displacement
2767*0a6a1f1dSLionel Sambuc between two procedure entry points is < 2^21.  */
2768*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_BSR,
2769*0a6a1f1dSLionel Sambuc 
2770*0a6a1f1dSLionel Sambuc /* The LDA relocation outputs a LDA if the longword displacement
2771*0a6a1f1dSLionel Sambuc between two procedure entry points is < 2^16.  */
2772*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_LDA,
2773*0a6a1f1dSLionel Sambuc 
2774*0a6a1f1dSLionel Sambuc /* The BOH relocation outputs a BSR if the longword displacement
2775*0a6a1f1dSLionel Sambuc between two procedure entry points is < 2^21, or else a hint.  */
2776*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_BOH,
2777*0a6a1f1dSLionel Sambuc 
2778*0a6a1f1dSLionel Sambuc /* Alpha thread-local storage relocations.  */
2779*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_TLSGD,
2780*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_TLSLDM,
2781*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_DTPMOD64,
2782*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_GOTDTPREL16,
2783*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_DTPREL64,
2784*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_DTPREL_HI16,
2785*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_DTPREL_LO16,
2786*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_DTPREL16,
2787*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_GOTTPREL16,
2788*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_TPREL64,
2789*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_TPREL_HI16,
2790*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_TPREL_LO16,
2791*0a6a1f1dSLionel Sambuc   BFD_RELOC_ALPHA_TPREL16,
2792*0a6a1f1dSLionel Sambuc 
2793*0a6a1f1dSLionel Sambuc /* The MIPS jump instruction.  */
2794*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_JMP,
2795*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_JMP,
2796*0a6a1f1dSLionel Sambuc 
2797*0a6a1f1dSLionel Sambuc /* The MIPS16 jump instruction.  */
2798*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS16_JMP,
2799*0a6a1f1dSLionel Sambuc 
2800*0a6a1f1dSLionel Sambuc /* MIPS16 GP relative reloc.  */
2801*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS16_GPREL,
2802*0a6a1f1dSLionel Sambuc 
2803*0a6a1f1dSLionel Sambuc /* High 16 bits of 32-bit value; simple reloc.  */
2804*0a6a1f1dSLionel Sambuc   BFD_RELOC_HI16,
2805*0a6a1f1dSLionel Sambuc 
2806*0a6a1f1dSLionel Sambuc /* High 16 bits of 32-bit value but the low 16 bits will be sign
2807*0a6a1f1dSLionel Sambuc extended and added to form the final result.  If the low 16
2808*0a6a1f1dSLionel Sambuc bits form a negative number, we need to add one to the high value
2809*0a6a1f1dSLionel Sambuc to compensate for the borrow when the low bits are added.  */
2810*0a6a1f1dSLionel Sambuc   BFD_RELOC_HI16_S,
2811*0a6a1f1dSLionel Sambuc 
2812*0a6a1f1dSLionel Sambuc /* Low 16 bits.  */
2813*0a6a1f1dSLionel Sambuc   BFD_RELOC_LO16,
2814*0a6a1f1dSLionel Sambuc 
2815*0a6a1f1dSLionel Sambuc /* High 16 bits of 32-bit pc-relative value  */
2816*0a6a1f1dSLionel Sambuc   BFD_RELOC_HI16_PCREL,
2817*0a6a1f1dSLionel Sambuc 
2818*0a6a1f1dSLionel Sambuc /* High 16 bits of 32-bit pc-relative value, adjusted  */
2819*0a6a1f1dSLionel Sambuc   BFD_RELOC_HI16_S_PCREL,
2820*0a6a1f1dSLionel Sambuc 
2821*0a6a1f1dSLionel Sambuc /* Low 16 bits of pc-relative value  */
2822*0a6a1f1dSLionel Sambuc   BFD_RELOC_LO16_PCREL,
2823*0a6a1f1dSLionel Sambuc 
2824*0a6a1f1dSLionel Sambuc /* Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
2825*0a6a1f1dSLionel Sambuc 16-bit immediate fields  */
2826*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS16_GOT16,
2827*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS16_CALL16,
2828*0a6a1f1dSLionel Sambuc 
2829*0a6a1f1dSLionel Sambuc /* MIPS16 high 16 bits of 32-bit value.  */
2830*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS16_HI16,
2831*0a6a1f1dSLionel Sambuc 
2832*0a6a1f1dSLionel Sambuc /* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
2833*0a6a1f1dSLionel Sambuc extended and added to form the final result.  If the low 16
2834*0a6a1f1dSLionel Sambuc bits form a negative number, we need to add one to the high value
2835*0a6a1f1dSLionel Sambuc to compensate for the borrow when the low bits are added.  */
2836*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS16_HI16_S,
2837*0a6a1f1dSLionel Sambuc 
2838*0a6a1f1dSLionel Sambuc /* MIPS16 low 16 bits.  */
2839*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS16_LO16,
2840*0a6a1f1dSLionel Sambuc 
2841*0a6a1f1dSLionel Sambuc /* MIPS16 TLS relocations  */
2842*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS16_TLS_GD,
2843*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS16_TLS_LDM,
2844*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS16_TLS_DTPREL_HI16,
2845*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS16_TLS_DTPREL_LO16,
2846*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS16_TLS_GOTTPREL,
2847*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS16_TLS_TPREL_HI16,
2848*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS16_TLS_TPREL_LO16,
2849*0a6a1f1dSLionel Sambuc 
2850*0a6a1f1dSLionel Sambuc /* Relocation against a MIPS literal section.  */
2851*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_LITERAL,
2852*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_LITERAL,
2853*0a6a1f1dSLionel Sambuc 
2854*0a6a1f1dSLionel Sambuc /* microMIPS PC-relative relocations.  */
2855*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_7_PCREL_S1,
2856*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_10_PCREL_S1,
2857*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_16_PCREL_S1,
2858*0a6a1f1dSLionel Sambuc 
2859*0a6a1f1dSLionel Sambuc /* microMIPS versions of generic BFD relocs.  */
2860*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_GPREL16,
2861*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_HI16,
2862*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_HI16_S,
2863*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_LO16,
2864*0a6a1f1dSLionel Sambuc 
2865*0a6a1f1dSLionel Sambuc /* MIPS ELF relocations.  */
2866*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_GOT16,
2867*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_GOT16,
2868*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_CALL16,
2869*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_CALL16,
2870*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_GOT_HI16,
2871*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_GOT_HI16,
2872*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_GOT_LO16,
2873*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_GOT_LO16,
2874*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_CALL_HI16,
2875*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_CALL_HI16,
2876*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_CALL_LO16,
2877*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_CALL_LO16,
2878*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_SUB,
2879*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_SUB,
2880*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_GOT_PAGE,
2881*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_GOT_PAGE,
2882*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_GOT_OFST,
2883*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_GOT_OFST,
2884*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_GOT_DISP,
2885*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_GOT_DISP,
2886*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_SHIFT5,
2887*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_SHIFT6,
2888*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_INSERT_A,
2889*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_INSERT_B,
2890*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_DELETE,
2891*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_HIGHEST,
2892*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_HIGHEST,
2893*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_HIGHER,
2894*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_HIGHER,
2895*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_SCN_DISP,
2896*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_SCN_DISP,
2897*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_REL16,
2898*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_RELGOT,
2899*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_JALR,
2900*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_JALR,
2901*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_TLS_DTPMOD32,
2902*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_TLS_DTPREL32,
2903*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_TLS_DTPMOD64,
2904*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_TLS_DTPREL64,
2905*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_TLS_GD,
2906*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_TLS_GD,
2907*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_TLS_LDM,
2908*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_TLS_LDM,
2909*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_TLS_DTPREL_HI16,
2910*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16,
2911*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_TLS_DTPREL_LO16,
2912*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16,
2913*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_TLS_GOTTPREL,
2914*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_TLS_GOTTPREL,
2915*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_TLS_TPREL32,
2916*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_TLS_TPREL64,
2917*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_TLS_TPREL_HI16,
2918*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_TLS_TPREL_HI16,
2919*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_TLS_TPREL_LO16,
2920*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROMIPS_TLS_TPREL_LO16,
2921*0a6a1f1dSLionel Sambuc 
2922*0a6a1f1dSLionel Sambuc 
2923*0a6a1f1dSLionel Sambuc /* MIPS ELF relocations (VxWorks and PLT extensions).  */
2924*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_COPY,
2925*0a6a1f1dSLionel Sambuc   BFD_RELOC_MIPS_JUMP_SLOT,
2926*0a6a1f1dSLionel Sambuc 
2927*0a6a1f1dSLionel Sambuc 
2928*0a6a1f1dSLionel Sambuc /* Moxie ELF relocations.  */
2929*0a6a1f1dSLionel Sambuc   BFD_RELOC_MOXIE_10_PCREL,
2930*0a6a1f1dSLionel Sambuc 
2931*0a6a1f1dSLionel Sambuc 
2932*0a6a1f1dSLionel Sambuc /* Fujitsu Frv Relocations.  */
2933*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_LABEL16,
2934*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_LABEL24,
2935*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_LO16,
2936*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_HI16,
2937*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GPREL12,
2938*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GPRELU12,
2939*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GPREL32,
2940*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GPRELHI,
2941*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GPRELLO,
2942*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GOT12,
2943*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GOTHI,
2944*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GOTLO,
2945*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_FUNCDESC,
2946*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_FUNCDESC_GOT12,
2947*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_FUNCDESC_GOTHI,
2948*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_FUNCDESC_GOTLO,
2949*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_FUNCDESC_VALUE,
2950*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
2951*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
2952*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
2953*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GOTOFF12,
2954*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GOTOFFHI,
2955*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GOTOFFLO,
2956*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GETTLSOFF,
2957*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_TLSDESC_VALUE,
2958*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GOTTLSDESC12,
2959*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GOTTLSDESCHI,
2960*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GOTTLSDESCLO,
2961*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_TLSMOFF12,
2962*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_TLSMOFFHI,
2963*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_TLSMOFFLO,
2964*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GOTTLSOFF12,
2965*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GOTTLSOFFHI,
2966*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GOTTLSOFFLO,
2967*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_TLSOFF,
2968*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_TLSDESC_RELAX,
2969*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_GETTLSOFF_RELAX,
2970*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_TLSOFF_RELAX,
2971*0a6a1f1dSLionel Sambuc   BFD_RELOC_FRV_TLSMOFF,
2972*0a6a1f1dSLionel Sambuc 
2973*0a6a1f1dSLionel Sambuc 
2974*0a6a1f1dSLionel Sambuc /* This is a 24bit GOT-relative reloc for the mn10300.  */
2975*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_GOTOFF24,
2976*0a6a1f1dSLionel Sambuc 
2977*0a6a1f1dSLionel Sambuc /* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
2978*0a6a1f1dSLionel Sambuc in the instruction.  */
2979*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_GOT32,
2980*0a6a1f1dSLionel Sambuc 
2981*0a6a1f1dSLionel Sambuc /* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
2982*0a6a1f1dSLionel Sambuc in the instruction.  */
2983*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_GOT24,
2984*0a6a1f1dSLionel Sambuc 
2985*0a6a1f1dSLionel Sambuc /* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
2986*0a6a1f1dSLionel Sambuc in the instruction.  */
2987*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_GOT16,
2988*0a6a1f1dSLionel Sambuc 
2989*0a6a1f1dSLionel Sambuc /* Copy symbol at runtime.  */
2990*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_COPY,
2991*0a6a1f1dSLionel Sambuc 
2992*0a6a1f1dSLionel Sambuc /* Create GOT entry.  */
2993*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_GLOB_DAT,
2994*0a6a1f1dSLionel Sambuc 
2995*0a6a1f1dSLionel Sambuc /* Create PLT entry.  */
2996*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_JMP_SLOT,
2997*0a6a1f1dSLionel Sambuc 
2998*0a6a1f1dSLionel Sambuc /* Adjust by program base.  */
2999*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_RELATIVE,
3000*0a6a1f1dSLionel Sambuc 
3001*0a6a1f1dSLionel Sambuc /* Together with another reloc targeted at the same location,
3002*0a6a1f1dSLionel Sambuc allows for a value that is the difference of two symbols
3003*0a6a1f1dSLionel Sambuc in the same section.  */
3004*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_SYM_DIFF,
3005*0a6a1f1dSLionel Sambuc 
3006*0a6a1f1dSLionel Sambuc /* The addend of this reloc is an alignment power that must
3007*0a6a1f1dSLionel Sambuc be honoured at the offset's location, regardless of linker
3008*0a6a1f1dSLionel Sambuc relaxation.  */
3009*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_ALIGN,
3010*0a6a1f1dSLionel Sambuc 
3011*0a6a1f1dSLionel Sambuc /* Various TLS-related relocations.  */
3012*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_TLS_GD,
3013*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_TLS_LD,
3014*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_TLS_LDO,
3015*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_TLS_GOTIE,
3016*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_TLS_IE,
3017*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_TLS_LE,
3018*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_TLS_DTPMOD,
3019*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_TLS_DTPOFF,
3020*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_TLS_TPOFF,
3021*0a6a1f1dSLionel Sambuc 
3022*0a6a1f1dSLionel Sambuc /* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
3023*0a6a1f1dSLionel Sambuc instruction.  */
3024*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_32_PCREL,
3025*0a6a1f1dSLionel Sambuc 
3026*0a6a1f1dSLionel Sambuc /* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
3027*0a6a1f1dSLionel Sambuc instruction.  */
3028*0a6a1f1dSLionel Sambuc   BFD_RELOC_MN10300_16_PCREL,
3029*0a6a1f1dSLionel Sambuc 
3030*0a6a1f1dSLionel Sambuc 
3031*0a6a1f1dSLionel Sambuc /* i386/elf relocations  */
3032*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_GOT32,
3033*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_PLT32,
3034*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_COPY,
3035*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_GLOB_DAT,
3036*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_JUMP_SLOT,
3037*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_RELATIVE,
3038*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_GOTOFF,
3039*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_GOTPC,
3040*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_TLS_TPOFF,
3041*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_TLS_IE,
3042*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_TLS_GOTIE,
3043*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_TLS_LE,
3044*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_TLS_GD,
3045*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_TLS_LDM,
3046*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_TLS_LDO_32,
3047*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_TLS_IE_32,
3048*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_TLS_LE_32,
3049*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_TLS_DTPMOD32,
3050*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_TLS_DTPOFF32,
3051*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_TLS_TPOFF32,
3052*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_TLS_GOTDESC,
3053*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_TLS_DESC_CALL,
3054*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_TLS_DESC,
3055*0a6a1f1dSLionel Sambuc   BFD_RELOC_386_IRELATIVE,
3056*0a6a1f1dSLionel Sambuc 
3057*0a6a1f1dSLionel Sambuc /* x86-64/elf relocations  */
3058*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_GOT32,
3059*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_PLT32,
3060*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_COPY,
3061*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_GLOB_DAT,
3062*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_JUMP_SLOT,
3063*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_RELATIVE,
3064*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_GOTPCREL,
3065*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_32S,
3066*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_DTPMOD64,
3067*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_DTPOFF64,
3068*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_TPOFF64,
3069*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_TLSGD,
3070*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_TLSLD,
3071*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_DTPOFF32,
3072*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_GOTTPOFF,
3073*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_TPOFF32,
3074*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_GOTOFF64,
3075*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_GOTPC32,
3076*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_GOT64,
3077*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_GOTPCREL64,
3078*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_GOTPC64,
3079*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_GOTPLT64,
3080*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_PLTOFF64,
3081*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_GOTPC32_TLSDESC,
3082*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_TLSDESC_CALL,
3083*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_TLSDESC,
3084*0a6a1f1dSLionel Sambuc   BFD_RELOC_X86_64_IRELATIVE,
3085*0a6a1f1dSLionel Sambuc 
3086*0a6a1f1dSLionel Sambuc /* ns32k relocations  */
3087*0a6a1f1dSLionel Sambuc   BFD_RELOC_NS32K_IMM_8,
3088*0a6a1f1dSLionel Sambuc   BFD_RELOC_NS32K_IMM_16,
3089*0a6a1f1dSLionel Sambuc   BFD_RELOC_NS32K_IMM_32,
3090*0a6a1f1dSLionel Sambuc   BFD_RELOC_NS32K_IMM_8_PCREL,
3091*0a6a1f1dSLionel Sambuc   BFD_RELOC_NS32K_IMM_16_PCREL,
3092*0a6a1f1dSLionel Sambuc   BFD_RELOC_NS32K_IMM_32_PCREL,
3093*0a6a1f1dSLionel Sambuc   BFD_RELOC_NS32K_DISP_8,
3094*0a6a1f1dSLionel Sambuc   BFD_RELOC_NS32K_DISP_16,
3095*0a6a1f1dSLionel Sambuc   BFD_RELOC_NS32K_DISP_32,
3096*0a6a1f1dSLionel Sambuc   BFD_RELOC_NS32K_DISP_8_PCREL,
3097*0a6a1f1dSLionel Sambuc   BFD_RELOC_NS32K_DISP_16_PCREL,
3098*0a6a1f1dSLionel Sambuc   BFD_RELOC_NS32K_DISP_32_PCREL,
3099*0a6a1f1dSLionel Sambuc 
3100*0a6a1f1dSLionel Sambuc /* PDP11 relocations  */
3101*0a6a1f1dSLionel Sambuc   BFD_RELOC_PDP11_DISP_8_PCREL,
3102*0a6a1f1dSLionel Sambuc   BFD_RELOC_PDP11_DISP_6_PCREL,
3103*0a6a1f1dSLionel Sambuc 
3104*0a6a1f1dSLionel Sambuc /* Picojava relocs.  Not all of these appear in object files.  */
3105*0a6a1f1dSLionel Sambuc   BFD_RELOC_PJ_CODE_HI16,
3106*0a6a1f1dSLionel Sambuc   BFD_RELOC_PJ_CODE_LO16,
3107*0a6a1f1dSLionel Sambuc   BFD_RELOC_PJ_CODE_DIR16,
3108*0a6a1f1dSLionel Sambuc   BFD_RELOC_PJ_CODE_DIR32,
3109*0a6a1f1dSLionel Sambuc   BFD_RELOC_PJ_CODE_REL16,
3110*0a6a1f1dSLionel Sambuc   BFD_RELOC_PJ_CODE_REL32,
3111*0a6a1f1dSLionel Sambuc 
3112*0a6a1f1dSLionel Sambuc /* Power(rs6000) and PowerPC relocations.  */
3113*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_B26,
3114*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_BA26,
3115*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_TOC16,
3116*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_B16,
3117*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_B16_BRTAKEN,
3118*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_B16_BRNTAKEN,
3119*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_BA16,
3120*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_BA16_BRTAKEN,
3121*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_BA16_BRNTAKEN,
3122*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_COPY,
3123*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GLOB_DAT,
3124*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_JMP_SLOT,
3125*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_RELATIVE,
3126*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_LOCAL24PC,
3127*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_EMB_NADDR32,
3128*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_EMB_NADDR16,
3129*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_EMB_NADDR16_LO,
3130*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_EMB_NADDR16_HI,
3131*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_EMB_NADDR16_HA,
3132*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_EMB_SDAI16,
3133*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_EMB_SDA2I16,
3134*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_EMB_SDA2REL,
3135*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_EMB_SDA21,
3136*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_EMB_MRKREF,
3137*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_EMB_RELSEC16,
3138*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_EMB_RELST_LO,
3139*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_EMB_RELST_HI,
3140*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_EMB_RELST_HA,
3141*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_EMB_BIT_FLD,
3142*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_EMB_RELSDA,
3143*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_REL8,
3144*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_REL15,
3145*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_REL24,
3146*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_LO16A,
3147*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_LO16D,
3148*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_HI16A,
3149*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_HI16D,
3150*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_HA16A,
3151*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_HA16D,
3152*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_SDA21,
3153*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_SDA21_LO,
3154*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_SDAREL_LO16A,
3155*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_SDAREL_LO16D,
3156*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_SDAREL_HI16A,
3157*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_SDAREL_HI16D,
3158*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_SDAREL_HA16A,
3159*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_VLE_SDAREL_HA16D,
3160*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_HIGHER,
3161*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_HIGHER_S,
3162*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_HIGHEST,
3163*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_HIGHEST_S,
3164*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_TOC16_LO,
3165*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_TOC16_HI,
3166*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_TOC16_HA,
3167*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_TOC,
3168*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_PLTGOT16,
3169*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_PLTGOT16_LO,
3170*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_PLTGOT16_HI,
3171*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_PLTGOT16_HA,
3172*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_ADDR16_DS,
3173*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_ADDR16_LO_DS,
3174*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_GOT16_DS,
3175*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_GOT16_LO_DS,
3176*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_PLT16_LO_DS,
3177*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_SECTOFF_DS,
3178*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_SECTOFF_LO_DS,
3179*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_TOC16_DS,
3180*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_TOC16_LO_DS,
3181*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_PLTGOT16_DS,
3182*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_PLTGOT16_LO_DS,
3183*0a6a1f1dSLionel Sambuc 
3184*0a6a1f1dSLionel Sambuc /* PowerPC and PowerPC64 thread-local storage relocations.  */
3185*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_TLS,
3186*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_TLSGD,
3187*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_TLSLD,
3188*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_DTPMOD,
3189*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_TPREL16,
3190*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_TPREL16_LO,
3191*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_TPREL16_HI,
3192*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_TPREL16_HA,
3193*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_TPREL,
3194*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_DTPREL16,
3195*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_DTPREL16_LO,
3196*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_DTPREL16_HI,
3197*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_DTPREL16_HA,
3198*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_DTPREL,
3199*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GOT_TLSGD16,
3200*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GOT_TLSGD16_LO,
3201*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GOT_TLSGD16_HI,
3202*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GOT_TLSGD16_HA,
3203*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GOT_TLSLD16,
3204*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GOT_TLSLD16_LO,
3205*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GOT_TLSLD16_HI,
3206*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GOT_TLSLD16_HA,
3207*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GOT_TPREL16,
3208*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GOT_TPREL16_LO,
3209*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GOT_TPREL16_HI,
3210*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GOT_TPREL16_HA,
3211*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GOT_DTPREL16,
3212*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GOT_DTPREL16_LO,
3213*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GOT_DTPREL16_HI,
3214*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC_GOT_DTPREL16_HA,
3215*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_TPREL16_DS,
3216*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_TPREL16_LO_DS,
3217*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_TPREL16_HIGHER,
3218*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_TPREL16_HIGHERA,
3219*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_TPREL16_HIGHEST,
3220*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_TPREL16_HIGHESTA,
3221*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_DTPREL16_DS,
3222*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_DTPREL16_LO_DS,
3223*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_DTPREL16_HIGHER,
3224*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_DTPREL16_HIGHERA,
3225*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_DTPREL16_HIGHEST,
3226*0a6a1f1dSLionel Sambuc   BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
3227*0a6a1f1dSLionel Sambuc 
3228*0a6a1f1dSLionel Sambuc /* IBM 370/390 relocations  */
3229*0a6a1f1dSLionel Sambuc   BFD_RELOC_I370_D12,
3230*0a6a1f1dSLionel Sambuc 
3231*0a6a1f1dSLionel Sambuc /* The type of reloc used to build a constructor table - at the moment
3232*0a6a1f1dSLionel Sambuc probably a 32 bit wide absolute relocation, but the target can choose.
3233*0a6a1f1dSLionel Sambuc It generally does map to one of the other relocation types.  */
3234*0a6a1f1dSLionel Sambuc   BFD_RELOC_CTOR,
3235*0a6a1f1dSLionel Sambuc 
3236*0a6a1f1dSLionel Sambuc /* ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
3237*0a6a1f1dSLionel Sambuc not stored in the instruction.  */
3238*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_PCREL_BRANCH,
3239*0a6a1f1dSLionel Sambuc 
3240*0a6a1f1dSLionel Sambuc /* ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
3241*0a6a1f1dSLionel Sambuc not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
3242*0a6a1f1dSLionel Sambuc field in the instruction.  */
3243*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_PCREL_BLX,
3244*0a6a1f1dSLionel Sambuc 
3245*0a6a1f1dSLionel Sambuc /* Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
3246*0a6a1f1dSLionel Sambuc not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
3247*0a6a1f1dSLionel Sambuc field in the instruction.  */
3248*0a6a1f1dSLionel Sambuc   BFD_RELOC_THUMB_PCREL_BLX,
3249*0a6a1f1dSLionel Sambuc 
3250*0a6a1f1dSLionel Sambuc /* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.  */
3251*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_PCREL_CALL,
3252*0a6a1f1dSLionel Sambuc 
3253*0a6a1f1dSLionel Sambuc /* ARM 26-bit pc-relative branch for B or conditional BL instruction.  */
3254*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_PCREL_JUMP,
3255*0a6a1f1dSLionel Sambuc 
3256*0a6a1f1dSLionel Sambuc /* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
3257*0a6a1f1dSLionel Sambuc The lowest bit must be zero and is not stored in the instruction.
3258*0a6a1f1dSLionel Sambuc Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
3259*0a6a1f1dSLionel Sambuc "nn" one smaller in all cases.  Note further that BRANCH23
3260*0a6a1f1dSLionel Sambuc corresponds to R_ARM_THM_CALL.  */
3261*0a6a1f1dSLionel Sambuc   BFD_RELOC_THUMB_PCREL_BRANCH7,
3262*0a6a1f1dSLionel Sambuc   BFD_RELOC_THUMB_PCREL_BRANCH9,
3263*0a6a1f1dSLionel Sambuc   BFD_RELOC_THUMB_PCREL_BRANCH12,
3264*0a6a1f1dSLionel Sambuc   BFD_RELOC_THUMB_PCREL_BRANCH20,
3265*0a6a1f1dSLionel Sambuc   BFD_RELOC_THUMB_PCREL_BRANCH23,
3266*0a6a1f1dSLionel Sambuc   BFD_RELOC_THUMB_PCREL_BRANCH25,
3267*0a6a1f1dSLionel Sambuc 
3268*0a6a1f1dSLionel Sambuc /* 12-bit immediate offset, used in ARM-format ldr and str instructions.  */
3269*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_OFFSET_IMM,
3270*0a6a1f1dSLionel Sambuc 
3271*0a6a1f1dSLionel Sambuc /* 5-bit immediate offset, used in Thumb-format ldr and str instructions.  */
3272*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_THUMB_OFFSET,
3273*0a6a1f1dSLionel Sambuc 
3274*0a6a1f1dSLionel Sambuc /* Pc-relative or absolute relocation depending on target.  Used for
3275*0a6a1f1dSLionel Sambuc entries in .init_array sections.  */
3276*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_TARGET1,
3277*0a6a1f1dSLionel Sambuc 
3278*0a6a1f1dSLionel Sambuc /* Read-only segment base relative address.  */
3279*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_ROSEGREL32,
3280*0a6a1f1dSLionel Sambuc 
3281*0a6a1f1dSLionel Sambuc /* Data segment base relative address.  */
3282*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_SBREL32,
3283*0a6a1f1dSLionel Sambuc 
3284*0a6a1f1dSLionel Sambuc /* This reloc is used for references to RTTI data from exception handling
3285*0a6a1f1dSLionel Sambuc tables.  The actual definition depends on the target.  It may be a
3286*0a6a1f1dSLionel Sambuc pc-relative or some form of GOT-indirect relocation.  */
3287*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_TARGET2,
3288*0a6a1f1dSLionel Sambuc 
3289*0a6a1f1dSLionel Sambuc /* 31-bit PC relative address.  */
3290*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_PREL31,
3291*0a6a1f1dSLionel Sambuc 
3292*0a6a1f1dSLionel Sambuc /* Low and High halfword relocations for MOVW and MOVT instructions.  */
3293*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_MOVW,
3294*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_MOVT,
3295*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_MOVW_PCREL,
3296*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_MOVT_PCREL,
3297*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_THUMB_MOVW,
3298*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_THUMB_MOVT,
3299*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_THUMB_MOVW_PCREL,
3300*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_THUMB_MOVT_PCREL,
3301*0a6a1f1dSLionel Sambuc 
3302*0a6a1f1dSLionel Sambuc /* Relocations for setting up GOTs and PLTs for shared libraries.  */
3303*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_JUMP_SLOT,
3304*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_GLOB_DAT,
3305*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_GOT32,
3306*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_PLT32,
3307*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_RELATIVE,
3308*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_GOTOFF,
3309*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_GOTPC,
3310*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_GOT_PREL,
3311*0a6a1f1dSLionel Sambuc 
3312*0a6a1f1dSLionel Sambuc /* ARM thread-local storage relocations.  */
3313*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_TLS_GD32,
3314*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_TLS_LDO32,
3315*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_TLS_LDM32,
3316*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_TLS_DTPOFF32,
3317*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_TLS_DTPMOD32,
3318*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_TLS_TPOFF32,
3319*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_TLS_IE32,
3320*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_TLS_LE32,
3321*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_TLS_GOTDESC,
3322*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_TLS_CALL,
3323*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_THM_TLS_CALL,
3324*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_TLS_DESCSEQ,
3325*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_THM_TLS_DESCSEQ,
3326*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_TLS_DESC,
3327*0a6a1f1dSLionel Sambuc 
3328*0a6a1f1dSLionel Sambuc /* ARM group relocations.  */
3329*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_ALU_PC_G0_NC,
3330*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_ALU_PC_G0,
3331*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_ALU_PC_G1_NC,
3332*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_ALU_PC_G1,
3333*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_ALU_PC_G2,
3334*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDR_PC_G0,
3335*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDR_PC_G1,
3336*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDR_PC_G2,
3337*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDRS_PC_G0,
3338*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDRS_PC_G1,
3339*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDRS_PC_G2,
3340*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDC_PC_G0,
3341*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDC_PC_G1,
3342*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDC_PC_G2,
3343*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_ALU_SB_G0_NC,
3344*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_ALU_SB_G0,
3345*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_ALU_SB_G1_NC,
3346*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_ALU_SB_G1,
3347*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_ALU_SB_G2,
3348*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDR_SB_G0,
3349*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDR_SB_G1,
3350*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDR_SB_G2,
3351*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDRS_SB_G0,
3352*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDRS_SB_G1,
3353*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDRS_SB_G2,
3354*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDC_SB_G0,
3355*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDC_SB_G1,
3356*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDC_SB_G2,
3357*0a6a1f1dSLionel Sambuc 
3358*0a6a1f1dSLionel Sambuc /* Annotation of BX instructions.  */
3359*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_V4BX,
3360*0a6a1f1dSLionel Sambuc 
3361*0a6a1f1dSLionel Sambuc /* ARM support for STT_GNU_IFUNC.  */
3362*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_IRELATIVE,
3363*0a6a1f1dSLionel Sambuc 
3364*0a6a1f1dSLionel Sambuc /* These relocs are only used within the ARM assembler.  They are not
3365*0a6a1f1dSLionel Sambuc (at present) written to any object files.  */
3366*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_IMMEDIATE,
3367*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_ADRL_IMMEDIATE,
3368*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_T32_IMMEDIATE,
3369*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_T32_ADD_IMM,
3370*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_T32_IMM12,
3371*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_T32_ADD_PC12,
3372*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_SHIFT_IMM,
3373*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_SMC,
3374*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_HVC,
3375*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_SWI,
3376*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_MULTI,
3377*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_CP_OFF_IMM,
3378*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_CP_OFF_IMM_S2,
3379*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_T32_CP_OFF_IMM,
3380*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
3381*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_ADR_IMM,
3382*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LDR_IMM,
3383*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_LITERAL,
3384*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_IN_POOL,
3385*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_OFFSET_IMM8,
3386*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_T32_OFFSET_U8,
3387*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_T32_OFFSET_IMM,
3388*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_HWLITERAL,
3389*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_THUMB_ADD,
3390*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_THUMB_IMM,
3391*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARM_THUMB_SHIFT,
3392*0a6a1f1dSLionel Sambuc 
3393*0a6a1f1dSLionel Sambuc /* Renesas / SuperH SH relocs.  Not all of these appear in object files.  */
3394*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_PCDISP8BY2,
3395*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_PCDISP12BY2,
3396*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMM3,
3397*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMM3U,
3398*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_DISP12,
3399*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_DISP12BY2,
3400*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_DISP12BY4,
3401*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_DISP12BY8,
3402*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_DISP20,
3403*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_DISP20BY8,
3404*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMM4,
3405*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMM4BY2,
3406*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMM4BY4,
3407*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMM8,
3408*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMM8BY2,
3409*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMM8BY4,
3410*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_PCRELIMM8BY2,
3411*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_PCRELIMM8BY4,
3412*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_SWITCH16,
3413*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_SWITCH32,
3414*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_USES,
3415*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_COUNT,
3416*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_ALIGN,
3417*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_CODE,
3418*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_DATA,
3419*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_LABEL,
3420*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_LOOP_START,
3421*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_LOOP_END,
3422*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_COPY,
3423*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GLOB_DAT,
3424*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_JMP_SLOT,
3425*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_RELATIVE,
3426*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTPC,
3427*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOT_LOW16,
3428*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOT_MEDLOW16,
3429*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOT_MEDHI16,
3430*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOT_HI16,
3431*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTPLT_LOW16,
3432*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTPLT_MEDLOW16,
3433*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTPLT_MEDHI16,
3434*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTPLT_HI16,
3435*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_PLT_LOW16,
3436*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_PLT_MEDLOW16,
3437*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_PLT_MEDHI16,
3438*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_PLT_HI16,
3439*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTOFF_LOW16,
3440*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTOFF_MEDLOW16,
3441*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTOFF_MEDHI16,
3442*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTOFF_HI16,
3443*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTPC_LOW16,
3444*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTPC_MEDLOW16,
3445*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTPC_MEDHI16,
3446*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTPC_HI16,
3447*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_COPY64,
3448*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GLOB_DAT64,
3449*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_JMP_SLOT64,
3450*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_RELATIVE64,
3451*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOT10BY4,
3452*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOT10BY8,
3453*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTPLT10BY4,
3454*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTPLT10BY8,
3455*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTPLT32,
3456*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_SHMEDIA_CODE,
3457*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMMU5,
3458*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMMS6,
3459*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMMS6BY32,
3460*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMMU6,
3461*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMMS10,
3462*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMMS10BY2,
3463*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMMS10BY4,
3464*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMMS10BY8,
3465*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMMS16,
3466*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMMU16,
3467*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMM_LOW16,
3468*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMM_LOW16_PCREL,
3469*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMM_MEDLOW16,
3470*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
3471*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMM_MEDHI16,
3472*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMM_MEDHI16_PCREL,
3473*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMM_HI16,
3474*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_IMM_HI16_PCREL,
3475*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_PT_16,
3476*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_TLS_GD_32,
3477*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_TLS_LD_32,
3478*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_TLS_LDO_32,
3479*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_TLS_IE_32,
3480*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_TLS_LE_32,
3481*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_TLS_DTPMOD32,
3482*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_TLS_DTPOFF32,
3483*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_TLS_TPOFF32,
3484*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOT20,
3485*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTOFF20,
3486*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTFUNCDESC,
3487*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTFUNCDESC20,
3488*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTOFFFUNCDESC,
3489*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_GOTOFFFUNCDESC20,
3490*0a6a1f1dSLionel Sambuc   BFD_RELOC_SH_FUNCDESC,
3491*0a6a1f1dSLionel Sambuc 
3492*0a6a1f1dSLionel Sambuc /* ARC Cores relocs.
3493*0a6a1f1dSLionel Sambuc ARC 22 bit pc-relative branch.  The lowest two bits must be zero and are
3494*0a6a1f1dSLionel Sambuc not stored in the instruction.  The high 20 bits are installed in bits 26
3495*0a6a1f1dSLionel Sambuc through 7 of the instruction.  */
3496*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARC_B22_PCREL,
3497*0a6a1f1dSLionel Sambuc 
3498*0a6a1f1dSLionel Sambuc /* ARC 26 bit absolute branch.  The lowest two bits must be zero and are not
3499*0a6a1f1dSLionel Sambuc stored in the instruction.  The high 24 bits are installed in bits 23
3500*0a6a1f1dSLionel Sambuc through 0.  */
3501*0a6a1f1dSLionel Sambuc   BFD_RELOC_ARC_B26,
3502*0a6a1f1dSLionel Sambuc 
3503*0a6a1f1dSLionel Sambuc /* ADI Blackfin 16 bit immediate absolute reloc.  */
3504*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_16_IMM,
3505*0a6a1f1dSLionel Sambuc 
3506*0a6a1f1dSLionel Sambuc /* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.  */
3507*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_16_HIGH,
3508*0a6a1f1dSLionel Sambuc 
3509*0a6a1f1dSLionel Sambuc /* ADI Blackfin 'a' part of LSETUP.  */
3510*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_4_PCREL,
3511*0a6a1f1dSLionel Sambuc 
3512*0a6a1f1dSLionel Sambuc /* ADI Blackfin.  */
3513*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_5_PCREL,
3514*0a6a1f1dSLionel Sambuc 
3515*0a6a1f1dSLionel Sambuc /* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.  */
3516*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_16_LOW,
3517*0a6a1f1dSLionel Sambuc 
3518*0a6a1f1dSLionel Sambuc /* ADI Blackfin.  */
3519*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_10_PCREL,
3520*0a6a1f1dSLionel Sambuc 
3521*0a6a1f1dSLionel Sambuc /* ADI Blackfin 'b' part of LSETUP.  */
3522*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_11_PCREL,
3523*0a6a1f1dSLionel Sambuc 
3524*0a6a1f1dSLionel Sambuc /* ADI Blackfin.  */
3525*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_12_PCREL_JUMP,
3526*0a6a1f1dSLionel Sambuc 
3527*0a6a1f1dSLionel Sambuc /* ADI Blackfin Short jump, pcrel.  */
3528*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_12_PCREL_JUMP_S,
3529*0a6a1f1dSLionel Sambuc 
3530*0a6a1f1dSLionel Sambuc /* ADI Blackfin Call.x not implemented.  */
3531*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_24_PCREL_CALL_X,
3532*0a6a1f1dSLionel Sambuc 
3533*0a6a1f1dSLionel Sambuc /* ADI Blackfin Long Jump pcrel.  */
3534*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_24_PCREL_JUMP_L,
3535*0a6a1f1dSLionel Sambuc 
3536*0a6a1f1dSLionel Sambuc /* ADI Blackfin FD-PIC relocations.  */
3537*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_GOT17M4,
3538*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_GOTHI,
3539*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_GOTLO,
3540*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_FUNCDESC,
3541*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
3542*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_FUNCDESC_GOTHI,
3543*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_FUNCDESC_GOTLO,
3544*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_FUNCDESC_VALUE,
3545*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
3546*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
3547*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
3548*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_GOTOFF17M4,
3549*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_GOTOFFHI,
3550*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_GOTOFFLO,
3551*0a6a1f1dSLionel Sambuc 
3552*0a6a1f1dSLionel Sambuc /* ADI Blackfin GOT relocation.  */
3553*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_GOT,
3554*0a6a1f1dSLionel Sambuc 
3555*0a6a1f1dSLionel Sambuc /* ADI Blackfin PLTPC relocation.  */
3556*0a6a1f1dSLionel Sambuc   BFD_RELOC_BFIN_PLTPC,
3557*0a6a1f1dSLionel Sambuc 
3558*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3559*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_PUSH,
3560*0a6a1f1dSLionel Sambuc 
3561*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3562*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_CONST,
3563*0a6a1f1dSLionel Sambuc 
3564*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3565*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_ADD,
3566*0a6a1f1dSLionel Sambuc 
3567*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3568*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_SUB,
3569*0a6a1f1dSLionel Sambuc 
3570*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3571*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_MULT,
3572*0a6a1f1dSLionel Sambuc 
3573*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3574*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_DIV,
3575*0a6a1f1dSLionel Sambuc 
3576*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3577*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_MOD,
3578*0a6a1f1dSLionel Sambuc 
3579*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3580*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_LSHIFT,
3581*0a6a1f1dSLionel Sambuc 
3582*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3583*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_RSHIFT,
3584*0a6a1f1dSLionel Sambuc 
3585*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3586*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_AND,
3587*0a6a1f1dSLionel Sambuc 
3588*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3589*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_OR,
3590*0a6a1f1dSLionel Sambuc 
3591*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3592*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_XOR,
3593*0a6a1f1dSLionel Sambuc 
3594*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3595*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_LAND,
3596*0a6a1f1dSLionel Sambuc 
3597*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3598*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_LOR,
3599*0a6a1f1dSLionel Sambuc 
3600*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3601*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_LEN,
3602*0a6a1f1dSLionel Sambuc 
3603*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3604*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_NEG,
3605*0a6a1f1dSLionel Sambuc 
3606*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3607*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_COMP,
3608*0a6a1f1dSLionel Sambuc 
3609*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3610*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_PAGE,
3611*0a6a1f1dSLionel Sambuc 
3612*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3613*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_HWPAGE,
3614*0a6a1f1dSLionel Sambuc 
3615*0a6a1f1dSLionel Sambuc /* ADI Blackfin arithmetic relocation.  */
3616*0a6a1f1dSLionel Sambuc   BFD_ARELOC_BFIN_ADDR,
3617*0a6a1f1dSLionel Sambuc 
3618*0a6a1f1dSLionel Sambuc /* Mitsubishi D10V relocs.
3619*0a6a1f1dSLionel Sambuc This is a 10-bit reloc with the right 2 bits
3620*0a6a1f1dSLionel Sambuc assumed to be 0.  */
3621*0a6a1f1dSLionel Sambuc   BFD_RELOC_D10V_10_PCREL_R,
3622*0a6a1f1dSLionel Sambuc 
3623*0a6a1f1dSLionel Sambuc /* Mitsubishi D10V relocs.
3624*0a6a1f1dSLionel Sambuc This is a 10-bit reloc with the right 2 bits
3625*0a6a1f1dSLionel Sambuc assumed to be 0.  This is the same as the previous reloc
3626*0a6a1f1dSLionel Sambuc except it is in the left container, i.e.,
3627*0a6a1f1dSLionel Sambuc shifted left 15 bits.  */
3628*0a6a1f1dSLionel Sambuc   BFD_RELOC_D10V_10_PCREL_L,
3629*0a6a1f1dSLionel Sambuc 
3630*0a6a1f1dSLionel Sambuc /* This is an 18-bit reloc with the right 2 bits
3631*0a6a1f1dSLionel Sambuc assumed to be 0.  */
3632*0a6a1f1dSLionel Sambuc   BFD_RELOC_D10V_18,
3633*0a6a1f1dSLionel Sambuc 
3634*0a6a1f1dSLionel Sambuc /* This is an 18-bit reloc with the right 2 bits
3635*0a6a1f1dSLionel Sambuc assumed to be 0.  */
3636*0a6a1f1dSLionel Sambuc   BFD_RELOC_D10V_18_PCREL,
3637*0a6a1f1dSLionel Sambuc 
3638*0a6a1f1dSLionel Sambuc /* Mitsubishi D30V relocs.
3639*0a6a1f1dSLionel Sambuc This is a 6-bit absolute reloc.  */
3640*0a6a1f1dSLionel Sambuc   BFD_RELOC_D30V_6,
3641*0a6a1f1dSLionel Sambuc 
3642*0a6a1f1dSLionel Sambuc /* This is a 6-bit pc-relative reloc with
3643*0a6a1f1dSLionel Sambuc the right 3 bits assumed to be 0.  */
3644*0a6a1f1dSLionel Sambuc   BFD_RELOC_D30V_9_PCREL,
3645*0a6a1f1dSLionel Sambuc 
3646*0a6a1f1dSLionel Sambuc /* This is a 6-bit pc-relative reloc with
3647*0a6a1f1dSLionel Sambuc the right 3 bits assumed to be 0. Same
3648*0a6a1f1dSLionel Sambuc as the previous reloc but on the right side
3649*0a6a1f1dSLionel Sambuc of the container.  */
3650*0a6a1f1dSLionel Sambuc   BFD_RELOC_D30V_9_PCREL_R,
3651*0a6a1f1dSLionel Sambuc 
3652*0a6a1f1dSLionel Sambuc /* This is a 12-bit absolute reloc with the
3653*0a6a1f1dSLionel Sambuc right 3 bitsassumed to be 0.  */
3654*0a6a1f1dSLionel Sambuc   BFD_RELOC_D30V_15,
3655*0a6a1f1dSLionel Sambuc 
3656*0a6a1f1dSLionel Sambuc /* This is a 12-bit pc-relative reloc with
3657*0a6a1f1dSLionel Sambuc the right 3 bits assumed to be 0.  */
3658*0a6a1f1dSLionel Sambuc   BFD_RELOC_D30V_15_PCREL,
3659*0a6a1f1dSLionel Sambuc 
3660*0a6a1f1dSLionel Sambuc /* This is a 12-bit pc-relative reloc with
3661*0a6a1f1dSLionel Sambuc the right 3 bits assumed to be 0. Same
3662*0a6a1f1dSLionel Sambuc as the previous reloc but on the right side
3663*0a6a1f1dSLionel Sambuc of the container.  */
3664*0a6a1f1dSLionel Sambuc   BFD_RELOC_D30V_15_PCREL_R,
3665*0a6a1f1dSLionel Sambuc 
3666*0a6a1f1dSLionel Sambuc /* This is an 18-bit absolute reloc with
3667*0a6a1f1dSLionel Sambuc the right 3 bits assumed to be 0.  */
3668*0a6a1f1dSLionel Sambuc   BFD_RELOC_D30V_21,
3669*0a6a1f1dSLionel Sambuc 
3670*0a6a1f1dSLionel Sambuc /* This is an 18-bit pc-relative reloc with
3671*0a6a1f1dSLionel Sambuc the right 3 bits assumed to be 0.  */
3672*0a6a1f1dSLionel Sambuc   BFD_RELOC_D30V_21_PCREL,
3673*0a6a1f1dSLionel Sambuc 
3674*0a6a1f1dSLionel Sambuc /* This is an 18-bit pc-relative reloc with
3675*0a6a1f1dSLionel Sambuc the right 3 bits assumed to be 0. Same
3676*0a6a1f1dSLionel Sambuc as the previous reloc but on the right side
3677*0a6a1f1dSLionel Sambuc of the container.  */
3678*0a6a1f1dSLionel Sambuc   BFD_RELOC_D30V_21_PCREL_R,
3679*0a6a1f1dSLionel Sambuc 
3680*0a6a1f1dSLionel Sambuc /* This is a 32-bit absolute reloc.  */
3681*0a6a1f1dSLionel Sambuc   BFD_RELOC_D30V_32,
3682*0a6a1f1dSLionel Sambuc 
3683*0a6a1f1dSLionel Sambuc /* This is a 32-bit pc-relative reloc.  */
3684*0a6a1f1dSLionel Sambuc   BFD_RELOC_D30V_32_PCREL,
3685*0a6a1f1dSLionel Sambuc 
3686*0a6a1f1dSLionel Sambuc /* DLX relocs  */
3687*0a6a1f1dSLionel Sambuc   BFD_RELOC_DLX_HI16_S,
3688*0a6a1f1dSLionel Sambuc 
3689*0a6a1f1dSLionel Sambuc /* DLX relocs  */
3690*0a6a1f1dSLionel Sambuc   BFD_RELOC_DLX_LO16,
3691*0a6a1f1dSLionel Sambuc 
3692*0a6a1f1dSLionel Sambuc /* DLX relocs  */
3693*0a6a1f1dSLionel Sambuc   BFD_RELOC_DLX_JMP26,
3694*0a6a1f1dSLionel Sambuc 
3695*0a6a1f1dSLionel Sambuc /* Renesas M16C/M32C Relocations.  */
3696*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32C_HI8,
3697*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32C_RL_JUMP,
3698*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32C_RL_1ADDR,
3699*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32C_RL_2ADDR,
3700*0a6a1f1dSLionel Sambuc 
3701*0a6a1f1dSLionel Sambuc /* Renesas M32R (formerly Mitsubishi M32R) relocs.
3702*0a6a1f1dSLionel Sambuc This is a 24 bit absolute address.  */
3703*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_24,
3704*0a6a1f1dSLionel Sambuc 
3705*0a6a1f1dSLionel Sambuc /* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.  */
3706*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_10_PCREL,
3707*0a6a1f1dSLionel Sambuc 
3708*0a6a1f1dSLionel Sambuc /* This is an 18-bit reloc with the right 2 bits assumed to be 0.  */
3709*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_18_PCREL,
3710*0a6a1f1dSLionel Sambuc 
3711*0a6a1f1dSLionel Sambuc /* This is a 26-bit reloc with the right 2 bits assumed to be 0.  */
3712*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_26_PCREL,
3713*0a6a1f1dSLionel Sambuc 
3714*0a6a1f1dSLionel Sambuc /* This is a 16-bit reloc containing the high 16 bits of an address
3715*0a6a1f1dSLionel Sambuc used when the lower 16 bits are treated as unsigned.  */
3716*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_HI16_ULO,
3717*0a6a1f1dSLionel Sambuc 
3718*0a6a1f1dSLionel Sambuc /* This is a 16-bit reloc containing the high 16 bits of an address
3719*0a6a1f1dSLionel Sambuc used when the lower 16 bits are treated as signed.  */
3720*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_HI16_SLO,
3721*0a6a1f1dSLionel Sambuc 
3722*0a6a1f1dSLionel Sambuc /* This is a 16-bit reloc containing the lower 16 bits of an address.  */
3723*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_LO16,
3724*0a6a1f1dSLionel Sambuc 
3725*0a6a1f1dSLionel Sambuc /* This is a 16-bit reloc containing the small data area offset for use in
3726*0a6a1f1dSLionel Sambuc add3, load, and store instructions.  */
3727*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_SDA16,
3728*0a6a1f1dSLionel Sambuc 
3729*0a6a1f1dSLionel Sambuc /* For PIC.  */
3730*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_GOT24,
3731*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_26_PLTREL,
3732*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_COPY,
3733*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_GLOB_DAT,
3734*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_JMP_SLOT,
3735*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_RELATIVE,
3736*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_GOTOFF,
3737*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_GOTOFF_HI_ULO,
3738*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_GOTOFF_HI_SLO,
3739*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_GOTOFF_LO,
3740*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_GOTPC24,
3741*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_GOT16_HI_ULO,
3742*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_GOT16_HI_SLO,
3743*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_GOT16_LO,
3744*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_GOTPC_HI_ULO,
3745*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_GOTPC_HI_SLO,
3746*0a6a1f1dSLionel Sambuc   BFD_RELOC_M32R_GOTPC_LO,
3747*0a6a1f1dSLionel Sambuc 
3748*0a6a1f1dSLionel Sambuc /* This is a 9-bit reloc  */
3749*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_9_PCREL,
3750*0a6a1f1dSLionel Sambuc 
3751*0a6a1f1dSLionel Sambuc /* This is a 22-bit reloc  */
3752*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_22_PCREL,
3753*0a6a1f1dSLionel Sambuc 
3754*0a6a1f1dSLionel Sambuc /* This is a 16 bit offset from the short data area pointer.  */
3755*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_SDA_16_16_OFFSET,
3756*0a6a1f1dSLionel Sambuc 
3757*0a6a1f1dSLionel Sambuc /* This is a 16 bit offset (of which only 15 bits are used) from the
3758*0a6a1f1dSLionel Sambuc short data area pointer.  */
3759*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_SDA_15_16_OFFSET,
3760*0a6a1f1dSLionel Sambuc 
3761*0a6a1f1dSLionel Sambuc /* This is a 16 bit offset from the zero data area pointer.  */
3762*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_ZDA_16_16_OFFSET,
3763*0a6a1f1dSLionel Sambuc 
3764*0a6a1f1dSLionel Sambuc /* This is a 16 bit offset (of which only 15 bits are used) from the
3765*0a6a1f1dSLionel Sambuc zero data area pointer.  */
3766*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_ZDA_15_16_OFFSET,
3767*0a6a1f1dSLionel Sambuc 
3768*0a6a1f1dSLionel Sambuc /* This is an 8 bit offset (of which only 6 bits are used) from the
3769*0a6a1f1dSLionel Sambuc tiny data area pointer.  */
3770*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_TDA_6_8_OFFSET,
3771*0a6a1f1dSLionel Sambuc 
3772*0a6a1f1dSLionel Sambuc /* This is an 8bit offset (of which only 7 bits are used) from the tiny
3773*0a6a1f1dSLionel Sambuc data area pointer.  */
3774*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_TDA_7_8_OFFSET,
3775*0a6a1f1dSLionel Sambuc 
3776*0a6a1f1dSLionel Sambuc /* This is a 7 bit offset from the tiny data area pointer.  */
3777*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_TDA_7_7_OFFSET,
3778*0a6a1f1dSLionel Sambuc 
3779*0a6a1f1dSLionel Sambuc /* This is a 16 bit offset from the tiny data area pointer.  */
3780*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_TDA_16_16_OFFSET,
3781*0a6a1f1dSLionel Sambuc 
3782*0a6a1f1dSLionel Sambuc /* This is a 5 bit offset (of which only 4 bits are used) from the tiny
3783*0a6a1f1dSLionel Sambuc data area pointer.  */
3784*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_TDA_4_5_OFFSET,
3785*0a6a1f1dSLionel Sambuc 
3786*0a6a1f1dSLionel Sambuc /* This is a 4 bit offset from the tiny data area pointer.  */
3787*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_TDA_4_4_OFFSET,
3788*0a6a1f1dSLionel Sambuc 
3789*0a6a1f1dSLionel Sambuc /* This is a 16 bit offset from the short data area pointer, with the
3790*0a6a1f1dSLionel Sambuc bits placed non-contiguously in the instruction.  */
3791*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
3792*0a6a1f1dSLionel Sambuc 
3793*0a6a1f1dSLionel Sambuc /* This is a 16 bit offset from the zero data area pointer, with the
3794*0a6a1f1dSLionel Sambuc bits placed non-contiguously in the instruction.  */
3795*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
3796*0a6a1f1dSLionel Sambuc 
3797*0a6a1f1dSLionel Sambuc /* This is a 6 bit offset from the call table base pointer.  */
3798*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_CALLT_6_7_OFFSET,
3799*0a6a1f1dSLionel Sambuc 
3800*0a6a1f1dSLionel Sambuc /* This is a 16 bit offset from the call table base pointer.  */
3801*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_CALLT_16_16_OFFSET,
3802*0a6a1f1dSLionel Sambuc 
3803*0a6a1f1dSLionel Sambuc /* Used for relaxing indirect function calls.  */
3804*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_LONGCALL,
3805*0a6a1f1dSLionel Sambuc 
3806*0a6a1f1dSLionel Sambuc /* Used for relaxing indirect jumps.  */
3807*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_LONGJUMP,
3808*0a6a1f1dSLionel Sambuc 
3809*0a6a1f1dSLionel Sambuc /* Used to maintain alignment whilst relaxing.  */
3810*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_ALIGN,
3811*0a6a1f1dSLionel Sambuc 
3812*0a6a1f1dSLionel Sambuc /* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
3813*0a6a1f1dSLionel Sambuc instructions.  */
3814*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_LO16_SPLIT_OFFSET,
3815*0a6a1f1dSLionel Sambuc 
3816*0a6a1f1dSLionel Sambuc /* This is a 16-bit reloc.  */
3817*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_16_PCREL,
3818*0a6a1f1dSLionel Sambuc 
3819*0a6a1f1dSLionel Sambuc /* This is a 17-bit reloc.  */
3820*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_17_PCREL,
3821*0a6a1f1dSLionel Sambuc 
3822*0a6a1f1dSLionel Sambuc /* This is a 23-bit reloc.  */
3823*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_23,
3824*0a6a1f1dSLionel Sambuc 
3825*0a6a1f1dSLionel Sambuc /* This is a 32-bit reloc.  */
3826*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_32_PCREL,
3827*0a6a1f1dSLionel Sambuc 
3828*0a6a1f1dSLionel Sambuc /* This is a 32-bit reloc.  */
3829*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_32_ABS,
3830*0a6a1f1dSLionel Sambuc 
3831*0a6a1f1dSLionel Sambuc /* This is a 16-bit reloc.  */
3832*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_16_SPLIT_OFFSET,
3833*0a6a1f1dSLionel Sambuc 
3834*0a6a1f1dSLionel Sambuc /* This is a 16-bit reloc.  */
3835*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_16_S1,
3836*0a6a1f1dSLionel Sambuc 
3837*0a6a1f1dSLionel Sambuc /* Low 16 bits. 16 bit shifted by 1.  */
3838*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_LO16_S1,
3839*0a6a1f1dSLionel Sambuc 
3840*0a6a1f1dSLionel Sambuc /* This is a 16 bit offset from the call table base pointer.  */
3841*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_CALLT_15_16_OFFSET,
3842*0a6a1f1dSLionel Sambuc 
3843*0a6a1f1dSLionel Sambuc /* DSO relocations.  */
3844*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_32_GOTPCREL,
3845*0a6a1f1dSLionel Sambuc 
3846*0a6a1f1dSLionel Sambuc /* DSO relocations.  */
3847*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_16_GOT,
3848*0a6a1f1dSLionel Sambuc 
3849*0a6a1f1dSLionel Sambuc /* DSO relocations.  */
3850*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_32_GOT,
3851*0a6a1f1dSLionel Sambuc 
3852*0a6a1f1dSLionel Sambuc /* DSO relocations.  */
3853*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_22_PLT_PCREL,
3854*0a6a1f1dSLionel Sambuc 
3855*0a6a1f1dSLionel Sambuc /* DSO relocations.  */
3856*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_32_PLT_PCREL,
3857*0a6a1f1dSLionel Sambuc 
3858*0a6a1f1dSLionel Sambuc /* DSO relocations.  */
3859*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_COPY,
3860*0a6a1f1dSLionel Sambuc 
3861*0a6a1f1dSLionel Sambuc /* DSO relocations.  */
3862*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_GLOB_DAT,
3863*0a6a1f1dSLionel Sambuc 
3864*0a6a1f1dSLionel Sambuc /* DSO relocations.  */
3865*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_JMP_SLOT,
3866*0a6a1f1dSLionel Sambuc 
3867*0a6a1f1dSLionel Sambuc /* DSO relocations.  */
3868*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_RELATIVE,
3869*0a6a1f1dSLionel Sambuc 
3870*0a6a1f1dSLionel Sambuc /* DSO relocations.  */
3871*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_16_GOTOFF,
3872*0a6a1f1dSLionel Sambuc 
3873*0a6a1f1dSLionel Sambuc /* DSO relocations.  */
3874*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_32_GOTOFF,
3875*0a6a1f1dSLionel Sambuc 
3876*0a6a1f1dSLionel Sambuc /* start code.  */
3877*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_CODE,
3878*0a6a1f1dSLionel Sambuc 
3879*0a6a1f1dSLionel Sambuc /* start data in text.  */
3880*0a6a1f1dSLionel Sambuc   BFD_RELOC_V850_DATA,
3881*0a6a1f1dSLionel Sambuc 
3882*0a6a1f1dSLionel Sambuc /* This is a 8bit DP reloc for the tms320c30, where the most
3883*0a6a1f1dSLionel Sambuc significant 8 bits of a 24 bit word are placed into the least
3884*0a6a1f1dSLionel Sambuc significant 8 bits of the opcode.  */
3885*0a6a1f1dSLionel Sambuc   BFD_RELOC_TIC30_LDP,
3886*0a6a1f1dSLionel Sambuc 
3887*0a6a1f1dSLionel Sambuc /* This is a 7bit reloc for the tms320c54x, where the least
3888*0a6a1f1dSLionel Sambuc significant 7 bits of a 16 bit word are placed into the least
3889*0a6a1f1dSLionel Sambuc significant 7 bits of the opcode.  */
3890*0a6a1f1dSLionel Sambuc   BFD_RELOC_TIC54X_PARTLS7,
3891*0a6a1f1dSLionel Sambuc 
3892*0a6a1f1dSLionel Sambuc /* This is a 9bit DP reloc for the tms320c54x, where the most
3893*0a6a1f1dSLionel Sambuc significant 9 bits of a 16 bit word are placed into the least
3894*0a6a1f1dSLionel Sambuc significant 9 bits of the opcode.  */
3895*0a6a1f1dSLionel Sambuc   BFD_RELOC_TIC54X_PARTMS9,
3896*0a6a1f1dSLionel Sambuc 
3897*0a6a1f1dSLionel Sambuc /* This is an extended address 23-bit reloc for the tms320c54x.  */
3898*0a6a1f1dSLionel Sambuc   BFD_RELOC_TIC54X_23,
3899*0a6a1f1dSLionel Sambuc 
3900*0a6a1f1dSLionel Sambuc /* This is a 16-bit reloc for the tms320c54x, where the least
3901*0a6a1f1dSLionel Sambuc significant 16 bits of a 23-bit extended address are placed into
3902*0a6a1f1dSLionel Sambuc the opcode.  */
3903*0a6a1f1dSLionel Sambuc   BFD_RELOC_TIC54X_16_OF_23,
3904*0a6a1f1dSLionel Sambuc 
3905*0a6a1f1dSLionel Sambuc /* This is a reloc for the tms320c54x, where the most
3906*0a6a1f1dSLionel Sambuc significant 7 bits of a 23-bit extended address are placed into
3907*0a6a1f1dSLionel Sambuc the opcode.  */
3908*0a6a1f1dSLionel Sambuc   BFD_RELOC_TIC54X_MS7_OF_23,
3909*0a6a1f1dSLionel Sambuc 
3910*0a6a1f1dSLionel Sambuc /* TMS320C6000 relocations.  */
3911*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_PCR_S21,
3912*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_PCR_S12,
3913*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_PCR_S10,
3914*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_PCR_S7,
3915*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_ABS_S16,
3916*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_ABS_L16,
3917*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_ABS_H16,
3918*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_SBR_U15_B,
3919*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_SBR_U15_H,
3920*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_SBR_U15_W,
3921*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_SBR_S16,
3922*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_SBR_L16_B,
3923*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_SBR_L16_H,
3924*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_SBR_L16_W,
3925*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_SBR_H16_B,
3926*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_SBR_H16_H,
3927*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_SBR_H16_W,
3928*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_SBR_GOT_U15_W,
3929*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_SBR_GOT_L16_W,
3930*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_SBR_GOT_H16_W,
3931*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_DSBT_INDEX,
3932*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_PREL31,
3933*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_COPY,
3934*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_JUMP_SLOT,
3935*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_EHTYPE,
3936*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_PCR_H16,
3937*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_PCR_L16,
3938*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_ALIGN,
3939*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_FPHEAD,
3940*0a6a1f1dSLionel Sambuc   BFD_RELOC_C6000_NOCMP,
3941*0a6a1f1dSLionel Sambuc 
3942*0a6a1f1dSLionel Sambuc /* This is a 48 bit reloc for the FR30 that stores 32 bits.  */
3943*0a6a1f1dSLionel Sambuc   BFD_RELOC_FR30_48,
3944*0a6a1f1dSLionel Sambuc 
3945*0a6a1f1dSLionel Sambuc /* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
3946*0a6a1f1dSLionel Sambuc two sections.  */
3947*0a6a1f1dSLionel Sambuc   BFD_RELOC_FR30_20,
3948*0a6a1f1dSLionel Sambuc 
3949*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
3950*0a6a1f1dSLionel Sambuc 4 bits.  */
3951*0a6a1f1dSLionel Sambuc   BFD_RELOC_FR30_6_IN_4,
3952*0a6a1f1dSLionel Sambuc 
3953*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
3954*0a6a1f1dSLionel Sambuc into 8 bits.  */
3955*0a6a1f1dSLionel Sambuc   BFD_RELOC_FR30_8_IN_8,
3956*0a6a1f1dSLionel Sambuc 
3957*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
3958*0a6a1f1dSLionel Sambuc into 8 bits.  */
3959*0a6a1f1dSLionel Sambuc   BFD_RELOC_FR30_9_IN_8,
3960*0a6a1f1dSLionel Sambuc 
3961*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
3962*0a6a1f1dSLionel Sambuc into 8 bits.  */
3963*0a6a1f1dSLionel Sambuc   BFD_RELOC_FR30_10_IN_8,
3964*0a6a1f1dSLionel Sambuc 
3965*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
3966*0a6a1f1dSLionel Sambuc short offset into 8 bits.  */
3967*0a6a1f1dSLionel Sambuc   BFD_RELOC_FR30_9_PCREL,
3968*0a6a1f1dSLionel Sambuc 
3969*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
3970*0a6a1f1dSLionel Sambuc short offset into 11 bits.  */
3971*0a6a1f1dSLionel Sambuc   BFD_RELOC_FR30_12_PCREL,
3972*0a6a1f1dSLionel Sambuc 
3973*0a6a1f1dSLionel Sambuc /* Motorola Mcore relocations.  */
3974*0a6a1f1dSLionel Sambuc   BFD_RELOC_MCORE_PCREL_IMM8BY4,
3975*0a6a1f1dSLionel Sambuc   BFD_RELOC_MCORE_PCREL_IMM11BY2,
3976*0a6a1f1dSLionel Sambuc   BFD_RELOC_MCORE_PCREL_IMM4BY2,
3977*0a6a1f1dSLionel Sambuc   BFD_RELOC_MCORE_PCREL_32,
3978*0a6a1f1dSLionel Sambuc   BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
3979*0a6a1f1dSLionel Sambuc   BFD_RELOC_MCORE_RVA,
3980*0a6a1f1dSLionel Sambuc 
3981*0a6a1f1dSLionel Sambuc /* Toshiba Media Processor Relocations.  */
3982*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_8,
3983*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_16,
3984*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_32,
3985*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_PCREL8A2,
3986*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_PCREL12A2,
3987*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_PCREL17A2,
3988*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_PCREL24A2,
3989*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_PCABS24A2,
3990*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_LOW16,
3991*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_HI16U,
3992*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_HI16S,
3993*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_GPREL,
3994*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_TPREL,
3995*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_TPREL7,
3996*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_TPREL7A2,
3997*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_TPREL7A4,
3998*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_UIMM24,
3999*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_ADDR24A4,
4000*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_GNU_VTINHERIT,
4001*0a6a1f1dSLionel Sambuc   BFD_RELOC_MEP_GNU_VTENTRY,
4002*0a6a1f1dSLionel Sambuc 
4003*0a6a1f1dSLionel Sambuc 
4004*0a6a1f1dSLionel Sambuc /* These are relocations for the GETA instruction.  */
4005*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_GETA,
4006*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_GETA_1,
4007*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_GETA_2,
4008*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_GETA_3,
4009*0a6a1f1dSLionel Sambuc 
4010*0a6a1f1dSLionel Sambuc /* These are relocations for a conditional branch instruction.  */
4011*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_CBRANCH,
4012*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_CBRANCH_J,
4013*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_CBRANCH_1,
4014*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_CBRANCH_2,
4015*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_CBRANCH_3,
4016*0a6a1f1dSLionel Sambuc 
4017*0a6a1f1dSLionel Sambuc /* These are relocations for the PUSHJ instruction.  */
4018*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_PUSHJ,
4019*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_PUSHJ_1,
4020*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_PUSHJ_2,
4021*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_PUSHJ_3,
4022*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
4023*0a6a1f1dSLionel Sambuc 
4024*0a6a1f1dSLionel Sambuc /* These are relocations for the JMP instruction.  */
4025*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_JMP,
4026*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_JMP_1,
4027*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_JMP_2,
4028*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_JMP_3,
4029*0a6a1f1dSLionel Sambuc 
4030*0a6a1f1dSLionel Sambuc /* This is a relocation for a relative address as in a GETA instruction or
4031*0a6a1f1dSLionel Sambuc a branch.  */
4032*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_ADDR19,
4033*0a6a1f1dSLionel Sambuc 
4034*0a6a1f1dSLionel Sambuc /* This is a relocation for a relative address as in a JMP instruction.  */
4035*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_ADDR27,
4036*0a6a1f1dSLionel Sambuc 
4037*0a6a1f1dSLionel Sambuc /* This is a relocation for an instruction field that may be a general
4038*0a6a1f1dSLionel Sambuc register or a value 0..255.  */
4039*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_REG_OR_BYTE,
4040*0a6a1f1dSLionel Sambuc 
4041*0a6a1f1dSLionel Sambuc /* This is a relocation for an instruction field that may be a general
4042*0a6a1f1dSLionel Sambuc register.  */
4043*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_REG,
4044*0a6a1f1dSLionel Sambuc 
4045*0a6a1f1dSLionel Sambuc /* This is a relocation for two instruction fields holding a register and
4046*0a6a1f1dSLionel Sambuc an offset, the equivalent of the relocation.  */
4047*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
4048*0a6a1f1dSLionel Sambuc 
4049*0a6a1f1dSLionel Sambuc /* This relocation is an assertion that the expression is not allocated as
4050*0a6a1f1dSLionel Sambuc a global register.  It does not modify contents.  */
4051*0a6a1f1dSLionel Sambuc   BFD_RELOC_MMIX_LOCAL,
4052*0a6a1f1dSLionel Sambuc 
4053*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
4054*0a6a1f1dSLionel Sambuc short offset into 7 bits.  */
4055*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_7_PCREL,
4056*0a6a1f1dSLionel Sambuc 
4057*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
4058*0a6a1f1dSLionel Sambuc short offset into 12 bits.  */
4059*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_13_PCREL,
4060*0a6a1f1dSLionel Sambuc 
4061*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
4062*0a6a1f1dSLionel Sambuc program memory address) into 16 bits.  */
4063*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_16_PM,
4064*0a6a1f1dSLionel Sambuc 
4065*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
4066*0a6a1f1dSLionel Sambuc data memory address) into 8 bit immediate value of LDI insn.  */
4067*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_LO8_LDI,
4068*0a6a1f1dSLionel Sambuc 
4069*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4070*0a6a1f1dSLionel Sambuc of data memory address) into 8 bit immediate value of LDI insn.  */
4071*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_HI8_LDI,
4072*0a6a1f1dSLionel Sambuc 
4073*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
4074*0a6a1f1dSLionel Sambuc of program memory address) into 8 bit immediate value of LDI insn.  */
4075*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_HH8_LDI,
4076*0a6a1f1dSLionel Sambuc 
4077*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
4078*0a6a1f1dSLionel Sambuc of 32 bit value) into 8 bit immediate value of LDI insn.  */
4079*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_MS8_LDI,
4080*0a6a1f1dSLionel Sambuc 
4081*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4082*0a6a1f1dSLionel Sambuc (usually data memory address) into 8 bit immediate value of SUBI insn.  */
4083*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_LO8_LDI_NEG,
4084*0a6a1f1dSLionel Sambuc 
4085*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4086*0a6a1f1dSLionel Sambuc (high 8 bit of data memory address) into 8 bit immediate value of
4087*0a6a1f1dSLionel Sambuc SUBI insn.  */
4088*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_HI8_LDI_NEG,
4089*0a6a1f1dSLionel Sambuc 
4090*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4091*0a6a1f1dSLionel Sambuc (most high 8 bit of program memory address) into 8 bit immediate value
4092*0a6a1f1dSLionel Sambuc of LDI or SUBI insn.  */
4093*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_HH8_LDI_NEG,
4094*0a6a1f1dSLionel Sambuc 
4095*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
4096*0a6a1f1dSLionel Sambuc of 32 bit value) into 8 bit immediate value of LDI insn.  */
4097*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_MS8_LDI_NEG,
4098*0a6a1f1dSLionel Sambuc 
4099*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
4100*0a6a1f1dSLionel Sambuc command address) into 8 bit immediate value of LDI insn.  */
4101*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_LO8_LDI_PM,
4102*0a6a1f1dSLionel Sambuc 
4103*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value
4104*0a6a1f1dSLionel Sambuc (command address) into 8 bit immediate value of LDI insn. If the address
4105*0a6a1f1dSLionel Sambuc is beyond the 128k boundary, the linker inserts a jump stub for this reloc
4106*0a6a1f1dSLionel Sambuc in the lower 128k.  */
4107*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_LO8_LDI_GS,
4108*0a6a1f1dSLionel Sambuc 
4109*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4110*0a6a1f1dSLionel Sambuc of command address) into 8 bit immediate value of LDI insn.  */
4111*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_HI8_LDI_PM,
4112*0a6a1f1dSLionel Sambuc 
4113*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
4114*0a6a1f1dSLionel Sambuc of command address) into 8 bit immediate value of LDI insn.  If the address
4115*0a6a1f1dSLionel Sambuc is beyond the 128k boundary, the linker inserts a jump stub for this reloc
4116*0a6a1f1dSLionel Sambuc below 128k.  */
4117*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_HI8_LDI_GS,
4118*0a6a1f1dSLionel Sambuc 
4119*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
4120*0a6a1f1dSLionel Sambuc of command address) into 8 bit immediate value of LDI insn.  */
4121*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_HH8_LDI_PM,
4122*0a6a1f1dSLionel Sambuc 
4123*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4124*0a6a1f1dSLionel Sambuc (usually command address) into 8 bit immediate value of SUBI insn.  */
4125*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_LO8_LDI_PM_NEG,
4126*0a6a1f1dSLionel Sambuc 
4127*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4128*0a6a1f1dSLionel Sambuc (high 8 bit of 16 bit command address) into 8 bit immediate value
4129*0a6a1f1dSLionel Sambuc of SUBI insn.  */
4130*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_HI8_LDI_PM_NEG,
4131*0a6a1f1dSLionel Sambuc 
4132*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
4133*0a6a1f1dSLionel Sambuc (high 6 bit of 22 bit command address) into 8 bit immediate
4134*0a6a1f1dSLionel Sambuc value of SUBI insn.  */
4135*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_HH8_LDI_PM_NEG,
4136*0a6a1f1dSLionel Sambuc 
4137*0a6a1f1dSLionel Sambuc /* This is a 32 bit reloc for the AVR that stores 23 bit value
4138*0a6a1f1dSLionel Sambuc into 22 bits.  */
4139*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_CALL,
4140*0a6a1f1dSLionel Sambuc 
4141*0a6a1f1dSLionel Sambuc /* This is a 16 bit reloc for the AVR that stores all needed bits
4142*0a6a1f1dSLionel Sambuc for absolute addressing with ldi with overflow check to linktime  */
4143*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_LDI,
4144*0a6a1f1dSLionel Sambuc 
4145*0a6a1f1dSLionel Sambuc /* This is a 6 bit reloc for the AVR that stores offset for ldd/std
4146*0a6a1f1dSLionel Sambuc instructions  */
4147*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_6,
4148*0a6a1f1dSLionel Sambuc 
4149*0a6a1f1dSLionel Sambuc /* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
4150*0a6a1f1dSLionel Sambuc instructions  */
4151*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_6_ADIW,
4152*0a6a1f1dSLionel Sambuc 
4153*0a6a1f1dSLionel Sambuc /* This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
4154*0a6a1f1dSLionel Sambuc in .byte lo8(symbol)  */
4155*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_8_LO,
4156*0a6a1f1dSLionel Sambuc 
4157*0a6a1f1dSLionel Sambuc /* This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol
4158*0a6a1f1dSLionel Sambuc in .byte hi8(symbol)  */
4159*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_8_HI,
4160*0a6a1f1dSLionel Sambuc 
4161*0a6a1f1dSLionel Sambuc /* This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol
4162*0a6a1f1dSLionel Sambuc in .byte hlo8(symbol)  */
4163*0a6a1f1dSLionel Sambuc   BFD_RELOC_AVR_8_HLO,
4164*0a6a1f1dSLionel Sambuc 
4165*0a6a1f1dSLionel Sambuc /* Renesas RL78 Relocations.  */
4166*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_NEG8,
4167*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_NEG16,
4168*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_NEG24,
4169*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_NEG32,
4170*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_16_OP,
4171*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_24_OP,
4172*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_32_OP,
4173*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_8U,
4174*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_16U,
4175*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_24U,
4176*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_DIR3U_PCREL,
4177*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_DIFF,
4178*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_GPRELB,
4179*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_GPRELW,
4180*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_GPRELL,
4181*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_SYM,
4182*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_OP_SUBTRACT,
4183*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_OP_NEG,
4184*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_OP_AND,
4185*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_OP_SHRA,
4186*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_ABS8,
4187*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_ABS16,
4188*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_ABS16_REV,
4189*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_ABS32,
4190*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_ABS32_REV,
4191*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_ABS16U,
4192*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_ABS16UW,
4193*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_ABS16UL,
4194*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_RELAX,
4195*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_HI16,
4196*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_HI8,
4197*0a6a1f1dSLionel Sambuc   BFD_RELOC_RL78_LO16,
4198*0a6a1f1dSLionel Sambuc 
4199*0a6a1f1dSLionel Sambuc /* Renesas RX Relocations.  */
4200*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_NEG8,
4201*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_NEG16,
4202*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_NEG24,
4203*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_NEG32,
4204*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_16_OP,
4205*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_24_OP,
4206*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_32_OP,
4207*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_8U,
4208*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_16U,
4209*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_24U,
4210*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_DIR3U_PCREL,
4211*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_DIFF,
4212*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_GPRELB,
4213*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_GPRELW,
4214*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_GPRELL,
4215*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_SYM,
4216*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_OP_SUBTRACT,
4217*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_OP_NEG,
4218*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_ABS8,
4219*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_ABS16,
4220*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_ABS16_REV,
4221*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_ABS32,
4222*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_ABS32_REV,
4223*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_ABS16U,
4224*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_ABS16UW,
4225*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_ABS16UL,
4226*0a6a1f1dSLionel Sambuc   BFD_RELOC_RX_RELAX,
4227*0a6a1f1dSLionel Sambuc 
4228*0a6a1f1dSLionel Sambuc /* Direct 12 bit.  */
4229*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_12,
4230*0a6a1f1dSLionel Sambuc 
4231*0a6a1f1dSLionel Sambuc /* 12 bit GOT offset.  */
4232*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_GOT12,
4233*0a6a1f1dSLionel Sambuc 
4234*0a6a1f1dSLionel Sambuc /* 32 bit PC relative PLT address.  */
4235*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_PLT32,
4236*0a6a1f1dSLionel Sambuc 
4237*0a6a1f1dSLionel Sambuc /* Copy symbol at runtime.  */
4238*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_COPY,
4239*0a6a1f1dSLionel Sambuc 
4240*0a6a1f1dSLionel Sambuc /* Create GOT entry.  */
4241*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_GLOB_DAT,
4242*0a6a1f1dSLionel Sambuc 
4243*0a6a1f1dSLionel Sambuc /* Create PLT entry.  */
4244*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_JMP_SLOT,
4245*0a6a1f1dSLionel Sambuc 
4246*0a6a1f1dSLionel Sambuc /* Adjust by program base.  */
4247*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_RELATIVE,
4248*0a6a1f1dSLionel Sambuc 
4249*0a6a1f1dSLionel Sambuc /* 32 bit PC relative offset to GOT.  */
4250*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_GOTPC,
4251*0a6a1f1dSLionel Sambuc 
4252*0a6a1f1dSLionel Sambuc /* 16 bit GOT offset.  */
4253*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_GOT16,
4254*0a6a1f1dSLionel Sambuc 
4255*0a6a1f1dSLionel Sambuc /* PC relative 16 bit shifted by 1.  */
4256*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_PC16DBL,
4257*0a6a1f1dSLionel Sambuc 
4258*0a6a1f1dSLionel Sambuc /* 16 bit PC rel. PLT shifted by 1.  */
4259*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_PLT16DBL,
4260*0a6a1f1dSLionel Sambuc 
4261*0a6a1f1dSLionel Sambuc /* PC relative 32 bit shifted by 1.  */
4262*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_PC32DBL,
4263*0a6a1f1dSLionel Sambuc 
4264*0a6a1f1dSLionel Sambuc /* 32 bit PC rel. PLT shifted by 1.  */
4265*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_PLT32DBL,
4266*0a6a1f1dSLionel Sambuc 
4267*0a6a1f1dSLionel Sambuc /* 32 bit PC rel. GOT shifted by 1.  */
4268*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_GOTPCDBL,
4269*0a6a1f1dSLionel Sambuc 
4270*0a6a1f1dSLionel Sambuc /* 64 bit GOT offset.  */
4271*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_GOT64,
4272*0a6a1f1dSLionel Sambuc 
4273*0a6a1f1dSLionel Sambuc /* 64 bit PC relative PLT address.  */
4274*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_PLT64,
4275*0a6a1f1dSLionel Sambuc 
4276*0a6a1f1dSLionel Sambuc /* 32 bit rel. offset to GOT entry.  */
4277*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_GOTENT,
4278*0a6a1f1dSLionel Sambuc 
4279*0a6a1f1dSLionel Sambuc /* 64 bit offset to GOT.  */
4280*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_GOTOFF64,
4281*0a6a1f1dSLionel Sambuc 
4282*0a6a1f1dSLionel Sambuc /* 12-bit offset to symbol-entry within GOT, with PLT handling.  */
4283*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_GOTPLT12,
4284*0a6a1f1dSLionel Sambuc 
4285*0a6a1f1dSLionel Sambuc /* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
4286*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_GOTPLT16,
4287*0a6a1f1dSLionel Sambuc 
4288*0a6a1f1dSLionel Sambuc /* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
4289*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_GOTPLT32,
4290*0a6a1f1dSLionel Sambuc 
4291*0a6a1f1dSLionel Sambuc /* 64-bit offset to symbol-entry within GOT, with PLT handling.  */
4292*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_GOTPLT64,
4293*0a6a1f1dSLionel Sambuc 
4294*0a6a1f1dSLionel Sambuc /* 32-bit rel. offset to symbol-entry within GOT, with PLT handling.  */
4295*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_GOTPLTENT,
4296*0a6a1f1dSLionel Sambuc 
4297*0a6a1f1dSLionel Sambuc /* 16-bit rel. offset from the GOT to a PLT entry.  */
4298*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_PLTOFF16,
4299*0a6a1f1dSLionel Sambuc 
4300*0a6a1f1dSLionel Sambuc /* 32-bit rel. offset from the GOT to a PLT entry.  */
4301*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_PLTOFF32,
4302*0a6a1f1dSLionel Sambuc 
4303*0a6a1f1dSLionel Sambuc /* 64-bit rel. offset from the GOT to a PLT entry.  */
4304*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_PLTOFF64,
4305*0a6a1f1dSLionel Sambuc 
4306*0a6a1f1dSLionel Sambuc /* s390 tls relocations.  */
4307*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_LOAD,
4308*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_GDCALL,
4309*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_LDCALL,
4310*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_GD32,
4311*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_GD64,
4312*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_GOTIE12,
4313*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_GOTIE32,
4314*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_GOTIE64,
4315*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_LDM32,
4316*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_LDM64,
4317*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_IE32,
4318*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_IE64,
4319*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_IEENT,
4320*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_LE32,
4321*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_LE64,
4322*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_LDO32,
4323*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_LDO64,
4324*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_DTPMOD,
4325*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_DTPOFF,
4326*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_TPOFF,
4327*0a6a1f1dSLionel Sambuc 
4328*0a6a1f1dSLionel Sambuc /* Long displacement extension.  */
4329*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_20,
4330*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_GOT20,
4331*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_GOTPLT20,
4332*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_TLS_GOTIE20,
4333*0a6a1f1dSLionel Sambuc 
4334*0a6a1f1dSLionel Sambuc /* STT_GNU_IFUNC relocation.  */
4335*0a6a1f1dSLionel Sambuc   BFD_RELOC_390_IRELATIVE,
4336*0a6a1f1dSLionel Sambuc 
4337*0a6a1f1dSLionel Sambuc /* Score relocations
4338*0a6a1f1dSLionel Sambuc Low 16 bit for load/store  */
4339*0a6a1f1dSLionel Sambuc   BFD_RELOC_SCORE_GPREL15,
4340*0a6a1f1dSLionel Sambuc 
4341*0a6a1f1dSLionel Sambuc /* This is a 24-bit reloc with the right 1 bit assumed to be 0  */
4342*0a6a1f1dSLionel Sambuc   BFD_RELOC_SCORE_DUMMY2,
4343*0a6a1f1dSLionel Sambuc   BFD_RELOC_SCORE_JMP,
4344*0a6a1f1dSLionel Sambuc 
4345*0a6a1f1dSLionel Sambuc /* This is a 19-bit reloc with the right 1 bit assumed to be 0  */
4346*0a6a1f1dSLionel Sambuc   BFD_RELOC_SCORE_BRANCH,
4347*0a6a1f1dSLionel Sambuc 
4348*0a6a1f1dSLionel Sambuc /* This is a 32-bit reloc for 48-bit instructions.  */
4349*0a6a1f1dSLionel Sambuc   BFD_RELOC_SCORE_IMM30,
4350*0a6a1f1dSLionel Sambuc 
4351*0a6a1f1dSLionel Sambuc /* This is a 32-bit reloc for 48-bit instructions.  */
4352*0a6a1f1dSLionel Sambuc   BFD_RELOC_SCORE_IMM32,
4353*0a6a1f1dSLionel Sambuc 
4354*0a6a1f1dSLionel Sambuc /* This is a 11-bit reloc with the right 1 bit assumed to be 0  */
4355*0a6a1f1dSLionel Sambuc   BFD_RELOC_SCORE16_JMP,
4356*0a6a1f1dSLionel Sambuc 
4357*0a6a1f1dSLionel Sambuc /* This is a 8-bit reloc with the right 1 bit assumed to be 0  */
4358*0a6a1f1dSLionel Sambuc   BFD_RELOC_SCORE16_BRANCH,
4359*0a6a1f1dSLionel Sambuc 
4360*0a6a1f1dSLionel Sambuc /* This is a 9-bit reloc with the right 1 bit assumed to be 0  */
4361*0a6a1f1dSLionel Sambuc   BFD_RELOC_SCORE_BCMP,
4362*0a6a1f1dSLionel Sambuc 
4363*0a6a1f1dSLionel Sambuc /* Undocumented Score relocs  */
4364*0a6a1f1dSLionel Sambuc   BFD_RELOC_SCORE_GOT15,
4365*0a6a1f1dSLionel Sambuc   BFD_RELOC_SCORE_GOT_LO16,
4366*0a6a1f1dSLionel Sambuc   BFD_RELOC_SCORE_CALL15,
4367*0a6a1f1dSLionel Sambuc   BFD_RELOC_SCORE_DUMMY_HI16,
4368*0a6a1f1dSLionel Sambuc 
4369*0a6a1f1dSLionel Sambuc /* Scenix IP2K - 9-bit register number / data address  */
4370*0a6a1f1dSLionel Sambuc   BFD_RELOC_IP2K_FR9,
4371*0a6a1f1dSLionel Sambuc 
4372*0a6a1f1dSLionel Sambuc /* Scenix IP2K - 4-bit register/data bank number  */
4373*0a6a1f1dSLionel Sambuc   BFD_RELOC_IP2K_BANK,
4374*0a6a1f1dSLionel Sambuc 
4375*0a6a1f1dSLionel Sambuc /* Scenix IP2K - low 13 bits of instruction word address  */
4376*0a6a1f1dSLionel Sambuc   BFD_RELOC_IP2K_ADDR16CJP,
4377*0a6a1f1dSLionel Sambuc 
4378*0a6a1f1dSLionel Sambuc /* Scenix IP2K - high 3 bits of instruction word address  */
4379*0a6a1f1dSLionel Sambuc   BFD_RELOC_IP2K_PAGE3,
4380*0a6a1f1dSLionel Sambuc 
4381*0a6a1f1dSLionel Sambuc /* Scenix IP2K - ext/low/high 8 bits of data address  */
4382*0a6a1f1dSLionel Sambuc   BFD_RELOC_IP2K_LO8DATA,
4383*0a6a1f1dSLionel Sambuc   BFD_RELOC_IP2K_HI8DATA,
4384*0a6a1f1dSLionel Sambuc   BFD_RELOC_IP2K_EX8DATA,
4385*0a6a1f1dSLionel Sambuc 
4386*0a6a1f1dSLionel Sambuc /* Scenix IP2K - low/high 8 bits of instruction word address  */
4387*0a6a1f1dSLionel Sambuc   BFD_RELOC_IP2K_LO8INSN,
4388*0a6a1f1dSLionel Sambuc   BFD_RELOC_IP2K_HI8INSN,
4389*0a6a1f1dSLionel Sambuc 
4390*0a6a1f1dSLionel Sambuc /* Scenix IP2K - even/odd PC modifier to modify snb pcl.0  */
4391*0a6a1f1dSLionel Sambuc   BFD_RELOC_IP2K_PC_SKIP,
4392*0a6a1f1dSLionel Sambuc 
4393*0a6a1f1dSLionel Sambuc /* Scenix IP2K - 16 bit word address in text section.  */
4394*0a6a1f1dSLionel Sambuc   BFD_RELOC_IP2K_TEXT,
4395*0a6a1f1dSLionel Sambuc 
4396*0a6a1f1dSLionel Sambuc /* Scenix IP2K - 7-bit sp or dp offset  */
4397*0a6a1f1dSLionel Sambuc   BFD_RELOC_IP2K_FR_OFFSET,
4398*0a6a1f1dSLionel Sambuc 
4399*0a6a1f1dSLionel Sambuc /* Scenix VPE4K coprocessor - data/insn-space addressing  */
4400*0a6a1f1dSLionel Sambuc   BFD_RELOC_VPE4KMATH_DATA,
4401*0a6a1f1dSLionel Sambuc   BFD_RELOC_VPE4KMATH_INSN,
4402*0a6a1f1dSLionel Sambuc 
4403*0a6a1f1dSLionel Sambuc /* These two relocations are used by the linker to determine which of
4404*0a6a1f1dSLionel Sambuc the entries in a C++ virtual function table are actually used.  When
4405*0a6a1f1dSLionel Sambuc the --gc-sections option is given, the linker will zero out the entries
4406*0a6a1f1dSLionel Sambuc that are not used, so that the code for those functions need not be
4407*0a6a1f1dSLionel Sambuc included in the output.
4408*0a6a1f1dSLionel Sambuc 
4409*0a6a1f1dSLionel Sambuc VTABLE_INHERIT is a zero-space relocation used to describe to the
4410*0a6a1f1dSLionel Sambuc linker the inheritance tree of a C++ virtual function table.  The
4411*0a6a1f1dSLionel Sambuc relocation's symbol should be the parent class' vtable, and the
4412*0a6a1f1dSLionel Sambuc relocation should be located at the child vtable.
4413*0a6a1f1dSLionel Sambuc 
4414*0a6a1f1dSLionel Sambuc VTABLE_ENTRY is a zero-space relocation that describes the use of a
4415*0a6a1f1dSLionel Sambuc virtual function table entry.  The reloc's symbol should refer to the
4416*0a6a1f1dSLionel Sambuc table of the class mentioned in the code.  Off of that base, an offset
4417*0a6a1f1dSLionel Sambuc describes the entry that is being used.  For Rela hosts, this offset
4418*0a6a1f1dSLionel Sambuc is stored in the reloc's addend.  For Rel hosts, we are forced to put
4419*0a6a1f1dSLionel Sambuc this offset in the reloc's section offset.  */
4420*0a6a1f1dSLionel Sambuc   BFD_RELOC_VTABLE_INHERIT,
4421*0a6a1f1dSLionel Sambuc   BFD_RELOC_VTABLE_ENTRY,
4422*0a6a1f1dSLionel Sambuc 
4423*0a6a1f1dSLionel Sambuc /* Intel IA64 Relocations.  */
4424*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_IMM14,
4425*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_IMM22,
4426*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_IMM64,
4427*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_DIR32MSB,
4428*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_DIR32LSB,
4429*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_DIR64MSB,
4430*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_DIR64LSB,
4431*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_GPREL22,
4432*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_GPREL64I,
4433*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_GPREL32MSB,
4434*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_GPREL32LSB,
4435*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_GPREL64MSB,
4436*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_GPREL64LSB,
4437*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LTOFF22,
4438*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LTOFF64I,
4439*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_PLTOFF22,
4440*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_PLTOFF64I,
4441*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_PLTOFF64MSB,
4442*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_PLTOFF64LSB,
4443*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_FPTR64I,
4444*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_FPTR32MSB,
4445*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_FPTR32LSB,
4446*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_FPTR64MSB,
4447*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_FPTR64LSB,
4448*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_PCREL21B,
4449*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_PCREL21BI,
4450*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_PCREL21M,
4451*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_PCREL21F,
4452*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_PCREL22,
4453*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_PCREL60B,
4454*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_PCREL64I,
4455*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_PCREL32MSB,
4456*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_PCREL32LSB,
4457*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_PCREL64MSB,
4458*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_PCREL64LSB,
4459*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LTOFF_FPTR22,
4460*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LTOFF_FPTR64I,
4461*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LTOFF_FPTR32MSB,
4462*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LTOFF_FPTR32LSB,
4463*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LTOFF_FPTR64MSB,
4464*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LTOFF_FPTR64LSB,
4465*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_SEGREL32MSB,
4466*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_SEGREL32LSB,
4467*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_SEGREL64MSB,
4468*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_SEGREL64LSB,
4469*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_SECREL32MSB,
4470*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_SECREL32LSB,
4471*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_SECREL64MSB,
4472*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_SECREL64LSB,
4473*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_REL32MSB,
4474*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_REL32LSB,
4475*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_REL64MSB,
4476*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_REL64LSB,
4477*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LTV32MSB,
4478*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LTV32LSB,
4479*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LTV64MSB,
4480*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LTV64LSB,
4481*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_IPLTMSB,
4482*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_IPLTLSB,
4483*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_COPY,
4484*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LTOFF22X,
4485*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LDXMOV,
4486*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_TPREL14,
4487*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_TPREL22,
4488*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_TPREL64I,
4489*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_TPREL64MSB,
4490*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_TPREL64LSB,
4491*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LTOFF_TPREL22,
4492*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_DTPMOD64MSB,
4493*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_DTPMOD64LSB,
4494*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LTOFF_DTPMOD22,
4495*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_DTPREL14,
4496*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_DTPREL22,
4497*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_DTPREL64I,
4498*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_DTPREL32MSB,
4499*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_DTPREL32LSB,
4500*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_DTPREL64MSB,
4501*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_DTPREL64LSB,
4502*0a6a1f1dSLionel Sambuc   BFD_RELOC_IA64_LTOFF_DTPREL22,
4503*0a6a1f1dSLionel Sambuc 
4504*0a6a1f1dSLionel Sambuc /* Motorola 68HC11 reloc.
4505*0a6a1f1dSLionel Sambuc This is the 8 bit high part of an absolute address.  */
4506*0a6a1f1dSLionel Sambuc   BFD_RELOC_M68HC11_HI8,
4507*0a6a1f1dSLionel Sambuc 
4508*0a6a1f1dSLionel Sambuc /* Motorola 68HC11 reloc.
4509*0a6a1f1dSLionel Sambuc This is the 8 bit low part of an absolute address.  */
4510*0a6a1f1dSLionel Sambuc   BFD_RELOC_M68HC11_LO8,
4511*0a6a1f1dSLionel Sambuc 
4512*0a6a1f1dSLionel Sambuc /* Motorola 68HC11 reloc.
4513*0a6a1f1dSLionel Sambuc This is the 3 bit of a value.  */
4514*0a6a1f1dSLionel Sambuc   BFD_RELOC_M68HC11_3B,
4515*0a6a1f1dSLionel Sambuc 
4516*0a6a1f1dSLionel Sambuc /* Motorola 68HC11 reloc.
4517*0a6a1f1dSLionel Sambuc This reloc marks the beginning of a jump/call instruction.
4518*0a6a1f1dSLionel Sambuc It is used for linker relaxation to correctly identify beginning
4519*0a6a1f1dSLionel Sambuc of instruction and change some branches to use PC-relative
4520*0a6a1f1dSLionel Sambuc addressing mode.  */
4521*0a6a1f1dSLionel Sambuc   BFD_RELOC_M68HC11_RL_JUMP,
4522*0a6a1f1dSLionel Sambuc 
4523*0a6a1f1dSLionel Sambuc /* Motorola 68HC11 reloc.
4524*0a6a1f1dSLionel Sambuc This reloc marks a group of several instructions that gcc generates
4525*0a6a1f1dSLionel Sambuc and for which the linker relaxation pass can modify and/or remove
4526*0a6a1f1dSLionel Sambuc some of them.  */
4527*0a6a1f1dSLionel Sambuc   BFD_RELOC_M68HC11_RL_GROUP,
4528*0a6a1f1dSLionel Sambuc 
4529*0a6a1f1dSLionel Sambuc /* Motorola 68HC11 reloc.
4530*0a6a1f1dSLionel Sambuc This is the 16-bit lower part of an address.  It is used for 'call'
4531*0a6a1f1dSLionel Sambuc instruction to specify the symbol address without any special
4532*0a6a1f1dSLionel Sambuc transformation (due to memory bank window).  */
4533*0a6a1f1dSLionel Sambuc   BFD_RELOC_M68HC11_LO16,
4534*0a6a1f1dSLionel Sambuc 
4535*0a6a1f1dSLionel Sambuc /* Motorola 68HC11 reloc.
4536*0a6a1f1dSLionel Sambuc This is a 8-bit reloc that specifies the page number of an address.
4537*0a6a1f1dSLionel Sambuc It is used by 'call' instruction to specify the page number of
4538*0a6a1f1dSLionel Sambuc the symbol.  */
4539*0a6a1f1dSLionel Sambuc   BFD_RELOC_M68HC11_PAGE,
4540*0a6a1f1dSLionel Sambuc 
4541*0a6a1f1dSLionel Sambuc /* Motorola 68HC11 reloc.
4542*0a6a1f1dSLionel Sambuc This is a 24-bit reloc that represents the address with a 16-bit
4543*0a6a1f1dSLionel Sambuc value and a 8-bit page number.  The symbol address is transformed
4544*0a6a1f1dSLionel Sambuc to follow the 16K memory bank of 68HC12 (seen as mapped in the window).  */
4545*0a6a1f1dSLionel Sambuc   BFD_RELOC_M68HC11_24,
4546*0a6a1f1dSLionel Sambuc 
4547*0a6a1f1dSLionel Sambuc /* Motorola 68HC12 reloc.
4548*0a6a1f1dSLionel Sambuc This is the 5 bits of a value.  */
4549*0a6a1f1dSLionel Sambuc   BFD_RELOC_M68HC12_5B,
4550*0a6a1f1dSLionel Sambuc 
4551*0a6a1f1dSLionel Sambuc /* Freescale XGATE reloc.
4552*0a6a1f1dSLionel Sambuc This reloc marks the beginning of a bra/jal instruction.  */
4553*0a6a1f1dSLionel Sambuc   BFD_RELOC_XGATE_RL_JUMP,
4554*0a6a1f1dSLionel Sambuc 
4555*0a6a1f1dSLionel Sambuc /* Freescale XGATE reloc.
4556*0a6a1f1dSLionel Sambuc This reloc marks a group of several instructions that gcc generates
4557*0a6a1f1dSLionel Sambuc and for which the linker relaxation pass can modify and/or remove
4558*0a6a1f1dSLionel Sambuc some of them.  */
4559*0a6a1f1dSLionel Sambuc   BFD_RELOC_XGATE_RL_GROUP,
4560*0a6a1f1dSLionel Sambuc 
4561*0a6a1f1dSLionel Sambuc /* Freescale XGATE reloc.
4562*0a6a1f1dSLionel Sambuc This is the 16-bit lower part of an address.  It is used for the '16-bit'
4563*0a6a1f1dSLionel Sambuc instructions.  */
4564*0a6a1f1dSLionel Sambuc   BFD_RELOC_XGATE_LO16,
4565*0a6a1f1dSLionel Sambuc 
4566*0a6a1f1dSLionel Sambuc /* Freescale XGATE reloc.  */
4567*0a6a1f1dSLionel Sambuc   BFD_RELOC_XGATE_GPAGE,
4568*0a6a1f1dSLionel Sambuc 
4569*0a6a1f1dSLionel Sambuc /* Freescale XGATE reloc.  */
4570*0a6a1f1dSLionel Sambuc   BFD_RELOC_XGATE_24,
4571*0a6a1f1dSLionel Sambuc 
4572*0a6a1f1dSLionel Sambuc /* Freescale XGATE reloc.
4573*0a6a1f1dSLionel Sambuc This is a 9-bit pc-relative reloc.  */
4574*0a6a1f1dSLionel Sambuc   BFD_RELOC_XGATE_PCREL_9,
4575*0a6a1f1dSLionel Sambuc 
4576*0a6a1f1dSLionel Sambuc /* Freescale XGATE reloc.
4577*0a6a1f1dSLionel Sambuc This is a 10-bit pc-relative reloc.  */
4578*0a6a1f1dSLionel Sambuc   BFD_RELOC_XGATE_PCREL_10,
4579*0a6a1f1dSLionel Sambuc 
4580*0a6a1f1dSLionel Sambuc /* Freescale XGATE reloc.
4581*0a6a1f1dSLionel Sambuc This is the 16-bit lower part of an address.  It is used for the '16-bit'
4582*0a6a1f1dSLionel Sambuc instructions.  */
4583*0a6a1f1dSLionel Sambuc   BFD_RELOC_XGATE_IMM8_LO,
4584*0a6a1f1dSLionel Sambuc 
4585*0a6a1f1dSLionel Sambuc /* Freescale XGATE reloc.
4586*0a6a1f1dSLionel Sambuc This is the 16-bit higher part of an address.  It is used for the '16-bit'
4587*0a6a1f1dSLionel Sambuc instructions.  */
4588*0a6a1f1dSLionel Sambuc   BFD_RELOC_XGATE_IMM8_HI,
4589*0a6a1f1dSLionel Sambuc 
4590*0a6a1f1dSLionel Sambuc /* Freescale XGATE reloc.
4591*0a6a1f1dSLionel Sambuc This is a 3-bit pc-relative reloc.  */
4592*0a6a1f1dSLionel Sambuc   BFD_RELOC_XGATE_IMM3,
4593*0a6a1f1dSLionel Sambuc 
4594*0a6a1f1dSLionel Sambuc /* Freescale XGATE reloc.
4595*0a6a1f1dSLionel Sambuc This is a 4-bit pc-relative reloc.  */
4596*0a6a1f1dSLionel Sambuc   BFD_RELOC_XGATE_IMM4,
4597*0a6a1f1dSLionel Sambuc 
4598*0a6a1f1dSLionel Sambuc /* Freescale XGATE reloc.
4599*0a6a1f1dSLionel Sambuc This is a 5-bit pc-relative reloc.  */
4600*0a6a1f1dSLionel Sambuc   BFD_RELOC_XGATE_IMM5,
4601*0a6a1f1dSLionel Sambuc 
4602*0a6a1f1dSLionel Sambuc /* Motorola 68HC12 reloc.
4603*0a6a1f1dSLionel Sambuc This is the 9 bits of a value.  */
4604*0a6a1f1dSLionel Sambuc   BFD_RELOC_M68HC12_9B,
4605*0a6a1f1dSLionel Sambuc 
4606*0a6a1f1dSLionel Sambuc /* Motorola 68HC12 reloc.
4607*0a6a1f1dSLionel Sambuc This is the 16 bits of a value.  */
4608*0a6a1f1dSLionel Sambuc   BFD_RELOC_M68HC12_16B,
4609*0a6a1f1dSLionel Sambuc 
4610*0a6a1f1dSLionel Sambuc /* Motorola 68HC12/XGATE reloc.
4611*0a6a1f1dSLionel Sambuc This is a PCREL9 branch.  */
4612*0a6a1f1dSLionel Sambuc   BFD_RELOC_M68HC12_9_PCREL,
4613*0a6a1f1dSLionel Sambuc 
4614*0a6a1f1dSLionel Sambuc /* Motorola 68HC12/XGATE reloc.
4615*0a6a1f1dSLionel Sambuc This is a PCREL10 branch.  */
4616*0a6a1f1dSLionel Sambuc   BFD_RELOC_M68HC12_10_PCREL,
4617*0a6a1f1dSLionel Sambuc 
4618*0a6a1f1dSLionel Sambuc /* Motorola 68HC12/XGATE reloc.
4619*0a6a1f1dSLionel Sambuc This is the 8 bit low part of an absolute address and immediately precedes
4620*0a6a1f1dSLionel Sambuc a matching HI8XG part.  */
4621*0a6a1f1dSLionel Sambuc   BFD_RELOC_M68HC12_LO8XG,
4622*0a6a1f1dSLionel Sambuc 
4623*0a6a1f1dSLionel Sambuc /* Motorola 68HC12/XGATE reloc.
4624*0a6a1f1dSLionel Sambuc This is the 8 bit high part of an absolute address and immediately follows
4625*0a6a1f1dSLionel Sambuc a matching LO8XG part.  */
4626*0a6a1f1dSLionel Sambuc   BFD_RELOC_M68HC12_HI8XG,
4627*0a6a1f1dSLionel Sambuc 
4628*0a6a1f1dSLionel Sambuc /* NS CR16C Relocations.  */
4629*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_NUM08,
4630*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_NUM08_C,
4631*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_NUM16,
4632*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_NUM16_C,
4633*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_NUM32,
4634*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_NUM32_C,
4635*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_DISP04,
4636*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_DISP04_C,
4637*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_DISP08,
4638*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_DISP08_C,
4639*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_DISP16,
4640*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_DISP16_C,
4641*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_DISP24,
4642*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_DISP24_C,
4643*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_DISP24a,
4644*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_DISP24a_C,
4645*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_REG04,
4646*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_REG04_C,
4647*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_REG04a,
4648*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_REG04a_C,
4649*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_REG14,
4650*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_REG14_C,
4651*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_REG16,
4652*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_REG16_C,
4653*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_REG20,
4654*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_REG20_C,
4655*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_ABS20,
4656*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_ABS20_C,
4657*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_ABS24,
4658*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_ABS24_C,
4659*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_IMM04,
4660*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_IMM04_C,
4661*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_IMM16,
4662*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_IMM16_C,
4663*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_IMM20,
4664*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_IMM20_C,
4665*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_IMM24,
4666*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_IMM24_C,
4667*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_IMM32,
4668*0a6a1f1dSLionel Sambuc   BFD_RELOC_16C_IMM32_C,
4669*0a6a1f1dSLionel Sambuc 
4670*0a6a1f1dSLionel Sambuc /* NS CR16 Relocations.  */
4671*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_NUM8,
4672*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_NUM16,
4673*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_NUM32,
4674*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_NUM32a,
4675*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_REGREL0,
4676*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_REGREL4,
4677*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_REGREL4a,
4678*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_REGREL14,
4679*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_REGREL14a,
4680*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_REGREL16,
4681*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_REGREL20,
4682*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_REGREL20a,
4683*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_ABS20,
4684*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_ABS24,
4685*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_IMM4,
4686*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_IMM8,
4687*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_IMM16,
4688*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_IMM20,
4689*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_IMM24,
4690*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_IMM32,
4691*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_IMM32a,
4692*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_DISP4,
4693*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_DISP8,
4694*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_DISP16,
4695*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_DISP20,
4696*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_DISP24,
4697*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_DISP24a,
4698*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_SWITCH8,
4699*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_SWITCH16,
4700*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_SWITCH32,
4701*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_GOT_REGREL20,
4702*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_GOTC_REGREL20,
4703*0a6a1f1dSLionel Sambuc   BFD_RELOC_CR16_GLOB_DAT,
4704*0a6a1f1dSLionel Sambuc 
4705*0a6a1f1dSLionel Sambuc /* NS CRX Relocations.  */
4706*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_REL4,
4707*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_REL8,
4708*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_REL8_CMP,
4709*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_REL16,
4710*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_REL24,
4711*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_REL32,
4712*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_REGREL12,
4713*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_REGREL22,
4714*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_REGREL28,
4715*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_REGREL32,
4716*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_ABS16,
4717*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_ABS32,
4718*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_NUM8,
4719*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_NUM16,
4720*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_NUM32,
4721*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_IMM16,
4722*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_IMM32,
4723*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_SWITCH8,
4724*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_SWITCH16,
4725*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRX_SWITCH32,
4726*0a6a1f1dSLionel Sambuc 
4727*0a6a1f1dSLionel Sambuc /* These relocs are only used within the CRIS assembler.  They are not
4728*0a6a1f1dSLionel Sambuc (at present) written to any object files.  */
4729*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_BDISP8,
4730*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_UNSIGNED_5,
4731*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_SIGNED_6,
4732*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_UNSIGNED_6,
4733*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_SIGNED_8,
4734*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_UNSIGNED_8,
4735*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_SIGNED_16,
4736*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_UNSIGNED_16,
4737*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_LAPCQ_OFFSET,
4738*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_UNSIGNED_4,
4739*0a6a1f1dSLionel Sambuc 
4740*0a6a1f1dSLionel Sambuc /* Relocs used in ELF shared libraries for CRIS.  */
4741*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_COPY,
4742*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_GLOB_DAT,
4743*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_JUMP_SLOT,
4744*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_RELATIVE,
4745*0a6a1f1dSLionel Sambuc 
4746*0a6a1f1dSLionel Sambuc /* 32-bit offset to symbol-entry within GOT.  */
4747*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_32_GOT,
4748*0a6a1f1dSLionel Sambuc 
4749*0a6a1f1dSLionel Sambuc /* 16-bit offset to symbol-entry within GOT.  */
4750*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_16_GOT,
4751*0a6a1f1dSLionel Sambuc 
4752*0a6a1f1dSLionel Sambuc /* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
4753*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_32_GOTPLT,
4754*0a6a1f1dSLionel Sambuc 
4755*0a6a1f1dSLionel Sambuc /* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
4756*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_16_GOTPLT,
4757*0a6a1f1dSLionel Sambuc 
4758*0a6a1f1dSLionel Sambuc /* 32-bit offset to symbol, relative to GOT.  */
4759*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_32_GOTREL,
4760*0a6a1f1dSLionel Sambuc 
4761*0a6a1f1dSLionel Sambuc /* 32-bit offset to symbol with PLT entry, relative to GOT.  */
4762*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_32_PLT_GOTREL,
4763*0a6a1f1dSLionel Sambuc 
4764*0a6a1f1dSLionel Sambuc /* 32-bit offset to symbol with PLT entry, relative to this relocation.  */
4765*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_32_PLT_PCREL,
4766*0a6a1f1dSLionel Sambuc 
4767*0a6a1f1dSLionel Sambuc /* Relocs used in TLS code for CRIS.  */
4768*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_32_GOT_GD,
4769*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_16_GOT_GD,
4770*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_32_GD,
4771*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_DTP,
4772*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_32_DTPREL,
4773*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_16_DTPREL,
4774*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_32_GOT_TPREL,
4775*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_16_GOT_TPREL,
4776*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_32_TPREL,
4777*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_16_TPREL,
4778*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_DTPMOD,
4779*0a6a1f1dSLionel Sambuc   BFD_RELOC_CRIS_32_IE,
4780*0a6a1f1dSLionel Sambuc 
4781*0a6a1f1dSLionel Sambuc /* Intel i860 Relocations.  */
4782*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_COPY,
4783*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_GLOB_DAT,
4784*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_JUMP_SLOT,
4785*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_RELATIVE,
4786*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_PC26,
4787*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_PLT26,
4788*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_PC16,
4789*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_LOW0,
4790*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_SPLIT0,
4791*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_LOW1,
4792*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_SPLIT1,
4793*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_LOW2,
4794*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_SPLIT2,
4795*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_LOW3,
4796*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_LOGOT0,
4797*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_SPGOT0,
4798*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_LOGOT1,
4799*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_SPGOT1,
4800*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_LOGOTOFF0,
4801*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_SPGOTOFF0,
4802*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_LOGOTOFF1,
4803*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_SPGOTOFF1,
4804*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_LOGOTOFF2,
4805*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_LOGOTOFF3,
4806*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_LOPC,
4807*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_HIGHADJ,
4808*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_HAGOT,
4809*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_HAGOTOFF,
4810*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_HAPC,
4811*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_HIGH,
4812*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_HIGOT,
4813*0a6a1f1dSLionel Sambuc   BFD_RELOC_860_HIGOTOFF,
4814*0a6a1f1dSLionel Sambuc 
4815*0a6a1f1dSLionel Sambuc /* OpenRISC 1000 Relocations.  */
4816*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_REL_26,
4817*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_GOTPC_HI16,
4818*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_GOTPC_LO16,
4819*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_GOT16,
4820*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_PLT26,
4821*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_GOTOFF_HI16,
4822*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_GOTOFF_LO16,
4823*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_COPY,
4824*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_GLOB_DAT,
4825*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_JMP_SLOT,
4826*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_RELATIVE,
4827*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_TLS_GD_HI16,
4828*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_TLS_GD_LO16,
4829*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_TLS_LDM_HI16,
4830*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_TLS_LDM_LO16,
4831*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_TLS_LDO_HI16,
4832*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_TLS_LDO_LO16,
4833*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_TLS_IE_HI16,
4834*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_TLS_IE_LO16,
4835*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_TLS_LE_HI16,
4836*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_TLS_LE_LO16,
4837*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_TLS_TPOFF,
4838*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_TLS_DTPOFF,
4839*0a6a1f1dSLionel Sambuc   BFD_RELOC_OR1K_TLS_DTPMOD,
4840*0a6a1f1dSLionel Sambuc 
4841*0a6a1f1dSLionel Sambuc /* RISC-V relocations.  */
4842*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_HI20,
4843*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_PCREL_HI20,
4844*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_PCREL_LO12_I,
4845*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_PCREL_LO12_S,
4846*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_LO12_I,
4847*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_LO12_S,
4848*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_GPREL12_I,
4849*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_GPREL12_S,
4850*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_TPREL_HI20,
4851*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_TPREL_LO12_I,
4852*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_TPREL_LO12_S,
4853*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_TPREL_ADD,
4854*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_CALL,
4855*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_CALL_PLT,
4856*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_ADD8,
4857*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_ADD16,
4858*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_ADD32,
4859*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_ADD64,
4860*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_SUB8,
4861*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_SUB16,
4862*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_SUB32,
4863*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_SUB64,
4864*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_GOT_HI20,
4865*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_TLS_GOT_HI20,
4866*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_TLS_GD_HI20,
4867*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_JMP,
4868*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_TLS_DTPMOD32,
4869*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_TLS_DTPREL32,
4870*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_TLS_DTPMOD64,
4871*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_TLS_DTPREL64,
4872*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_TLS_TPREL32,
4873*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_TLS_TPREL64,
4874*0a6a1f1dSLionel Sambuc   BFD_RELOC_RISCV_ALIGN,
4875*0a6a1f1dSLionel Sambuc 
4876*0a6a1f1dSLionel Sambuc /* H8 elf Relocations.  */
4877*0a6a1f1dSLionel Sambuc   BFD_RELOC_H8_DIR16A8,
4878*0a6a1f1dSLionel Sambuc   BFD_RELOC_H8_DIR16R8,
4879*0a6a1f1dSLionel Sambuc   BFD_RELOC_H8_DIR24A8,
4880*0a6a1f1dSLionel Sambuc   BFD_RELOC_H8_DIR24R8,
4881*0a6a1f1dSLionel Sambuc   BFD_RELOC_H8_DIR32A16,
4882*0a6a1f1dSLionel Sambuc 
4883*0a6a1f1dSLionel Sambuc /* Sony Xstormy16 Relocations.  */
4884*0a6a1f1dSLionel Sambuc   BFD_RELOC_XSTORMY16_REL_12,
4885*0a6a1f1dSLionel Sambuc   BFD_RELOC_XSTORMY16_12,
4886*0a6a1f1dSLionel Sambuc   BFD_RELOC_XSTORMY16_24,
4887*0a6a1f1dSLionel Sambuc   BFD_RELOC_XSTORMY16_FPTR16,
4888*0a6a1f1dSLionel Sambuc 
4889*0a6a1f1dSLionel Sambuc /* Self-describing complex relocations.  */
4890*0a6a1f1dSLionel Sambuc   BFD_RELOC_RELC,
4891*0a6a1f1dSLionel Sambuc 
4892*0a6a1f1dSLionel Sambuc 
4893*0a6a1f1dSLionel Sambuc /* Infineon Relocations.  */
4894*0a6a1f1dSLionel Sambuc   BFD_RELOC_XC16X_PAG,
4895*0a6a1f1dSLionel Sambuc   BFD_RELOC_XC16X_POF,
4896*0a6a1f1dSLionel Sambuc   BFD_RELOC_XC16X_SEG,
4897*0a6a1f1dSLionel Sambuc   BFD_RELOC_XC16X_SOF,
4898*0a6a1f1dSLionel Sambuc 
4899*0a6a1f1dSLionel Sambuc /* Relocations used by VAX ELF.  */
4900*0a6a1f1dSLionel Sambuc   BFD_RELOC_VAX_GLOB_DAT,
4901*0a6a1f1dSLionel Sambuc   BFD_RELOC_VAX_JMP_SLOT,
4902*0a6a1f1dSLionel Sambuc   BFD_RELOC_VAX_RELATIVE,
4903*0a6a1f1dSLionel Sambuc 
4904*0a6a1f1dSLionel Sambuc /* Morpho MT - 16 bit immediate relocation.  */
4905*0a6a1f1dSLionel Sambuc   BFD_RELOC_MT_PC16,
4906*0a6a1f1dSLionel Sambuc 
4907*0a6a1f1dSLionel Sambuc /* Morpho MT - Hi 16 bits of an address.  */
4908*0a6a1f1dSLionel Sambuc   BFD_RELOC_MT_HI16,
4909*0a6a1f1dSLionel Sambuc 
4910*0a6a1f1dSLionel Sambuc /* Morpho MT - Low 16 bits of an address.  */
4911*0a6a1f1dSLionel Sambuc   BFD_RELOC_MT_LO16,
4912*0a6a1f1dSLionel Sambuc 
4913*0a6a1f1dSLionel Sambuc /* Morpho MT - Used to tell the linker which vtable entries are used.  */
4914*0a6a1f1dSLionel Sambuc   BFD_RELOC_MT_GNU_VTINHERIT,
4915*0a6a1f1dSLionel Sambuc 
4916*0a6a1f1dSLionel Sambuc /* Morpho MT - Used to tell the linker which vtable entries are used.  */
4917*0a6a1f1dSLionel Sambuc   BFD_RELOC_MT_GNU_VTENTRY,
4918*0a6a1f1dSLionel Sambuc 
4919*0a6a1f1dSLionel Sambuc /* Morpho MT - 8 bit immediate relocation.  */
4920*0a6a1f1dSLionel Sambuc   BFD_RELOC_MT_PCINSN8,
4921*0a6a1f1dSLionel Sambuc 
4922*0a6a1f1dSLionel Sambuc /* msp430 specific relocation codes  */
4923*0a6a1f1dSLionel Sambuc   BFD_RELOC_MSP430_10_PCREL,
4924*0a6a1f1dSLionel Sambuc   BFD_RELOC_MSP430_16_PCREL,
4925*0a6a1f1dSLionel Sambuc   BFD_RELOC_MSP430_16,
4926*0a6a1f1dSLionel Sambuc   BFD_RELOC_MSP430_16_PCREL_BYTE,
4927*0a6a1f1dSLionel Sambuc   BFD_RELOC_MSP430_16_BYTE,
4928*0a6a1f1dSLionel Sambuc   BFD_RELOC_MSP430_2X_PCREL,
4929*0a6a1f1dSLionel Sambuc   BFD_RELOC_MSP430_RL_PCREL,
4930*0a6a1f1dSLionel Sambuc 
4931*0a6a1f1dSLionel Sambuc /* IQ2000 Relocations.  */
4932*0a6a1f1dSLionel Sambuc   BFD_RELOC_IQ2000_OFFSET_16,
4933*0a6a1f1dSLionel Sambuc   BFD_RELOC_IQ2000_OFFSET_21,
4934*0a6a1f1dSLionel Sambuc   BFD_RELOC_IQ2000_UHI16,
4935*0a6a1f1dSLionel Sambuc 
4936*0a6a1f1dSLionel Sambuc /* Special Xtensa relocation used only by PLT entries in ELF shared
4937*0a6a1f1dSLionel Sambuc objects to indicate that the runtime linker should set the value
4938*0a6a1f1dSLionel Sambuc to one of its own internal functions or data structures.  */
4939*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_RTLD,
4940*0a6a1f1dSLionel Sambuc 
4941*0a6a1f1dSLionel Sambuc /* Xtensa relocations for ELF shared objects.  */
4942*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_GLOB_DAT,
4943*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_JMP_SLOT,
4944*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_RELATIVE,
4945*0a6a1f1dSLionel Sambuc 
4946*0a6a1f1dSLionel Sambuc /* Xtensa relocation used in ELF object files for symbols that may require
4947*0a6a1f1dSLionel Sambuc PLT entries.  Otherwise, this is just a generic 32-bit relocation.  */
4948*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_PLT,
4949*0a6a1f1dSLionel Sambuc 
4950*0a6a1f1dSLionel Sambuc /* Xtensa relocations to mark the difference of two local symbols.
4951*0a6a1f1dSLionel Sambuc These are only needed to support linker relaxation and can be ignored
4952*0a6a1f1dSLionel Sambuc when not relaxing.  The field is set to the value of the difference
4953*0a6a1f1dSLionel Sambuc assuming no relaxation.  The relocation encodes the position of the
4954*0a6a1f1dSLionel Sambuc first symbol so the linker can determine whether to adjust the field
4955*0a6a1f1dSLionel Sambuc value.  */
4956*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_DIFF8,
4957*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_DIFF16,
4958*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_DIFF32,
4959*0a6a1f1dSLionel Sambuc 
4960*0a6a1f1dSLionel Sambuc /* Generic Xtensa relocations for instruction operands.  Only the slot
4961*0a6a1f1dSLionel Sambuc number is encoded in the relocation.  The relocation applies to the
4962*0a6a1f1dSLionel Sambuc last PC-relative immediate operand, or if there are no PC-relative
4963*0a6a1f1dSLionel Sambuc immediates, to the last immediate operand.  */
4964*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT0_OP,
4965*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT1_OP,
4966*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT2_OP,
4967*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT3_OP,
4968*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT4_OP,
4969*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT5_OP,
4970*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT6_OP,
4971*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT7_OP,
4972*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT8_OP,
4973*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT9_OP,
4974*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT10_OP,
4975*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT11_OP,
4976*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT12_OP,
4977*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT13_OP,
4978*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT14_OP,
4979*0a6a1f1dSLionel Sambuc 
4980*0a6a1f1dSLionel Sambuc /* Alternate Xtensa relocations.  Only the slot is encoded in the
4981*0a6a1f1dSLionel Sambuc relocation.  The meaning of these relocations is opcode-specific.  */
4982*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT0_ALT,
4983*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT1_ALT,
4984*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT2_ALT,
4985*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT3_ALT,
4986*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT4_ALT,
4987*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT5_ALT,
4988*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT6_ALT,
4989*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT7_ALT,
4990*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT8_ALT,
4991*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT9_ALT,
4992*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT10_ALT,
4993*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT11_ALT,
4994*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT12_ALT,
4995*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT13_ALT,
4996*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_SLOT14_ALT,
4997*0a6a1f1dSLionel Sambuc 
4998*0a6a1f1dSLionel Sambuc /* Xtensa relocations for backward compatibility.  These have all been
4999*0a6a1f1dSLionel Sambuc replaced by BFD_RELOC_XTENSA_SLOT0_OP.  */
5000*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_OP0,
5001*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_OP1,
5002*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_OP2,
5003*0a6a1f1dSLionel Sambuc 
5004*0a6a1f1dSLionel Sambuc /* Xtensa relocation to mark that the assembler expanded the
5005*0a6a1f1dSLionel Sambuc instructions from an original target.  The expansion size is
5006*0a6a1f1dSLionel Sambuc encoded in the reloc size.  */
5007*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_ASM_EXPAND,
5008*0a6a1f1dSLionel Sambuc 
5009*0a6a1f1dSLionel Sambuc /* Xtensa relocation to mark that the linker should simplify
5010*0a6a1f1dSLionel Sambuc assembler-expanded instructions.  This is commonly used
5011*0a6a1f1dSLionel Sambuc internally by the linker after analysis of a
5012*0a6a1f1dSLionel Sambuc BFD_RELOC_XTENSA_ASM_EXPAND.  */
5013*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_ASM_SIMPLIFY,
5014*0a6a1f1dSLionel Sambuc 
5015*0a6a1f1dSLionel Sambuc /* Xtensa TLS relocations.  */
5016*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_TLSDESC_FN,
5017*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_TLSDESC_ARG,
5018*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_TLS_DTPOFF,
5019*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_TLS_TPOFF,
5020*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_TLS_FUNC,
5021*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_TLS_ARG,
5022*0a6a1f1dSLionel Sambuc   BFD_RELOC_XTENSA_TLS_CALL,
5023*0a6a1f1dSLionel Sambuc 
5024*0a6a1f1dSLionel Sambuc /* 8 bit signed offset in (ix+d) or (iy+d).  */
5025*0a6a1f1dSLionel Sambuc   BFD_RELOC_Z80_DISP8,
5026*0a6a1f1dSLionel Sambuc 
5027*0a6a1f1dSLionel Sambuc /* DJNZ offset.  */
5028*0a6a1f1dSLionel Sambuc   BFD_RELOC_Z8K_DISP7,
5029*0a6a1f1dSLionel Sambuc 
5030*0a6a1f1dSLionel Sambuc /* CALR offset.  */
5031*0a6a1f1dSLionel Sambuc   BFD_RELOC_Z8K_CALLR,
5032*0a6a1f1dSLionel Sambuc 
5033*0a6a1f1dSLionel Sambuc /* 4 bit value.  */
5034*0a6a1f1dSLionel Sambuc   BFD_RELOC_Z8K_IMM4L,
5035*0a6a1f1dSLionel Sambuc 
5036*0a6a1f1dSLionel Sambuc /* Lattice Mico32 relocations.  */
5037*0a6a1f1dSLionel Sambuc   BFD_RELOC_LM32_CALL,
5038*0a6a1f1dSLionel Sambuc   BFD_RELOC_LM32_BRANCH,
5039*0a6a1f1dSLionel Sambuc   BFD_RELOC_LM32_16_GOT,
5040*0a6a1f1dSLionel Sambuc   BFD_RELOC_LM32_GOTOFF_HI16,
5041*0a6a1f1dSLionel Sambuc   BFD_RELOC_LM32_GOTOFF_LO16,
5042*0a6a1f1dSLionel Sambuc   BFD_RELOC_LM32_COPY,
5043*0a6a1f1dSLionel Sambuc   BFD_RELOC_LM32_GLOB_DAT,
5044*0a6a1f1dSLionel Sambuc   BFD_RELOC_LM32_JMP_SLOT,
5045*0a6a1f1dSLionel Sambuc   BFD_RELOC_LM32_RELATIVE,
5046*0a6a1f1dSLionel Sambuc 
5047*0a6a1f1dSLionel Sambuc /* Difference between two section addreses.  Must be followed by a
5048*0a6a1f1dSLionel Sambuc BFD_RELOC_MACH_O_PAIR.  */
5049*0a6a1f1dSLionel Sambuc   BFD_RELOC_MACH_O_SECTDIFF,
5050*0a6a1f1dSLionel Sambuc 
5051*0a6a1f1dSLionel Sambuc /* Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol.  */
5052*0a6a1f1dSLionel Sambuc   BFD_RELOC_MACH_O_LOCAL_SECTDIFF,
5053*0a6a1f1dSLionel Sambuc 
5054*0a6a1f1dSLionel Sambuc /* Pair of relocation.  Contains the first symbol.  */
5055*0a6a1f1dSLionel Sambuc   BFD_RELOC_MACH_O_PAIR,
5056*0a6a1f1dSLionel Sambuc 
5057*0a6a1f1dSLionel Sambuc /* PCREL relocations.  They are marked as branch to create PLT entry if
5058*0a6a1f1dSLionel Sambuc required.  */
5059*0a6a1f1dSLionel Sambuc   BFD_RELOC_MACH_O_X86_64_BRANCH32,
5060*0a6a1f1dSLionel Sambuc   BFD_RELOC_MACH_O_X86_64_BRANCH8,
5061*0a6a1f1dSLionel Sambuc 
5062*0a6a1f1dSLionel Sambuc /* Used when referencing a GOT entry.  */
5063*0a6a1f1dSLionel Sambuc   BFD_RELOC_MACH_O_X86_64_GOT,
5064*0a6a1f1dSLionel Sambuc 
5065*0a6a1f1dSLionel Sambuc /* Used when loading a GOT entry with movq.  It is specially marked so that
5066*0a6a1f1dSLionel Sambuc the linker could optimize the movq to a leaq if possible.  */
5067*0a6a1f1dSLionel Sambuc   BFD_RELOC_MACH_O_X86_64_GOT_LOAD,
5068*0a6a1f1dSLionel Sambuc 
5069*0a6a1f1dSLionel Sambuc /* Symbol will be substracted.  Must be followed by a BFD_RELOC_64.  */
5070*0a6a1f1dSLionel Sambuc   BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32,
5071*0a6a1f1dSLionel Sambuc 
5072*0a6a1f1dSLionel Sambuc /* Symbol will be substracted.  Must be followed by a BFD_RELOC_64.  */
5073*0a6a1f1dSLionel Sambuc   BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64,
5074*0a6a1f1dSLionel Sambuc 
5075*0a6a1f1dSLionel Sambuc /* Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.  */
5076*0a6a1f1dSLionel Sambuc   BFD_RELOC_MACH_O_X86_64_PCREL32_1,
5077*0a6a1f1dSLionel Sambuc 
5078*0a6a1f1dSLionel Sambuc /* Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.  */
5079*0a6a1f1dSLionel Sambuc   BFD_RELOC_MACH_O_X86_64_PCREL32_2,
5080*0a6a1f1dSLionel Sambuc 
5081*0a6a1f1dSLionel Sambuc /* Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.  */
5082*0a6a1f1dSLionel Sambuc   BFD_RELOC_MACH_O_X86_64_PCREL32_4,
5083*0a6a1f1dSLionel Sambuc 
5084*0a6a1f1dSLionel Sambuc /* This is a 32 bit reloc for the microblaze that stores the
5085*0a6a1f1dSLionel Sambuc low 16 bits of a value  */
5086*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROBLAZE_32_LO,
5087*0a6a1f1dSLionel Sambuc 
5088*0a6a1f1dSLionel Sambuc /* This is a 32 bit pc-relative reloc for the microblaze that
5089*0a6a1f1dSLionel Sambuc stores the low 16 bits of a value  */
5090*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROBLAZE_32_LO_PCREL,
5091*0a6a1f1dSLionel Sambuc 
5092*0a6a1f1dSLionel Sambuc /* This is a 32 bit reloc for the microblaze that stores a
5093*0a6a1f1dSLionel Sambuc value relative to the read-only small data area anchor  */
5094*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROBLAZE_32_ROSDA,
5095*0a6a1f1dSLionel Sambuc 
5096*0a6a1f1dSLionel Sambuc /* This is a 32 bit reloc for the microblaze that stores a
5097*0a6a1f1dSLionel Sambuc value relative to the read-write small data area anchor  */
5098*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROBLAZE_32_RWSDA,
5099*0a6a1f1dSLionel Sambuc 
5100*0a6a1f1dSLionel Sambuc /* This is a 32 bit reloc for the microblaze to handle
5101*0a6a1f1dSLionel Sambuc expressions of the form "Symbol Op Symbol"  */
5102*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM,
5103*0a6a1f1dSLionel Sambuc 
5104*0a6a1f1dSLionel Sambuc /* This is a 64 bit reloc that stores the 32 bit pc relative
5105*0a6a1f1dSLionel Sambuc value in two words (with an imm instruction).  No relocation is
5106*0a6a1f1dSLionel Sambuc done here - only used for relaxing  */
5107*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROBLAZE_64_NONE,
5108*0a6a1f1dSLionel Sambuc 
5109*0a6a1f1dSLionel Sambuc /* This is a 64 bit reloc that stores the 32 bit pc relative
5110*0a6a1f1dSLionel Sambuc value in two words (with an imm instruction).  The relocation is
5111*0a6a1f1dSLionel Sambuc PC-relative GOT offset  */
5112*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROBLAZE_64_GOTPC,
5113*0a6a1f1dSLionel Sambuc 
5114*0a6a1f1dSLionel Sambuc /* This is a 64 bit reloc that stores the 32 bit pc relative
5115*0a6a1f1dSLionel Sambuc value in two words (with an imm instruction).  The relocation is
5116*0a6a1f1dSLionel Sambuc GOT offset  */
5117*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROBLAZE_64_GOT,
5118*0a6a1f1dSLionel Sambuc 
5119*0a6a1f1dSLionel Sambuc /* This is a 64 bit reloc that stores the 32 bit pc relative
5120*0a6a1f1dSLionel Sambuc value in two words (with an imm instruction).  The relocation is
5121*0a6a1f1dSLionel Sambuc PC-relative offset into PLT  */
5122*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROBLAZE_64_PLT,
5123*0a6a1f1dSLionel Sambuc 
5124*0a6a1f1dSLionel Sambuc /* This is a 64 bit reloc that stores the 32 bit GOT relative
5125*0a6a1f1dSLionel Sambuc value in two words (with an imm instruction).  The relocation is
5126*0a6a1f1dSLionel Sambuc relative offset from _GLOBAL_OFFSET_TABLE_  */
5127*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROBLAZE_64_GOTOFF,
5128*0a6a1f1dSLionel Sambuc 
5129*0a6a1f1dSLionel Sambuc /* This is a 32 bit reloc that stores the 32 bit GOT relative
5130*0a6a1f1dSLionel Sambuc value in a word.  The relocation is relative offset from  */
5131*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROBLAZE_32_GOTOFF,
5132*0a6a1f1dSLionel Sambuc 
5133*0a6a1f1dSLionel Sambuc /* This is used to tell the dynamic linker to copy the value out of
5134*0a6a1f1dSLionel Sambuc the dynamic object into the runtime process image.  */
5135*0a6a1f1dSLionel Sambuc   BFD_RELOC_MICROBLAZE_COPY,
5136*0a6a1f1dSLionel Sambuc 
5137*0a6a1f1dSLionel Sambuc /* AArch64 ADD immediate instruction, holding bits 0 to 11 of the address.
5138*0a6a1f1dSLionel Sambuc Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
5139*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_ADD_LO12,
5140*0a6a1f1dSLionel Sambuc 
5141*0a6a1f1dSLionel Sambuc /* Get to the page base of the global offset table entry for a symbol as
5142*0a6a1f1dSLionel Sambuc part of an ADRP instruction using a 21 bit PC relative value.Used in
5143*0a6a1f1dSLionel Sambuc conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.  */
5144*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_ADR_GOT_PAGE,
5145*0a6a1f1dSLionel Sambuc 
5146*0a6a1f1dSLionel Sambuc /* AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
5147*0a6a1f1dSLionel Sambuc offset, giving a 4KB aligned page base address.  */
5148*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_ADR_HI21_PCREL,
5149*0a6a1f1dSLionel Sambuc 
5150*0a6a1f1dSLionel Sambuc /* AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
5151*0a6a1f1dSLionel Sambuc offset, giving a 4KB aligned page base address, but with no overflow
5152*0a6a1f1dSLionel Sambuc checking.  */
5153*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL,
5154*0a6a1f1dSLionel Sambuc 
5155*0a6a1f1dSLionel Sambuc /* AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset.  */
5156*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_ADR_LO21_PCREL,
5157*0a6a1f1dSLionel Sambuc 
5158*0a6a1f1dSLionel Sambuc /* AArch64 19 bit pc-relative conditional branch and compare & branch.
5159*0a6a1f1dSLionel Sambuc The lowest two bits must be zero and are not stored in the instruction,
5160*0a6a1f1dSLionel Sambuc giving a 21 bit signed byte offset.  */
5161*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_BRANCH19,
5162*0a6a1f1dSLionel Sambuc 
5163*0a6a1f1dSLionel Sambuc /* AArch64 26 bit pc-relative unconditional branch and link.
5164*0a6a1f1dSLionel Sambuc The lowest two bits must be zero and are not stored in the instruction,
5165*0a6a1f1dSLionel Sambuc giving a 28 bit signed byte offset.  */
5166*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_CALL26,
5167*0a6a1f1dSLionel Sambuc 
5168*0a6a1f1dSLionel Sambuc /* AArch64 pseudo relocation code to be used internally by the AArch64
5169*0a6a1f1dSLionel Sambuc assembler and not (currently) written to any object files.  */
5170*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP,
5171*0a6a1f1dSLionel Sambuc 
5172*0a6a1f1dSLionel Sambuc /* AArch64 26 bit pc-relative unconditional branch.
5173*0a6a1f1dSLionel Sambuc The lowest two bits must be zero and are not stored in the instruction,
5174*0a6a1f1dSLionel Sambuc giving a 28 bit signed byte offset.  */
5175*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_JUMP26,
5176*0a6a1f1dSLionel Sambuc 
5177*0a6a1f1dSLionel Sambuc /* AArch64 Load Literal instruction, holding a 19 bit pc-relative word
5178*0a6a1f1dSLionel Sambuc offset.  The lowest two bits must be zero and are not stored in the
5179*0a6a1f1dSLionel Sambuc instruction, giving a 21 bit signed byte offset.  */
5180*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_LD_LO19_PCREL,
5181*0a6a1f1dSLionel Sambuc 
5182*0a6a1f1dSLionel Sambuc /* Unsigned 12 bit byte offset for 64 bit load/store from the page of
5183*0a6a1f1dSLionel Sambuc the GOT entry for this symbol.  Used in conjunction with
5184*0a6a1f1dSLionel Sambuc BFD_RELOC_AARCH64_ADR_GOTPAGE.  */
5185*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_LD64_GOT_LO12_NC,
5186*0a6a1f1dSLionel Sambuc 
5187*0a6a1f1dSLionel Sambuc /* AArch64 unspecified load/store instruction, holding bits 0 to 11 of the
5188*0a6a1f1dSLionel Sambuc address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
5189*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_LDST_LO12,
5190*0a6a1f1dSLionel Sambuc 
5191*0a6a1f1dSLionel Sambuc /* AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
5192*0a6a1f1dSLionel Sambuc address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
5193*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_LDST8_LO12,
5194*0a6a1f1dSLionel Sambuc 
5195*0a6a1f1dSLionel Sambuc /* AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
5196*0a6a1f1dSLionel Sambuc address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
5197*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_LDST16_LO12,
5198*0a6a1f1dSLionel Sambuc 
5199*0a6a1f1dSLionel Sambuc /* AArch64 32-bit load/store instruction, holding bits 0 to 11 of the
5200*0a6a1f1dSLionel Sambuc address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
5201*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_LDST32_LO12,
5202*0a6a1f1dSLionel Sambuc 
5203*0a6a1f1dSLionel Sambuc /* AArch64 64-bit load/store instruction, holding bits 0 to 11 of the
5204*0a6a1f1dSLionel Sambuc address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
5205*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_LDST64_LO12,
5206*0a6a1f1dSLionel Sambuc 
5207*0a6a1f1dSLionel Sambuc /* AArch64 128-bit load/store instruction, holding bits 0 to 11 of the
5208*0a6a1f1dSLionel Sambuc address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
5209*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_LDST128_LO12,
5210*0a6a1f1dSLionel Sambuc 
5211*0a6a1f1dSLionel Sambuc /* AArch64 MOV[NZK] instruction with most significant bits 0 to 15
5212*0a6a1f1dSLionel Sambuc of an unsigned address/value.  */
5213*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G0,
5214*0a6a1f1dSLionel Sambuc 
5215*0a6a1f1dSLionel Sambuc /* AArch64 MOV[NZ] instruction with most significant bits 0 to 15
5216*0a6a1f1dSLionel Sambuc of a signed value.  Changes instruction to MOVZ or MOVN depending on the
5217*0a6a1f1dSLionel Sambuc value's sign.  */
5218*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G0_S,
5219*0a6a1f1dSLionel Sambuc 
5220*0a6a1f1dSLionel Sambuc /* AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
5221*0a6a1f1dSLionel Sambuc an address/value.  No overflow checking.  */
5222*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G0_NC,
5223*0a6a1f1dSLionel Sambuc 
5224*0a6a1f1dSLionel Sambuc /* AArch64 MOV[NZK] instruction with most significant bits 16 to 31
5225*0a6a1f1dSLionel Sambuc of an unsigned address/value.  */
5226*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G1,
5227*0a6a1f1dSLionel Sambuc 
5228*0a6a1f1dSLionel Sambuc /* AArch64 MOV[NZK] instruction with less significant bits 16 to 31
5229*0a6a1f1dSLionel Sambuc of an address/value.  No overflow checking.  */
5230*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G1_NC,
5231*0a6a1f1dSLionel Sambuc 
5232*0a6a1f1dSLionel Sambuc /* AArch64 MOV[NZ] instruction with most significant bits 16 to 31
5233*0a6a1f1dSLionel Sambuc of a signed value.  Changes instruction to MOVZ or MOVN depending on the
5234*0a6a1f1dSLionel Sambuc value's sign.  */
5235*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G1_S,
5236*0a6a1f1dSLionel Sambuc 
5237*0a6a1f1dSLionel Sambuc /* AArch64 MOV[NZK] instruction with most significant bits 32 to 47
5238*0a6a1f1dSLionel Sambuc of an unsigned address/value.  */
5239*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G2,
5240*0a6a1f1dSLionel Sambuc 
5241*0a6a1f1dSLionel Sambuc /* AArch64 MOV[NZK] instruction with less significant bits 32 to 47
5242*0a6a1f1dSLionel Sambuc of an address/value.  No overflow checking.  */
5243*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G2_NC,
5244*0a6a1f1dSLionel Sambuc 
5245*0a6a1f1dSLionel Sambuc /* AArch64 MOV[NZ] instruction with most significant bits 32 to 47
5246*0a6a1f1dSLionel Sambuc of a signed value.  Changes instruction to MOVZ or MOVN depending on the
5247*0a6a1f1dSLionel Sambuc value's sign.  */
5248*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G2_S,
5249*0a6a1f1dSLionel Sambuc 
5250*0a6a1f1dSLionel Sambuc /* AArch64 MOV[NZK] instruction with most signficant bits 48 to 64
5251*0a6a1f1dSLionel Sambuc of a signed or unsigned address/value.  */
5252*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_MOVW_G3,
5253*0a6a1f1dSLionel Sambuc 
5254*0a6a1f1dSLionel Sambuc /* AArch64 TLS relocation.  */
5255*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC,
5256*0a6a1f1dSLionel Sambuc 
5257*0a6a1f1dSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5258*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_ADD,
5259*0a6a1f1dSLionel Sambuc 
5260*0a6a1f1dSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5261*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC,
5262*0a6a1f1dSLionel Sambuc 
5263*0a6a1f1dSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5264*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE,
5265*0a6a1f1dSLionel Sambuc 
5266*0a6a1f1dSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5267*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21,
5268*0a6a1f1dSLionel Sambuc 
5269*0a6a1f1dSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5270*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_CALL,
5271*0a6a1f1dSLionel Sambuc 
5272*0a6a1f1dSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5273*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC,
5274*0a6a1f1dSLionel Sambuc 
5275*0a6a1f1dSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5276*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_LD64_PREL19,
5277*0a6a1f1dSLionel Sambuc 
5278*0a6a1f1dSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5279*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_LDR,
5280*0a6a1f1dSLionel Sambuc 
5281*0a6a1f1dSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5282*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC,
5283*0a6a1f1dSLionel Sambuc 
5284*0a6a1f1dSLionel Sambuc /* AArch64 TLS DESC relocation.  */
5285*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSDESC_OFF_G1,
5286*0a6a1f1dSLionel Sambuc 
5287*0a6a1f1dSLionel Sambuc /* Unsigned 12 bit byte offset to global offset table entry for a symbols
5288*0a6a1f1dSLionel Sambuc tls_index structure.  Used in conjunction with
5289*0a6a1f1dSLionel Sambuc BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.  */
5290*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC,
5291*0a6a1f1dSLionel Sambuc 
5292*0a6a1f1dSLionel Sambuc /* Get to the page base of the global offset table entry for a symbols
5293*0a6a1f1dSLionel Sambuc tls_index structure as part of an adrp instruction using a 21 bit PC
5294*0a6a1f1dSLionel Sambuc relative value.  Used in conjunction with
5295*0a6a1f1dSLionel Sambuc BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC.  */
5296*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21,
5297*0a6a1f1dSLionel Sambuc 
5298*0a6a1f1dSLionel Sambuc /* AArch64 TLS INITIAL EXEC relocation.  */
5299*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21,
5300*0a6a1f1dSLionel Sambuc 
5301*0a6a1f1dSLionel Sambuc /* AArch64 TLS INITIAL EXEC relocation.  */
5302*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19,
5303*0a6a1f1dSLionel Sambuc 
5304*0a6a1f1dSLionel Sambuc /* AArch64 TLS INITIAL EXEC relocation.  */
5305*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC,
5306*0a6a1f1dSLionel Sambuc 
5307*0a6a1f1dSLionel Sambuc /* AArch64 TLS INITIAL EXEC relocation.  */
5308*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC,
5309*0a6a1f1dSLionel Sambuc 
5310*0a6a1f1dSLionel Sambuc /* AArch64 TLS INITIAL EXEC relocation.  */
5311*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1,
5312*0a6a1f1dSLionel Sambuc 
5313*0a6a1f1dSLionel Sambuc /* AArch64 TLS LOCAL EXEC relocation.  */
5314*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12,
5315*0a6a1f1dSLionel Sambuc 
5316*0a6a1f1dSLionel Sambuc /* AArch64 TLS LOCAL EXEC relocation.  */
5317*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12,
5318*0a6a1f1dSLionel Sambuc 
5319*0a6a1f1dSLionel Sambuc /* AArch64 TLS LOCAL EXEC relocation.  */
5320*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC,
5321*0a6a1f1dSLionel Sambuc 
5322*0a6a1f1dSLionel Sambuc /* AArch64 TLS LOCAL EXEC relocation.  */
5323*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0,
5324*0a6a1f1dSLionel Sambuc 
5325*0a6a1f1dSLionel Sambuc /* AArch64 TLS LOCAL EXEC relocation.  */
5326*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC,
5327*0a6a1f1dSLionel Sambuc 
5328*0a6a1f1dSLionel Sambuc /* AArch64 TLS LOCAL EXEC relocation.  */
5329*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1,
5330*0a6a1f1dSLionel Sambuc 
5331*0a6a1f1dSLionel Sambuc /* AArch64 TLS LOCAL EXEC relocation.  */
5332*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC,
5333*0a6a1f1dSLionel Sambuc 
5334*0a6a1f1dSLionel Sambuc /* AArch64 TLS LOCAL EXEC relocation.  */
5335*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2,
5336*0a6a1f1dSLionel Sambuc 
5337*0a6a1f1dSLionel Sambuc /* AArch64 TLS relocation.  */
5338*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLS_DTPMOD64,
5339*0a6a1f1dSLionel Sambuc 
5340*0a6a1f1dSLionel Sambuc /* AArch64 TLS relocation.  */
5341*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLS_DTPREL64,
5342*0a6a1f1dSLionel Sambuc 
5343*0a6a1f1dSLionel Sambuc /* AArch64 TLS relocation.  */
5344*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TLS_TPREL64,
5345*0a6a1f1dSLionel Sambuc 
5346*0a6a1f1dSLionel Sambuc /* AArch64 14 bit pc-relative test bit and branch.
5347*0a6a1f1dSLionel Sambuc The lowest two bits must be zero and are not stored in the instruction,
5348*0a6a1f1dSLionel Sambuc giving a 16 bit signed byte offset.  */
5349*0a6a1f1dSLionel Sambuc   BFD_RELOC_AARCH64_TSTBR14,
5350*0a6a1f1dSLionel Sambuc 
5351*0a6a1f1dSLionel Sambuc /* Tilera TILEPro Relocations.  */
5352*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_COPY,
5353*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_GLOB_DAT,
5354*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_JMP_SLOT,
5355*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_RELATIVE,
5356*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_BROFF_X1,
5357*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_JOFFLONG_X1,
5358*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT,
5359*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM8_X0,
5360*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM8_Y0,
5361*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM8_X1,
5362*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM8_Y1,
5363*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_DEST_IMM8_X1,
5364*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_MT_IMM15_X1,
5365*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_MF_IMM15_X1,
5366*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0,
5367*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1,
5368*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_LO,
5369*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_LO,
5370*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_HI,
5371*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_HI,
5372*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_HA,
5373*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_HA,
5374*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_PCREL,
5375*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_PCREL,
5376*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL,
5377*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL,
5378*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL,
5379*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL,
5380*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL,
5381*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL,
5382*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_GOT,
5383*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_GOT,
5384*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO,
5385*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO,
5386*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI,
5387*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI,
5388*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA,
5389*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA,
5390*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_MMSTART_X0,
5391*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_MMEND_X0,
5392*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_MMSTART_X1,
5393*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_MMEND_X1,
5394*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_SHAMT_X0,
5395*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_SHAMT_X1,
5396*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_SHAMT_Y0,
5397*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_SHAMT_Y1,
5398*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_TLS_GD_CALL,
5399*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD,
5400*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD,
5401*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD,
5402*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD,
5403*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_TLS_IE_LOAD,
5404*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD,
5405*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD,
5406*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO,
5407*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO,
5408*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI,
5409*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI,
5410*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA,
5411*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA,
5412*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE,
5413*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE,
5414*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO,
5415*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO,
5416*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI,
5417*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI,
5418*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA,
5419*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA,
5420*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_TLS_DTPMOD32,
5421*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_TLS_DTPOFF32,
5422*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_TLS_TPOFF32,
5423*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE,
5424*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE,
5425*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO,
5426*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO,
5427*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI,
5428*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI,
5429*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA,
5430*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA,
5431*0a6a1f1dSLionel Sambuc 
5432*0a6a1f1dSLionel Sambuc /* Tilera TILE-Gx Relocations.  */
5433*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_HW0,
5434*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_HW1,
5435*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_HW2,
5436*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_HW3,
5437*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_HW0_LAST,
5438*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_HW1_LAST,
5439*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_HW2_LAST,
5440*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_COPY,
5441*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_GLOB_DAT,
5442*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_JMP_SLOT,
5443*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_RELATIVE,
5444*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_BROFF_X1,
5445*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_JUMPOFF_X1,
5446*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_JUMPOFF_X1_PLT,
5447*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_X0,
5448*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_Y0,
5449*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_X1,
5450*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_Y1,
5451*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_DEST_IMM8_X1,
5452*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_MT_IMM14_X1,
5453*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_MF_IMM14_X1,
5454*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_MMSTART_X0,
5455*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_MMEND_X0,
5456*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_SHAMT_X0,
5457*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_SHAMT_X1,
5458*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_SHAMT_Y0,
5459*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_SHAMT_Y1,
5460*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0,
5461*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0,
5462*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW1,
5463*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW1,
5464*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW2,
5465*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW2,
5466*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW3,
5467*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW3,
5468*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST,
5469*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST,
5470*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST,
5471*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST,
5472*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST,
5473*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST,
5474*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL,
5475*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL,
5476*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL,
5477*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL,
5478*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL,
5479*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL,
5480*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL,
5481*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL,
5482*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL,
5483*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL,
5484*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL,
5485*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL,
5486*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL,
5487*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL,
5488*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT,
5489*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT,
5490*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT,
5491*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT,
5492*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT,
5493*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT,
5494*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD,
5495*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD,
5496*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE,
5497*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE,
5498*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE,
5499*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE,
5500*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE,
5501*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE,
5502*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD,
5503*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD,
5504*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD,
5505*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD,
5506*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE,
5507*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE,
5508*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE,
5509*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE,
5510*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE,
5511*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE,
5512*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_TLS_DTPMOD64,
5513*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_TLS_DTPOFF64,
5514*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_TLS_TPOFF64,
5515*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_TLS_DTPMOD32,
5516*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_TLS_DTPOFF32,
5517*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_TLS_TPOFF32,
5518*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_TLS_GD_CALL,
5519*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD,
5520*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD,
5521*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD,
5522*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD,
5523*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_TLS_IE_LOAD,
5524*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD,
5525*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD,
5526*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD,
5527*0a6a1f1dSLionel Sambuc   BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD,
5528*0a6a1f1dSLionel Sambuc 
5529*0a6a1f1dSLionel Sambuc /* Adapteva EPIPHANY - 8 bit signed pc-relative displacement  */
5530*0a6a1f1dSLionel Sambuc   BFD_RELOC_EPIPHANY_SIMM8,
5531*0a6a1f1dSLionel Sambuc 
5532*0a6a1f1dSLionel Sambuc /* Adapteva EPIPHANY - 24 bit signed pc-relative displacement  */
5533*0a6a1f1dSLionel Sambuc   BFD_RELOC_EPIPHANY_SIMM24,
5534*0a6a1f1dSLionel Sambuc 
5535*0a6a1f1dSLionel Sambuc /* Adapteva EPIPHANY - 16 most-significant bits of absolute address  */
5536*0a6a1f1dSLionel Sambuc   BFD_RELOC_EPIPHANY_HIGH,
5537*0a6a1f1dSLionel Sambuc 
5538*0a6a1f1dSLionel Sambuc /* Adapteva EPIPHANY - 16 least-significant bits of absolute address  */
5539*0a6a1f1dSLionel Sambuc   BFD_RELOC_EPIPHANY_LOW,
5540*0a6a1f1dSLionel Sambuc 
5541*0a6a1f1dSLionel Sambuc /* Adapteva EPIPHANY - 11 bit signed number - add/sub immediate  */
5542*0a6a1f1dSLionel Sambuc   BFD_RELOC_EPIPHANY_SIMM11,
5543*0a6a1f1dSLionel Sambuc 
5544*0a6a1f1dSLionel Sambuc /* Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement)  */
5545*0a6a1f1dSLionel Sambuc   BFD_RELOC_EPIPHANY_IMM11,
5546*0a6a1f1dSLionel Sambuc 
5547*0a6a1f1dSLionel Sambuc /* Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.  */
5548*0a6a1f1dSLionel Sambuc   BFD_RELOC_EPIPHANY_IMM8,
5549*0a6a1f1dSLionel Sambuc   BFD_RELOC_UNUSED };
5550*0a6a1f1dSLionel Sambuc typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
5551*0a6a1f1dSLionel Sambuc reloc_howto_type *bfd_reloc_type_lookup
5552*0a6a1f1dSLionel Sambuc    (bfd *abfd, bfd_reloc_code_real_type code);
5553*0a6a1f1dSLionel Sambuc reloc_howto_type *bfd_reloc_name_lookup
5554*0a6a1f1dSLionel Sambuc    (bfd *abfd, const char *reloc_name);
5555*0a6a1f1dSLionel Sambuc 
5556*0a6a1f1dSLionel Sambuc const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
5557*0a6a1f1dSLionel Sambuc 
5558*0a6a1f1dSLionel Sambuc /* Extracted from syms.c.  */
5559*0a6a1f1dSLionel Sambuc 
5560*0a6a1f1dSLionel Sambuc typedef struct bfd_symbol
5561*0a6a1f1dSLionel Sambuc {
5562*0a6a1f1dSLionel Sambuc   /* A pointer to the BFD which owns the symbol. This information
5563*0a6a1f1dSLionel Sambuc      is necessary so that a back end can work out what additional
5564*0a6a1f1dSLionel Sambuc      information (invisible to the application writer) is carried
5565*0a6a1f1dSLionel Sambuc      with the symbol.
5566*0a6a1f1dSLionel Sambuc 
5567*0a6a1f1dSLionel Sambuc      This field is *almost* redundant, since you can use section->owner
5568*0a6a1f1dSLionel Sambuc      instead, except that some symbols point to the global sections
5569*0a6a1f1dSLionel Sambuc      bfd_{abs,com,und}_section.  This could be fixed by making
5570*0a6a1f1dSLionel Sambuc      these globals be per-bfd (or per-target-flavor).  FIXME.  */
5571*0a6a1f1dSLionel Sambuc   struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
5572*0a6a1f1dSLionel Sambuc 
5573*0a6a1f1dSLionel Sambuc   /* The text of the symbol. The name is left alone, and not copied; the
5574*0a6a1f1dSLionel Sambuc      application may not alter it.  */
5575*0a6a1f1dSLionel Sambuc   const char *name;
5576*0a6a1f1dSLionel Sambuc 
5577*0a6a1f1dSLionel Sambuc   /* The value of the symbol.  This really should be a union of a
5578*0a6a1f1dSLionel Sambuc      numeric value with a pointer, since some flags indicate that
5579*0a6a1f1dSLionel Sambuc      a pointer to another symbol is stored here.  */
5580*0a6a1f1dSLionel Sambuc   symvalue value;
5581*0a6a1f1dSLionel Sambuc 
5582*0a6a1f1dSLionel Sambuc   /* Attributes of a symbol.  */
5583*0a6a1f1dSLionel Sambuc #define BSF_NO_FLAGS           0x00
5584*0a6a1f1dSLionel Sambuc 
5585*0a6a1f1dSLionel Sambuc   /* The symbol has local scope; <<static>> in <<C>>. The value
5586*0a6a1f1dSLionel Sambuc      is the offset into the section of the data.  */
5587*0a6a1f1dSLionel Sambuc #define BSF_LOCAL              (1 << 0)
5588*0a6a1f1dSLionel Sambuc 
5589*0a6a1f1dSLionel Sambuc   /* The symbol has global scope; initialized data in <<C>>. The
5590*0a6a1f1dSLionel Sambuc      value is the offset into the section of the data.  */
5591*0a6a1f1dSLionel Sambuc #define BSF_GLOBAL             (1 << 1)
5592*0a6a1f1dSLionel Sambuc 
5593*0a6a1f1dSLionel Sambuc   /* The symbol has global scope and is exported. The value is
5594*0a6a1f1dSLionel Sambuc      the offset into the section of the data.  */
5595*0a6a1f1dSLionel Sambuc #define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */
5596*0a6a1f1dSLionel Sambuc 
5597*0a6a1f1dSLionel Sambuc   /* A normal C symbol would be one of:
5598*0a6a1f1dSLionel Sambuc      <<BSF_LOCAL>>, <<BSF_COMMON>>,  <<BSF_UNDEFINED>> or
5599*0a6a1f1dSLionel Sambuc      <<BSF_GLOBAL>>.  */
5600*0a6a1f1dSLionel Sambuc 
5601*0a6a1f1dSLionel Sambuc   /* The symbol is a debugging record. The value has an arbitrary
5602*0a6a1f1dSLionel Sambuc      meaning, unless BSF_DEBUGGING_RELOC is also set.  */
5603*0a6a1f1dSLionel Sambuc #define BSF_DEBUGGING          (1 << 2)
5604*0a6a1f1dSLionel Sambuc 
5605*0a6a1f1dSLionel Sambuc   /* The symbol denotes a function entry point.  Used in ELF,
5606*0a6a1f1dSLionel Sambuc      perhaps others someday.  */
5607*0a6a1f1dSLionel Sambuc #define BSF_FUNCTION           (1 << 3)
5608*0a6a1f1dSLionel Sambuc 
5609*0a6a1f1dSLionel Sambuc   /* Used by the linker.  */
5610*0a6a1f1dSLionel Sambuc #define BSF_KEEP               (1 << 5)
5611*0a6a1f1dSLionel Sambuc #define BSF_KEEP_G             (1 << 6)
5612*0a6a1f1dSLionel Sambuc 
5613*0a6a1f1dSLionel Sambuc   /* A weak global symbol, overridable without warnings by
5614*0a6a1f1dSLionel Sambuc      a regular global symbol of the same name.  */
5615*0a6a1f1dSLionel Sambuc #define BSF_WEAK               (1 << 7)
5616*0a6a1f1dSLionel Sambuc 
5617*0a6a1f1dSLionel Sambuc   /* This symbol was created to point to a section, e.g. ELF's
5618*0a6a1f1dSLionel Sambuc      STT_SECTION symbols.  */
5619*0a6a1f1dSLionel Sambuc #define BSF_SECTION_SYM        (1 << 8)
5620*0a6a1f1dSLionel Sambuc 
5621*0a6a1f1dSLionel Sambuc   /* The symbol used to be a common symbol, but now it is
5622*0a6a1f1dSLionel Sambuc      allocated.  */
5623*0a6a1f1dSLionel Sambuc #define BSF_OLD_COMMON         (1 << 9)
5624*0a6a1f1dSLionel Sambuc 
5625*0a6a1f1dSLionel Sambuc   /* In some files the type of a symbol sometimes alters its
5626*0a6a1f1dSLionel Sambuc      location in an output file - ie in coff a <<ISFCN>> symbol
5627*0a6a1f1dSLionel Sambuc      which is also <<C_EXT>> symbol appears where it was
5628*0a6a1f1dSLionel Sambuc      declared and not at the end of a section.  This bit is set
5629*0a6a1f1dSLionel Sambuc      by the target BFD part to convey this information.  */
5630*0a6a1f1dSLionel Sambuc #define BSF_NOT_AT_END         (1 << 10)
5631*0a6a1f1dSLionel Sambuc 
5632*0a6a1f1dSLionel Sambuc   /* Signal that the symbol is the label of constructor section.  */
5633*0a6a1f1dSLionel Sambuc #define BSF_CONSTRUCTOR        (1 << 11)
5634*0a6a1f1dSLionel Sambuc 
5635*0a6a1f1dSLionel Sambuc   /* Signal that the symbol is a warning symbol.  The name is a
5636*0a6a1f1dSLionel Sambuc      warning.  The name of the next symbol is the one to warn about;
5637*0a6a1f1dSLionel Sambuc      if a reference is made to a symbol with the same name as the next
5638*0a6a1f1dSLionel Sambuc      symbol, a warning is issued by the linker.  */
5639*0a6a1f1dSLionel Sambuc #define BSF_WARNING            (1 << 12)
5640*0a6a1f1dSLionel Sambuc 
5641*0a6a1f1dSLionel Sambuc   /* Signal that the symbol is indirect.  This symbol is an indirect
5642*0a6a1f1dSLionel Sambuc      pointer to the symbol with the same name as the next symbol.  */
5643*0a6a1f1dSLionel Sambuc #define BSF_INDIRECT           (1 << 13)
5644*0a6a1f1dSLionel Sambuc 
5645*0a6a1f1dSLionel Sambuc   /* BSF_FILE marks symbols that contain a file name.  This is used
5646*0a6a1f1dSLionel Sambuc      for ELF STT_FILE symbols.  */
5647*0a6a1f1dSLionel Sambuc #define BSF_FILE               (1 << 14)
5648*0a6a1f1dSLionel Sambuc 
5649*0a6a1f1dSLionel Sambuc   /* Symbol is from dynamic linking information.  */
5650*0a6a1f1dSLionel Sambuc #define BSF_DYNAMIC            (1 << 15)
5651*0a6a1f1dSLionel Sambuc 
5652*0a6a1f1dSLionel Sambuc   /* The symbol denotes a data object.  Used in ELF, and perhaps
5653*0a6a1f1dSLionel Sambuc      others someday.  */
5654*0a6a1f1dSLionel Sambuc #define BSF_OBJECT             (1 << 16)
5655*0a6a1f1dSLionel Sambuc 
5656*0a6a1f1dSLionel Sambuc   /* This symbol is a debugging symbol.  The value is the offset
5657*0a6a1f1dSLionel Sambuc      into the section of the data.  BSF_DEBUGGING should be set
5658*0a6a1f1dSLionel Sambuc      as well.  */
5659*0a6a1f1dSLionel Sambuc #define BSF_DEBUGGING_RELOC    (1 << 17)
5660*0a6a1f1dSLionel Sambuc 
5661*0a6a1f1dSLionel Sambuc   /* This symbol is thread local.  Used in ELF.  */
5662*0a6a1f1dSLionel Sambuc #define BSF_THREAD_LOCAL       (1 << 18)
5663*0a6a1f1dSLionel Sambuc 
5664*0a6a1f1dSLionel Sambuc   /* This symbol represents a complex relocation expression,
5665*0a6a1f1dSLionel Sambuc      with the expression tree serialized in the symbol name.  */
5666*0a6a1f1dSLionel Sambuc #define BSF_RELC               (1 << 19)
5667*0a6a1f1dSLionel Sambuc 
5668*0a6a1f1dSLionel Sambuc   /* This symbol represents a signed complex relocation expression,
5669*0a6a1f1dSLionel Sambuc      with the expression tree serialized in the symbol name.  */
5670*0a6a1f1dSLionel Sambuc #define BSF_SRELC              (1 << 20)
5671*0a6a1f1dSLionel Sambuc 
5672*0a6a1f1dSLionel Sambuc   /* This symbol was created by bfd_get_synthetic_symtab.  */
5673*0a6a1f1dSLionel Sambuc #define BSF_SYNTHETIC          (1 << 21)
5674*0a6a1f1dSLionel Sambuc 
5675*0a6a1f1dSLionel Sambuc   /* This symbol is an indirect code object.  Unrelated to BSF_INDIRECT.
5676*0a6a1f1dSLionel Sambuc      The dynamic linker will compute the value of this symbol by
5677*0a6a1f1dSLionel Sambuc      calling the function that it points to.  BSF_FUNCTION must
5678*0a6a1f1dSLionel Sambuc      also be also set.  */
5679*0a6a1f1dSLionel Sambuc #define BSF_GNU_INDIRECT_FUNCTION (1 << 22)
5680*0a6a1f1dSLionel Sambuc   /* This symbol is a globally unique data object.  The dynamic linker
5681*0a6a1f1dSLionel Sambuc      will make sure that in the entire process there is just one symbol
5682*0a6a1f1dSLionel Sambuc      with this name and type in use.  BSF_OBJECT must also be set.  */
5683*0a6a1f1dSLionel Sambuc #define BSF_GNU_UNIQUE         (1 << 23)
5684*0a6a1f1dSLionel Sambuc 
5685*0a6a1f1dSLionel Sambuc   flagword flags;
5686*0a6a1f1dSLionel Sambuc 
5687*0a6a1f1dSLionel Sambuc   /* A pointer to the section to which this symbol is
5688*0a6a1f1dSLionel Sambuc      relative.  This will always be non NULL, there are special
5689*0a6a1f1dSLionel Sambuc      sections for undefined and absolute symbols.  */
5690*0a6a1f1dSLionel Sambuc   struct bfd_section *section;
5691*0a6a1f1dSLionel Sambuc 
5692*0a6a1f1dSLionel Sambuc   /* Back end special data.  */
5693*0a6a1f1dSLionel Sambuc   union
5694*0a6a1f1dSLionel Sambuc     {
5695*0a6a1f1dSLionel Sambuc       void *p;
5696*0a6a1f1dSLionel Sambuc       bfd_vma i;
5697*0a6a1f1dSLionel Sambuc     }
5698*0a6a1f1dSLionel Sambuc   udata;
5699*0a6a1f1dSLionel Sambuc }
5700*0a6a1f1dSLionel Sambuc asymbol;
5701*0a6a1f1dSLionel Sambuc 
5702*0a6a1f1dSLionel Sambuc #define bfd_get_symtab_upper_bound(abfd) \
5703*0a6a1f1dSLionel Sambuc      BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
5704*0a6a1f1dSLionel Sambuc 
5705*0a6a1f1dSLionel Sambuc bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
5706*0a6a1f1dSLionel Sambuc 
5707*0a6a1f1dSLionel Sambuc bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
5708*0a6a1f1dSLionel Sambuc 
5709*0a6a1f1dSLionel Sambuc #define bfd_is_local_label_name(abfd, name) \
5710*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
5711*0a6a1f1dSLionel Sambuc 
5712*0a6a1f1dSLionel Sambuc bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
5713*0a6a1f1dSLionel Sambuc 
5714*0a6a1f1dSLionel Sambuc #define bfd_is_target_special_symbol(abfd, sym) \
5715*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
5716*0a6a1f1dSLionel Sambuc 
5717*0a6a1f1dSLionel Sambuc #define bfd_canonicalize_symtab(abfd, location) \
5718*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
5719*0a6a1f1dSLionel Sambuc 
5720*0a6a1f1dSLionel Sambuc bfd_boolean bfd_set_symtab
5721*0a6a1f1dSLionel Sambuc    (bfd *abfd, asymbol **location, unsigned int count);
5722*0a6a1f1dSLionel Sambuc 
5723*0a6a1f1dSLionel Sambuc void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
5724*0a6a1f1dSLionel Sambuc 
5725*0a6a1f1dSLionel Sambuc #define bfd_make_empty_symbol(abfd) \
5726*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
5727*0a6a1f1dSLionel Sambuc 
5728*0a6a1f1dSLionel Sambuc asymbol *_bfd_generic_make_empty_symbol (bfd *);
5729*0a6a1f1dSLionel Sambuc 
5730*0a6a1f1dSLionel Sambuc #define bfd_make_debug_symbol(abfd,ptr,size) \
5731*0a6a1f1dSLionel Sambuc   BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
5732*0a6a1f1dSLionel Sambuc 
5733*0a6a1f1dSLionel Sambuc int bfd_decode_symclass (asymbol *symbol);
5734*0a6a1f1dSLionel Sambuc 
5735*0a6a1f1dSLionel Sambuc bfd_boolean bfd_is_undefined_symclass (int symclass);
5736*0a6a1f1dSLionel Sambuc 
5737*0a6a1f1dSLionel Sambuc void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
5738*0a6a1f1dSLionel Sambuc 
5739*0a6a1f1dSLionel Sambuc bfd_boolean bfd_copy_private_symbol_data
5740*0a6a1f1dSLionel Sambuc    (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
5741*0a6a1f1dSLionel Sambuc 
5742*0a6a1f1dSLionel Sambuc #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
5743*0a6a1f1dSLionel Sambuc   BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
5744*0a6a1f1dSLionel Sambuc             (ibfd, isymbol, obfd, osymbol))
5745*0a6a1f1dSLionel Sambuc 
5746*0a6a1f1dSLionel Sambuc /* Extracted from bfd.c.  */
5747*0a6a1f1dSLionel Sambuc enum bfd_direction
5748*0a6a1f1dSLionel Sambuc   {
5749*0a6a1f1dSLionel Sambuc     no_direction = 0,
5750*0a6a1f1dSLionel Sambuc     read_direction = 1,
5751*0a6a1f1dSLionel Sambuc     write_direction = 2,
5752*0a6a1f1dSLionel Sambuc     both_direction = 3
5753*0a6a1f1dSLionel Sambuc   };
5754*0a6a1f1dSLionel Sambuc 
5755*0a6a1f1dSLionel Sambuc struct bfd
5756*0a6a1f1dSLionel Sambuc {
5757*0a6a1f1dSLionel Sambuc   /* A unique identifier of the BFD  */
5758*0a6a1f1dSLionel Sambuc   unsigned int id;
5759*0a6a1f1dSLionel Sambuc 
5760*0a6a1f1dSLionel Sambuc   /* The filename the application opened the BFD with.  */
5761*0a6a1f1dSLionel Sambuc   const char *filename;
5762*0a6a1f1dSLionel Sambuc 
5763*0a6a1f1dSLionel Sambuc   /* A pointer to the target jump table.  */
5764*0a6a1f1dSLionel Sambuc   const struct bfd_target *xvec;
5765*0a6a1f1dSLionel Sambuc 
5766*0a6a1f1dSLionel Sambuc   /* The IOSTREAM, and corresponding IO vector that provide access
5767*0a6a1f1dSLionel Sambuc      to the file backing the BFD.  */
5768*0a6a1f1dSLionel Sambuc   void *iostream;
5769*0a6a1f1dSLionel Sambuc   const struct bfd_iovec *iovec;
5770*0a6a1f1dSLionel Sambuc 
5771*0a6a1f1dSLionel Sambuc   /* The caching routines use these to maintain a
5772*0a6a1f1dSLionel Sambuc      least-recently-used list of BFDs.  */
5773*0a6a1f1dSLionel Sambuc   struct bfd *lru_prev, *lru_next;
5774*0a6a1f1dSLionel Sambuc 
5775*0a6a1f1dSLionel Sambuc   /* When a file is closed by the caching routines, BFD retains
5776*0a6a1f1dSLionel Sambuc      state information on the file here...  */
5777*0a6a1f1dSLionel Sambuc   ufile_ptr where;
5778*0a6a1f1dSLionel Sambuc 
5779*0a6a1f1dSLionel Sambuc   /* File modified time, if mtime_set is TRUE.  */
5780*0a6a1f1dSLionel Sambuc   long mtime;
5781*0a6a1f1dSLionel Sambuc 
5782*0a6a1f1dSLionel Sambuc   /* Reserved for an unimplemented file locking extension.  */
5783*0a6a1f1dSLionel Sambuc   int ifd;
5784*0a6a1f1dSLionel Sambuc 
5785*0a6a1f1dSLionel Sambuc   /* The format which belongs to the BFD. (object, core, etc.)  */
5786*0a6a1f1dSLionel Sambuc   bfd_format format;
5787*0a6a1f1dSLionel Sambuc 
5788*0a6a1f1dSLionel Sambuc   /* The direction with which the BFD was opened.  */
5789*0a6a1f1dSLionel Sambuc   enum bfd_direction direction;
5790*0a6a1f1dSLionel Sambuc 
5791*0a6a1f1dSLionel Sambuc   /* Format_specific flags.  */
5792*0a6a1f1dSLionel Sambuc   flagword flags;
5793*0a6a1f1dSLionel Sambuc 
5794*0a6a1f1dSLionel Sambuc   /* Values that may appear in the flags field of a BFD.  These also
5795*0a6a1f1dSLionel Sambuc      appear in the object_flags field of the bfd_target structure, where
5796*0a6a1f1dSLionel Sambuc      they indicate the set of flags used by that backend (not all flags
5797*0a6a1f1dSLionel Sambuc      are meaningful for all object file formats) (FIXME: at the moment,
5798*0a6a1f1dSLionel Sambuc      the object_flags values have mostly just been copied from backend
5799*0a6a1f1dSLionel Sambuc      to another, and are not necessarily correct).  */
5800*0a6a1f1dSLionel Sambuc 
5801*0a6a1f1dSLionel Sambuc #define BFD_NO_FLAGS   0x00
5802*0a6a1f1dSLionel Sambuc 
5803*0a6a1f1dSLionel Sambuc   /* BFD contains relocation entries.  */
5804*0a6a1f1dSLionel Sambuc #define HAS_RELOC      0x01
5805*0a6a1f1dSLionel Sambuc 
5806*0a6a1f1dSLionel Sambuc   /* BFD is directly executable.  */
5807*0a6a1f1dSLionel Sambuc #define EXEC_P         0x02
5808*0a6a1f1dSLionel Sambuc 
5809*0a6a1f1dSLionel Sambuc   /* BFD has line number information (basically used for F_LNNO in a
5810*0a6a1f1dSLionel Sambuc      COFF header).  */
5811*0a6a1f1dSLionel Sambuc #define HAS_LINENO     0x04
5812*0a6a1f1dSLionel Sambuc 
5813*0a6a1f1dSLionel Sambuc   /* BFD has debugging information.  */
5814*0a6a1f1dSLionel Sambuc #define HAS_DEBUG      0x08
5815*0a6a1f1dSLionel Sambuc 
5816*0a6a1f1dSLionel Sambuc   /* BFD has symbols.  */
5817*0a6a1f1dSLionel Sambuc #define HAS_SYMS       0x10
5818*0a6a1f1dSLionel Sambuc 
5819*0a6a1f1dSLionel Sambuc   /* BFD has local symbols (basically used for F_LSYMS in a COFF
5820*0a6a1f1dSLionel Sambuc      header).  */
5821*0a6a1f1dSLionel Sambuc #define HAS_LOCALS     0x20
5822*0a6a1f1dSLionel Sambuc 
5823*0a6a1f1dSLionel Sambuc   /* BFD is a dynamic object.  */
5824*0a6a1f1dSLionel Sambuc #define DYNAMIC        0x40
5825*0a6a1f1dSLionel Sambuc 
5826*0a6a1f1dSLionel Sambuc   /* Text section is write protected (if D_PAGED is not set, this is
5827*0a6a1f1dSLionel Sambuc      like an a.out NMAGIC file) (the linker sets this by default, but
5828*0a6a1f1dSLionel Sambuc      clears it for -r or -N).  */
5829*0a6a1f1dSLionel Sambuc #define WP_TEXT        0x80
5830*0a6a1f1dSLionel Sambuc 
5831*0a6a1f1dSLionel Sambuc   /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
5832*0a6a1f1dSLionel Sambuc      linker sets this by default, but clears it for -r or -n or -N).  */
5833*0a6a1f1dSLionel Sambuc #define D_PAGED        0x100
5834*0a6a1f1dSLionel Sambuc 
5835*0a6a1f1dSLionel Sambuc   /* BFD is relaxable (this means that bfd_relax_section may be able to
5836*0a6a1f1dSLionel Sambuc      do something) (sometimes bfd_relax_section can do something even if
5837*0a6a1f1dSLionel Sambuc      this is not set).  */
5838*0a6a1f1dSLionel Sambuc #define BFD_IS_RELAXABLE 0x200
5839*0a6a1f1dSLionel Sambuc 
5840*0a6a1f1dSLionel Sambuc   /* This may be set before writing out a BFD to request using a
5841*0a6a1f1dSLionel Sambuc      traditional format.  For example, this is used to request that when
5842*0a6a1f1dSLionel Sambuc      writing out an a.out object the symbols not be hashed to eliminate
5843*0a6a1f1dSLionel Sambuc      duplicates.  */
5844*0a6a1f1dSLionel Sambuc #define BFD_TRADITIONAL_FORMAT 0x400
5845*0a6a1f1dSLionel Sambuc 
5846*0a6a1f1dSLionel Sambuc   /* This flag indicates that the BFD contents are actually cached
5847*0a6a1f1dSLionel Sambuc      in memory.  If this is set, iostream points to a bfd_in_memory
5848*0a6a1f1dSLionel Sambuc      struct.  */
5849*0a6a1f1dSLionel Sambuc #define BFD_IN_MEMORY 0x800
5850*0a6a1f1dSLionel Sambuc 
5851*0a6a1f1dSLionel Sambuc   /* The sections in this BFD specify a memory page.  */
5852*0a6a1f1dSLionel Sambuc #define HAS_LOAD_PAGE 0x1000
5853*0a6a1f1dSLionel Sambuc 
5854*0a6a1f1dSLionel Sambuc   /* This BFD has been created by the linker and doesn't correspond
5855*0a6a1f1dSLionel Sambuc      to any input file.  */
5856*0a6a1f1dSLionel Sambuc #define BFD_LINKER_CREATED 0x2000
5857*0a6a1f1dSLionel Sambuc   /* This may be set before writing out a BFD to request that it
5858*0a6a1f1dSLionel Sambuc   be written using values for UIDs, GIDs, timestamps, etc. that
5859*0a6a1f1dSLionel Sambuc   will be consistent from run to run.  */
5860*0a6a1f1dSLionel Sambuc #define BFD_DETERMINISTIC_OUTPUT 0x4000
5861*0a6a1f1dSLionel Sambuc 
5862*0a6a1f1dSLionel Sambuc 
5863*0a6a1f1dSLionel Sambuc   /* This may be set before writing out a BFD to request that it
5864*0a6a1f1dSLionel Sambuc      be written using values for UIDs, GIDs, timestamps, etc. that
5865*0a6a1f1dSLionel Sambuc      will be consistent from run to run.  */
5866*0a6a1f1dSLionel Sambuc #define BFD_DETERMINISTIC_OUTPUT 0x4000
5867*0a6a1f1dSLionel Sambuc 
5868*0a6a1f1dSLionel Sambuc   /* Compress sections in this BFD.  */
5869*0a6a1f1dSLionel Sambuc #define BFD_COMPRESS 0x8000
5870*0a6a1f1dSLionel Sambuc 
5871*0a6a1f1dSLionel Sambuc   /* Decompress sections in this BFD.  */
5872*0a6a1f1dSLionel Sambuc #define BFD_DECOMPRESS 0x10000
5873*0a6a1f1dSLionel Sambuc 
5874*0a6a1f1dSLionel Sambuc   /* BFD is a dummy, for plugins.  */
5875*0a6a1f1dSLionel Sambuc #define BFD_PLUGIN 0x20000
5876*0a6a1f1dSLionel Sambuc 
5877*0a6a1f1dSLionel Sambuc   /* Flags bits to be saved in bfd_preserve_save.  */
5878*0a6a1f1dSLionel Sambuc #define BFD_FLAGS_SAVED \
5879*0a6a1f1dSLionel Sambuc   (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN)
5880*0a6a1f1dSLionel Sambuc 
5881*0a6a1f1dSLionel Sambuc   /* Flags bits which are for BFD use only.  */
5882*0a6a1f1dSLionel Sambuc #define BFD_FLAGS_FOR_BFD_USE_MASK \
5883*0a6a1f1dSLionel Sambuc   (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
5884*0a6a1f1dSLionel Sambuc    | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT)
5885*0a6a1f1dSLionel Sambuc 
5886*0a6a1f1dSLionel Sambuc   /* Currently my_archive is tested before adding origin to
5887*0a6a1f1dSLionel Sambuc      anything. I believe that this can become always an add of
5888*0a6a1f1dSLionel Sambuc      origin, with origin set to 0 for non archive files.  */
5889*0a6a1f1dSLionel Sambuc   ufile_ptr origin;
5890*0a6a1f1dSLionel Sambuc 
5891*0a6a1f1dSLionel Sambuc   /* The origin in the archive of the proxy entry.  This will
5892*0a6a1f1dSLionel Sambuc      normally be the same as origin, except for thin archives,
5893*0a6a1f1dSLionel Sambuc      when it will contain the current offset of the proxy in the
5894*0a6a1f1dSLionel Sambuc      thin archive rather than the offset of the bfd in its actual
5895*0a6a1f1dSLionel Sambuc      container.  */
5896*0a6a1f1dSLionel Sambuc   ufile_ptr proxy_origin;
5897*0a6a1f1dSLionel Sambuc 
5898*0a6a1f1dSLionel Sambuc   /* A hash table for section names.  */
5899*0a6a1f1dSLionel Sambuc   struct bfd_hash_table section_htab;
5900*0a6a1f1dSLionel Sambuc 
5901*0a6a1f1dSLionel Sambuc   /* Pointer to linked list of sections.  */
5902*0a6a1f1dSLionel Sambuc   struct bfd_section *sections;
5903*0a6a1f1dSLionel Sambuc 
5904*0a6a1f1dSLionel Sambuc   /* The last section on the section list.  */
5905*0a6a1f1dSLionel Sambuc   struct bfd_section *section_last;
5906*0a6a1f1dSLionel Sambuc 
5907*0a6a1f1dSLionel Sambuc   /* The number of sections.  */
5908*0a6a1f1dSLionel Sambuc   unsigned int section_count;
5909*0a6a1f1dSLionel Sambuc 
5910*0a6a1f1dSLionel Sambuc   /* Stuff only useful for object files:
5911*0a6a1f1dSLionel Sambuc      The start address.  */
5912*0a6a1f1dSLionel Sambuc   bfd_vma start_address;
5913*0a6a1f1dSLionel Sambuc 
5914*0a6a1f1dSLionel Sambuc   /* Used for input and output.  */
5915*0a6a1f1dSLionel Sambuc   unsigned int symcount;
5916*0a6a1f1dSLionel Sambuc 
5917*0a6a1f1dSLionel Sambuc   /* Symbol table for output BFD (with symcount entries).
5918*0a6a1f1dSLionel Sambuc      Also used by the linker to cache input BFD symbols.  */
5919*0a6a1f1dSLionel Sambuc   struct bfd_symbol  **outsymbols;
5920*0a6a1f1dSLionel Sambuc 
5921*0a6a1f1dSLionel Sambuc   /* Used for slurped dynamic symbol tables.  */
5922*0a6a1f1dSLionel Sambuc   unsigned int dynsymcount;
5923*0a6a1f1dSLionel Sambuc 
5924*0a6a1f1dSLionel Sambuc   /* Pointer to structure which contains architecture information.  */
5925*0a6a1f1dSLionel Sambuc   const struct bfd_arch_info *arch_info;
5926*0a6a1f1dSLionel Sambuc 
5927*0a6a1f1dSLionel Sambuc   /* Stuff only useful for archives.  */
5928*0a6a1f1dSLionel Sambuc   void *arelt_data;
5929*0a6a1f1dSLionel Sambuc   struct bfd *my_archive;      /* The containing archive BFD.  */
5930*0a6a1f1dSLionel Sambuc   struct bfd *archive_next;    /* The next BFD in the archive.  */
5931*0a6a1f1dSLionel Sambuc   struct bfd *archive_head;    /* The first BFD in the archive.  */
5932*0a6a1f1dSLionel Sambuc   struct bfd *nested_archives; /* List of nested archive in a flattened
5933*0a6a1f1dSLionel Sambuc                                   thin archive.  */
5934*0a6a1f1dSLionel Sambuc 
5935*0a6a1f1dSLionel Sambuc   /* A chain of BFD structures involved in a link.  */
5936*0a6a1f1dSLionel Sambuc   struct bfd *link_next;
5937*0a6a1f1dSLionel Sambuc 
5938*0a6a1f1dSLionel Sambuc   /* A field used by _bfd_generic_link_add_archive_symbols.  This will
5939*0a6a1f1dSLionel Sambuc      be used only for archive elements.  */
5940*0a6a1f1dSLionel Sambuc   int archive_pass;
5941*0a6a1f1dSLionel Sambuc 
5942*0a6a1f1dSLionel Sambuc   /* Used by the back end to hold private data.  */
5943*0a6a1f1dSLionel Sambuc   union
5944*0a6a1f1dSLionel Sambuc     {
5945*0a6a1f1dSLionel Sambuc       struct aout_data_struct *aout_data;
5946*0a6a1f1dSLionel Sambuc       struct artdata *aout_ar_data;
5947*0a6a1f1dSLionel Sambuc       struct _oasys_data *oasys_obj_data;
5948*0a6a1f1dSLionel Sambuc       struct _oasys_ar_data *oasys_ar_data;
5949*0a6a1f1dSLionel Sambuc       struct coff_tdata *coff_obj_data;
5950*0a6a1f1dSLionel Sambuc       struct pe_tdata *pe_obj_data;
5951*0a6a1f1dSLionel Sambuc       struct xcoff_tdata *xcoff_obj_data;
5952*0a6a1f1dSLionel Sambuc       struct ecoff_tdata *ecoff_obj_data;
5953*0a6a1f1dSLionel Sambuc       struct ieee_data_struct *ieee_data;
5954*0a6a1f1dSLionel Sambuc       struct ieee_ar_data_struct *ieee_ar_data;
5955*0a6a1f1dSLionel Sambuc       struct srec_data_struct *srec_data;
5956*0a6a1f1dSLionel Sambuc       struct verilog_data_struct *verilog_data;
5957*0a6a1f1dSLionel Sambuc       struct ihex_data_struct *ihex_data;
5958*0a6a1f1dSLionel Sambuc       struct tekhex_data_struct *tekhex_data;
5959*0a6a1f1dSLionel Sambuc       struct elf_obj_tdata *elf_obj_data;
5960*0a6a1f1dSLionel Sambuc       struct nlm_obj_tdata *nlm_obj_data;
5961*0a6a1f1dSLionel Sambuc       struct bout_data_struct *bout_data;
5962*0a6a1f1dSLionel Sambuc       struct mmo_data_struct *mmo_data;
5963*0a6a1f1dSLionel Sambuc       struct sun_core_struct *sun_core_data;
5964*0a6a1f1dSLionel Sambuc       struct sco5_core_struct *sco5_core_data;
5965*0a6a1f1dSLionel Sambuc       struct trad_core_struct *trad_core_data;
5966*0a6a1f1dSLionel Sambuc       struct som_data_struct *som_data;
5967*0a6a1f1dSLionel Sambuc       struct hpux_core_struct *hpux_core_data;
5968*0a6a1f1dSLionel Sambuc       struct hppabsd_core_struct *hppabsd_core_data;
5969*0a6a1f1dSLionel Sambuc       struct sgi_core_struct *sgi_core_data;
5970*0a6a1f1dSLionel Sambuc       struct lynx_core_struct *lynx_core_data;
5971*0a6a1f1dSLionel Sambuc       struct osf_core_struct *osf_core_data;
5972*0a6a1f1dSLionel Sambuc       struct cisco_core_struct *cisco_core_data;
5973*0a6a1f1dSLionel Sambuc       struct versados_data_struct *versados_data;
5974*0a6a1f1dSLionel Sambuc       struct netbsd_core_struct *netbsd_core_data;
5975*0a6a1f1dSLionel Sambuc       struct mach_o_data_struct *mach_o_data;
5976*0a6a1f1dSLionel Sambuc       struct mach_o_fat_data_struct *mach_o_fat_data;
5977*0a6a1f1dSLionel Sambuc       struct plugin_data_struct *plugin_data;
5978*0a6a1f1dSLionel Sambuc       struct bfd_pef_data_struct *pef_data;
5979*0a6a1f1dSLionel Sambuc       struct bfd_pef_xlib_data_struct *pef_xlib_data;
5980*0a6a1f1dSLionel Sambuc       struct bfd_sym_data_struct *sym_data;
5981*0a6a1f1dSLionel Sambuc       void *any;
5982*0a6a1f1dSLionel Sambuc     }
5983*0a6a1f1dSLionel Sambuc   tdata;
5984*0a6a1f1dSLionel Sambuc 
5985*0a6a1f1dSLionel Sambuc   /* Used by the application to hold private data.  */
5986*0a6a1f1dSLionel Sambuc   void *usrdata;
5987*0a6a1f1dSLionel Sambuc 
5988*0a6a1f1dSLionel Sambuc   /* Where all the allocated stuff under this BFD goes.  This is a
5989*0a6a1f1dSLionel Sambuc      struct objalloc *, but we use void * to avoid requiring the inclusion
5990*0a6a1f1dSLionel Sambuc      of objalloc.h.  */
5991*0a6a1f1dSLionel Sambuc   void *memory;
5992*0a6a1f1dSLionel Sambuc 
5993*0a6a1f1dSLionel Sambuc   /* Is the file descriptor being cached?  That is, can it be closed as
5994*0a6a1f1dSLionel Sambuc      needed, and re-opened when accessed later?  */
5995*0a6a1f1dSLionel Sambuc   unsigned int cacheable : 1;
5996*0a6a1f1dSLionel Sambuc 
5997*0a6a1f1dSLionel Sambuc   /* Marks whether there was a default target specified when the
5998*0a6a1f1dSLionel Sambuc      BFD was opened. This is used to select which matching algorithm
5999*0a6a1f1dSLionel Sambuc      to use to choose the back end.  */
6000*0a6a1f1dSLionel Sambuc   unsigned int target_defaulted : 1;
6001*0a6a1f1dSLionel Sambuc 
6002*0a6a1f1dSLionel Sambuc   /* ... and here: (``once'' means at least once).  */
6003*0a6a1f1dSLionel Sambuc   unsigned int opened_once : 1;
6004*0a6a1f1dSLionel Sambuc 
6005*0a6a1f1dSLionel Sambuc   /* Set if we have a locally maintained mtime value, rather than
6006*0a6a1f1dSLionel Sambuc      getting it from the file each time.  */
6007*0a6a1f1dSLionel Sambuc   unsigned int mtime_set : 1;
6008*0a6a1f1dSLionel Sambuc 
6009*0a6a1f1dSLionel Sambuc   /* Flag set if symbols from this BFD should not be exported.  */
6010*0a6a1f1dSLionel Sambuc   unsigned int no_export : 1;
6011*0a6a1f1dSLionel Sambuc 
6012*0a6a1f1dSLionel Sambuc   /* Remember when output has begun, to stop strange things
6013*0a6a1f1dSLionel Sambuc      from happening.  */
6014*0a6a1f1dSLionel Sambuc   unsigned int output_has_begun : 1;
6015*0a6a1f1dSLionel Sambuc 
6016*0a6a1f1dSLionel Sambuc   /* Have archive map.  */
6017*0a6a1f1dSLionel Sambuc   unsigned int has_armap : 1;
6018*0a6a1f1dSLionel Sambuc 
6019*0a6a1f1dSLionel Sambuc   /* Set if this is a thin archive.  */
6020*0a6a1f1dSLionel Sambuc   unsigned int is_thin_archive : 1;
6021*0a6a1f1dSLionel Sambuc 
6022*0a6a1f1dSLionel Sambuc   /* Set if only required symbols should be added in the link hash table for
6023*0a6a1f1dSLionel Sambuc      this object.  Used by VMS linkers.  */
6024*0a6a1f1dSLionel Sambuc   unsigned int selective_search : 1;
6025*0a6a1f1dSLionel Sambuc };
6026*0a6a1f1dSLionel Sambuc 
6027*0a6a1f1dSLionel Sambuc typedef enum bfd_error
6028*0a6a1f1dSLionel Sambuc {
6029*0a6a1f1dSLionel Sambuc   bfd_error_no_error = 0,
6030*0a6a1f1dSLionel Sambuc   bfd_error_system_call,
6031*0a6a1f1dSLionel Sambuc   bfd_error_invalid_target,
6032*0a6a1f1dSLionel Sambuc   bfd_error_wrong_format,
6033*0a6a1f1dSLionel Sambuc   bfd_error_wrong_object_format,
6034*0a6a1f1dSLionel Sambuc   bfd_error_invalid_operation,
6035*0a6a1f1dSLionel Sambuc   bfd_error_no_memory,
6036*0a6a1f1dSLionel Sambuc   bfd_error_no_symbols,
6037*0a6a1f1dSLionel Sambuc   bfd_error_no_armap,
6038*0a6a1f1dSLionel Sambuc   bfd_error_no_more_archived_files,
6039*0a6a1f1dSLionel Sambuc   bfd_error_malformed_archive,
6040*0a6a1f1dSLionel Sambuc   bfd_error_file_not_recognized,
6041*0a6a1f1dSLionel Sambuc   bfd_error_file_ambiguously_recognized,
6042*0a6a1f1dSLionel Sambuc   bfd_error_no_contents,
6043*0a6a1f1dSLionel Sambuc   bfd_error_nonrepresentable_section,
6044*0a6a1f1dSLionel Sambuc   bfd_error_no_debug_section,
6045*0a6a1f1dSLionel Sambuc   bfd_error_bad_value,
6046*0a6a1f1dSLionel Sambuc   bfd_error_file_truncated,
6047*0a6a1f1dSLionel Sambuc   bfd_error_file_too_big,
6048*0a6a1f1dSLionel Sambuc   bfd_error_on_input,
6049*0a6a1f1dSLionel Sambuc   bfd_error_invalid_error_code
6050*0a6a1f1dSLionel Sambuc }
6051*0a6a1f1dSLionel Sambuc bfd_error_type;
6052*0a6a1f1dSLionel Sambuc 
6053*0a6a1f1dSLionel Sambuc bfd_error_type bfd_get_error (void);
6054*0a6a1f1dSLionel Sambuc 
6055*0a6a1f1dSLionel Sambuc void bfd_set_error (bfd_error_type error_tag, ...);
6056*0a6a1f1dSLionel Sambuc 
6057*0a6a1f1dSLionel Sambuc const char *bfd_errmsg (bfd_error_type error_tag);
6058*0a6a1f1dSLionel Sambuc 
6059*0a6a1f1dSLionel Sambuc void bfd_perror (const char *message);
6060*0a6a1f1dSLionel Sambuc 
6061*0a6a1f1dSLionel Sambuc typedef void (*bfd_error_handler_type) (const char *, ...);
6062*0a6a1f1dSLionel Sambuc 
6063*0a6a1f1dSLionel Sambuc bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
6064*0a6a1f1dSLionel Sambuc 
6065*0a6a1f1dSLionel Sambuc void bfd_set_error_program_name (const char *);
6066*0a6a1f1dSLionel Sambuc 
6067*0a6a1f1dSLionel Sambuc bfd_error_handler_type bfd_get_error_handler (void);
6068*0a6a1f1dSLionel Sambuc 
6069*0a6a1f1dSLionel Sambuc typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,
6070*0a6a1f1dSLionel Sambuc                                          const char *bfd_version,
6071*0a6a1f1dSLionel Sambuc                                          const char *bfd_file,
6072*0a6a1f1dSLionel Sambuc                                          int bfd_line);
6073*0a6a1f1dSLionel Sambuc 
6074*0a6a1f1dSLionel Sambuc bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type);
6075*0a6a1f1dSLionel Sambuc 
6076*0a6a1f1dSLionel Sambuc bfd_assert_handler_type bfd_get_assert_handler (void);
6077*0a6a1f1dSLionel Sambuc 
6078*0a6a1f1dSLionel Sambuc long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
6079*0a6a1f1dSLionel Sambuc 
6080*0a6a1f1dSLionel Sambuc long bfd_canonicalize_reloc
6081*0a6a1f1dSLionel Sambuc    (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
6082*0a6a1f1dSLionel Sambuc 
6083*0a6a1f1dSLionel Sambuc void bfd_set_reloc
6084*0a6a1f1dSLionel Sambuc    (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
6085*0a6a1f1dSLionel Sambuc 
6086*0a6a1f1dSLionel Sambuc bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
6087*0a6a1f1dSLionel Sambuc 
6088*0a6a1f1dSLionel Sambuc int bfd_get_arch_size (bfd *abfd);
6089*0a6a1f1dSLionel Sambuc 
6090*0a6a1f1dSLionel Sambuc int bfd_get_sign_extend_vma (bfd *abfd);
6091*0a6a1f1dSLionel Sambuc 
6092*0a6a1f1dSLionel Sambuc bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
6093*0a6a1f1dSLionel Sambuc 
6094*0a6a1f1dSLionel Sambuc unsigned int bfd_get_gp_size (bfd *abfd);
6095*0a6a1f1dSLionel Sambuc 
6096*0a6a1f1dSLionel Sambuc void bfd_set_gp_size (bfd *abfd, unsigned int i);
6097*0a6a1f1dSLionel Sambuc 
6098*0a6a1f1dSLionel Sambuc bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
6099*0a6a1f1dSLionel Sambuc 
6100*0a6a1f1dSLionel Sambuc bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
6101*0a6a1f1dSLionel Sambuc 
6102*0a6a1f1dSLionel Sambuc #define bfd_copy_private_header_data(ibfd, obfd) \
6103*0a6a1f1dSLionel Sambuc      BFD_SEND (obfd, _bfd_copy_private_header_data, \
6104*0a6a1f1dSLionel Sambuc                (ibfd, obfd))
6105*0a6a1f1dSLionel Sambuc bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
6106*0a6a1f1dSLionel Sambuc 
6107*0a6a1f1dSLionel Sambuc #define bfd_copy_private_bfd_data(ibfd, obfd) \
6108*0a6a1f1dSLionel Sambuc      BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
6109*0a6a1f1dSLionel Sambuc                (ibfd, obfd))
6110*0a6a1f1dSLionel Sambuc bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
6111*0a6a1f1dSLionel Sambuc 
6112*0a6a1f1dSLionel Sambuc #define bfd_merge_private_bfd_data(ibfd, obfd) \
6113*0a6a1f1dSLionel Sambuc      BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
6114*0a6a1f1dSLionel Sambuc                (ibfd, obfd))
6115*0a6a1f1dSLionel Sambuc bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
6116*0a6a1f1dSLionel Sambuc 
6117*0a6a1f1dSLionel Sambuc #define bfd_set_private_flags(abfd, flags) \
6118*0a6a1f1dSLionel Sambuc      BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
6119*0a6a1f1dSLionel Sambuc #define bfd_sizeof_headers(abfd, info) \
6120*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
6121*0a6a1f1dSLionel Sambuc 
6122*0a6a1f1dSLionel Sambuc #define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
6123*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_find_nearest_line, \
6124*0a6a1f1dSLionel Sambuc                  (abfd, sec, syms, off, file, func, line))
6125*0a6a1f1dSLionel Sambuc 
6126*0a6a1f1dSLionel Sambuc #define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \
6127*0a6a1f1dSLionel Sambuc                                             line, disc) \
6128*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_find_nearest_line_discriminator, \
6129*0a6a1f1dSLionel Sambuc                  (abfd, sec, syms, off, file, func, line, disc))
6130*0a6a1f1dSLionel Sambuc 
6131*0a6a1f1dSLionel Sambuc #define bfd_find_line(abfd, syms, sym, file, line) \
6132*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_find_line, \
6133*0a6a1f1dSLionel Sambuc                  (abfd, syms, sym, file, line))
6134*0a6a1f1dSLionel Sambuc 
6135*0a6a1f1dSLionel Sambuc #define bfd_find_inliner_info(abfd, file, func, line) \
6136*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_find_inliner_info, \
6137*0a6a1f1dSLionel Sambuc                  (abfd, file, func, line))
6138*0a6a1f1dSLionel Sambuc 
6139*0a6a1f1dSLionel Sambuc #define bfd_debug_info_start(abfd) \
6140*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
6141*0a6a1f1dSLionel Sambuc 
6142*0a6a1f1dSLionel Sambuc #define bfd_debug_info_end(abfd) \
6143*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
6144*0a6a1f1dSLionel Sambuc 
6145*0a6a1f1dSLionel Sambuc #define bfd_debug_info_accumulate(abfd, section) \
6146*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
6147*0a6a1f1dSLionel Sambuc 
6148*0a6a1f1dSLionel Sambuc #define bfd_stat_arch_elt(abfd, stat) \
6149*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
6150*0a6a1f1dSLionel Sambuc 
6151*0a6a1f1dSLionel Sambuc #define bfd_update_armap_timestamp(abfd) \
6152*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
6153*0a6a1f1dSLionel Sambuc 
6154*0a6a1f1dSLionel Sambuc #define bfd_set_arch_mach(abfd, arch, mach)\
6155*0a6a1f1dSLionel Sambuc        BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
6156*0a6a1f1dSLionel Sambuc 
6157*0a6a1f1dSLionel Sambuc #define bfd_relax_section(abfd, section, link_info, again) \
6158*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
6159*0a6a1f1dSLionel Sambuc 
6160*0a6a1f1dSLionel Sambuc #define bfd_gc_sections(abfd, link_info) \
6161*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
6162*0a6a1f1dSLionel Sambuc 
6163*0a6a1f1dSLionel Sambuc #define bfd_lookup_section_flags(link_info, flag_info, section) \
6164*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info, section))
6165*0a6a1f1dSLionel Sambuc 
6166*0a6a1f1dSLionel Sambuc #define bfd_merge_sections(abfd, link_info) \
6167*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
6168*0a6a1f1dSLionel Sambuc 
6169*0a6a1f1dSLionel Sambuc #define bfd_is_group_section(abfd, sec) \
6170*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
6171*0a6a1f1dSLionel Sambuc 
6172*0a6a1f1dSLionel Sambuc #define bfd_discard_group(abfd, sec) \
6173*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
6174*0a6a1f1dSLionel Sambuc 
6175*0a6a1f1dSLionel Sambuc #define bfd_link_hash_table_create(abfd) \
6176*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
6177*0a6a1f1dSLionel Sambuc 
6178*0a6a1f1dSLionel Sambuc #define bfd_link_hash_table_free(abfd, hash) \
6179*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
6180*0a6a1f1dSLionel Sambuc 
6181*0a6a1f1dSLionel Sambuc #define bfd_link_add_symbols(abfd, info) \
6182*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
6183*0a6a1f1dSLionel Sambuc 
6184*0a6a1f1dSLionel Sambuc #define bfd_link_just_syms(abfd, sec, info) \
6185*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
6186*0a6a1f1dSLionel Sambuc 
6187*0a6a1f1dSLionel Sambuc #define bfd_final_link(abfd, info) \
6188*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_final_link, (abfd, info))
6189*0a6a1f1dSLionel Sambuc 
6190*0a6a1f1dSLionel Sambuc #define bfd_free_cached_info(abfd) \
6191*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
6192*0a6a1f1dSLionel Sambuc 
6193*0a6a1f1dSLionel Sambuc #define bfd_get_dynamic_symtab_upper_bound(abfd) \
6194*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
6195*0a6a1f1dSLionel Sambuc 
6196*0a6a1f1dSLionel Sambuc #define bfd_print_private_bfd_data(abfd, file)\
6197*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
6198*0a6a1f1dSLionel Sambuc 
6199*0a6a1f1dSLionel Sambuc #define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
6200*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
6201*0a6a1f1dSLionel Sambuc 
6202*0a6a1f1dSLionel Sambuc #define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
6203*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
6204*0a6a1f1dSLionel Sambuc                                                    dyncount, dynsyms, ret))
6205*0a6a1f1dSLionel Sambuc 
6206*0a6a1f1dSLionel Sambuc #define bfd_get_dynamic_reloc_upper_bound(abfd) \
6207*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
6208*0a6a1f1dSLionel Sambuc 
6209*0a6a1f1dSLionel Sambuc #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
6210*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
6211*0a6a1f1dSLionel Sambuc 
6212*0a6a1f1dSLionel Sambuc extern bfd_byte *bfd_get_relocated_section_contents
6213*0a6a1f1dSLionel Sambuc   (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
6214*0a6a1f1dSLionel Sambuc    bfd_boolean, asymbol **);
6215*0a6a1f1dSLionel Sambuc 
6216*0a6a1f1dSLionel Sambuc bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
6217*0a6a1f1dSLionel Sambuc 
6218*0a6a1f1dSLionel Sambuc struct bfd_preserve
6219*0a6a1f1dSLionel Sambuc {
6220*0a6a1f1dSLionel Sambuc   void *marker;
6221*0a6a1f1dSLionel Sambuc   void *tdata;
6222*0a6a1f1dSLionel Sambuc   flagword flags;
6223*0a6a1f1dSLionel Sambuc   const struct bfd_arch_info *arch_info;
6224*0a6a1f1dSLionel Sambuc   struct bfd_section *sections;
6225*0a6a1f1dSLionel Sambuc   struct bfd_section *section_last;
6226*0a6a1f1dSLionel Sambuc   unsigned int section_count;
6227*0a6a1f1dSLionel Sambuc   struct bfd_hash_table section_htab;
6228*0a6a1f1dSLionel Sambuc };
6229*0a6a1f1dSLionel Sambuc 
6230*0a6a1f1dSLionel Sambuc bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
6231*0a6a1f1dSLionel Sambuc 
6232*0a6a1f1dSLionel Sambuc void bfd_preserve_restore (bfd *, struct bfd_preserve *);
6233*0a6a1f1dSLionel Sambuc 
6234*0a6a1f1dSLionel Sambuc void bfd_preserve_finish (bfd *, struct bfd_preserve *);
6235*0a6a1f1dSLionel Sambuc 
6236*0a6a1f1dSLionel Sambuc bfd_vma bfd_emul_get_maxpagesize (const char *);
6237*0a6a1f1dSLionel Sambuc 
6238*0a6a1f1dSLionel Sambuc void bfd_emul_set_maxpagesize (const char *, bfd_vma);
6239*0a6a1f1dSLionel Sambuc 
6240*0a6a1f1dSLionel Sambuc bfd_vma bfd_emul_get_commonpagesize (const char *);
6241*0a6a1f1dSLionel Sambuc 
6242*0a6a1f1dSLionel Sambuc void bfd_emul_set_commonpagesize (const char *, bfd_vma);
6243*0a6a1f1dSLionel Sambuc 
6244*0a6a1f1dSLionel Sambuc char *bfd_demangle (bfd *, const char *, int);
6245*0a6a1f1dSLionel Sambuc 
6246*0a6a1f1dSLionel Sambuc /* Extracted from archive.c.  */
6247*0a6a1f1dSLionel Sambuc symindex bfd_get_next_mapent
6248*0a6a1f1dSLionel Sambuc    (bfd *abfd, symindex previous, carsym **sym);
6249*0a6a1f1dSLionel Sambuc 
6250*0a6a1f1dSLionel Sambuc bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
6251*0a6a1f1dSLionel Sambuc 
6252*0a6a1f1dSLionel Sambuc bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
6253*0a6a1f1dSLionel Sambuc 
6254*0a6a1f1dSLionel Sambuc /* Extracted from corefile.c.  */
6255*0a6a1f1dSLionel Sambuc const char *bfd_core_file_failing_command (bfd *abfd);
6256*0a6a1f1dSLionel Sambuc 
6257*0a6a1f1dSLionel Sambuc int bfd_core_file_failing_signal (bfd *abfd);
6258*0a6a1f1dSLionel Sambuc 
6259*0a6a1f1dSLionel Sambuc int bfd_core_file_pid (bfd *abfd);
6260*0a6a1f1dSLionel Sambuc 
6261*0a6a1f1dSLionel Sambuc bfd_boolean core_file_matches_executable_p
6262*0a6a1f1dSLionel Sambuc    (bfd *core_bfd, bfd *exec_bfd);
6263*0a6a1f1dSLionel Sambuc 
6264*0a6a1f1dSLionel Sambuc bfd_boolean generic_core_file_matches_executable_p
6265*0a6a1f1dSLionel Sambuc    (bfd *core_bfd, bfd *exec_bfd);
6266*0a6a1f1dSLionel Sambuc 
6267*0a6a1f1dSLionel Sambuc /* Extracted from targets.c.  */
6268*0a6a1f1dSLionel Sambuc #define BFD_SEND(bfd, message, arglist) \
6269*0a6a1f1dSLionel Sambuc   ((*((bfd)->xvec->message)) arglist)
6270*0a6a1f1dSLionel Sambuc 
6271*0a6a1f1dSLionel Sambuc #ifdef DEBUG_BFD_SEND
6272*0a6a1f1dSLionel Sambuc #undef BFD_SEND
6273*0a6a1f1dSLionel Sambuc #define BFD_SEND(bfd, message, arglist) \
6274*0a6a1f1dSLionel Sambuc   (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
6275*0a6a1f1dSLionel Sambuc     ((*((bfd)->xvec->message)) arglist) : \
6276*0a6a1f1dSLionel Sambuc     (bfd_assert (__FILE__,__LINE__), NULL))
6277*0a6a1f1dSLionel Sambuc #endif
6278*0a6a1f1dSLionel Sambuc #define BFD_SEND_FMT(bfd, message, arglist) \
6279*0a6a1f1dSLionel Sambuc   (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
6280*0a6a1f1dSLionel Sambuc 
6281*0a6a1f1dSLionel Sambuc #ifdef DEBUG_BFD_SEND
6282*0a6a1f1dSLionel Sambuc #undef BFD_SEND_FMT
6283*0a6a1f1dSLionel Sambuc #define BFD_SEND_FMT(bfd, message, arglist) \
6284*0a6a1f1dSLionel Sambuc   (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
6285*0a6a1f1dSLionel Sambuc    (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
6286*0a6a1f1dSLionel Sambuc    (bfd_assert (__FILE__,__LINE__), NULL))
6287*0a6a1f1dSLionel Sambuc #endif
6288*0a6a1f1dSLionel Sambuc 
6289*0a6a1f1dSLionel Sambuc enum bfd_flavour
6290*0a6a1f1dSLionel Sambuc {
6291*0a6a1f1dSLionel Sambuc   bfd_target_unknown_flavour,
6292*0a6a1f1dSLionel Sambuc   bfd_target_aout_flavour,
6293*0a6a1f1dSLionel Sambuc   bfd_target_coff_flavour,
6294*0a6a1f1dSLionel Sambuc   bfd_target_ecoff_flavour,
6295*0a6a1f1dSLionel Sambuc   bfd_target_xcoff_flavour,
6296*0a6a1f1dSLionel Sambuc   bfd_target_elf_flavour,
6297*0a6a1f1dSLionel Sambuc   bfd_target_ieee_flavour,
6298*0a6a1f1dSLionel Sambuc   bfd_target_nlm_flavour,
6299*0a6a1f1dSLionel Sambuc   bfd_target_oasys_flavour,
6300*0a6a1f1dSLionel Sambuc   bfd_target_tekhex_flavour,
6301*0a6a1f1dSLionel Sambuc   bfd_target_srec_flavour,
6302*0a6a1f1dSLionel Sambuc   bfd_target_verilog_flavour,
6303*0a6a1f1dSLionel Sambuc   bfd_target_ihex_flavour,
6304*0a6a1f1dSLionel Sambuc   bfd_target_som_flavour,
6305*0a6a1f1dSLionel Sambuc   bfd_target_os9k_flavour,
6306*0a6a1f1dSLionel Sambuc   bfd_target_versados_flavour,
6307*0a6a1f1dSLionel Sambuc   bfd_target_msdos_flavour,
6308*0a6a1f1dSLionel Sambuc   bfd_target_ovax_flavour,
6309*0a6a1f1dSLionel Sambuc   bfd_target_evax_flavour,
6310*0a6a1f1dSLionel Sambuc   bfd_target_mmo_flavour,
6311*0a6a1f1dSLionel Sambuc   bfd_target_mach_o_flavour,
6312*0a6a1f1dSLionel Sambuc   bfd_target_pef_flavour,
6313*0a6a1f1dSLionel Sambuc   bfd_target_pef_xlib_flavour,
6314*0a6a1f1dSLionel Sambuc   bfd_target_sym_flavour
6315*0a6a1f1dSLionel Sambuc };
6316*0a6a1f1dSLionel Sambuc 
6317*0a6a1f1dSLionel Sambuc enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
6318*0a6a1f1dSLionel Sambuc 
6319*0a6a1f1dSLionel Sambuc /* Forward declaration.  */
6320*0a6a1f1dSLionel Sambuc typedef struct bfd_link_info _bfd_link_info;
6321*0a6a1f1dSLionel Sambuc 
6322*0a6a1f1dSLionel Sambuc /* Forward declaration.  */
6323*0a6a1f1dSLionel Sambuc typedef struct flag_info flag_info;
6324*0a6a1f1dSLionel Sambuc 
6325*0a6a1f1dSLionel Sambuc typedef struct bfd_target
6326*0a6a1f1dSLionel Sambuc {
6327*0a6a1f1dSLionel Sambuc   /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
6328*0a6a1f1dSLionel Sambuc   char *name;
6329*0a6a1f1dSLionel Sambuc 
6330*0a6a1f1dSLionel Sambuc  /* The "flavour" of a back end is a general indication about
6331*0a6a1f1dSLionel Sambuc     the contents of a file.  */
6332*0a6a1f1dSLionel Sambuc   enum bfd_flavour flavour;
6333*0a6a1f1dSLionel Sambuc 
6334*0a6a1f1dSLionel Sambuc   /* The order of bytes within the data area of a file.  */
6335*0a6a1f1dSLionel Sambuc   enum bfd_endian byteorder;
6336*0a6a1f1dSLionel Sambuc 
6337*0a6a1f1dSLionel Sambuc  /* The order of bytes within the header parts of a file.  */
6338*0a6a1f1dSLionel Sambuc   enum bfd_endian header_byteorder;
6339*0a6a1f1dSLionel Sambuc 
6340*0a6a1f1dSLionel Sambuc   /* A mask of all the flags which an executable may have set -
6341*0a6a1f1dSLionel Sambuc      from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>.  */
6342*0a6a1f1dSLionel Sambuc   flagword object_flags;
6343*0a6a1f1dSLionel Sambuc 
6344*0a6a1f1dSLionel Sambuc  /* A mask of all the flags which a section may have set - from
6345*0a6a1f1dSLionel Sambuc     the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>.  */
6346*0a6a1f1dSLionel Sambuc   flagword section_flags;
6347*0a6a1f1dSLionel Sambuc 
6348*0a6a1f1dSLionel Sambuc  /* The character normally found at the front of a symbol.
6349*0a6a1f1dSLionel Sambuc     (if any), perhaps `_'.  */
6350*0a6a1f1dSLionel Sambuc   char symbol_leading_char;
6351*0a6a1f1dSLionel Sambuc 
6352*0a6a1f1dSLionel Sambuc  /* The pad character for file names within an archive header.  */
6353*0a6a1f1dSLionel Sambuc   char ar_pad_char;
6354*0a6a1f1dSLionel Sambuc 
6355*0a6a1f1dSLionel Sambuc   /* The maximum number of characters in an archive header.  */
6356*0a6a1f1dSLionel Sambuc   unsigned char ar_max_namelen;
6357*0a6a1f1dSLionel Sambuc 
6358*0a6a1f1dSLionel Sambuc   /* How well this target matches, used to select between various
6359*0a6a1f1dSLionel Sambuc      possible targets when more than one target matches.  */
6360*0a6a1f1dSLionel Sambuc   unsigned char match_priority;
6361*0a6a1f1dSLionel Sambuc 
6362*0a6a1f1dSLionel Sambuc   /* Entries for byte swapping for data. These are different from the
6363*0a6a1f1dSLionel Sambuc      other entry points, since they don't take a BFD as the first argument.
6364*0a6a1f1dSLionel Sambuc      Certain other handlers could do the same.  */
6365*0a6a1f1dSLionel Sambuc   bfd_uint64_t   (*bfd_getx64) (const void *);
6366*0a6a1f1dSLionel Sambuc   bfd_int64_t    (*bfd_getx_signed_64) (const void *);
6367*0a6a1f1dSLionel Sambuc   void           (*bfd_putx64) (bfd_uint64_t, void *);
6368*0a6a1f1dSLionel Sambuc   bfd_vma        (*bfd_getx32) (const void *);
6369*0a6a1f1dSLionel Sambuc   bfd_signed_vma (*bfd_getx_signed_32) (const void *);
6370*0a6a1f1dSLionel Sambuc   void           (*bfd_putx32) (bfd_vma, void *);
6371*0a6a1f1dSLionel Sambuc   bfd_vma        (*bfd_getx16) (const void *);
6372*0a6a1f1dSLionel Sambuc   bfd_signed_vma (*bfd_getx_signed_16) (const void *);
6373*0a6a1f1dSLionel Sambuc   void           (*bfd_putx16) (bfd_vma, void *);
6374*0a6a1f1dSLionel Sambuc 
6375*0a6a1f1dSLionel Sambuc   /* Byte swapping for the headers.  */
6376*0a6a1f1dSLionel Sambuc   bfd_uint64_t   (*bfd_h_getx64) (const void *);
6377*0a6a1f1dSLionel Sambuc   bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
6378*0a6a1f1dSLionel Sambuc   void           (*bfd_h_putx64) (bfd_uint64_t, void *);
6379*0a6a1f1dSLionel Sambuc   bfd_vma        (*bfd_h_getx32) (const void *);
6380*0a6a1f1dSLionel Sambuc   bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
6381*0a6a1f1dSLionel Sambuc   void           (*bfd_h_putx32) (bfd_vma, void *);
6382*0a6a1f1dSLionel Sambuc   bfd_vma        (*bfd_h_getx16) (const void *);
6383*0a6a1f1dSLionel Sambuc   bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
6384*0a6a1f1dSLionel Sambuc   void           (*bfd_h_putx16) (bfd_vma, void *);
6385*0a6a1f1dSLionel Sambuc 
6386*0a6a1f1dSLionel Sambuc   /* Format dependent routines: these are vectors of entry points
6387*0a6a1f1dSLionel Sambuc      within the target vector structure, one for each format to check.  */
6388*0a6a1f1dSLionel Sambuc 
6389*0a6a1f1dSLionel Sambuc   /* Check the format of a file being read.  Return a <<bfd_target *>> or zero.  */
6390*0a6a1f1dSLionel Sambuc   const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
6391*0a6a1f1dSLionel Sambuc 
6392*0a6a1f1dSLionel Sambuc   /* Set the format of a file being written.  */
6393*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
6394*0a6a1f1dSLionel Sambuc 
6395*0a6a1f1dSLionel Sambuc   /* Write cached information into a file being written, at <<bfd_close>>.  */
6396*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
6397*0a6a1f1dSLionel Sambuc 
6398*0a6a1f1dSLionel Sambuc 
6399*0a6a1f1dSLionel Sambuc   /* Generic entry points.  */
6400*0a6a1f1dSLionel Sambuc #define BFD_JUMP_TABLE_GENERIC(NAME) \
6401*0a6a1f1dSLionel Sambuc   NAME##_close_and_cleanup, \
6402*0a6a1f1dSLionel Sambuc   NAME##_bfd_free_cached_info, \
6403*0a6a1f1dSLionel Sambuc   NAME##_new_section_hook, \
6404*0a6a1f1dSLionel Sambuc   NAME##_get_section_contents, \
6405*0a6a1f1dSLionel Sambuc   NAME##_get_section_contents_in_window
6406*0a6a1f1dSLionel Sambuc 
6407*0a6a1f1dSLionel Sambuc   /* Called when the BFD is being closed to do any necessary cleanup.  */
6408*0a6a1f1dSLionel Sambuc   bfd_boolean (*_close_and_cleanup) (bfd *);
6409*0a6a1f1dSLionel Sambuc   /* Ask the BFD to free all cached information.  */
6410*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_free_cached_info) (bfd *);
6411*0a6a1f1dSLionel Sambuc   /* Called when a new section is created.  */
6412*0a6a1f1dSLionel Sambuc   bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
6413*0a6a1f1dSLionel Sambuc   /* Read the contents of a section.  */
6414*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_get_section_contents)
6415*0a6a1f1dSLionel Sambuc     (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
6416*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_get_section_contents_in_window)
6417*0a6a1f1dSLionel Sambuc     (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
6418*0a6a1f1dSLionel Sambuc 
6419*0a6a1f1dSLionel Sambuc   /* Entry points to copy private data.  */
6420*0a6a1f1dSLionel Sambuc #define BFD_JUMP_TABLE_COPY(NAME) \
6421*0a6a1f1dSLionel Sambuc   NAME##_bfd_copy_private_bfd_data, \
6422*0a6a1f1dSLionel Sambuc   NAME##_bfd_merge_private_bfd_data, \
6423*0a6a1f1dSLionel Sambuc   _bfd_generic_init_private_section_data, \
6424*0a6a1f1dSLionel Sambuc   NAME##_bfd_copy_private_section_data, \
6425*0a6a1f1dSLionel Sambuc   NAME##_bfd_copy_private_symbol_data, \
6426*0a6a1f1dSLionel Sambuc   NAME##_bfd_copy_private_header_data, \
6427*0a6a1f1dSLionel Sambuc   NAME##_bfd_set_private_flags, \
6428*0a6a1f1dSLionel Sambuc   NAME##_bfd_print_private_bfd_data
6429*0a6a1f1dSLionel Sambuc 
6430*0a6a1f1dSLionel Sambuc   /* Called to copy BFD general private data from one object file
6431*0a6a1f1dSLionel Sambuc      to another.  */
6432*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
6433*0a6a1f1dSLionel Sambuc   /* Called to merge BFD general private data from one object file
6434*0a6a1f1dSLionel Sambuc      to a common output file when linking.  */
6435*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
6436*0a6a1f1dSLionel Sambuc   /* Called to initialize BFD private section data from one object file
6437*0a6a1f1dSLionel Sambuc      to another.  */
6438*0a6a1f1dSLionel Sambuc #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
6439*0a6a1f1dSLionel Sambuc   BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
6440*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_init_private_section_data)
6441*0a6a1f1dSLionel Sambuc     (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
6442*0a6a1f1dSLionel Sambuc   /* Called to copy BFD private section data from one object file
6443*0a6a1f1dSLionel Sambuc      to another.  */
6444*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_copy_private_section_data)
6445*0a6a1f1dSLionel Sambuc     (bfd *, sec_ptr, bfd *, sec_ptr);
6446*0a6a1f1dSLionel Sambuc   /* Called to copy BFD private symbol data from one symbol
6447*0a6a1f1dSLionel Sambuc      to another.  */
6448*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_copy_private_symbol_data)
6449*0a6a1f1dSLionel Sambuc     (bfd *, asymbol *, bfd *, asymbol *);
6450*0a6a1f1dSLionel Sambuc   /* Called to copy BFD private header data from one object file
6451*0a6a1f1dSLionel Sambuc      to another.  */
6452*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_copy_private_header_data)
6453*0a6a1f1dSLionel Sambuc     (bfd *, bfd *);
6454*0a6a1f1dSLionel Sambuc   /* Called to set private backend flags.  */
6455*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
6456*0a6a1f1dSLionel Sambuc 
6457*0a6a1f1dSLionel Sambuc   /* Called to print private BFD data.  */
6458*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
6459*0a6a1f1dSLionel Sambuc 
6460*0a6a1f1dSLionel Sambuc   /* Core file entry points.  */
6461*0a6a1f1dSLionel Sambuc #define BFD_JUMP_TABLE_CORE(NAME) \
6462*0a6a1f1dSLionel Sambuc   NAME##_core_file_failing_command, \
6463*0a6a1f1dSLionel Sambuc   NAME##_core_file_failing_signal, \
6464*0a6a1f1dSLionel Sambuc   NAME##_core_file_matches_executable_p, \
6465*0a6a1f1dSLionel Sambuc   NAME##_core_file_pid
6466*0a6a1f1dSLionel Sambuc 
6467*0a6a1f1dSLionel Sambuc   char *      (*_core_file_failing_command) (bfd *);
6468*0a6a1f1dSLionel Sambuc   int         (*_core_file_failing_signal) (bfd *);
6469*0a6a1f1dSLionel Sambuc   bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
6470*0a6a1f1dSLionel Sambuc   int         (*_core_file_pid) (bfd *);
6471*0a6a1f1dSLionel Sambuc 
6472*0a6a1f1dSLionel Sambuc   /* Archive entry points.  */
6473*0a6a1f1dSLionel Sambuc #define BFD_JUMP_TABLE_ARCHIVE(NAME) \
6474*0a6a1f1dSLionel Sambuc   NAME##_slurp_armap, \
6475*0a6a1f1dSLionel Sambuc   NAME##_slurp_extended_name_table, \
6476*0a6a1f1dSLionel Sambuc   NAME##_construct_extended_name_table, \
6477*0a6a1f1dSLionel Sambuc   NAME##_truncate_arname, \
6478*0a6a1f1dSLionel Sambuc   NAME##_write_armap, \
6479*0a6a1f1dSLionel Sambuc   NAME##_read_ar_hdr, \
6480*0a6a1f1dSLionel Sambuc   NAME##_write_ar_hdr, \
6481*0a6a1f1dSLionel Sambuc   NAME##_openr_next_archived_file, \
6482*0a6a1f1dSLionel Sambuc   NAME##_get_elt_at_index, \
6483*0a6a1f1dSLionel Sambuc   NAME##_generic_stat_arch_elt, \
6484*0a6a1f1dSLionel Sambuc   NAME##_update_armap_timestamp
6485*0a6a1f1dSLionel Sambuc 
6486*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_slurp_armap) (bfd *);
6487*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
6488*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_construct_extended_name_table)
6489*0a6a1f1dSLionel Sambuc     (bfd *, char **, bfd_size_type *, const char **);
6490*0a6a1f1dSLionel Sambuc   void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
6491*0a6a1f1dSLionel Sambuc   bfd_boolean (*write_armap)
6492*0a6a1f1dSLionel Sambuc     (bfd *, unsigned int, struct orl *, unsigned int, int);
6493*0a6a1f1dSLionel Sambuc   void *      (*_bfd_read_ar_hdr_fn) (bfd *);
6494*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
6495*0a6a1f1dSLionel Sambuc   bfd *       (*openr_next_archived_file) (bfd *, bfd *);
6496*0a6a1f1dSLionel Sambuc #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
6497*0a6a1f1dSLionel Sambuc   bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
6498*0a6a1f1dSLionel Sambuc   int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
6499*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
6500*0a6a1f1dSLionel Sambuc 
6501*0a6a1f1dSLionel Sambuc   /* Entry points used for symbols.  */
6502*0a6a1f1dSLionel Sambuc #define BFD_JUMP_TABLE_SYMBOLS(NAME) \
6503*0a6a1f1dSLionel Sambuc   NAME##_get_symtab_upper_bound, \
6504*0a6a1f1dSLionel Sambuc   NAME##_canonicalize_symtab, \
6505*0a6a1f1dSLionel Sambuc   NAME##_make_empty_symbol, \
6506*0a6a1f1dSLionel Sambuc   NAME##_print_symbol, \
6507*0a6a1f1dSLionel Sambuc   NAME##_get_symbol_info, \
6508*0a6a1f1dSLionel Sambuc   NAME##_bfd_is_local_label_name, \
6509*0a6a1f1dSLionel Sambuc   NAME##_bfd_is_target_special_symbol, \
6510*0a6a1f1dSLionel Sambuc   NAME##_get_lineno, \
6511*0a6a1f1dSLionel Sambuc   NAME##_find_nearest_line, \
6512*0a6a1f1dSLionel Sambuc   _bfd_generic_find_nearest_line_discriminator, \
6513*0a6a1f1dSLionel Sambuc   _bfd_generic_find_line, \
6514*0a6a1f1dSLionel Sambuc   NAME##_find_inliner_info, \
6515*0a6a1f1dSLionel Sambuc   NAME##_bfd_make_debug_symbol, \
6516*0a6a1f1dSLionel Sambuc   NAME##_read_minisymbols, \
6517*0a6a1f1dSLionel Sambuc   NAME##_minisymbol_to_symbol
6518*0a6a1f1dSLionel Sambuc 
6519*0a6a1f1dSLionel Sambuc   long        (*_bfd_get_symtab_upper_bound) (bfd *);
6520*0a6a1f1dSLionel Sambuc   long        (*_bfd_canonicalize_symtab)
6521*0a6a1f1dSLionel Sambuc     (bfd *, struct bfd_symbol **);
6522*0a6a1f1dSLionel Sambuc   struct bfd_symbol *
6523*0a6a1f1dSLionel Sambuc               (*_bfd_make_empty_symbol) (bfd *);
6524*0a6a1f1dSLionel Sambuc   void        (*_bfd_print_symbol)
6525*0a6a1f1dSLionel Sambuc     (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
6526*0a6a1f1dSLionel Sambuc #define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
6527*0a6a1f1dSLionel Sambuc   void        (*_bfd_get_symbol_info)
6528*0a6a1f1dSLionel Sambuc     (bfd *, struct bfd_symbol *, symbol_info *);
6529*0a6a1f1dSLionel Sambuc #define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
6530*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
6531*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
6532*0a6a1f1dSLionel Sambuc   alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
6533*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_find_nearest_line)
6534*0a6a1f1dSLionel Sambuc     (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
6535*0a6a1f1dSLionel Sambuc      const char **, const char **, unsigned int *);
6536*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_find_nearest_line_discriminator)
6537*0a6a1f1dSLionel Sambuc     (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
6538*0a6a1f1dSLionel Sambuc      const char **, const char **, unsigned int *, unsigned int *);
6539*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_find_line)
6540*0a6a1f1dSLionel Sambuc     (bfd *, struct bfd_symbol **, struct bfd_symbol *,
6541*0a6a1f1dSLionel Sambuc      const char **, unsigned int *);
6542*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_find_inliner_info)
6543*0a6a1f1dSLionel Sambuc     (bfd *, const char **, const char **, unsigned int *);
6544*0a6a1f1dSLionel Sambuc  /* Back-door to allow format-aware applications to create debug symbols
6545*0a6a1f1dSLionel Sambuc     while using BFD for everything else.  Currently used by the assembler
6546*0a6a1f1dSLionel Sambuc     when creating COFF files.  */
6547*0a6a1f1dSLionel Sambuc   asymbol *   (*_bfd_make_debug_symbol)
6548*0a6a1f1dSLionel Sambuc     (bfd *, void *, unsigned long size);
6549*0a6a1f1dSLionel Sambuc #define bfd_read_minisymbols(b, d, m, s) \
6550*0a6a1f1dSLionel Sambuc   BFD_SEND (b, _read_minisymbols, (b, d, m, s))
6551*0a6a1f1dSLionel Sambuc   long        (*_read_minisymbols)
6552*0a6a1f1dSLionel Sambuc     (bfd *, bfd_boolean, void **, unsigned int *);
6553*0a6a1f1dSLionel Sambuc #define bfd_minisymbol_to_symbol(b, d, m, f) \
6554*0a6a1f1dSLionel Sambuc   BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
6555*0a6a1f1dSLionel Sambuc   asymbol *   (*_minisymbol_to_symbol)
6556*0a6a1f1dSLionel Sambuc     (bfd *, bfd_boolean, const void *, asymbol *);
6557*0a6a1f1dSLionel Sambuc 
6558*0a6a1f1dSLionel Sambuc   /* Routines for relocs.  */
6559*0a6a1f1dSLionel Sambuc #define BFD_JUMP_TABLE_RELOCS(NAME) \
6560*0a6a1f1dSLionel Sambuc   NAME##_get_reloc_upper_bound, \
6561*0a6a1f1dSLionel Sambuc   NAME##_canonicalize_reloc, \
6562*0a6a1f1dSLionel Sambuc   NAME##_bfd_reloc_type_lookup, \
6563*0a6a1f1dSLionel Sambuc   NAME##_bfd_reloc_name_lookup
6564*0a6a1f1dSLionel Sambuc 
6565*0a6a1f1dSLionel Sambuc   long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
6566*0a6a1f1dSLionel Sambuc   long        (*_bfd_canonicalize_reloc)
6567*0a6a1f1dSLionel Sambuc     (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
6568*0a6a1f1dSLionel Sambuc   /* See documentation on reloc types.  */
6569*0a6a1f1dSLionel Sambuc   reloc_howto_type *
6570*0a6a1f1dSLionel Sambuc               (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
6571*0a6a1f1dSLionel Sambuc   reloc_howto_type *
6572*0a6a1f1dSLionel Sambuc               (*reloc_name_lookup) (bfd *, const char *);
6573*0a6a1f1dSLionel Sambuc 
6574*0a6a1f1dSLionel Sambuc 
6575*0a6a1f1dSLionel Sambuc   /* Routines used when writing an object file.  */
6576*0a6a1f1dSLionel Sambuc #define BFD_JUMP_TABLE_WRITE(NAME) \
6577*0a6a1f1dSLionel Sambuc   NAME##_set_arch_mach, \
6578*0a6a1f1dSLionel Sambuc   NAME##_set_section_contents
6579*0a6a1f1dSLionel Sambuc 
6580*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_set_arch_mach)
6581*0a6a1f1dSLionel Sambuc     (bfd *, enum bfd_architecture, unsigned long);
6582*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_set_section_contents)
6583*0a6a1f1dSLionel Sambuc     (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
6584*0a6a1f1dSLionel Sambuc 
6585*0a6a1f1dSLionel Sambuc   /* Routines used by the linker.  */
6586*0a6a1f1dSLionel Sambuc #define BFD_JUMP_TABLE_LINK(NAME) \
6587*0a6a1f1dSLionel Sambuc   NAME##_sizeof_headers, \
6588*0a6a1f1dSLionel Sambuc   NAME##_bfd_get_relocated_section_contents, \
6589*0a6a1f1dSLionel Sambuc   NAME##_bfd_relax_section, \
6590*0a6a1f1dSLionel Sambuc   NAME##_bfd_link_hash_table_create, \
6591*0a6a1f1dSLionel Sambuc   NAME##_bfd_link_hash_table_free, \
6592*0a6a1f1dSLionel Sambuc   NAME##_bfd_link_add_symbols, \
6593*0a6a1f1dSLionel Sambuc   NAME##_bfd_link_just_syms, \
6594*0a6a1f1dSLionel Sambuc   NAME##_bfd_copy_link_hash_symbol_type, \
6595*0a6a1f1dSLionel Sambuc   NAME##_bfd_final_link, \
6596*0a6a1f1dSLionel Sambuc   NAME##_bfd_link_split_section, \
6597*0a6a1f1dSLionel Sambuc   NAME##_bfd_gc_sections, \
6598*0a6a1f1dSLionel Sambuc   NAME##_bfd_lookup_section_flags, \
6599*0a6a1f1dSLionel Sambuc   NAME##_bfd_merge_sections, \
6600*0a6a1f1dSLionel Sambuc   NAME##_bfd_is_group_section, \
6601*0a6a1f1dSLionel Sambuc   NAME##_bfd_discard_group, \
6602*0a6a1f1dSLionel Sambuc   NAME##_section_already_linked, \
6603*0a6a1f1dSLionel Sambuc   NAME##_bfd_define_common_symbol
6604*0a6a1f1dSLionel Sambuc 
6605*0a6a1f1dSLionel Sambuc   int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
6606*0a6a1f1dSLionel Sambuc   bfd_byte *  (*_bfd_get_relocated_section_contents)
6607*0a6a1f1dSLionel Sambuc     (bfd *, struct bfd_link_info *, struct bfd_link_order *,
6608*0a6a1f1dSLionel Sambuc      bfd_byte *, bfd_boolean, struct bfd_symbol **);
6609*0a6a1f1dSLionel Sambuc 
6610*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_relax_section)
6611*0a6a1f1dSLionel Sambuc     (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
6612*0a6a1f1dSLionel Sambuc 
6613*0a6a1f1dSLionel Sambuc   /* Create a hash table for the linker.  Different backends store
6614*0a6a1f1dSLionel Sambuc      different information in this table.  */
6615*0a6a1f1dSLionel Sambuc   struct bfd_link_hash_table *
6616*0a6a1f1dSLionel Sambuc               (*_bfd_link_hash_table_create) (bfd *);
6617*0a6a1f1dSLionel Sambuc 
6618*0a6a1f1dSLionel Sambuc   /* Release the memory associated with the linker hash table.  */
6619*0a6a1f1dSLionel Sambuc   void        (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
6620*0a6a1f1dSLionel Sambuc 
6621*0a6a1f1dSLionel Sambuc   /* Add symbols from this object file into the hash table.  */
6622*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
6623*0a6a1f1dSLionel Sambuc 
6624*0a6a1f1dSLionel Sambuc   /* Indicate that we are only retrieving symbol values from this section.  */
6625*0a6a1f1dSLionel Sambuc   void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
6626*0a6a1f1dSLionel Sambuc 
6627*0a6a1f1dSLionel Sambuc   /* Copy the symbol type of a linker hash table entry.  */
6628*0a6a1f1dSLionel Sambuc #define bfd_copy_link_hash_symbol_type(b, t, f) \
6629*0a6a1f1dSLionel Sambuc   BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f))
6630*0a6a1f1dSLionel Sambuc   void (*_bfd_copy_link_hash_symbol_type)
6631*0a6a1f1dSLionel Sambuc     (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *);
6632*0a6a1f1dSLionel Sambuc 
6633*0a6a1f1dSLionel Sambuc   /* Do a link based on the link_order structures attached to each
6634*0a6a1f1dSLionel Sambuc      section of the BFD.  */
6635*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
6636*0a6a1f1dSLionel Sambuc 
6637*0a6a1f1dSLionel Sambuc   /* Should this section be split up into smaller pieces during linking.  */
6638*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
6639*0a6a1f1dSLionel Sambuc 
6640*0a6a1f1dSLionel Sambuc   /* Remove sections that are not referenced from the output.  */
6641*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
6642*0a6a1f1dSLionel Sambuc 
6643*0a6a1f1dSLionel Sambuc   /* Sets the bitmask of allowed and disallowed section flags.  */
6644*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_lookup_section_flags) (struct bfd_link_info *,
6645*0a6a1f1dSLionel Sambuc                                             struct flag_info *,
6646*0a6a1f1dSLionel Sambuc                                             asection *);
6647*0a6a1f1dSLionel Sambuc 
6648*0a6a1f1dSLionel Sambuc   /* Attempt to merge SEC_MERGE sections.  */
6649*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
6650*0a6a1f1dSLionel Sambuc 
6651*0a6a1f1dSLionel Sambuc   /* Is this section a member of a group?  */
6652*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
6653*0a6a1f1dSLionel Sambuc 
6654*0a6a1f1dSLionel Sambuc   /* Discard members of a group.  */
6655*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
6656*0a6a1f1dSLionel Sambuc 
6657*0a6a1f1dSLionel Sambuc   /* Check if SEC has been already linked during a reloceatable or
6658*0a6a1f1dSLionel Sambuc      final link.  */
6659*0a6a1f1dSLionel Sambuc   bfd_boolean (*_section_already_linked) (bfd *, asection *,
6660*0a6a1f1dSLionel Sambuc                                           struct bfd_link_info *);
6661*0a6a1f1dSLionel Sambuc 
6662*0a6a1f1dSLionel Sambuc   /* Define a common symbol.  */
6663*0a6a1f1dSLionel Sambuc   bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
6664*0a6a1f1dSLionel Sambuc                                             struct bfd_link_hash_entry *);
6665*0a6a1f1dSLionel Sambuc 
6666*0a6a1f1dSLionel Sambuc   /* Routines to handle dynamic symbols and relocs.  */
6667*0a6a1f1dSLionel Sambuc #define BFD_JUMP_TABLE_DYNAMIC(NAME) \
6668*0a6a1f1dSLionel Sambuc   NAME##_get_dynamic_symtab_upper_bound, \
6669*0a6a1f1dSLionel Sambuc   NAME##_canonicalize_dynamic_symtab, \
6670*0a6a1f1dSLionel Sambuc   NAME##_get_synthetic_symtab, \
6671*0a6a1f1dSLionel Sambuc   NAME##_get_dynamic_reloc_upper_bound, \
6672*0a6a1f1dSLionel Sambuc   NAME##_canonicalize_dynamic_reloc
6673*0a6a1f1dSLionel Sambuc 
6674*0a6a1f1dSLionel Sambuc   /* Get the amount of memory required to hold the dynamic symbols.  */
6675*0a6a1f1dSLionel Sambuc   long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
6676*0a6a1f1dSLionel Sambuc   /* Read in the dynamic symbols.  */
6677*0a6a1f1dSLionel Sambuc   long        (*_bfd_canonicalize_dynamic_symtab)
6678*0a6a1f1dSLionel Sambuc     (bfd *, struct bfd_symbol **);
6679*0a6a1f1dSLionel Sambuc   /* Create synthetized symbols.  */
6680*0a6a1f1dSLionel Sambuc   long        (*_bfd_get_synthetic_symtab)
6681*0a6a1f1dSLionel Sambuc     (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
6682*0a6a1f1dSLionel Sambuc      struct bfd_symbol **);
6683*0a6a1f1dSLionel Sambuc   /* Get the amount of memory required to hold the dynamic relocs.  */
6684*0a6a1f1dSLionel Sambuc   long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
6685*0a6a1f1dSLionel Sambuc   /* Read in the dynamic relocs.  */
6686*0a6a1f1dSLionel Sambuc   long        (*_bfd_canonicalize_dynamic_reloc)
6687*0a6a1f1dSLionel Sambuc     (bfd *, arelent **, struct bfd_symbol **);
6688*0a6a1f1dSLionel Sambuc 
6689*0a6a1f1dSLionel Sambuc   /* Opposite endian version of this target.  */
6690*0a6a1f1dSLionel Sambuc   const struct bfd_target * alternative_target;
6691*0a6a1f1dSLionel Sambuc 
6692*0a6a1f1dSLionel Sambuc   /* Data for use by back-end routines, which isn't
6693*0a6a1f1dSLionel Sambuc      generic enough to belong in this structure.  */
6694*0a6a1f1dSLionel Sambuc   const void *backend_data;
6695*0a6a1f1dSLionel Sambuc 
6696*0a6a1f1dSLionel Sambuc } bfd_target;
6697*0a6a1f1dSLionel Sambuc 
6698*0a6a1f1dSLionel Sambuc bfd_boolean bfd_set_default_target (const char *name);
6699*0a6a1f1dSLionel Sambuc 
6700*0a6a1f1dSLionel Sambuc const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
6701*0a6a1f1dSLionel Sambuc 
6702*0a6a1f1dSLionel Sambuc const bfd_target *bfd_get_target_info (const char *target_name,
6703*0a6a1f1dSLionel Sambuc     bfd *abfd,
6704*0a6a1f1dSLionel Sambuc     bfd_boolean *is_bigendian,
6705*0a6a1f1dSLionel Sambuc     int *underscoring,
6706*0a6a1f1dSLionel Sambuc     const char **def_target_arch);
6707*0a6a1f1dSLionel Sambuc const char ** bfd_target_list (void);
6708*0a6a1f1dSLionel Sambuc 
6709*0a6a1f1dSLionel Sambuc const bfd_target *bfd_search_for_target
6710*0a6a1f1dSLionel Sambuc    (int (*search_func) (const bfd_target *, void *),
6711*0a6a1f1dSLionel Sambuc     void *);
6712*0a6a1f1dSLionel Sambuc 
6713*0a6a1f1dSLionel Sambuc /* Extracted from format.c.  */
6714*0a6a1f1dSLionel Sambuc bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
6715*0a6a1f1dSLionel Sambuc 
6716*0a6a1f1dSLionel Sambuc bfd_boolean bfd_check_format_matches
6717*0a6a1f1dSLionel Sambuc    (bfd *abfd, bfd_format format, char ***matching);
6718*0a6a1f1dSLionel Sambuc 
6719*0a6a1f1dSLionel Sambuc bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
6720*0a6a1f1dSLionel Sambuc 
6721*0a6a1f1dSLionel Sambuc const char *bfd_format_string (bfd_format format);
6722*0a6a1f1dSLionel Sambuc 
6723*0a6a1f1dSLionel Sambuc /* Extracted from linker.c.  */
6724*0a6a1f1dSLionel Sambuc bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
6725*0a6a1f1dSLionel Sambuc 
6726*0a6a1f1dSLionel Sambuc #define bfd_link_split_section(abfd, sec) \
6727*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
6728*0a6a1f1dSLionel Sambuc 
6729*0a6a1f1dSLionel Sambuc bfd_boolean bfd_section_already_linked (bfd *abfd,
6730*0a6a1f1dSLionel Sambuc     asection *sec,
6731*0a6a1f1dSLionel Sambuc     struct bfd_link_info *info);
6732*0a6a1f1dSLionel Sambuc 
6733*0a6a1f1dSLionel Sambuc #define bfd_section_already_linked(abfd, sec, info) \
6734*0a6a1f1dSLionel Sambuc        BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
6735*0a6a1f1dSLionel Sambuc 
6736*0a6a1f1dSLionel Sambuc bfd_boolean bfd_generic_define_common_symbol
6737*0a6a1f1dSLionel Sambuc    (bfd *output_bfd, struct bfd_link_info *info,
6738*0a6a1f1dSLionel Sambuc     struct bfd_link_hash_entry *h);
6739*0a6a1f1dSLionel Sambuc 
6740*0a6a1f1dSLionel Sambuc #define bfd_define_common_symbol(output_bfd, info, h) \
6741*0a6a1f1dSLionel Sambuc        BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))
6742*0a6a1f1dSLionel Sambuc 
6743*0a6a1f1dSLionel Sambuc struct bfd_elf_version_tree * bfd_find_version_for_sym
6744*0a6a1f1dSLionel Sambuc    (struct bfd_elf_version_tree *verdefs,
6745*0a6a1f1dSLionel Sambuc     const char *sym_name, bfd_boolean *hide);
6746*0a6a1f1dSLionel Sambuc 
6747*0a6a1f1dSLionel Sambuc bfd_boolean bfd_hide_sym_by_version
6748*0a6a1f1dSLionel Sambuc    (struct bfd_elf_version_tree *verdefs, const char *sym_name);
6749*0a6a1f1dSLionel Sambuc 
6750*0a6a1f1dSLionel Sambuc /* Extracted from simple.c.  */
6751*0a6a1f1dSLionel Sambuc bfd_byte *bfd_simple_get_relocated_section_contents
6752*0a6a1f1dSLionel Sambuc    (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
6753*0a6a1f1dSLionel Sambuc 
6754*0a6a1f1dSLionel Sambuc /* Extracted from compress.c.  */
6755*0a6a1f1dSLionel Sambuc bfd_boolean bfd_compress_section_contents
6756*0a6a1f1dSLionel Sambuc    (bfd *abfd, asection *section, bfd_byte *uncompressed_buffer,
6757*0a6a1f1dSLionel Sambuc     bfd_size_type uncompressed_size);
6758*0a6a1f1dSLionel Sambuc 
6759*0a6a1f1dSLionel Sambuc bfd_boolean bfd_get_full_section_contents
6760*0a6a1f1dSLionel Sambuc    (bfd *abfd, asection *section, bfd_byte **ptr);
6761*0a6a1f1dSLionel Sambuc 
6762*0a6a1f1dSLionel Sambuc bfd_boolean bfd_is_section_compressed
6763*0a6a1f1dSLionel Sambuc    (bfd *abfd, asection *section);
6764*0a6a1f1dSLionel Sambuc 
6765*0a6a1f1dSLionel Sambuc bfd_boolean bfd_init_section_decompress_status
6766*0a6a1f1dSLionel Sambuc    (bfd *abfd, asection *section);
6767*0a6a1f1dSLionel Sambuc 
6768*0a6a1f1dSLionel Sambuc bfd_boolean bfd_init_section_compress_status
6769*0a6a1f1dSLionel Sambuc    (bfd *abfd, asection *section);
6770*0a6a1f1dSLionel Sambuc 
6771*0a6a1f1dSLionel Sambuc #ifdef __cplusplus
6772*0a6a1f1dSLionel Sambuc }
6773*0a6a1f1dSLionel Sambuc #endif
6774*0a6a1f1dSLionel Sambuc #endif
6775