* version.c (print_version): New function.
authorIan Lance Taylor <ian@airs.com>
Tue, 1 Oct 1996 19:10:40 +0000 (19:10 +0000)
committerIan Lance Taylor <ian@airs.com>
Tue, 1 Oct 1996 19:10:40 +0000 (19:10 +0000)
* bucomm.h (print_version): Declare.
* ar.c (program_version): Don't declare.
(do_show_version): Remove.
(usage): Add help parameter.  Print bug report address.
(main): Set is_ranlib at start.  Check for --help and --version.
Call print_version, not do_show_version.
* nlmconv.c (program_version): Don't declare.
(main): Call print_version.
(show_usage): Print bug report address.
* nm.c (program_version, print_version): Don't declare.
(usage): Print bug report address.
(main): Call print_version.
* objcopy.c (program_version): Don't declare.
(copy_usage): Print bug report address.
(strip_usage): Likewise.
(strip_main): Call print_version.
(copy_main): Likewise.
* objdump.c (program_version): Don't declare.
(usage): Print bug report address.
(main): Call print_version.
* size.c (program_version): Don't declare.
(usage): Print bug report address.
(main): Call print_version.
* strings.c (program_version): Don't declare.
(main): Call print_version.
(usage): Print bug report address.
* Makefile.in: Update dependencies.

binutils/ChangeLog
binutils/Makefile.in
binutils/ar.c
binutils/objdump.c

index 12d78619a6239f330336fa0f5bdfe2e0e5442b91..85fba7bedd6e98bf07b86c0a8713ab4d0627aef0 100644 (file)
@@ -1,3 +1,41 @@
+Tue Oct  1 15:00:59 1996  Ian Lance Taylor  <ian@cygnus.com>
+
+       * version.c (print_version): New function.
+       * bucomm.h (print_version): Declare.
+       * ar.c (program_version): Don't declare.
+       (do_show_version): Remove.
+       (usage): Add help parameter.  Print bug report address.
+       (main): Set is_ranlib at start.  Check for --help and --version.
+       Call print_version, not do_show_version.
+       * nlmconv.c (program_version): Don't declare.
+       (main): Call print_version.
+       (show_usage): Print bug report address.
+       * nm.c (program_version, print_version): Don't declare.
+       (usage): Print bug report address.
+       (main): Call print_version.
+       * objcopy.c (program_version): Don't declare.
+       (copy_usage): Print bug report address.
+       (strip_usage): Likewise.
+       (strip_main): Call print_version.
+       (copy_main): Likewise.
+       * objdump.c (program_version): Don't declare.
+       (usage): Print bug report address.
+       (main): Call print_version.
+       * size.c (program_version): Don't declare.
+       (usage): Print bug report address.
+       (main): Call print_version.
+       * strings.c (program_version): Don't declare.
+       (main): Call print_version.
+       (usage): Print bug report address.
+       * Makefile.in: Update dependencies.
+
+Thu Sep 19 14:53:15 1996  Ian Lance Taylor  <ian@cygnus.com>
+
+       * ieee.c: Revert Monday's reflocalp patch, and apply this patch
+       instead:
+       (write_ieee_debugging_info): Write a dummy type at the end of the
+       global type block.
+
 Mon Sep 16 15:30:54 1996  Ian Lance Taylor  <ian@cygnus.com>
 
        * ieee.c (struct ieee_write_type): Add reflocalp field.
index 2c25944a4146b4824a7384d7f2299907edc0ea31..b9936ef70cad4be556e94f4efefdf13ea875d29e 100644 (file)
@@ -25,12 +25,12 @@ prefix = @prefix@
 
 program_transform_name = @program_transform_name@
 exec_prefix = @exec_prefix@
-bindir = $(exec_prefix)/bin
-libdir = $(exec_prefix)/lib
+bindir = @bindir@
+libdir = @libdir@
 tooldir = $(exec_prefix)/$(target_alias)
 
-datadir = $(prefix)/lib
-mandir = $(prefix)/man
+datadir = @datadir@
+mandir = @mandir@
 man1dir = $(mandir)/man1
 man2dir = $(mandir)/man2
 man3dir = $(mandir)/man3
@@ -40,15 +40,14 @@ man6dir = $(mandir)/man6
 man7dir = $(mandir)/man7
 man8dir = $(mandir)/man8
 man9dir = $(mandir)/man9
-infodir = $(prefix)/info
-includedir = $(prefix)/include
-docdir = $(datadir)/doc
+infodir = @infodir@
+includedir = @includedir@
 
 SHELL = /bin/sh
 
 INSTALL = `cd $(srcdir)/..;pwd`/install.sh -c
-INSTALL_PROGRAM = $(INSTALL)
-INSTALL_DATA = $(INSTALL) -m 644
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
 INSTALL_XFORM = $(INSTALL) -t='$(program_transform_name)'
 INSTALL_XFORM1 = $(INSTALL_XFORM) -b=.1 -m 644
 
@@ -58,6 +57,7 @@ CC = @CC@
 CFLAGS = @CFLAGS@
 LDFLAGS = @LDFLAGS@
 HLDFLAGS = @HLDFLAGS@
