diff options
author | Alan Modra <amodra@gmail.com> | 2001-09-19 06:58:06 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2001-09-19 06:58:06 +0000 |
commit | 3bcfb3e4bd58ff97f4a68952e1a6c1763b0e8ddc (patch) | |
tree | a3bd33def5a5597a5cb07a7dc8585ed9c36fe91f /binutils | |
parent | 8f6a59e5ff68ceea037f30ea6f0650a721cf9ab8 (diff) | |
download | gdb-3bcfb3e4bd58ff97f4a68952e1a6c1763b0e8ddc.zip gdb-3bcfb3e4bd58ff97f4a68952e1a6c1763b0e8ddc.tar.gz gdb-3bcfb3e4bd58ff97f4a68952e1a6c1763b0e8ddc.tar.bz2 |
* objcopy.c (copy_main): Correct rename-section string parsing.
Consolidate new_name parsing, and error messages.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/ChangeLog | 5 | ||||
-rw-r--r-- | binutils/objcopy.c | 44 |
2 files changed, 25 insertions, 24 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index e25add5..8039cc8 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2001-09-19 Alan Modra <amodra@bigpond.net.au> + + * objcopy.c (copy_main): Correct rename-section string parsing. + Consolidate new_name parsing, and error messages. + 2001-09-18 Bruno Haible <haible@clisp.cons.org> * addr2line.c: Don't include <ctype.h>. diff --git a/binutils/objcopy.c b/binutils/objcopy.c index 4be1d59..03ec035 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -2399,47 +2399,43 @@ copy_main (argc, argv) case OPTION_RENAME_SECTION: { flagword flags; - const char * s; - char * old_name; - char * new_name; + const char *eq, *fl; + char *old_name; + char *new_name; unsigned int len; - s = strchr (optarg, '='); - if (s == NULL) + eq = strchr (optarg, '='); + if (eq == NULL) fatal (_("bad format for %s"), "--rename-section"); - len = s - optarg; + len = eq - optarg; if (len == 0) - fatal (_("no old name is %s"), "--rename-section"); + fatal (_("bad format for %s"), "--rename-section"); old_name = (char *) xmalloc (len + 1); strncpy (old_name, optarg, len); old_name[len] = 0; - s = strchr (optarg + len, ','); - if (s) + eq++; + fl = strchr (eq, ','); + if (fl) { - unsigned int new_len; - - flags = parse_flags (s + 1); - new_len = s - (optarg + len); - if (new_len == 0) - fatal (_("no new name in %s"), "--rename-section"); - new_name = (char *) xmalloc (new_len + 1); - strncpy (new_name, optarg + len, new_len); - new_name [new_len] = 0; + flags = parse_flags (fl + 1); + len = fl - eq; } else { - s = optarg + len; - len = strlen (s); - if (len == 0) - fatal (_("no new name in %s"), "--rename-section"); - new_name = (char *) xmalloc (len + 1); - strcpy (new_name, s); flags = -1; + len = strlen (eq); } + if (len == 0) + fatal (_("bad format for %s"), "--rename-section"); + + new_name = (char *) xmalloc (len + 1); + strncpy (new_name, eq, len); + new_name[len] = 0; + add_section_rename (old_name, new_name, flags); } break; |