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