From 227aeb075891eaf16367ca6dffc9967a326fb3c6 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sat, 8 Jul 2000 13:35:05 +0000 Subject: [PATCH] Fix --section-start=xxxx --- ld/ChangeLog | 4 ++++ ld/lexsup.c | 13 +++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 1965b47d611..4109d25c535 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 2869d494903..a018f28d95d 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: -- 2.30.2