1 /* as.h - global header file 2 Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 3 1999, 2000, 2001, 2002, 2003, 2004, 2005 4 Free Software Foundation, Inc. 5 6 This file is part of GAS, the GNU Assembler. 7 8 GAS is free software; you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation; either version 2, or (at your option) 11 any later version. 12 13 GAS is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with GAS; see the file COPYING. If not, write to the Free 20 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 21 02111-1307, USA. */ 22 23 #ifndef GAS 24 #define GAS 1 25 /* I think this stuff is largely out of date. xoxorich. 26 27 CAPITALISED names are #defined. 28 "lowercaseH" is #defined if "lowercase.h" has been #include-d. 29 "lowercaseT" is a typedef of "lowercase" objects. 30 "lowercaseP" is type "pointer to object of type 'lowercase'". 31 "lowercaseS" is typedef struct ... lowercaseS. 32 33 #define DEBUG to enable all the "know" assertion tests. 34 #define SUSPECT when debugging hash code. 35 #define COMMON as "extern" for all modules except one, where you #define 36 COMMON as "". 37 If TEST is #defined, then we are testing a module: #define COMMON as "". */ 38 39 #include "config.h" 40 #include "bin-bugs.h" 41 42 /* This is the code recommended in the autoconf documentation, almost 43 verbatim. If it doesn't work for you, let me know, and notify 44 djm@gnu.ai.mit.edu as well. */ 45 /* Added void* version for STDC case. This is to be compatible with 46 the declaration in bison.simple, used for m68k operand parsing. 47 --KR 1995.08.08 */ 48 /* Force void* decl for hpux. This is what Bison uses. --KR 1995.08.16 */ 49 50 #ifndef __GNUC__ 51 # if HAVE_ALLOCA_H 52 # include <alloca.h> 53 # else 54 # ifdef _AIX 55 /* Indented so that pre-ansi C compilers will ignore it, rather than 56 choke on it. Some versions of AIX require this to be the first 57 thing in the file. */ 58 #pragma alloca 59 # else 60 # ifndef alloca /* predefined by HP cc +Olibcalls */ 61 # if !defined (__STDC__) && !defined (__hpux) 62 extern char *alloca (); 63 # else 64 extern void *alloca (); 65 # endif /* __STDC__, __hpux */ 66 # endif /* alloca */ 67 # endif /* _AIX */ 68 # endif /* HAVE_ALLOCA_H */ 69 #endif /* __GNUC__ */ 70 71 /* Now, tend to the rest of the configuration. */ 72 73 /* System include files first... */ 74 #include <stdio.h> 75 #ifdef HAVE_STRING_H 76 #include <string.h> 77 #else 78 #ifdef HAVE_STRINGS_H 79 #include <strings.h> 80 #endif 81 #endif 82 #ifdef HAVE_STDLIB_H 83 #include <stdlib.h> 84 #endif 85 #ifdef HAVE_UNISTD_H 86 #include <unistd.h> 87 #endif 88 #ifdef HAVE_SYS_TYPES_H 89 /* for size_t, pid_t */ 90 #include <sys/types.h> 91 #endif 92 93 #include "getopt.h" 94 /* The first getopt value for machine-independent long options. 95 150 isn't special; it's just an arbitrary non-ASCII char value. */ 96 #define OPTION_STD_BASE 150 97 /* The first getopt value for machine-dependent long options. 98 190 gives the standard options room to grow. */ 99 #define OPTION_MD_BASE 190 100 101 #ifdef DEBUG 102 #undef NDEBUG 103 #endif 104 #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6) 105 #define __PRETTY_FUNCTION__ ((char*)0) 106 #endif 107 #define assert(P) \ 108 ((void) ((P) ? 0 : (as_assert (__FILE__, __LINE__, __PRETTY_FUNCTION__), 0))) 109 #undef abort 110 #define abort() as_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__) 111 112 /* Now GNU header files... */ 113 #include "ansidecl.h" 114 #ifdef BFD_ASSEMBLER 115 #include "bfd.h" 116 #endif 117 #include "libiberty.h" 118 119 /* Define the standard progress macros. */ 120 #include "progress.h" 121 122 /* This doesn't get taken care of anywhere. */ 123 #ifndef __MWERKS__ /* Metrowerks C chokes on the "defined (inline)" */ 124 #if !defined (__GNUC__) && !defined (inline) 125 #define inline 126 #endif 127 #endif /* !__MWERKS__ */ 128 129 /* Other stuff from config.h. */ 130 #ifdef NEED_DECLARATION_STRSTR 131 extern char *strstr (); 132 #endif 133 #ifdef NEED_DECLARATION_MALLOC 134 extern PTR malloc (); 135 extern PTR realloc (); 136 #endif 137 #ifdef NEED_DECLARATION_FREE 138 extern void free (); 139 #endif 140 #ifdef NEED_DECLARATION_ERRNO 141 extern int errno; 142 #endif 143 #ifdef NEED_DECLARATION_ENVIRON 144 extern char **environ; 145 #endif 146 147 /* This is needed for VMS. */ 148 #if ! defined (HAVE_UNLINK) && defined (HAVE_REMOVE) 149 #define unlink remove 150 #endif 151 152 /* Hack to make "gcc -Wall" not complain about obstack macros. */ 153 #if !defined (memcpy) && !defined (bcopy) 154 #define bcopy(src,dest,size) memcpy (dest, src, size) 155 #endif 156 157 /* Make Saber happier on obstack.h. */ 158 #ifdef SABER 159 #undef __PTR_TO_INT 160 #define __PTR_TO_INT(P) ((int) (P)) 161 #undef __INT_TO_PTR 162 #define __INT_TO_PTR(P) ((char *) (P)) 163 #endif 164 165 #ifndef __LINE__ 166 #define __LINE__ "unknown" 167 #endif /* __LINE__ */ 168 169 #ifndef __FILE__ 170 #define __FILE__ "unknown" 171 #endif /* __FILE__ */ 172 173 #ifndef FOPEN_WB 174 #if defined GO32 || defined __MINGW32__ 175 #include "fopen-bin.h" 176 #else 177 #include "fopen-same.h" 178 #endif 179 #endif 180 181 #ifndef EXIT_SUCCESS 182 #define EXIT_SUCCESS 0 183 #define EXIT_FAILURE 1 184 #endif 185 186 #ifndef SEEK_SET 187 #define SEEK_SET 0 188 #endif 189 190 #define obstack_chunk_alloc xmalloc 191 #define obstack_chunk_free xfree 192 193 #define xfree free 194 195 #include "asintl.h" 196 197 #define BAD_CASE(val) \ 198 { \ 199 as_fatal (_("Case value %ld unexpected at line %d of file \"%s\"\n"), \ 200 (long) val, __LINE__, __FILE__); \ 201 } 202 203 #include "flonum.h" 204 205 /* These are assembler-wide concepts */ 206 207 #ifdef BFD_ASSEMBLER 208 extern bfd *stdoutput; 209 typedef bfd_vma addressT; 210 typedef bfd_signed_vma offsetT; 211 #else 212 typedef unsigned long addressT; 213 typedef long offsetT; 214 #endif 215 216 /* Type of symbol value, etc. For use in prototypes. */ 217 typedef addressT valueT; 218 219 #ifndef COMMON 220 #ifdef TEST 221 #define COMMON /* Declare our COMMONs storage here. */ 222 #else 223 #define COMMON extern /* Our commons live elsewhere. */ 224 #endif 225 #endif 226 /* COMMON now defined */ 227 228 #ifdef DEBUG 229 #ifndef know 230 #define know(p) assert(p) /* Verify our assumptions! */ 231 #endif /* not yet defined */ 232 #else 233 #define know(p) /* know() checks are no-op.ed */ 234 #endif 235 236 /* input_scrub.c */ 237 238 /* Supplies sanitised buffers to read.c. 239 Also understands printing line-number part of error messages. */ 240 241 /* subsegs.c Sub-segments. Also, segment(=expression type)s.*/ 242 243 #ifndef BFD_ASSEMBLER 244 245 #ifdef MANY_SEGMENTS 246 #include "bfd.h" 247 /* (TIGCC 20040625) 40 sections are definitely not enough for 248 -ffunction-sections, -fdata-sections and the like. 249 So I increased them to 120. -- Kevin Kofler 250 (TIGCC 20040905) And again to 1024. -- Kevin Kofler */ 251 #define N_SEGMENTS 1024 252 #define SEG_NORMAL(x) ((x) >= SEG_E0 && (x) <= SEG_LAST) 253 #define LIST_10_(decade) decade##0,decade##1,decade##2,decade##3,decade##4,decade##5,decade##6,decade##7,decade##8,decade##9 254 #define LIST_FIRST_100_(century) LIST_10_(century),LIST_10_(century##1),LIST_10_(century##2),LIST_10_(century##3),LIST_10_(century##4),LIST_10_(century##5),LIST_10_(century##6),LIST_10_(century##7),LIST_10_(century##8),LIST_10_(century##9) 255 #define LIST_100_(century) LIST_10_(century##0),LIST_10_(century##1),LIST_10_(century##2),LIST_10_(century##3),LIST_10_(century##4),LIST_10_(century##5),LIST_10_(century##6),LIST_10_(century##7),LIST_10_(century##8),LIST_10_(century##9) 256 #define LIST_FIRST_1000_(millennium) LIST_FIRST_100_(millennium),LIST_100_(millennium##1),LIST_100_(millennium##2),LIST_100_(millennium##3),LIST_100_(millennium##4),LIST_100_(millennium##5),LIST_100_(millennium##6),LIST_100_(millennium##7),LIST_100_(millennium##8),LIST_100_(millennium##9) 257 #define SEG_LIST LIST_FIRST_1000_(SEG_E),LIST_10_(SEG_E100),LIST_10_(SEG_E101),\ 258 SEG_E1020,SEG_E1021,SEG_E1022,SEG_E1023 259 #define SEG_TEXT SEG_E0 260 #define SEG_DATA SEG_E1 261 #define SEG_BSS SEG_E2 262 #define SEG_LAST SEG_E1023 263 #else 264 #define N_SEGMENTS 3 265 #define SEG_NORMAL(x) ((x) == SEG_TEXT || (x) == SEG_DATA || (x) == SEG_BSS) 266 #define SEG_LIST SEG_TEXT,SEG_DATA,SEG_BSS 267 #endif 268 269 typedef enum _segT 270 { 271 SEG_ABSOLUTE = 0, 272 SEG_LIST, 273 SEG_UNKNOWN, 274 SEG_GOOF, /* Only happens if AS has a logic error. */ 275 /* Invented so we don't crash printing 276 error message involving weird segment. */ 277 SEG_EXPR, /* Intermediate expression values. */ 278 SEG_DEBUG, /* Debug segment */ 279 SEG_NTV, /* Transfert vector preload segment. */ 280 SEG_PTV, /* Transfert vector postload segment. */ 281 SEG_REGISTER /* Mythical: a register-valued expression. */ 282 } segT; 283 284 #define SEG_MAXIMUM_ORDINAL (SEG_REGISTER) 285 #else 286 typedef asection *segT; 287 #define SEG_NORMAL(SEG) ( (SEG) != absolute_section \ 288 && (SEG) != undefined_section \ 289 && (SEG) != reg_section \ 290 && (SEG) != expr_section) 291 #endif 292 typedef int subsegT; 293 294 /* What subseg we are accessing now? */ 295 COMMON subsegT now_subseg; 296 297 /* Segment our instructions emit to. */ 298 COMMON segT now_seg; 299 300 #ifdef BFD_ASSEMBLER 301 #define segment_name(SEG) bfd_get_section_name (stdoutput, SEG) 302 #else 303 /* (TIGCC 20040905) Allow arbitrary number of sections here. -- Kevin Kofler */ 304 #if 0 305 extern char const *const seg_name[]; 306 #define segment_name(SEG) seg_name[(int) (SEG)]*/ 307 #else 308 char *segment_name PARAMS ((int)); 309 #endif 310 #endif 311 312 #ifndef BFD_ASSEMBLER 313 extern int section_alignment[]; 314 #endif 315 316 #ifdef BFD_ASSEMBLER 317 extern segT reg_section, expr_section; 318 /* Shouldn't these be eliminated someday? */ 319 extern segT text_section, data_section, bss_section; 320 #define absolute_section bfd_abs_section_ptr 321 #define undefined_section bfd_und_section_ptr 322 #else 323 #define reg_section SEG_REGISTER 324 #define expr_section SEG_EXPR 325 #define text_section SEG_TEXT 326 #define data_section SEG_DATA 327 #define bss_section SEG_BSS 328 #define absolute_section SEG_ABSOLUTE 329 #define undefined_section SEG_UNKNOWN 330 #endif 331 332 333 enum _relax_state 334 { 335 /* Dummy frag used by listing code. */ 336 rs_dummy = 0, 337 338 /* Variable chars to be repeated fr_offset times. 339 Fr_symbol unused. Used with fr_offset == 0 for a 340 constant length frag. */ 341 rs_fill, 342 343 /* Align. The fr_offset field holds the power of 2 to which to 344 align. The fr_var field holds the number of characters in the 345 fill pattern. The fr_subtype field holds the maximum number of 346 bytes to skip when aligning, or 0 if there is no maximum. */ 347 rs_align, 348 349 /* Align code. The fr_offset field holds the power of 2 to which 350 to align. This type is only generated by machine specific 351 code, which is normally responsible for handling the fill 352 pattern. The fr_subtype field holds the maximum number of 353 bytes to skip when aligning, or 0 if there is no maximum. */ 354 rs_align_code, 355 356 /* Test for alignment. Like rs_align, but used by several targets 357 to warn if data is not properly aligned. */ 358 rs_align_test, 359 360 /* Org: Fr_offset, fr_symbol: address. 1 variable char: fill 361 character. */ 362 rs_org, 363 364 #ifndef WORKING_DOT_WORD 365 /* JF: gunpoint */ 366 rs_broken_word, 367 #endif 368 369 /* Machine specific relaxable (or similarly alterable) instruction. */ 370 rs_machine_dependent, 371 372 /* .space directive with expression operand that needs to be computed 373 later. Similar to rs_org, but different. 374 fr_symbol: operand 375 1 variable char: fill character */ 376 rs_space, 377 378 /* A DWARF leb128 value; only ELF uses this. The subtype is 0 for 379 unsigned, 1 for signed. */ 380 rs_leb128, 381 382 /* Exception frame information which we may be able to optimize. */ 383 rs_cfa, 384 385 /* Cross-fragment dwarf2 line number optimization. */ 386 rs_dwarf2dbg 387 }; 388 389 typedef enum _relax_state relax_stateT; 390 391 /* This type is used in prototypes, so it can't be a type that will be 392 widened for argument passing. */ 393 typedef unsigned int relax_substateT; 394 395 /* Enough bits for address, but still an integer type. 396 Could be a problem, cross-assembling for 64-bit machines. */ 397 typedef addressT relax_addressT; 398 399 struct relax_type 400 { 401 /* Forward reach. Signed number. > 0. */ 402 offsetT rlx_forward; 403 /* Backward reach. Signed number. < 0. */ 404 offsetT rlx_backward; 405 406 /* Bytes length of this address. */ 407 unsigned char rlx_length; 408 409 /* Next longer relax-state. 0 means there is no 'next' relax-state. */ 410 relax_substateT rlx_more; 411 }; 412 413 typedef struct relax_type relax_typeS; 414 415 /* main program "as.c" (command arguments etc). */ 416 417 COMMON unsigned char flag_no_comments; /* -f */ 418 COMMON unsigned char flag_debug; /* -D */ 419 COMMON unsigned char flag_signed_overflow_ok; /* -J */ 420 #ifndef WORKING_DOT_WORD 421 COMMON unsigned char flag_warn_displacement; /* -K */ 422 #endif 423 424 /* True if local symbols should be retained. */ 425 COMMON int flag_keep_locals; /* -L */ 426 427 /* True if we are assembling in MRI mode. */ 428 COMMON int flag_mri; 429 430 /* Should the data section be made read-only and appended to the text 431 section? */ 432 COMMON unsigned char flag_readonly_data_in_text; /* -R */ 433 434 /* True if warnings should be inhibited. */ 435 COMMON int flag_no_warnings; /* -W */ 436 437 /* True if warnings count as errors. */ 438 COMMON int flag_fatal_warnings; /* --fatal-warnings */ 439 440 /* True if we should attempt to generate output even if non-fatal errors 441 are detected. */ 442 COMMON unsigned char flag_always_generate_output; /* -Z */ 443 444 /* This is true if the assembler should output time and space usage. */ 445 COMMON unsigned char flag_print_statistics; 446 447 /* True if local absolute symbols are to be stripped. */ 448 COMMON int flag_strip_local_absolute; 449 450 /* True if we should generate a traditional format object file. */ 451 COMMON int flag_traditional_format; 452 453 /* TRUE if .note.GNU-stack section with SEC_CODE should be created */ 454 COMMON int flag_execstack; 455 456 /* TRUE if .note.GNU-stack section with SEC_CODE should be created */ 457 COMMON int flag_noexecstack; 458 459 /* name of emitted object file */ 460 COMMON char *out_file_name; 461 462 /* name of file defining extensions to the basic instruction set */ 463 COMMON char *insttbl_file_name; 464 465 /* TRUE if we need a second pass. */ 466 COMMON int need_pass_2; 467 468 /* TRUE if we should do no relaxing, and 469 leave lots of padding. */ 470 COMMON int linkrelax; 471 472 /* TRUE if we should produce a listing. */ 473 extern int listing; 474 475 /* Type of debugging information we should generate. We currently support 476 stabs, ECOFF, and DWARF2. 477 478 NOTE! This means debug information about the assembly source code itself 479 and _not_ about possible debug information from a high-level language. 480 This is especially relevant to DWARF2, since the compiler may emit line 481 number directives that the assembler resolves. */ 482 483 enum debug_info_type 484 { 485 DEBUG_UNSPECIFIED, 486 DEBUG_NONE, 487 DEBUG_STABS, 488 DEBUG_ECOFF, 489 DEBUG_DWARF, 490 DEBUG_DWARF2 491 }; 492 493 extern enum debug_info_type debug_type; 494 extern int use_gnu_debug_info_extensions; 495 496 /* (TIGCC 20030716) True if all relocs should be retained. */ 497 COMMON unsigned char flag_all_relocs; /* --all-relocs */ 498 499 /* (TIGCC 20050731) True if assembling in A68k compatibility mode. */ 500 COMMON unsigned char flag_a68k; /* --a68k */ 501 502 /* Maximum level of macro nesting. */ 503 extern int max_macro_nest; 504 505 /* Verbosity level. */ 506 extern int verbose; 507 508 /* Obstack chunk size. Keep large for efficient space use, make small to 509 increase malloc calls for monitoring memory allocation. */ 510 extern int chunksize; 511 512 struct _pseudo_type 513 { 514 /* assembler mnemonic, lower case, no '.' */ 515 const char *poc_name; 516 /* Do the work */ 517 void (*poc_handler) (int); 518 /* Value to pass to handler */ 519 int poc_val; 520 }; 521 522 typedef struct _pseudo_type pseudo_typeS; 523 524 /* Prefer varargs for non-ANSI compiler, since some will barf if the 525 ellipsis definition is used with a no-arguments declaration. */ 526 #if defined (HAVE_VARARGS_H) && !defined (__STDC__) 527 #undef HAVE_STDARG_H 528 #endif 529 530 #if defined (HAVE_STDARG_H) 531 #define USE_STDARG 532 #endif 533 #if !defined (USE_STDARG) && defined (HAVE_VARARGS_H) 534 #define USE_VARARGS 535 #endif 536 537 #ifdef USE_STDARG 538 #if (__GNUC__ >= 2) && !defined(VMS) 539 /* for use with -Wformat */ 540 541 #if __GNUC__ == 2 && __GNUC_MINOR__ < 6 542 /* Support for double underscores in attribute names was added in gcc 543 2.6, so avoid them if we are using an earlier version. */ 544 #define __printf__ printf 545 #define __format__ format 546 #endif 547 548 #define PRINTF_LIKE(FCN) \ 549 void FCN (const char *format, ...) \ 550 __attribute__ ((__format__ (__printf__, 1, 2))) 551 #define PRINTF_WHERE_LIKE(FCN) \ 552 void FCN (char *file, unsigned int line, const char *format, ...) \ 553 __attribute__ ((__format__ (__printf__, 3, 4))) 554 555 #else /* __GNUC__ < 2 || defined(VMS) */ 556 557 #define PRINTF_LIKE(FCN) void FCN (const char *format, ...) 558 #define PRINTF_WHERE_LIKE(FCN) void FCN (char *file, \ 559 unsigned int line, \ 560 const char *format, ...) 561 562 #endif /* __GNUC__ < 2 || defined(VMS) */ 563 564 #else /* ! USE_STDARG */ 565 566 #define PRINTF_LIKE(FCN) void FCN () 567 #define PRINTF_WHERE_LIKE(FCN) void FCN () 568 569 #endif /* ! USE_STDARG */ 570 571 PRINTF_LIKE (as_bad); 572 PRINTF_LIKE (as_fatal) ATTRIBUTE_NORETURN; 573 PRINTF_LIKE (as_tsktsk); 574 PRINTF_LIKE (as_warn); 575 PRINTF_WHERE_LIKE (as_bad_where); 576 PRINTF_WHERE_LIKE (as_warn_where); 577 578 void as_assert (const char *, int, const char *); 579 void as_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; 580 void fprint_value (FILE *, addressT); 581 void sprint_value (char *, addressT); 582 int had_errors (void); 583 int had_warnings (void); 584 void as_warn_value_out_of_range (char *, offsetT, offsetT, offsetT, char *, unsigned); 585 void as_bad_value_out_of_range (char *, offsetT, offsetT, offsetT, char *, unsigned); 586 void print_version_id (void); 587 char * app_push (void); 588 char * atof_ieee (char *, int, LITTLENUM_TYPE *); 589 char * input_scrub_include_file (char *, char *); 590 void input_scrub_insert_line (const char *); 591 void input_scrub_insert_file (char *); 592 char * input_scrub_new_file (char *); 593 char * input_scrub_next_buffer (char **bufp); 594 int do_scrub_chars (int (*get) (char *, int), char *, int); 595 int gen_to_words (LITTLENUM_TYPE *, int, long); 596 int had_err (void); 597 int ignore_input (void); 598 void cond_finish_check (int); 599 void cond_exit_macro (int); 600 int seen_at_least_1_file (void); 601 void app_pop (char *); 602 void as_howmuch (FILE *); 603 void as_perror (const char *, const char *); 604 void as_where (char **, unsigned int *); 605 void bump_line_counters (void); 606 void do_scrub_begin (int); 607 void input_scrub_begin (void); 608 void input_scrub_close (void); 609 void input_scrub_end (void); 610 int new_logical_line (char *, int); 611 void subsegs_begin (void); 612 void subseg_change (segT, int); 613 segT subseg_new (const char *, subsegT); 614 segT subseg_force_new (const char *, subsegT); 615 void subseg_set (segT, subsegT); 616 int subseg_text_p (segT); 617 int seg_not_empty_p (segT); 618 void start_dependencies (char *); 619 void register_dependency (char *); 620 void print_dependencies (void); 621 #ifdef BFD_ASSEMBLER 622 segT subseg_get (const char *, int); 623 #endif 624 625 struct expressionS; 626 struct fix; 627 typedef struct symbol symbolS; 628 struct relax_type; 629 typedef struct frag fragS; 630 631 #ifdef BFD_ASSEMBLER 632 /* literal.c */ 633 valueT add_to_literal_pool (symbolS *, valueT, segT, int); 634 #endif 635 636 int check_eh_frame (struct expressionS *, unsigned int *); 637 int eh_frame_estimate_size_before_relax (fragS *); 638 int eh_frame_relax_frag (fragS *); 639 void eh_frame_convert_frag (fragS *); 640 int generic_force_reloc (struct fix *); 641 642 #include "expr.h" /* Before targ-*.h */ 643 644 /* This one starts the chain of target dependant headers. */ 645 #include "targ-env.h" 646 647 #ifdef OBJ_MAYBE_ELF 648 #define IS_ELF (OUTPUT_FLAVOR == bfd_target_elf_flavour) 649 #else 650 #ifdef OBJ_ELF 651 #define IS_ELF 1 652 #else 653 #define IS_ELF 0 654 #endif 655 #endif 656 657 #include "write.h" 658 #include "frags.h" 659 #include "hash.h" 660 #include "read.h" 661 #include "symbols.h" 662 663 #include "tc.h" 664 #include "obj.h" 665 666 #ifdef USE_EMULATIONS 667 #include "emul.h" 668 #endif 669 #include "listing.h" 670 671 #ifdef TC_M68K 672 /* True if we are assembling in m68k MRI mode. */ 673 COMMON int flag_m68k_mri; 674 #else 675 #define flag_m68k_mri 0 676 #endif 677 678 #ifdef WARN_COMMENTS 679 COMMON int warn_comment; 680 COMMON unsigned int found_comment; 681 COMMON char * found_comment_file; 682 #endif 683 684 #ifndef NUMBERS_WITH_SUFFIX 685 #define NUMBERS_WITH_SUFFIX 0 686 #endif 687 688 #ifndef LOCAL_LABELS_DOLLAR 689 #define LOCAL_LABELS_DOLLAR 0 690 #endif 691 692 #ifndef LOCAL_LABELS_FB 693 #define LOCAL_LABELS_FB 0 694 #endif 695 696 #ifndef LABELS_WITHOUT_COLONS 697 #define LABELS_WITHOUT_COLONS 0 698 #endif 699 700 #ifndef NO_PSEUDO_DOT 701 #define NO_PSEUDO_DOT 0 702 #endif 703 704 #ifndef TEXT_SECTION_NAME 705 #define TEXT_SECTION_NAME ".text" 706 #define DATA_SECTION_NAME ".data" 707 #define BSS_SECTION_NAME ".bss" 708 #endif 709 710 #ifndef OCTETS_PER_BYTE_POWER 711 #define OCTETS_PER_BYTE_POWER 0 712 #endif 713 #ifndef OCTETS_PER_BYTE 714 #define OCTETS_PER_BYTE (1<<OCTETS_PER_BYTE_POWER) 715 #endif 716 #if OCTETS_PER_BYTE != (1<<OCTETS_PER_BYTE_POWER) 717 #error "Octets per byte conflicts with its power-of-two definition!" 718 #endif 719 720 #endif /* GAS */ 721