+HLDENV = @HLDENV@
 RPATH_ENVVAR = @RPATH_ENVVAR@
 MAKEINFO = makeinfo
 TEXI2DVI = texi2dvi
@@ -76,15 +76,13 @@ LEX_OPTIONS = -I -Cem
 LEX = `if [ -f ../flex/flex ] ; then echo ../flex/flex ; else echo flex ; fi`
 
 # Distribution version
-VERSION=cygnus-2.6
+VERSION=cygnus-2.7.1
 # Distribution name
 DIST_NAME=binutils-${VERSION}
 
 # Where to find texinfo.tex to format docn with TeX
 TEXIDIR = $(srcdir)/../texinfo
 
-#CC=gcc -Wall
-CC=cc
 # these two are almost the same program
 AR_PROG=ar
 RANLIB_PROG=ranlib
@@ -116,7 +114,8 @@ STAGESTUFF = $(PROGS) *.o
 # Files that can be generated, but should be in the distribution.
 # Don't build $(DEMANGLER_PROG).1, since its name may vary with the
 # configuration.
-DISTSTUFF=arparse.c arparse.h arlex.c nlmheader.c sysinfo.c sysinfo.h syslex.c
+DISTSTUFF=arparse.c arparse.h arlex.c nlmheader.c sysinfo.c sysinfo.h \
+       syslex.c deflex.c
 
 # Stuff that goes in tooldir/ if appropriate
 TOOL_PROGS = nm.new strip.new ar ranlib $(DLLTOOL_PROG)
@@ -247,25 +246,25 @@ info: binutils.info
 dvi: binutils.dvi
 
 $(SIZE_PROG): $(ADDL_DEPS) size.o
-       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(SIZE_PROG) size.o $(ADDL_LIBS) $(EXTRALIBS)
+       $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(SIZE_PROG) size.o $(ADDL_LIBS) $(EXTRALIBS)
 
 $(OBJCOPY_PROG): $(ADDL_DEPS) objcopy.o not-strip.o $(WRITE_DEBUG_OBJS)
-       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(OBJCOPY_PROG) objcopy.o not-strip.o $(WRITE_DEBUG_OBJS) $(ADDL_LIBS) $(EXTRALIBS)
+       $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(OBJCOPY_PROG) objcopy.o not-strip.o $(WRITE_DEBUG_OBJS) $(ADDL_LIBS) $(EXTRALIBS)
 
 $(STRINGS_PROG): $(ADDL_DEPS) strings.o
-       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(STRINGS_PROG) strings.o $(ADDL_LIBS) $(EXTRALIBS)
+       $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(STRINGS_PROG) strings.o $(ADDL_LIBS) $(EXTRALIBS)
 
 $(STRIP_PROG): $(ADDL_DEPS) objcopy.o is-strip.o $(WRITE_DEBUG_OBJS)
-       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(STRIP_PROG) objcopy.o is-strip.o $(WRITE_DEBUG_OBJS) $(ADDL_LIBS) $(EXTRALIBS)
+       $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(STRIP_PROG) objcopy.o is-strip.o $(WRITE_DEBUG_OBJS) $(ADDL_LIBS) $(EXTRALIBS)
 
 $(NM_PROG): $(ADDL_DEPS) nm.o
-       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(NM_PROG) nm.o $(ADDL_LIBS) $(EXTRALIBS)
+       $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(NM_PROG) nm.o $(ADDL_LIBS) $(EXTRALIBS)
 
 #libbfd is searched twice here ($(BFDLIB) and $(ADDL_LIBS)) because when a
 #shared libbfd is built with --enable-commonbfdlib, all of libopcodes is
 #available in libbfd.so and we don't want to link anything from libopcodes.a
 $(OBJDUMP_PROG): $(ADDL_DEPS) objdump.o prdbg.o $(DEBUG_OBJS) $(OPCODES_DEP)
-       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(OBJDUMP_PROG) objdump.o prdbg.o $(DEBUG_OBJS) $(BFDLIB) $(OPCODES) $(ADDL_LIBS) $(EXTRALIBS)
+       $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(OBJDUMP_PROG) objdump.o prdbg.o $(DEBUG_OBJS) $(BFDLIB) $(OPCODES) $(ADDL_LIBS) $(EXTRALIBS)
 
 underscore.c: stamp-under ; @true
 
@@ -282,7 +281,7 @@ cplus-dem.o: $(BASEDIR)/libiberty/cplus-dem.c $(INCDIR)/getopt.h
        $(CC) -c -DMAIN -DVERSION='"$(VERSION)"' $(ALL_CFLAGS) $(BASEDIR)/libiberty/cplus-dem.c
 
 $(DEMANGLER_PROG): cplus-dem.o $(LIBIBERTY) underscore.o $(DEMANGLER_PROG).1
-       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(DEMANGLER_PROG) cplus-dem.o $(LIBIBERTY) $(EXTRALIBS) underscore.o
+       $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(DEMANGLER_PROG) cplus-dem.o $(LIBIBERTY) $(EXTRALIBS) underscore.o
 
 arparse.c: arparse.y
        $(BISON) $(BISONFLAGS)  $(srcdir)/arparse.y
@@ -298,10 +297,10 @@ arlex.c: arlex.l
        mv lex.yy.c arlex.c
 
 $(AR_PROG): $(ADDL_DEPS) ar.o arparse.o arlex.o not-ranlib.o arsup.o
