diff --git a/ld/ChangeLog b/ld/ChangeLog index 1965b47d61..4109d25c53 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,7 @@ +2000-07-08 Alan Modra + + * lexsup.c (parse_args): Copy section name. + 2000-07-07 Charles Wilson * ld/emultempl/pe.em: institute the following search order for diff --git a/ld/lexsup.c b/ld/lexsup.c index 2869d49490..a018f28d95 100644 --- a/ld/lexsup.c +++ b/ld/lexsup.c @@ -847,6 +847,8 @@ parse_args (argc, argv) case OPTION_SECTION_START: { char *optarg2; + char *sec_name; + int len; /* Check for =... */ optarg2 = strchr (optarg, '='); @@ -869,12 +871,15 @@ parse_args (argc, argv) xexit (1); } - optarg2[-1] = '\0'; + /* We must copy the section name as set_section_start + doesn't do it for us. */ + len = optarg2 - optarg; + sec_name = xmalloc (len); + memcpy (sec_name, optarg, len - 1); + sec_name[len - 1] = 0; /* Then set it... */ - set_section_start (optarg, optarg2); - - optarg2[-1] = '='; + set_section_start (sec_name, optarg2); } break; case OPTION_TBSS: