X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=ld%2Fldgram.y;h=6c46c854473d63618c9416fbe0c32913f8558f1d;hb=d2259dd367eabe17588fcc008cdce792be2ec971;hp=17717fbbbb3dd8130f26ddfceac461ab7a77144e;hpb=5e2f15758b3831ad6fa9f8eee34dbefb689a8d68;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/ldgram.y b/ld/ldgram.y index 17717fbbbb..6c46c85447 100644 --- a/ld/ldgram.y +++ b/ld/ldgram.y @@ -386,6 +386,9 @@ statement_anywhere: ENTRY '(' NAME ')' { lang_add_entry ($3, FALSE); } | assignment end + | ASSERT_K {ldlex_expression ();} '(' exp ',' NAME ')' + { ldlex_popstate (); + lang_add_assignment (exp_assert ($4, $6)); } ; /* The '*' and '?' cases are there because the lexer returns them as @@ -801,6 +804,8 @@ exp : { $$ = exp_unop(ABSOLUTE, $3); } | ALIGN_K '(' exp ')' { $$ = exp_unop(ALIGN_K,$3); } + | ALIGN_K '(' exp ',' exp ')' + { $$ = exp_binop(ALIGN_K,$3,$5); } | DATA_SEGMENT_ALIGN '(' exp ',' exp ')' { $$ = exp_binop (DATA_SEGMENT_ALIGN, $3, $5); } | DATA_SEGMENT_END '(' exp ')' @@ -841,7 +846,7 @@ section: NAME { ldlex_expression(); } { lang_enter_output_section_statement($1, $3, sectype, - 0, 0, $5, $4); + 0, $5, $4); } statement_list_opt '}' { ldlex_popstate (); ldlex_expression (); }