aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
authorLinus Torvalds <torvalds@g5.osdl.org>2005-11-02 07:40:19 -0800
committerLinus Torvalds <torvalds@g5.osdl.org>2005-11-02 07:40:19 -0800
commit9e90d65e2527a2baca4867ef9648436abca4c41c (patch)
tree24b5383e3acf9d2d35bea7c7abcc46c2ee5b9bc0
parentfc8a7aa2be7e0f497278377945b390e64abde7ce (diff)
downloadsparse-dev-9e90d65e2527a2baca4867ef9648436abca4c41c.tar.gz
Handle symbols from "-include" file too
Noted by Mitesh Shah Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--check.c2
-rw-r--r--compile.c2
-rw-r--r--example.c2
-rw-r--r--lib.c12
-rw-r--r--lib.h2
-rw-r--r--obfuscate.c2
-rw-r--r--test-linearize.c2
-rw-r--r--test-parsing.c15
8 files changed, 26 insertions, 13 deletions
diff --git a/check.c b/check.c
index b67f860f..bbfac442 100644
--- a/check.c
+++ b/check.c
@@ -266,7 +266,7 @@ static void check_symbols(struct symbol_list *list)
int main(int argc, char **argv)
{
// Expand, linearize and show it.
- sparse_initialize(argc, argv);
+ check_symbols(sparse_initialize(argc, argv));
while (*argv)
check_symbols(sparse(argv));
return 0;
diff --git a/compile.c b/compile.c
index d8696b62..5c209f2b 100644
--- a/compile.c
+++ b/compile.c
@@ -39,7 +39,7 @@ int main(int argc, char **argv)
{
const char *filename;
- sparse_initialize(argc, argv);
+ clean_up_symbols(sparse_initialize(argc, argv));
while ((filename = *argv) != NULL) {
struct symbol_list *list;
const char *basename = strrchr(filename, '/');
diff --git a/example.c b/example.c
index 139f518a..7d0a0375 100644
--- a/example.c
+++ b/example.c
@@ -1958,7 +1958,7 @@ static int compile(struct symbol_list *list)
int main(int argc, char **argv)
{
- sparse_initialize(argc, argv);
+ compile(sparse_initialize(argc, argv));
while (*argv)
compile(sparse(argv));
return 0;
diff --git a/lib.c b/lib.c
index b61eb860..5a3f1e1a 100644
--- a/lib.c
+++ b/lib.c
@@ -560,7 +560,7 @@ static struct symbol_list *sparse_file(const char *filename)
* affect all subsequent files too, ie we can have non-local
* behaviour between files!
*/
-static void sparse_initial(void)
+static struct symbol_list *sparse_initial(void)
{
struct token *token;
@@ -572,13 +572,14 @@ static void sparse_initial(void)
// Prepend the initial built-in stream
token = tokenize_buffer(pre_buffer, pre_buffer_size, token);
- sparse_tokenstream(token);
+ return sparse_tokenstream(token);
}
-int sparse_initialize(int argc, char **argv)
+struct symbol_list *sparse_initialize(int argc, char **argv)
{
char **args;
int files = 0;
+ struct symbol_list *list;
// Initialize symbol stream first, so that we can add defines etc
init_symbols();
@@ -601,6 +602,7 @@ int sparse_initialize(int argc, char **argv)
argv[files++] = arg;
}
+ list = NULL;
argv[files] = NULL;
if (files) {
// Initialize type system
@@ -611,7 +613,7 @@ int sparse_initialize(int argc, char **argv)
if (!preprocess_only)
declare_builtin_functions();
- sparse_initial();
+ list = sparse_initial();
/*
* Protect the initial token allocations, since
@@ -619,7 +621,7 @@ int sparse_initialize(int argc, char **argv)
*/
protect_token_alloc();
}
- return files;
+ return list;
}
struct symbol_list * sparse(char **argv)
diff --git a/lib.h b/lib.h
index 40e8b015..94d63e27 100644
--- a/lib.h
+++ b/lib.h
@@ -81,7 +81,7 @@ extern int Wcast_to_address_space;
extern void declare_builtin_functions(void);
extern void create_builtin_stream(void);
-extern int sparse_initialize(int argc, char **argv);
+extern struct symbol_list *sparse_initialize(int argc, char **argv);
extern struct symbol_list *sparse(char **argv);
static inline int symbol_list_size(struct symbol_list* list)
diff --git a/obfuscate.c b/obfuscate.c
index 277c956c..1e10bf7a 100644
--- a/obfuscate.c
+++ b/obfuscate.c
@@ -49,7 +49,7 @@ static void emit_symbol_list(struct symbol_list *list)
int main(int argc, char **argv)
{
- sparse_initialize(argc, argv);
+ emit_symbol_list(sparse_initialize(argc, argv));
while (*argv)
emit_symbol_list(sparse(argv));
return 0;
diff --git a/test-linearize.c b/test-linearize.c
index 63ecdc71..ab6385b0 100644
--- a/test-linearize.c
+++ b/test-linearize.c
@@ -38,7 +38,7 @@ static void clean_up_symbols(struct symbol_list *list)
int main(int argc, char **argv)
{
- sparse_initialize(argc, argv);
+ clean_up_symbols(sparse_initialize(argc, argv));
while (*argv)
clean_up_symbols(sparse(argv));
return 0;
diff --git a/test-parsing.c b/test-parsing.c
index d2b95750..5aafae9b 100644
--- a/test-parsing.c
+++ b/test-parsing.c
@@ -34,9 +34,20 @@ static void clean_up_symbols(struct symbol_list *list)
int main(int argc, char **argv)
{
- sparse_initialize(argc, argv);
+ struct symbol_list * list;
+
+ list = sparse_initialize(argc, argv);
+
+ // Simplification
+ clean_up_symbols(list);
+
+#if 1
+ show_symbol_list(list, "\n\n");
+ printf("\n\n");
+#endif
+
while (*argv) {
- struct symbol_list *list = sparse(argv);
+ list = sparse(argv);
// Simplification
clean_up_symbols(list);