Updated Ukranian translations.
[deliverable/binutils-gdb.git] / ld / ldgram.y
index 36ccb5b28b7256d415db585d61499a7a6e1bc06c..ee8819660c22b6c3db2808ecb3a9bf23c89282f5 100644 (file)
@@ -1,6 +1,6 @@
 /* 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, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
    Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
 
@@ -129,7 +129,7 @@ static int error_index;
 %token <token> ALIGN_K BLOCK BIND QUAD SQUAD LONG SHORT BYTE
 %token SECTIONS PHDRS INSERT_K AFTER BEFORE
 %token DATA_SEGMENT_ALIGN DATA_SEGMENT_RELRO_END DATA_SEGMENT_END
-%token SORT_BY_NAME SORT_BY_ALIGNMENT
+%token SORT_BY_NAME SORT_BY_ALIGNMENT SORT_NONE
 %token SORT_BY_INIT_PRIORITY
 %token '{' '}'
 %token SIZEOF_HEADERS OUTPUT_FORMAT FORCE_COMMON_ALLOCATION OUTPUT_ARCH
@@ -146,7 +146,7 @@ static int error_index;
 %token STARTUP HLL SYSLIB FLOAT NOFLOAT NOCROSSREFS
 %token ORIGIN FILL
 %token LENGTH CREATE_OBJECT_SYMBOLS INPUT GROUP OUTPUT CONSTRUCTORS
-%token ALIGNMOD AT SUBALIGN PROVIDE PROVIDE_HIDDEN AS_NEEDED
+%token ALIGNMOD AT SUBALIGN HIDDEN PROVIDE PROVIDE_HIDDEN AS_NEEDED
 %type <token> assign_op atype attributes_opt sect_constraint
 %type <name>  filename
 %token CHIP LIST SECT ABSOLUTE  LOAD NEWLINE ENDWORD ORDER NAMEWORD ASSERT_K
@@ -386,17 +386,20 @@ input_list:
                { lang_add_input_file($2,lang_input_file_is_l_enum,
                                 (char *)NULL); }
        |       AS_NEEDED '('
-                 { $<integer>$ = add_DT_NEEDED_for_regular; add_DT_NEEDED_for_regular = TRUE; }
+                 { $<integer>$ = input_flags.add_DT_NEEDED_for_regular;
+                   input_flags.add_DT_NEEDED_for_regular = TRUE; }
                     input_list ')'
-                 { add_DT_NEEDED_for_regular = $<integer>3; }
+                 { input_flags.add_DT_NEEDED_for_regular = $<integer>3; }
        |       input_list ',' AS_NEEDED '('
-                 { $<integer>$ = add_DT_NEEDED_for_regular; add_DT_NEEDED_for_regular = TRUE; }
+                 { $<integer>$ = input_flags.add_DT_NEEDED_for_regular;
+                   input_flags.add_DT_NEEDED_for_regular = TRUE; }
                     input_list ')'
-                 { add_DT_NEEDED_for_regular = $<integer>5; }
+                 { input_flags.add_DT_NEEDED_for_regular = $<integer>5; }
        |       input_list AS_NEEDED '('
-                 { $<integer>$ = add_DT_NEEDED_for_regular; add_DT_NEEDED_for_regular = TRUE; }
+                 { $<integer>$ = input_flags.add_DT_NEEDED_for_regular;
+                   input_flags.add_DT_NEEDED_for_regular = TRUE; }
                     input_list ')'
-                 { add_DT_NEEDED_for_regular = $<integer>4; }
+                 { input_flags.add_DT_NEEDED_for_regular = $<integer>4; }
        ;
 
 sections:
@@ -464,6 +467,13 @@ wildcard_spec:
                          $$.exclude_name_list = NULL;
                          $$.section_flag_list = NULL;
                        }
+       |       SORT_NONE '(' wildcard_name ')'
+                       {
+                         $$.name = $3;
+                         $$.sorted = by_none;
+                         $$.exclude_name_list = NULL;
+                         $$.section_flag_list = NULL;
+                       }
        |       SORT_BY_NAME '(' SORT_BY_ALIGNMENT '(' wildcard_name ')' ')'
                        {
                          $$.name = $5;
@@ -629,7 +639,7 @@ input_section_spec_no_keep:
                          tmp.exclude_name_list = NULL;
                          tmp.sorted = none;
                          tmp.section_flag_list = $1;
-                         lang_add_wild (NULL, $3, ldgram_had_keep);
+                         lang_add_wild (&tmp, $3, ldgram_had_keep);
                        }
        |       wildcard_spec '(' file_NAME_list ')'
                        {
@@ -749,7 +759,7 @@ end:        ';' | ','
 assignment:
                NAME '=' mustbe_exp
                {
-                 lang_add_assignment (exp_assign ($1, $3));
+                 lang_add_assignment (exp_assign ($1, $3, FALSE));
                }
        |       NAME assign_op mustbe_exp
                {
@@ -757,7 +767,11 @@ assignment:
                                                   exp_binop ($2,
                                                              exp_nameop (NAME,
                                                                          $1),
-                                                             $3)));
+                                                             $3), FALSE));
+               }
+       |       HIDDEN '(' NAME '=' mustbe_exp ')'
+               {
+                 lang_add_assignment (exp_assign ($3, $5, TRUE));
                }
        |       PROVIDE '(' NAME '=' mustbe_exp ')'
                {
@@ -1075,7 +1089,7 @@ section:  NAME            { ldlex_expression(); }
                opt_exp_with_type
                {
                  ldlex_popstate ();
-                 lang_add_assignment (exp_assign (".", $3));
+                 lang_add_assignment (exp_assign (".", $3, FALSE));
                }
                '{' sec_or_group_p1 '}'
        |       INCLUDE filename
@@ -1219,7 +1233,7 @@ phdr_type:
                            {
                              einfo (_("\
 %X%P:%S: unknown phdr type `%s' (try integer literal)\n"),
-                                    s);
+                                    NULL, s);
                              $$ = exp_intop (0);
                            }
                        }
@@ -1242,7 +1256,8 @@ phdr_qualifiers:
                  else if (strcmp ($1, "FLAGS") == 0 && $2 != NULL)
                    $$.flags = $2;
                  else
-                   einfo (_("%X%P:%S: PHDRS syntax error at `%s'\n"), $1);
+                   einfo (_("%X%P:%S: PHDRS syntax error at `%s'\n"),
+                          NULL, $1);
                }
        |       AT '(' exp ')' phdr_qualifiers
                {
@@ -1448,9 +1463,9 @@ yyerror(arg)
 {
   if (ldfile_assumed_script)
     einfo (_("%P:%s: file format not recognized; treating as linker script\n"),
-          ldfile_input_filename);
+          ldlex_filename ());
   if (error_index > 0 && error_index < ERROR_NAME_MAX)
-     einfo ("%P%F:%S: %s in %s\n", arg, error_names[error_index-1]);
+    einfo ("%P%F:%S: %s in %s\n", NULL, arg, error_names[error_index - 1]);
   else
-     einfo ("%P%F:%S: %s\n", arg);
+    einfo ("%P%F:%S: %s\n", NULL, arg);
 }
This page took 0.025821 seconds and 4 git commands to generate.