summaryrefslogtreecommitdiff
path: root/binutils/objcopy.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2007-06-29 00:34:14 +0000
committerRoland McGrath <roland@gnu.org>2007-06-29 00:34:14 +0000
commitc1c0eb9e7bb0e0f57c126cc9968e4dcd5a5afd0f (patch)
tree888aa2c7ac6adfe3ccbadf90b10c42bb0091211f /binutils/objcopy.c
parentf66d1690c3b64c6a44239f58ab660819843c9087 (diff)
downloadbinutils-gdb-c1c0eb9e7bb0e0f57c126cc9968e4dcd5a5afd0f.tar.gz
2007-06-28 Roland McGrath <roland@frob.com>
* objcopy.c (setup_section): Don't reset ELF section type to SHT_NOBITS when it is SHT_NOTE. * doc/binutils.texi (objcopy, strip): Mention under --only-keep-debug.
Diffstat (limited to 'binutils/objcopy.c')
-rw-r--r--binutils/objcopy.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/binutils/objcopy.c b/binutils/objcopy.c
index ce751b5fd27..7c5b765f3a6 100644
--- a/binutils/objcopy.c
+++ b/binutils/objcopy.c
@@ -1071,7 +1071,7 @@ filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms,
}
if (!undefined
- && (flags & BSF_LOCAL)
+ && (flags & BSF_LOCAL)
&& is_specified_symbol (name, globalize_specific_list))
{
sym->flags &= ~ BSF_LOCAL;
@@ -1214,7 +1214,7 @@ add_redefine_syms_file (const char *filename)
if (buf[0] != '\0')
redefine_list_append (filename, &buf[0], &buf[outsym_off]);
- lineno++;
+ lineno++;
len = 0;
outsym_off = 0;
if (c == EOF)
@@ -2212,6 +2212,9 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
if (strip_symbols == STRIP_NONDEBUG
&& obfd->xvec->flavour == bfd_target_elf_flavour
&& (flags & SEC_ALLOC) != 0
+ && elf_section_type (osection) != SHT_NOTE
+ && (ibfd->xvec->flavour != bfd_target_elf_flavour
+ || elf_section_type (isection) != SHT_NOTE)
&& (p == NULL || !p->set_flags))
elf_section_type (osection) = SHT_NOBITS;
@@ -2721,7 +2724,7 @@ strip_main (int argc, char *argv[])
display_info ();
return 0;
}
-
+
if (show_version)
print_version ("strip");
@@ -2795,7 +2798,7 @@ copy_main (int argc, char *argv[])
char * binary_architecture = NULL;
char *input_filename = NULL;
char *output_filename = NULL;
- char *tmpname;
+ char *tmpname;
char *input_target = NULL;
char *output_target = NULL;
bfd_boolean show_version = FALSE;
@@ -3334,7 +3337,7 @@ copy_main (int argc, char *argv[])
display_info ();
return 0;
}
-
+
if (show_version)
print_version ("objcopy");
@@ -3389,7 +3392,7 @@ copy_main (int argc, char *argv[])
tmpname = make_tempname (input_filename);
else
tmpname = output_filename;
-
+
if (tmpname == NULL)
fatal (_("warning: could not create temporary file whilst copying '%s', (error: %s)"),
input_filename, strerror (errno));