Add missing prototypes
[deliverable/binutils-gdb.git] / ld / ldgram.y
index 2c4047897eafe493e4eb40e575956b539f16a346..a823bab76863d01732a2197176bb114b9ee9be64 100644 (file)
@@ -1,6 +1,6 @@
-/* A YACC grammer to parse a superset of the AT&T linker scripting languaue.
-   Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000
-   Free Software Foundation, Inc.
+/* A YACC grammar to parse a superset of the AT&T linker scripting language.
+   Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+   2001 Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
 
 This file is part of GNU ld.
@@ -49,9 +49,8 @@ static enum section_type sectype;
 
 lang_memory_region_type *region;
 
-struct wildcard_spec current_file;
 boolean ldgram_want_filename = true;
-boolean had_script = false;
+FILE *  saved_script_handle = NULL;
 boolean force_make_executable = false;
 
 boolean ldgram_in_script = false;
@@ -70,6 +69,7 @@ static int error_index;
   char *name;
   const char *cname;
   struct wildcard_spec wildcard;
+  struct wildcard_list *wildcard_list;
   struct name_list *name_list;
   int token;
   union etree_union *etree;
@@ -91,6 +91,7 @@ static int error_index;
 %type <etree> opt_exp_without_type
 %type <integer> fill_opt
 %type <name_list> exclude_name_list
+%type <wildcard_list> file_NAME_list
 %type <name> memspec_opt casesymlist
 %type <name> memspec_at_opt
 %type <cname> wildcard_name
@@ -417,8 +418,6 @@ wildcard_spec:
                        }
        ;
 
-
-
 exclude_name_list:
                exclude_name_list wildcard_name
                        {
@@ -440,42 +439,42 @@ exclude_name_list:
        ;
 
 file_NAME_list:
-               wildcard_spec
+               file_NAME_list opt_comma wildcard_spec
                        {
-                         lang_add_wild ($1.name, $1.sorted,
-                                        current_file.name,
-                                        current_file.sorted,
-                                        ldgram_had_keep, $1.exclude_name_list);
+                         struct wildcard_list *tmp;
+                         tmp = (struct wildcard_list *) xmalloc (sizeof *tmp);
+                         tmp->next = $1;
+                         tmp->spec = $3;
+                         $$ = tmp;
                        }
-       |       file_NAME_list opt_comma wildcard_spec
+       |
+               wildcard_spec
                        {
-                         lang_add_wild ($3.name, $3.sorted,
-                                        current_file.name,
-                                        current_file.sorted,
-                                        ldgram_had_keep, $3.exclude_name_list);
+                         struct wildcard_list *tmp;
+                         tmp = (struct wildcard_list *) xmalloc (sizeof *tmp);
+                         tmp->next = NULL;
+                         tmp->spec = $1;
+                         $$ = tmp;
                        }
        ;
 
 input_section_spec_no_keep:
                NAME
                        {
-                         lang_add_wild (NULL, false, $1, false,
-                                        ldgram_had_keep, NULL);
+                         struct wildcard_spec tmp;
+                         tmp.name = $1;
+                         tmp.exclude_name_list = NULL;
+                         tmp.sorted = false;
+                         lang_add_wild (&tmp, NULL, ldgram_had_keep);
                        }
-        |      '['
+        |      '[' file_NAME_list ']'
                        {
-                         current_file.name = NULL;
-                         current_file.sorted = false;
+                         lang_add_wild (NULL, $2, ldgram_had_keep);
                        }
-               file_NAME_list ']'
-       |       wildcard_spec
+       |       wildcard_spec '(' file_NAME_list ')'
                        {
-                         current_file = $1;
-                         /* '*' matches any file name.  */
-                         if (strcmp (current_file.name, "*") == 0)
-                           current_file.name = NULL;
+                         lang_add_wild (&$1, $3, ldgram_had_keep);
                        }
-               '(' file_NAME_list ')'
        ;
 
 input_section_spec:
This page took 0.024799 seconds and 4 git commands to generate.