mirror of
https://github.com/mirror/tinycc.git
synced 2025-02-26 08:00:09 +08:00
move global variables to libtcc.c
This commit is contained in:
parent
9dc9cbf319
commit
92204e8818
111
libtcc.c
111
libtcc.c
@ -20,6 +20,117 @@
|
||||
|
||||
#include "tcc.h"
|
||||
|
||||
/* parser */
|
||||
static struct BufferedFile *file;
|
||||
static int ch, tok;
|
||||
static CValue tokc;
|
||||
static CString tokcstr; /* current parsed string, if any */
|
||||
/* additional informations about token */
|
||||
static int tok_flags;
|
||||
#define TOK_FLAG_BOL 0x0001 /* beginning of line before */
|
||||
#define TOK_FLAG_BOF 0x0002 /* beginning of file before */
|
||||
#define TOK_FLAG_ENDIF 0x0004 /* a endif was found matching starting #ifdef */
|
||||
#define TOK_FLAG_EOF 0x0008 /* end of file */
|
||||
|
||||
static int *macro_ptr, *macro_ptr_allocated;
|
||||
static int *unget_saved_macro_ptr;
|
||||
static int unget_saved_buffer[TOK_MAX_SIZE + 1];
|
||||
static int unget_buffer_enabled;
|
||||
static int parse_flags;
|
||||
#define PARSE_FLAG_PREPROCESS 0x0001 /* activate preprocessing */
|
||||
#define PARSE_FLAG_TOK_NUM 0x0002 /* return numbers instead of TOK_PPNUM */
|
||||
#define PARSE_FLAG_LINEFEED 0x0004 /* line feed is returned as a
|
||||
token. line feed is also
|
||||
returned at eof */
|
||||
#define PARSE_FLAG_ASM_COMMENTS 0x0008 /* '#' can be used for line comment */
|
||||
#define PARSE_FLAG_SPACES 0x0010 /* next() returns space tokens (for -E) */
|
||||
|
||||
static Section *text_section, *data_section, *bss_section; /* predefined sections */
|
||||
static Section *cur_text_section; /* current section where function code is
|
||||
generated */
|
||||
#ifdef CONFIG_TCC_ASM
|
||||
static Section *last_text_section; /* to handle .previous asm directive */
|
||||
#endif
|
||||
/* bound check related sections */
|
||||
static Section *bounds_section; /* contains global data bound description */
|
||||
static Section *lbounds_section; /* contains local data bound description */
|
||||
/* symbol sections */
|
||||
static Section *symtab_section, *strtab_section;
|
||||
|
||||
/* debug sections */
|
||||
static Section *stab_section, *stabstr_section;
|
||||
|
||||
/* loc : local variable index
|
||||
ind : output code index
|
||||
rsym: return symbol
|
||||
anon_sym: anonymous symbol index
|
||||
*/
|
||||
static int rsym, anon_sym, ind, loc;
|
||||
/* expression generation modifiers */
|
||||
static int const_wanted; /* true if constant wanted */
|
||||
static int nocode_wanted; /* true if no code generation wanted for an expression */
|
||||
static int global_expr; /* true if compound literals must be allocated
|
||||
globally (used during initializers parsing */
|
||||
static CType func_vt; /* current function return type (used by return
|
||||
instruction) */
|
||||
static int func_vc;
|
||||
static int last_line_num, last_ind, func_ind; /* debug last line number and pc */
|
||||
static int tok_ident;
|
||||
static TokenSym **table_ident;
|
||||
static TokenSym *hash_ident[TOK_HASH_SIZE];
|
||||
static char token_buf[STRING_MAX_SIZE + 1];
|
||||
static char *funcname;
|
||||
static Sym *global_stack, *local_stack;
|
||||
static Sym *define_stack;
|
||||
static Sym *global_label_stack, *local_label_stack;
|
||||
/* symbol allocator */
|
||||
#define SYM_POOL_NB (8192 / sizeof(Sym))
|
||||
static Sym *sym_free_first;
|
||||
static void **sym_pools;
|
||||
static int nb_sym_pools;
|
||||
|
||||
static SValue vstack[VSTACK_SIZE], *vtop;
|
||||
/* some predefined types */
|
||||
static CType char_pointer_type, func_old_type, int_type;
|
||||
/* true if isid(c) || isnum(c) */
|
||||
static unsigned char isidnum_table[256-CH_EOF];
|
||||
|
||||
/* display some information during compilation */
|
||||
static int verbose = 0;
|
||||
|
||||
/* compile with debug symbol (and use them if error during execution) */
|
||||
static int do_debug = 0;
|
||||
|
||||
/* compile with built-in memory and bounds checker */
|
||||
static int do_bounds_check = 0;
|
||||
|
||||
/* display benchmark infos */
|
||||
#if !defined(LIBTCC)
|
||||
static int do_bench = 0;
|
||||
#endif
|
||||
static int total_lines;
|
||||
static int total_bytes;
|
||||
|
||||
/* use GNU C extensions */
|
||||
static int gnu_ext = 1;
|
||||
|
||||
/* use Tiny C extensions */
|
||||
static int tcc_ext = 1;
|
||||
|
||||
/* max number of callers shown if error */
|
||||
#ifdef CONFIG_TCC_BACKTRACE
|
||||
static int num_callers = 6;
|
||||
static const char **rt_bound_error_msg;
|
||||
#endif
|
||||
|
||||
/* XXX: get rid of this ASAP */
|
||||
static struct TCCState *tcc_state;
|
||||
|
||||
/* give the path of the tcc libraries */
|
||||
static const char *tcc_lib_path = CONFIG_TCCDIR;
|
||||
|
||||
|
||||
|
||||
#ifdef TCC_TARGET_I386
|
||||
#include "i386-gen.c"
|
||||
#endif
|
||||
|
109
tcc.h
109
tcc.h
@ -338,115 +338,6 @@ typedef struct CachedInclude {
|
||||
|
||||
#define CACHED_INCLUDES_HASH_SIZE 512
|
||||
|
||||
/* parser */
|
||||
static struct BufferedFile *file;
|
||||
static int ch, tok;
|
||||
static CValue tokc;
|
||||
static CString tokcstr; /* current parsed string, if any */
|
||||
/* additional informations about token */
|
||||
static int tok_flags;
|
||||
#define TOK_FLAG_BOL 0x0001 /* beginning of line before */
|
||||
#define TOK_FLAG_BOF 0x0002 /* beginning of file before */
|
||||
#define TOK_FLAG_ENDIF 0x0004 /* a endif was found matching starting #ifdef */
|
||||
#define TOK_FLAG_EOF 0x0008 /* end of file */
|
||||
|
||||
static int *macro_ptr, *macro_ptr_allocated;
|
||||
static int *unget_saved_macro_ptr;
|
||||
static int unget_saved_buffer[TOK_MAX_SIZE + 1];
|
||||
static int unget_buffer_enabled;
|
||||
static int parse_flags;
|
||||
#define PARSE_FLAG_PREPROCESS 0x0001 /* activate preprocessing */
|
||||
#define PARSE_FLAG_TOK_NUM 0x0002 /* return numbers instead of TOK_PPNUM */
|
||||
#define PARSE_FLAG_LINEFEED 0x0004 /* line feed is returned as a
|
||||
token. line feed is also
|
||||
returned at eof */
|
||||
#define PARSE_FLAG_ASM_COMMENTS 0x0008 /* '#' can be used for line comment */
|
||||
#define PARSE_FLAG_SPACES 0x0010 /* next() returns space tokens (for -E) */
|
||||
|
||||
static Section *text_section, *data_section, *bss_section; /* predefined sections */
|
||||
static Section *cur_text_section; /* current section where function code is
|
||||
generated */
|
||||
#ifdef CONFIG_TCC_ASM
|
||||
static Section *last_text_section; /* to handle .previous asm directive */
|
||||
#endif
|
||||
/* bound check related sections */
|
||||
static Section *bounds_section; /* contains global data bound description */
|
||||
static Section *lbounds_section; /* contains local data bound description */
|
||||
/* symbol sections */
|
||||
static Section *symtab_section, *strtab_section;
|
||||
|
||||
/* debug sections */
|
||||
static Section *stab_section, *stabstr_section;
|
||||
|
||||
/* loc : local variable index
|
||||
ind : output code index
|
||||
rsym: return symbol
|
||||
anon_sym: anonymous symbol index
|
||||
*/
|
||||
static int rsym, anon_sym, ind, loc;
|
||||
/* expression generation modifiers */
|
||||
static int const_wanted; /* true if constant wanted */
|
||||
static int nocode_wanted; /* true if no code generation wanted for an expression */
|
||||
static int global_expr; /* true if compound literals must be allocated
|
||||
globally (used during initializers parsing */
|
||||
static CType func_vt; /* current function return type (used by return
|
||||
instruction) */
|
||||
static int func_vc;
|
||||
static int last_line_num, last_ind, func_ind; /* debug last line number and pc */
|
||||
static int tok_ident;
|
||||
static TokenSym **table_ident;
|
||||
static TokenSym *hash_ident[TOK_HASH_SIZE];
|
||||
static char token_buf[STRING_MAX_SIZE + 1];
|
||||
static char *funcname;
|
||||
static Sym *global_stack, *local_stack;
|
||||
static Sym *define_stack;
|
||||
static Sym *global_label_stack, *local_label_stack;
|
||||
/* symbol allocator */
|
||||
#define SYM_POOL_NB (8192 / sizeof(Sym))
|
||||
static Sym *sym_free_first;
|
||||
static void **sym_pools;
|
||||
static int nb_sym_pools;
|
||||
|
||||
static SValue vstack[VSTACK_SIZE], *vtop;
|
||||
/* some predefined types */
|
||||
static CType char_pointer_type, func_old_type, int_type;
|
||||
/* true if isid(c) || isnum(c) */
|
||||
static unsigned char isidnum_table[256-CH_EOF];
|
||||
|
||||
/* display some information during compilation */
|
||||
static int verbose = 0;
|
||||
|
||||
/* compile with debug symbol (and use them if error during execution) */
|
||||
static int do_debug = 0;
|
||||
|
||||
/* compile with built-in memory and bounds checker */
|
||||
static int do_bounds_check = 0;
|
||||
|
||||
/* display benchmark infos */
|
||||
#if !defined(LIBTCC)
|
||||
static int do_bench = 0;
|
||||
#endif
|
||||
static int total_lines;
|
||||
static int total_bytes;
|
||||
|
||||
/* use GNU C extensions */
|
||||
static int gnu_ext = 1;
|
||||
|
||||
/* use Tiny C extensions */
|
||||
static int tcc_ext = 1;
|
||||
|
||||
/* max number of callers shown if error */
|
||||
#ifdef CONFIG_TCC_BACKTRACE
|
||||
static int num_callers = 6;
|
||||
static const char **rt_bound_error_msg;
|
||||
#endif
|
||||
|
||||
/* XXX: get rid of this ASAP */
|
||||
static struct TCCState *tcc_state;
|
||||
|
||||
/* give the path of the tcc libraries */
|
||||
static const char *tcc_lib_path = CONFIG_TCCDIR;
|
||||
|
||||
struct TCCState {
|
||||
int output_type;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user