2 * Parse and linearize the tree for testing.
4 * Copyright (C) 2003 Transmeta Corp.
5 * 2003-2004 Linus Torvalds
7 * Licensed under the Open Software License version 1.1
21 #include "expression.h"
22 #include "linearize.h"
24 static void clean_up_symbol(struct symbol
*sym
, void *_parent
, int flags
)
26 struct entrypoint
*ep
;
28 check_duplicates(sym
);
31 ep
= linearize_symbol(sym
);
36 int main(int argc
, char **argv
)
39 char *filename
= NULL
, **args
;
42 // Initialize symbol stream first, so that we can add defines etc
45 create_builtin_stream();
46 add_pre_buffer("#define __CHECKER__ 1\n");
47 add_pre_buffer("extern void *__builtin_memcpy(void *, const void *, unsigned long);\n");
48 add_pre_buffer("extern void * __builtin_return_address(int);\n");
56 args
= handle_switch(arg
+1, args
);
62 // Initialize type system
65 fd
= open(filename
, O_RDONLY
);
67 die("No such file: %s", filename
);
69 // Tokenize the input stream
70 token
= tokenize(filename
, fd
, NULL
);
73 // Prepend any "include" file to the stream.
75 token
= tokenize(include
, include_fd
, token
);
77 // Prepend the initial built-in stream
78 token
= tokenize_buffer(pre_buffer
, pre_buffer_size
, token
);
80 // Pre-process the stream
81 token
= preprocess(token
);
83 // Parse the resulting C code
84 translation_unit(token
, &used_list
);
86 // Do type evaluation and simplify
87 symbol_iterate(used_list
, clean_up_symbol
, NULL
);