From 20f3d0d667e035dcb12a142a86fd4b68360fd328 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 30 Nov 2009 00:27:45 +0000 Subject: [PATCH] PR ld/11006 * lexsup.c (parse_args): Allow nested --start-group, --end-group. --- ld/ChangeLog | 5 +++++ ld/lexsup.c | 14 +++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 3a0aa49..8b4d066 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2009-11-30 Alan Modra + + PR ld/11006 + * lexsup.c (parse_args): Allow nested --start-group, --end-group. + 2009-11-27 Tristan Gingold * pe-dll.c (pe_implied_import_dll): Return early if there is no diff --git a/ld/lexsup.c b/ld/lexsup.c index 20aef7b..b992fca 100644 --- a/ld/lexsup.c +++ b/ld/lexsup.c @@ -1459,18 +1459,15 @@ parse_args (unsigned argc, char **argv) command_line.accept_unknown_input_arch = FALSE; break; case '(': - if (ingroup) - einfo (_("%P%F: may not nest groups (--help for usage)\n")); - lang_enter_group (); - ingroup = 1; + ingroup++; break; case ')': if (! ingroup) einfo (_("%P%F: group ended before it began (--help for usage)\n")); lang_leave_group (); - ingroup = 0; + ingroup--; break; case OPTION_INIT: @@ -1501,8 +1498,11 @@ parse_args (unsigned argc, char **argv) } } - if (ingroup) - lang_leave_group (); + while (ingroup) + { + lang_leave_group (); + ingroup--; + } if (default_dirlist != NULL) { -- 2.7.4