read.h revision 77298
1185347Sattilio/* read.h - of read.c
2185347Sattilio   Copyright (C) 1986, 90, 92, 93, 94, 95, 96, 97, 2000
3185347Sattilio   Free Software Foundation, Inc.
4185347Sattilio
5185347Sattilio   This file is part of GAS, the GNU Assembler.
6185347Sattilio
7185347Sattilio   GAS is free software; you can redistribute it and/or modify
8185347Sattilio   it under the terms of the GNU General Public License as published by
9185347Sattilio   the Free Software Foundation; either version 2, or (at your option)
10185347Sattilio   any later version.
11185347Sattilio
12185347Sattilio   GAS is distributed in the hope that it will be useful,
13185347Sattilio   but WITHOUT ANY WARRANTY; without even the implied warranty of
14185347Sattilio   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15185347Sattilio   GNU General Public License for more details.
16185347Sattilio
17185347Sattilio   You should have received a copy of the GNU General Public License
18185347Sattilio   along with GAS; see the file COPYING.  If not, write to the Free
19185347Sattilio   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
20185347Sattilio   02111-1307, USA.  */
21185347Sattilio
22185347Sattilioextern char *input_line_pointer;	/* -> char we are parsing now.  */
23185347Sattilio
24185347Sattilio/* Define to make whitespace be allowed in many syntactically
25185347Sattilio   unnecessary places.  Normally undefined.  For compatibility with
26185347Sattilio   ancient GNU cc.  */
27185347Sattilio/* #undef PERMIT_WHITESPACE */
28185347Sattilio#define PERMIT_WHITESPACE
29185347Sattilio
30185347Sattilio#ifdef PERMIT_WHITESPACE
31206622Suqs#define SKIP_WHITESPACE()			\
32185347Sattilio  {						\
33185347Sattilio    if (* input_line_pointer == ' ')		\
34185347Sattilio      ++ input_line_pointer;			\
35185347Sattilio  }
36185347Sattilio#else
37185347Sattilio#define SKIP_WHITESPACE() know(*input_line_pointer != ' ' )
38185347Sattilio#endif
39185347Sattilio
40185347Sattilio#define	LEX_NAME	(1)	/* may continue a name */
41185347Sattilio#define LEX_BEGIN_NAME	(2)	/* may begin a name */
42185347Sattilio#define LEX_END_NAME	(4)	/* ends a name */
43185347Sattilio
44185347Sattilio#define is_name_beginner(c) \
45185347Sattilio  ( lex_type[(unsigned char) (c)] & LEX_BEGIN_NAME )
46185347Sattilio#define is_part_of_name(c) \
47185347Sattilio  ( lex_type[(unsigned char) (c)] & LEX_NAME       )
48249375Sjoel#define is_name_ender(c) \
49185347Sattilio  ( lex_type[(unsigned char) (c)] & LEX_END_NAME   )
50185347Sattilio
51185347Sattilio#ifndef is_a_char
52185347Sattilio#define CHAR_MASK	(0xff)
53185347Sattilio#define NOT_A_CHAR	(CHAR_MASK+1)
54185347Sattilio#define is_a_char(c)	(((unsigned) (c)) <= CHAR_MASK)
55185347Sattilio#endif /* is_a_char() */
56185347Sattilio
57185347Sattilioextern char lex_type[];
58185347Sattilioextern char is_end_of_line[];
59185347Sattilio
60185347Sattilioextern int is_it_end_of_statement PARAMS ((void));
61185347Sattilio
62185347Sattilioextern int target_big_endian;
63185347Sattilio
64185347Sattilio/* These are initialized by the CPU specific target files (tc-*.c).  */
65185347Sattilioextern const char comment_chars[];
66185347Sattilioextern const char line_comment_chars[];
67185347Sattilioextern const char line_separator_chars[];
68185347Sattilio
69185347Sattilio/* Table of -I directories.  */
70185347Sattilioextern char **include_dirs;
71185347Sattilioextern int include_dir_count;
72185347Sattilioextern int include_dir_maxlen;
73185347Sattilio
74249375Sjoel/* The offset in the absolute section.  */
75185347Sattilioextern addressT abs_section_offset;
76249375Sjoel
77185347Sattilio/* The label on a line, used by some of the pseudo-ops.  */
78185347Sattilioextern symbolS *line_label;
79185347Sattilio
80185347Sattilio/* This is used to support MRI common sections.  */
81185347Sattilioextern symbolS *mri_common_symbol;
82185347Sattilio
83185347Sattilio/* True if a stabs line debug statement is currently being emitted.  */
84185347Sattilioextern int outputting_stabs_line_debug;
85185347Sattilio
86185347Sattilio/* Possible arguments to .linkonce.  */
87185347Sattilioenum linkonce_type {
88185347Sattilio  LINKONCE_UNSET = 0,
89205076Suqs  LINKONCE_DISCARD,
90185347Sattilio  LINKONCE_ONE_ONLY,
91185347Sattilio  LINKONCE_SAME_SIZE,
92185347Sattilio  LINKONCE_SAME_CONTENTS
93185347Sattilio};
94185347Sattilio
95185347Sattilio#define IGNORE_OPCODE_CASE
96185347Sattilio#ifdef  IGNORE_OPCODE_CASE
97185347Sattilioextern char original_case_string[];
98185347Sattilio#endif
99185347Sattilio
100185347Sattilioextern void pop_insert PARAMS ((const pseudo_typeS *));
101185347Sattilioextern unsigned int get_stab_string_offset
102185347Sattilio  PARAMS ((const char *string, const char *stabstr_secname));
103185347Sattilioextern void aout_process_stab PARAMS ((int, const char *, int, int, int));
104185347Sattilioextern char *demand_copy_C_string PARAMS ((int *len_pointer));
105185347Sattilioextern char get_absolute_expression_and_terminator
106185347Sattilio  PARAMS ((long *val_pointer));
107185347Sattilioextern offsetT get_absolute_expression PARAMS ((void));
108185347Sattilioextern unsigned int next_char_of_string PARAMS ((void));
109185347Sattilioextern void s_mri_sect PARAMS ((char *));
110extern char *mri_comment_field PARAMS ((char *));
111extern void mri_comment_end PARAMS ((char *, int));
112extern void add_include_dir PARAMS ((char *path));
113extern void cons PARAMS ((int nbytes));
114extern void demand_empty_rest_of_line PARAMS ((void));
115extern void emit_expr PARAMS ((expressionS *exp, unsigned int nbytes));
116extern void emit_leb128_expr PARAMS ((expressionS *, int));
117extern void equals PARAMS ((char *sym_name, int reassign));
118extern void float_cons PARAMS ((int float_type));
119extern void ignore_rest_of_line PARAMS ((void));
120extern void discard_rest_of_line PARAMS ((void));
121extern int output_leb128 PARAMS ((char *, valueT, int sign));
122extern void pseudo_set PARAMS ((symbolS * symbolP));
123extern void read_a_source_file PARAMS ((char *name));
124extern void read_begin PARAMS ((void));
125extern void read_print_statistics PARAMS ((FILE *));
126extern int sizeof_leb128 PARAMS ((valueT, int sign));
127extern void stabs_generate_asm_file PARAMS ((void));
128extern void stabs_generate_asm_lineno PARAMS ((void));
129extern void stabs_generate_asm_func PARAMS ((const char *, const char *));
130extern void stabs_generate_asm_endfunc PARAMS ((const char *, const char *));
131extern void do_repeat PARAMS((int,const char *,const char *));
132extern void end_repeat PARAMS((int));
133
134extern void generate_lineno_debug PARAMS ((void));
135
136extern void s_abort PARAMS ((int)) ATTRIBUTE_NORETURN;
137extern void s_align_bytes PARAMS ((int arg));
138extern void s_align_ptwo PARAMS ((int));
139extern void s_app_file PARAMS ((int));
140extern void s_app_line PARAMS ((int));
141extern void s_comm PARAMS ((int));
142extern void s_data PARAMS ((int));
143extern void s_desc PARAMS ((int));
144extern void s_else PARAMS ((int arg));
145extern void s_elseif PARAMS ((int arg));
146extern void s_end PARAMS ((int arg));
147extern void s_endif PARAMS ((int arg));
148extern void s_err PARAMS ((int));
149extern void s_fail PARAMS ((int));
150extern void s_fill PARAMS ((int));
151extern void s_float_space PARAMS ((int mult));
152extern void s_func PARAMS ((int));
153extern void do_s_func PARAMS ((int, const char *));
154extern void s_globl PARAMS ((int arg));
155extern void s_if PARAMS ((int arg));
156extern void s_ifc PARAMS ((int arg));
157extern void s_ifdef PARAMS ((int arg));
158extern void s_ifeqs PARAMS ((int arg));
159extern void s_ignore PARAMS ((int arg));
160extern void s_include PARAMS ((int arg));
161extern void s_irp PARAMS ((int arg));
162extern void s_lcomm PARAMS ((int needs_align));
163extern void s_lcomm_bytes PARAMS ((int needs_align));
164extern void s_leb128 PARAMS ((int sign));
165extern void s_linkonce PARAMS ((int));
166extern void s_lsym PARAMS ((int));
167extern void s_macro PARAMS ((int));
168extern void s_mexit PARAMS ((int));
169extern void s_mri PARAMS ((int));
170extern void s_mri_common PARAMS ((int));
171extern void s_org PARAMS ((int));
172extern void s_print PARAMS ((int));
173extern void s_purgem PARAMS ((int));
174extern void s_rept PARAMS ((int));
175extern void s_set PARAMS ((int));
176extern void s_space PARAMS ((int mult));
177extern void s_stab PARAMS ((int what));
178extern void s_struct PARAMS ((int));
179extern void s_text PARAMS ((int));
180extern void stringer PARAMS ((int append_zero));
181extern void s_xstab PARAMS ((int what));
182extern void s_rva PARAMS ((int));
183