-       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(AR_PROG) ar.o arparse.o arlex.o arsup.o not-ranlib.o $(ADDL_LIBS) $(EXTRALIBS)
+       $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(AR_PROG) ar.o arparse.o arlex.o arsup.o not-ranlib.o $(ADDL_LIBS) $(EXTRALIBS)
 
 $(RANLIB_PROG): $(ADDL_DEPS) ar.o is-ranlib.o arparse.o arlex.o arsup.o
-       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(RANLIB_PROG) ar.o arparse.o arlex.o arsup.o is-ranlib.o $(ADDL_LIBS) $(EXTRALIBS)
+       $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(RANLIB_PROG) ar.o arparse.o arlex.o arsup.o is-ranlib.o $(ADDL_LIBS) $(EXTRALIBS)
 
 # This rule creates a single binary that switches between ar and ranlib
 # by looking at argv[0].  Use this kludge to save some disk space.
@@ -311,14 +310,14 @@ $(RANLIB_PROG): $(ADDL_DEPS) ar.o is-ranlib.o arparse.o arlex.o arsup.o
 # Alternatively, you can install ranlib.sh as ranlib.
 
 ar_with_ranlib: $(ADDL_DEPS) ar.o maybe-ranlib.o
-       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(AR_PROG) ar.o maybe-ranlib.o $(ADDL_LIBS) $(EXTRALIBS)
+       $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(AR_PROG) ar.o maybe-ranlib.o $(ADDL_LIBS) $(EXTRALIBS)
        -rm -f $(RANLIB_PROG)
        -ln $(AR_PROG) $(RANLIB_PROG)
 
 # objcopy and strip in one binary that uses argv[0] to decide its action.
 
 objcopy_with_strip: $(ADDL_DEPS) objcopy.o maybe-strip.o
-       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(OBJCOPY_PROG) objcopy.o maybe-strip.o $(ADDL_LIBS) $(EXTRALIBS)
+       $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(OBJCOPY_PROG) objcopy.o maybe-strip.o $(ADDL_LIBS) $(EXTRALIBS)
        -rm -f $(STRIP_PROG)
        -ln $(OBJCOPY_PROG) $(STRIP_PROG)
 
@@ -364,10 +363,10 @@ sysinfo.o: sysinfo.c
        fi
 
 srconv: srconv.o coffgrok.o $(ADDL_DEPS)
-       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ srconv.o coffgrok.o $(ADDL_LIBS) $(EXTRALIBS)
+       $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ srconv.o coffgrok.o $(ADDL_LIBS) $(EXTRALIBS)
 
 dlltool: dlltool.o defparse.o deflex.o cplus-dem.o $(ADDL_DEPS)
-       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ dlltool.o defparse.o deflex.o $(ADDL_LIBS) $(EXTRALIBS)
+       $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ dlltool.o defparse.o deflex.o $(ADDL_LIBS) $(EXTRALIBS)
 
 defparse.c:defparse.y
        $(BISON)  $(BISONFLAGS)  $(srcdir)/defparse.y
@@ -384,10 +383,10 @@ dlltool.o:dlltool.c
        $(CC) -c @DLLTOOL_DEFS@ $(ALL_CFLAGS) $(srcdir)/dlltool.c
 
 coffdump: coffdump.o coffgrok.o $(ADDL_DEPS)
-       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $@  coffdump.o coffgrok.o $(ADDL_LIBS) $(EXTRALIBS)
+       $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $@  coffdump.o coffgrok.o $(ADDL_LIBS) $(EXTRALIBS)
 
 sysdump: sysdump.o $(ADDL_DEPS)
-       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ sysdump.o $(ADDL_LIBS) $(EXTRALIBS)
+       $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ sysdump.o $(ADDL_LIBS) $(EXTRALIBS)
 
 # Depend upon sysinfo.c to avoid building both nlmheader.c and sysinfo.c
 # simultaneously.
@@ -403,7 +402,7 @@ nlmconv.o: nlmconv.c $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h
        $(CC) -c -DLD_NAME="\"$${ldname}\"" @NLMCONV_DEFS@ $(ALL_CFLAGS) $(srcdir)/nlmconv.c
 
 $(NLMCONV_PROG): nlmconv.o nlmheader.o $(ADDL_DEPS)
-       $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ nlmconv.o nlmheader.o $(ADDL_LIBS) $(EXTRALIBS)
+       $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ nlmconv.o nlmheader.o $(ADDL_LIBS) $(EXTRALIBS)
 
 # Targets to rebuild dependencies in this Makefile.
 # Have to get rid of .dep1 here so that "$?" later includes all of $(CFILES).
@@ -422,6 +421,7 @@ $(NLMCONV_PROG): nlmconv.o nlmheader.o $(ADDL_DEPS)
 dep.sed: dep-in.sed config.status
        sed <$(srcdir)/dep-in.sed >dep.sed      \
                -e 's!@INCDIR@!$(INCDIR)!'      \
+               -e 's!@BFDDIR@!$(BFDDIR)!'      \
                -e 's!@SRCDIR@!$(srcdir)!'
 
 dep: .dep
