From 782d79636ddeb80ecbf5e1503b6627b3d0fd3b0c Mon Sep 17 00:00:00 2001 From: Per Bothner Date: Mon, 18 Nov 1991 08:04:14 +0000 Subject: [PATCH] * Makefile.in: Bump to version 1.92. * version.c, Makefile.in: Get version string from Makefile. * copy.c, is-strip.c, not-strip.c, maybe-strip.c, Makefile.in: Make the same change that we earlier did for ar/ranlib: Generate two different binaries for strip and copy and use a global variable with different values to distinguish ostrip from copy. (-1 means to use argv[0] to decide, so you can get the old behavior, but it is no longer the default). * copy.c (copy_file): Set EXEC_P of output bfd if input is so. * copy.c (main): If is_strip==-1, compare last 5 chars of argv[0], not the whole path. * copy.c (main): Return 0, not 1. * copy.c (setup_sections): Fix due to change in bfd_make_section now failing if asked for a duplicate section. * strip.c, ostrip.c: Removed obsolete files. * ar.c, not-ranlib.c, maybe-ranlib.c: Change encoding of is_ranlib variable to be consistent with is_strip for strip.copy (i.e -1 to means use argv[0]). --- binutils/.Sanitize | 27 ++++++++++++++++++++++++--- binutils/ChangeLog | 29 +++++++++++++++++++++++++++++ binutils/copy.c | 30 +++++++++++++++++++++--------- 3 files changed, 74 insertions(+), 12 deletions(-) diff --git a/binutils/.Sanitize b/binutils/.Sanitize index e65e4326637..9230ac3989f 100644 --- a/binutils/.Sanitize +++ b/binutils/.Sanitize @@ -41,6 +41,9 @@ strip.1 is-ranlib.c not-ranlib.c maybe-ranlib.c +is-strip.c +not-strip.c +maybe-strip.c binutils.texi bucomm.c configure.in @@ -53,12 +56,10 @@ i960-pinsn.c m68k-pinsn.c nm.c objdump.c -ostrip.c ranlib.sh README size.c sparc-pinsn.c -strip.c version.c Do-last: @@ -68,7 +69,27 @@ echo Done in `pwd`. # # # $Log$ -# Revision 1.10 1991/11/15 23:34:33 pesch +# Revision 1.11 1991/11/18 08:04:14 bothner +# * Makefile.in: Bump to version 1.92. +# * version.c, Makefile.in: Get version string from Makefile. +# * copy.c, is-strip.c, not-strip.c, maybe-strip.c, Makefile.in: +# Make the same change that we earlier did for ar/ranlib: +# Generate two different binaries for strip and copy and use +# a global variable with different values to distinguish +# ostrip from copy. (-1 means to use argv[0] to decide, +# so you can get the old behavior, but it is no longer the default). +# * copy.c (copy_file): Set EXEC_P of output bfd if input is so. +# * copy.c (main): If is_strip==-1, compare last 5 chars +# of argv[0], not the whole path. +# * copy.c (main): Return 0, not 1. +# * copy.c (setup_sections): Fix due to change in bfd_make_section +# now failing if asked for a duplicate section. +# * strip.c, ostrip.c: Removed obsolete files. +# * ar.c, not-ranlib.c, maybe-ranlib.c: +# Change encoding of is_ranlib variable to be consistent +# with is_strip for strip.copy (i.e -1 to means use argv[0]). +# +# Revision 1.10 1991/11/15 23:34:33 pesch # .Sanitize: reflect someone's apocopation of binutils.texi[nfo] name # Makefile.in: improve texi2roff workarounds # diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 1f5aa29b476..86027725e31 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,32 @@ +Sun Nov 17 23:40:59 1991 Per Bothner (bothner at cygnus.com) + + * Makefile.in: Bump to version 1.92. + * version.c, Makefile.in: Get version string from Makefile. + * copy.c, is-strip.c, not-strip.c, maybe-strip.c, Makefile.in: + Make the same change that we earlier did for ar/ranlib: + Generate two different binaries for strip and copy and use + a global variable with different values to distinguish + ostrip from copy. (-1 means to use argv[0] to decide, + so you can get the old behavior, but it is no longer the default). + * copy.c (copy_file): Set EXEC_P of output bfd if input is so. + * copy.c (main): If is_strip==-1, compare last 5 chars + of argv[0], not the whole path. + * copy.c (main): Return 0, not 1. + * copy.c (setup_sections): Fix due to change in bfd_make_section + now failing if asked for a duplicate section. + * strip.c, ostrip.c: Removed obsolete files. + * ar.c, not-ranlib.c, maybe-ranlib.c: + Change encoding of is_ranlib variable to be consistent + with is_strip for strip.copy (i.e -1 to means use argv[0]). + +Thu Nov 14 20:11:02 1991 Per Bothner (bothner at cygnus.com) + + * version.c (program_version): Update to version 1.92. + +Tue Nov 12 16:17:53 1991 Per Bothner (bothner at cygnus.com) + + * ar.c (get_pos_bfd): Previous fix was missing a "break". + Thu Nov 7 08:55:56 1991 Steve Chamberlain (sac at cygnus.com) * am29k-pinsn.c: Fixed bug in mtacc, dmac and fmac instruction diff --git a/binutils/copy.c b/binutils/copy.c index c0428e273fc..fa86cf6e95a 100644 --- a/binutils/copy.c +++ b/binutils/copy.c @@ -32,6 +32,11 @@ static void copy_sections(); static boolean strip; static boolean verbose; +/* This flag distinguishes between strip and copy: + 1 means this is 'strip'; 0 means this is 'copy'. + -1 means if we should use argv[0] to decide. */ +extern int is_strip; + /* IMPORTS */ extern char *program_name; extern char *xmalloc(); @@ -134,7 +139,7 @@ bfd *obfd; sympp = (asymbol **) xmalloc(get_symtab_upper_bound(ibfd)); symcount = bfd_canonicalize_symtab(ibfd, sympp); - bfd_set_symtab(obfd, sympp, strip == true ? 0 : symcount); + bfd_set_symtab(obfd, sympp, is_strip ? 0 : symcount); /* bfd mandates that all output sections be created and sizes set before @@ -242,6 +247,8 @@ copy_file(input_filename, output_filename) copy_object(ibfd, obfd); + if (ibfd->flags & EXEC_P) + obfd->flags |= EXEC_P; if (!bfd_close(obfd)) bfd_fatal(output_filename); @@ -267,10 +274,14 @@ setup_sections(ibfd, isection, obfd) { sec_ptr osection; char *err; - osection = bfd_make_section(obfd, bfd_section_name(ibfd, isection)); + + osection = bfd_get_section_by_name(obfd, bfd_section_name(ibfd, isection)); if (osection == NULL) { - err = "making"; - goto loser; + osection = bfd_make_section(obfd, bfd_section_name(ibfd, isection)); + if (osection == NULL) { + err = "making"; + goto loser; + } } if (!bfd_set_section_size(obfd, @@ -338,7 +349,7 @@ copy_sections(ibfd, isection, obfd) if (size == 0) return; - if (strip == true || get_reloc_upper_bound(ibfd, isection) == 0) + if (is_strip || get_reloc_upper_bound(ibfd, isection) == 0) { bfd_set_reloc(obfd, osection, (arelent **)NULL, 0); } @@ -375,8 +386,9 @@ main(argc, argv) bfd_init(); - if (strcmp(program_name,"strip") == 0) { - strip = true; + if (is_strip < 0) { + i = strlen (program_name); + is_strip = (i >= 5 && strcmp(program_name+i-5,"strip")); } for (i = 1; i < argc; i++) @@ -391,7 +403,7 @@ main(argc, argv) input_target = output_target = argv[i]; break; case 'S': - strip = true; + is_strip = 1; break; case 's': i++; @@ -433,5 +445,5 @@ main(argc, argv) else { copy_file(input_filename, output_filename); } - return 1; + return 0; } -- 2.30.2