read.h revision 60484
1144046Sjcamou/* read.h - of read.c
2144046Sjcamou   Copyright (C) 1986, 90, 92, 93, 94, 95, 96, 1997
3144046Sjcamou   Free Software Foundation, Inc.
4144046Sjcamou
5144046Sjcamou   This file is part of GAS, the GNU Assembler.
6144046Sjcamou
7144046Sjcamou   GAS is free software; you can redistribute it and/or modify
8144046Sjcamou   it under the terms of the GNU General Public License as published by
9144046Sjcamou   the Free Software Foundation; either version 2, or (at your option)
10144046Sjcamou   any later version.
11144046Sjcamou
12144046Sjcamou   GAS is distributed in the hope that it will be useful,
13144046Sjcamou   but WITHOUT ANY WARRANTY; without even the implied warranty of
14144046Sjcamou   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15144046Sjcamou   GNU General Public License for more details.
16144046Sjcamou
17144046Sjcamou   You should have received a copy of the GNU General Public License
18144046Sjcamou   along with GAS; see the file COPYING.  If not, write to
19144046Sjcamou   the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
20144046Sjcamou
21144046Sjcamouextern char *input_line_pointer;/* -> char we are parsing now. */
22144046Sjcamou
23144046Sjcamou#define PERMIT_WHITESPACE	/* Define to make whitespace be allowed in */
24144046Sjcamou/* many syntactically unnecessary places. */
25144046Sjcamou/* Normally undefined. For compatibility */
26144046Sjcamou/* with ancient GNU cc. */
27164752Sjoel/* #undef PERMIT_WHITESPACE */
28144046Sjcamou
29144046Sjcamou#ifdef PERMIT_WHITESPACE
30144046Sjcamou#define SKIP_WHITESPACE() {if (* input_line_pointer == ' ') ++ input_line_pointer;}
31144046Sjcamou#else
32144046Sjcamou#define SKIP_WHITESPACE() know(*input_line_pointer != ' ' )
33144046Sjcamou#endif
34152984Sjoel
35152984Sjoel
36152984Sjoel#define	LEX_NAME	(1)	/* may continue a name */
37144046Sjcamou#define LEX_BEGIN_NAME	(2)	/* may begin a name */
38144046Sjcamou#define LEX_END_NAME	(4)	/* ends a name */
39152984Sjoel
40152984Sjoel#define is_name_beginner(c) \
41152984Sjoel  ( lex_type[(unsigned char) (c)] & LEX_BEGIN_NAME )
42152984Sjoel#define is_part_of_name(c) \
43152984Sjoel  ( lex_type[(unsigned char) (c)] & LEX_NAME       )
44152984Sjoel#define is_name_ender(c) \
45152984Sjoel  ( lex_type[(unsigned char) (c)] & LEX_END_NAME   )
46152984Sjoel
47144046Sjcamou#ifndef is_a_char
48144046Sjcamou#define CHAR_MASK	(0xff)
49144046Sjcamou#define NOT_A_CHAR	(CHAR_MASK+1)
50144046Sjcamou#define is_a_char(c)	(((unsigned)(c)) <= CHAR_MASK)
51144046Sjcamou#endif /* is_a_char() */
52144046Sjcamou
53144046Sjcamouextern char lex_type[];
54144046Sjcamouextern char is_end_of_line[];
55164752Sjoel
56164752Sjoelextern int is_it_end_of_statement PARAMS ((void));
57164752Sjoel
58164752Sjoelextern int target_big_endian;
59164752Sjoel
60164752Sjoel/* These are initialized by the CPU specific target files (tc-*.c).  */
61164752Sjoelextern const char comment_chars[];
62164752Sjoelextern const char line_comment_chars[];
63164752Sjoelextern const char line_separator_chars[];
64164752Sjoel
65164752Sjoel/* Table of -I directories.  */
66164752Sjoelextern char **include_dirs;
67164752Sjoelextern int include_dir_count;
68164752Sjoelextern int include_dir_maxlen;
69169495Sbrueffer
70144046Sjcamou/* The offset in the absolute section.  */
71144046Sjcamouextern addressT abs_section_offset;
72144046Sjcamou
73144046Sjcamou/* The label on a line, used by some of the pseudo-ops.  */
74144046Sjcamouextern symbolS *line_label;
75144046Sjcamou
76144046Sjcamou/* This is used to support MRI common sections.  */
77144046Sjcamouextern symbolS *mri_common_symbol;
78144046Sjcamou
79144046Sjcamou/* Possible arguments to .linkonce.  */
80144046Sjcamouenum linkonce_type
81144046Sjcamou{
82144046Sjcamou  LINKONCE_UNSET = 0,
83144046Sjcamou  LINKONCE_DISCARD,
84144046Sjcamou  LINKONCE_ONE_ONLY,
85144046Sjcamou  LINKONCE_SAME_SIZE,
86158014Sbrueffer  LINKONCE_SAME_CONTENTS
87158014Sbrueffer};
88144046Sjcamou
89144046Sjcamouextern void pop_insert PARAMS ((const pseudo_typeS *));
90144046Sjcamouextern unsigned int get_stab_string_offset
91144046Sjcamou  PARAMS ((const char *string, const char *stabstr_secname));
92144046Sjcamouextern char *demand_copy_C_string PARAMS ((int *len_pointer));
93144046Sjcamouextern char get_absolute_expression_and_terminator
94144046Sjcamou  PARAMS ((long *val_pointer));
95144046Sjcamouextern offsetT get_absolute_expression PARAMS ((void));
96152890Sjoelextern unsigned int next_char_of_string PARAMS ((void));
97152890Sjoelextern void s_mri_sect PARAMS ((char *));
98267938Sbaptextern char *mri_comment_field PARAMS ((char *));
99144046Sjcamouextern void mri_comment_end PARAMS ((char *, int));
100147432Sruextern void add_include_dir PARAMS ((char *path));
101144046Sjcamouextern void cons PARAMS ((int nbytes));
102147432Sruextern void demand_empty_rest_of_line PARAMS ((void));
103144046Sjcamouextern void emit_expr PARAMS ((expressionS *exp, unsigned int nbytes));
104144046Sjcamouextern void emit_leb128_expr PARAMS ((expressionS *, int));
105144046Sjcamouextern void equals PARAMS ((char *sym_name, int reassign));
106extern void float_cons PARAMS ((int float_type));
107extern void ignore_rest_of_line PARAMS ((void));
108extern void discard_rest_of_line PARAMS ((void));
109extern int output_leb128 PARAMS ((char *, valueT, int sign));
110extern void pseudo_set PARAMS ((symbolS * symbolP));
111extern void read_a_source_file PARAMS ((char *name));
112extern void read_begin PARAMS ((void));
113extern void read_print_statistics PARAMS ((FILE *));
114extern int sizeof_leb128 PARAMS ((valueT, int sign));
115extern void stabs_generate_asm_file PARAMS ((void));
116extern void stabs_generate_asm_lineno PARAMS ((void));
117extern void stabs_generate_asm_func PARAMS ((const char *, const char *));
118extern void stabs_generate_asm_endfunc PARAMS ((const char *, const char *));
119extern void do_repeat PARAMS((int,const char *,const char *));
120extern void end_repeat PARAMS((int));
121
122extern void generate_lineno_debug PARAMS ((void));
123
124extern void s_abort PARAMS ((int));
125extern void s_align_bytes PARAMS ((int arg));
126extern void s_align_ptwo PARAMS ((int));
127extern void s_app_file PARAMS ((int));
128extern void s_app_line PARAMS ((int));
129extern void s_comm PARAMS ((int));
130extern void s_data PARAMS ((int));
131extern void s_desc PARAMS ((int));
132extern void s_else PARAMS ((int arg));
133extern void s_elseif PARAMS ((int arg));
134extern void s_end PARAMS ((int arg));
135extern void s_endif PARAMS ((int arg));
136extern void s_err PARAMS ((int));
137extern void s_fail PARAMS ((int));
138extern void s_fill PARAMS ((int));
139extern void s_float_space PARAMS ((int mult));
140extern void s_func PARAMS ((int));
141extern void do_s_func PARAMS ((int, const char *));
142extern void s_globl PARAMS ((int arg));
143extern void s_if PARAMS ((int arg));
144extern void s_ifc PARAMS ((int arg));
145extern void s_ifdef PARAMS ((int arg));
146extern void s_ifeqs PARAMS ((int arg));
147extern void s_ignore PARAMS ((int arg));
148extern void s_include PARAMS ((int arg));
149extern void s_irp PARAMS ((int arg));
150extern void s_lcomm PARAMS ((int needs_align));
151extern void s_lcomm_bytes PARAMS ((int needs_align));
152extern void s_leb128 PARAMS ((int sign));
153extern void s_linkonce PARAMS ((int));
154extern void s_lsym PARAMS ((int));
155extern void s_macro PARAMS ((int));
156extern void s_mexit PARAMS ((int));
157extern void s_mri PARAMS ((int));
158extern void s_mri_common PARAMS ((int));
159extern void s_org PARAMS ((int));
160extern void s_print PARAMS ((int));
161extern void s_purgem PARAMS ((int));
162extern void s_rept PARAMS ((int));
163extern void s_set PARAMS ((int));
164extern void s_space PARAMS ((int mult));
165extern void s_stab PARAMS ((int what));
166extern void s_struct PARAMS ((int));
167extern void s_text PARAMS ((int));
168extern void stringer PARAMS ((int append_zero));
169extern void s_xstab PARAMS ((int what));
170extern void s_rva PARAMS ((int));
171
172/* end of read.h */
173