Check .gnu.warning section in shared library
[deliverable/binutils-gdb.git] / ld / ldgram.y
index 923ac0f8f44154c51ed6bce712820d9cfd1f89c8..26cb6772995743224e17ae5601c332857ab77016 100644 (file)
@@ -1,7 +1,5 @@
 /* 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, 2012
-   Free Software Foundation, Inc.
+   Copyright 1991-2013 Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
 
    This file is part of the GNU Binutils.
@@ -129,7 +127,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,15 +144,15 @@ 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
-%type <token> assign_op atype attributes_opt sect_constraint
+%token ALIGNMOD AT SUBALIGN HIDDEN PROVIDE PROVIDE_HIDDEN AS_NEEDED
+%type <token> assign_op atype attributes_opt sect_constraint opt_align_with_input
 %type <name>  filename
 %token CHIP LIST SECT ABSOLUTE  LOAD NEWLINE ENDWORD ORDER NAMEWORD ASSERT_K
 %token FORMAT PUBLIC DEFSYMEND BASE ALIAS TRUNCATE REL
 %token INPUT_SCRIPT INPUT_MRI_SCRIPT INPUT_DEFSYM CASE EXTERN START
 %token <name> VERS_TAG VERS_IDENTIFIER
 %token GLOBAL LOCAL VERSIONK INPUT_VERSION_SCRIPT
-%token KEEP ONLY_IF_RO ONLY_IF_RW SPECIAL INPUT_SECTION_FLAGS
+%token KEEP ONLY_IF_RO ONLY_IF_RW SPECIAL INPUT_SECTION_FLAGS ALIGN_WITH_INPUT
 %token EXCLUDE_FILE
 %token CONSTANT
 %type <versyms> vers_defns
@@ -467,6 +465,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;
@@ -752,7 +757,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
                {
@@ -760,7 +765,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 ')'
                {
@@ -1019,6 +1028,11 @@ opt_align:
        |       { $$ = 0; }
        ;
 
+opt_align_with_input:
+               ALIGN_WITH_INPUT { $$ = ALIGN_WITH_INPUT; }
+       |       { $$ = 0; }
+       ;
+
 opt_subalign:
                SUBALIGN '(' exp ')' { $$ = $3; }
        |       { $$ = 0; }
@@ -1035,20 +1049,21 @@ section:        NAME            { ldlex_expression(); }
                opt_exp_with_type
                opt_at
                opt_align
+               opt_align_with_input
                opt_subalign    { ldlex_popstate (); ldlex_script (); }
                sect_constraint
                '{'
                        {
                          lang_enter_output_section_statement($1, $3,
                                                              sectype,
-                                                             $5, $6, $4, $8);
+                                                             $5, $7, $4, $9, $6);
                        }
                statement_list_opt
                '}' { ldlex_popstate (); ldlex_expression (); }
                memspec_opt memspec_at_opt phdr_opt fill_opt
                {
                  ldlex_popstate ();
-                 lang_leave_output_section_statement ($17, $14, $16, $15);
+                 lang_leave_output_section_statement ($18, $15, $17, $16);
                }
                opt_comma
                {}
@@ -1078,7 +1093,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
This page took 0.025252 seconds and 4 git commands to generate.