| 1 | @section Architectures | 
|---|
| 2 | BFD keeps one atom in a BFD describing the | 
|---|
| 3 | architecture of the data attached to the BFD: a pointer to a | 
|---|
| 4 | @code{bfd_arch_info_type}. | 
|---|
| 5 |  | 
|---|
| 6 | Pointers to structures can be requested independently of a BFD | 
|---|
| 7 | so that an architecture's information can be interrogated | 
|---|
| 8 | without access to an open BFD. | 
|---|
| 9 |  | 
|---|
| 10 | The architecture information is provided by each architecture package. | 
|---|
| 11 | The set of default architectures is selected by the macro | 
|---|
| 12 | @code{SELECT_ARCHITECTURES}.  This is normally set up in the | 
|---|
| 13 | @file{config/@var{target}.mt} file of your choice.  If the name is not | 
|---|
| 14 | defined, then all the architectures supported are included. | 
|---|
| 15 |  | 
|---|
| 16 | When BFD starts up, all the architectures are called with an | 
|---|
| 17 | initialize method.  It is up to the architecture back end to | 
|---|
| 18 | insert as many items into the list of architectures as it wants to; | 
|---|
| 19 | generally this would be one for each machine and one for the | 
|---|
| 20 | default case (an item with a machine field of 0). | 
|---|
| 21 |  | 
|---|
| 22 | BFD's idea of an architecture is implemented in @file{archures.c}. | 
|---|
| 23 |  | 
|---|
| 24 | @subsection bfd_architecture | 
|---|
| 25 |  | 
|---|
| 26 |  | 
|---|
| 27 | @strong{Description}@* | 
|---|
| 28 | This enum gives the object file's CPU architecture, in a | 
|---|
| 29 | global sense---i.e., what processor family does it belong to? | 
|---|
| 30 | Another field indicates which processor within | 
|---|
| 31 | the family is in use.  The machine gives a number which | 
|---|
| 32 | distinguishes different versions of the architecture, | 
|---|
| 33 | containing, for example, 2 and 3 for Intel i960 KA and i960 KB, | 
|---|
| 34 | and 68020 and 68030 for Motorola 68020 and 68030. | 
|---|
| 35 | @example | 
|---|
| 36 | enum bfd_architecture | 
|---|
| 37 | @{ | 
|---|
| 38 | bfd_arch_unknown,   /* File arch not known.  */ | 
|---|
| 39 | bfd_arch_obscure,   /* Arch known, not one of these.  */ | 
|---|
| 40 | bfd_arch_m68k,      /* Motorola 68xxx */ | 
|---|
| 41 | #define bfd_mach_m68000 1 | 
|---|
| 42 | #define bfd_mach_m68008 2 | 
|---|
| 43 | #define bfd_mach_m68010 3 | 
|---|
| 44 | #define bfd_mach_m68020 4 | 
|---|
| 45 | #define bfd_mach_m68030 5 | 
|---|
| 46 | #define bfd_mach_m68040 6 | 
|---|
| 47 | #define bfd_mach_m68060 7 | 
|---|
| 48 | #define bfd_mach_cpu32  8 | 
|---|
| 49 | #define bfd_mach_mcf5200  9 | 
|---|
| 50 | #define bfd_mach_mcf5206e 10 | 
|---|
| 51 | #define bfd_mach_mcf5307  11 | 
|---|
| 52 | #define bfd_mach_mcf5407  12 | 
|---|
| 53 | bfd_arch_vax,       /* DEC Vax */ | 
|---|
| 54 | bfd_arch_i960,      /* Intel 960 */ | 
|---|
| 55 | /* The order of the following is important. | 
|---|
| 56 | lower number indicates a machine type that | 
|---|
| 57 | only accepts a subset of the instructions | 
|---|
| 58 | available to machines with higher numbers. | 
|---|
| 59 | The exception is the "ca", which is | 
|---|
| 60 | incompatible with all other machines except | 
|---|
| 61 | "core".  */ | 
|---|
| 62 |  | 
|---|
| 63 | #define bfd_mach_i960_core      1 | 
|---|
| 64 | #define bfd_mach_i960_ka_sa     2 | 
|---|
| 65 | #define bfd_mach_i960_kb_sb     3 | 
|---|
| 66 | #define bfd_mach_i960_mc        4 | 
|---|
| 67 | #define bfd_mach_i960_xa        5 | 
|---|
| 68 | #define bfd_mach_i960_ca        6 | 
|---|
| 69 | #define bfd_mach_i960_jx        7 | 
|---|
| 70 | #define bfd_mach_i960_hx        8 | 
|---|
| 71 |  | 
|---|
| 72 | bfd_arch_or32,      /* OpenRISC 32 */ | 
|---|
| 73 |  | 
|---|
| 74 | bfd_arch_a29k,      /* AMD 29000 */ | 
|---|
| 75 | bfd_arch_sparc,     /* SPARC */ | 
|---|
| 76 | #define bfd_mach_sparc                 1 | 
|---|
| 77 | /* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */ | 
|---|
| 78 | #define bfd_mach_sparc_sparclet        2 | 
|---|
| 79 | #define bfd_mach_sparc_sparclite       3 | 
|---|
| 80 | #define bfd_mach_sparc_v8plus          4 | 
|---|
| 81 | #define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */ | 
|---|
| 82 | #define bfd_mach_sparc_sparclite_le    6 | 
|---|
| 83 | #define bfd_mach_sparc_v9              7 | 
|---|
| 84 | #define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */ | 
|---|
| 85 | #define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */ | 
|---|
| 86 | #define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */ | 
|---|
| 87 | /* Nonzero if MACH has the v9 instruction set.  */ | 
|---|
| 88 | #define bfd_mach_sparc_v9_p(mach) \ | 
|---|
| 89 | ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \ | 
|---|
| 90 | && (mach) != bfd_mach_sparc_sparclite_le) | 
|---|
| 91 | bfd_arch_mips,      /* MIPS Rxxxx */ | 
|---|
| 92 | #define bfd_mach_mips3000              3000 | 
|---|
| 93 | #define bfd_mach_mips3900              3900 | 
|---|
| 94 | #define bfd_mach_mips4000              4000 | 
|---|
| 95 | #define bfd_mach_mips4010              4010 | 
|---|
| 96 | #define bfd_mach_mips4100              4100 | 
|---|
| 97 | #define bfd_mach_mips4111              4111 | 
|---|
| 98 | #define bfd_mach_mips4120              4120 | 
|---|
| 99 | #define bfd_mach_mips4300              4300 | 
|---|
| 100 | #define bfd_mach_mips4400              4400 | 
|---|
| 101 | #define bfd_mach_mips4600              4600 | 
|---|
| 102 | #define bfd_mach_mips4650              4650 | 
|---|
| 103 | #define bfd_mach_mips5000              5000 | 
|---|
| 104 | #define bfd_mach_mips5400              5400 | 
|---|
| 105 | #define bfd_mach_mips5500              5500 | 
|---|
| 106 | #define bfd_mach_mips6000              6000 | 
|---|
| 107 | #define bfd_mach_mips8000              8000 | 
|---|
| 108 | #define bfd_mach_mips10000             10000 | 
|---|
| 109 | #define bfd_mach_mips12000             12000 | 
|---|
| 110 | #define bfd_mach_mips16                16 | 
|---|
| 111 | #define bfd_mach_mips5                 5 | 
|---|
| 112 | #define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */ | 
|---|
| 113 | #define bfd_mach_mipsisa32             32 | 
|---|
| 114 | #define bfd_mach_mipsisa32r2           33 | 
|---|
| 115 | #define bfd_mach_mipsisa64             64 | 
|---|
| 116 | bfd_arch_i386,      /* Intel 386 */ | 
|---|
| 117 | #define bfd_mach_i386_i386 1 | 
|---|
| 118 | #define bfd_mach_i386_i8086 2 | 
|---|
| 119 | #define bfd_mach_i386_i386_intel_syntax 3 | 
|---|
| 120 | #define bfd_mach_x86_64 64 | 
|---|
| 121 | #define bfd_mach_x86_64_intel_syntax 65 | 
|---|
| 122 | bfd_arch_we32k,     /* AT&T WE32xxx */ | 
|---|
| 123 | bfd_arch_tahoe,     /* CCI/Harris Tahoe */ | 
|---|
| 124 | bfd_arch_i860,      /* Intel 860 */ | 
|---|
| 125 | bfd_arch_i370,      /* IBM 360/370 Mainframes */ | 
|---|
| 126 | bfd_arch_romp,      /* IBM ROMP PC/RT */ | 
|---|
| 127 | bfd_arch_alliant,   /* Alliant */ | 
|---|
| 128 | bfd_arch_convex,    /* Convex */ | 
|---|
| 129 | bfd_arch_m88k,      /* Motorola 88xxx */ | 
|---|
| 130 | bfd_arch_m98k,      /* Motorola 98xxx */ | 
|---|
| 131 | bfd_arch_pyramid,   /* Pyramid Technology */ | 
|---|
| 132 | bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */ | 
|---|
| 133 | #define bfd_mach_h8300    1 | 
|---|
| 134 | #define bfd_mach_h8300h   2 | 
|---|
| 135 | #define bfd_mach_h8300s   3 | 
|---|
| 136 | #define bfd_mach_h8300hn  4 | 
|---|
| 137 | #define bfd_mach_h8300sn  5 | 
|---|
| 138 | bfd_arch_pdp11,     /* DEC PDP-11 */ | 
|---|
| 139 | bfd_arch_powerpc,   /* PowerPC */ | 
|---|
| 140 | #define bfd_mach_ppc           32 | 
|---|
| 141 | #define bfd_mach_ppc64         64 | 
|---|
| 142 | #define bfd_mach_ppc_403       403 | 
|---|
| 143 | #define bfd_mach_ppc_403gc     4030 | 
|---|
| 144 | #define bfd_mach_ppc_505       505 | 
|---|
| 145 | #define bfd_mach_ppc_601       601 | 
|---|
| 146 | #define bfd_mach_ppc_602       602 | 
|---|
| 147 | #define bfd_mach_ppc_603       603 | 
|---|
| 148 | #define bfd_mach_ppc_ec603e    6031 | 
|---|
| 149 | #define bfd_mach_ppc_604       604 | 
|---|
| 150 | #define bfd_mach_ppc_620       620 | 
|---|
| 151 | #define bfd_mach_ppc_630       630 | 
|---|
| 152 | #define bfd_mach_ppc_750       750 | 
|---|
| 153 | #define bfd_mach_ppc_860       860 | 
|---|
| 154 | #define bfd_mach_ppc_a35       35 | 
|---|
| 155 | #define bfd_mach_ppc_rs64ii    642 | 
|---|
| 156 | #define bfd_mach_ppc_rs64iii   643 | 
|---|
| 157 | #define bfd_mach_ppc_7400      7400 | 
|---|
| 158 | #define bfd_mach_ppc_e500      500 | 
|---|
| 159 | bfd_arch_rs6000,    /* IBM RS/6000 */ | 
|---|
| 160 | #define bfd_mach_rs6k          6000 | 
|---|
| 161 | #define bfd_mach_rs6k_rs1      6001 | 
|---|
| 162 | #define bfd_mach_rs6k_rsc      6003 | 
|---|
| 163 | #define bfd_mach_rs6k_rs2      6002 | 
|---|
| 164 | bfd_arch_hppa,      /* HP PA RISC */ | 
|---|
| 165 | bfd_arch_d10v,      /* Mitsubishi D10V */ | 
|---|
| 166 | #define bfd_mach_d10v          1 | 
|---|
| 167 | #define bfd_mach_d10v_ts2      2 | 
|---|
| 168 | #define bfd_mach_d10v_ts3      3 | 
|---|
| 169 | bfd_arch_d30v,      /* Mitsubishi D30V */ | 
|---|
| 170 | bfd_arch_dlx,       /* DLX */ | 
|---|
| 171 | bfd_arch_m68hc11,   /* Motorola 68HC11 */ | 
|---|
| 172 | bfd_arch_m68hc12,   /* Motorola 68HC12 */ | 
|---|
| 173 | #define bfd_mach_m6812_default 0 | 
|---|
| 174 | #define bfd_mach_m6812         1 | 
|---|
| 175 | #define bfd_mach_m6812s        2 | 
|---|
| 176 | bfd_arch_z8k,       /* Zilog Z8000 */ | 
|---|
| 177 | #define bfd_mach_z8001         1 | 
|---|
| 178 | #define bfd_mach_z8002         2 | 
|---|
| 179 | bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */ | 
|---|
| 180 | bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */ | 
|---|
| 181 | #define bfd_mach_sh            1 | 
|---|
| 182 | #define bfd_mach_sh2        0x20 | 
|---|
| 183 | #define bfd_mach_sh_dsp     0x2d | 
|---|
| 184 | #define bfd_mach_sh2e       0x2e | 
|---|
| 185 | #define bfd_mach_sh3        0x30 | 
|---|
| 186 | #define bfd_mach_sh3_dsp    0x3d | 
|---|
| 187 | #define bfd_mach_sh3e       0x3e | 
|---|
| 188 | #define bfd_mach_sh4        0x40 | 
|---|
| 189 | #define bfd_mach_sh5        0x50 | 
|---|
| 190 | bfd_arch_alpha,     /* Dec Alpha */ | 
|---|
| 191 | #define bfd_mach_alpha_ev4  0x10 | 
|---|
| 192 | #define bfd_mach_alpha_ev5  0x20 | 
|---|
| 193 | #define bfd_mach_alpha_ev6  0x30 | 
|---|
| 194 | bfd_arch_arm,       /* Advanced Risc Machines ARM.  */ | 
|---|
| 195 | #define bfd_mach_arm_unknown   0 | 
|---|
| 196 | #define bfd_mach_arm_2         1 | 
|---|
| 197 | #define bfd_mach_arm_2a        2 | 
|---|
| 198 | #define bfd_mach_arm_3         3 | 
|---|
| 199 | #define bfd_mach_arm_3M        4 | 
|---|
| 200 | #define bfd_mach_arm_4         5 | 
|---|
| 201 | #define bfd_mach_arm_4T        6 | 
|---|
| 202 | #define bfd_mach_arm_5         7 | 
|---|
| 203 | #define bfd_mach_arm_5T        8 | 
|---|
| 204 | #define bfd_mach_arm_5TE       9 | 
|---|
| 205 | #define bfd_mach_arm_XScale    10 | 
|---|
| 206 | #define bfd_mach_arm_ep9312    11 | 
|---|
| 207 | #define bfd_mach_arm_iWMMXt    12 | 
|---|
| 208 | bfd_arch_ns32k,     /* National Semiconductors ns32000 */ | 
|---|
| 209 | bfd_arch_w65,       /* WDC 65816 */ | 
|---|
| 210 | bfd_arch_tic30,     /* Texas Instruments TMS320C30 */ | 
|---|
| 211 | bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */ | 
|---|
| 212 | #define bfd_mach_tic3x         30 | 
|---|
| 213 | #define bfd_mach_tic4x         40 | 
|---|
| 214 | bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */ | 
|---|
| 215 | bfd_arch_tic80,     /* TI TMS320c80 (MVP) */ | 
|---|
| 216 | bfd_arch_v850,      /* NEC V850 */ | 
|---|
| 217 | #define bfd_mach_v850          1 | 
|---|
| 218 | #define bfd_mach_v850e         'E' | 
|---|
| 219 | bfd_arch_arc,       /* ARC Cores */ | 
|---|
| 220 | #define bfd_mach_arc_5         5 | 
|---|
| 221 | #define bfd_mach_arc_6         6 | 
|---|
| 222 | #define bfd_mach_arc_7         7 | 
|---|
| 223 | #define bfd_mach_arc_8         8 | 
|---|
| 224 | bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */ | 
|---|
| 225 | #define bfd_mach_m32r          1 /* For backwards compatibility.  */ | 
|---|
| 226 | #define bfd_mach_m32rx         'x' | 
|---|
| 227 | bfd_arch_mn10200,   /* Matsushita MN10200 */ | 
|---|
| 228 | bfd_arch_mn10300,   /* Matsushita MN10300 */ | 
|---|
| 229 | #define bfd_mach_mn10300               300 | 
|---|
| 230 | #define bfd_mach_am33          330 | 
|---|
| 231 | bfd_arch_fr30, | 
|---|
| 232 | #define bfd_mach_fr30          0x46523330 | 
|---|
| 233 | bfd_arch_frv, | 
|---|
| 234 | #define bfd_mach_frv           1 | 
|---|
| 235 | #define bfd_mach_frvsimple     2 | 
|---|
| 236 | #define bfd_mach_fr300         300 | 
|---|
| 237 | #define bfd_mach_fr400         400 | 
|---|
| 238 | #define bfd_mach_frvtomcat     499     /* fr500 prototype */ | 
|---|
| 239 | #define bfd_mach_fr500         500 | 
|---|
| 240 | bfd_arch_mcore, | 
|---|
| 241 | bfd_arch_ia64,      /* HP/Intel ia64 */ | 
|---|
| 242 | #define bfd_mach_ia64_elf64    64 | 
|---|
| 243 | #define bfd_mach_ia64_elf32    32 | 
|---|
| 244 | bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */ | 
|---|
| 245 | #define bfd_mach_ip2022        1 | 
|---|
| 246 | #define bfd_mach_ip2022ext     2 | 
|---|
| 247 | bfd_arch_iq2000,     /* Vitesse IQ2000.  */ | 
|---|
| 248 | #define bfd_mach_iq2000        1 | 
|---|
| 249 | #define bfd_mach_iq10          2 | 
|---|
| 250 | bfd_arch_pj, | 
|---|
| 251 | bfd_arch_avr,       /* Atmel AVR microcontrollers.  */ | 
|---|
| 252 | #define bfd_mach_avr1          1 | 
|---|
| 253 | #define bfd_mach_avr2          2 | 
|---|
| 254 | #define bfd_mach_avr3          3 | 
|---|
| 255 | #define bfd_mach_avr4          4 | 
|---|
| 256 | #define bfd_mach_avr5          5 | 
|---|
| 257 | bfd_arch_cris,      /* Axis CRIS */ | 
|---|
| 258 | bfd_arch_s390,      /* IBM s390 */ | 
|---|
| 259 | #define bfd_mach_s390_31       31 | 
|---|
| 260 | #define bfd_mach_s390_64       64 | 
|---|
| 261 | bfd_arch_openrisc,  /* OpenRISC */ | 
|---|
| 262 | bfd_arch_mmix,      /* Donald Knuth's educational processor.  */ | 
|---|
| 263 | bfd_arch_xstormy16, | 
|---|
| 264 | #define bfd_mach_xstormy16     1 | 
|---|
| 265 | bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */ | 
|---|
| 266 | #define bfd_mach_msp110         110 | 
|---|
| 267 | #define bfd_mach_msp11          11 | 
|---|
| 268 | #define bfd_mach_msp12          12 | 
|---|
| 269 | #define bfd_mach_msp13          13 | 
|---|
| 270 | #define bfd_mach_msp14          14 | 
|---|
| 271 | #define bfd_mach_msp41          41 | 
|---|
| 272 | #define bfd_mach_msp31          31 | 
|---|
| 273 | #define bfd_mach_msp32          32 | 
|---|
| 274 | #define bfd_mach_msp33          33 | 
|---|
| 275 | #define bfd_mach_msp43          43 | 
|---|
| 276 | #define bfd_mach_msp44          44 | 
|---|
| 277 | #define bfd_mach_msp15          15 | 
|---|
| 278 | #define bfd_mach_msp16          16 | 
|---|
| 279 | bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */ | 
|---|
| 280 | #define bfd_mach_xtensa        1 | 
|---|
| 281 | bfd_arch_last | 
|---|
| 282 | @}; | 
|---|
| 283 | @end example | 
|---|
| 284 |  | 
|---|
| 285 | @subsection bfd_arch_info | 
|---|
| 286 |  | 
|---|
| 287 |  | 
|---|
| 288 | @strong{Description}@* | 
|---|
| 289 | This structure contains information on architectures for use | 
|---|
| 290 | within BFD. | 
|---|
| 291 | @example | 
|---|
| 292 |  | 
|---|
| 293 | typedef struct bfd_arch_info | 
|---|
| 294 | @{ | 
|---|
| 295 | int bits_per_word; | 
|---|
| 296 | int bits_per_address; | 
|---|
| 297 | int bits_per_byte; | 
|---|
| 298 | enum bfd_architecture arch; | 
|---|
| 299 | unsigned long mach; | 
|---|
| 300 | const char *arch_name; | 
|---|
| 301 | const char *printable_name; | 
|---|
| 302 | unsigned int section_align_power; | 
|---|
| 303 | /* TRUE if this is the default machine for the architecture. | 
|---|
| 304 | The default arch should be the first entry for an arch so that | 
|---|
| 305 | all the entries for that arch can be accessed via @code{next}.  */ | 
|---|
| 306 | bfd_boolean the_default; | 
|---|
| 307 | const struct bfd_arch_info * (*compatible) | 
|---|
| 308 | PARAMS ((const struct bfd_arch_info *a, | 
|---|
| 309 | const struct bfd_arch_info *b)); | 
|---|
| 310 |  | 
|---|
| 311 | bfd_boolean (*scan) PARAMS ((const struct bfd_arch_info *, const char *)); | 
|---|
| 312 |  | 
|---|
| 313 | const struct bfd_arch_info *next; | 
|---|
| 314 | @} | 
|---|
| 315 | bfd_arch_info_type; | 
|---|
| 316 |  | 
|---|
| 317 | @end example | 
|---|
| 318 |  | 
|---|
| 319 | @findex bfd_printable_name | 
|---|
| 320 | @subsubsection @code{bfd_printable_name} | 
|---|
| 321 | @strong{Synopsis} | 
|---|
| 322 | @example | 
|---|
| 323 | const char *bfd_printable_name(bfd *abfd); | 
|---|
| 324 | @end example | 
|---|
| 325 | @strong{Description}@* | 
|---|
| 326 | Return a printable string representing the architecture and machine | 
|---|
| 327 | from the pointer to the architecture info structure. | 
|---|
| 328 |  | 
|---|
| 329 | @findex bfd_scan_arch | 
|---|
| 330 | @subsubsection @code{bfd_scan_arch} | 
|---|
| 331 | @strong{Synopsis} | 
|---|
| 332 | @example | 
|---|
| 333 | const bfd_arch_info_type *bfd_scan_arch(const char *string); | 
|---|
| 334 | @end example | 
|---|
| 335 | @strong{Description}@* | 
|---|
| 336 | Figure out if BFD supports any cpu which could be described with | 
|---|
| 337 | the name @var{string}.  Return a pointer to an @code{arch_info} | 
|---|
| 338 | structure if a machine is found, otherwise NULL. | 
|---|
| 339 |  | 
|---|
| 340 | @findex bfd_arch_list | 
|---|
| 341 | @subsubsection @code{bfd_arch_list} | 
|---|
| 342 | @strong{Synopsis} | 
|---|
| 343 | @example | 
|---|
| 344 | const char **bfd_arch_list(void); | 
|---|
| 345 | @end example | 
|---|
| 346 | @strong{Description}@* | 
|---|
| 347 | Return a freshly malloced NULL-terminated vector of the names | 
|---|
| 348 | of all the valid BFD architectures.  Do not modify the names. | 
|---|
| 349 |  | 
|---|
| 350 | @findex bfd_arch_get_compatible | 
|---|
| 351 | @subsubsection @code{bfd_arch_get_compatible} | 
|---|
| 352 | @strong{Synopsis} | 
|---|
| 353 | @example | 
|---|
| 354 | const bfd_arch_info_type *bfd_arch_get_compatible( | 
|---|
| 355 | const bfd *abfd, | 
|---|
| 356 | const bfd *bbfd, | 
|---|
| 357 | bfd_boolean accept_unknowns); | 
|---|
| 358 | @end example | 
|---|
| 359 | @strong{Description}@* | 
|---|
| 360 | Determine whether two BFDs' architectures and machine types | 
|---|
| 361 | are compatible.  Calculates the lowest common denominator | 
|---|
| 362 | between the two architectures and machine types implied by | 
|---|
| 363 | the BFDs and returns a pointer to an @code{arch_info} structure | 
|---|
| 364 | describing the compatible machine. | 
|---|
| 365 |  | 
|---|
| 366 | @findex bfd_default_arch_struct | 
|---|
| 367 | @subsubsection @code{bfd_default_arch_struct} | 
|---|
| 368 | @strong{Description}@* | 
|---|
| 369 | The @code{bfd_default_arch_struct} is an item of | 
|---|
| 370 | @code{bfd_arch_info_type} which has been initialized to a fairly | 
|---|
| 371 | generic state.  A BFD starts life by pointing to this | 
|---|
| 372 | structure, until the correct back end has determined the real | 
|---|
| 373 | architecture of the file. | 
|---|
| 374 | @example | 
|---|
| 375 | extern const bfd_arch_info_type bfd_default_arch_struct; | 
|---|
| 376 | @end example | 
|---|
| 377 |  | 
|---|
| 378 | @findex bfd_set_arch_info | 
|---|
| 379 | @subsubsection @code{bfd_set_arch_info} | 
|---|
| 380 | @strong{Synopsis} | 
|---|
| 381 | @example | 
|---|
| 382 | void bfd_set_arch_info(bfd *abfd, const bfd_arch_info_type *arg); | 
|---|
| 383 | @end example | 
|---|
| 384 | @strong{Description}@* | 
|---|
| 385 | Set the architecture info of @var{abfd} to @var{arg}. | 
|---|
| 386 |  | 
|---|
| 387 | @findex bfd_default_set_arch_mach | 
|---|
| 388 | @subsubsection @code{bfd_default_set_arch_mach} | 
|---|
| 389 | @strong{Synopsis} | 
|---|
| 390 | @example | 
|---|
| 391 | bfd_boolean bfd_default_set_arch_mach(bfd *abfd, | 
|---|
| 392 | enum bfd_architecture arch, | 
|---|
| 393 | unsigned long mach); | 
|---|
| 394 | @end example | 
|---|
| 395 | @strong{Description}@* | 
|---|
| 396 | Set the architecture and machine type in BFD @var{abfd} | 
|---|
| 397 | to @var{arch} and @var{mach}.  Find the correct | 
|---|
| 398 | pointer to a structure and insert it into the @code{arch_info} | 
|---|
| 399 | pointer. | 
|---|
| 400 |  | 
|---|
| 401 | @findex bfd_get_arch | 
|---|
| 402 | @subsubsection @code{bfd_get_arch} | 
|---|
| 403 | @strong{Synopsis} | 
|---|
| 404 | @example | 
|---|
| 405 | enum bfd_architecture bfd_get_arch(bfd *abfd); | 
|---|
| 406 | @end example | 
|---|
| 407 | @strong{Description}@* | 
|---|
| 408 | Return the enumerated type which describes the BFD @var{abfd}'s | 
|---|
| 409 | architecture. | 
|---|
| 410 |  | 
|---|
| 411 | @findex bfd_get_mach | 
|---|
| 412 | @subsubsection @code{bfd_get_mach} | 
|---|
| 413 | @strong{Synopsis} | 
|---|
| 414 | @example | 
|---|
| 415 | unsigned long bfd_get_mach(bfd *abfd); | 
|---|
| 416 | @end example | 
|---|
| 417 | @strong{Description}@* | 
|---|
| 418 | Return the long type which describes the BFD @var{abfd}'s | 
|---|
| 419 | machine. | 
|---|
| 420 |  | 
|---|
| 421 | @findex bfd_arch_bits_per_byte | 
|---|
| 422 | @subsubsection @code{bfd_arch_bits_per_byte} | 
|---|
| 423 | @strong{Synopsis} | 
|---|
| 424 | @example | 
|---|
| 425 | unsigned int bfd_arch_bits_per_byte(bfd *abfd); | 
|---|
| 426 | @end example | 
|---|
| 427 | @strong{Description}@* | 
|---|
| 428 | Return the number of bits in one of the BFD @var{abfd}'s | 
|---|
| 429 | architecture's bytes. | 
|---|
| 430 |  | 
|---|
| 431 | @findex bfd_arch_bits_per_address | 
|---|
| 432 | @subsubsection @code{bfd_arch_bits_per_address} | 
|---|
| 433 | @strong{Synopsis} | 
|---|
| 434 | @example | 
|---|
| 435 | unsigned int bfd_arch_bits_per_address(bfd *abfd); | 
|---|
| 436 | @end example | 
|---|
| 437 | @strong{Description}@* | 
|---|
| 438 | Return the number of bits in one of the BFD @var{abfd}'s | 
|---|
| 439 | architecture's addresses. | 
|---|
| 440 |  | 
|---|
| 441 | @findex bfd_default_compatible | 
|---|
| 442 | @subsubsection @code{bfd_default_compatible} | 
|---|
| 443 | @strong{Synopsis} | 
|---|
| 444 | @example | 
|---|
| 445 | const bfd_arch_info_type *bfd_default_compatible | 
|---|
| 446 | (const bfd_arch_info_type *a, | 
|---|
| 447 | const bfd_arch_info_type *b); | 
|---|
| 448 | @end example | 
|---|
| 449 | @strong{Description}@* | 
|---|
| 450 | The default function for testing for compatibility. | 
|---|
| 451 |  | 
|---|
| 452 | @findex bfd_default_scan | 
|---|
| 453 | @subsubsection @code{bfd_default_scan} | 
|---|
| 454 | @strong{Synopsis} | 
|---|
| 455 | @example | 
|---|
| 456 | bfd_boolean bfd_default_scan(const struct bfd_arch_info *info, const char *string); | 
|---|
| 457 | @end example | 
|---|
| 458 | @strong{Description}@* | 
|---|
| 459 | The default function for working out whether this is an | 
|---|
| 460 | architecture hit and a machine hit. | 
|---|
| 461 |  | 
|---|
| 462 | @findex bfd_get_arch_info | 
|---|
| 463 | @subsubsection @code{bfd_get_arch_info} | 
|---|
| 464 | @strong{Synopsis} | 
|---|
| 465 | @example | 
|---|
| 466 | const bfd_arch_info_type * bfd_get_arch_info(bfd *abfd); | 
|---|
| 467 | @end example | 
|---|
| 468 | @strong{Description}@* | 
|---|
| 469 | Return the architecture info struct in @var{abfd}. | 
|---|
| 470 |  | 
|---|
| 471 | @findex bfd_lookup_arch | 
|---|
| 472 | @subsubsection @code{bfd_lookup_arch} | 
|---|
| 473 | @strong{Synopsis} | 
|---|
| 474 | @example | 
|---|
| 475 | const bfd_arch_info_type *bfd_lookup_arch | 
|---|
| 476 | (enum bfd_architecture | 
|---|
| 477 | arch, | 
|---|
| 478 | unsigned long machine); | 
|---|
| 479 | @end example | 
|---|
| 480 | @strong{Description}@* | 
|---|
| 481 | Look for the architecure info structure which matches the | 
|---|
| 482 | arguments @var{arch} and @var{machine}. A machine of 0 matches the | 
|---|
| 483 | machine/architecture structure which marks itself as the | 
|---|
| 484 | default. | 
|---|
| 485 |  | 
|---|
| 486 | @findex bfd_printable_arch_mach | 
|---|
| 487 | @subsubsection @code{bfd_printable_arch_mach} | 
|---|
| 488 | @strong{Synopsis} | 
|---|
| 489 | @example | 
|---|
| 490 | const char *bfd_printable_arch_mach | 
|---|
| 491 | (enum bfd_architecture arch, unsigned long machine); | 
|---|
| 492 | @end example | 
|---|
| 493 | @strong{Description}@* | 
|---|
| 494 | Return a printable string representing the architecture and | 
|---|
| 495 | machine type. | 
|---|
| 496 |  | 
|---|
| 497 | This routine is depreciated. | 
|---|
| 498 |  | 
|---|
| 499 | @findex bfd_octets_per_byte | 
|---|
| 500 | @subsubsection @code{bfd_octets_per_byte} | 
|---|
| 501 | @strong{Synopsis} | 
|---|
| 502 | @example | 
|---|
| 503 | unsigned int bfd_octets_per_byte(bfd *abfd); | 
|---|
| 504 | @end example | 
|---|
| 505 | @strong{Description}@* | 
|---|
| 506 | Return the number of octets (8-bit quantities) per target byte | 
|---|
| 507 | (minimum addressable unit).  In most cases, this will be one, but some | 
|---|
| 508 | DSP targets have 16, 32, or even 48 bits per byte. | 
|---|
| 509 |  | 
|---|
| 510 | @findex bfd_arch_mach_octets_per_byte | 
|---|
| 511 | @subsubsection @code{bfd_arch_mach_octets_per_byte} | 
|---|
| 512 | @strong{Synopsis} | 
|---|
| 513 | @example | 
|---|
| 514 | unsigned int bfd_arch_mach_octets_per_byte(enum bfd_architecture arch, | 
|---|
| 515 | unsigned long machine); | 
|---|
| 516 | @end example | 
|---|
| 517 | @strong{Description}@* | 
|---|
| 518 | See bfd_octets_per_byte. | 
|---|
| 519 |  | 
|---|
| 520 | This routine is provided for those cases where a bfd * is not | 
|---|
| 521 | available | 
|---|
| 522 |  | 
|---|