read.h revision 77298
1218887Sdim/* read.h - of read.c
2218887Sdim   Copyright (C) 1986, 90, 92, 93, 94, 95, 96, 97, 2000
3218887Sdim   Free Software Foundation, Inc.
4218887Sdim
5218887Sdim   This file is part of GAS, the GNU Assembler.
6218887Sdim
7218887Sdim   GAS is free software; you can redistribute it and/or modify
8218887Sdim   it under the terms of the GNU General Public License as published by
9218887Sdim   the Free Software Foundation; either version 2, or (at your option)
10218887Sdim   any later version.
11218887Sdim
12218887Sdim   GAS is distributed in the hope that it will be useful,
13218887Sdim   but WITHOUT ANY WARRANTY; without even the implied warranty of
14252723Sdim   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15245431Sdim   GNU General Public License for more details.
16226890Sdim
17218887Sdim   You should have received a copy of the GNU General Public License
18218887Sdim   along with GAS; see the file COPYING.  If not, write to the Free
19218887Sdim   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
20218887Sdim   02111-1307, USA.  */
21218887Sdim
22218887Sdimextern char *input_line_pointer;	/* -> char we are parsing now.  */
23218887Sdim
24235633Sdim/* Define to make whitespace be allowed in many syntactically
25221345Sdim   unnecessary places.  Normally undefined.  For compatibility with
26221345Sdim   ancient GNU cc.  */
27218887Sdim/* #undef PERMIT_WHITESPACE */
28218887Sdim#define PERMIT_WHITESPACE
29218887Sdim
30226890Sdim#ifdef PERMIT_WHITESPACE
31218887Sdim#define SKIP_WHITESPACE()			\
32218887Sdim  {						\
33218887Sdim    if (* input_line_pointer == ' ')		\
34218887Sdim      ++ input_line_pointer;			\
35218887Sdim  }
36235633Sdim#else
37218887Sdim#define SKIP_WHITESPACE() know(*input_line_pointer != ' ' )
38235633Sdim#endif
39218887Sdim
40235633Sdim#define	LEX_NAME	(1)	/* may continue a name */
41218887Sdim#define LEX_BEGIN_NAME	(2)	/* may begin a name */
42218887Sdim#define LEX_END_NAME	(4)	/* ends a name */
43218887Sdim
44218887Sdim#define is_name_beginner(c) \
45235633Sdim  ( lex_type[(unsigned char) (c)] & LEX_BEGIN_NAME )
46218887Sdim#define is_part_of_name(c) \
47218887Sdim  ( lex_type[(unsigned char) (c)] & LEX_NAME       )
48218887Sdim#define is_name_ender(c) \
49218887Sdim  ( lex_type[(unsigned char) (c)] & LEX_END_NAME   )
50218887Sdim
51218887Sdim#ifndef is_a_char
52218887Sdim#define CHAR_MASK	(0xff)
53218887Sdim#define NOT_A_CHAR	(CHAR_MASK+1)
54226890Sdim#define is_a_char(c)	(((unsigned) (c)) <= CHAR_MASK)
55218887Sdim#endif /* is_a_char() */
56218887Sdim
57218887Sdimextern char lex_type[];
58218887Sdimextern char is_end_of_line[];
59218887Sdim
60218887Sdimextern int is_it_end_of_statement PARAMS ((void));
61218887Sdim
62235633Sdimextern int target_big_endian;
63252723Sdim
64252723Sdim/* These are initialized by the CPU specific target files (tc-*.c).  */
65252723Sdimextern const char comment_chars[];
66235633Sdimextern const char line_comment_chars[];
67235633Sdimextern const char line_separator_chars[];
68221345Sdim
69218887Sdim/* Table of -I directories.  */
70218887Sdimextern char **include_dirs;
71218887Sdimextern int include_dir_count;
72252723Sdimextern int include_dir_maxlen;
73218887Sdim
74218887Sdim/* The offset in the absolute section.  */
75218887Sdimextern addressT abs_section_offset;
76218887Sdim
77218887Sdim/* The label on a line, used by some of the pseudo-ops.  */
78218887Sdimextern symbolS *line_label;
79218887Sdim
80218887Sdim/* This is used to support MRI common sections.  */
81218887Sdimextern symbolS *mri_common_symbol;
82218887Sdim
83218887Sdim/* True if a stabs line debug statement is currently being emitted.  */
84245431Sdimextern int outputting_stabs_line_debug;
85235633Sdim
86218887Sdim/* Possible arguments to .linkonce.  */
87218887Sdimenum linkonce_type {
88218887Sdim  LINKONCE_UNSET = 0,
89218887Sdim  LINKONCE_DISCARD,
90218887Sdim  LINKONCE_ONE_ONLY,
91218887Sdim  LINKONCE_SAME_SIZE,
92235633Sdim  LINKONCE_SAME_CONTENTS
93218887Sdim};
94218887Sdim
95235633Sdim#define IGNORE_OPCODE_CASE
96235633Sdim#ifdef  IGNORE_OPCODE_CASE
97218887Sdimextern char original_case_string[];
98218887Sdim#endif
99218887Sdim
100235633Sdimextern void pop_insert PARAMS ((const pseudo_typeS *));
101252723Sdimextern unsigned int get_stab_string_offset
102218887Sdim  PARAMS ((const char *string, const char *stabstr_secname));
103218887Sdimextern void aout_process_stab PARAMS ((int, const char *, int, int, int));
104252723Sdimextern char *demand_copy_C_string PARAMS ((int *len_pointer));
105252723Sdimextern char get_absolute_expression_and_terminator
106252723Sdim  PARAMS ((long *val_pointer));
107252723Sdimextern offsetT get_absolute_expression PARAMS ((void));
108252723Sdimextern unsigned int next_char_of_string PARAMS ((void));
109252723Sdimextern void s_mri_sect PARAMS ((char *));
110235633Sdimextern char *mri_comment_field PARAMS ((char *));
111235633Sdimextern void mri_comment_end PARAMS ((char *, int));
112252723Sdimextern void add_include_dir PARAMS ((char *path));
113218887Sdimextern void cons PARAMS ((int nbytes));
114218887Sdimextern void demand_empty_rest_of_line PARAMS ((void));
115252723Sdimextern void emit_expr PARAMS ((expressionS *exp, unsigned int nbytes));
116245431Sdimextern void emit_leb128_expr PARAMS ((expressionS *, int));
117218887Sdimextern void equals PARAMS ((char *sym_name, int reassign));
118218887Sdimextern void float_cons PARAMS ((int float_type));
119218887Sdimextern void ignore_rest_of_line PARAMS ((void));
120218887Sdimextern void discard_rest_of_line PARAMS ((void));
121218887Sdimextern int output_leb128 PARAMS ((char *, valueT, int sign));
122218887Sdimextern void pseudo_set PARAMS ((symbolS * symbolP));
123218887Sdimextern void read_a_source_file PARAMS ((char *name));
124221345Sdimextern void read_begin PARAMS ((void));
125218887Sdimextern void read_print_statistics PARAMS ((FILE *));
126218887Sdimextern int sizeof_leb128 PARAMS ((valueT, int sign));
127218887Sdimextern void stabs_generate_asm_file PARAMS ((void));
128218887Sdimextern void stabs_generate_asm_lineno PARAMS ((void));
129218887Sdimextern void stabs_generate_asm_func PARAMS ((const char *, const char *));
130218887Sdimextern void stabs_generate_asm_endfunc PARAMS ((const char *, const char *));
131218887Sdimextern void do_repeat PARAMS((int,const char *,const char *));
132218887Sdimextern void end_repeat PARAMS((int));
133218887Sdim
134218887Sdimextern void generate_lineno_debug PARAMS ((void));
135218887Sdim
136218887Sdimextern void s_abort PARAMS ((int)) ATTRIBUTE_NORETURN;
137218887Sdimextern void s_align_bytes PARAMS ((int arg));
138218887Sdimextern void s_align_ptwo PARAMS ((int));
139218887Sdimextern void s_app_file PARAMS ((int));
140263509Sdimextern void s_app_line PARAMS ((int));
141263509Sdimextern void s_comm PARAMS ((int));
142263509Sdimextern void s_data PARAMS ((int));
143263509Sdimextern void s_desc PARAMS ((int));
144263509Sdimextern void s_else PARAMS ((int arg));
145263509Sdimextern void s_elseif PARAMS ((int arg));
146263509Sdimextern void s_end PARAMS ((int arg));
147263509Sdimextern void s_endif PARAMS ((int arg));
148263509Sdimextern void s_err PARAMS ((int));
149263509Sdimextern void s_fail PARAMS ((int));
150263509Sdimextern void s_fill PARAMS ((int));
151263509Sdimextern void s_float_space PARAMS ((int mult));
152263509Sdimextern void s_func PARAMS ((int));
153263509Sdimextern void do_s_func PARAMS ((int, const char *));
154263509Sdimextern void s_globl PARAMS ((int arg));
155263509Sdimextern void s_if PARAMS ((int arg));
156263509Sdimextern void s_ifc PARAMS ((int arg));
157263509Sdimextern void s_ifdef PARAMS ((int arg));
158263509Sdimextern void s_ifeqs PARAMS ((int arg));
159263509Sdimextern void s_ignore PARAMS ((int arg));
160263509Sdimextern void s_include PARAMS ((int arg));
161263509Sdimextern void s_irp PARAMS ((int arg));
162263509Sdimextern void s_lcomm PARAMS ((int needs_align));
163263509Sdimextern void s_lcomm_bytes PARAMS ((int needs_align));
164263509Sdimextern void s_leb128 PARAMS ((int sign));
165263509Sdimextern void s_linkonce PARAMS ((int));
166252723Sdimextern void s_lsym PARAMS ((int));
167218887Sdimextern void s_macro PARAMS ((int));
168218887Sdimextern void s_mexit PARAMS ((int));
169252723Sdimextern void s_mri PARAMS ((int));
170218887Sdimextern void s_mri_common PARAMS ((int));
171218887Sdimextern void s_org PARAMS ((int));
172252723Sdimextern void s_print PARAMS ((int));
173245431Sdimextern void s_purgem PARAMS ((int));
174218887Sdimextern void s_rept PARAMS ((int));
175218887Sdimextern void s_set PARAMS ((int));
176218887Sdimextern void s_space PARAMS ((int mult));
177218887Sdimextern void s_stab PARAMS ((int what));
178218887Sdimextern void s_struct PARAMS ((int));
179218887Sdimextern void s_text PARAMS ((int));
180218887Sdimextern void stringer PARAMS ((int append_zero));
181218887Sdimextern void s_xstab PARAMS ((int what));
182218887Sdimextern void s_rva PARAMS ((int));
183218887Sdim