* lib/gdb.exp (banned_variables_traced): New global variable.
[deliverable/binutils-gdb.git] / gas / as.h
CommitLineData
252b5132 1/* as.h - global header file
f7e42eb4 2 Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
8d25cc3d 3 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
252b5132
RH
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
ec2655a6 10 the Free Software Foundation; either version 3, or (at your option)
252b5132
RH
11 any later version.
12
ec2655a6
NC
13 GAS is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
16 License for more details.
252b5132
RH
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
4b4da160
NC
20 Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
21 02110-1301, USA. */
252b5132
RH
22
23#ifndef GAS
24#define GAS 1
30a2b4ef 25/* I think this stuff is largely out of date. xoxorich.
329e276d
NC
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 "". */
252b5132 38
8d25cc3d 39#include "alloca-conf.h"
252b5132
RH
40
41/* Now, tend to the rest of the configuration. */
42
a01b9fa4 43/* System include files first... */
252b5132 44#include <stdio.h>
252b5132
RH
45#ifdef HAVE_STRING_H
46#include <string.h>
47#else
48#ifdef HAVE_STRINGS_H
49#include <strings.h>
50#endif
51#endif
52#ifdef HAVE_STDLIB_H
53#include <stdlib.h>
54#endif
55#ifdef HAVE_UNISTD_H
56#include <unistd.h>
57#endif
58#ifdef HAVE_SYS_TYPES_H
59/* for size_t, pid_t */
60#include <sys/types.h>
61#endif
62
6d74f28b
EB
63#ifdef HAVE_ERRNO_H
64#include <errno.h>
65#endif
66
6d74f28b 67#include <stdarg.h>
6d74f28b 68
29589b0c 69#include "getopt.h"
252b5132
RH
70/* The first getopt value for machine-independent long options.
71 150 isn't special; it's just an arbitrary non-ASCII char value. */
72#define OPTION_STD_BASE 150
73/* The first getopt value for machine-dependent long options.
d8374dcd
HPN
74 190 gives the standard options room to grow. */
75#define OPTION_MD_BASE 190
252b5132
RH
76
77#ifdef DEBUG
78#undef NDEBUG
79#endif
a1934524 80#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
5bc2ed93 81#define __PRETTY_FUNCTION__ ((char *) NULL)
252b5132 82#endif
9c2799c2 83#define gas_assert(P) \
c9dea48b 84 ((void) ((P) ? 0 : (as_assert (__FILE__, __LINE__, __PRETTY_FUNCTION__), 0)))
252b5132
RH
85#undef abort
86#define abort() as_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
87
a01b9fa4 88/* Now GNU header files... */
8fce3f5e 89#include "ansidecl.h"
8fce3f5e 90#include "bfd.h"
8fce3f5e 91#include "libiberty.h"
252b5132
RH
92
93/* Define the standard progress macros. */
8fce3f5e 94#include "progress.h"
252b5132
RH
95
96/* This doesn't get taken care of anywhere. */
329e276d 97#ifndef __MWERKS__ /* Metrowerks C chokes on the "defined (inline)" */
252b5132
RH
98#if !defined (__GNUC__) && !defined (inline)
99#define inline
100#endif
101#endif /* !__MWERKS__ */
102
103/* Other stuff from config.h. */
e8a38df5
AL
104#ifdef NEED_DECLARATION_ENVIRON
105extern char **environ;
252b5132 106#endif
e8a38df5
AL
107#ifdef NEED_DECLARATION_ERRNO
108extern int errno;
109#endif
110#ifdef NEED_DECLARATION_FFS
111extern int ffs (int);
252b5132
RH
112#endif
113#ifdef NEED_DECLARATION_FREE
114extern void free ();
115#endif
e8a38df5 116#ifdef NEED_DECLARATION_MALLOC
5a49b8ac
AM
117extern void *malloc ();
118extern void *realloc ();
252b5132 119#endif
e8a38df5
AL
120#ifdef NEED_DECLARATION_STRSTR
121extern char *strstr ();
252b5132
RH
122#endif
123
0175442d
L
124#if !HAVE_DECL_MEMPCPY
125void *mempcpy(void *, const void *, size_t);
126#endif
127
6d74f28b
EB
128#if !HAVE_DECL_VSNPRINTF
129extern int vsnprintf(char *, size_t, const char *, va_list);
130#endif
131
252b5132
RH
132/* This is needed for VMS. */
133#if ! defined (HAVE_UNLINK) && defined (HAVE_REMOVE)
134#define unlink remove
135#endif
136
137/* Hack to make "gcc -Wall" not complain about obstack macros. */
138#if !defined (memcpy) && !defined (bcopy)
d1a6c242 139#define bcopy(src,dest,size) memcpy (dest, src, size)
252b5132
RH
140#endif
141
142/* Make Saber happier on obstack.h. */
143#ifdef SABER
144#undef __PTR_TO_INT
ee515fb7 145#define __PTR_TO_INT(P) ((int) (P))
252b5132 146#undef __INT_TO_PTR
ee515fb7 147#define __INT_TO_PTR(P) ((char *) (P))
252b5132
RH
148#endif
149
150#ifndef __LINE__
151#define __LINE__ "unknown"
152#endif /* __LINE__ */
153
154#ifndef __FILE__
155#define __FILE__ "unknown"
156#endif /* __FILE__ */
157
158#ifndef FOPEN_WB
c973bc5c 159#ifdef USE_BINARY_FOPEN
252b5132
RH
160#include "fopen-bin.h"
161#else
162#include "fopen-same.h"
163#endif
164#endif
165
166#ifndef EXIT_SUCCESS
167#define EXIT_SUCCESS 0
168#define EXIT_FAILURE 1
169#endif
170
12ff5d56
AM
171#ifndef SEEK_SET
172#define SEEK_SET 0
173#endif
174
252b5132
RH
175#define obstack_chunk_alloc xmalloc
176#define obstack_chunk_free xfree
177
178#define xfree free
179
180#include "asintl.h"
181
30a2b4ef
KH
182#define BAD_CASE(val) \
183 { \
184 as_fatal (_("Case value %ld unexpected at line %d of file \"%s\"\n"), \
185 (long) val, __LINE__, __FILE__); \
186 }
252b5132
RH
187\f
188#include "flonum.h"
189
190/* These are assembler-wide concepts */
191
252b5132
RH
192extern bfd *stdoutput;
193typedef bfd_vma addressT;
194typedef bfd_signed_vma offsetT;
252b5132
RH
195
196/* Type of symbol value, etc. For use in prototypes. */
197typedef addressT valueT;
198
199#ifndef COMMON
200#ifdef TEST
329e276d 201#define COMMON /* Declare our COMMONs storage here. */
252b5132 202#else
329e276d 203#define COMMON extern /* Our commons live elsewhere. */
252b5132
RH
204#endif
205#endif
206/* COMMON now defined */
207
c43a438d
AM
208#ifndef ENABLE_CHECKING
209#define ENABLE_CHECKING 0
210#endif
211
212#if ENABLE_CHECKING || defined (DEBUG)
252b5132 213#ifndef know
9c2799c2 214#define know(p) gas_assert(p) /* Verify our assumptions! */
252b5132
RH
215#endif /* not yet defined */
216#else
c5ed243b 217#define know(p) do {} while (0) /* know() checks are no-op.ed */
252b5132
RH
218#endif
219\f
220/* input_scrub.c */
221
30a2b4ef
KH
222/* Supplies sanitised buffers to read.c.
223 Also understands printing line-number part of error messages. */
252b5132 224\f
252b5132
RH
225/* subsegs.c Sub-segments. Also, segment(=expression type)s.*/
226
252b5132 227typedef asection *segT;
329e276d 228#define SEG_NORMAL(SEG) ( (SEG) != absolute_section \
252b5132
RH
229 && (SEG) != undefined_section \
230 && (SEG) != reg_section \
231 && (SEG) != expr_section)
252b5132
RH
232typedef int subsegT;
233
329e276d 234/* What subseg we are accessing now? */
252b5132
RH
235COMMON subsegT now_subseg;
236
a01b9fa4 237/* Segment our instructions emit to. */
252b5132
RH
238COMMON segT now_seg;
239
252b5132 240#define segment_name(SEG) bfd_get_section_name (stdoutput, SEG)
252b5132 241
252b5132
RH
242extern segT reg_section, expr_section;
243/* Shouldn't these be eliminated someday? */
244extern segT text_section, data_section, bss_section;
245#define absolute_section bfd_abs_section_ptr
246#define undefined_section bfd_und_section_ptr
252b5132 247
329e276d
NC
248enum _relax_state
249{
be95a9c1
AM
250 /* Dummy frag used by listing code. */
251 rs_dummy = 0,
252
30a2b4ef
KH
253 /* Variable chars to be repeated fr_offset times.
254 Fr_symbol unused. Used with fr_offset == 0 for a
255 constant length frag. */
be95a9c1 256 rs_fill,
30a2b4ef
KH
257
258 /* Align. The fr_offset field holds the power of 2 to which to
259 align. The fr_var field holds the number of characters in the
260 fill pattern. The fr_subtype field holds the maximum number of
261 bytes to skip when aligning, or 0 if there is no maximum. */
262 rs_align,
263
264 /* Align code. The fr_offset field holds the power of 2 to which
265 to align. This type is only generated by machine specific
266 code, which is normally responsible for handling the fill
267 pattern. The fr_subtype field holds the maximum number of
268 bytes to skip when aligning, or 0 if there is no maximum. */
269 rs_align_code,
270
0a9ef439
RH
271 /* Test for alignment. Like rs_align, but used by several targets
272 to warn if data is not properly aligned. */
273 rs_align_test,
274
30a2b4ef
KH
275 /* Org: Fr_offset, fr_symbol: address. 1 variable char: fill
276 character. */
277 rs_org,
252b5132
RH
278
279#ifndef WORKING_DOT_WORD
30a2b4ef
KH
280 /* JF: gunpoint */
281 rs_broken_word,
252b5132
RH
282#endif
283
329e276d 284 /* Machine specific relaxable (or similarly alterable) instruction. */
30a2b4ef 285 rs_machine_dependent,
252b5132 286
30a2b4ef
KH
287 /* .space directive with expression operand that needs to be computed
288 later. Similar to rs_org, but different.
289 fr_symbol: operand
290 1 variable char: fill character */
291 rs_space,
252b5132 292
30a2b4ef
KH
293 /* A DWARF leb128 value; only ELF uses this. The subtype is 0 for
294 unsigned, 1 for signed. */
295 rs_leb128,
252b5132 296
30a2b4ef 297 /* Exception frame information which we may be able to optimize. */
220e750f
RH
298 rs_cfa,
299
300 /* Cross-fragment dwarf2 line number optimization. */
301 rs_dwarf2dbg
30a2b4ef 302};
252b5132
RH
303
304typedef enum _relax_state relax_stateT;
305
306/* This type is used in prototypes, so it can't be a type that will be
307 widened for argument passing. */
308typedef unsigned int relax_substateT;
309
310/* Enough bits for address, but still an integer type.
311 Could be a problem, cross-assembling for 64-bit machines. */
312typedef addressT relax_addressT;
f17c130b
AM
313
314struct relax_type
315{
316 /* Forward reach. Signed number. > 0. */
317 offsetT rlx_forward;
318 /* Backward reach. Signed number. < 0. */
319 offsetT rlx_backward;
320
321 /* Bytes length of this address. */
322 unsigned char rlx_length;
323
324 /* Next longer relax-state. 0 means there is no 'next' relax-state. */
325 relax_substateT rlx_more;
326};
327
328typedef struct relax_type relax_typeS;
252b5132 329\f
329e276d 330/* main program "as.c" (command arguments etc). */
252b5132
RH
331
332COMMON unsigned char flag_no_comments; /* -f */
333COMMON unsigned char flag_debug; /* -D */
334COMMON unsigned char flag_signed_overflow_ok; /* -J */
335#ifndef WORKING_DOT_WORD
336COMMON unsigned char flag_warn_displacement; /* -K */
337#endif
338
339/* True if local symbols should be retained. */
340COMMON int flag_keep_locals; /* -L */
341
342/* True if we are assembling in MRI mode. */
343COMMON int flag_mri;
344
252b5132
RH
345/* Should the data section be made read-only and appended to the text
346 section? */
347COMMON unsigned char flag_readonly_data_in_text; /* -R */
348
349/* True if warnings should be inhibited. */
350COMMON int flag_no_warnings; /* -W */
351
2bdd6cf5
GK
352/* True if warnings count as errors. */
353COMMON int flag_fatal_warnings; /* --fatal-warnings */
354
252b5132
RH
355/* True if we should attempt to generate output even if non-fatal errors
356 are detected. */
357COMMON unsigned char flag_always_generate_output; /* -Z */
358
a01b9fa4 359/* This is true if the assembler should output time and space usage. */
252b5132
RH
360COMMON unsigned char flag_print_statistics;
361
362/* True if local absolute symbols are to be stripped. */
363COMMON int flag_strip_local_absolute;
364
365/* True if we should generate a traditional format object file. */
366COMMON int flag_traditional_format;
367
68d55fe3
JJ
368/* TRUE if .note.GNU-stack section with SEC_CODE should be created */
369COMMON int flag_execstack;
370
371/* TRUE if .note.GNU-stack section with SEC_CODE should be created */
372COMMON int flag_noexecstack;
373
252b5132
RH
374/* name of emitted object file */
375COMMON char *out_file_name;
376
377/* name of file defining extensions to the basic instruction set */
378COMMON char *insttbl_file_name;
379
a01b9fa4 380/* TRUE if we need a second pass. */
252b5132
RH
381COMMON int need_pass_2;
382
383/* TRUE if we should do no relaxing, and
384 leave lots of padding. */
385COMMON int linkrelax;
386
387/* TRUE if we should produce a listing. */
388extern int listing;
389
4dc7ead9
RH
390/* Type of debugging information we should generate. We currently support
391 stabs, ECOFF, and DWARF2.
392
393 NOTE! This means debug information about the assembly source code itself
394 and _not_ about possible debug information from a high-level language.
395 This is especially relevant to DWARF2, since the compiler may emit line
396 number directives that the assembler resolves. */
252b5132 397
329e276d
NC
398enum debug_info_type
399{
30a2b4ef
KH
400 DEBUG_UNSPECIFIED,
401 DEBUG_NONE,
402 DEBUG_STABS,
403 DEBUG_ECOFF,
404 DEBUG_DWARF,
405 DEBUG_DWARF2
406};
252b5132
RH
407
408extern enum debug_info_type debug_type;
05da4302 409extern int use_gnu_debug_info_extensions;
252b5132
RH
410\f
411/* Maximum level of macro nesting. */
412extern int max_macro_nest;
413
54cfded0
AM
414/* Verbosity level. */
415extern int verbose;
416
252b5132
RH
417/* Obstack chunk size. Keep large for efficient space use, make small to
418 increase malloc calls for monitoring memory allocation. */
419extern int chunksize;
420
329e276d
NC
421struct _pseudo_type
422{
30a2b4ef
KH
423 /* assembler mnemonic, lower case, no '.' */
424 const char *poc_name;
425 /* Do the work */
73ee5e4c 426 void (*poc_handler) (int);
30a2b4ef
KH
427 /* Value to pass to handler */
428 int poc_val;
429};
252b5132
RH
430
431typedef struct _pseudo_type pseudo_typeS;
432
252b5132
RH
433#if (__GNUC__ >= 2) && !defined(VMS)
434/* for use with -Wformat */
435
a1934524 436#if __GNUC__ == 2 && __GNUC_MINOR__ < 6
252b5132
RH
437/* Support for double underscores in attribute names was added in gcc
438 2.6, so avoid them if we are using an earlier version. */
439#define __printf__ printf
440#define __format__ format
441#endif
442
443#define PRINTF_LIKE(FCN) \
444 void FCN (const char *format, ...) \
445 __attribute__ ((__format__ (__printf__, 1, 2)))
446#define PRINTF_WHERE_LIKE(FCN) \
447 void FCN (char *file, unsigned int line, const char *format, ...) \
448 __attribute__ ((__format__ (__printf__, 3, 4)))
449
450#else /* __GNUC__ < 2 || defined(VMS) */
451
73ee5e4c
KH
452#define PRINTF_LIKE(FCN) void FCN (const char *format, ...)
453#define PRINTF_WHERE_LIKE(FCN) void FCN (char *file, \
454 unsigned int line, \
455 const char *format, ...)
252b5132
RH
456
457#endif /* __GNUC__ < 2 || defined(VMS) */
458
252b5132 459PRINTF_LIKE (as_bad);
8fce3f5e 460PRINTF_LIKE (as_fatal) ATTRIBUTE_NORETURN;
252b5132
RH
461PRINTF_LIKE (as_tsktsk);
462PRINTF_LIKE (as_warn);
463PRINTF_WHERE_LIKE (as_bad_where);
464PRINTF_WHERE_LIKE (as_warn_where);
465
329e276d
NC
466void as_assert (const char *, int, const char *);
467void as_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
329e276d
NC
468void sprint_value (char *, addressT);
469int had_errors (void);
470int had_warnings (void);
471void as_warn_value_out_of_range (char *, offsetT, offsetT, offsetT, char *, unsigned);
472void as_bad_value_out_of_range (char *, offsetT, offsetT, offsetT, char *, unsigned);
473void print_version_id (void);
474char * app_push (void);
475char * atof_ieee (char *, int, LITTLENUM_TYPE *);
499ac353
NC
476char * ieee_md_atof (int, char *, int *, bfd_boolean);
477char * vax_md_atof (int, char *, int *);
329e276d
NC
478char * input_scrub_include_file (char *, char *);
479void input_scrub_insert_line (const char *);
480void input_scrub_insert_file (char *);
481char * input_scrub_new_file (char *);
482char * input_scrub_next_buffer (char **bufp);
483int do_scrub_chars (int (*get) (char *, int), char *, int);
484int gen_to_words (LITTLENUM_TYPE *, int, long);
485int had_err (void);
486int ignore_input (void);
487void cond_finish_check (int);
488void cond_exit_macro (int);
489int seen_at_least_1_file (void);
490void app_pop (char *);
329e276d
NC
491void as_where (char **, unsigned int *);
492void bump_line_counters (void);
493void do_scrub_begin (int);
494void input_scrub_begin (void);
495void input_scrub_close (void);
496void input_scrub_end (void);
497int new_logical_line (char *, int);
93e914b2 498int new_logical_line_flags (char *, int, int);
329e276d
NC
499void subsegs_begin (void);
500void subseg_change (segT, int);
501segT subseg_new (const char *, subsegT);
502segT subseg_force_new (const char *, subsegT);
503void subseg_set (segT, subsegT);
504int subseg_text_p (segT);
4ee4d249 505int seg_not_empty_p (segT);
329e276d
NC
506void start_dependencies (char *);
507void register_dependency (char *);
508void print_dependencies (void);
329e276d 509segT subseg_get (const char *, int);
252b5132 510
3d6b762c
JM
511const char *remap_debug_filename (const char *);
512void add_debug_prefix_map (const char *);
513
252b5132
RH
514struct expressionS;
515struct fix;
2b47531b 516typedef struct symbol symbolS;
252b5132
RH
517typedef struct frag fragS;
518
252b5132 519/* literal.c */
73ee5e4c 520valueT add_to_literal_pool (symbolS *, valueT, segT, int);
252b5132 521
73ee5e4c
KH
522int check_eh_frame (struct expressionS *, unsigned int *);
523int eh_frame_estimate_size_before_relax (fragS *);
524int eh_frame_relax_frag (fragS *);
525void eh_frame_convert_frag (fragS *);
73ee5e4c 526int generic_force_reloc (struct fix *);
ae6063d4 527
252b5132
RH
528#include "expr.h" /* Before targ-*.h */
529
329e276d 530/* This one starts the chain of target dependant headers. */
252b5132
RH
531#include "targ-env.h"
532
a161fe53
AM
533#ifdef OBJ_MAYBE_ELF
534#define IS_ELF (OUTPUT_FLAVOR == bfd_target_elf_flavour)
535#else
536#ifdef OBJ_ELF
537#define IS_ELF 1
538#else
539#define IS_ELF 0
540#endif
0d2bcfaf
NC
541#endif
542
252b5132
RH
543#include "write.h"
544#include "frags.h"
545#include "hash.h"
546#include "read.h"
547#include "symbols.h"
548
549#include "tc.h"
550#include "obj.h"
551
552#ifdef USE_EMULATIONS
553#include "emul.h"
554#endif
555#include "listing.h"
556
c54b5932
DD
557#ifdef H_TICK_HEX
558extern int enable_h_tick_hex;
559#endif
560
abd63a32
AM
561#ifdef TC_M68K
562/* True if we are assembling in m68k MRI mode. */
563COMMON int flag_m68k_mri;
4fa6945e 564#define DOLLAR_AMBIGU flag_m68k_mri
abd63a32
AM
565#else
566#define flag_m68k_mri 0
567#endif
568
4c400d5e 569#ifdef WARN_COMMENTS
329e276d
NC
570COMMON int warn_comment;
571COMMON unsigned int found_comment;
572COMMON char * found_comment_file;
4c400d5e
AM
573#endif
574
4fa6945e
NC
575#ifndef DOLLAR_AMBIGU
576#define DOLLAR_AMBIGU 0
577#endif
578
f805106c
TW
579#ifndef NUMBERS_WITH_SUFFIX
580#define NUMBERS_WITH_SUFFIX 0
581#endif
582
252b5132
RH
583#ifndef LOCAL_LABELS_DOLLAR
584#define LOCAL_LABELS_DOLLAR 0
585#endif
586
587#ifndef LOCAL_LABELS_FB
588#define LOCAL_LABELS_FB 0
589#endif
590
abd63a32
AM
591#ifndef LABELS_WITHOUT_COLONS
592#define LABELS_WITHOUT_COLONS 0
593#endif
594
595#ifndef NO_PSEUDO_DOT
596#define NO_PSEUDO_DOT 0
597#endif
598
252b5132
RH
599#ifndef TEXT_SECTION_NAME
600#define TEXT_SECTION_NAME ".text"
601#define DATA_SECTION_NAME ".data"
602#define BSS_SECTION_NAME ".bss"
603#endif
604
bea9907b
TW
605#ifndef OCTETS_PER_BYTE_POWER
606#define OCTETS_PER_BYTE_POWER 0
607#endif
608#ifndef OCTETS_PER_BYTE
609#define OCTETS_PER_BYTE (1<<OCTETS_PER_BYTE_POWER)
610#endif
611#if OCTETS_PER_BYTE != (1<<OCTETS_PER_BYTE_POWER)
612 #error "Octets per byte conflicts with its power-of-two definition!"
613#endif
614
252b5132 615#endif /* GAS */
This page took 0.532274 seconds and 4 git commands to generate.