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