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