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