diff options
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 5 | ||||
-rw-r--r-- | 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 <amodra@bigpond.net.au> + + PR ld/11006 + * lexsup.c (parse_args): Allow nested --start-group, --end-group. + 2009-11-27 Tristan Gingold <gingold@adacore.com> * 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) { |