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