Mercurial > hg > qcc
diff tinycc.h @ 554:8c020de0af57
Fix earlier options.c break-up by migrating some stuff from tcc.h to tinycc.h.
(This means i386-tinycc can once again rebuild itself without segfaulting.)
author | Rob Landley <rob@landley.net> |
---|---|
date | Thu, 06 Mar 2008 20:53:55 -0600 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tinycc.h Thu Mar 06 20:53:55 2008 -0600 @@ -0,0 +1,93 @@ +#include "libtinycc.h" + +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +#include <sys/time.h> +#include <time.h> + +// Data type for dynamic resizeable arrays +struct dynarray { + char **data; + int len; +}; + +// All these tccg_ things can be grouped into a structure, but not until after +// they're broken out of TCCState and moved over. + +// Warning switches + +int tccg_warn_unsupported; +int tccg_warn_write_strings; +int tccg_warn_error; +int tccg_warn_implicit_function_declaration; +int tccg_warn_none; + +// C language options + +int tccg_char_is_unsigned; +int tccg_leading_underscore; + +// Don't merge identical symbols in .bss segment, error instead. +int tccg_nocommon; + +// if true, describe each room as you enter it, unless it contains a grue +int tccg_verbose; + +// Include file handling +struct dynarray tccg_include_paths; +struct dynarray tccg_library_paths; + +int tccg_output_type; +int tccg_output_format;// TCC_OUTPUT_FORMAT_xxx +int tccg_static_link; // Perform static linking? +int tccg_nostdinc; // If true, no standard headers are added. +int tccg_nostdlib; // If true, no standard libraries are added. +int tccg_rdynamic; // Export all symbols. + +unsigned long tccg_text_addr; // Address of text section. +int tccg_has_text_addr; + +FILE *tccg_outfile; // Output file for preprocessing. + +// Functions from elsewhere. + +void error(char *fmt, ...); +void *xmalloc(unsigned long size); +void dynarray_add(void ***ptab, int *nb_ptr, void *data); +void add_dynarray_path(TCCState *s, char *pathname, struct dynarray *dd); +int strstart(char *str, char *val, char **ptr); +void warning(char *fmt, ...); +int init_output_type(TCCState *s); +char *pstrcpy(char *buf, int buf_size, char *s); +int tcc_add_file_internal(TCCState *s, char *filename, int flags); + +extern char *tinycc_path; + +#ifndef offsetof +#define offsetof(type, field) ((size_t) &((type *)0)->field) +#endif + +#ifndef countof +#define countof(tab) (sizeof(tab) / sizeof((tab)[0])) +#endif + +// This token begins a word/line/file +#define TOK_FLAG_BOW 0x0001 +#define TOK_FLAG_BOL 0x0002 +#define TOK_FLAG_BOF 0x0004 + +// Add file flags (passed to tcc_add_file_internal()) +#define AFF_PRINT_ERROR 0x0001 // print error if file not found +#define AFF_PREPROCESS 0x0004 // preprocess file + +// First identifier token +#define TOK_IDENT 256 // First identifier/string token. + +// This should come from dlfcn.h but doesn't unless you claim to be written +// by the fsf, which we aren't. +#define RTLD_DEFAULT 0 + +int is_space(int ch);