@@ -546,18 +546,17 @@ install: all
        if [ x$(DEMANGLER_PROG) != x ]; then \
          $(INSTALL_XFORM1) $(DEMANGLER_PROG).1 $(man1dir)/$(DEMANGLER_PROG).1; \
        fi
-       -if [ -d $(tooldir) ]; then \
-         if [ -d $(tooldir)/bin ]; then true; else mkdir $(tooldir)/bin; fi; \
-         for i in $(TOOL_PROGS) ; do \
-           if [ -f $$i ]; then \
-             j=`echo $$i | sed -e 's/.new//'`; \
-             rm -f $(tooldir)/bin/$$j; \
-             k=`echo $$j | sed '$(program_transform_name)'`; \
-             ln $(bindir)/$$k $(tooldir)/bin/$$j >/dev/null 2>/dev/null \
+       test -d $(tooldir) || mkdir $(tooldir)
+       test -d $(tooldir)/bin || mkdir $(tooldir)/bin
+       for i in $(TOOL_PROGS) ; do \
+         if [ -f $$i ]; then \
+           j=`echo $$i | sed -e 's/.new//'`; \
+           rm -f $(tooldir)/bin/$$j; \
+           k=`echo $$j | sed '$(program_transform_name)'`; \
+           ln $(bindir)/$$k $(tooldir)/bin/$$j >/dev/null 2>/dev/null \
                || $(INSTALL_PROGRAM) $$i $(tooldir)/bin/$$j; \
-           fi; \
-         done; \
-        else true; fi
+         fi; \
+       done
 
 # This little path search is required because in the FSF net releases,
 # the info files are included in the source tree, and that may not be
@@ -653,7 +652,7 @@ config.status: configure $(srcdir)/../bfd/configure.host $(srcdir)/../bfd/config
 ar.o: ar.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/obstack.h \
   $(INCDIR)/libiberty.h $(INCDIR)/progress.h bucomm.h \
   config.h $(INCDIR)/fopen-same.h $(INCDIR)/aout/ar.h \
-  ../bfd/libbfd.h arsup.h
+  $(BFDDIR)/libbfd.h arsup.h
 arsup.o: arsup.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
   $(INCDIR)/obstack.h arsup.h $(INCDIR)/libiberty.h bucomm.h \
   config.h $(INCDIR)/fopen-same.h
@@ -663,7 +662,7 @@ bucomm.o: bucomm.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
 coffdump.o: coffdump.c coffgrok.h bucomm.h config.h \
   $(INCDIR)/fopen-same.h
 coffgrok.o: coffgrok.c bucomm.h config.h $(INCDIR)/fopen-same.h \
-  $(INCDIR)/coff/internal.h ../bfd/libcoff.h $(INCDIR)/bfdlink.h \
+  $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
   coffgrok.h
 debug.o: debug.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
   $(INCDIR)/obstack.h bucomm.h config.h $(INCDIR)/fopen-same.h \
@@ -683,8 +682,9 @@ maybe-ranlib.o: maybe-ranlib.c
 maybe-strip.o: maybe-strip.c
 nlmconv.o: nlmconv.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
   $(INCDIR)/obstack.h $(INCDIR)/libiberty.h bucomm.h \
-  config.h $(INCDIR)/fopen-same.h ../bfd/libnlm.h $(INCDIR)/nlm/common.h \
-  $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h nlmconv.h
+  config.h $(INCDIR)/fopen-same.h $(BFDDIR)/libnlm.h \
+  $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h \
+  nlmconv.h
 nm.o: nm.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/obstack.h \
   $(INCDIR)/progress.h bucomm.h config.h $(INCDIR)/fopen-same.h \
   $(INCDIR)/getopt.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
@@ -705,7 +705,7 @@ prdbg.o: prdbg.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
 rdcoff.o: rdcoff.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
   $(INCDIR)/obstack.h $(INCDIR)/coff/internal.h bucomm.h \
   config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
-  $(INCDIR)/demangle.h debug.h budbg.h ../bfd/libcoff.h \
+  $(INCDIR)/demangle.h debug.h budbg.h $(BFDDIR)/libcoff.h \
   $(INCDIR)/bfdlink.h
 rddbg.o: rddbg.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
   $(INCDIR)/obstack.h bucomm.h config.h $(INCDIR)/fopen-same.h \
@@ -714,7 +714,7 @@ size.o: size.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/obstack.h \
   $(INCDIR)/getopt.h bucomm.h config.h $(INCDIR)/fopen-same.h \
   $(INCDIR)/libiberty.h
 srconv.o: srconv.c bucomm.h config.h $(INCDIR)/fopen-same.h \
-  sysroff.h coffgrok.h $(INCDIR)/coff/internal.h ../bfd/libcoff.h \
+  sysroff.h coffgrok.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \
   $(INCDIR)/bfdlink.h sysroff.c
 stabs.o: stabs.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
   $(INCDIR)/obstack.h bucomm.h config.h $(INCDIR)/fopen-same.h \
@@ -727,7 +727,8 @@ strings.o: strings.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
 sysdump.o: sysdump.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
   $(INCDIR)/obstack.h bucomm.h config.h $(INCDIR)/fopen-same.h \
   sysroff.h sysroff.c
