aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog4
-rw-r--r--ld/lexsup.c13
2 files changed, 13 insertions, 4 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 1965b47..4109d25 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,7 @@
+2000-07-08 Alan Modra <alan@linuxcare.com.au>
+
+ * lexsup.c (parse_args): Copy section name.
+
2000-07-07 Charles Wilson <cwilson@ece.gatech.edu>
* ld/emultempl/pe.em: institute the following search order for
diff --git a/ld/lexsup.c b/ld/lexsup.c
index 2869d49..a018f28 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 <something>=<somthing>... */
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: