From: Tom Tromey Date: Wed, 22 Apr 1998 05:32:22 +0000 (+0000) Subject: * Many files: Added gettext invocations around user-visible X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=9d04d6183d792349aaab84ecb1338b9445c0981b;p=deliverable%2Fbinutils-gdb.git * Many files: Added gettext invocations around user-visible strings. * bucomm.h: Added gettext-related includes and defines. * acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_STPCPY, HAVE_LC_MESSAGES): Define. * configure.in: Call CY_GNU_GETTEXT. Create po/Makefile.in and po/Makefile. Use AM_PROG_LEX. * Makefile.am (SUBDIRS): New macro. (POTFILES): Likewise. (po/POTFILES.in): New target. (LDADD): Added INTLLIBS. (objdump_LDADD): Likewise. (c__filt_LDADD): Likewise. (ar_LDADD): Likewise. (ranlib_LDADD): Likewise. (dlltool_LDADD): Likewise. (windres_LDADD): Likewise. * po/Make-in, po/POTFILES.in, po/binutils.pot: New files. --- diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 63b62a30c4..20985cf6c2 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,24 @@ +Tue Apr 21 22:13:08 1998 Tom Tromey + + * Many files: Added gettext invocations around user-visible + strings. + * bucomm.h: Added gettext-related includes and defines. + * acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_STPCPY, + HAVE_LC_MESSAGES): Define. + * configure.in: Call CY_GNU_GETTEXT. Create po/Makefile.in and + po/Makefile. Use AM_PROG_LEX. + * Makefile.am (SUBDIRS): New macro. + (POTFILES): Likewise. + (po/POTFILES.in): New target. + (LDADD): Added INTLLIBS. + (objdump_LDADD): Likewise. + (c__filt_LDADD): Likewise. + (ar_LDADD): Likewise. + (ranlib_LDADD): Likewise. + (dlltool_LDADD): Likewise. + (windres_LDADD): Likewise. + * po/Make-in, po/POTFILES.in, po/binutils.pot: New files. + Tue Apr 21 16:07:18 1998 Stanislav Brabec * objcopy.c (preserve_dates): New file static variable. diff --git a/binutils/Makefile.am b/binutils/Makefile.am index a4205f8191..b0396b61f2 100644 --- a/binutils/Makefile.am +++ b/binutils/Makefile.am @@ -2,6 +2,8 @@ AUTOMAKE_OPTIONS = cygnus dejagnu +SUBDIRS = po + tooldir = $(exec_prefix)/$(target_alias) ## These aren't set by automake, because they appear in @@ -92,6 +94,11 @@ OPCODES = ../opcodes/libopcodes.la LIBIBERTY = ../libiberty/libiberty.a +POTFILES = $(CFILES) $(DEBUG_SRCS) $(HFILES) +po/POTFILES.in: @MAINT@ Makefile + for file in $(POTFILES); do echo $$file; done | sort > tmp \ + && mv tmp $(srcdir)/po/POTFILES.in + EXPECT = `if [ -f $$r/../expect/expect ] ; then \ echo $$r/../expect/expect ; \ else echo expect ; fi` @@ -135,7 +142,7 @@ installcheck: info_TEXINFOS = binutils.texi -LDADD = $(BFDLIB) $(LIBIBERTY) +LDADD = $(BFDLIB) $(LIBIBERTY) $(INTLLIBS) size_SOURCES = size.c $(BULIBS) @@ -148,7 +155,7 @@ strip_new_SOURCES = objcopy.c is-strip.c $(WRITE_DEBUG_SRCS) $(BULIBS) nm_new_SOURCES = nm.c $(BULIBS) objdump_SOURCES = objdump.c prdbg.c $(DEBUG_SRCS) $(BULIBS) -objdump_LDADD = $(OPCODES) $(BFDLIB) $(LIBIBERTY) +objdump_LDADD = $(OPCODES) $(BFDLIB) $(LIBIBERTY) $(INTLLIBS) underscore.c: stamp-under ; @true @@ -162,13 +169,13 @@ cplus-dem.o: $(BASEDIR)/libiberty/cplus-dem.c $(INCDIR)/getopt.h $(COMPILE) -c -DMAIN -DVERSION='"$(VERSION)"' $(BASEDIR)/libiberty/cplus-dem.c c__filt_SOURCES = -c__filt_LDADD = cplus-dem.o underscore.o $(LIBIBERTY) +c__filt_LDADD = cplus-dem.o underscore.o $(LIBIBERTY) $(INTLLIBS) ar_SOURCES = arparse.y arlex.l ar.c not-ranlib.c arsup.c $(BULIBS) -ar_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ +ar_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS) ranlib_SOURCES = ar.c is-ranlib.c arparse.y arlex.l arsup.c $(BULIBS) -ranlib_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ +ranlib_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS) addr2line_SOURCES = addr2line.c $(BULIBS) @@ -218,7 +225,7 @@ sysinfo.o: sysinfo.c srconv_SOURCES = srconv.c coffgrok.c $(BULIBS) dlltool_SOURCES = dlltool.c defparse.y deflex.l $(BULIBS) -dlltool_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ +dlltool_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS) dlltool.o:dlltool.c $(COMPILE) -c $(DLLTOOL_DEFS) $(srcdir)/dlltool.c @@ -237,10 +244,11 @@ nlmconv_SOURCES = nlmconv.c nlmheader.y $(BULIBS) windres_SOURCES = windres.c resrc.c rescoff.c resbin.c rcparse.y rclex.l \ $(BULIBS) -windres_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ +windres_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS) DISTSTUFF = arparse.c arparse.h arlex.c nlmheader.c sysinfo.c sysinfo.h \ - syslex.c deflex.c + syslex.c deflex.c defparse.h defparse.c rclex.c rcparse.h rcparse.c + diststuff: $(DISTSTUFF) info DISTCLEANFILES = stamp-under sysinfo underscore.c sysroff.c sysroff.h \ diff --git a/binutils/Makefile.in b/binutils/Makefile.in index 8cecb1f841..b9483ab6d7 100644 --- a/binutils/Makefile.in +++ b/binutils/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated automatically by automake 1.2e from Makefile.am +# Makefile.in generated automatically by automake 1.3 from Makefile.am # Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation @@ -32,6 +32,8 @@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include +DISTDIR = + pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ @@ -70,20 +72,15 @@ CC = @CC@ DLLTOOL_DEFS = @DLLTOOL_DEFS@ EXEEXT = @EXEEXT@ HDEFINES = @HDEFINES@ -LD = @LD@ LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ NLMCONV_DEFS = @NLMCONV_DEFS@ -NM = @NM@ -PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ UNDERSCORE = @UNDERSCORE@ -VERSION = @VERSION@ AUTOMAKE_OPTIONS = cygnus dejagnu +SUBDIRS = po + tooldir = $(exec_prefix)/$(target_alias) CC_FOR_BUILD = @CC_FOR_BUILD@ @@ -170,6 +167,8 @@ OPCODES = ../opcodes/libopcodes.la LIBIBERTY = ../libiberty/libiberty.a +POTFILES = $(CFILES) $(DEBUG_SRCS) $(HFILES) + EXPECT = `if [ -f $$r/../expect/expect ] ; then \ echo $$r/../expect/expect ; \ else echo expect ; fi` @@ -194,7 +193,7 @@ CC_FOR_TARGET = ` \ info_TEXINFOS = binutils.texi -LDADD = $(BFDLIB) $(LIBIBERTY) +LDADD = $(BFDLIB) $(LIBIBERTY) $(INTLLIBS) size_SOURCES = size.c $(BULIBS) @@ -207,23 +206,23 @@ strip_new_SOURCES = objcopy.c is-strip.c $(WRITE_DEBUG_SRCS) $(BULIBS) nm_new_SOURCES = nm.c $(BULIBS) objdump_SOURCES = objdump.c prdbg.c $(DEBUG_SRCS) $(BULIBS) -objdump_LDADD = $(OPCODES) $(BFDLIB) $(LIBIBERTY) +objdump_LDADD = $(OPCODES) $(BFDLIB) $(LIBIBERTY) $(INTLLIBS) c__filt_SOURCES = -c__filt_LDADD = cplus-dem.o underscore.o $(LIBIBERTY) +c__filt_LDADD = cplus-dem.o underscore.o $(LIBIBERTY) $(INTLLIBS) ar_SOURCES = arparse.y arlex.l ar.c not-ranlib.c arsup.c $(BULIBS) -ar_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ +ar_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS) ranlib_SOURCES = ar.c is-ranlib.c arparse.y arlex.l arsup.c $(BULIBS) -ranlib_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ +ranlib_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS) addr2line_SOURCES = addr2line.c $(BULIBS) srconv_SOURCES = srconv.c coffgrok.c $(BULIBS) dlltool_SOURCES = dlltool.c defparse.y deflex.l $(BULIBS) -dlltool_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ +dlltool_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS) coffdump_SOURCES = coffdump.c coffgrok.c $(BULIBS) @@ -233,10 +232,10 @@ nlmconv_SOURCES = nlmconv.c nlmheader.y $(BULIBS) windres_SOURCES = windres.c resrc.c rescoff.c resbin.c rcparse.y rclex.l \ $(BULIBS) -windres_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ +windres_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS) DISTSTUFF = arparse.c arparse.h arlex.c nlmheader.c sysinfo.c sysinfo.h \ - syslex.c deflex.c + syslex.c deflex.c defparse.h defparse.c rclex.c rcparse.h rcparse.c DISTCLEANFILES = stamp-under sysinfo underscore.c sysroff.c sysroff.h \ site.exp site.bak @@ -335,13 +334,14 @@ CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ +MAKEINFO = `if test -f $(top_builddir)/../texinfo/makeinfo/makeinfo; then echo $(top_builddir)/../texinfo/makeinfo/makeinfo; else echo makeinfo; fi` TEXI2DVI = `if test -f $(top_srcdir)/../texinfo/util/texi2dvi; then echo $(top_srcdir)/../texinfo/util/texi2dvi; else echo texi2dvi; fi` TEXINFO_TEX = $(top_srcdir)/../texinfo/texinfo.tex INFO_DEPS = binutils.info DVIS = binutils.dvi TEXINFOS = binutils.texi -MANS = ar.1 nm.1 objdump.1 ranlib.1 size.1 strings.1 strip.1 objcopy.1 addr2line.1 nlmconv.1 $(DEMANGLER_PROG).1 - +man1dir = $(mandir)/man1 +MANS = $(man_MANS) NROFF = nroff DIST_COMMON = README ChangeLog Makefile.am Makefile.in NEWS acconfig.h \ @@ -350,6 +350,9 @@ configure.in deflex.c defparse.c nlmheader.c rclex.c rcparse.c \ stamp-h.in +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar @@ -357,14 +360,14 @@ GZIP = --best SOURCES = $(nlmconv_SOURCES) $(srconv_SOURCES) $(sysdump_SOURCES) $(coffdump_SOURCES) $(dlltool_SOURCES) $(windres_SOURCES) $(size_SOURCES) $(objdump_SOURCES) $(ar_SOURCES) $(strings_SOURCES) $(ranlib_SOURCES) $(c__filt_SOURCES) $(objcopy_SOURCES) $(addr2line_SOURCES) $(nm_new_SOURCES) $(strip_new_SOURCES) OBJECTS = $(nlmconv_OBJECTS) $(srconv_OBJECTS) $(sysdump_OBJECTS) $(coffdump_OBJECTS) $(dlltool_OBJECTS) $(windres_OBJECTS) $(size_OBJECTS) $(objdump_OBJECTS) $(ar_OBJECTS) $(strings_OBJECTS) $(ranlib_OBJECTS) $(c__filt_OBJECTS) $(objcopy_OBJECTS) $(addr2line_OBJECTS) $(nm_new_OBJECTS) $(strip_new_OBJECTS) -default: all +all: all-recursive-am all-am .SUFFIXES: -.SUFFIXES: .S .c .dvi .info .l .lo .o .ps .s .texi .texinfo .y -$(srcdir)/Makefile.in: @MAINT@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) +.SUFFIXES: .S .c .dvi .info .l .lo .o .ps .s .texi .texinfo .txi .y +$(srcdir)/Makefile.in: @MAINT@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status @@ -408,18 +411,18 @@ maintainer-clean-binPROGRAMS: install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) - $(mkinstalldirs) $(bindir) + $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ - echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \ + echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \ else :; fi; \ done uninstall-binPROGRAMS: - $(NORMAL_UNINSTALL) + @$(NORMAL_UNINSTALL) list='$(bin_PROGRAMS)'; for p in $$list; do \ - rm -f $(bindir)/`echo $$p|sed '$(transform)'`; \ + rm -f $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \ done mostlyclean-noinstPROGRAMS: @@ -571,26 +574,38 @@ DVIPS = dvips .texinfo.dvi: TEXINPUTS=$(top_srcdir)/../texinfo:$$TEXINPUTS \ MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< + +.txi.info: + @rm -f $@ $@-[0-9] $@-[0-9][0-9] + $(MAKEINFO) -I $(srcdir) $< + +.txi.dvi: + TEXINPUTS=$(top_srcdir)/../texinfo:$$TEXINPUTS \ + MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< + +.txi: + @rm -f $@ $@-[0-9] $@-[0-9][0-9] + $(MAKEINFO) -I $(srcdir) $< .dvi.ps: $(DVIPS) $< -o $@ install-info-am: $(INFO_DEPS) @$(NORMAL_INSTALL) - $(mkinstalldirs) $(infodir) + $(mkinstalldirs) $(DESTDIR)$(infodir) @for file in $(INFO_DEPS); do \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ if test -f $$d/$$ifile; then \ - echo " $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile"; \ - $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile; \ + echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; \ + $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; \ else : ; fi; \ done; \ done @$(POST_INSTALL) @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ for file in $(INFO_DEPS); do \ - echo " install-info --info-dir=$(infodir) $(infodir)/$$file";\ - install-info --info-dir=$(infodir) $(infodir)/$$file || :;\ + echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\ + install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\ done; \ else : ; fi @@ -601,11 +616,11 @@ uninstall-info: else ii=; fi; \ for file in $(INFO_DEPS); do \ test -z "$ii" \ - || install-info --info-dir=$(infodir) --remove $$file; \ + || install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \ done - $(NORMAL_UNINSTALL) + @$(NORMAL_UNINSTALL) for file in $(INFO_DEPS); do \ - (cd $(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \ + (cd $(DESTDIR)$(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \ done dist-info: $(INFO_DEPS) @@ -637,101 +652,82 @@ maintainer-clean-aminfo: fi; \ done clean-info: mostlyclean-aminfo -install-man: $(MANS) - $(NORMAL_INSTALL) - $(mkinstalldirs) $(mandir)/man1 - @sect=1; \ - inst=`echo "ar" | sed '$(transform)'`.1; \ - if test -f $(srcdir)/ar.1; then file=$(srcdir)/ar.1; \ - else file=ar.1; fi; \ - echo " $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst"; \ - $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst - @sect=1; \ - inst=`echo "nlmconv" | sed '$(transform)'`.1; \ - if test -f $(srcdir)/nlmconv.1; then file=$(srcdir)/nlmconv.1; \ - else file=nlmconv.1; fi; \ - echo " $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst"; \ - $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst - @sect=1; \ - inst=`echo "$(DEMANGLER_PROG)" | sed '$(transform)'`.1; \ - if test -f $(srcdir)/$(DEMANGLER_PROG).1; then file=$(srcdir)/$(DEMANGLER_PROG).1; \ - else file=$(DEMANGLER_PROG).1; fi; \ - echo " $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst"; \ - $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst - @sect=1; \ - inst=`echo "nm" | sed '$(transform)'`.1; \ - if test -f $(srcdir)/nm.1; then file=$(srcdir)/nm.1; \ - else file=nm.1; fi; \ - echo " $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst"; \ - $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst - @sect=1; \ - inst=`echo "objdump" | sed '$(transform)'`.1; \ - if test -f $(srcdir)/objdump.1; then file=$(srcdir)/objdump.1; \ - else file=objdump.1; fi; \ - echo " $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst"; \ - $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst - @sect=1; \ - inst=`echo "ranlib" | sed '$(transform)'`.1; \ - if test -f $(srcdir)/ranlib.1; then file=$(srcdir)/ranlib.1; \ - else file=ranlib.1; fi; \ - echo " $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst"; \ - $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst - @sect=1; \ - inst=`echo "size" | sed '$(transform)'`.1; \ - if test -f $(srcdir)/size.1; then file=$(srcdir)/size.1; \ - else file=size.1; fi; \ - echo " $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst"; \ - $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst - @sect=1; \ - inst=`echo "strings" | sed '$(transform)'`.1; \ - if test -f $(srcdir)/strings.1; then file=$(srcdir)/strings.1; \ - else file=strings.1; fi; \ - echo " $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst"; \ - $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst - @sect=1; \ - inst=`echo "strip" | sed '$(transform)'`.1; \ - if test -f $(srcdir)/strip.1; then file=$(srcdir)/strip.1; \ - else file=strip.1; fi; \ - echo " $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst"; \ - $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst - @sect=1; \ - inst=`echo "objcopy" | sed '$(transform)'`.1; \ - if test -f $(srcdir)/objcopy.1; then file=$(srcdir)/objcopy.1; \ - else file=objcopy.1; fi; \ - echo " $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst"; \ - $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst - @sect=1; \ - inst=`echo "addr2line" | sed '$(transform)'`.1; \ - if test -f $(srcdir)/addr2line.1; then file=$(srcdir)/addr2line.1; \ - else file=addr2line.1; fi; \ - echo " $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst"; \ - $(INSTALL_DATA) $$file $(mandir)/man$$sect/$$inst -uninstall-man: - $(NORMAL_UNINSTALL) - -inst=`echo "ar" | sed '$(transform)'`.1; \ - rm -f $(mandir)/man1/$$inst - -inst=`echo "nlmconv" | sed '$(transform)'`.1; \ - rm -f $(mandir)/man1/$$inst - -inst=`echo "$(DEMANGLER_PROG)" | sed '$(transform)'`.1; \ - rm -f $(mandir)/man1/$$inst - -inst=`echo "nm" | sed '$(transform)'`.1; \ - rm -f $(mandir)/man1/$$inst - -inst=`echo "objdump" | sed '$(transform)'`.1; \ - rm -f $(mandir)/man1/$$inst - -inst=`echo "ranlib" | sed '$(transform)'`.1; \ - rm -f $(mandir)/man1/$$inst - -inst=`echo "size" | sed '$(transform)'`.1; \ - rm -f $(mandir)/man1/$$inst - -inst=`echo "strings" | sed '$(transform)'`.1; \ - rm -f $(mandir)/man1/$$inst - -inst=`echo "strip" | sed '$(transform)'`.1; \ - rm -f $(mandir)/man1/$$inst - -inst=`echo "objcopy" | sed '$(transform)'`.1; \ - rm -f $(mandir)/man1/$$inst - -inst=`echo "addr2line" | sed '$(transform)'`.1; \ - rm -f $(mandir)/man1/$$inst +install-man1: + $(mkinstalldirs) $(DESTDIR)$(man1dir) + @list='$(man1_MANS)'; \ + l2='$(man_MANS)'; for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ + done +uninstall-man1: + @list='$(man1_MANS)'; \ + l2='$(man_MANS)'; for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ + rm -f $(DESTDIR)$(man1dir)/$$inst; \ + done +install-man: $(MANS) + @$(NORMAL_INSTALL) + $(MAKE) install-man1 +uninstall-man: + @$(NORMAL_UNINSTALL) + $(MAKE) uninstall-man1 + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. + +@SET_MAKE@ + +all-recursive install-data-recursive install-exec-recursive \ +installdirs-recursive install-recursive uninstall-recursive install-info-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + target=`echo $@ | sed s/-recursive//`; \ + echo "Making $$target in $$subdir"; \ + (cd $$subdir && $(MAKE) $$target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ + rev="$$subdir $$rev"; \ + done; \ + for subdir in $$rev; do \ + target=`echo $@ | sed s/-recursive//`; \ + echo "Making $$target in $$subdir"; \ + (cd $$subdir && $(MAKE) $$target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + (cd $$subdir && $(MAKE) tags); \ + done tags: TAGS @@ -739,9 +735,12 @@ ID: $(HEADERS) $(SOURCES) $(LISP) here=`pwd` && cd $(srcdir) \ && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP) -TAGS: $(HEADERS) $(SOURCES) config.in $(TAGS_DEPENDENCIES) $(LISP) +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.in $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + done; \ list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ @@ -800,6 +799,14 @@ distdir: $(DISTFILES) || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file; \ done + for subdir in $(SUBDIRS); do \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + done $(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info RUNTESTFLAGS = @@ -826,29 +833,38 @@ site.exp: Makefile -@sed '1,/^## All variables above are.*##/ d' site.bak >> $@-t -@mv site.exp site.bak @mv $@-t site.exp -info: $(INFO_DEPS) -dvi: $(DVIS) +info: $(INFO_DEPS) info-recursive +dvi: $(DVIS) dvi-recursive check: - $(MAKE) check-DEJAGNU -installcheck: -install-info: install-info-am -install-exec: install-binPROGRAMS install-exec-local + $(MAKE) check-recursive check-DEJAGNU +installcheck: installcheck-recursive +install-info: install-info-am install-info-recursive +all-recursive-am: config.h + $(MAKE) all-recursive + +all-am: Makefile $(PROGRAMS) $(MANS) config.h + +install-exec-am: install-binPROGRAMS install-exec-local + +install-data-am: install-man + +uninstall-am: uninstall-binPROGRAMS uninstall-man + +install-exec: install-exec-recursive install-exec-am @$(NORMAL_INSTALL) -install-data: install-man +install-data: install-data-recursive install-data-am @$(NORMAL_INSTALL) -install: install-exec install-data all +install: install-recursive install-exec-am install-data-am @: -uninstall: uninstall-binPROGRAMS uninstall-man - -all: Makefile $(PROGRAMS) $(MANS) config.h +uninstall: uninstall-recursive uninstall-am install-strip: $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install -installdirs: - $(mkinstalldirs) $(bindir) $(mandir)/man1 +installdirs: installdirs-recursive + $(mkinstalldirs) $(DATADIR)$(bindir) $(DESTDIR)$(mandir)/man1 mostlyclean-generic: @@ -865,46 +881,65 @@ distclean-generic: maintainer-clean-generic: -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -mostlyclean: mostlyclean-hdr mostlyclean-binPROGRAMS \ +mostlyclean-am: mostlyclean-hdr mostlyclean-binPROGRAMS \ mostlyclean-noinstPROGRAMS mostlyclean-compile \ mostlyclean-libtool mostlyclean-aminfo mostlyclean-tags \ - mostlyclean-generic mostlyclean-local + mostlyclean-generic -clean: clean-hdr clean-binPROGRAMS clean-noinstPROGRAMS clean-compile \ - clean-libtool clean-aminfo clean-tags clean-generic \ - mostlyclean +clean-am: clean-hdr clean-binPROGRAMS clean-noinstPROGRAMS \ + clean-compile clean-libtool clean-aminfo clean-tags \ + clean-generic mostlyclean-am -distclean: distclean-hdr distclean-binPROGRAMS distclean-noinstPROGRAMS \ - distclean-compile distclean-libtool distclean-aminfo \ - distclean-tags distclean-generic clean - -rm -f config.status - -rm -f libtool +distclean-am: distclean-hdr distclean-binPROGRAMS \ + distclean-noinstPROGRAMS distclean-compile \ + distclean-libtool distclean-aminfo distclean-tags \ + distclean-generic clean-am -maintainer-clean: maintainer-clean-hdr maintainer-clean-binPROGRAMS \ +maintainer-clean-am: maintainer-clean-hdr maintainer-clean-binPROGRAMS \ maintainer-clean-noinstPROGRAMS \ maintainer-clean-compile maintainer-clean-libtool \ maintainer-clean-aminfo maintainer-clean-tags \ - maintainer-clean-generic distclean + maintainer-clean-generic distclean-am + +mostlyclean: mostlyclean-recursive mostlyclean-am mostlyclean-local + +clean: clean-recursive clean-am + +distclean: distclean-recursive distclean-am + -rm -f config.status + -rm -f libtool + +maintainer-clean: maintainer-clean-recursive maintainer-clean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." -rm -f config.status -.PHONY: default mostlyclean-hdr distclean-hdr clean-hdr \ -maintainer-clean-hdr mostlyclean-binPROGRAMS distclean-binPROGRAMS \ -clean-binPROGRAMS maintainer-clean-binPROGRAMS uninstall-binPROGRAMS \ -install-binPROGRAMS mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \ +.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ +mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ +maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ +mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \ clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \ mostlyclean-compile distclean-compile clean-compile \ maintainer-clean-compile mostlyclean-libtool distclean-libtool \ clean-libtool maintainer-clean-libtool install-info-am uninstall-info \ mostlyclean-aminfo distclean-aminfo clean-aminfo \ -maintainer-clean-aminfo install-man uninstall-man tags mostlyclean-tags \ +maintainer-clean-aminfo install-man1 uninstall-man1 install-man \ +uninstall-man install-data-recursive uninstall-data-recursive \ +install-exec-recursive uninstall-exec-recursive installdirs-recursive \ +uninstalldirs-recursive all-recursive check-recursive \ +installcheck-recursive info-recursive dvi-recursive \ +mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ distclean-tags clean-tags maintainer-clean-tags distdir check-DEJAGNU \ -info dvi installcheck install-info install-exec install-data install \ -uninstall all installdirs mostlyclean-generic distclean-generic \ +info dvi installcheck install-info all-recursive-am all-am \ +install-exec-am install-data-am uninstall-am install-exec install-data \ +install uninstall all installdirs mostlyclean-generic distclean-generic \ clean-generic maintainer-clean-generic clean mostlyclean distclean \ maintainer-clean +po/POTFILES.in: @MAINT@ Makefile + for file in $(POTFILES); do echo $$file; done | sort > tmp \ + && mv tmp $(srcdir)/po/POTFILES.in check-DEJAGNU: site.exp srcdir=`cd $(srcdir) && pwd`; export srcdir; \ @@ -987,6 +1022,7 @@ dlltool.o:dlltool.c nlmconv.o: nlmconv.c $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h ldname=`echo ld | sed '$(transform)'`; \ $(COMPILE) -c -DLD_NAME="\"$${ldname}\"" @NLMCONV_DEFS@ $(srcdir)/nlmconv.c + diststuff: $(DISTSTUFF) info # Targets to rebuild dependencies in this Makefile. diff --git a/binutils/acconfig.h b/binutils/acconfig.h index c38c529c90..816bf84554 100644 --- a/binutils/acconfig.h +++ b/binutils/acconfig.h @@ -32,3 +32,18 @@ /* Do we need to use the b modifier when opening binary files? */ #undef USE_BINARY_FOPEN + +/* Define to 1 if NLS is requested. */ +#undef ENABLE_NLS + +/* Define as 1 if you have catgets and don't want to use GNU gettext. */ +#undef HAVE_CATGETS + +/* Define as 1 if you have gettext and don't want to use GNU gettext. */ +#undef HAVE_GETTEXT + +/* Define as 1 if you have the stpcpy function. */ +#undef HAVE_STPCPY + +/* Define if your locale.h file contains LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES diff --git a/binutils/addr2line.c b/binutils/addr2line.c new file mode 100644 index 0000000000..3d4ff90355 --- /dev/null +++ b/binutils/addr2line.c @@ -0,0 +1,324 @@ +/* addr2line.c -- convert addresses to line number and function name + Copyright 1997, 1998 Free Software Foundation, Inc. + Contributed by Ulrich Lauther + + This file is part of GNU Binutils. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Derived from objdump.c and nm.c by Ulrich.Lauther@zfe.siemens.de + + Usage: + addr2line [options] addr addr ... + or + addr2line [options] + + both forms write results to stdout, the second form reads addresses + to be converted from stdin. */ + +#include +#include + +#include "bfd.h" +#include "getopt.h" +#include "libiberty.h" +#include "demangle.h" +#include "bucomm.h" + +extern char *program_version; + +static boolean with_functions; /* -f, show function names. */ +static boolean do_demangle; /* -C, demangle names. */ +static boolean base_names; /* -s, strip directory names. */ + +static int naddr; /* Number of addresses to process. */ +static char **addr; /* Hex addresses to process. */ + +static asymbol **syms; /* Symbol table. */ + +static struct option long_options[] = +{ + {"basenames", no_argument, NULL, 's'}, + {"demangle", no_argument, NULL, 'C'}, + {"exe", required_argument, NULL, 'e'}, + {"functions", no_argument, NULL, 'f'}, + {"target", required_argument, NULL, 'b'}, + {"help", no_argument, NULL, 'H'}, + {"version", no_argument, NULL, 'V'}, + {0, no_argument, 0, 0} +}; + +static void usage PARAMS ((FILE *, int)); +static void slurp_symtab PARAMS ((bfd *)); +static void find_address_in_section PARAMS ((bfd *, asection *, PTR)); +static void translate_addresses PARAMS ((bfd *)); +static void process_file PARAMS ((const char *, const char *)); + +/* Print a usage message to STREAM and exit with STATUS. */ + +static void +usage (stream, status) + FILE *stream; + int status; +{ + fprintf (stream, _("\ +Usage: %s [-CfsHV] [-b bfdname] [--target=bfdname]\n\ + [-e executable] [--exe=executable] [--demangle]\n\ + [--basenames] [--functions] [addr addr ...]\n"), + program_name); + list_supported_targets (program_name, stream); + if (status == 0) + fprintf (stream, _("Report bugs to bug-gnu-utils@gnu.org\n")); + exit (status); +} + +/* Read in the symbol table. */ + +static void +slurp_symtab (abfd) + bfd *abfd; +{ + long storage; + long symcount; + + if ((bfd_get_file_flags (abfd) & HAS_SYMS) == 0) + return; + + storage = bfd_get_symtab_upper_bound (abfd); + if (storage < 0) + bfd_fatal (bfd_get_filename (abfd)); + + syms = (asymbol **) xmalloc (storage); + + symcount = bfd_canonicalize_symtab (abfd, syms); + if (symcount < 0) + bfd_fatal (bfd_get_filename (abfd)); +} + +/* These global variables are used to pass information between + translate_addresses and find_address_in_section. */ + +static bfd_vma pc; +static const char *filename; +static const char *functionname; +static unsigned int line; +static boolean found; + +/* Look for an address in a section. This is called via + bfd_map_over_sections. */ + +static void +find_address_in_section (abfd, section, data) + bfd *abfd; + asection *section; + PTR data; +{ + bfd_vma vma; + + if (found) + return; + + if ((bfd_get_section_flags (abfd, section) & SEC_ALLOC) == 0) + return; + + vma = bfd_get_section_vma (abfd, section); + if (pc < vma) + return; + + found = bfd_find_nearest_line (abfd, section, syms, pc - vma, + &filename, &functionname, &line); +} + +/* Read hexadecimal addresses from stdin, translate into + file_name:line_number and optionally function name. */ + +static void +translate_addresses (abfd) + bfd *abfd; +{ + int read_stdin = (naddr == 0); + + for (;;) + { + if (read_stdin) + { + char addr_hex[100]; + + if (fgets (addr_hex, sizeof addr_hex, stdin) == NULL) + break; + pc = bfd_scan_vma (addr_hex, NULL, 16); + } + else + { + if (naddr <= 0) + break; + --naddr; + pc = bfd_scan_vma (*addr++, NULL, 16); + } + + found = false; + bfd_map_over_sections (abfd, find_address_in_section, (PTR) NULL); + + if (! found) + { + if (with_functions) + printf ("??\n"); + printf ("??:0\n"); + } + else + { + if (with_functions) + { + if (*functionname == '\0') + printf ("??\n"); + else if (! do_demangle) + printf ("%s\n", functionname); + else + { + char *res; + + res = cplus_demangle (functionname, DMGL_ANSI | DMGL_PARAMS); + if (res == NULL) + printf ("%s\n", functionname); + else + { + printf ("%s\n", res); + free (res); + } + } + } + + if (base_names) + { + char *h; + + h = strrchr (filename, '/'); + if (h != NULL) + filename = h + 1; + } + + printf ("%s:%u\n", filename, line); + } + + /* fflush() is essential for using this command as a server + child process that reads addresses from a pipe and responds + with line number information, processing one address at a + time. */ + fflush (stdout); + } +} + +/* Process a file. */ + +static void +process_file (filename, target) + const char *filename; + const char *target; +{ + bfd *abfd; + char **matching; + + abfd = bfd_openr (filename, target); + if (abfd == NULL) + bfd_fatal (filename); + + if (bfd_check_format (abfd, bfd_archive)) + fatal (_("%s: can not get addresses from archive"), filename); + + if (! bfd_check_format_matches (abfd, bfd_object, &matching)) + { + bfd_nonfatal (bfd_get_filename (abfd)); + if (bfd_get_error () == bfd_error_file_ambiguously_recognized) + { + list_matching_formats (matching); + free (matching); + } + xexit (1); + } + + slurp_symtab (abfd); + + translate_addresses (abfd); + + if (syms != NULL) + { + free (syms); + syms = NULL; + } + + bfd_close (abfd); +} + +int +main (argc, argv) + int argc; + char **argv; +{ + char *filename; + char *target; + int c; + + program_name = *argv; + xmalloc_set_program_name (program_name); + + bfd_init (); + set_default_bfd_target (); + + filename = NULL; + target = NULL; + while ((c = getopt_long (argc, argv, "b:Ce:sfHV", long_options, (int *) 0)) + != EOF) + { + switch (c) + { + case 0: + break; /* we've been given a long option */ + case 'b': + target = optarg; + break; + case 'C': + do_demangle = true; + break; + case 'e': + filename = optarg; + break; + case 's': + base_names = true; + break; + case 'f': + with_functions = true; + break; + case 'V': + print_version ("addr2line"); + break; + case 'H': + usage (stdout, 0); + break; + default: + usage (stderr, 1); + break; + } + } + + if (filename == NULL) + filename = "a.out"; + + addr = argv + optind; + naddr = argc - optind; + + process_file (filename, target); + + return 0; +} diff --git a/binutils/ar.c b/binutils/ar.c index 7d431c4627..a8fdebf101 100644 --- a/binutils/ar.c +++ b/binutils/ar.c @@ -1,5 +1,5 @@ /* ar.c - Archive modify and extract. - Copyright 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc. + Copyright 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -52,9 +52,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Kludge declaration from BFD! This is ugly! FIXME! XXX */ struct ar_hdr * - bfd_special_undocumented_glue PARAMS ((bfd * abfd, char *filename)); + bfd_special_undocumented_glue PARAMS ((bfd * abfd, const char *filename)); -/* Forward declarations */ +/* Static declarations */ + +static void +mri_emul PARAMS ((void)); static const char * normalize PARAMS ((const char *, bfd *)); @@ -94,6 +97,9 @@ ranlib_only PARAMS ((const char *archname)); static void ranlib_touch PARAMS ((const char *archname)); + +static void +usage PARAMS ((int)); /** Globals and flags */ @@ -139,12 +145,15 @@ enum pos pos_default, pos_before, pos_after, pos_end } postype = pos_default; +static bfd ** +get_pos_bfd PARAMS ((bfd **, enum pos, const char *)); + /* Whether to truncate names of files stored in the archive. */ static boolean ar_truncate = false; int interactive = 0; -void +static void mri_emul () { interactive = isatty (fileno (stdin)); @@ -201,13 +210,13 @@ map_over_members (arch, function, files, count) } } if (!found) - fprintf (stderr, "no entry %s in archive\n", *files); + fprintf (stderr, _("no entry %s in archive\n"), *files); } } boolean operation_alters_arch = false; -void +static void usage (help) int help; { @@ -215,18 +224,18 @@ usage (help) s = help ? stdout : stderr; if (! is_ranlib) - fprintf (s, "\ -Usage: %s [-]{dmpqrtx}[abcilosuvV] [member-name] archive-file file...\n\ - %s -M [\n\n", bfd_get_filename (abfd)); + printf (_("\n\n\n"), bfd_get_filename (abfd)); bfd_seek (abfd, 0, SEEK_SET); @@ -703,7 +720,7 @@ print_contents (abfd) nread = bfd_read (cbuf, 1, tocopy, abfd); /* oops -- broke abstraction! */ if (nread != tocopy) - fatal ("%s is not a valid archive", + fatal (_("%s is not a valid archive"), bfd_get_filename (bfd_my_archive (abfd))); fwrite (cbuf, 1, nread, stdout); ncopied += tocopy; @@ -732,7 +749,7 @@ extract_file (abfd) long size; struct stat buf; if (bfd_stat_arch_elt (abfd, &buf) != 0) - fatal ("internal stat error on %s", bfd_get_filename (abfd)); + fatal (_("internal stat error on %s"), bfd_get_filename (abfd)); size = buf.st_size; if (verbose) @@ -764,7 +781,7 @@ extract_file (abfd) nread = bfd_read (cbuf, 1, tocopy, abfd); if (nread != tocopy) - fatal ("%s is not a valid archive", + fatal (_("%s is not a valid archive"), bfd_get_filename (bfd_my_archive (abfd))); /* See comment above; this saves disk arm motion */ @@ -871,13 +888,13 @@ do_quick_append (archive_filename, files_to_append) if (newfile == false) { if (bfd_check_format (temp, bfd_archive) != true) - fatal ("%s is not an archive", archive_filename); + fatal (_("%s is not an archive"), archive_filename); } else { fwrite (ARMAG, 1, SARMAG, ofile); if (!silent_create) - fprintf (stderr, "%s: creating %s\n", + fprintf (stderr, _("%s: creating %s\n"), program_name, archive_filename); } @@ -988,13 +1005,26 @@ write_archive (iarch) into when altering. DEFAULT_POS should be how to interpret pos_default, and should be a pos value. */ -bfd ** -get_pos_bfd (contents, default_pos) +static bfd ** +get_pos_bfd (contents, default_pos, default_posname) bfd **contents; enum pos default_pos; + const char *default_posname; { bfd **after_bfd = contents; - enum pos realpos = (postype == pos_default ? default_pos : postype); + enum pos realpos; + const char *realposname; + + if (postype == pos_default) + { + realpos = default_pos; + realposname = default_posname; + } + else + { + realpos = postype; + realposname = posname; + } if (realpos == pos_end) { @@ -1004,7 +1034,7 @@ get_pos_bfd (contents, default_pos) else { for (; *after_bfd; after_bfd = &(*after_bfd)->next) - if (!strcmp ((*after_bfd)->filename, posname)) + if (strcmp ((*after_bfd)->filename, realposname) == 0) { if (realpos == pos_after) after_bfd = &(*after_bfd)->next; @@ -1059,7 +1089,7 @@ delete_members (arch, files_to_delete) if (verbose && found == false) { - printf ("No member named `%s'\n", *files_to_delete); + printf (_("No member named `%s'\n"), *files_to_delete); } next_file: ; @@ -1097,7 +1127,7 @@ move_members (arch, files_to_move) *current_ptr_ptr = current_ptr->next; /* Now glue to end */ - after_bfd = get_pos_bfd (&arch->next, pos_end); + after_bfd = get_pos_bfd (&arch->next, pos_end, NULL); link = *after_bfd; *after_bfd = current_ptr; current_ptr->next = link; @@ -1110,7 +1140,7 @@ move_members (arch, files_to_move) current_ptr_ptr = &((*current_ptr_ptr)->next); } - fprintf (stderr, "%s: no entry %s in archive %s!\n", + fprintf (stderr, _("%s: no entry %s in archive %s!\n"), program_name, *files_to_move, arch->filename); xexit (1); next_file:; @@ -1159,17 +1189,16 @@ replace_members (arch, files_to_move, quick) goto next_file; } if (bfd_stat_arch_elt (current, &asbuf) != 0) - fatal ("internal stat error on %s", current->filename); + fatal (_("internal stat error on %s"), current->filename); if (fsbuf.st_mtime <= asbuf.st_mtime) goto next_file; } - /* snip out this entry from the chain */ - *current_ptr = current->next; - - after_bfd = get_pos_bfd (&arch->next, pos_end); + after_bfd = get_pos_bfd (&arch->next, pos_after, + current->filename); temp = *after_bfd; + *after_bfd = bfd_openr (*files_to_move, NULL); if (*after_bfd == (bfd *) NULL) { @@ -1177,6 +1206,9 @@ replace_members (arch, files_to_move, quick) } (*after_bfd)->next = temp; + /* snip out this entry from the chain */ + *current_ptr = (*current_ptr)->next; + if (verbose) { printf ("r - %s\n", *files_to_move); @@ -1192,7 +1224,7 @@ replace_members (arch, files_to_move, quick) /* Add to the end of the archive. */ - after_bfd = get_pos_bfd (&arch->next, pos_end); + after_bfd = get_pos_bfd (&arch->next, pos_end, NULL); temp = *after_bfd; *after_bfd = bfd_openr (*files_to_move, NULL); if (*after_bfd == (bfd *) NULL) @@ -1266,7 +1298,7 @@ ranlib_touch (archname) } if (! bfd_has_map (arch)) - fatal ("%s: no archive map to update", archname); + fatal (_("%s: no archive map to update"), archname); bfd_update_armap_timestamp (arch); diff --git a/binutils/bucomm.h b/binutils/bucomm.h index 3d79d190ae..9320750c61 100644 --- a/binutils/bucomm.h +++ b/binutils/bucomm.h @@ -1,5 +1,5 @@ /* bucomm.h -- binutils common include file. - Copyright 1992 Free Software Foundation, Inc. + Copyright (C) 1992, 93, 94, 95, 96, 1997, 1998 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -15,18 +15,157 @@ 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. */ +#ifndef _BUCOMM_H +#define _BUCOMM_H + +#include "ansidecl.h" +#include +#include + +#include "config.h" + +#ifdef USE_BINARY_FOPEN +#include "fopen-bin.h" +#else +#include "fopen-same.h" +#endif + +#include +#ifndef errno +extern int errno; +#endif + +#ifdef HAVE_UNISTD_H +#include +#endif + +#ifdef HAVE_STRING_H +#include +#else +#ifdef HAVE_STRINGS_H +#include +#else +extern char *strchr (); +extern char *strrchr (); +#endif +#endif + +#ifdef HAVE_STDLIB_H +#include +#endif + +#ifdef HAVE_FCNTL_H +#include +#else +#ifdef HAVE_SYS_FILE_H +#include +#endif +#endif + +#ifdef NEED_DECLARATION_STRSTR +extern char *strstr (); +#endif + +#ifdef HAVE_SBRK +#ifdef NEED_DECLARATION_SBRK +extern char *sbrk (); +#endif +#endif + +#ifdef NEED_DECLARATION_GETENV +extern char *getenv (); +#endif + +#ifndef O_RDONLY +#define O_RDONLY 0 +#endif + +#ifndef O_RDWR +#define O_RDWR 2 +#endif + +#ifndef SEEK_SET +#define SEEK_SET 0 +#endif +#ifndef SEEK_CUR +#define SEEK_CUR 1 +#endif +#ifndef SEEK_END +#define SEEK_END 2 +#endif + +#ifdef __GNUC__ +# undef alloca +# define alloca __builtin_alloca +#else +# if HAVE_ALLOCA_H +# include +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +# if !defined (__STDC__) && !defined (__hpux) +char *alloca (); +# else +void *alloca (); +# endif /* __STDC__, __hpux */ +# endif /* alloca */ +# endif /* HAVE_ALLOCA_H */ +#endif + +#ifdef ENABLE_NLS +#include +#define _(String) gettext (String) +#ifdef gettext_noop +#define N_(String) gettext_noop (String) +#else +#define N_(String) (String) +#endif +#else +/* Stubs that do something close enough. */ +#define textdomain(String) (String) +#define gettext(String) (String) +#define dgettext(Domain,Message) (Message) +#define dcgettext(Domain,Message,Type) (Message) +#define bindtextdomain(Domain,Directory) (Domain) +#define _(String) (String) +#define N_(String) (String) +/* In this case we don't care about the value. */ +#ifndef LC_MESSAGES +#define LC_MESSAGES 0 +#endif +#endif + +/* bucomm.c */ void bfd_nonfatal PARAMS ((CONST char *)); void bfd_fatal PARAMS ((CONST char *)); -PTR xmalloc PARAMS ((size_t)); +void fatal PARAMS ((CONST char *, ...)); -PTR xrealloc PARAMS ((char *, size_t)); +void set_default_bfd_target PARAMS ((void)); -void fatal PARAMS ((CONST char *, ...)); +void list_matching_formats PARAMS ((char **p)); + +void list_supported_targets PARAMS ((const char *, FILE *)); void print_arelt_descr PARAMS ((FILE *file, bfd *abfd, boolean verbose)); +char *make_tempname PARAMS ((char *)); + +bfd_vma parse_vma PARAMS ((const char *, const char *)); + extern char *program_name; + +/* filemode.c */ +void mode_string PARAMS ((unsigned long mode, char *buf)); + +/* version.c */ +extern void print_version PARAMS ((const char *)); + +/* libiberty */ +PTR xmalloc PARAMS ((size_t)); + +PTR xrealloc PARAMS ((PTR, size_t)); + +#endif /* _BUCOMM_H */ diff --git a/binutils/coffdump.c b/binutils/coffdump.c index 120915d7f0..12f634424f 100644 --- a/binutils/coffdump.c +++ b/binutils/coffdump.c @@ -1,5 +1,5 @@ /* Coff file dumper. - Copyright (C) 1994 Free Software Foundation, Inc. + Copyright (C) 1994, 1998 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. */ /* Written by Steve Chamberlain @@ -25,16 +25,13 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include -#include #include -#include "bucomm.h" #include "coffgrok.h" - +#include "bucomm.h" #define PROGRAM_VERSION "1.0" - char *xcalloc(a,b) int a; int b; @@ -103,7 +100,7 @@ dump_coff_lines (p) int i; int online = 0; tab(1); - printf("#lines %d ",p->nlines); + printf(_("#lines %d "),p->nlines); for (i = 0; i < p->nlines; i++) { printf("(%d 0x%x)", p->lines[i], p->addresses[i]); @@ -127,6 +124,12 @@ dump_coff_type (p) printf ("size %d ", p->size); switch (p->type) { + case coff_secdef_type: + printf ("section definition at %x size %x\n", + p->u.asecdef.address, + p->u.asecdef.size); + nl(); + break; case coff_pointer_type: printf ("pointer to"); nl (); @@ -459,7 +462,7 @@ show_usage (file, status) static void show_help () { - printf ("%s: Print a human readable interpretation of a SYSROFF object file\n", + printf (_("%s: Print a human readable interpretation of a SYSROFF object file\n"), program_name); show_usage (stdout, 0); } @@ -495,7 +498,7 @@ main (ac, av) show_help (); /*NOTREACHED*/ case 'V': - printf ("GNU %s version %s\n", program_name, PROGRAM_VERSION); + printf (_("GNU %s version %s\n"), program_name, PROGRAM_VERSION); exit (0); /*NOTREACHED*/ case 0: @@ -513,7 +516,7 @@ main (ac, av) if (!input_file) { - fprintf (stderr,"%s: no input file specified\n", + fprintf (stderr,_("%s: no input file specified\n"), program_name); exit(1); } diff --git a/binutils/configure b/binutils/configure index 67be0f9744..3007ada460 100755 --- a/binutils/configure +++ b/binutils/configure @@ -12,15 +12,23 @@ ac_help= ac_default_prefix=/usr/local # Any additions from configure.in: ac_help="$ac_help - --with-gnu-ld assume the C compiler uses GNU ld [default=no]" + --enable-shared build shared libraries [default=yes] + --enable-shared=PKGS only build shared libraries if the current package + appears as an element in the PKGS list" ac_help="$ac_help - --enable-shared build shared libraries [default=yes]" + --enable-static build static libraries [default=yes] + --enable-static=PKGS only build shared libraries if the current package + appears as an element in the PKGS list" ac_help="$ac_help - --enable-static build static libraries [default=yes]" + --with-gnu-ld assume the C compiler uses GNU ld [default=no]" ac_help="$ac_help --enable-targets alternative target configurations" ac_help="$ac_help --enable-commonbfdlib build shared BFD/opcodes/libiberty library" +ac_help="$ac_help + --disable-nls do not use Native Language Support" +ac_help="$ac_help + --with-included-gettext use the GNU gettext library included here" ac_help="$ac_help --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer" @@ -580,7 +588,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:584: checking host system type" >&5 +echo "configure:592: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -601,7 +609,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$host" 1>&6 echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:605: checking target system type" >&5 +echo "configure:613: checking target system type" >&5 target_alias=$target case "$target_alias" in @@ -619,7 +627,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$target" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:623: checking build system type" >&5 +echo "configure:631: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -654,7 +662,7 @@ test "$host_alias" != "$target_alias" && # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:658: checking for a BSD compatible install" >&5 +echo "configure:666: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -707,24 +715,8 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' - -PACKAGE=binutils - -VERSION=2.8.2 - -if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then - { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } -fi -cat >> confdefs.h <> confdefs.h <&6 -echo "configure:728: checking whether build environment is sane" >&5 +echo "configure:720: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile @@ -735,10 +727,21 @@ echo timestamp > conftestfile # directory). if ( set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` - if test "" = "X"; then + if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftestfile` fi + if test "$*" != "X $srcdir/configure conftestfile" \ + && test "$*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { echo "configure: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" 1>&2; exit 1; } + fi + test "$2" = conftestfile ) then @@ -769,9 +772,54 @@ test "$program_suffix" != NONE && # sed with no file args requires a program. test "$program_transform_name" = "" && program_transform_name="s,x,x," +echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +echo "configure:777: checking whether ${MAKE-make} sets \${MAKE}" >&5 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftestmake <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftestmake +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SET_MAKE= +else + echo "$ac_t""no" 1>&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +PACKAGE=binutils + +VERSION=2.9.1 + +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } +fi +cat >> confdefs.h <> confdefs.h <&6 -echo "configure:775: checking for working aclocal" >&5 +echo "configure:823: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -784,7 +832,7 @@ else fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 -echo "configure:788: checking for working autoconf" >&5 +echo "configure:836: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -797,7 +845,7 @@ else fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 -echo "configure:801: checking for working automake" >&5 +echo "configure:849: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -810,7 +858,7 @@ else fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 -echo "configure:814: checking for working autoheader" >&5 +echo "configure:862: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -823,7 +871,7 @@ else fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 -echo "configure:827: checking for working makeinfo" >&5 +echo "configure:875: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -835,38 +883,58 @@ else echo "$ac_t""missing" 1>&6 fi -echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:840: checking whether ${MAKE-make} sets \${MAKE}" >&5 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftestmake <<\EOF -all: - @echo 'ac_maketemp="${MAKE}"' -EOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes + + +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} +case "$enableval" in +yes) enable_shared=yes ;; +no) enable_shared=no ;; +*) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftestmake + enable_shared=yes fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$ac_t""yes" 1>&6 - SET_MAKE= + +# Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + p=${PACKAGE-default} +case "$enableval" in +yes) enable_static=yes ;; +no) enable_static=no ;; +*) + enable_static=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac else - echo "$ac_t""no" 1>&6 - SET_MAKE="MAKE=${MAKE-make}" + enable_static=yes fi - # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:870: checking for $ac_word" >&5 +echo "configure:938: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -895,7 +963,7 @@ fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:899: checking for $ac_word" >&5 +echo "configure:967: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -924,7 +992,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:928: checking for $ac_word" >&5 +echo "configure:996: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -972,7 +1040,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:976: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1044: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -982,11 +1050,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1058: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1006,12 +1074,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1010: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1078: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1015: checking whether we are using GNU C" >&5 +echo "configure:1083: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1020,7 +1088,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1024: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1092: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1035,7 +1103,7 @@ if test $ac_cv_prog_gcc = yes; then ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1039: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1107: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1075,11 +1143,11 @@ ac_prog=ld if test "$ac_cv_prog_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:1079: checking for ld used by GCC" >&5 +echo "configure:1147: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. - /*) + /* | [A-Za-z]:\\*) test -z "$LD" && LD="$ac_prog" ;; "") @@ -1093,10 +1161,10 @@ echo "configure:1079: checking for ld used by GCC" >&5 esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:1097: checking for GNU ld" >&5 +echo "configure:1165: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -echo "configure:1100: checking for non-GNU ld" >&5 +echo "configure:1168: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1132,7 +1200,7 @@ fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 -echo "configure:1136: checking if the linker ($LD) is GNU ld" >&5 +echo "configure:1204: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1148,25 +1216,21 @@ echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6 echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 -echo "configure:1152: checking for BSD-compatible nm" >&5 +echo "configure:1220: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - case "$NM" in -/*) - ac_cv_path_NM="$NM" # Let the user override the test with a path. - ;; -*) + if test -z "$NM"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do - test -z "$ac_dir" && dir=. + test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/nm; then # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1!d' prevents false positives on HP-UX, which says: + # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored - if ($ac_dir/nm -B /dev/null 2>&1 | sed '1!d'; exit 0) | egrep /dev/null >/dev/null; then + if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ac_cv_path_NM="$ac_dir/nm -B" - elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1!d'; exit 0) | egrep /dev/null >/dev/null; then + elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ac_cv_path_NM="$ac_dir/nm -p" else ac_cv_path_NM="$ac_dir/nm" @@ -1176,8 +1240,9 @@ else done IFS="$ac_save_ifs" test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm - ;; -esac +else + ac_cv_path_NM="$NM" # Let the user override the test with a path. +fi fi NM="$ac_cv_path_NM" @@ -1185,7 +1250,7 @@ echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1189: checking whether ln -s works" >&5 +echo "configure:1254: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1205,51 +1270,19 @@ else echo "$ac_t""no" 1>&6 fi - - - - - - - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - -# Check whether --enable-shared or --disable-shared was given. -if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - p=${PACKAGE-bogus-package-name} - case "$enableval" in - yes) libtool_enable_shared=yes ;; - no) libtool_enable_shared=no ;; - # The value of $p (aka $PACKAGE) is assumed to come from AM_INIT_AUTOMAKE. - # If it didn't, it'll be `bogus-package-name', thus making this condition - # not be used. - *$p*) libtool_enable_shared=yes ;; - *) libtool_enable_shared=no ;; -esac -fi - -test -n "$libtool_enable_shared" && enable_shared="$libtool_enable_shared" -libtool_shared= -test "$enable_shared" = no && libtool_shared=" --disable-shared" - -# Check whether --enable-static or --disable-static was given. -if test "${enable_static+set}" = set; then - enableval="$enable_static" - if test "$enableval" = no; then - libtool_enable_static=no +if test $host != $build; then + ac_tool_prefix=${host_alias}- else - libtool_enable_static=yes -fi + ac_tool_prefix= fi -test -n "$libtool_enable_static" && enable_static="$libtool_enable_static" -libtool_static= -test "$enable_static" = no && libtool_static=" --disable-static" +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' -libtool_flags="$libtool_shared$libtool_static" +# Check for any special flags to pass to ltconfig. +libtool_flags= +test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" +test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" test "$silent" = yes && libtool_flags="$libtool_flags --silent" test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" @@ -1258,42 +1291,169 @@ test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" # libtool support. case "$host" in *-*-irix6*) - ac_save_CFLAGS="$CFLAGS" - flag_passed=no - for f in -32 -64 -n32 ABI -cckr -mips1 -mips2 -mips3 -mips4; do - case "$f" in - ABI) - test -n "$SGI_ABI" && flag_passed=yes - if test "$flag_passed" = no && test "$ac_cv_prog_gcc" = yes; then - # Choose the ABI flag according to GCC's specs. - if $CC -dumpspecs 2>&1 | sed '/^\*link:$/,/^$/!d' | egrep -e '[ ]-32' >/dev/null; then - LD="${LD-ld} -32" - else - LD="${LD-ld} -n32" - fi - fi + # Find out which ABI we are using. + echo '#line 1296 "configure"' > conftest.$ac_ext + if { (eval echo configure:1297: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + LD="${LD-ld} -32" ;; - - *) - if echo " $CC $CFLAGS " | egrep -e "[ ]$f[ ]" > /dev/null; then - flag_passed=yes - LD="${LD-ld} $f" - fi + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" ;; esac - done - CFLAGS="$ac_save_CFLAGS" + fi + rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. CFLAGS="$CFLAGS -belf" ;; + +*-*-cygwin32*) + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1322: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +DLLTOOL="$ac_cv_prog_DLLTOOL" +if test -n "$DLLTOOL"; then + echo "$ac_t""$DLLTOOL" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + +if test -z "$ac_cv_prog_DLLTOOL"; then +if test -n "$ac_tool_prefix"; then + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1353: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_DLLTOOL="dlltool" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_DLLTOOL" && ac_cv_prog_DLLTOOL="false" +fi +fi +DLLTOOL="$ac_cv_prog_DLLTOOL" +if test -n "$DLLTOOL"; then + echo "$ac_t""$DLLTOOL" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + DLLTOOL="false" +fi +fi + +# Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +set dummy ${ac_tool_prefix}as; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1387: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_AS="${ac_tool_prefix}as" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +AS="$ac_cv_prog_AS" +if test -n "$AS"; then + echo "$ac_t""$AS" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + +if test -z "$ac_cv_prog_AS"; then +if test -n "$ac_tool_prefix"; then + # Extract the first word of "as", so it can be a program name with args. +set dummy as; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1418: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_AS="as" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_AS" && ac_cv_prog_AS="false" +fi +fi +AS="$ac_cv_prog_AS" +if test -n "$AS"; then + echo "$ac_t""$AS" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + AS="false" +fi +fi + + + ;; + esac # Actually configure libtool. ac_aux_dir is where install-sh is found. CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ LD="$LD" NM="$NM" RANLIB="$RANLIB" LN_S="$LN_S" \ +DLLTOOL="$DLLTOOL" AS="$AS" \ ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig \ $libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \ || { echo "configure: error: libtool configure failed" 1>&2; exit 1; } @@ -1333,7 +1493,7 @@ fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1337: checking for $ac_word" >&5 +echo "configure:1497: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1362,7 +1522,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1366: checking for $ac_word" >&5 +echo "configure:1526: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1410,7 +1570,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1414: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1574: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1420,11 +1580,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1588: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1444,12 +1604,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1448: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1608: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1453: checking whether we are using GNU C" >&5 +echo "configure:1613: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1458,7 +1618,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1462: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1622: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1473,7 +1633,7 @@ if test $ac_cv_prog_gcc = yes; then ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1477: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1637: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1506,7 +1666,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1510: checking for $ac_word" >&5 +echo "configure:1670: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1535,20 +1695,116 @@ test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" -# Extract the first word of "flex", so it can be a program name with args. -set dummy flex; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1542: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +echo "configure:1700: checking how to run the C preprocessor" >&5 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then +if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$LEX"; then - ac_cv_prog_LEX="$LEX" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then + # This must be in double quotes, not single quotes, because CPP may get + # substituted into the Makefile and "${CC-cc}" will confuse make. + CPP="${CC-cc} -E" + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1721: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1738: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP=/lib/cpp +fi +rm -f conftest* +fi +rm -f conftest* + ac_cv_prog_CPP="$CPP" +fi + CPP="$ac_cv_prog_CPP" +else + ac_cv_prog_CPP="$CPP" +fi +echo "$ac_t""$CPP" 1>&6 + +missing_dir=`cd $ac_aux_dir && pwd` +for ac_prog in flex lex +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1766: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$LEX"; then + ac_cv_prog_LEX="$LEX" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_LEX="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +LEX="$ac_cv_prog_LEX" +if test -n "$LEX"; then + echo "$ac_t""$LEX" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$LEX" && break +done +test -n "$LEX" || LEX=""$missing_dir/missing flex"" + +# Extract the first word of "flex", so it can be a program name with args. +set dummy flex; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1798: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$LEX"; then + ac_cv_prog_LEX="$LEX" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then ac_cv_prog_LEX="flex" break fi @@ -1571,7 +1827,7 @@ then *) ac_lib=l ;; esac echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 -echo "configure:1575: checking for yywrap in -l$ac_lib" >&5 +echo "configure:1831: checking for yywrap in -l$ac_lib" >&5 ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1579,165 +1835,1728 @@ else ac_save_LIBS="$LIBS" LIBS="-l$ac_lib $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LEXLIB="-l$ac_lib" +else + echo "$ac_t""no" 1>&6 +fi + +fi + +echo $ac_n "checking lex output file root""... $ac_c" 1>&6 +echo "configure:1873: checking lex output file root" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # The minimal lex program is just a single line: %%. But some broken lexes +# (Solaris, I think it was) want two %% lines, so accommodate them. +echo '%% +%%' | $LEX +if test -f lex.yy.c; then + ac_cv_prog_lex_root=lex.yy +elif test -f lexyy.c; then + ac_cv_prog_lex_root=lexyy +else + { echo "configure: error: cannot find output from $LEX; giving up" 1>&2; exit 1; } +fi +fi + +echo "$ac_t""$ac_cv_prog_lex_root" 1>&6 +LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root + +echo $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6 +echo "configure:1894: checking whether yytext is a pointer" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # POSIX says lex can declare yytext either as a pointer or an array; the +# default is implementation-dependent. Figure out which it is, since +# not all implementations provide the %pointer and %array declarations. +ac_cv_prog_lex_yytext_pointer=no +echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c +ac_save_LIBS="$LIBS" +LIBS="$LIBS $LEXLIB" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + ac_cv_prog_lex_yytext_pointer=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +LIBS="$ac_save_LIBS" +rm -f "${LEX_OUTPUT_ROOT}.c" + +fi + +echo "$ac_t""$ac_cv_prog_lex_yytext_pointer" 1>&6 +if test $ac_cv_prog_lex_yytext_pointer = yes; then + cat >> confdefs.h <<\EOF +#define YYTEXT_POINTER 1 +EOF + +fi + + +ALL_LINGUAS= +echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 +echo "configure:1937: checking for POSIXized ISC" >&5 +if test -d /etc/conf/kconfig.d && + grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 +then + echo "$ac_t""yes" 1>&6 + ISC=yes # If later tests want to check for ISC. + cat >> confdefs.h <<\EOF +#define _POSIX_SOURCE 1 +EOF + + if test "$GCC" = yes; then + CC="$CC -posix" + else + CC="$CC -Xp" + fi +else + echo "$ac_t""no" 1>&6 + ISC= +fi + +echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +echo "configure:1958: checking for ANSI C header files" >&5 +if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +#include +#include +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1971: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + ac_cv_header_stdc=yes +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +if test "$cross_compiling" = yes; then + : +else + cat > conftest.$ac_ext < +#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int main () { int i; for (i = 0; i < 256; i++) +if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); +exit (0); } + +EOF +if { (eval echo configure:2038: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_header_stdc=no +fi +rm -fr conftest* +fi + +fi +fi + +echo "$ac_t""$ac_cv_header_stdc" 1>&6 +if test $ac_cv_header_stdc = yes; then + cat >> confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + +echo $ac_n "checking for working const""... $ac_c" 1>&6 +echo "configure:2062: checking for working const" >&5 +if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <j = 5; +} +{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; +} + +; return 0; } +EOF +if { (eval echo configure:2116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_const=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_c_const=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_c_const" 1>&6 +if test $ac_cv_c_const = no; then + cat >> confdefs.h <<\EOF +#define const +EOF + +fi + +echo $ac_n "checking for inline""... $ac_c" 1>&6 +echo "configure:2137: checking for inline" >&5 +if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_inline=$ac_kw; break +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +done + +fi + +echo "$ac_t""$ac_cv_c_inline" 1>&6 +case "$ac_cv_c_inline" in + inline | yes) ;; + no) cat >> confdefs.h <<\EOF +#define inline +EOF + ;; + *) cat >> confdefs.h <&6 +echo "configure:2177: checking for off_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "off_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_off_t=yes +else + rm -rf conftest* + ac_cv_type_off_t=no +fi +rm -f conftest* + +fi +echo "$ac_t""$ac_cv_type_off_t" 1>&6 +if test $ac_cv_type_off_t = no; then + cat >> confdefs.h <<\EOF +#define off_t long +EOF + +fi + +echo $ac_n "checking for size_t""... $ac_c" 1>&6 +echo "configure:2210: checking for size_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_size_t=yes +else + rm -rf conftest* + ac_cv_type_size_t=no +fi +rm -f conftest* + +fi +echo "$ac_t""$ac_cv_type_size_t" 1>&6 +if test $ac_cv_type_size_t = no; then + cat >> confdefs.h <<\EOF +#define size_t unsigned +EOF + +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 +echo "configure:2245: checking for working alloca.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +int main() { +char *p = alloca(2 * sizeof(int)); +; return 0; } +EOF +if { (eval echo configure:2257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + ac_cv_header_alloca_h=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_alloca_h=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_header_alloca_h" 1>&6 +if test $ac_cv_header_alloca_h = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_ALLOCA_H 1 +EOF + +fi + +echo $ac_n "checking for alloca""... $ac_c" 1>&6 +echo "configure:2278: checking for alloca" >&5 +if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +#endif + +int main() { +char *p = (char *) alloca(1); +; return 0; } +EOF +if { (eval echo configure:2306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + ac_cv_func_alloca_works=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_func_alloca_works=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_func_alloca_works" 1>&6 +if test $ac_cv_func_alloca_works = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_ALLOCA 1 +EOF + +fi + +if test $ac_cv_func_alloca_works = no; then + # The SVR3 libPW and SVR4 libucb both contain incompatible functions + # that cause trouble. Some versions do not even contain alloca or + # contain a buggy version. If you still want to use their alloca, + # use ar to extract alloca.o from them instead of compiling alloca.c. + ALLOCA=alloca.o + cat >> confdefs.h <<\EOF +#define C_ALLOCA 1 +EOF + + +echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 +echo "configure:2338: checking whether alloca needs Cray hooks" >&5 +if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <&5 | + egrep "webecray" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_os_cray=yes +else + rm -rf conftest* + ac_cv_os_cray=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_os_cray" 1>&6 +if test $ac_cv_os_cray = yes; then +for ac_func in _getb67 GETB67 getb67; do + echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:2368: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <&6 +fi + +done +fi + +echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 +echo "configure:2423: checking stack direction for C alloca" >&5 +if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat > conftest.$ac_ext < addr) ? 1 : -1; +} +main () +{ + exit (find_stack_direction() < 0); +} +EOF +if { (eval echo configure:2450: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + ac_cv_c_stack_direction=1 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_c_stack_direction=-1 +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$ac_cv_c_stack_direction" 1>&6 +cat >> confdefs.h <&6 +echo "configure:2475: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2485: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + +for ac_func in getpagesize +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:2514: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2542: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + +echo $ac_n "checking for working mmap""... $ac_c" 1>&6 +echo "configure:2567: checking for working mmap" >&5 +if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_mmap_fixed_mapped=no +else + cat > conftest.$ac_ext < +#include +#include + +/* This mess was copied from the GNU getpagesize.h. */ +#ifndef HAVE_GETPAGESIZE +# ifdef HAVE_UNISTD_H +# include +# endif + +/* Assume that all systems that can run configure have sys/param.h. */ +# ifndef HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# ifdef HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +#ifdef __cplusplus +extern "C" { void *malloc(unsigned); } +#else +char *malloc(); +#endif + +int +main() +{ + char *data, *data2, *data3; + int i, pagesize; + int fd; + + pagesize = getpagesize(); + + /* + * First, make a file with some known garbage in it. + */ + data = malloc(pagesize); + if (!data) + exit(1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand(); + umask(0); + fd = creat("conftestmmap", 0600); + if (fd < 0) + exit(1); + if (write(fd, data, pagesize) != pagesize) + exit(1); + close(fd); + + /* + * Next, try to mmap the file at a fixed address which + * already has something else allocated at it. If we can, + * also make sure that we see the same garbage. + */ + fd = open("conftestmmap", O_RDWR); + if (fd < 0) + exit(1); + data2 = malloc(2 * pagesize); + if (!data2) + exit(1); + data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap(data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + exit(1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + exit(1); + + /* + * Finally, make sure that changes to the mapped area + * do not percolate back to the file as seen by read(). + * (This is a bug on some variants of i386 svr4.0.) + */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = malloc(pagesize); + if (!data3) + exit(1); + if (read(fd, data3, pagesize) != pagesize) + exit(1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + exit(1); + close(fd); + unlink("conftestmmap"); + exit(0); +} + +EOF +if { (eval echo configure:2715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + ac_cv_func_mmap_fixed_mapped=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_func_mmap_fixed_mapped=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$ac_cv_func_mmap_fixed_mapped" 1>&6 +if test $ac_cv_func_mmap_fixed_mapped = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_MMAP 1 +EOF + +fi + + + for ac_hdr in argz.h limits.h locale.h nl_types.h malloc.h string.h \ +unistd.h values.h sys/param.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:2743: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2753: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + + for ac_func in getcwd munmap putenv setenv setlocale strchr strcasecmp \ +__argz_count __argz_stringify __argz_next +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:2783: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + + + if test "${ac_cv_func_stpcpy+set}" != "set"; then + for ac_func in stpcpy +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:2840: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + + fi + if test "${ac_cv_func_stpcpy}" = "yes"; then + cat >> confdefs.h <<\EOF +#define HAVE_STPCPY 1 +EOF + + fi + + if test $ac_cv_header_locale_h = yes; then + echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 +echo "configure:2902: checking for LC_MESSAGES" >&5 +if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +int main() { +return LC_MESSAGES +; return 0; } +EOF +if { (eval echo configure:2914: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + am_cv_val_LC_MESSAGES=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + am_cv_val_LC_MESSAGES=no +fi +rm -f conftest* +fi + +echo "$ac_t""$am_cv_val_LC_MESSAGES" 1>&6 + if test $am_cv_val_LC_MESSAGES = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_LC_MESSAGES 1 +EOF + + fi + fi + echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 +echo "configure:2935: checking whether NLS is requested" >&5 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=yes +fi + + echo "$ac_t""$USE_NLS" 1>&6 + + + USE_INCLUDED_LIBINTL=no + + if test "$USE_NLS" = "yes"; then + cat >> confdefs.h <<\EOF +#define ENABLE_NLS 1 +EOF + + echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 +echo "configure:2955: checking whether included gettext is requested" >&5 + # Check whether --with-included-gettext or --without-included-gettext was given. +if test "${with_included_gettext+set}" = set; then + withval="$with_included_gettext" + nls_cv_force_use_gnu_gettext=$withval +else + nls_cv_force_use_gnu_gettext=no +fi + + echo "$ac_t""$nls_cv_force_use_gnu_gettext" 1>&6 + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + nls_cv_header_intl= + nls_cv_header_libgt= + CATOBJEXT=NONE + + ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 +echo "configure:2974: checking for libintl.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2984: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6 +echo "configure:3001: checking for gettext in libc" >&5 +if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +int main() { +return (int) gettext ("") +; return 0; } +EOF +if { (eval echo configure:3013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + gt_cv_func_gettext_libc=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + gt_cv_func_gettext_libc=no +fi +rm -f conftest* +fi + +echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6 + + if test "$gt_cv_func_gettext_libc" != "yes"; then + echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 +echo "configure:3029: checking for bindtextdomain in -lintl" >&5 +ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lintl $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6 +echo "configure:3064: checking for gettext in libintl" >&5 +if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + gt_cv_func_gettext_libintl=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + gt_cv_func_gettext_libintl=no +fi +rm -f conftest* +fi + +echo "$ac_t""$gt_cv_func_gettext_libintl" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + fi + + if test "$gt_cv_func_gettext_libc" = "yes" \ + || test "$gt_cv_func_gettext_libintl" = "yes"; then + cat >> confdefs.h <<\EOF +#define HAVE_GETTEXT 1 +EOF + + # Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:3104: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MSGFMT" in + /*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then + ac_cv_path_MSGFMT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test -n "$MSGFMT"; then + echo "$ac_t""$MSGFMT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + if test "$MSGFMT" != "no"; then + for ac_func in dcgettext +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:3138: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char yywrap(); +char $ac_func(); int main() { -yywrap() + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + ; return 0; } EOF -if { (eval echo configure:1594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_func_$ac_func=no" fi rm -f conftest* -LIBS="$ac_save_LIBS" - fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 - LEXLIB="-l$ac_lib" + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 fi +done + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:3193: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$GMSGFMT" in + /*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_GMSGFMT="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac fi - -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1617: checking how to run the C preprocessor" >&5 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= +GMSGFMT="$ac_cv_path_GMSGFMT" +if test -n "$GMSGFMT"; then + echo "$ac_t""$GMSGFMT" 1>&6 +else + echo "$ac_t""no" 1>&6 fi -if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then + + # Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:3228: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - # This must be in double quotes, not single quotes, because CPP may get - # substituted into the Makefile and "${CC-cc}" will confuse make. - CPP="${CC-cc} -E" - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1638: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - : + case "$XGETTEXT" in + /*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test -n "$XGETTEXT"; then + echo "$ac_t""$XGETTEXT" 1>&6 else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext <&6 +fi + + cat > conftest.$ac_ext < -Syntax Error + +int main() { +extern int _nl_msg_cat_cntr; + return _nl_msg_cat_cntr +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1655: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - : +if { (eval echo configure:3268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + CATOBJEXT=.gmo + DATADIRNAME=share else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - CPP=/lib/cpp + CATOBJEXT=.mo + DATADIRNAME=lib fi rm -f conftest* + INSTOBJEXT=.mo + fi + fi + +else + echo "$ac_t""no" 1>&6 fi -rm -f conftest* - ac_cv_prog_CPP="$CPP" + + + + if test "$CATOBJEXT" = "NONE"; then + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + INTLOBJS="\$(GETTOBJS)" + # Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:3300: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MSGFMT" in + /*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then + ac_cv_path_MSGFMT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="msgfmt" + ;; +esac fi - CPP="$ac_cv_prog_CPP" +MSGFMT="$ac_cv_path_MSGFMT" +if test -n "$MSGFMT"; then + echo "$ac_t""$MSGFMT" 1>&6 else - ac_cv_prog_CPP="$CPP" + echo "$ac_t""no" 1>&6 fi -echo "$ac_t""$CPP" 1>&6 -echo $ac_n "checking lex output file root""... $ac_c" 1>&6 -echo "configure:1678: checking lex output file root" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:3334: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - # The minimal lex program is just a single line: %%. But some broken lexes -# (Solaris, I think it was) want two %% lines, so accommodate them. -echo '%% -%%' | $LEX -if test -f lex.yy.c; then - ac_cv_prog_lex_root=lex.yy -elif test -f lexyy.c; then - ac_cv_prog_lex_root=lexyy + case "$GMSGFMT" in + /*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_GMSGFMT="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT="$ac_cv_path_GMSGFMT" +if test -n "$GMSGFMT"; then + echo "$ac_t""$GMSGFMT" 1>&6 else - { echo "configure: error: cannot find output from $LEX; giving up" 1>&2; exit 1; } + echo "$ac_t""no" 1>&6 +fi + + # Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:3369: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$XGETTEXT" in + /*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test -n "$XGETTEXT"; then + echo "$ac_t""$XGETTEXT" 1>&6 +else + echo "$ac_t""no" 1>&6 fi -echo "$ac_t""$ac_cv_prog_lex_root" 1>&6 -LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root + + USE_INCLUDED_LIBINTL=yes + CATOBJEXT=.gmo + INSTOBJEXT=.mo + DATADIRNAME=share + INTLDEPS='$(top_builddir)/../intl/libintl.a' + INTLLIBS=$INTLDEPS + LIBS=`echo $LIBS | sed -e 's/-lintl//'` + nls_cv_header_intl=libintl.h + nls_cv_header_libgt=libgettext.h + fi -echo $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6 -echo "configure:1699: checking whether yytext is a pointer" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else + echo "$ac_t""found xgettext programs is not GNU xgettext; ignore it" 1>&6 + XGETTEXT=":" + fi + fi + + # We need to process the po/ directory. + POSUB=po + else + DATADIRNAME=share + nls_cv_header_intl=libintl.h + nls_cv_header_libgt=libgettext.h + fi + + # If this is used in GNU gettext we have to set USE_NLS to `yes' + # because some of the sources are only built for this goal. + if test "$PACKAGE" = gettext; then + USE_NLS=yes + USE_INCLUDED_LIBINTL=yes + fi + + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + + + + + + + + + + + + + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 +echo "configure:3459: checking for catalogs to be installed" >&5 + NEW_LINGUAS= + for lang in ${LINGUAS=$ALL_LINGUAS}; do + case "$ALL_LINGUAS" in + *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; + esac + done + LINGUAS=$NEW_LINGUAS + echo "$ac_t""$LINGUAS" 1>&6 + fi + + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + if test $ac_cv_header_locale_h = yes; then + INCLUDE_LOCALE_H="#include " + else + INCLUDE_LOCALE_H="\ +/* The system does not provide the header . Take care yourself. */" + fi + + + if test -f $srcdir/po2tbl.sed.in; then + if test "$CATOBJEXT" = ".cat"; then + ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6 +echo "configure:3487: checking for linux/version.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - # POSIX says lex can declare yytext either as a pointer or an array; the -# default is implementation-dependent. Figure out which it is, since -# not all implementations provide the %pointer and %array declarations. -ac_cv_prog_lex_yytext_pointer=no -echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c -ac_save_LIBS="$LIBS" -LIBS="$LIBS $LEXLIB" -cat > conftest.$ac_ext < conftest.$ac_ext < EOF -if { (eval echo configure:1718: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:3497: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then rm -rf conftest* - ac_cv_prog_lex_yytext_pointer=yes + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* -LIBS="$ac_save_LIBS" -rm -f "${LEX_OUTPUT_ROOT}.c" - +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + msgformat=linux +else + echo "$ac_t""no" 1>&6 +msgformat=xopen fi -echo "$ac_t""$ac_cv_prog_lex_yytext_pointer" 1>&6 -if test $ac_cv_prog_lex_yytext_pointer = yes; then - cat >> confdefs.h <<\EOF -#define YYTEXT_POINTER 1 -EOF -fi + sed -e '/^#/d' $srcdir/$msgformat-msg.sed > po2msg.sed + fi + sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \ + $srcdir/po2tbl.sed.in > po2tbl.sed + fi + if test "$PACKAGE" = "gettext"; then + GT_NO="#NO#" + GT_YES= + else + GT_NO= + GT_YES="#YES#" + fi + + + + MKINSTALLDIRS="\$(srcdir)/../../mkinstalldirs" + + + l= + + + if test -d $srcdir/po; then + test -d po || mkdir po + if test "x$srcdir" != "x."; then + if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then + posrcprefix="$srcdir/" + else + posrcprefix="../$srcdir/" + fi + else + posrcprefix="../" + fi + rm -f po/POTFILES + sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ + < $srcdir/po/POTFILES.in > po/POTFILES + fi + echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:1741: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:3560: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" @@ -1755,19 +3574,19 @@ fi echo $ac_n "checking for Cygwin32 environment""... $ac_c" 1>&6 -echo "configure:1759: checking for Cygwin32 environment" >&5 +echo "configure:3578: checking for Cygwin32 environment" >&5 if eval "test \"`echo '$''{'am_cv_cygwin32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3590: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* am_cv_cygwin32=yes else @@ -1784,19 +3603,19 @@ echo "$ac_t""$am_cv_cygwin32" 1>&6 CYGWIN32= test "$am_cv_cygwin32" = yes && CYGWIN32=yes echo $ac_n "checking for Mingw32 environment""... $ac_c" 1>&6 -echo "configure:1788: checking for Mingw32 environment" >&5 +echo "configure:3607: checking for Mingw32 environment" >&5 if eval "test \"`echo '$''{'am_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3619: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* am_cv_mingw32=yes else @@ -1815,12 +3634,11 @@ test "$am_cv_mingw32" = yes && MINGW32=yes echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:1819: checking for executable suffix" >&5 +echo "configure:3638: checking for executable suffix" >&5 if eval "test \"`echo '$''{'am_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - -if test "$CYGWIN32" = yes -o "$MINGW32" = yes; then + if test "$CYGWIN32" = yes || test "$MINGW32" = yes; then am_cv_exeext=.exe else cat > am_c_test.c << 'EOF' @@ -1829,7 +3647,14 @@ int main() { } EOF ${CC-cc} -o am_c_test $CFLAGS $CPPFLAGS $LDFLAGS am_c_test.c $LIBS 1>&5 -am_cv_exeext=`echo am_c_test.* | grep -v am_c_test.c | sed -e s/am_c_test//` +am_cv_exeext= +for file in am_c_test.*; do + case $file in + *.c) ;; + *.o) ;; + *) am_cv_exeext=`echo $file | sed -e s/am_c_test//` ;; + esac +done rm -f am_c_test* fi @@ -1852,7 +3677,7 @@ AR=${AR-ar} # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1856: checking for $ac_word" >&5 +echo "configure:3681: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1896,7 +3721,7 @@ if test "x$cross_compiling" = "xno"; then EXEEXT_FOR_BUILD='$(EXEEXT)' else echo $ac_n "checking for build system executable suffix""... $ac_c" 1>&6 -echo "configure:1900: checking for build system executable suffix" >&5 +echo "configure:3725: checking for build system executable suffix" >&5 if eval "test \"`echo '$''{'bfd_cv_build_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1921,17 +3746,17 @@ for ac_hdr in string.h strings.h stdlib.h unistd.h fcntl.h sys/file.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1925: checking for $ac_hdr" >&5 +echo "configure:3750: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1935: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3760: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1958,12 +3783,12 @@ fi done echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:1962: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:3787: checking for sys/wait.h that is POSIX.1 compatible" >&5 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1979,7 +3804,7 @@ wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:1983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3808: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -2002,19 +3827,19 @@ fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:2006: checking for working alloca.h" >&5 +echo "configure:3831: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:2018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -2035,12 +3860,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:2039: checking for alloca" >&5 +echo "configure:3864: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -2095,12 +3920,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:2099: checking whether alloca needs Cray hooks" >&5 +echo "configure:3924: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2129: checking for $ac_func" >&5 +echo "configure:3954: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:3982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2180,7 +4005,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:2184: checking stack direction for C alloca" >&5 +echo "configure:4009: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2188,7 +4013,7 @@ else ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4036: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -2231,12 +4056,12 @@ fi for ac_func in sbrk utimes do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2235: checking for $ac_func" >&5 +echo "configure:4060: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:4088: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2285,19 +4110,19 @@ done echo $ac_n "checking for time_t in time.h""... $ac_c" 1>&6 -echo "configure:2289: checking for time_t in time.h" >&5 +echo "configure:4114: checking for time_t in time.h" >&5 if eval "test \"`echo '$''{'bu_cv_decl_time_t_time_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { time_t i; ; return 0; } EOF -if { (eval echo configure:2301: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4126: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bu_cv_decl_time_t_time_h=yes else @@ -2318,19 +4143,19 @@ EOF fi echo $ac_n "checking for time_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:2322: checking for time_t in sys/types.h" >&5 +echo "configure:4147: checking for time_t in sys/types.h" >&5 if eval "test \"`echo '$''{'bu_cv_decl_time_t_types_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { time_t i; ; return 0; } EOF -if { (eval echo configure:2334: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4159: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bu_cv_decl_time_t_types_h=yes else @@ -2353,12 +4178,12 @@ fi # Under Next 3.2 apparently does not define struct utimbuf # by default. echo $ac_n "checking for utime.h""... $ac_c" 1>&6 -echo "configure:2357: checking for utime.h" >&5 +echo "configure:4182: checking for utime.h" >&5 if eval "test \"`echo '$''{'bu_cv_header_utime_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifdef HAVE_TIME_H @@ -2369,7 +4194,7 @@ int main() { struct utimbuf s; ; return 0; } EOF -if { (eval echo configure:2373: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4198: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bu_cv_header_utime_h=yes else @@ -2390,12 +4215,12 @@ EOF fi echo $ac_n "checking whether fprintf must be declared""... $ac_c" 1>&6 -echo "configure:2394: checking whether fprintf must be declared" >&5 +echo "configure:4219: checking whether fprintf must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_fprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -2416,7 +4241,7 @@ int main() { char *(*pfn) = (char *(*)) fprintf ; return 0; } EOF -if { (eval echo configure:2420: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4245: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_fprintf=no else @@ -2438,12 +4263,12 @@ EOF fi echo $ac_n "checking whether strstr must be declared""... $ac_c" 1>&6 -echo "configure:2442: checking whether strstr must be declared" >&5 +echo "configure:4267: checking whether strstr must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_strstr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -2464,7 +4289,7 @@ int main() { char *(*pfn) = (char *(*)) strstr ; return 0; } EOF -if { (eval echo configure:2468: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4293: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_strstr=no else @@ -2486,12 +4311,12 @@ EOF fi echo $ac_n "checking whether sbrk must be declared""... $ac_c" 1>&6 -echo "configure:2490: checking whether sbrk must be declared" >&5 +echo "configure:4315: checking whether sbrk must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_sbrk'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -2512,7 +4337,7 @@ int main() { char *(*pfn) = (char *(*)) sbrk ; return 0; } EOF -if { (eval echo configure:2516: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4341: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_sbrk=no else @@ -2534,12 +4359,12 @@ EOF fi echo $ac_n "checking whether getenv must be declared""... $ac_c" 1>&6 -echo "configure:2538: checking whether getenv must be declared" >&5 +echo "configure:4363: checking whether getenv must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_getenv'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -2560,7 +4385,7 @@ int main() { char *(*pfn) = (char *(*)) getenv ; return 0; } EOF -if { (eval echo configure:2564: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4389: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_getenv=no else @@ -2786,7 +4611,7 @@ done ac_given_srcdir=$srcdir ac_given_INSTALL="$INSTALL" -trap 'rm -fr `echo "Makefile config.h:config.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +trap 'rm -fr `echo "Makefile po/Makefile.in:po/Make-in config.h:config.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then @@ -3082,7 +4929,7 @@ cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h - +sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile exit 0 EOF chmod +x $CONFIG_STATUS diff --git a/binutils/configure.in b/binutils/configure.in index f41e42d23f..f763fd73a8 100644 --- a/binutils/configure.in +++ b/binutils/configure.in @@ -5,7 +5,7 @@ AC_INIT(ar.c) AC_CANONICAL_SYSTEM -AM_INIT_AUTOMAKE(binutils, 2.8.2) +AM_INIT_AUTOMAKE(binutils, 2.9.1) AM_PROG_LIBTOOL @@ -37,8 +37,10 @@ fi AC_PROG_CC AC_PROG_YACC -AC_PROG_LEX -AC_DECL_YYTEXT +AM_PROG_LEX + +ALL_LINGUAS= +CY_GNU_GETTEXT AM_MAINTAINER_MODE AM_CYGWIN32 @@ -62,13 +64,6 @@ AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h fcntl.h sys/file.h) AC_HEADER_SYS_WAIT AC_FUNC_ALLOCA AC_CHECK_FUNCS(sbrk utimes) -dnl Temporary workaround for bug in autoconf 2.12. When the bug is -dnl fixed, we can just call AC_FUNC_VFORK in all cases. -if test "x$cross_compiling" = "xno"; then - AC_FUNC_VFORK -else - AC_CHECK_FUNC(vfork, , AC_DEFINE(vfork, fork)) -fi AC_MSG_CHECKING(for time_t in time.h) AC_CACHE_VAL(bu_cv_decl_time_t_time_h, @@ -173,7 +168,7 @@ changequote([,])dnl BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)' ;; changequote(,)dnl - i[3-6]86-*pe* | i[3-6]86-*-cygwin32) + i[3-6]86-*pe* | i[3-6]86-*-cygwin32* | i[3-6]86-*-mingw32*) changequote([,])dnl BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)' DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386" @@ -195,6 +190,8 @@ AC_SUBST(BUILD_DLLTOOL) AC_SUBST(DLLTOOL_DEFS) AC_SUBST(BUILD_WINDRES) +AC_DEFINE_UNQUOTED(TARGET, "${target}") + targ=$target . $srcdir/../bfd/config.bfd if test "x$targ_underscore" = "xyes"; then @@ -204,4 +201,5 @@ else fi AC_SUBST(UNDERSCORE) -AC_OUTPUT(Makefile) +AC_OUTPUT(Makefile po/Makefile.in:po/Make-in, +[sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile]) diff --git a/binutils/dlltool.c b/binutils/dlltool.c index 0a484e4438..78ff1abbb0 100644 --- a/binutils/dlltool.c +++ b/binutils/dlltool.c @@ -15,7 +15,8 @@ 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ /* @@ -223,7 +224,8 @@ #ifdef HAVE_SYS_WAIT_H #include -#else +#else /* ! HAVE_SYS_WAIT_H */ +#if ! defined (_WIN32) || defined (__CYGWIN32__) #ifndef WIFEXITED #define WIFEXITED(w) (((w)&0377) == 0) #endif @@ -236,7 +238,21 @@ #ifndef WEXITSTATUS #define WEXITSTATUS(w) (((w) >> 8) & 0377) #endif +#else /* defined (_WIN32) && ! defined (__CYGWIN32__) */ +#ifndef WIFEXITED +#define WIFEXITED(w) (((w) & 0xff) == 0) #endif +#ifndef WIFSIGNALED +#define WIFSIGNALED(w) (((w) & 0xff) != 0 && ((w) & 0xff) != 0x7f) +#endif +#ifndef WTERMSIG +#define WTERMSIG(w) ((w) & 0x7f) +#endif +#ifndef WEXITSTATUS +#define WEXITSTATUS(w) (((w) & 0xff00) >> 8) +#endif +#endif /* defined (_WIN32) && ! defined (__CYGWIN32__) */ +#endif /* ! HAVE_SYS_WAIT_H */ static char *as_name = "as"; @@ -483,7 +499,7 @@ process_def_file (name) FILE *f = fopen (name, FOPEN_RT); if (!f) { - fprintf (stderr, "%s: Can't open def file %s\n", program_name, name); + fprintf (stderr, _("%s: Can't open def file %s\n"), program_name, name); exit (1); } @@ -513,7 +529,7 @@ int yyerror (err) const char *err; { - fprintf (stderr, "%s: Syntax error in def file %s:%d\n", + fprintf (stderr, _("%s: Syntax error in def file %s:%d\n"), program_name, def_file, linenumber); return 0; } @@ -546,10 +562,10 @@ def_name (name, base) int base; { if (verbose) - fprintf (stderr, "%s NAME %s base %x\n", program_name, name, base); + fprintf (stderr, _("%s NAME %s base %x\n"), program_name, name, base); if (d_is_dll) { - fprintf (stderr, "Can't have LIBRARY and NAME\n"); + fprintf (stderr, _("Can't have LIBRARY and NAME\n")); } d_name = name; d_is_exe = 1; @@ -561,10 +577,10 @@ def_library (name, base) int base; { if (verbose) - printf ("%s: LIBRARY %s base %x\n", program_name, name, base); + printf (_("%s: LIBRARY %s base %x\n"), program_name, name, base); if (d_is_exe) { - fprintf (stderr, "%s: Can't have LIBRARY and NAME\n", program_name); + fprintf (stderr, _("%s: Can't have LIBRARY and NAME\n"), program_name); } d_name = name; d_is_dll = 1; @@ -623,7 +639,7 @@ def_import (internal, module, entry) const char *entry; { if (verbose) - fprintf (stderr, "%s: IMPORTS are ignored", program_name); + fprintf (stderr, _("%s: IMPORTS are ignored"), program_name); } void @@ -725,19 +741,19 @@ run (what, args) pid = pwait (pid, &wait_status, 0); if (pid == -1) { - fprintf (stderr, "%s: wait: %s\n", program_name, strerror (errno)); + fprintf (stderr, _("%s: wait: %s\n"), program_name, strerror (errno)); exit (1); } else if (WIFSIGNALED (wait_status)) { - fprintf (stderr, "%s: subprocess got fatal signal %d\n", + fprintf (stderr, _("%s: subprocess got fatal signal %d\n"), program_name, WTERMSIG (wait_status)); exit (1); } else if (WIFEXITED (wait_status)) { if (WEXITSTATUS (wait_status) != 0) - fprintf (stderr, "%s: %s exited with status %d\n", + fprintf (stderr, _("%s: %s exited with status %d\n"), program_name, what, WEXITSTATUS (wait_status)); } else @@ -765,7 +781,7 @@ scan_open_obj_file (abfd) char *e; bfd_get_section_contents (abfd, s, buf, 0, size); if (verbose) - fprintf (stderr, "%s: Sucking in info from %s\n", + fprintf (stderr, _("%s: Sucking in info from %s\n"), program_name, bfd_get_filename (abfd)); @@ -800,7 +816,7 @@ scan_open_obj_file (abfd) basenames (abfd); if (verbose) - fprintf (stderr, "%s: Done readin\n", + fprintf (stderr, _("%s: Done readin\n"), program_name); } @@ -812,7 +828,7 @@ scan_obj_file (filename) if (!f) { - fprintf (stderr, "%s: Unable to open object file %s\n", + fprintf (stderr, _("%s: Unable to open object file %s\n"), program_name, filename); exit (1); @@ -937,18 +953,18 @@ gen_exp_file () sprintf (outfile, "t%s", exp_name); if (verbose) - fprintf (stderr, "%s: Generate exp file %s\n", + fprintf (stderr, _("%s: Generate exp file %s\n"), program_name, exp_name); f = fopen (outfile, FOPEN_WT); if (!f) { - fprintf (stderr, "%s: Unable to open output file %s\n", program_name, outfile); + fprintf (stderr, _("%s: Unable to open output file %s\n"), program_name, outfile); exit (1); } if (verbose) { - fprintf (stderr, "%s: Opened file %s\n", + fprintf (stderr, _("%s: Opened file %s\n"), program_name, outfile); } @@ -1081,8 +1097,13 @@ gen_exp_file () for (i = 0, exp = d_exports; exp; i++, exp = exp->next) if (!exp->noname || show_allnames) { + /* We use a single underscore for MS compatibility, and a + double underscore for backward compatibility with old + cygwin releases. */ fprintf (f, "\t%s\t__imp_%s\n", ASM_GLOBAL, exp->name); + fprintf (f, "\t%s\t_imp__%s\n", ASM_GLOBAL, exp->name); fprintf (f, "__imp_%s:\n", exp->name); + fprintf (f, "_imp__%s:\n", exp->name); fprintf (f, "\t%s\t%s\n", ASM_LONG, exp->name); } } @@ -1266,7 +1287,8 @@ static sinfo secdata[NSECS] = #endif /* -This is what we're trying to make +This is what we're trying to make. We generate the imp symbols with +both single and double underscores, for compatibility. .text .global _GetFileVersionInfoSizeW@8 @@ -1330,6 +1352,7 @@ make_one_lib_file (exp, i) fprintf (f, "\t.text\n"); fprintf (f, "\t%s\t%s%s\n", ASM_GLOBAL, ASM_PREFIX, exp->name); fprintf (f, "\t%s\t__imp_%s\n", ASM_GLOBAL, exp->name); + fprintf (f, "\t%s\t_imp__%s\n", ASM_GLOBAL, exp->name); fprintf (f, "%s%s:\n\t%s\t__imp_%s\n", ASM_PREFIX, exp->name, ASM_JUMP, exp->name); @@ -1341,6 +1364,7 @@ make_one_lib_file (exp, i) fprintf (f, "\t.section .idata$5\n"); fprintf (f, "__imp_%s:\n", exp->name); + fprintf (f, "_imp__%s:\n", exp->name); dump_iat (f, exp); @@ -1371,7 +1395,7 @@ make_one_lib_file (exp, i) bfd *abfd; asymbol *exp_label; - asymbol *iname; + asymbol *iname, *iname2; asymbol *iname_lab; asymbol **iname_lab_pp; asymbol **iname_pp; @@ -1388,8 +1412,7 @@ make_one_lib_file (exp, i) asymbol **toc_pp; #endif - /* one symbol for each section, 2 extra + a null */ - asymbol *ptrs[NSECS+3+EXTRA+1]; + asymbol *ptrs[NSECS + 4 + EXTRA + 1]; char *outname = xmalloc (10); int oidx = 0; @@ -1397,7 +1420,7 @@ make_one_lib_file (exp, i) abfd = bfd_openw (outname, HOW_BFD_TARGET); if (!abfd) { - fprintf (stderr, "%s: bfd_open failed open output file %s\n", + fprintf (stderr, _("%s: bfd_open failed open output file %s\n"), program_name, outname); exit (1); } @@ -1454,12 +1477,20 @@ make_one_lib_file (exp, i) ptrs[oidx++] = exp_label; } + /* Generate imp symbols with one underscore for Microsoft + compatibility, and with two underscores for backward + compatibility with old versions of cygwin. */ iname = bfd_make_empty_symbol(abfd); iname->name = make_label ("__imp_", exp->name); iname->section = secdata[IDATA5].sec; iname->flags = BSF_GLOBAL; iname->value = 0; + iname2 = bfd_make_empty_symbol(abfd); + iname2->name = make_label ("_imp__", exp->name); + iname2->section = secdata[IDATA5].sec; + iname2->flags = BSF_GLOBAL; + iname2->value = 0; iname_lab = bfd_make_empty_symbol(abfd); @@ -1471,6 +1502,7 @@ make_one_lib_file (exp, i) iname_pp = ptrs + oidx; ptrs[oidx++] = iname; + ptrs[oidx++] = iname2; iname_lab_pp = ptrs + oidx; ptrs[oidx++] = iname_lab; @@ -1581,7 +1613,10 @@ make_one_lib_file (exp, i) case IDATA6: if (!exp->noname) { - int idx = exp->hint + 1; + /* This used to add 1 to exp->hint. I don't know + why it did that, and it does not match what I see + in programs compiled with the MS tools. */ + int idx = exp->hint; si->size = strlen (xlate (exp->name)) + 3; si->data = xmalloc (si->size); si->data[0] = idx & 0xff; @@ -1874,7 +1909,8 @@ gen_lib_file () if (!outarch) { - fprintf (stderr, "%s: Can't open .lib file %s\n", program_name, imp_name); + fprintf (stderr, _("%s: Can't open .lib file %s\n"), + program_name, imp_name); exit (1); } bfd_set_format (outarch, bfd_archive); @@ -1928,13 +1964,17 @@ gen_lib_file () } if (dontdeltemps < 2) - for (i = 0, exp = d_exports; exp; i++, exp = exp->next) - { - sprintf (outfile, "ds%d.o",i); - unlink (outfile); - } - + { + for (i = 0, exp = d_exports; exp; i++, exp = exp->next) + { + sprintf (outfile, "ds%d.o",i); + if (unlink (outfile) < 0) + fprintf (stderr, _("%s: cannot delete %s: %s\n"), program_name, + outfile, strerror (errno)); + } + } } + /**********************************************************************/ /* Run through the information gathered from the .o files and the @@ -2032,7 +2072,7 @@ process_duplicates (d_export_vec) more = 1; if (verbose) - fprintf (stderr, "Warning, ignoring duplicate EXPORT %s %d,%d\n", + fprintf (stderr, _("Warning, ignoring duplicate EXPORT %s %d,%d\n"), a->name, a->ordinal, b->ordinal); @@ -2040,7 +2080,7 @@ process_duplicates (d_export_vec) && b->ordinal != -1) { - fprintf (stderr, "Error, duplicate EXPORT with oridinals %s\n", + fprintf (stderr, _("Error, duplicate EXPORT with oridinals %s\n"), a->name); exit (1); } @@ -2212,22 +2252,22 @@ usage (file, status) FILE *file; int status; { - fprintf (file, "Usage %s \n", program_name); - fprintf (file, " --machine \n"); - fprintf (file, " --output-exp Generate export file.\n"); - fprintf (file, " --output-lib Generate input library.\n"); - fprintf (file, " --add-indirect Add dll indirects to export file.\n"); - fprintf (file, " --dllname Name of input dll to put into output lib.\n"); - fprintf (file, " --def Name input .def file\n"); - fprintf (file, " --output-def Name output .def file\n"); - fprintf (file, " --base-file Read linker generated base file\n"); - fprintf (file, " --no-idata4 Don't generate idata$4 section\n"); - fprintf (file, " --no-idata5 Don't generate idata$5 section\n"); - fprintf (file, " -v Verbose\n"); - fprintf (file, " -U Add underscores to .lib\n"); - fprintf (file, " -k Kill @ from exported names\n"); - fprintf (file, " --as Use for assembler\n"); - fprintf (file, " --nodelete Keep temp files.\n"); + fprintf (file, _("Usage %s \n"), program_name); + fprintf (file, _(" --machine \n")); + fprintf (file, _(" --output-exp Generate export file.\n")); + fprintf (file, _(" --output-lib Generate input library.\n")); + fprintf (file, _(" --add-indirect Add dll indirects to export file.\n")); + fprintf (file, _(" --dllname Name of input dll to put into output lib.\n")); + fprintf (file, _(" --def Name input .def file\n")); + fprintf (file, _(" --output-def Name output .def file\n")); + fprintf (file, _(" --base-file Read linker generated base file\n")); + fprintf (file, _(" --no-idata4 Don't generate idata$4 section\n")); + fprintf (file, _(" --no-idata5 Don't generate idata$5 section\n")); + fprintf (file, _(" -v Verbose\n")); + fprintf (file, _(" -U Add underscores to .lib\n")); + fprintf (file, _(" -k Kill @ from exported names\n")); + fprintf (file, _(" --as Use for assembler\n")); + fprintf (file, _(" --nodelete Keep temp files.\n")); exit (status); } @@ -2330,7 +2370,7 @@ main (ac, av) base_file = fopen (optarg, FOPEN_RB); if (!base_file) { - fprintf (stderr, "%s: Unable to open base-file %s\n", + fprintf (stderr, _("%s: Unable to open base-file %s\n"), av[0], optarg); exit (1); @@ -2350,7 +2390,7 @@ main (ac, av) if (!mtable[i].type) { - fprintf (stderr, "Machine not supported\n"); + fprintf (stderr, _("Machine not supported\n")); exit (1); } machine = i; diff --git a/binutils/nlmconv.c b/binutils/nlmconv.c index e1df03313c..8544ba0e4f 100644 --- a/binutils/nlmconv.c +++ b/binutils/nlmconv.c @@ -1,5 +1,5 @@ /* nlmconv.c -- NLM conversion program - Copyright (C) 1993, 94, 95, 96, 1997 Free Software Foundation, Inc. + Copyright (C) 1993, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -186,12 +186,25 @@ main (argc, argv) char inlead, outlead; boolean gotstart, gotexit, gotcheck; struct stat st; - FILE *custom_data, *help_data, *message_data, *rpc_data, *shared_data; - size_t custom_size, help_size, message_size, module_size, rpc_size; - asection *custom_section, *help_section, *message_section, *module_section; - asection *rpc_section, *shared_section; + FILE *custom_data = NULL; + FILE *help_data = NULL; + FILE *message_data = NULL; + FILE *rpc_data = NULL; + FILE *shared_data = NULL; + size_t custom_size = 0; + size_t help_size = 0; + size_t message_size = 0; + size_t module_size = 0; + size_t rpc_size = 0; + asection *custom_section = NULL; + asection *help_section = NULL; + asection *message_section = NULL; + asection *module_section = NULL; + asection *rpc_section = NULL; + asection *shared_section = NULL; bfd *sharedbfd; - size_t shared_offset, shared_size; + size_t shared_offset = 0; + size_t shared_size = 0; Nlm_Internal_Fixed_Header sharedhdr; int len; char *modname; @@ -253,7 +266,7 @@ main (argc, argv) if (strcmp (input_file, output_file) == 0) { fprintf (stderr, - "%s: input and output files must be different\n", + _("%s: input and output files must be different\n"), program_name); exit (1); } @@ -303,7 +316,7 @@ main (argc, argv) if (input_file != NULL) { fprintf (stderr, - "%s: input file named both on command line and with INPUT\n", + _("%s: input file named both on command line and with INPUT\n"), program_name); exit (1); } @@ -314,7 +327,7 @@ main (argc, argv) } else if (input_file == NULL) { - fprintf (stderr, "%s: no input file\n", program_name); + fprintf (stderr, _("%s: no input file\n"), program_name); show_usage (stderr, 1); } @@ -344,7 +357,7 @@ main (argc, argv) Otherwise use the file named in the OUTPUT statement. */ if (output_file == NULL) { - fprintf (stderr, "%s: no name for output file\n", + fprintf (stderr, _("%s: no name for output file\n"), program_name); show_usage (stderr, 1); } @@ -359,7 +372,7 @@ main (argc, argv) if (bfd_arch_get_compatible (inbfd, outbfd) == NULL) fprintf (stderr, - "%s: warning:input and output formats are not compatible\n", + _("%s: warning:input and output formats are not compatible\n"), program_name); /* Move the values read from the command file into outbfd. */ @@ -389,7 +402,7 @@ main (argc, argv) if (bss_sec == NULL || ! bfd_set_section_flags (outbfd, bss_sec, SEC_ALLOC) || ! bfd_set_section_alignment (outbfd, bss_sec, 1)) - bfd_fatal ("make .bss section"); + bfd_fatal (_("make .bss section")); } /* We store the original section names in the .nlmsections section, @@ -398,9 +411,9 @@ main (argc, argv) the NLM header area. */ secsec = bfd_make_section (outbfd, ".nlmsections"); if (secsec == NULL) - bfd_fatal ("make .nlmsections section"); + bfd_fatal (_("make .nlmsections section")); if (! bfd_set_section_flags (outbfd, secsec, SEC_HAS_CONTENTS)) - bfd_fatal ("set .nlmsections flags"); + bfd_fatal (_("set .nlmsections flags")); #ifdef NLMCONV_POWERPC /* For PowerPC NetWare we need to build stubs for calls to undefined @@ -428,14 +441,14 @@ main (argc, argv) add = ((vma + align - 1) &~ (align - 1)) - vma; vma += add; if (! bfd_set_section_vma (outbfd, bss_sec, vma)) - bfd_fatal ("set .bss vma"); + bfd_fatal (_("set .bss vma")); if (add != 0) { bfd_size_type data_size; data_size = bfd_get_section_size_before_reloc (data_sec); if (! bfd_set_section_size (outbfd, data_sec, data_size + add)) - bfd_fatal ("set .data size"); + bfd_fatal (_("set .data size")); } } @@ -616,7 +629,7 @@ main (argc, argv) } if (l == NULL) fprintf (stderr, - "%s: warning: symbol %s imported but not in import list\n", + _("%s: warning: symbol %s imported but not in import list\n"), program_name, bfd_asymbol_name (sym)); } @@ -636,7 +649,7 @@ main (argc, argv) && text_sec != (asection *) NULL) val += bfd_section_size (outbfd, text_sec); if (! bfd_set_start_address (outbfd, val)) - bfd_fatal ("set start address"); + bfd_fatal (_("set start address")); gotstart = true; } if (strcmp (bfd_asymbol_name (sym), exit_procedure) == 0) @@ -685,14 +698,14 @@ main (argc, argv) bfd_set_symtab (outbfd, outsyms, symcount + newsymcount); if (! gotstart) - fprintf (stderr, "%s: warning: START procedure %s not defined\n", + fprintf (stderr, _("%s: warning: START procedure %s not defined\n"), program_name, start_procedure); if (! gotexit) - fprintf (stderr, "%s: warning: EXIT procedure %s not defined\n", + fprintf (stderr, _("%s: warning: EXIT procedure %s not defined\n"), program_name, exit_procedure); if (check_procedure != NULL && ! gotcheck) - fprintf (stderr, "%s: warning: CHECK procedure %s not defined\n", + fprintf (stderr, _("%s: warning: CHECK procedure %s not defined\n"), program_name, check_procedure); /* Add additional sections required for the header information. */ @@ -714,7 +727,7 @@ main (argc, argv) || ! bfd_set_section_size (outbfd, custom_section, custom_size) || ! bfd_set_section_flags (outbfd, custom_section, SEC_HAS_CONTENTS)) - bfd_fatal ("custom section"); + bfd_fatal (_("custom section")); } } if (help_file != NULL) @@ -735,7 +748,7 @@ main (argc, argv) || ! bfd_set_section_size (outbfd, help_section, help_size) || ! bfd_set_section_flags (outbfd, help_section, SEC_HAS_CONTENTS)) - bfd_fatal ("help section"); + bfd_fatal (_("help section")); strncpy (nlm_extended_header (outbfd)->stamp, "MeSsAgEs", 8); } } @@ -757,7 +770,7 @@ main (argc, argv) || ! bfd_set_section_size (outbfd, message_section, message_size) || ! bfd_set_section_flags (outbfd, message_section, SEC_HAS_CONTENTS)) - bfd_fatal ("message section"); + bfd_fatal (_("message section")); strncpy (nlm_extended_header (outbfd)->stamp, "MeSsAgEs", 8); } } @@ -773,7 +786,7 @@ main (argc, argv) || ! bfd_set_section_size (outbfd, module_section, module_size) || ! bfd_set_section_flags (outbfd, module_section, SEC_HAS_CONTENTS)) - bfd_fatal ("module section"); + bfd_fatal (_("module section")); } if (rpc_file != NULL) { @@ -793,7 +806,7 @@ main (argc, argv) || ! bfd_set_section_size (outbfd, rpc_section, rpc_size) || ! bfd_set_section_flags (outbfd, rpc_section, SEC_HAS_CONTENTS)) - bfd_fatal ("rpc section"); + bfd_fatal (_("rpc section")); strncpy (nlm_extended_header (outbfd)->stamp, "MeSsAgEs", 8); } } @@ -830,19 +843,19 @@ main (argc, argv) { /* There is no place to record this information. */ fprintf (stderr, - "%s:%s: warning: shared libraries can not have uninitialized data\n", + _("%s:%s: warning: shared libraries can not have uninitialized data\n"), program_name, sharelib_file); } shared_offset = st.st_size; - if (shared_offset > sharedhdr.codeImageOffset) + if (shared_offset > (size_t) sharedhdr.codeImageOffset) shared_offset = sharedhdr.codeImageOffset; - if (shared_offset > sharedhdr.dataImageOffset) + if (shared_offset > (size_t) sharedhdr.dataImageOffset) shared_offset = sharedhdr.dataImageOffset; - if (shared_offset > sharedhdr.relocationFixupOffset) + if (shared_offset > (size_t) sharedhdr.relocationFixupOffset) shared_offset = sharedhdr.relocationFixupOffset; - if (shared_offset > sharedhdr.externalReferencesOffset) + if (shared_offset > (size_t) sharedhdr.externalReferencesOffset) shared_offset = sharedhdr.externalReferencesOffset; - if (shared_offset > sharedhdr.publicsOffset) + if (shared_offset > (size_t) sharedhdr.publicsOffset) shared_offset = sharedhdr.publicsOffset; shared_size = st.st_size - shared_offset; shared_section = bfd_make_section (outbfd, ".nlmshared"); @@ -851,7 +864,7 @@ main (argc, argv) shared_size) || ! bfd_set_section_flags (outbfd, shared_section, SEC_HAS_CONTENTS)) - bfd_fatal ("shared section"); + bfd_fatal (_("shared section")); strncpy (nlm_extended_header (outbfd)->stamp, "MeSsAgEs", 8); } } @@ -859,7 +872,7 @@ main (argc, argv) /* Check whether a version was given. */ if (strncmp (version_hdr->stamp, "VeRsIoN#", 8) != 0) - fprintf (stderr, "%s: warning: No version number given\n", + fprintf (stderr, _("%s: warning: No version number given\n"), program_name); /* At least for now, always create an extended header, because that @@ -900,13 +913,13 @@ main (argc, argv) data = xmalloc (custom_size); if (fread (data, 1, custom_size, custom_data) != custom_size) - fprintf (stderr, "%s:%s: read: %s\n", program_name, custom_file, + fprintf (stderr, _("%s:%s: read: %s\n"), program_name, custom_file, strerror (errno)); else { if (! bfd_set_section_contents (outbfd, custom_section, data, (file_ptr) 0, custom_size)) - bfd_fatal ("custom section"); + bfd_fatal (_("custom section")); nlm_fixed_header (outbfd)->customDataOffset = custom_section->filepos; nlm_fixed_header (outbfd)->customDataSize = custom_size; @@ -924,7 +937,7 @@ main (argc, argv) } if (map_file != NULL) fprintf (stderr, - "%s: warning: MAP and FULLMAP are not supported; try ld -M\n", + _("%s: warning: MAP and FULLMAP are not supported; try ld -M\n"), program_name); if (help_file != NULL) { @@ -932,13 +945,13 @@ main (argc, argv) data = xmalloc (help_size); if (fread (data, 1, help_size, help_data) != help_size) - fprintf (stderr, "%s:%s: read: %s\n", program_name, help_file, + fprintf (stderr, _("%s:%s: read: %s\n"), program_name, help_file, strerror (errno)); else { if (! bfd_set_section_contents (outbfd, help_section, data, (file_ptr) 0, help_size)) - bfd_fatal ("help section"); + bfd_fatal (_("help section")); nlm_extended_header (outbfd)->helpFileOffset = help_section->filepos; nlm_extended_header (outbfd)->helpFileLength = help_size; @@ -951,13 +964,13 @@ main (argc, argv) data = xmalloc (message_size); if (fread (data, 1, message_size, message_data) != message_size) - fprintf (stderr, "%s:%s: read: %s\n", program_name, message_file, + fprintf (stderr, _("%s:%s: read: %s\n"), program_name, message_file, strerror (errno)); else { if (! bfd_set_section_contents (outbfd, message_section, data, (file_ptr) 0, message_size)) - bfd_fatal ("message section"); + bfd_fatal (_("message section")); nlm_extended_header (outbfd)->messageFileOffset = message_section->filepos; nlm_extended_header (outbfd)->messageFileLength = message_size; @@ -990,7 +1003,7 @@ main (argc, argv) } if (! bfd_set_section_contents (outbfd, module_section, data, (file_ptr) 0, module_size)) - bfd_fatal ("module section"); + bfd_fatal (_("module section")); nlm_fixed_header (outbfd)->moduleDependencyOffset = module_section->filepos; nlm_fixed_header (outbfd)->numberOfModuleDependencies = c; @@ -1001,13 +1014,13 @@ main (argc, argv) data = xmalloc (rpc_size); if (fread (data, 1, rpc_size, rpc_data) != rpc_size) - fprintf (stderr, "%s:%s: read: %s\n", program_name, rpc_file, + fprintf (stderr, _("%s:%s: read: %s\n"), program_name, rpc_file, strerror (errno)); else { if (! bfd_set_section_contents (outbfd, rpc_section, data, (file_ptr) 0, rpc_size)) - bfd_fatal ("rpc section"); + bfd_fatal (_("rpc section")); nlm_extended_header (outbfd)->RPCDataOffset = rpc_section->filepos; nlm_extended_header (outbfd)->RPCDataLength = rpc_size; @@ -1021,13 +1034,13 @@ main (argc, argv) data = xmalloc (shared_size); if (fseek (shared_data, shared_offset, SEEK_SET) != 0 || fread (data, 1, shared_size, shared_data) != shared_size) - fprintf (stderr, "%s:%s: read: %s\n", program_name, sharelib_file, + fprintf (stderr, _("%s:%s: read: %s\n"), program_name, sharelib_file, strerror (errno)); else { if (! bfd_set_section_contents (outbfd, shared_section, data, (file_ptr) 0, shared_size)) - bfd_fatal ("shared section"); + bfd_fatal (_("shared section")); } nlm_extended_header (outbfd)->sharedCodeOffset = sharedhdr.codeImageOffset - shared_offset + shared_section->filepos; @@ -1074,7 +1087,7 @@ main (argc, argv) for (modname = nlm_fixed_header (outbfd)->moduleName; *modname != '\0'; modname++) - if (islower (*modname)) + if (islower ((unsigned char) *modname)) *modname = toupper (*modname); strncpy (nlm_variable_header (outbfd)->oldThreadName, " LONG", @@ -1099,7 +1112,7 @@ main (argc, argv) static void show_help () { - printf ("%s: Convert an object file into a NetWare Loadable Module\n", + printf (_("%s: Convert an object file into a NetWare Loadable Module\n"), program_name); show_usage (stdout, 0); } @@ -1111,15 +1124,15 @@ show_usage (file, status) FILE *file; int status; { - fprintf (file, "\ + fprintf (file, _("\ Usage: %s [-dhV] [-I bfdname] [-O bfdname] [-T header-file] [-l linker]\n\ [--input-target=bfdname] [--output-target=bfdname]\n\ [--header-file=file] [--linker=linker] [--debug]\n\ [--help] [--version]\n\ - [in-file [out-file]]\n", + [in-file [out-file]]\n"), program_name); if (status == 0) - fprintf (file, "Report bugs to bug-gnu-utils@prep.ai.mit.edu\n"); + fprintf (file, _("Report bugs to bug-gnu-utils@gnu.org\n")); exit (status); } @@ -1151,7 +1164,7 @@ select_output_format (arch, mach, bigendian) return "nlm32-powerpc"; #endif default: - fprintf (stderr, "%s: support not compiled in for %s\n", + fprintf (stderr, _("%s: support not compiled in for %s\n"), program_name, bfd_printable_arch_mach (arch, mach)); exit (1); /* Avoid warning. */ @@ -1194,7 +1207,7 @@ setup_sections (inbfd, insec, data_ptr) { outsec = bfd_make_section (outbfd, outname); if (outsec == NULL) - bfd_fatal ("make section"); + bfd_fatal (_("make section")); } insec->output_section = outsec; @@ -1208,17 +1221,17 @@ setup_sections (inbfd, insec, data_ptr) (bfd_section_size (outbfd, outsec) + bfd_section_size (inbfd, insec) + add))) - bfd_fatal ("set section size"); + bfd_fatal (_("set section size")); if ((bfd_section_alignment (inbfd, insec) > bfd_section_alignment (outbfd, outsec)) && ! bfd_set_section_alignment (outbfd, outsec, bfd_section_alignment (inbfd, insec))) - bfd_fatal ("set section alignment"); + bfd_fatal (_("set section alignment")); if (! bfd_set_section_flags (outbfd, outsec, f | bfd_get_section_flags (outbfd, outsec))) - bfd_fatal ("set section flags"); + bfd_fatal (_("set section flags")); bfd_set_reloc (outbfd, outsec, (arelent **) NULL, 0); @@ -1229,7 +1242,7 @@ setup_sections (inbfd, insec, data_ptr) secsecsize = (secsecsize + 3) &~ 3; secsecsize += 8; if (! bfd_set_section_size (outbfd, secsec, secsecsize)) - bfd_fatal ("set .nlmsections size"); + bfd_fatal (_("set .nlmsections size")); } /* Copy the section contents. */ @@ -1317,7 +1330,7 @@ copy_sections (inbfd, insec, data_ptr) /* Add this section to .nlmsections. */ if (! bfd_set_section_contents (outbfd, secsec, (PTR) inname, secsecoff, strlen (inname) + 1)) - bfd_fatal ("set .nlmsection contents"); + bfd_fatal (_("set .nlmsection contents")); secsecoff += strlen (inname) + 1; add = ((secsecoff + 3) &~ 3) - secsecoff; @@ -1325,7 +1338,7 @@ copy_sections (inbfd, insec, data_ptr) { bfd_h_put_32 (outbfd, (bfd_vma) 0, buf); if (! bfd_set_section_contents (outbfd, secsec, buf, secsecoff, add)) - bfd_fatal ("set .nlmsection contents"); + bfd_fatal (_("set .nlmsection contents")); secsecoff += add; } @@ -1334,12 +1347,12 @@ copy_sections (inbfd, insec, data_ptr) else bfd_h_put_32 (outbfd, (bfd_vma) 0, buf); if (! bfd_set_section_contents (outbfd, secsec, buf, secsecoff, 4)) - bfd_fatal ("set .nlmsection contents"); + bfd_fatal (_("set .nlmsection contents")); secsecoff += 4; bfd_h_put_32 (outbfd, (bfd_vma) size, buf); if (! bfd_set_section_contents (outbfd, secsec, buf, secsecoff, 4)) - bfd_fatal ("set .nlmsection contents"); + bfd_fatal (_("set .nlmsection contents")); secsecoff += 4; } @@ -1663,7 +1676,7 @@ alpha_mangle_relocs (outbfd, insec, relocs_ptr, reloc_count_ptr, contents, { register bfd_size_type i; - for (i = 0; i < old_reloc_count; i++, relocs++) + for (i = 0; i < (bfd_size_type) old_reloc_count; i++, relocs++) (*relocs)->address += insec->output_offset; } } @@ -1842,7 +1855,7 @@ powerpc_build_stubs (inbfd, outbfd, symbols_ptr, symcount_ptr) (got_base + (stubcount * POWERPC_STUB_TOC_ENTRY_SIZE)))) - bfd_fatal ("stub section sizes"); + bfd_fatal (_("stub section sizes")); } } @@ -1891,7 +1904,7 @@ powerpc_resolve_stubs (inbfd, outbfd) buf, l->start->value, POWERPC_STUB_SIZE)) - bfd_fatal ("writing stub"); + bfd_fatal (_("writing stub")); /* Create a new reloc for the TOC entry. */ reloc = (arelent *) xmalloc (sizeof (arelent)); @@ -1981,7 +1994,7 @@ powerpc_mangle_relocs (outbfd, insec, relocs_ptr, reloc_count_ptr, contents, between two sections both of which were placed in the same output section. This should not happen. */ if (bfd_get_section (sym) != insec->output_section) - fprintf (stderr, "%s: unresolved PC relative reloc against %s\n", + fprintf (stderr, _("%s: unresolved PC relative reloc against %s\n"), program_name, bfd_asymbol_name (sym)); else { @@ -2046,7 +2059,7 @@ powerpc_mangle_relocs (outbfd, insec, relocs_ptr, reloc_count_ptr, contents, if ((bfd_signed_vma) val < - 0x8000 || (bfd_signed_vma) val >= 0x8000) fprintf (stderr, - "%s: overflow when adjusting relocation against %s\n", + _("%s: overflow when adjusting relocation against %s\n"), program_name, bfd_asymbol_name (sym)); bfd_put_16 (outbfd, val, (bfd_byte *) contents + rel->address); break; @@ -2169,7 +2182,7 @@ link_inputs (inputs, ld) PEXECUTE_SEARCH | PEXECUTE_ONE); if (pid == -1) { - fprintf (stderr, "%s: execution of %s failed: ", program_name, ld); + fprintf (stderr, _("%s: execution of %s failed: "), program_name, ld); fprintf (stderr, errfmt, errarg); unlink (unlink_on_exit); exit (1); @@ -2184,7 +2197,7 @@ link_inputs (inputs, ld) if (status != 0) { - fprintf (stderr, "%s: Execution of %s failed\n", program_name, ld); + fprintf (stderr, _("%s: Execution of %s failed\n"), program_name, ld); unlink (unlink_on_exit); exit (1); } diff --git a/binutils/nm.c b/binutils/nm.c index 835036818e..204c6a2f0c 100644 --- a/binutils/nm.c +++ b/binutils/nm.c @@ -1,5 +1,5 @@ /* nm.c -- Describe symbol table of a rel file. - Copyright 1991, 92, 93, 94 Free Software Foundation, Inc. + Copyright 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -35,6 +35,29 @@ struct size_sym bfd_vma size; }; +/* When fetching relocs, we use this structure to pass information to + get_relocs. */ + +struct get_relocs_info +{ + asection **secs; + arelent ***relocs; + long *relcount; + asymbol **syms; +}; + +static void +usage PARAMS ((FILE *, int)); + +static void +set_print_radix PARAMS ((char *)); + +static void +set_output_format PARAMS ((char *)); + +static void +display_archive PARAMS ((bfd *)); + static boolean display_file PARAMS ((char *filename)); @@ -54,6 +77,9 @@ print_symbols PARAMS ((bfd *, boolean, PTR, long, unsigned int, bfd *)); static void print_size_symbols PARAMS ((bfd *, boolean, struct size_sym *, long, bfd *)); +static void +print_symname PARAMS ((const char *, const char *, bfd *)); + static void print_symbol PARAMS ((bfd *, asymbol *, bfd *)); @@ -134,6 +160,8 @@ print_symbol_info_sysv PARAMS ((symbol_info * info, bfd * abfd)); static void print_symbol_info_posix PARAMS ((symbol_info * info, bfd * abfd)); +static void +get_relocs PARAMS ((bfd *, asection *, PTR)); /* Support for different output formats. */ struct output_fns @@ -187,6 +215,7 @@ static struct output_fns *format = &formats[FORMAT_DEFAULT]; static int do_demangle = 0; /* Pretty print C++ symbol names. */ static int external_only = 0; /* print external symbols only */ +static int defined_only = 0; /* Print defined symbols only */ static int no_sort = 0; /* don't sort; print syms in order found */ static int print_debug_syms = 0; /* print debugger-only symbols too */ static int print_armap = 0; /* describe __.SYMDEF data in archive files. */ @@ -197,6 +226,7 @@ static int undefined_only = 0; /* print undefined symbols only */ static int dynamic = 0; /* print dynamic symbols. */ static int show_version = 0; /* show the version number */ static int show_stats = 0; /* show statistics */ +static int line_numbers = 0; /* print line numbers for symbols */ /* When to print the names of files. Not mutually exclusive in SYSV format. */ static int filename_per_file = 0; /* Once per file, on its own line. */ @@ -217,11 +247,11 @@ static int print_radix = 16; static char other_format[] = "%02x"; static char desc_format[] = "%04x"; -/* IMPORT */ -extern char *program_name; -extern char *program_version; -extern char *target; -extern int print_version; +static char *target = NULL; + +/* Used to cache the line numbers for a BFD. */ +static bfd *lineno_cache_bfd; +static bfd *lineno_cache_rel_bfd; static struct option long_options[] = { @@ -231,6 +261,7 @@ static struct option long_options[] = {"extern-only", no_argument, &external_only, 1}, {"format", required_argument, 0, 'f'}, {"help", no_argument, 0, 'h'}, + {"line-numbers", no_argument, 0, 'l'}, {"no-cplus", no_argument, &do_demangle, 0}, /* Linux compatibility. */ {"no-demangle", no_argument, &do_demangle, 0}, {"no-sort", no_argument, &no_sort, 1}, @@ -243,6 +274,7 @@ static struct option long_options[] = {"size-sort", no_argument, &sort_by_size, 1}, {"stats", no_argument, &show_stats, 1}, {"target", required_argument, 0, 200}, + {"defined-only", no_argument, &defined_only, 1}, {"undefined-only", no_argument, &undefined_only, 1}, {"version", no_argument, &show_version, 1}, {0, no_argument, 0, 0} @@ -250,27 +282,30 @@ static struct option long_options[] = /* Some error-reporting functions */ -void +static void usage (stream, status) FILE *stream; int status; { - fprintf (stream, "\ -Usage: %s [-aABCDgnopPrsuvV] [-t radix] [--radix=radix] [--target=bfdname]\n\ + fprintf (stream, _("\ +Usage: %s [-aABCDglnopPrsuvV] [-t radix] [--radix=radix] [--target=bfdname]\n\ [--debug-syms] [--extern-only] [--print-armap] [--print-file-name]\n\ [--numeric-sort] [--no-sort] [--reverse-sort] [--size-sort]\n\ [--undefined-only] [--portability] [-f {bsd,sysv,posix}]\n\ [--format={bsd,sysv,posix}] [--demangle] [--no-demangle] [--dynamic]\n\ + [--defined-only] [--line-numbers]\n\ [--version] [--help]\n\ - [file...]\n", + [file...]\n"), program_name); list_supported_targets (program_name, stream); + if (status == 0) + fprintf (stream, _("Report bugs to bug-gnu-utils@gnu.org\n")); exit (status); } /* Set the radix for the symbol value and size according to RADIX. */ -void +static void set_print_radix (radix) char *radix; { @@ -297,12 +332,12 @@ set_print_radix (radix) other_format[3] = desc_format[3] = *radix; break; default: - fprintf (stderr, "%s: %s: invalid radix\n", program_name, radix); + fprintf (stderr, _("%s: %s: invalid radix\n"), program_name, radix); exit (1); } } -void +static void set_output_format (f) char *f; { @@ -323,7 +358,7 @@ set_output_format (f) i = FORMAT_SYSV; break; default: - fprintf (stderr, "%s: %s: invalid output format\n", program_name, f); + fprintf (stderr, _("%s: %s: invalid output format\n"), program_name, f); exit (1); } format = &formats[i]; @@ -343,8 +378,9 @@ main (argc, argv) START_PROGRESS (program_name, 0); bfd_init (); + set_default_bfd_target (); - while ((c = getopt_long (argc, argv, "aABCDef:gnopPrst:uvV", long_options, (int *) 0)) != EOF) + while ((c = getopt_long (argc, argv, "aABCDef:glnopPrst:uvV", long_options, (int *) 0)) != EOF) { switch (c) { @@ -375,6 +411,9 @@ main (argc, argv) break; case 'h': usage (stdout, 0); + case 'l': + line_numbers = 1; + break; case 'n': case 'v': sort_numerically = 1; @@ -414,10 +453,7 @@ main (argc, argv) } if (show_version) - { - printf ("GNU %s version %s\n", program_name, program_version); - exit (0); - } + print_version ("nm"); /* OK, all options now parsed. If no filename specified, do a.out. */ if (optind == argc) @@ -444,7 +480,7 @@ main (argc, argv) extern char **environ; char *lim = (char *) sbrk (0); - fprintf (stderr, "%s: data size %ld\n", program_name, + fprintf (stderr, _("%s: data size %ld\n"), program_name, (long) (lim - (char *) &environ)); } #endif @@ -496,12 +532,20 @@ display_archive (file) } if (last_arfile != NULL) - bfd_close (last_arfile); + { + bfd_close (last_arfile); + lineno_cache_bfd = NULL; + lineno_cache_rel_bfd = NULL; + } last_arfile = arfile; } if (last_arfile != NULL) - bfd_close (last_arfile); + { + bfd_close (last_arfile); + lineno_cache_bfd = NULL; + lineno_cache_rel_bfd = NULL; + } } static boolean @@ -542,6 +586,9 @@ display_file (filename) if (bfd_close (file) == false) bfd_fatal (filename); + lineno_cache_bfd = NULL; + lineno_cache_rel_bfd = NULL; + return retval; } @@ -745,7 +792,7 @@ sort_symbols_by_size (abfd, dynamic, minisyms, symcount, size, symsizesp) { struct size_sym *symsizes; bfd_byte *from, *fromend; - asymbol *sym; + asymbol *sym = NULL; asymbol *store_sym, *store_next; qsort (minisyms, symcount, size, size_forward1); @@ -789,6 +836,8 @@ sort_symbols_by_size (abfd, dynamic, minisyms, symcount, size, symsizesp) if (next == NULL) bfd_fatal (bfd_get_filename (abfd)); } + else + next = NULL; sec = bfd_get_section (sym); @@ -843,7 +892,7 @@ display_rel_file (abfd, archive_bfd) { if (!(bfd_get_file_flags (abfd) & HAS_SYMS)) { - printf ("No symbols in \"%s\".\n", bfd_get_filename (abfd)); + printf (_("No symbols in \"%s\".\n"), bfd_get_filename (abfd)); return; } } @@ -854,7 +903,7 @@ display_rel_file (abfd, archive_bfd) if (symcount == 0) { - fprintf (stderr, "%s: no symbols\n", bfd_get_filename (abfd)); + fprintf (stderr, _("%s: no symbols\n"), bfd_get_filename (abfd)); return; } @@ -928,6 +977,7 @@ filter_symbols (abfd, dynamic, minisyms, symcount, size) keep = bfd_is_und_section (sym->section); else if (external_only) keep = ((sym->flags & BSF_GLOBAL) != 0 + || (sym->flags & BSF_WEAK) != 0 || bfd_is_und_section (sym->section) || bfd_is_com_section (sym->section)); else @@ -944,6 +994,13 @@ filter_symbols (abfd, dynamic, minisyms, symcount, size) || bfd_is_und_section (sym->section))) keep = 0; + if (keep + && defined_only) + { + if (bfd_is_und_section (sym->section)) + keep = 0; + } + if (keep) { memcpy (to, from, size); @@ -959,7 +1016,8 @@ filter_symbols (abfd, dynamic, minisyms, symcount, size) static void print_symname (format, name, abfd) - char *format, *name; + const char *format; + const char *name; bfd *abfd; { if (do_demangle && *name) @@ -1067,7 +1125,7 @@ print_symbol (abfd, sym, archive_bfd) if (undefined_only) { if (bfd_is_und_section (bfd_get_section (sym))) - print_symname ("%s\n", bfd_asymbol_name (sym), abfd); + print_symname ("%s", bfd_asymbol_name (sym), abfd); } else { @@ -1075,8 +1133,121 @@ print_symbol (abfd, sym, archive_bfd) bfd_get_symbol_info (abfd, sym, &syminfo); (*format->print_symbol_info) (&syminfo, abfd); - putchar ('\n'); } + + if (line_numbers) + { + static asymbol **syms; + static long symcount; + const char *filename, *functionname; + unsigned int lineno; + + /* We need to get the canonical symbols in order to call + bfd_find_nearest_line. This is inefficient, but, then, you + don't have to use --line-numbers. */ + if (abfd != lineno_cache_bfd && syms != NULL) + { + free (syms); + syms = NULL; + } + if (syms == NULL) + { + long symsize; + + symsize = bfd_get_symtab_upper_bound (abfd); + if (symsize < 0) + bfd_fatal (bfd_get_filename (abfd)); + syms = (asymbol **) xmalloc (symsize); + symcount = bfd_canonicalize_symtab (abfd, syms); + if (symcount < 0) + bfd_fatal (bfd_get_filename (abfd)); + lineno_cache_bfd = abfd; + } + + if (bfd_is_und_section (bfd_get_section (sym))) + { + static asection **secs; + static arelent ***relocs; + static long *relcount; + static unsigned int seccount; + unsigned int i; + const char *symname; + + /* For an undefined symbol, we try to find a reloc for the + symbol, and print the line number of the reloc. */ + + if (abfd != lineno_cache_rel_bfd && relocs != NULL) + { + for (i = 0; i < seccount; i++) + if (relocs[i] != NULL) + free (relocs[i]); + free (secs); + free (relocs); + free (relcount); + secs = NULL; + relocs = NULL; + relcount = NULL; + } + + if (relocs == NULL) + { + struct get_relocs_info info; + + seccount = bfd_count_sections (abfd); + + secs = (asection **) xmalloc (seccount * sizeof *secs); + relocs = (arelent ***) xmalloc (seccount * sizeof *relocs); + relcount = (long *) xmalloc (seccount * sizeof *relcount); + + info.secs = secs; + info.relocs = relocs; + info.relcount = relcount; + info.syms = syms; + bfd_map_over_sections (abfd, get_relocs, (PTR) &info); + lineno_cache_rel_bfd = abfd; + } + + symname = bfd_asymbol_name (sym); + for (i = 0; i < seccount; i++) + { + long j; + + for (j = 0; j < relcount[i]; j++) + { + arelent *r; + + r = relocs[i][j]; + if (r->sym_ptr_ptr != NULL + && (*r->sym_ptr_ptr)->section == sym->section + && (*r->sym_ptr_ptr)->value == sym->value + && strcmp (symname, + bfd_asymbol_name (*r->sym_ptr_ptr)) == 0 + && bfd_find_nearest_line (abfd, secs[i], syms, + r->address, &filename, + &functionname, &lineno)) + { + /* We only print the first one we find. */ + printf ("\t%s:%u", filename, lineno); + i = seccount; + break; + } + } + } + } + else if (bfd_get_section (sym)->owner == abfd) + { + if (bfd_find_nearest_line (abfd, bfd_get_section (sym), syms, + sym->value, &filename, &functionname, + &lineno) + && filename != NULL + && lineno != 0) + { + printf ("\t%s:%u", filename, lineno); + } + } + } + + putchar ('\n'); } /* The following 3 groups of functions are called unconditionally, @@ -1100,11 +1271,11 @@ print_object_filename_sysv (filename) char *filename; { if (undefined_only) - printf ("\n\nUndefined symbols from %s:\n\n", filename); + printf (_("\n\nUndefined symbols from %s:\n\n"), filename); else - printf ("\n\nSymbols from %s:\n\n", filename); - printf ("\ -Name Value Class Type Size Line Section\n\n"); + printf (_("\n\nSymbols from %s:\n\n"), filename); + printf (_("\ +Name Value Class Type Size Line Section\n\n")); } static void @@ -1154,11 +1325,11 @@ print_archive_member_sysv (archive, filename) CONST char *filename; { if (undefined_only) - printf ("\n\nUndefined symbols from %s[%s]:\n\n", archive, filename); + printf (_("\n\nUndefined symbols from %s[%s]:\n\n"), archive, filename); else - printf ("\n\nSymbols from %s[%s]:\n\n", archive, filename); - printf ("\ -Name Value Class Type Size Line Section\n\n"); + printf (_("\n\nSymbols from %s[%s]:\n\n"), archive, filename); + printf (_("\ +Name Value Class Type Size Line Section\n\n")); } static void @@ -1327,7 +1498,7 @@ print_symdef_entry (abfd) bfd *elt; if (!everprinted) { - printf ("\nArchive index:\n"); + printf (_("\nArchive index:\n")); everprinted = true; } elt = bfd_get_elt_at_index (abfd, idx); @@ -1340,3 +1511,41 @@ print_symdef_entry (abfd) } } } + +/* This function is used to get the relocs for a particular section. + It is called via bfd_map_over_sections. */ + +static void +get_relocs (abfd, sec, dataarg) + bfd *abfd; + asection *sec; + PTR dataarg; +{ + struct get_relocs_info *data = (struct get_relocs_info *) dataarg; + + *data->secs = sec; + + if ((sec->flags & SEC_RELOC) == 0) + { + *data->relocs = NULL; + *data->relcount = 0; + } + else + { + long relsize; + + relsize = bfd_get_reloc_upper_bound (abfd, sec); + if (relsize < 0) + bfd_fatal (bfd_get_filename (abfd)); + + *data->relocs = (arelent **) xmalloc (relsize); + *data->relcount = bfd_canonicalize_reloc (abfd, sec, *data->relocs, + data->syms); + if (*data->relcount < 0) + bfd_fatal (bfd_get_filename (abfd)); + } + + ++data->secs; + ++data->relocs; + ++data->relcount; +} diff --git a/binutils/objcopy.c b/binutils/objcopy.c index 2c5575fa8f..b9da0c9911 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -291,14 +291,14 @@ copy_usage (stream, exit_status) FILE *stream; int exit_status; { - fprintf (stream, "\ + fprintf (stream, _("\ Usage: %s [-vVSpgxX] [-I bfdname] [-O bfdname] [-F bfdname] [-b byte]\n\ [-R section] [-i interleave] [--interleave=interleave] [--byte=byte]\n\ [--input-target=bfdname] [--output-target=bfdname] [--target=bfdname]\n\ [--strip-all] [--strip-debug] [--strip-unneeded] [--discard-all]\n\ - [--discard-locals] [--debugging] [--remove-section=section]\n", + [--discard-locals] [--debugging] [--remove-section=section]\n"), program_name); - fprintf (stream, "\ + fprintf (stream, _("\ [--gap-fill=val] [--pad-to=address] [--preserve-dates]\n\ [--set-start=val] [--adjust-start=incr]\n\ [--adjust-vma=incr] [--adjust-section-vma=section{=,+,-}val]\n\ @@ -307,10 +307,10 @@ Usage: %s [-vVSpgxX] [-I bfdname] [-O bfdname] [-F bfdname] [-b byte]\n\ [--keep-symbol symbol] [-K symbol] [--strip-symbol symbol] [-N symbol]\n\ [--localize-symbol symbol] [-L symbol] [--weaken-symbol symbol]\n\ [-W symbol] [--change-leading-char] [--remove-leading-char] [--weaken]\n\ - [--verbose] [--version] [--help] in-file [out-file]\n"); + [--verbose] [--version] [--help] in-file [out-file]\n")); list_supported_targets (program_name, stream); if (exit_status == 0) - fprintf (stream, "Report bugs to bug-gnu-utils@gnu.org\n"); + fprintf (stream, _("Report bugs to bug-gnu-utils@gnu.org\n")); exit (exit_status); } @@ -319,17 +319,17 @@ strip_usage (stream, exit_status) FILE *stream; int exit_status; { - fprintf (stream, "\ + fprintf (stream, _("\ Usage: %s [-vVsSpgxX] [-I bfdname] [-O bfdname] [-F bfdname] [-R section]\n\ [--input-target=bfdname] [--output-target=bfdname] [--target=bfdname]\n\ [--strip-all] [--strip-debug] [--strip-unneeded] [--discard-all]\n\ [--discard-locals] [--keep-symbol symbol] [-K symbol]\n\ [--strip-symbol symbol] [-N symbol] [--remove-section=section]\n\ - [-o file] [--preserve-dates] [--verbose] [--version] [--help] file...\n", + [-o file] [--preserve-dates] [--verbose] [--version] [--help] file...\n"), program_name); list_supported_targets (program_name, stream); if (exit_status == 0) - fprintf (stream, "Report bugs to bug-gnu-utils@gnu.org\n"); + fprintf (stream, _("Report bugs to bug-gnu-utils@gnu.org\n")); exit (exit_status); } @@ -375,10 +375,10 @@ parse_flags (s) copy = xmalloc (len + 1); strncpy (copy, s, len); copy[len] = '\0'; - fprintf (stderr, "%s: unrecognized section flag `%s'\n", + fprintf (stderr, _("%s: unrecognized section flag `%s'\n"), program_name, copy); fprintf (stderr, - "%s: supported flags: alloc, load, readonly, code, data, rom, contents\n", + _("%s: supported flags: alloc, load, readonly, code, data, rom, contents\n"), program_name); exit (1); } @@ -608,7 +608,7 @@ copy_object (ibfd, obfd) } if (verbose) - printf ("copy from %s(%s) to %s(%s)\n", + printf (_("copy from %s(%s) to %s(%s)\n"), bfd_get_filename(ibfd), bfd_get_target(ibfd), bfd_get_filename(obfd), bfd_get_target(obfd)); @@ -631,7 +631,7 @@ copy_object (ibfd, obfd) bfd_get_mach (ibfd))) { fprintf (stderr, - "Warning: Output file cannot represent architecture %s\n", + _("Warning: Output file cannot represent architecture %s\n"), bfd_printable_arch_mach (bfd_get_arch (ibfd), bfd_get_mach (ibfd))); } @@ -659,7 +659,7 @@ copy_object (ibfd, obfd) padd->section = bfd_make_section (obfd, padd->name); if (padd->section == NULL) { - fprintf (stderr, "%s: can't create section `%s': %s\n", + fprintf (stderr, _("%s: can't create section `%s': %s\n"), program_name, padd->name, bfd_errmsg (bfd_get_error ())); status = 1; @@ -736,7 +736,7 @@ copy_object (ibfd, obfd) if (! bfd_set_section_size (obfd, osections[i], size + (gap_stop - gap_start))) { - fprintf (stderr, "%s: Can't fill gap after %s: %s\n", + fprintf (stderr, _("%s: Can't fill gap after %s: %s\n"), program_name, bfd_get_section_name (obfd, osections[i]), bfd_errmsg (bfd_get_error())); @@ -762,7 +762,7 @@ copy_object (ibfd, obfd) if (! bfd_set_section_size (obfd, osections[c - 1], pad_to - lma)) { - fprintf (stderr, "%s: Can't add padding to %s: %s\n", + fprintf (stderr, _("%s: Can't add padding to %s: %s\n"), program_name, bfd_get_section_name (obfd, osections[c - 1]), bfd_errmsg (bfd_get_error ())); @@ -911,7 +911,7 @@ copy_object (ibfd, obfd) important for the ECOFF code at least. */ if (!bfd_copy_private_bfd_data (ibfd, obfd)) { - fprintf (stderr, "%s: %s: error copying private BFD data: %s\n", + fprintf (stderr, _("%s: %s: error copying private BFD data: %s\n"), program_name, bfd_get_filename (obfd), bfd_errmsg (bfd_get_error ())); status = 1; @@ -945,7 +945,7 @@ copy_archive (ibfd, obfd, output_target) if (mkdir (dir, 0700) != 0) #endif { - fatal ("cannot mkdir %s for archive copying (error: %s)", + fatal (_("cannot mkdir %s for archive copying (error: %s)"), dir, strerror (errno)); } obfd->has_armap = ibfd->has_armap; @@ -1198,7 +1198,7 @@ setup_section (ibfd, isection, obfdarg) return; loser: - fprintf (stderr, "%s: %s: section `%s': error in %s: %s\n", + fprintf (stderr, _("%s: %s: section `%s': error in %s: %s\n"), program_name, bfd_get_filename (ibfd), bfd_section_name (ibfd, isection), err, bfd_errmsg (bfd_get_error ())); @@ -1461,7 +1461,7 @@ write_debugging_info (obfd, dhandle, symcountp, symppp) | SEC_READONLY | SEC_DEBUGGING))) { - fprintf (stderr, "%s: can't create debugging section: %s\n", + fprintf (stderr, _("%s: can't create debugging section: %s\n"), bfd_get_filename (obfd), bfd_errmsg (bfd_get_error ())); return false; } @@ -1475,7 +1475,7 @@ write_debugging_info (obfd, dhandle, symcountp, symppp) || ! bfd_set_section_contents (obfd, stabstrsec, strings, (file_ptr) 0, stringsize)) { - fprintf (stderr, "%s: can't set debugging section contents: %s\n", + fprintf (stderr, _("%s: can't set debugging section contents: %s\n"), bfd_get_filename (obfd), bfd_errmsg (bfd_get_error ())); return false; } @@ -1484,7 +1484,7 @@ write_debugging_info (obfd, dhandle, symcountp, symppp) } fprintf (stderr, - "%s: don't know how to write debugging information for %s\n", + _("%s: don't know how to write debugging information for %s\n"), bfd_get_filename (obfd), bfd_get_target (obfd)); return false; } @@ -1669,7 +1669,7 @@ set_times (destination, statbuf) if (result != 0) { fprintf (stderr, "%s: ", destination); - perror ("can not set time"); + perror (_("can not set time")); } } @@ -1774,7 +1774,7 @@ strip_main (argc, argv) if (stat (argv[i], &statbuf) < 0) { fprintf (stderr, "%s: ", argv[i]); - perror ("cannot stat"); + perror (_("cannot stat")); continue; } } @@ -1825,7 +1825,7 @@ copy_main (argc, argv) copy_byte = atoi(optarg); if (copy_byte < 0) { - fprintf (stderr, "%s: byte number must be non-negative\n", + fprintf (stderr, _("%s: byte number must be non-negative\n"), program_name); exit (1); } @@ -1834,7 +1834,7 @@ copy_main (argc, argv) interleave = atoi(optarg); if (interleave < 1) { - fprintf(stderr, "%s: interleave must be positive\n", + fprintf(stderr, _("%s: interleave must be positive\n"), program_name); exit (1); } @@ -1907,7 +1907,7 @@ copy_main (argc, argv) if (s == NULL) { fprintf (stderr, - "%s: bad format for --add-section NAME=FILENAME\n", + _("%s: bad format for --add-section NAME=FILENAME\n"), program_name); exit (1); } @@ -1942,7 +1942,7 @@ copy_main (argc, argv) if (fread (pa->contents, 1, pa->size, f) == 0 || ferror (f)) { - fprintf (stderr, "%s: %s: fread failed\n", + fprintf (stderr, _("%s: %s: fread failed\n"), program_name, pa->filename); exit (1); } @@ -1971,7 +1971,7 @@ copy_main (argc, argv) if (s == NULL) { fprintf (stderr, - "%s: bad format for --adjust-section-vma\n", + _("%s: bad format for --adjust-section-vma\n"), program_name); exit (1); } @@ -2018,7 +2018,7 @@ copy_main (argc, argv) gap_fill = (bfd_byte) gap_fill_vma; if ((bfd_vma) gap_fill != gap_fill_vma) { - fprintf (stderr, "%s: warning: truncating gap-fill from 0x", + fprintf (stderr, _("%s: warning: truncating gap-fill from 0x"), program_name); fprintf_vma (stderr, gap_fill_vma); fprintf (stderr, "to 0x%x\n", (unsigned int) gap_fill); @@ -2045,7 +2045,7 @@ copy_main (argc, argv) s = strchr (optarg, '='); if (s == NULL) { - fprintf (stderr, "%s: bad format for --set-section-flags\n", + fprintf (stderr, _("%s: bad format for --set-section-flags\n"), program_name); exit (1); } @@ -2079,7 +2079,7 @@ copy_main (argc, argv) if (copy_byte >= interleave) { - fprintf (stderr, "%s: byte number must be less than interleave\n", + fprintf (stderr, _("%s: byte number must be less than interleave\n"), program_name); exit (1); } @@ -2103,7 +2103,7 @@ copy_main (argc, argv) if (stat (input_filename, &statbuf) < 0) { fprintf (stderr, "%s: ", input_filename); - perror ("cannot stat"); + perror (_("cannot stat")); exit (1); } } @@ -2138,11 +2138,11 @@ copy_main (argc, argv) { if (! p->used && p->adjust != ignore_vma) { - fprintf (stderr, "%s: warning: --adjust-section-vma %s%c0x", + fprintf (stderr, _("%s: warning: --adjust-section-vma %s%c0x"), program_name, p->name, p->adjust == set_vma ? '=' : '+'); fprintf_vma (stderr, p->val); - fprintf (stderr, " never used\n"); + fprintf (stderr, _(" never used\n")); } } } diff --git a/binutils/objdump.c b/binutils/objdump.c index ecfce4253d..29c440eeb6 100644 --- a/binutils/objdump.c +++ b/binutils/objdump.c @@ -1,5 +1,6 @@ /* objdump.c -- dump information about an object file. - Copyright 1990, 91, 92, 93, 94, 95, 96, 1997 Free Software Foundation, Inc. + Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 1998 + Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -215,24 +216,24 @@ usage (stream, status) FILE *stream; int status; { - fprintf (stream, "\ + fprintf (stream, _("\ Usage: %s [-ahifCdDprRtTxsSlw] [-b bfdname] [-m machine] [-j section-name]\n\ [--archive-headers] [--target=bfdname] [--debugging] [--disassemble]\n\ [--disassemble-all] [--disassemble-zeroes] [--file-headers]\n\ [--section-headers] [--headers]\n\ - [--info] [--section=section-name] [--line-numbers] [--source]\n", + [--info] [--section=section-name] [--line-numbers] [--source]\n"), program_name); - fprintf (stream, "\ + fprintf (stream, _("\ [--architecture=machine] [--reloc] [--full-contents] [--stabs]\n\ [--syms] [--all-headers] [--dynamic-syms] [--dynamic-reloc]\n\ [--wide] [--version] [--help] [--private-headers]\n\ [--start-address=addr] [--stop-address=addr]\n\ [--prefix-addresses] [--[no-]show-raw-insn] [--demangle]\n\ [--adjust-vma=offset] [-EB|-EL] [--endian={big|little}] objfile...\n\ -at least one option besides -l (--line-numbers) must be given\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"); + fprintf (stream, _("Report bugs to bug-gnu-utils@gnu.org\n")); exit (status); } @@ -357,11 +358,11 @@ static void dump_headers (abfd) bfd *abfd; { - printf ("Sections:\n"); + printf (_("Sections:\n")); #ifndef BFD64 - printf ("Idx Name Size VMA LMA File off Algn\n"); + printf (_("Idx Name Size VMA LMA File off Algn\n")); #else - printf ("Idx Name Size VMA LMA File off Algn\n"); + printf (_("Idx Name Size VMA LMA File off Algn\n")); #endif bfd_map_over_sections (abfd, dump_section_header, (PTR) NULL); } @@ -375,7 +376,7 @@ slurp_symtab (abfd) if (!(bfd_get_file_flags (abfd) & HAS_SYMS)) { - printf ("No symbols in \"%s\".\n", bfd_get_filename (abfd)); + printf (_("No symbols in \"%s\".\n"), bfd_get_filename (abfd)); symcount = 0; return NULL; } @@ -392,7 +393,7 @@ slurp_symtab (abfd) if (symcount < 0) bfd_fatal (bfd_get_filename (abfd)); if (symcount == 0) - fprintf (stderr, "%s: %s: No symbols\n", + fprintf (stderr, _("%s: %s: No symbols\n"), program_name, bfd_get_filename (abfd)); return sy; } @@ -411,7 +412,7 @@ slurp_dynamic_symtab (abfd) { if (!(bfd_get_file_flags (abfd) & DYNAMIC)) { - fprintf (stderr, "%s: %s: not a dynamic object\n", + fprintf (stderr, _("%s: %s: not a dynamic object\n"), program_name, bfd_get_filename (abfd)); dynsymcount = 0; return NULL; @@ -428,7 +429,7 @@ slurp_dynamic_symtab (abfd) if (dynsymcount < 0) bfd_fatal (bfd_get_filename (abfd)); if (dynsymcount == 0) - fprintf (stderr, "%s: %s: No dynamic symbols\n", + fprintf (stderr, _("%s: %s: No dynamic symbols\n"), program_name, bfd_get_filename (abfd)); return sy; } @@ -828,9 +829,6 @@ objdump_print_addr_with_sym (abfd, sec, sym, vma, info, skip_zeroes) objdump_print_value (vma - bfd_asymbol_value (sym), info, true); } (*info->fprintf_func) (info->stream, ">"); - - /* Notify the disassembler of the symbol being used: */ - disasm_symaddr (sym, info); } } @@ -1232,7 +1230,8 @@ disassemble_bytes (info, disassemble_fn, insns, data, start, stop, relppp, { char buf[1000]; SFILE sfile; - int bpc, pb = 0; + int bpc = 0; + int pb = 0; done_dot = false; @@ -1265,6 +1264,11 @@ disassemble_bytes (info, disassemble_fn, insns, data, start, stop, relppp, info->stream = (FILE *) &sfile; info->bytes_per_line = 0; info->bytes_per_chunk = 0; + if ((*relppp < relppend) && ((**relppp)->address >= (bfd_vma) i && + (**relppp)->address < (bfd_vma) i + bytes)) + info->flags = INSN_HAS_RELOC; + else + info->flags = 0; bytes = (*disassemble_fn) (section->vma + i, info); info->fprintf_func = (fprintf_ftype) fprintf; info->stream = stdout; @@ -1489,7 +1493,7 @@ disassemble_data (abfd) const bfd_arch_info_type *info = bfd_scan_arch (machine); if (info == NULL) { - fprintf (stderr, "%s: Can't use supplied machine %s\n", + fprintf (stderr, _("%s: Can't use supplied machine %s\n"), program_name, machine); exit (1); @@ -1510,7 +1514,7 @@ disassemble_data (abfd) disassemble_fn = disassembler (abfd); if (!disassemble_fn) { - fprintf (stderr, "%s: Can't disassemble for architecture %s\n", + fprintf (stderr, _("%s: Can't disassemble for architecture %s\n"), program_name, bfd_printable_arch_mach (bfd_get_arch (abfd), 0)); return; @@ -1575,7 +1579,7 @@ disassemble_data (abfd) } } - printf ("Disassembly of section %s:\n", section->name); + printf (_("Disassembly of section %s:\n"), section->name); datasize = bfd_get_section_size_before_reloc (section); if (datasize == 0) @@ -1608,7 +1612,7 @@ disassemble_data (abfd) sym = find_symbol_for_address (abfd, section, section->vma + i, true, &place); - ++place; + while (i < stop) { asymbol *nextsym; @@ -1616,10 +1620,20 @@ disassemble_data (abfd) boolean insns; if (sym != NULL && bfd_asymbol_value (sym) <= section->vma + i) - disasm_info.symbol = sym; + { + int x; + + for (x = place; + (x < sorted_symcount + && bfd_asymbol_value (sorted_syms[x]) <= section->vma + i); + ++x) + continue; + disasm_info.symbols = & sorted_syms[place]; + disasm_info.num_symbols = x - place; + } else - disasm_info.symbol = NULL; - + disasm_info.symbols = NULL; + if (! prefix_addresses) { printf ("\n"); @@ -1637,6 +1651,7 @@ disassemble_data (abfd) else { while (place < sorted_symcount + /* ??? Why the test for != section? */ && (sorted_syms[place]->section != section || (bfd_asymbol_value (sorted_syms[place]) <= bfd_asymbol_value (sym)))) @@ -1735,14 +1750,14 @@ read_section_stabs (abfd, stabsect_name, strsect_name) stabsect = bfd_get_section_by_name (abfd, stabsect_name); if (0 == stabsect) { - printf ("No %s section present\n\n", stabsect_name); + printf (_("No %s section present\n\n"), stabsect_name); return false; } stabstrsect = bfd_get_section_by_name (abfd, strsect_name); if (0 == stabstrsect) { - fprintf (stderr, "%s: %s has no %s section\n", program_name, + fprintf (stderr, _("%s: %s has no %s section\n"), program_name, bfd_get_filename (abfd), strsect_name); return false; } @@ -1755,7 +1770,7 @@ read_section_stabs (abfd, stabsect_name, strsect_name) if (! bfd_get_section_contents (abfd, stabsect, (PTR) stabs, 0, stab_size)) { - fprintf (stderr, "%s: Reading %s section of %s failed: %s\n", + fprintf (stderr, _("%s: Reading %s section of %s failed: %s\n"), program_name, stabsect_name, bfd_get_filename (abfd), bfd_errmsg (bfd_get_error ())); free (stabs); @@ -1766,7 +1781,7 @@ read_section_stabs (abfd, stabsect_name, strsect_name) if (! bfd_get_section_contents (abfd, stabstrsect, (PTR) strtab, 0, stabstr_size)) { - fprintf (stderr, "%s: Reading %s section of %s failed: %s\n", + fprintf (stderr, _("%s: Reading %s section of %s failed: %s\n"), program_name, strsect_name, bfd_get_filename (abfd), bfd_errmsg (bfd_get_error ())); free (stabs); @@ -1808,7 +1823,7 @@ print_section_stabs (abfd, stabsect_name, strsect_name) stabp = stabs; stabs_end = stabp + stab_size; - printf ("Contents of %s section:\n\n", stabsect_name); + printf (_("Contents of %s section:\n\n"), stabsect_name); printf ("Symnum n_type n_othr n_desc n_value n_strx String\n"); /* Loop through all symbols and print them. @@ -1885,11 +1900,12 @@ dump_section_stabs (abfd, stabsect_name, strsect_name) len = strlen (stabsect_name); -/* If the prefix matches, and the files section name ends with a nul or a digit, - then we match. Ie: we want either an exact match or a a section followed by - a number. */ + /* If the prefix matches, and the files section name ends with a + nul or a digit, then we match. I.e., we want either an exact + match or a section followed by a number. */ if (strncmp (stabsect_name, s->name, len) == 0 - && (s->name[len] == '\000' || isdigit (s->name[len]))) + && (s->name[len] == '\000' + || isdigit ((unsigned char) s->name[len]))) { if (read_section_stabs (abfd, s->name, strsect_name)) { @@ -1907,10 +1923,10 @@ dump_bfd_header (abfd) { char *comma = ""; - printf ("architecture: %s, ", + printf (_("architecture: %s, "), bfd_printable_arch_mach (bfd_get_arch (abfd), bfd_get_mach (abfd))); - printf ("flags 0x%08x:\n", abfd->flags); + printf (_("flags 0x%08x:\n"), abfd->flags); #define PF(x, y) if (abfd->flags & x) {printf("%s%s", comma, y); comma=", ";} PF (HAS_RELOC, "HAS_RELOC"); @@ -1923,7 +1939,7 @@ dump_bfd_header (abfd) PF (WP_TEXT, "WP_TEXT"); PF (D_PAGED, "D_PAGED"); PF (BFD_IS_RELAXABLE, "BFD_IS_RELAXABLE"); - printf ("\nstart address 0x"); + printf (_("\nstart address 0x")); printf_vma (abfd->start_address); printf ("\n"); } @@ -1966,7 +1982,7 @@ display_bfd (abfd) } } - printf ("\n%s: file format %s\n", bfd_get_filename (abfd), + printf (_("\n%s: file format %s\n"), bfd_get_filename (abfd), abfd->xvec->name); if (dump_ar_hdrs) print_arelt_descr (stdout, abfd, true); @@ -2007,7 +2023,7 @@ display_bfd (abfd) if (dhandle != NULL) { if (! print_debugging_info (stdout, dhandle)) - fprintf (stderr, "%s: printing debugging information failed\n", + fprintf (stderr, _("%s: printing debugging information failed\n"), bfd_get_filename (abfd)); } } @@ -2041,7 +2057,7 @@ display_file (filename, target) { bfd *last_arfile = NULL; - printf ("In archive %s:\n", bfd_get_filename (file)); + printf (_("In archive %s:\n"), bfd_get_filename (file)); for (;;) { bfd_set_error (bfd_error_no_error); @@ -2094,7 +2110,7 @@ dump_data (abfd) { if (section->flags & SEC_HAS_CONTENTS) { - printf ("Contents of section %s:\n", section->name); + printf (_("Contents of section %s:\n"), section->name); if (bfd_section_size (abfd, section) == 0) continue; @@ -2597,7 +2613,7 @@ display_target_tables () static void display_info () { - printf ("BFD header file version %s\n", BFD_VERSION); + printf (_("BFD header file version %s\n"), BFD_VERSION); display_target_list (); display_target_tables (); } @@ -2716,7 +2732,7 @@ main (argc, argv) endian = BFD_ENDIAN_LITTLE; else { - fprintf (stderr, "%s: unrecognized -E option\n", program_name); + fprintf (stderr, _("%s: unrecognized -E option\n"), program_name); usage (stderr, 1); } break; @@ -2727,7 +2743,7 @@ main (argc, argv) endian = BFD_ENDIAN_LITTLE; else { - fprintf (stderr, "%s: unrecognized --endian type `%s'\n", + fprintf (stderr, _("%s: unrecognized --endian type `%s'\n"), program_name, optarg); usage (stderr, 1); } diff --git a/binutils/po/Make-in b/binutils/po/Make-in new file mode 100644 index 0000000000..82d35908d2 --- /dev/null +++ b/binutils/po/Make-in @@ -0,0 +1,250 @@ +# Makefile for program source directory in GNU NLS utilities package. +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper +# +# This file file be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datadir = $(prefix)/@DATADIRNAME@ +localedir = $(datadir)/locale +gnulocaledir = $(prefix)/share/locale +gettextsrcdir = $(prefix)/share/gettext/po +subdir = po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@ + +CC = @CC@ +GENCAT = @GENCAT@ +GMSGFMT = PATH=../src:$$PATH @GMSGFMT@ +MSGFMT = @MSGFMT@ +XGETTEXT = PATH=../src:$$PATH @XGETTEXT@ +MSGMERGE = PATH=../src:$$PATH msgmerge + +DEFS = @DEFS@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ + +INCLUDES = -I.. -I$(top_srcdir)/intl + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +SOURCES = cat-id-tbl.c +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ +stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES) + +POTFILES = \ + +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +INSTOBJEXT = @INSTOBJEXT@ + +.SUFFIXES: +.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat + +.c.o: + $(COMPILE) $< + +.po.pox: + $(MAKE) $(PACKAGE).pot + $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox + +.po.mo: + $(MSGFMT) -o $@ $< + +.po.gmo: + file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ + && rm -f $$file && $(GMSGFMT) -o $$file $< + +.po.cat: + sed -f ../intl/po2msg.sed < $< > $*.msg \ + && rm -f $@ && $(GENCAT) $@ $*.msg + + +all: all-@USE_NLS@ + +all-yes: $(CATALOGS) +all-no: + +$(srcdir)/$(PACKAGE).pot: @MAINT@ $(POTFILES) + $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ + --add-comments --keyword=_ --keyword=N_ \ + --files-from=$(srcdir)/POTFILES.in + rm -f $(srcdir)/$(PACKAGE).pot + mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot + +$(srcdir)/cat-id-tbl.c: stamp-cat-id; @: +$(srcdir)/stamp-cat-id: $(PACKAGE).pot + rm -f cat-id-tbl.tmp + sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \ + | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp + if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \ + rm cat-id-tbl.tmp; \ + else \ + echo cat-id-tbl.c changed; \ + rm -f $(srcdir)/cat-id-tbl.c; \ + mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \ + fi + cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ +install-data-no: all +install-data-yes: all + if test -r $(MKINSTALLDIRS); then \ + $(MKINSTALLDIRS) $(datadir); \ + else \ + $(top_srcdir)/mkinstalldirs $(datadir); \ + fi + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + case "$$cat" in \ + *.gmo) destdir=$(gnulocaledir);; \ + *) destdir=$(localedir);; \ + esac; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + dir=$$destdir/$$lang/LC_MESSAGES; \ + if test -r $(MKINSTALLDIRS); then \ + $(MKINSTALLDIRS) $$dir; \ + else \ + $(top_srcdir)/mkinstalldirs $$dir; \ + fi; \ + if test -r $$cat; then \ + $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ + echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \ + else \ + $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \ + fi; \ + if test -r $$cat.m; then \ + $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ + else \ + if test -r $(srcdir)/$$cat.m ; then \ + $(INSTALL_DATA) $(srcdir)/$$cat.m \ + $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ + else \ + true; \ + fi; \ + fi; \ + done + if test "$(PACKAGE)" = "gettext"; then \ + if test -r $(MKINSTALLDIRS); then \ + $(MKINSTALLDIRS) $(gettextsrcdir); \ + else \ + $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ + fi; \ + $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ + $(gettextsrcdir)/Makefile.in.in; \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ + rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ + rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ + rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ + done + rm -f $(gettextsrcdir)/po-Makefile.in.in + +check: all + +cat-id-tbl.o: ../intl/libgettext.h + +dvi info tags TAGS ID: + +mostlyclean: + rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f $(GMOFILES) + +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: update-po $(DISTFILES) + dists="$(DISTFILES)"; \ + for file in $$dists; do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +update-po: Makefile + $(MAKE) $(PACKAGE).pot + PATH=`pwd`/../src:$$PATH; \ + cd $(srcdir); \ + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + mv $$lang.po $$lang.old.po; \ + echo "$$lang:"; \ + if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \ + rm -f $$lang.old.po; \ + else \ + echo "msgmerge for $$cat failed!"; \ + rm -f $$lang.po; \ + mv $$lang.old.po $$lang.po; \ + fi; \ + done + +POTFILES: POTFILES.in + ( if test 'x$(srcdir)' != 'x.'; then \ + posrcprefix='$(top_srcdir)/'; \ + else \ + posrcprefix="../"; \ + fi; \ + rm -f $@-t $@ \ + && (sed -e '/^#/d' -e '/^[ ]*$$/d' \ + -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \ + | sed -e '$$s/\\$$//') > $@-t \ + && chmod a-w $@-t \ + && mv $@-t $@ ) + +POTFILES.in: @MAINT@ ../Makefile + cd .. && $(MAKE) po/POTFILES.in + +Makefile: Make-in ../config.status POTFILES + cd .. \ + && CONFIG_FILES=$(subdir)/Makefile.in:$(subdir)/Make-in \ + CONFIG_HEADERS= $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/binutils/po/POTFILES.in b/binutils/po/POTFILES.in new file mode 100644 index 0000000000..04fddb2146 --- /dev/null +++ b/binutils/po/POTFILES.in @@ -0,0 +1,47 @@ +addr2line.c +ar.c +arsup.c +arsup.h +bucomm.c +bucomm.h +budbg.h +coffdump.c +coffgrok.c +coffgrok.h +debug.c +debug.c +debug.h +dlltool.c +dlltool.h +filemode.c +ieee.c +ieee.c +is-ranlib.c +is-strip.c +maybe-ranlib.c +maybe-strip.c +nlmconv.c +nlmconv.h +nm.c +not-ranlib.c +not-strip.c +objcopy.c +objdump.c +prdbg.c +rdcoff.c +rdcoff.c +rddbg.c +rddbg.c +resbin.c +rescoff.c +resrc.c +size.c +srconv.c +stabs.c +stabs.c +strings.c +sysdump.c +version.c +windres.c +windres.h +wrstabs.c diff --git a/binutils/size.c b/binutils/size.c index 175e3ff405..4ed3555587 100644 --- a/binutils/size.c +++ b/binutils/size.c @@ -1,5 +1,5 @@ /* size.c -- report size of various sections of an executable file. - Copyright 1991, 92, 93, 94 Free Software Foundation, Inc. + Copyright 1991, 92, 93, 94, 95, 96, 97, 1998 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. */ /* Extensions/incompatibilities: o - BSD output has filenames at the end. @@ -29,9 +29,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ */ #include "bfd.h" -#include "sysdep.h" #include "getopt.h" #include "bucomm.h" +#include "libiberty.h" #ifndef BSD_DEFAULT #define BSD_DEFAULT 1 @@ -50,31 +50,42 @@ int show_help = 0; /* Program exit status. */ int return_code = 0; -/* IMPORTS */ -extern char *program_version; -extern char *target; +static char *target = NULL; -/* Forward declarations */ +/* Static declarations */ +static void usage PARAMS ((FILE *, int)); static void display_file PARAMS ((char *filename)); - +static void display_bfd PARAMS ((bfd *)); +static void display_archive PARAMS ((bfd *)); +static int size_number PARAMS ((bfd_size_type)); +#if 0 +static void lprint_number PARAMS ((int, bfd_size_type)); +#endif +static void rprint_number PARAMS ((int, bfd_size_type)); +static void print_berkeley_format PARAMS ((bfd *)); +static void sysv_internal_sizer PARAMS ((bfd *, asection *, PTR)); +static void sysv_internal_printer PARAMS ((bfd *, asection *, PTR)); +static void print_sysv_format PARAMS ((bfd *)); static void print_sizes PARAMS ((bfd * file)); - static void berkeley_sum PARAMS ((bfd *, sec_ptr, PTR)); -void +static void usage (stream, status) FILE *stream; int status; { - fprintf (stream, "\ + fprintf (stream, _("\ Usage: %s [-ABdoxV] [--format=berkeley|sysv] [--radix=8|10|16]\n\ - [--target=bfdname] [--version] [--help] [file...]\n", program_name); + [--target=bfdname] [--version] [--help] [file...]\n"), program_name); #if BSD_DEFAULT - fputs ("default is --format=berkeley\n", stream); + fputs (_("default is --format=berkeley\n"), stream); #else - fputs ("default is --format=sysv\n", stream); + fputs (_("default is --format=sysv\n"), stream); #endif + list_supported_targets (program_name, stream); + if (status == 0) + fprintf (stream, _("Report bugs to bug-gnu-utils@gnu.org\n")); exit (status); } @@ -97,8 +108,10 @@ main (argc, argv) int c; program_name = *argv; + xmalloc_set_program_name (program_name); bfd_init (); + set_default_bfd_target (); while ((c = getopt_long (argc, argv, "ABVdox", long_options, (int *) 0)) != EOF) @@ -116,7 +129,7 @@ main (argc, argv) berkeley_format = 0; break; default: - fprintf (stderr, "invalid argument to --format: %s\n", optarg); + fprintf (stderr, _("invalid argument to --format: %s\n"), optarg); usage (stderr, 1); } break; @@ -143,7 +156,7 @@ main (argc, argv) radix = hex; break; default: - printf ("Invalid radix: %s\n", optarg); + printf (_("Invalid radix: %s\n"), optarg); usage (stderr, 1); } break; @@ -173,10 +186,7 @@ main (argc, argv) } if (show_version) - { - printf ("GNU %s version %s\n", program_name, program_version); - exit (0); - } + print_version ("size"); if (show_help) usage (stdout, 0); @@ -191,7 +201,7 @@ main (argc, argv) /* Display stats on file or archive member ABFD. */ -void +static void display_bfd (abfd) bfd *abfd; { @@ -208,7 +218,7 @@ display_bfd (abfd) return; } - if (bfd_error == file_ambiguously_recognized) + if (bfd_get_error () == bfd_error_file_ambiguously_recognized) { bfd_nonfatal (bfd_get_filename (abfd)); list_matching_formats (matching); @@ -234,7 +244,7 @@ display_bfd (abfd) bfd_nonfatal (bfd_get_filename (abfd)); - if (bfd_error == file_ambiguously_recognized) + if (bfd_get_error () == bfd_error_file_ambiguously_recognized) { list_matching_formats (matching); free (matching); @@ -251,12 +261,12 @@ display_archive (file) for (;;) { - bfd_error = no_error; + bfd_set_error (bfd_error_no_error); arfile = bfd_openr_next_archived_file (file, arfile); if (arfile == NULL) { - if (bfd_error != no_more_archived_files) + if (bfd_get_error () != bfd_error_no_more_archived_files) { bfd_nonfatal (bfd_get_filename (file)); return_code = 2; @@ -296,24 +306,51 @@ display_file (filename) /* This is what lexical functions are for. */ -void +static int +size_number (num) + bfd_size_type num; +{ + char buffer[40]; + sprintf (buffer, + (radix == decimal ? "%lu" : + ((radix == octal) ? "0%lo" : "0x%lx")), + (unsigned long) num); + + return strlen (buffer); +} + +#if 0 + +/* This is not used. */ + +static void lprint_number (width, num) int width; bfd_size_type num; { - printf ((radix == decimal ? "%-*lu\t" : - ((radix == octal) ? "%-*lo\t" : "%-*lx\t")), - width, (unsigned long) num); + char buffer[40]; + sprintf (buffer, + (radix == decimal ? "%lu" : + ((radix == octal) ? "0%lo" : "0x%lx")), + (unsigned long) num); + + printf ("%-*s", width, buffer); } -void +#endif + +static void rprint_number (width, num) int width; bfd_size_type num; { - printf ((radix == decimal ? "%*lu\t" : - ((radix == octal) ? "%*lo\t" : "%*lx\t")), - width, (unsigned long) num); + char buffer[40]; + sprintf (buffer, + (radix == decimal ? "%lu" : + ((radix == octal) ? "0%lo" : "0x%lx")), + (unsigned long) num); + + printf ("%*s", width, buffer); } static bfd_size_type bsssize; @@ -326,18 +363,23 @@ berkeley_sum (abfd, sec, ignore) sec_ptr sec; PTR ignore; { + flagword flags; bfd_size_type size; + flags = bfd_get_section_flags (abfd, sec); + if ((flags & SEC_ALLOC) == 0) + return; + size = bfd_get_section_size_before_reloc (sec); - if (bfd_get_section_flags (abfd, sec) & SEC_CODE) + if ((flags & SEC_CODE) != 0 || (flags & SEC_READONLY) != 0) textsize += size; - else if (bfd_get_section_flags (abfd, sec) & SEC_DATA) + else if ((flags & SEC_HAS_CONTENTS) != 0) datasize += size; - else if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC) + else bsssize += size; } -void +static void print_berkeley_format (abfd) bfd *abfd; { @@ -353,19 +395,21 @@ print_berkeley_format (abfd) if (files_seen++ == 0) #if 0 /* Intel doesn't like bss/stk because they don't have core files. */ - puts ((radix == octal) ? "text\tdata\tbss/stk\toct\thex\tfilename" : - "text\tdata\tbss/stk\tdec\thex\tfilename"); + puts ((radix == octal) ? " text\t data\tbss/stk\t oct\t hex\tfilename" : + " text\t data\tbss/stk\t dec\t hex\tfilename"); #else - puts ((radix == octal) ? "text\tdata\tbss\toct\thex\tfilename" : - "text\tdata\tbss\tdec\thex\tfilename"); + puts ((radix == octal) ? " text\t data\t bss\t oct\t hex\tfilename" : + " text\t data\t bss\t dec\t hex\tfilename"); #endif total = textsize + datasize + bsssize; - lprint_number (7, textsize); - lprint_number (7, datasize); - lprint_number (7, bsssize); - printf (((radix == octal) ? "%-7lo\t%-7lx\t" : "%-7lu\t%-7lx\t"), + rprint_number (7, textsize); + putchar ('\t'); + rprint_number (7, datasize); + putchar ('\t'); + rprint_number (7, bsssize); + printf (((radix == octal) ? "\t%7lo\t%7lx\t" : "\t%7lu\t%7lx\t"), (unsigned long) total, (unsigned long) total); fputs (bfd_get_filename (abfd), stdout); @@ -375,43 +419,81 @@ print_berkeley_format (abfd) /* I REALLY miss lexical functions! */ bfd_size_type svi_total = 0; +bfd_vma svi_maxvma = 0; +int svi_namelen = 0; +int svi_vmalen = 0; +int svi_sizelen = 0; -void +static void +sysv_internal_sizer (file, sec, ignore) + bfd *file; + sec_ptr sec; + PTR ignore; +{ + bfd_size_type size = bfd_section_size (file, sec); + if (!bfd_is_abs_section (sec) + && !bfd_is_com_section (sec) + && !bfd_is_und_section (sec)) + { + int namelen = strlen (bfd_section_name (file, sec)); + if (namelen > svi_namelen) + svi_namelen = namelen; + + svi_total += size; + if (bfd_section_vma (file, sec) > svi_maxvma) + svi_maxvma = bfd_section_vma (file, sec); + } +} + +static void sysv_internal_printer (file, sec, ignore) bfd *file; sec_ptr sec; PTR ignore; { bfd_size_type size = bfd_section_size (file, sec); - if (sec != &bfd_abs_section + if (!bfd_is_abs_section (sec) && !bfd_is_com_section (sec) - && sec != &bfd_und_section) + && !bfd_is_und_section (sec)) { svi_total += size; - printf ("%-12s", bfd_section_name (file, sec)); - rprint_number (8, size); - printf (" "); - rprint_number (8, bfd_section_vma (file, sec)); + printf ("%-*s ", svi_namelen, bfd_section_name (file, sec)); + rprint_number (svi_sizelen, size); + printf (" "); + rprint_number (svi_vmalen, bfd_section_vma (file, sec)); printf ("\n"); } } -void +static void print_sysv_format (file) bfd *file; { + /* size all of the columns */ svi_total = 0; + svi_maxvma = 0; + svi_namelen = 0; + bfd_map_over_sections (file, sysv_internal_sizer, (PTR) NULL); + svi_vmalen = size_number ((bfd_size_type)svi_maxvma); + if ((size_t) svi_vmalen < sizeof ("addr") - 1) + svi_vmalen = sizeof ("addr")-1; + svi_sizelen = size_number (svi_total); + if ((size_t) svi_sizelen < sizeof ("size") - 1) + svi_sizelen = sizeof ("size")-1; + + svi_total = 0; printf ("%s ", bfd_get_filename (file)); if (bfd_my_archive (file)) printf (" (ex %s)", bfd_get_filename (bfd_my_archive (file))); - puts (":\nsection\t\tsize\t addr"); + printf (":\n%-*s %*s %*s\n", svi_namelen, "section", + svi_sizelen, "size", svi_vmalen, "addr"); bfd_map_over_sections (file, sysv_internal_printer, (PTR) NULL); - printf ("Total "); - rprint_number (8, svi_total); + printf ("%-*s ", svi_namelen, "Total"); + rprint_number (svi_sizelen, svi_total); printf ("\n\n"); } diff --git a/binutils/srconv.c b/binutils/srconv.c index fca3dfdefd..098a6d415a 100644 --- a/binutils/srconv.c +++ b/binutils/srconv.c @@ -1,5 +1,5 @@ /* srconv.c -- Sysroff conversion program - Copyright (C) 1994 Free Software Foundation, Inc. + Copyright (C) 1994, 95, 96, 1998 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -15,7 +15,8 @@ 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ /* Written by Steve Chamberlain (sac@cygnus.com) @@ -37,8 +38,10 @@ #define PROGRAM_VERSION "1.5" /*#define FOOP1 1 */ -static int sh; -static int h8300; +static int addrsize; +static char *toolname; +static char **rnames; + static void wr_cs (); static void walk_tree_scope (); static void wr_globals (); @@ -171,12 +174,7 @@ writeINT (n, ptr, idx, size, file) int byte = *idx / 8; if (size == -2) - { - if (sh) - size = 4; - else if (h8300) - size = 2; - } + size = addrsize; else if (size == -1) size = 0; @@ -319,14 +317,14 @@ wr_un (ptr, sfile, first, nsecs) un.spare1 = 0; - if (abfd->flags & EXEC_P) + if (bfd_get_file_flags (abfd) & EXEC_P) un.format = FORMAT_LM; else un.format = FORMAT_OM; un.spare1 = 0; -#if 0 +#if 1 un.nsections = ptr->nsections - 1; /* Don't count the abs section */ #else /*NEW - only count sections with size */ @@ -349,10 +347,7 @@ wr_un (ptr, sfile, first, nsecs) un.nextrefs++; } } - if (sh) - un.tool = "C_SH"; - else if (h8300) - un.tool = "C_H8/300H"; + un.tool = toolname; un.tcd = DATE; un.linker = "L_GX00"; un.lcd = DATE; @@ -368,7 +363,7 @@ wr_hd (p) struct IT_hd hd; hd.spare1 = 0; - if (abfd->flags & EXEC_P) + if (bfd_get_file_flags (abfd) & EXEC_P) { hd.mt = MTYPE_ABS_LM; } @@ -381,17 +376,38 @@ wr_hd (p) hd.nu = p->nsources; /* Always one unit */ hd.code = 0; /* Always ASCII */ hd.ver = "0200"; /* Version 2.00 */ - switch (abfd->arch_info->arch) + switch (bfd_get_arch (abfd)) { case bfd_arch_h8300: hd.au = 8; hd.si = 0; - hd.afl = 2; hd.spcsz = 32; hd.segsz = 0; hd.segsh = 0; - hd.cpu = "H8300H"; - h8300 = 1; + switch (bfd_get_mach (abfd)) + { + case bfd_mach_h8300: + hd.cpu = "H8300"; + hd.afl = 2; + addrsize = 2; + toolname = "C_H8/300"; + break; + case bfd_mach_h8300h: + hd.cpu = "H8300H"; + hd.afl = 4; + addrsize = 4; + toolname = "C_H8/300H"; + break; + case bfd_mach_h8300s: + hd.cpu = "H8300S"; + hd.afl = 4; + addrsize = 4; + toolname = "C_H8/300S"; + break; + default: + abort(); + } + rnames = rname_h8300; break; case bfd_arch_sh: hd.au = 8; @@ -401,13 +417,15 @@ wr_hd (p) hd.segsz = 0; hd.segsh = 0; hd.cpu = "SH"; - sh = 1; + addrsize = 4; + toolname = "C_SH"; + rnames = rname_sh; break; default: abort (); } - if (!abfd->flags & EXEC_P) + if (! bfd_get_file_flags(abfd) & EXEC_P) { hd.ep = 0; } @@ -422,8 +440,7 @@ wr_hd (p) hd.os = ""; hd.sys = ""; - hd.mn = strip_suffix (abfd->filename); - + hd.mn = strip_suffix (bfd_get_filename (abfd)); sysroff_swap_hd_out (file, &hd); } @@ -449,7 +466,7 @@ wr_ob (p, section) struct coff_ofile *p; struct coff_section *section; { - int i; + bfd_size_type i; int first = 1; unsigned char stuff[200]; @@ -465,7 +482,7 @@ wr_ob (p, section) if (first) { ob.saf = 1; - if (abfd->flags & EXEC_P) + if (bfd_get_file_flags (abfd) & EXEC_P) ob.address = section->address; else ob.address = 0; @@ -485,12 +502,12 @@ wr_ob (p, section) i += todo; } /* Now fill the rest with blanks */ - while (i < section->size) + while (i < (bfd_size_type) section->size) { struct IT_ob ob; int todo = 200; /* Copy in 200 byte lumps */ ob.spare = 0; - if (i + todo > section->size) + if (i + todo > (bfd_size_type) section->size) todo = section->size - i; ob.saf = 0; @@ -959,7 +976,7 @@ walk_tree_symbol (sfile, section, symbol, nest) { struct IT_dsy dsy; - dsy.spare2 = 0; + memset(&dsy, 0, sizeof(dsy)); dsy.nesting = nest; switch (symbol->type->type) @@ -1116,12 +1133,7 @@ walk_tree_symbol (sfile, section, symbol, nest) } if (symbol->where->where == coff_where_register) - { - if (sh) - dsy.reg = rname_sh[symbol->where->offset]; - else if (h8300) - dsy.reg = rname_h8300[symbol->where->offset]; - } + dsy.reg = rnames[symbol->where->offset]; switch (symbol->visible->type) { @@ -1230,9 +1242,10 @@ wr_du (p, sfile, n) int j; unsigned int *lowest = (unsigned *) nints (p->nsections); unsigned int *highest = (unsigned *) nints (p->nsections); - du.spare = 0; - du.format = abfd->flags & EXEC_P ? 0 : 1; + du.format = bfd_get_file_flags (abfd) & EXEC_P ? 0 : 1; du.optimized = 0; + du.stackfrmt = 0; + du.spare = 0; du.unit = n; du.sections = p->nsections - 1; du.san = (int *) xcalloc (sizeof (int), du.sections); @@ -1275,7 +1288,7 @@ wr_du (p, sfile, n) } du.san[used] = i; du.length[used] = highest[i] - lowest[i]; - du.address[used] = abfd->flags & EXEC_P ? lowest[i] : 0; + du.address[used] = bfd_get_file_flags (abfd) & EXEC_P ? lowest[i] : 0; if (debug) { printf (" section %6s 0x%08x..0x%08x\n", @@ -1664,14 +1677,14 @@ int scount = 0; { /* Don't have a symbol set aside for this section, which means that nothing in this file does anything for the section. */ - sc.format = !(abfd->flags & EXEC_P); + sc.format = !(bfd_get_file_flags (abfd) & EXEC_P); sc.addr = 0; sc.length = 0; name = info[i].sec->name; } else { - if (abfd->flags & EXEC_P) + if (bfd_get_file_flags (abfd) & EXEC_P) { sc.format = 0; sc.addr = symbol->where->offset; @@ -1713,11 +1726,15 @@ int scount = 0; { sc.contents = CONTENTS_CODE; } +#if 0 /* NEW */ if (sc.length) { +#endif sysroff_swap_sc_out (file, &sc); scount++; +#if 0 } +#endif } return scount; } @@ -1869,14 +1886,14 @@ show_usage (file, status) FILE *file; int status; { - fprintf (file, "Usage: %s [-dhVq] in-file [out-file]\n", program_name); + fprintf (file, _("Usage: %s [-dhVq] in-file [out-file]\n"), program_name); exit (status); } static void show_help () { - printf ("%s: Convert a COFF object file into a SYSROFF object file\n", + printf (_("%s: Convert a COFF object file into a SYSROFF object file\n"), program_name); show_usage (stdout, 0); } @@ -1924,7 +1941,7 @@ main (ac, av) show_help (); /*NOTREACHED */ case 'V': - printf ("GNU %s version %s\n", program_name, PROGRAM_VERSION); + printf (_("GNU %s version %s\n"), program_name, PROGRAM_VERSION); exit (0); /*NOTREACHED */ case 0: @@ -1950,7 +1967,7 @@ main (ac, av) if (strcmp (input_file, output_file) == 0) { fprintf (stderr, - "%s: input and output files must be different\n", + _("%s: input and output files must be different\n"), program_name); exit (1); } @@ -1961,7 +1978,7 @@ main (ac, av) if (!input_file) { - fprintf (stderr, "%s: no input file specified\n", + fprintf (stderr, _("%s: no input file specified\n"), program_name); exit (1); } @@ -2008,7 +2025,7 @@ main (ac, av) if (!file) { - fprintf (stderr, "%s: unable to open output file %s\n", + fprintf (stderr, _("%s: unable to open output file %s\n"), program_name, output_file); exit (1); } diff --git a/binutils/strings.c b/binutils/strings.c index 02ef67ba37..5cf573a123 100644 --- a/binutils/strings.c +++ b/binutils/strings.c @@ -1,5 +1,5 @@ /* strings -- print the strings of printable characters in files - Copyright (C) 1993, 94 Free Software Foundation, Inc. + Copyright (C) 1993, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -13,7 +13,8 @@ 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. */ /* Usage: strings [options] file... @@ -49,12 +50,13 @@ Written by Richard Stallman and David MacKenzie . */ +#include "bfd.h" #include #include #include #include -#include "bfd.h" #include "bucomm.h" +#include "libiberty.h" #ifdef isascii #define isgraphic(c) (isascii (c) && isprint (c)) @@ -67,7 +69,7 @@ extern int errno; #endif /* The BFD section flags that identify an initialized data section. */ -#define DATA_FLAGS (SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_HAS_CONTENTS) +#define DATA_FLAGS (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS) /* Radix for printing addresses (must be 8, 10 or 16). */ static int address_radix; @@ -90,8 +92,6 @@ static boolean got_a_section; /* The BFD object file format. */ static char *target; -extern char *program_version; - static struct option long_options[] = { {"all", no_argument, NULL, 'a'}, @@ -104,14 +104,16 @@ static struct option long_options[] = {NULL, 0, NULL, 0} }; +static void strings_a_section PARAMS ((bfd *, asection *, PTR)); +static boolean strings_object_file PARAMS ((const char *)); static boolean strings_file PARAMS ((char *file)); static int integer_arg PARAMS ((char *s)); -static void print_strings PARAMS ((char *filename, FILE *stream, +static void print_strings PARAMS ((const char *filename, FILE *stream, file_ptr address, int stop_point, int magiccount, char *magic)); static void usage PARAMS ((FILE *stream, int status)); -void +int main (argc, argv) int argc; char **argv; @@ -121,6 +123,7 @@ main (argc, argv) boolean files_given = false; program_name = argv[0]; + xmalloc_set_program_name (program_name); string_min = -1; print_addresses = false; print_filenames = false; @@ -147,7 +150,7 @@ main (argc, argv) string_min = integer_arg (optarg); if (string_min < 1) { - fprintf (stderr, "%s: invalid number %s\n", + fprintf (stderr, _("%s: invalid number %s\n"), program_name, optarg); exit (1); } @@ -186,8 +189,8 @@ main (argc, argv) break; case 'v': - printf ("GNU %s version %s\n", program_name, program_version); - exit (0); + print_version ("strings"); + break; case '?': usage (stderr, 1); @@ -205,22 +208,32 @@ main (argc, argv) string_min = 4; bfd_init (); + set_default_bfd_target (); - for (; optind < argc; ++optind) + if (optind >= argc) { - if (!strcmp (argv[optind], "-")) - datasection_only = false; - else + datasection_only = false; + print_strings ("{standard input}", stdin, 0, 0, 0, (char *) NULL); + files_given = true; + } + else + { + for (; optind < argc; ++optind) { - files_given = true; - exit_status |= (strings_file (argv[optind]) == false); + if (strcmp (argv[optind], "-") == 0) + datasection_only = false; + else + { + files_given = true; + exit_status |= (strings_file (argv[optind]) == false); + } } } if (files_given == false) usage (stderr, 1); - exit (exit_status); + return (exit_status); } /* Scan section SECT of the file ABFD, whose printable name is FILE. @@ -228,11 +241,13 @@ main (argc, argv) set `got_a_section' and print the strings in it. */ static void -strings_a_section (abfd, sect, file) +strings_a_section (abfd, sect, filearg) bfd *abfd; asection *sect; - PTR file; + PTR filearg; { + const char *file = (const char *) filearg; + if ((sect->flags & DATA_FLAGS) == DATA_FLAGS) { bfd_size_type sz = bfd_get_section_size_before_reloc (sect); @@ -254,7 +269,7 @@ strings_a_section (abfd, sect, file) static boolean strings_object_file (file) - char *file; + const char *file; { bfd *abfd = bfd_openr (file, target); @@ -274,7 +289,7 @@ strings_object_file (file) } got_a_section = false; - bfd_map_over_sections (abfd, strings_a_section, file); + bfd_map_over_sections (abfd, strings_a_section, (PTR) file); if (!bfd_close (abfd)) { @@ -299,7 +314,10 @@ strings_file (file) { FILE *stream; - stream = fopen (file, "r"); + stream = fopen (file, "rb"); + /* Not all systems permit "rb", so try "r" if it failed. */ + if (stream == NULL) + stream = fopen (file, "r"); if (stream == NULL) { fprintf (stderr, "%s: ", program_name); @@ -334,18 +352,18 @@ strings_file (file) static void print_strings (filename, stream, address, stop_point, magiccount, magic) - char *filename; + const char *filename; FILE *stream; file_ptr address; int stop_point; int magiccount; char *magic; { - int bufsize = 100; - char *buf = (char *) xmalloc (bufsize); + char *buf = (char *) xmalloc (string_min + 1); while (1) { + file_ptr start; int i; int c; @@ -353,6 +371,7 @@ print_strings (filename, stream, address, stop_point, magiccount, magic) tryline: if (stop_point && address >= stop_point) break; + start = address; for (i = 0; i < string_min; i++) { if (magiccount) @@ -365,7 +384,7 @@ print_strings (filename, stream, address, stop_point, magiccount, magic) if (stream == NULL) return; c = getc (stream); - if (c < 0) + if (c == EOF) return; } address++; @@ -375,78 +394,51 @@ print_strings (filename, stream, address, stop_point, magiccount, magic) buf[i] = c; } - /* We found a run of `string_min' graphic characters. - Now see if it is terminated with a NUL byte or a newline. */ - while (1) - { - if (i == bufsize) - { - bufsize *= 2; - buf = (char *) xrealloc (buf, bufsize); - } - if (magiccount) - { - magiccount--; - c = *magic++; - } - else - { - if (stream == NULL) - return; - c = getc (stream); - if (c < 0) - return; - } - address++; - if (c == '\0' || c == '\n') - break; /* It is; print this string. */ - if (!isgraphic (c)) - goto tryline; /* It isn't; give up on this string. */ - buf[i++] = c; /* The string continues; store it all. */ - } + /* We found a run of `string_min' graphic characters. Print up + to the next non-graphic character. */ - /* If we get here, the string is all graphics and properly terminated, - so print it. It is all in `buf' and `i' is its length. */ - buf[i] = '\0'; if (print_filenames) printf ("%s: ", filename); if (print_addresses) switch (address_radix) { case 8: - printf ("%7lo ", (unsigned long) (address - i - 1)); + printf ("%7lo ", (unsigned long) start); break; case 10: - printf ("%7ld ", (long) (address - i - 1)); + printf ("%7ld ", (long) start); break; case 16: - printf ("%7lx ", (unsigned long) (address - i - 1)); + printf ("%7lx ", (unsigned long) start); break; } - for (i = 0; (c = buf[i]) != '\0'; i++) - switch (c) - { - case '\n': - printf ("\\n"); - break; - case '\t': - printf ("\\t"); - break; - case '\f': - printf ("\\f"); - break; - case '\b': - printf ("\\b"); - break; - case '\r': - printf ("\\r"); + buf[i] = '\0'; + fputs (buf, stdout); + + while (1) + { + if (magiccount) + { + magiccount--; + c = *magic++; + } + else + { + if (stream == NULL) + break; + c = getc (stream); + if (c == EOF) + break; + } + address++; + if (! isgraphic (c)) break; - default: - putchar (c); - } + putchar (c); + } + putchar ('\n'); } } @@ -493,7 +485,7 @@ integer_arg (s) if (*p) { - fprintf (stderr, "%s: invalid integer argument %s\n", program_name, s); + fprintf (stderr, _("%s: invalid integer argument %s\n"), program_name, s); exit (1); } return value; @@ -504,10 +496,13 @@ usage (stream, status) FILE *stream; int status; { - fprintf (stream, "\ + fprintf (stream, _("\ Usage: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-]\n\ [--all] [--print-file-name] [--bytes=min-len] [--radix={o,x,d}]\n\ - [--target=bfdname] [--help] [--version] file...\n", + [--target=bfdname] [--help] [--version] file...\n"), program_name); + list_supported_targets (program_name, stream); + if (status == 0) + fprintf (stream, _("Report bugs to bug-gnu-utils@gnu.org\n")); exit (status); } diff --git a/binutils/sysdump.c b/binutils/sysdump.c index 891ce1396c..ed365b4221 100644 --- a/binutils/sysdump.c +++ b/binutils/sysdump.c @@ -1,21 +1,22 @@ /* Sysroff object format dumper. - Copyright (C) 1994 Free Software Foundation, Inc. + Copyright (C) 1994, 95, 1998 Free Software Foundation, Inc. -This file is part of GNU Binutils. + This file is part of GNU Binutils. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + 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., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ /* Written by Steve Chamberlain . @@ -23,19 +24,21 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ This program reads a SYSROFF object file and prints it in an almost human readable form to stdout. */ +#include "bfd.h" +#include "bucomm.h" + #include #include #include #include #include "sysroff.h" -#include -#include "sysdep.h" + #define PROGRAM_VERSION "1.0" -static int h8300; -static int sh; + static int dump = 1; static int segmented_p; static int code; +static int addrsize = 4; static FILE *file; static char * @@ -43,7 +46,7 @@ xcalloc (a, b) int a; int b; { - char *r = xmalloc (a, b); + char *r = xmalloc (a * b); memset (r, 0, a * b); return r; } @@ -130,7 +133,8 @@ fillup (ptr) } if (dump) dh (ptr, size); - return size; + + return size - 1; } barray @@ -168,7 +172,7 @@ getINT (ptr, idx, size, max) return 0; } if (size == -2) - size = 4; + size = addrsize; if (size == -1) size = 0; switch (size) @@ -192,14 +196,17 @@ getINT (ptr, idx, size, max) } int -getBITS (ptr, idx, size) +getBITS (ptr, idx, size, max) char *ptr; int *idx; - int size; + int size, max; { int byte = *idx / 8; int bit = *idx % 8; + if (byte >= max) + return 0; + *idx += size; return (ptr[byte] >> (8 - bit - size)) & ((1 << size) - 1); @@ -305,6 +312,7 @@ getone (type) { struct IT_hd dummy; sysroff_swap_hd_in (&dummy); + addrsize = dummy.afl; sysroff_print_hd_out (&dummy); } break; @@ -484,6 +492,10 @@ opt (x) return getone (x); } +#if 0 + +/* This is no longer used. */ + static void unit_info_list () { @@ -502,6 +514,12 @@ unit_info_list () } } +#endif + +#if 0 + +/* This is no longer used. */ + static void object_body_list () { @@ -514,6 +532,8 @@ object_body_list () } } +#endif + static void must (x) int x; @@ -541,7 +561,7 @@ tab (i, s) static void derived_type (); static void -symbol_info () +dump_symbol_info () { tab (1, "SYMBOL INFO"); while (opt (IT_dsy_CODE)) @@ -564,27 +584,27 @@ derived_type () { if (opt (IT_dpp_CODE)) { - symbol_info (); + dump_symbol_info (); must (IT_dpp_CODE); } else if (opt (IT_dfp_CODE)) { - symbol_info (); + dump_symbol_info (); must (IT_dfp_CODE); } else if (opt (IT_den_CODE)) { - symbol_info (); + dump_symbol_info (); must (IT_den_CODE); } else if (opt (IT_den_CODE)) { - symbol_info (); + dump_symbol_info (); must (IT_den_CODE); } else if (opt (IT_dds_CODE)) { - symbol_info (); + dump_symbol_info (); must (IT_dds_CODE); } else if (opt (IT_dar_CODE)) @@ -609,6 +629,10 @@ derived_type () tab (-1, ""); } +#if 0 + +/* This is no longer used. */ + static void program_structure () { @@ -617,12 +641,18 @@ program_structure () { must (IT_dso_CODE); opt (IT_dss_CODE); - symbol_info (); + dump_symbol_info (); must (IT_dps_CODE); } tab (-1, ""); } +#endif + +#if 0 + +/* This is no longer used. */ + static void debug_list () { @@ -636,6 +666,8 @@ debug_list () tab (-1, ""); } +#endif + static void module () { @@ -687,14 +719,14 @@ show_usage (file, status) FILE *file; int status; { - fprintf (file, "Usage: %s [-hV] in-file\n", program_name); + fprintf (file, _("Usage: %s [-hV] in-file\n"), program_name); exit (status); } static void show_help () { - printf ("%s: Print a human readable interpretation of a SYSROFF object file\n", + printf (_("%s: Print a human readable interpretation of a SYSROFF object file\n"), program_name); show_usage (stdout, 0); } @@ -724,7 +756,7 @@ main (ac, av) show_help (); /*NOTREACHED*/ case 'V': - printf ("GNU %s version %s\n", program_name, PROGRAM_VERSION); + printf (_("GNU %s version %s\n"), program_name, PROGRAM_VERSION); exit (0); /*NOTREACHED*/ case 0: @@ -744,7 +776,7 @@ main (ac, av) if (!input_file) { - fprintf (stderr, "%s: no input file specified\n", + fprintf (stderr, _("%s: no input file specified\n"), program_name); exit (1); } @@ -752,7 +784,7 @@ main (ac, av) file = fopen (input_file, FOPEN_RB); if (!file) { - fprintf (stderr, "%s: cannot open input file %s\n", + fprintf (stderr, _("%s: cannot open input file %s\n"), program_name, input_file); exit (1); } diff --git a/binutils/windres.c b/binutils/windres.c index 359026bf4f..b4a17df377 100644 --- a/binutils/windres.c +++ b/binutils/windres.c @@ -1,5 +1,5 @@ /* windres.c -- a program to manipulate Windows resources - Copyright 1997 Free Software Foundation, Inc. + Copyright 1997, 1998 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. This file is part of GNU Binutils. @@ -44,6 +44,7 @@ #include #include +#include /* An enumeration of format types. */ @@ -224,7 +225,7 @@ open_file_search (filename, mode, errmsg, real_filename) } } - fatal ("can't open %s `%s': %s", errmsg, filename, strerror (errno)); + fatal (_("can't open %s `%s': %s"), errmsg, filename, strerror (errno)); /* Return a value to avoid a compiler warning. */ return NULL; @@ -283,8 +284,50 @@ unicode_print (e, unicode, length) ++unicode; - if ((ch & 0x7f) == ch && isprint (ch)) - putc (ch, e); + if ((ch & 0x7f) == ch) + { + if (ch == '\\') + fputs ("\\", e); + else if (isprint (ch)) + putc (ch, e); + else + { + switch (ch) + { + case ESCAPE_A: + fputs ("\\a", e); + break; + + case ESCAPE_B: + fputs ("\\b", e); + break; + + case ESCAPE_F: + fputs ("\\f", e); + break; + + case ESCAPE_N: + fputs ("\\n", e); + break; + + case ESCAPE_R: + fputs ("\\r", e); + break; + + case ESCAPE_T: + fputs ("\\t", e); + break; + + case ESCAPE_V: + fputs ("\\v", e); + break; + + default: + fprintf (e, "\\%03o", (unsigned int) ch); + break; + } + } + } else if ((ch & 0xff) == ch) fprintf (e, "\\%03o", (unsigned int) ch); else @@ -418,10 +461,17 @@ define_resource (resources, cids, ids, dupok) if (*resources == NULL) { + static unsigned long timeval; + + /* Use the same timestamp for every resource created in a + single run. */ + if (timeval == 0) + timeval = time (NULL); + *resources = ((struct res_directory *) res_alloc (sizeof **resources)); (*resources)->characteristics = 0; - (*resources)->time = 0; + (*resources)->time = timeval; (*resources)->major = 0; (*resources)->minor = 0; (*resources)->entries = NULL; @@ -458,7 +508,7 @@ define_resource (resources, cids, ids, dupok) { fprintf (stderr, "%s: ", program_name); res_ids_print (stderr, i, ids); - fprintf (stderr, ": expected to be a directory\n"); + fprintf (stderr, _(": expected to be a directory\n")); xexit (1); } @@ -470,7 +520,7 @@ define_resource (resources, cids, ids, dupok) { fprintf (stderr, "%s: ", program_name); res_ids_print (stderr, cids, ids); - fprintf (stderr, ": expected to be a leaf\n"); + fprintf (stderr, _(": expected to be a leaf\n")); xexit (1); } @@ -479,9 +529,9 @@ define_resource (resources, cids, ids, dupok) if (dupok) return re->u.res; - fprintf (stderr, "%s: warning: ", program_name); + fprintf (stderr, _("%s: warning: "), program_name); res_ids_print (stderr, cids, ids); - fprintf (stderr, ": duplicate value\n"); + fprintf (stderr, _(": duplicate value\n")); } re->u.res = ((struct res_resource *) @@ -644,8 +694,8 @@ format_from_name (name) if (m->name == NULL) { - fprintf (stderr, "%s: unknown format type `%s'\n", program_name, name); - fprintf (stderr, "%s: supported formats:", program_name); + fprintf (stderr, _("%s: unknown format type `%s'\n"), program_name, name); + fprintf (stderr, _("%s: supported formats:"), program_name); for (m = format_names; m->name != NULL; m++) fprintf (stderr, " %s", m->name); fprintf (stderr, "\n"); @@ -732,7 +782,7 @@ format_from_filename (filename, input) return RES_FORMAT_RC; /* Otherwise, we give up. */ - fatal ("can not determine type of file `%s'; use the -I option", + fatal (_("can not determine type of file `%s'; use the -I option"), filename); /* Return something to silence the compiler warning. */ @@ -746,9 +796,9 @@ usage (stream, status) FILE *stream; int status; { - fprintf (stream, "Usage: %s [options] [input-file] [output-file]\n", + fprintf (stream, _("Usage: %s [options] [input-file] [output-file]\n"), program_name); - fprintf (stream, "\ + fprintf (stream, _("\ Options:\n\ -i FILE, --input FILE Name input file\n\ -o FILE, --output FILE Name output file\n\ @@ -760,21 +810,21 @@ Options:\n\ --preprocessor PROGRAM Program to use to preprocess rc file\n\ --include-dir DIR Include directory when preprocessing rc file\n\ --define SYM[=VAL] Define SYM when preprocessing rc file\n\ - --language VAL Set language when reading rc file\n"); + --language VAL Set language when reading rc file\n")); #ifdef YYDEBUG - fprintf (stream, "\ - --yydebug Turn on parser debugging\n"); + fprintf (stream, _("\ + --yydebug Turn on parser debugging\n")); #endif - fprintf (stream, "\ + fprintf (stream, _("\ --help Print this help message\n\ - --version Print version information\n"); - fprintf (stream, "\ + --version Print version information\n")); + fprintf (stream, _("\ FORMAT is one of rc, res, or coff, and is deduced from the file name\n\ extension if not specified. A single file name is an input file.\n\ -No input-file is stdin, default rc. No output-file is stdout, default rc.\n"); +No input-file is stdin, default rc. No output-file is stdout, default rc.\n")); list_supported_targets (program_name, stream); if (status == 0) - fprintf (stream, "Report bugs to bug-gnu-utils@prep.ai.mit.edu\n"); + fprintf (stream, _("Report bugs to bug-gnu-utils@gnu.org\n")); exit (status); } @@ -963,7 +1013,7 @@ main (argc, argv) } if (resources == NULL) - fatal ("no resources"); + fatal (_("no resources")); /* Sort the resources. This is required for COFF, convenient for rc, and unimportant for res. */ @@ -997,7 +1047,7 @@ struct res_directory * read_res_file (filename) const char *filename; { - fatal ("read_res_file unimplemented"); + fatal (_("read_res_file unimplemented")); return NULL; } @@ -1006,5 +1056,5 @@ write_res_file (filename, resources) const char *filename; const struct res_directory *resources; { - fatal ("write_res_file unimplemented"); + fatal (_("write_res_file unimplemented")); }