-version.o: version.c
+version.o: version.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
+  $(INCDIR)/obstack.h bucomm.h config.h $(INCDIR)/fopen-same.h
 wrstabs.o: wrstabs.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
   $(INCDIR)/obstack.h bucomm.h config.h $(INCDIR)/fopen-same.h \
   $(INCDIR)/libiberty.h debug.h budbg.h $(INCDIR)/aout/aout64.h \
index eb98ab395c38df427b762f322c18077547f5a8e6..7d431c4627ed65b5688afb9573b8e70bf7e367b9 100644 (file)
@@ -1,5 +1,5 @@
 /* ar.c - Archive modify and extract.
-   Copyright 1991, 92, 93, 94 Free Software Foundation, Inc.
+   Copyright 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
 
 This file is part of GNU Binutils.
 
@@ -15,7 +15,7 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 \f
 /*
    Bugs: should use getopt the way tar does (complete w/optional -) and
@@ -25,28 +25,21 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
    more consistant.
 */
 #include "bfd.h"
-#include "sysdep.h"
 #include "libiberty.h"
 #include "progress.h"
 #include "bucomm.h"
 #include "aout/ar.h"
 #include "libbfd.h"
 #include "arsup.h"
-#include <stdio.h>
-#ifdef POSIX_UTIME
+#include <sys/stat.h>
+
+#ifdef HAVE_GOOD_UTIME_H
 #include <utime.h>
-#else /* ! POSIX_UTIME */
-#ifdef USE_UTIME
-#include <time.h>
-#else /* ! USE_UTIME */
+#else /* ! HAVE_GOOD_UTIME_H */
+#ifdef HAVE_UTIMES
 #include <sys/time.h>
-#endif /* ! USE_UTIME */
-#endif /* ! POSIX_UTIME */
-#include <errno.h>
-#ifndef errno
-extern int errno;
-#endif
-#define BUFSIZE 8192
+#endif /* HAVE_UTIMES */
+#endif /* ! HAVE_GOOD_UTIME_H */
 
 #ifdef __GO32___
 #define EXT_NAME_LEN 3         /* bufflen of addition to name if it's MS-DOS */
@@ -54,6 +47,8 @@ extern int errno;
 #define EXT_NAME_LEN 6         /* ditto for *NIX */
 #endif
 
+#define BUFSIZE 8192
+
 /* Kludge declaration from BFD!  This is ugly!  FIXME!  XXX */
 
 struct ar_hdr *
@@ -76,15 +71,17 @@ print_contents PARAMS ((bfd * member));
 static void
 delete_members PARAMS ((bfd *, char **files_to_delete));
 
+#if 0
 static void
 do_quick_append PARAMS ((const char *archive_filename,
                         char **files_to_append));
+#endif
 
 static void
 move_members PARAMS ((bfd *, char **files_to_move));
 
 static void
-replace_members PARAMS ((bfd *, char **files_to_replace));
+replace_members PARAMS ((bfd *, char **files_to_replace, boolean quick));
 
 static void
 print_descr PARAMS ((bfd * abfd));
@@ -210,28 +207,28 @@ map_over_members (arch, function, files, count)
 \f
 boolean operation_alters_arch = false;
 
-extern char *program_version;
-
 void
-do_show_version ()
+usage (help)
+     int help;
 {
-  printf ("GNU %s version %s\n", program_name, program_version);
-  xexit (0);
-}
+  FILE *s;
 
-void
-usage ()
-{
-  if (is_ranlib == 0)
-    fprintf (stderr, "\
+  s = help ? stdout : stderr;
+  if (! is_ranlib)
+    fprintf (s, "\
 Usage: %s [-]{dmpqrtx}[abcilosuvV] [member-name] archive-file file...\n\
        %s -M [<mri-script]\n",
             program_name, program_name);
   else
-    fprintf (stderr, "\
+    fprintf (s, "\
 Usage: %s [-vV] archive\n", program_name);
+
   list_supported_targets (program_name, stderr);
-  xexit (1);
+
+  if (help)
+    fprintf (s, "Report bugs to bug-gnu-utils@prep.ai.mit.edu\n");
+
+  xexit (help ? 0 : 1);
 }
 
 /* Normalize a file name specified on the command line into a file
@@ -303,12 +300,40 @@ main (argc, argv)
   int arg_index;
   char **files;
   char *inarch_filename;
-  char *temp;
   int show_version;
 
   program_name = argv[0];
   xmalloc_set_program_name (program_name);
 
+  if (is_ranlib < 0)
+    {
+      char *temp;
+
+      temp = strrchr (program_name, '/');
+      if (temp == NULL)
+       temp = program_name;
+      else
+       ++temp;
+      if (strlen (temp) >= 6
+         && strcmp (temp + strlen (temp) - 6, "ranlib") == 0)
+       is_ranlib = 1;
+      else
+       is_ranlib = 0;
+    }
+
+  if (argc > 1 && argv[1][0] == '-')
+    {
+      if (strcmp (argv[1], "--help") == 0)
+       usage (1);
+      else if (strcmp (argv[1], "--version") == 0)
+       {
+         if (is_ranlib)
+           print_version ("ranlib");
+         else
+           print_version ("ar");
+       }
+    }
+
   START_PROGRESS (program_name, 0);
 
   bfd_init ();
@@ -316,22 +341,16 @@ main (argc, argv)
 
   xatexit (remove_output);
 
-  temp = strrchr (program_name, '/');
-  if (temp == (char *) NULL)
-    temp = program_name;       /* shouldn't happen, but... */
-  else
-    ++temp;
-  if (is_ranlib > 0 || (is_ranlib < 0 && strcmp (temp, "ranlib") == 0))
+  if (is_ranlib)
     {
       boolean touch = false;
 
-      is_ranlib = 1;
-      if (argc < 2)
+      if (argc < 2 || strcmp (argv[1], "--help") == 0)
        usage ();
       if (strcmp (argv[1], "-V") == 0
          || strcmp (argv[1], "-v") == 0
          || strncmp (argv[1], "--v", 3) == 0)
-       do_show_version ();
+       print_version ("ranlib");
       arg_index = 1;
       if (strcmp (argv[1], "-t") == 0)
        {
@@ -348,8 +367,6 @@ main (argc, argv)
        }
       xexit (0);
     }
-  else
-    is_ranlib = 0;
 
   if (argc == 2 && strcmp (argv[1], "-M") == 0)
     {
@@ -448,7 +465,7 @@ main (argc, argv)
     }
 
   if (show_version)
-    do_show_version ();
+    print_version ("ar");
 
   if (argc < 3)
     usage ();
@@ -488,6 +505,11 @@ main (argc, argv)
 
       files = arg_index < argc ? argv + arg_index : NULL;
 
+#if 0
+      /* We don't use do_quick_append any more.  Too many systems
+         expect ar to always rebuild the symbol table even when q is
+         used.  */
+
       /* We can't do a quick append if we need to construct an
         extended name table, because do_quick_append won't be able to
         rebuild the name table.  Unfortunately, at this point we
@@ -514,8 +536,10 @@ main (argc, argv)
          do_quick_append (inarch_filename, files);
          xexit (0);
        }
+#endif
 
-      arch = open_inarch (inarch_filename);
+      arch = open_inarch (inarch_filename,
+                         files == NULL ? (char *) NULL : files[0]);
 
       switch (operation)
        {
@@ -542,8 +566,9 @@ main (argc, argv)
          break;
 
        case replace:
+       case quick_append:
          if (files != NULL || write_armap > 0)
-           replace_members (arch, files);
+           replace_members (arch, files, operation == quick_append);
          break;
 
          /* Shouldn't happen! */
@@ -561,18 +586,24 @@ main (argc, argv)
 }
 
 bfd *
-open_inarch (archive_filename)
+open_inarch (archive_filename, file)
      const char *archive_filename;
+     const char *file;
 {
+  const char *target;
   bfd **last_one;
   bfd *next_one;
   struct stat sbuf;
   bfd *arch;
+  char **matching;
 
   bfd_set_error (bfd_error_no_error);
 
+  target = NULL;
+
   if (stat (archive_filename, &sbuf) != 0)
     {
+      bfd *obj;
 
 #ifndef __GO32__
 
@@ -592,20 +623,42 @@ open_inarch (archive_filename)
          return NULL;
        }
 
-      /* This routine is one way to forcibly create the archive. */
+      /* Try to figure out the target to use for the archive from the
+         first object on the list.  */
+      obj = bfd_openr (file, NULL);
+      if (obj != NULL)
+       {
+         if (bfd_check_format (obj, bfd_object))
+           target = bfd_get_target (obj);
+         (void) bfd_close (obj);
+       }
 
-      do_quick_append (archive_filename, 0);
+      /* Create an empty archive.  */
+      arch = bfd_openw (archive_filename, target);
+      if (arch == NULL
+         || ! bfd_set_format (arch, bfd_archive)
+         || ! bfd_close (arch))
+       bfd_fatal (archive_filename);
     }
 
-  arch = bfd_openr (archive_filename, NULL);
+  arch = bfd_openr (archive_filename, target);
   if (arch == NULL)
     {
     bloser:
       bfd_fatal (archive_filename);
     }
 
-  if (bfd_check_format (arch, bfd_archive) != true)
-    fatal ("%s is not an archive", archive_filename);
+  if (! bfd_check_format_matches (arch, bfd_archive, &matching))
+    {
+      bfd_nonfatal (archive_filename);
+      if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
+       {
+         list_matching_formats (matching);
+         free (matching);
+       }
+      xexit (1);
+    }
+
   last_one = &(arch->next);
   /* Read all the contents right away, regardless.  */
   for (next_one = bfd_openr_next_archived_file (arch, NULL);
@@ -742,30 +795,35 @@ extract_file (abfd)
 
   if (preserve_dates)
     {
-#ifdef POSIX_UTIME
+#ifdef HAVE_GOOD_UTIME_H
       struct utimbuf tb;
       tb.actime = buf.st_mtime;
       tb.modtime = buf.st_mtime;
       utime (bfd_get_filename (abfd), &tb);    /* FIXME check result */
-#else /* ! POSIX_UTIME */
-#ifdef USE_UTIME
+#else /* ! HAVE_GOOD_UTIME_H */
+#ifndef HAVE_UTIMES
       long tb[2];
       tb[0] = buf.st_mtime;
       tb[1] = buf.st_mtime;
       utime (bfd_get_filename (abfd), tb);     /* FIXME check result */
-#else /* ! USE_UTIME */
+#else /* HAVE_UTIMES */
       struct timeval tv[2];
       tv[0].tv_sec = buf.st_mtime;
       tv[0].tv_usec = 0;
       tv[1].tv_sec = buf.st_mtime;
       tv[1].tv_usec = 0;
       utimes (bfd_get_filename (abfd), tv);    /* FIXME check result */
-#endif /* ! USE_UTIME */
-#endif /* ! POSIX_UTIME */
+#endif /* HAVE_UTIMES */
+#endif /* ! HAVE_GOOD_UTIME_H */
     }
 free (cbuf);
 }
 
+#if 0
+
+/* We don't use this anymore.  Too many systems expect ar to rebuild
+   the symbol table even when q is used.  */
+
 /* Just do it quickly; don't worry about dups, armap, or anything like that */
 
 static void
@@ -873,6 +931,7 @@ do_quick_append (archive_filename, files_to_append)
   free (buf);
 }
 
+#endif /* 0 */
 
 static void
 write_archive (iarch)
@@ -1063,10 +1122,12 @@ move_members (arch, files_to_move)
 /* Ought to default to replacing in place, but this is existing practice!  */
 
 static void
-replace_members (arch, files_to_move)
+replace_members (arch, files_to_move, quick)
      bfd *arch;
      char **files_to_move;
+     boolean quick;
 {
+  boolean changed = false;
   bfd **after_bfd;             /* New entries go after this one */
   bfd *current;
   bfd **current_ptr;
@@ -1074,63 +1135,62 @@ replace_members (arch, files_to_move)
 
   while (files_to_move && *files_to_move)
     {
-      current_ptr = &arch->next;
-      while (*current_ptr)
+      if (! quick)
        {
-         current = *current_ptr;
-
-         if (!strcmp (normalize (*files_to_move, arch),
-                      normalize (current->filename, arch)))
+         current_ptr = &arch->next;
+         while (*current_ptr)
            {
-             if (newer_only)
-               {
-                 struct stat fsbuf, asbuf;
+             current = *current_ptr;
 
-                 if (current->arelt_data == NULL)
+             /* For compatibility with existing ar programs, we
+                permit the same file to be added multiple times.  */
+             if (strcmp (normalize (*files_to_move, arch),
+                         normalize (current->filename, arch)) == 0
+                 && current->arelt_data != NULL)
+               {
+                 if (newer_only)
                    {
-                     /* This can only happen if you specify a file on the
-                        command line more than once. */
-                     fprintf (stderr,
-                              "%s: duplicate file specified: %s -- skipping\n",
-                              program_name, *files_to_move);
-                     goto next_file;
+                     struct stat fsbuf, asbuf;
+
+                     if (stat (*files_to_move, &fsbuf) != 0)
+                       {
+                         if (errno != ENOENT)
+                           bfd_fatal (*files_to_move);
+                         goto next_file;
+                       }
+                     if (bfd_stat_arch_elt (current, &asbuf) != 0)
+                       fatal ("internal stat error on %s", current->filename);
+
+                     if (fsbuf.st_mtime <= asbuf.st_mtime)
+                       goto next_file;
                    }
 
-                 if (stat (*files_to_move, &fsbuf) != 0)
+                 /* snip out this entry from the chain */
+                 *current_ptr = current->next;
+
+                 after_bfd = get_pos_bfd (&arch->next, pos_end);
+                 temp = *after_bfd;
+                 *after_bfd = bfd_openr (*files_to_move, NULL);
+                 if (*after_bfd == (bfd *) NULL)
                    {
-                     if (errno != ENOENT)
-                       bfd_fatal (*files_to_move);
-                     goto next_file;
+                     bfd_fatal (*files_to_move);
                    }
-                 if (bfd_stat_arch_elt (current, &asbuf) != 0)
-                   fatal ("internal stat error on %s", current->filename);
-
-                 if (fsbuf.st_mtime <= asbuf.st_mtime)
-                   goto next_file;
-               }
+                 (*after_bfd)->next = temp;
 
-             /* snip out this entry from the chain */
-             *current_ptr = current->next;
+                 if (verbose)
+                   {
+                     printf ("r - %s\n", *files_to_move);
+                   }
 
-             after_bfd = get_pos_bfd (&arch->next, pos_end);
-             temp = *after_bfd;
-             *after_bfd = bfd_openr (*files_to_move, NULL);
-             if (*after_bfd == (bfd *) NULL)
-               {
-                 bfd_fatal (*files_to_move);
-               }
-             (*after_bfd)->next = temp;
+                 changed = true;
 
-             if (verbose)
-               {
-                 printf ("r - %s\n", *files_to_move);
+                 goto next_file;
                }
-             goto next_file;
+             current_ptr = &(current->next);
            }
-         current_ptr = &(current->next);
        }
 
-      /* It isn't in there, so add to end */
+      /* Add to the end of the archive.  */
 
       after_bfd = get_pos_bfd (&arch->next, pos_end);
       temp = *after_bfd;
@@ -1146,12 +1206,15 @@ replace_members (arch, files_to_move)
 
       (*after_bfd)->next = temp;
 
+      changed = true;
+
     next_file:;
 
       files_to_move++;
     }
 
-  write_archive (arch);
+  if (changed)
+    write_archive (arch);
 }
 
 static void
@@ -1161,7 +1224,7 @@ ranlib_only (archname)
   bfd *arch;
 
   write_armap = 1;
-  arch = open_inarch (archname);
+  arch = open_inarch (archname, (char *) NULL);
   if (arch == NULL)
     xexit (1);
   write_archive (arch);
@@ -1179,6 +1242,7 @@ ranlib_touch (archname)
 #else
   int f;
   bfd *arch;
+  char **matching;
 
   f = open (archname, O_RDWR, 0);
   if (f < 0)
@@ -1188,9 +1252,18 @@ ranlib_touch (archname)
     }
 
   arch = bfd_fdopenr (archname, (const char *) NULL, f);
