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