*** empty log message ***
[deliverable/binutils-gdb.git] / ld / ldgram.y
index 741a02fbc245c0091081ed12a19ef2136b3d1a8c..8bde4e4babb9c96c0d08e9661499ad7c667d6eb0 100644 (file)
@@ -33,7 +33,8 @@ extern boolean write_map;
 
 boolean hex_mode;
 
-
+strip_symbols_type strip_symbols=STRIP_NONE;
+discard_locals_type discard_locals=DISCARD_NONE;
 
 
 lang_memory_region_type *region;
@@ -59,9 +60,9 @@ char *current_file;
 boolean ldgram_want_filename = true;
 boolean had_script = false;
 boolean force_make_executable = false;
-boolean ldgram_in_expression = false;
+
 boolean ldgram_in_script = false;
-boolean ldgram_in_defsym = false;
+boolean ldgram_had_equals = false;
 /* LOCALS */
 
 
@@ -94,7 +95,7 @@ boolean ldgram_in_defsym = false;
 %token <name> NAME
 %type  <integer> length
 
-%right <token> PLUSEQ MINUSEQ MULTEQ DIVEQ  '=' LSHIFTEQ RSHIFTEQ ANDEQ OREQ
+%right <token> PLUSEQ MINUSEQ MULTEQ DIVEQ  '=' LSHIFTEQ RSHIFTEQ   ANDEQ OREQ 
 %right <token> '?' ':'
 %left <token> OROR
 %left <token>  ANDAND
@@ -111,7 +112,7 @@ boolean ldgram_in_defsym = false;
 %token <token> ALIGN_K BLOCK LONG SHORT BYTE
 %token SECTIONS  
 %token '{' '}'
-%token ALIGNMENT SIZEOF_HEADERS
+%token ALIGNMENT SIZEOF_HEADERS OUTPUT_FORMAT FORCE_COMMON_ALLOCATION OUTPUT_ARCH
 %token NEXT SIZEOF ADDR  SCRIPT ENDSCRIPT
 %token MEMORY 
 %token DSECT NOLOAD COPY INFO OVERLAY 
@@ -119,8 +120,8 @@ boolean ldgram_in_defsym = false;
 %token OPTION_e OPTION_c OPTION_noinhibit_exec OPTION_s OPTION_S
 %token OPTION_format  OPTION_F OPTION_u
 
-%token OPTION_d OPTION_dc OPTION_dp OPTION_x OPTION_X
-%token OPTION_v OPTION_M OPTION_t STARTUP HLL SYSLIB FLOAT NOFLOAT OPTION_defsym
+%token OPTION_d OPTION_dc OPTION_dp OPTION_x OPTION_X OPTION_defsym
+%token OPTION_v OPTION_M OPTION_t STARTUP HLL SYSLIB FLOAT NOFLOAT 
 %token OPTION_n OPTION_r OPTION_o OPTION_b  OPTION_A OPTION_R
 %token <name> OPTION_l OPTION_L  OPTION_T OPTION_Aarch OPTION_Tfile  OPTION_Texp
 %token OPTION_Ur 
@@ -150,7 +151,11 @@ command_line:
        ;
 
 command_line_option:
-               SCRIPT ifile_list ENDSCRIPT
+               '{'
+                       { ldgram_in_script = true; }
+               ifile_list 
+                       { ldgram_in_script = false; }
+               '}'
        |       OPTION_v
                        {       
                        ldversion();
@@ -274,14 +279,11 @@ command_line_option:
                        }
        |       OPTION_defsym 
                        {
-                       ldgram_in_defsym = true;
-                       ldgram_in_expression = true;    
-
                        }
-                        assignment
+               NAME     '='
+               exp_head 
                        {
-                       ldgram_in_defsym = false;
-                       ldgram_in_expression = false;
+                       lang_add_assignment(exp_assop($4,$3,$5));
                        }       
        | '-' NAME
                 { info("%P%F Unrecognised option -%s\n", $2);  }
@@ -297,7 +299,7 @@ command_line_option:
 
 script_file:
        { ldgram_in_script = true; }
-       ifile_list ENDSCRIPT
+       ifile_list '}'
         { ldgram_in_script = false; }
 
         ;
@@ -305,7 +307,7 @@ script_file:
 
 ifile_list:
        ifile_list ifile_p1 
-  |
+        |
        ;
 
 
@@ -317,13 +319,19 @@ ifile_p1:
        |       high_level_library
        |       low_level_library
        |       floating_point_support
-       |       assignment end
+       |       statement_anywhere
        |       TARGET_K '(' NAME ')'
                { lang_add_target($3); }
        |       SEARCH_DIR '(' filename ')'
                { ldfile_add_library_path($3); }
        |       OUTPUT '(' filename ')'
                { lang_add_output($3); }
+        |       OUTPUT_FORMAT '(' NAME ')'
+                 { lang_add_output_format($3); }
+        |       OUTPUT_ARCH '(' NAME ')'
+                 { ldfile_set_output_arch($3); }
+       |       FORCE_COMMON_ALLOCATION
+               { command_line.force_common_definition = true ; }
        |       INPUT '(' input_list ')'
        |       MAP '(' filename ')'
                { lang_add_map($3); }
@@ -390,7 +398,9 @@ input_section_spec:
 statement:
                statement assignment end
        |       statement CREATE_OBJECT_SYMBOLS
-               { lang_add_attribute(lang_object_symbols_statement_enum); }
+               {
+                 lang_add_attribute(lang_object_symbols_statement_enum); }
+
        |       statement input_section_spec
         |       statement length '(' exp_head ')'
                        {
@@ -643,14 +653,7 @@ opt_things:
        ;
 
 exp_head:
-               { 
-               ldgram_in_expression = true; 
-               }
-       exp
-               {
-               ldgram_in_expression = false; 
-               $$ = $2;
-               }
+       exp { $$ = $1; }
        ;
 
 opt_exp:
This page took 0.027927 seconds and 4 git commands to generate.