-  if (arch == NULL
-      || ! bfd_check_format (arch, bfd_archive))
+  if (arch == NULL)
     bfd_fatal (archname);
+  if (! bfd_check_format_matches (arch, bfd_archive, &matching))
+    {
+      bfd_nonfatal (archname);
+      if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
+       {
+         list_matching_formats (matching);
+         free (matching);
+       }
+      xexit (1);
+    }
 
   if (! bfd_has_map (arch))
     fatal ("%s: no archive map to update", archname);
index 74d8f4b8be4a0aad29311e6a16eac422432b1f38..08b15cdb68eeff63ceb12bd78a487f7172e5547e 100644 (file)
@@ -44,8 +44,6 @@ extern int fprintf PARAMS ((FILE *, const char *, ...));
 
 static char *default_target = NULL;    /* default at runtime */
 
-extern char *program_version;
-
 static int show_version = 0;           /* show the version number */
 static int dump_section_contents;      /* -s */
 static int dump_section_headers;       /* -h */
@@ -154,6 +152,8 @@ Usage: %s [-ahifdDprRtTxsSlw] [-b bfdname] [-m machine] [-j section-name]\n\
        [--show-raw-insn] [-EB|-EL] [--endian={big|little}] objfile...\n\
 at least one option besides -l (--line-numbers) must be given\n");
   list_supported_targets (program_name, stream);
+  if (status == 0)
+    fprintf (stream, "Report bugs to bug-gnu-utils@prep.ai.mit.edu\n");
   exit (status);
 }
 
@@ -974,6 +974,7 @@ disassemble_data (abfd)
       exit (1);
     }
 
+  disasm_info.flavour = bfd_get_flavour (abfd);
   disasm_info.arch = bfd_get_arch (abfd);
   disasm_info.mach = bfd_get_mach (abfd);
   if (bfd_big_endian (abfd))
@@ -1879,10 +1880,6 @@ dump_reloc_set (abfd, sec, relpp, relcount)
 /* The length of the longest architecture name + 1.  */
 #define LONGEST_ARCH sizeof("rs6000:6000")
 
-#ifndef L_tmpnam
-#define L_tmpnam 25
-#endif
-
 static const char *
 endian_string (endian)
      enum bfd_endian endian;
@@ -1901,13 +1898,11 @@ endian_string (endian)
 static void
 display_target_list ()
 {
-  extern char *tmpnam ();
   extern bfd_target *bfd_target_vector[];
-  char tmparg[L_tmpnam];
   char *dummy_name;
   int t;
 
-  dummy_name = tmpnam (tmparg);
+  dummy_name = choose_temp_base ();
   for (t = 0; bfd_target_vector[t]; t++)
     {
       bfd_target *p = bfd_target_vector[t];
@@ -1937,6 +1932,7 @@ display_target_list ()
                  bfd_printable_arch_mach ((enum bfd_architecture) a, 0));
     }
   unlink (dummy_name);
+  free (dummy_name);
 }
 
 /* Print a table showing which architectures are supported for entries
@@ -1949,8 +1945,6 @@ display_info_table (first, last)
      int last;
 {
   extern bfd_target *bfd_target_vector[];
-  extern char *tmpnam ();
-  char tmparg[L_tmpnam];
   int t, a;
   char *dummy_name;
 
@@ -1960,7 +1954,7 @@ display_info_table (first, last)
     printf ("%s ", bfd_target_vector[t]->name);
   putchar ('\n');
 
-  dummy_name = tmpnam (tmparg);
+  dummy_name = choose_temp_base ();
   for (a = (int) bfd_arch_obscure + 1; a < (int) bfd_arch_last; a++)
     if (strcmp (bfd_printable_arch_mach (a, 0), "UNKNOWN!") != 0)
       {
@@ -2007,6 +2001,7 @@ display_info_table (first, last)
        putchar ('\n');
       }
   unlink (dummy_name);
+  free (dummy_name);
 }
 
 /* Print tables of all the target-architecture combinations that
@@ -2185,10 +2180,7 @@ main (argc, argv)
     }
 
   if (show_version)
-    {
-      printf ("GNU %s version %s\n", program_name, program_version);
-      exit (0);
-    }
+    print_version ("objdump");
 
   if (seenflag == false)
     usage (stderr, 1);