Based on patches from Mumit Khan <khan@xraylith.wisc.EDU>:
* configure.in: Define EXECUTABLE_SUFFIX. * dlltool.c: Include "dyn-string.h". Include <stdarg.h> based on ANSI_PROTOTYPES, not __STDC__. (outfile): Remove. (gen_exp_file): Change uses of outfile to use alloca. (make_one_lib_file, make_head, make_tail): Likewise. (gen_lib_file): Likewise. (look_for_prog): New static function. (deduce_name): Rewrite to use look_for_prog. (mcore_elf_gen_out_file): Use dyn_string_t rather than outfile. * dllwrap.c: Don't include <stdio.h>, <errno.h>, <string.h>, <stdlib.h>, or <unistd.h>. Include <sys/stat.h> and either <stdarg.h> or <varargs.h>. (driver_name): Initialize to NULL, not "gcc". (dlltool_name): Initialize to NULL, not "dlltool". (display, inform, look_for_prog, deduce_name): New static functions. (usage): Mention -mno-cygwin. (OPTION_MNO_CYGWIN): Define. (main): Handle -mno-cygwin. Deduce driver_name and dlltool_name. * resrc.c (look_for_default): Make static. Remove unused local path. Check using EXECUTABLE_SUFFIX. (read_rc_file): Allocate enough space to hold EXECUTABLE_SUFFIX. * Makefile.am: Rebuild dependencies. (dllwrap_LDADD): Add $(INTLLIBS). * configure, Makefile.in, config.in: Rebuild.
This commit is contained in:
parent
be2acf2756
commit
bb0cb4db08
@ -1,3 +1,33 @@
|
||||
1999-06-22 Ian Lance Taylor <ian@zembu.com>
|
||||
|
||||
Based on patches from Mumit Khan <khan@xraylith.wisc.EDU>:
|
||||
* configure.in: Define EXECUTABLE_SUFFIX.
|
||||
* dlltool.c: Include "dyn-string.h". Include <stdarg.h> based on
|
||||
ANSI_PROTOTYPES, not __STDC__.
|
||||
(outfile): Remove.
|
||||
(gen_exp_file): Change uses of outfile to use alloca.
|
||||
(make_one_lib_file, make_head, make_tail): Likewise.
|
||||
(gen_lib_file): Likewise.
|
||||
(look_for_prog): New static function.
|
||||
(deduce_name): Rewrite to use look_for_prog.
|
||||
(mcore_elf_gen_out_file): Use dyn_string_t rather than outfile.
|
||||
* dllwrap.c: Don't include <stdio.h>, <errno.h>, <string.h>,
|
||||
<stdlib.h>, or <unistd.h>. Include <sys/stat.h> and either
|
||||
<stdarg.h> or <varargs.h>.
|
||||
(driver_name): Initialize to NULL, not "gcc".
|
||||
(dlltool_name): Initialize to NULL, not "dlltool".
|
||||
(display, inform, look_for_prog, deduce_name): New static
|
||||
functions.
|
||||
(usage): Mention -mno-cygwin.
|
||||
(OPTION_MNO_CYGWIN): Define.
|
||||
(main): Handle -mno-cygwin. Deduce driver_name and dlltool_name.
|
||||
* resrc.c (look_for_default): Make static. Remove unused local
|
||||
path. Check using EXECUTABLE_SUFFIX.
|
||||
(read_rc_file): Allocate enough space to hold EXECUTABLE_SUFFIX.
|
||||
* Makefile.am: Rebuild dependencies.
|
||||
(dllwrap_LDADD): Add $(INTLLIBS).
|
||||
* configure, Makefile.in, config.in: Rebuild.
|
||||
|
||||
Mon Jun 21 16:49:11 1999 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* readelf.c (dump_relocations): Use elf_hppa_reloc_type instead of
|
||||
|
||||
@ -260,7 +260,7 @@ windres_SOURCES = windres.c resrc.c rescoff.c resbin.c rcparse.y rclex.l \
|
||||
windres_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS)
|
||||
|
||||
dllwrap_SOURCES = dllwrap.c dyn-string.c
|
||||
dllwrap_LDADD = $(LIBIBERTY)
|
||||
dllwrap_LDADD = $(LIBIBERTY) $(INTLLIBS)
|
||||
|
||||
|
||||
DISTSTUFF = arparse.c arparse.h arlex.c nlmheader.c sysinfo.c sysinfo.h \
|
||||
@ -381,7 +381,8 @@ debug.o: debug.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
|
||||
debug.h
|
||||
dlltool.o: dlltool.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
|
||||
$(INCDIR)/libiberty.h bucomm.h config.h $(INCDIR)/fopen-same.h \
|
||||
$(INCDIR)/getopt.h $(INCDIR)/demangle.h dlltool.h
|
||||
$(INCDIR)/getopt.h $(INCDIR)/demangle.h dyn-string.h \
|
||||
dlltool.h
|
||||
filemode.o: filemode.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
|
||||
bucomm.h config.h $(INCDIR)/fopen-same.h
|
||||
ieee.o: ieee.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/ieee.h \
|
||||
@ -462,8 +463,8 @@ readelf.o: readelf.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
|
||||
$(INCDIR)/elf/sparc.h $(INCDIR)/elf/m32r.h $(INCDIR)/elf/d10v.h \
|
||||
$(INCDIR)/elf/d30v.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/mn10200.h \
|
||||
$(INCDIR)/elf/mn10300.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/arc.h \
|
||||
$(INCDIR)/elf/fr30.h bucomm.h config.h $(INCDIR)/fopen-same.h \
|
||||
$(INCDIR)/getopt.h
|
||||
$(INCDIR)/elf/fr30.h $(INCDIR)/elf/mcore.h $(INCDIR)/elf/i960.h \
|
||||
bucomm.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/getopt.h
|
||||
resres.o: resres.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
|
||||
bucomm.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
|
||||
windres.h winduni.h
|
||||
|
||||
@ -282,7 +282,7 @@ windres_SOURCES = windres.c resrc.c rescoff.c resbin.c rcparse.y rclex.l \
|
||||
windres_LDADD = $(BFDLIB) $(LIBIBERTY) @LEXLIB@ $(INTLLIBS)
|
||||
|
||||
dllwrap_SOURCES = dllwrap.c dyn-string.c
|
||||
dllwrap_LDADD = $(LIBIBERTY)
|
||||
dllwrap_LDADD = $(LIBIBERTY) $(INTLLIBS)
|
||||
|
||||
DISTSTUFF = arparse.c arparse.h arlex.c nlmheader.c sysinfo.c sysinfo.h \
|
||||
syslex.c deflex.c defparse.h defparse.c rclex.c rcparse.h rcparse.c
|
||||
@ -412,7 +412,7 @@ configure.in deflex.c defparse.c nlmheader.c rclex.c rcparse.c
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = tar
|
||||
TAR = gtar
|
||||
GZIP_ENV = --best
|
||||
SOURCES = $(nlmconv_SOURCES) $(srconv_SOURCES) $(sysdump_SOURCES) $(coffdump_SOURCES) $(dlltool_SOURCES) $(windres_SOURCES) $(dllwrap_SOURCES) $(size_SOURCES) $(objdump_SOURCES) $(ar_SOURCES) $(strings_SOURCES) $(ranlib_SOURCES) $(c__filt_SOURCES) $(objcopy_SOURCES) $(addr2line_SOURCES) $(readelf_SOURCES) $(nm_new_SOURCES) $(strip_new_SOURCES)
|
||||
OBJECTS = $(nlmconv_OBJECTS) $(srconv_OBJECTS) $(sysdump_OBJECTS) $(coffdump_OBJECTS) $(dlltool_OBJECTS) $(windres_OBJECTS) $(dllwrap_OBJECTS) $(size_OBJECTS) $(objdump_OBJECTS) $(ar_OBJECTS) $(strings_OBJECTS) $(ranlib_OBJECTS) $(c__filt_OBJECTS) $(objcopy_OBJECTS) $(addr2line_OBJECTS) $(readelf_OBJECTS) $(nm_new_OBJECTS) $(strip_new_OBJECTS)
|
||||
@ -1134,7 +1134,6 @@ 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.
|
||||
@ -1240,7 +1239,8 @@ debug.o: debug.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
|
||||
debug.h
|
||||
dlltool.o: dlltool.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
|
||||
$(INCDIR)/libiberty.h bucomm.h config.h $(INCDIR)/fopen-same.h \
|
||||
$(INCDIR)/getopt.h $(INCDIR)/demangle.h dlltool.h
|
||||
$(INCDIR)/getopt.h $(INCDIR)/demangle.h dyn-string.h \
|
||||
dlltool.h
|
||||
filemode.o: filemode.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
|
||||
bucomm.h config.h $(INCDIR)/fopen-same.h
|
||||
ieee.o: ieee.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/ieee.h \
|
||||
@ -1321,8 +1321,8 @@ readelf.o: readelf.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
|
||||
$(INCDIR)/elf/sparc.h $(INCDIR)/elf/m32r.h $(INCDIR)/elf/d10v.h \
|
||||
$(INCDIR)/elf/d30v.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/mn10200.h \
|
||||
$(INCDIR)/elf/mn10300.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/arc.h \
|
||||
$(INCDIR)/elf/fr30.h bucomm.h config.h $(INCDIR)/fopen-same.h \
|
||||
$(INCDIR)/getopt.h
|
||||
$(INCDIR)/elf/fr30.h $(INCDIR)/elf/mcore.h $(INCDIR)/elf/i960.h \
|
||||
bucomm.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/getopt.h
|
||||
resres.o: resres.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
|
||||
bucomm.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
|
||||
windres.h winduni.h
|
||||
|
||||
@ -151,6 +151,9 @@
|
||||
/* Define as 1 if you have gettext and don't want to use GNU gettext. */
|
||||
#undef HAVE_GETTEXT
|
||||
|
||||
/* Suffix used for executables, if any. */
|
||||
#undef EXECUTABLE_SUFFIX
|
||||
|
||||
/* Is the type time_t defined in <time.h>? */
|
||||
#undef HAVE_TIME_T_IN_TIME_H
|
||||
|
||||
|
||||
114
binutils/configure
vendored
114
binutils/configure
vendored
@ -4174,6 +4174,10 @@ test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext}
|
||||
echo "$ac_t""${ac_cv_exeext}" 1>&6
|
||||
ac_exeext=$EXEEXT
|
||||
|
||||
cat >> confdefs.h <<EOF
|
||||
#define EXECUTABLE_SUFFIX "${EXEEXT}"
|
||||
EOF
|
||||
|
||||
|
||||
# host-specific stuff:
|
||||
|
||||
@ -4187,7 +4191,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:4191: checking for $ac_word" >&5
|
||||
echo "configure:4195: 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
|
||||
@ -4226,7 +4230,7 @@ fi
|
||||
# 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:4230: checking for a BSD compatible install" >&5
|
||||
echo "configure:4234: 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
|
||||
@ -4293,7 +4297,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:4297: checking for build system executable suffix" >&5
|
||||
echo "configure:4301: 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
|
||||
@ -4318,17 +4322,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:4322: checking for $ac_hdr" >&5
|
||||
echo "configure:4326: 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
|
||||
#line 4327 "configure"
|
||||
#line 4331 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <$ac_hdr>
|
||||
EOF
|
||||
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
|
||||
{ (eval echo configure:4332: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
{ (eval echo configure:4336: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
|
||||
if test -z "$ac_err"; then
|
||||
rm -rf conftest*
|
||||
@ -4355,12 +4359,12 @@ fi
|
||||
done
|
||||
|
||||
echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
|
||||
echo "configure:4359: checking for sys/wait.h that is POSIX.1 compatible" >&5
|
||||
echo "configure:4363: 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 <<EOF
|
||||
#line 4364 "configure"
|
||||
#line 4368 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
@ -4376,7 +4380,7 @@ wait (&s);
|
||||
s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:4380: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:4384: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_header_sys_wait_h=yes
|
||||
else
|
||||
@ -4399,19 +4403,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:4403: checking for working alloca.h" >&5
|
||||
echo "configure:4407: 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 <<EOF
|
||||
#line 4408 "configure"
|
||||
#line 4412 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <alloca.h>
|
||||
int main() {
|
||||
char *p = alloca(2 * sizeof(int));
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:4415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:4419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
ac_cv_header_alloca_h=yes
|
||||
else
|
||||
@ -4432,12 +4436,12 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for alloca""... $ac_c" 1>&6
|
||||
echo "configure:4436: checking for alloca" >&5
|
||||
echo "configure:4440: 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 <<EOF
|
||||
#line 4441 "configure"
|
||||
#line 4445 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#ifdef __GNUC__
|
||||
@ -4465,7 +4469,7 @@ int main() {
|
||||
char *p = (char *) alloca(1);
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:4469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:4473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
ac_cv_func_alloca_works=yes
|
||||
else
|
||||
@ -4497,12 +4501,12 @@ EOF
|
||||
|
||||
|
||||
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
|
||||
echo "configure:4501: checking whether alloca needs Cray hooks" >&5
|
||||
echo "configure:4505: 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 <<EOF
|
||||
#line 4506 "configure"
|
||||
#line 4510 "configure"
|
||||
#include "confdefs.h"
|
||||
#if defined(CRAY) && ! defined(CRAY2)
|
||||
webecray
|
||||
@ -4527,12 +4531,12 @@ 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:4531: checking for $ac_func" >&5
|
||||
echo "configure:4535: 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 <<EOF
|
||||
#line 4536 "configure"
|
||||
#line 4540 "configure"
|
||||
#include "confdefs.h"
|
||||
/* System header to define __stub macros and hopefully few prototypes,
|
||||
which can conflict with char $ac_func(); below. */
|
||||
@ -4555,7 +4559,7 @@ $ac_func();
|
||||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:4559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:4563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_func_$ac_func=yes"
|
||||
else
|
||||
@ -4582,7 +4586,7 @@ done
|
||||
fi
|
||||
|
||||
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
|
||||
echo "configure:4586: checking stack direction for C alloca" >&5
|
||||
echo "configure:4590: 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
|
||||
@ -4590,7 +4594,7 @@ else
|
||||
ac_cv_c_stack_direction=0
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 4594 "configure"
|
||||
#line 4598 "configure"
|
||||
#include "confdefs.h"
|
||||
find_stack_direction ()
|
||||
{
|
||||
@ -4609,7 +4613,7 @@ main ()
|
||||
exit (find_stack_direction() < 0);
|
||||
}
|
||||
EOF
|
||||
if { (eval echo configure:4613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
if { (eval echo configure:4617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
then
|
||||
ac_cv_c_stack_direction=1
|
||||
else
|
||||
@ -4633,12 +4637,12 @@ fi
|
||||
for ac_func in sbrk utimes
|
||||
do
|
||||
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
|
||||
echo "configure:4637: checking for $ac_func" >&5
|
||||
echo "configure:4641: 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 <<EOF
|
||||
#line 4642 "configure"
|
||||
#line 4646 "configure"
|
||||
#include "confdefs.h"
|
||||
/* System header to define __stub macros and hopefully few prototypes,
|
||||
which can conflict with char $ac_func(); below. */
|
||||
@ -4661,7 +4665,7 @@ $ac_func();
|
||||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:4665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:4669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_func_$ac_func=yes"
|
||||
else
|
||||
@ -4689,14 +4693,14 @@ done
|
||||
# Some systems have frexp only in -lm, not in -lc.
|
||||
|
||||
echo $ac_n "checking for library containing frexp""... $ac_c" 1>&6
|
||||
echo "configure:4693: checking for library containing frexp" >&5
|
||||
echo "configure:4697: checking for library containing frexp" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_search_frexp'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
ac_func_search_save_LIBS="$LIBS"
|
||||
ac_cv_search_frexp="no"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 4700 "configure"
|
||||
#line 4704 "configure"
|
||||
#include "confdefs.h"
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
/* We use char because int might match the return type of a gcc2
|
||||
@ -4707,7 +4711,7 @@ int main() {
|
||||
frexp()
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:4711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:4715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
ac_cv_search_frexp="none required"
|
||||
else
|
||||
@ -4718,7 +4722,7 @@ rm -f conftest*
|
||||
test "$ac_cv_search_frexp" = "no" && for i in -lm; do
|
||||
LIBS="-l$i $ac_func_search_save_LIBS"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 4722 "configure"
|
||||
#line 4726 "configure"
|
||||
#include "confdefs.h"
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
/* We use char because int might match the return type of a gcc2
|
||||
@ -4729,7 +4733,7 @@ int main() {
|
||||
frexp()
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:4733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:4737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
ac_cv_search_frexp="-l$i"
|
||||
break
|
||||
@ -4751,19 +4755,19 @@ else :
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for time_t in time.h""... $ac_c" 1>&6
|
||||
echo "configure:4755: checking for time_t in time.h" >&5
|
||||
echo "configure:4759: 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 <<EOF
|
||||
#line 4760 "configure"
|
||||
#line 4764 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <time.h>
|
||||
int main() {
|
||||
time_t i;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:4767: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:4771: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
bu_cv_decl_time_t_time_h=yes
|
||||
else
|
||||
@ -4784,19 +4788,19 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for time_t in sys/types.h""... $ac_c" 1>&6
|
||||
echo "configure:4788: checking for time_t in sys/types.h" >&5
|
||||
echo "configure:4792: 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 <<EOF
|
||||
#line 4793 "configure"
|
||||
#line 4797 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
int main() {
|
||||
time_t i;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:4800: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:4804: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
bu_cv_decl_time_t_types_h=yes
|
||||
else
|
||||
@ -4819,12 +4823,12 @@ fi
|
||||
# Under Next 3.2 <utime.h> apparently does not define struct utimbuf
|
||||
# by default.
|
||||
echo $ac_n "checking for utime.h""... $ac_c" 1>&6
|
||||
echo "configure:4823: checking for utime.h" >&5
|
||||
echo "configure:4827: 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 <<EOF
|
||||
#line 4828 "configure"
|
||||
#line 4832 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#ifdef HAVE_TIME_H
|
||||
@ -4835,7 +4839,7 @@ int main() {
|
||||
struct utimbuf s;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:4839: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:4843: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
bu_cv_header_utime_h=yes
|
||||
else
|
||||
@ -4856,12 +4860,12 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking whether fprintf must be declared""... $ac_c" 1>&6
|
||||
echo "configure:4860: checking whether fprintf must be declared" >&5
|
||||
echo "configure:4864: 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 <<EOF
|
||||
#line 4865 "configure"
|
||||
#line 4869 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#include <stdio.h>
|
||||
@ -4882,7 +4886,7 @@ int main() {
|
||||
char *(*pfn) = (char *(*)) fprintf
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:4886: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:4890: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
bfd_cv_decl_needed_fprintf=no
|
||||
else
|
||||
@ -4903,12 +4907,12 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking whether strstr must be declared""... $ac_c" 1>&6
|
||||
echo "configure:4907: checking whether strstr must be declared" >&5
|
||||
echo "configure:4911: 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 <<EOF
|
||||
#line 4912 "configure"
|
||||
#line 4916 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#include <stdio.h>
|
||||
@ -4929,7 +4933,7 @@ int main() {
|
||||
char *(*pfn) = (char *(*)) strstr
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:4933: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:4937: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
bfd_cv_decl_needed_strstr=no
|
||||
else
|
||||
@ -4950,12 +4954,12 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking whether sbrk must be declared""... $ac_c" 1>&6
|
||||
echo "configure:4954: checking whether sbrk must be declared" >&5
|
||||
echo "configure:4958: 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 <<EOF
|
||||
#line 4959 "configure"
|
||||
#line 4963 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#include <stdio.h>
|
||||
@ -4976,7 +4980,7 @@ int main() {
|
||||
char *(*pfn) = (char *(*)) sbrk
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:4980: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:4984: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
bfd_cv_decl_needed_sbrk=no
|
||||
else
|
||||
@ -4997,12 +5001,12 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking whether getenv must be declared""... $ac_c" 1>&6
|
||||
echo "configure:5001: checking whether getenv must be declared" >&5
|
||||
echo "configure:5005: 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 <<EOF
|
||||
#line 5006 "configure"
|
||||
#line 5010 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#include <stdio.h>
|
||||
@ -5023,7 +5027,7 @@ int main() {
|
||||
char *(*pfn) = (char *(*)) getenv
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:5027: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:5031: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
bfd_cv_decl_needed_getenv=no
|
||||
else
|
||||
@ -5044,12 +5048,12 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking whether environ must be declared""... $ac_c" 1>&6
|
||||
echo "configure:5048: checking whether environ must be declared" >&5
|
||||
echo "configure:5052: checking whether environ must be declared" >&5
|
||||
if eval "test \"`echo '$''{'bfd_cv_decl_needed_environ'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 5053 "configure"
|
||||
#line 5057 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#include <stdio.h>
|
||||
@ -5070,7 +5074,7 @@ int main() {
|
||||
char *(*pfn) = (char *(*)) environ
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:5074: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:5078: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
bfd_cv_decl_needed_environ=no
|
||||
else
|
||||
|
||||
@ -44,6 +44,8 @@ CY_GNU_GETTEXT
|
||||
|
||||
AM_MAINTAINER_MODE
|
||||
AC_EXEEXT
|
||||
AC_DEFINE_UNQUOTED(EXECUTABLE_SUFFIX, "${EXEEXT}",
|
||||
[Suffix used for executables, if any.])
|
||||
|
||||
# host-specific stuff:
|
||||
|
||||
|
||||
@ -221,11 +221,14 @@
|
||||
#include "bucomm.h"
|
||||
#include "getopt.h"
|
||||
#include "demangle.h"
|
||||
#include "dyn-string.h"
|
||||
#include "dlltool.h"
|
||||
|
||||
#include <ctype.h>
|
||||
#include <time.h>
|
||||
#ifdef __STDC__
|
||||
#include <sys/stat.h>
|
||||
|
||||
#ifdef ANSI_PROTOTYPES
|
||||
#include <stdarg.h>
|
||||
#else
|
||||
#include <varargs.h>
|
||||
@ -236,9 +239,9 @@
|
||||
#include "coff/internal.h"
|
||||
#endif
|
||||
|
||||
|
||||
/* Forward references. */
|
||||
static char * deduce_name (char *);
|
||||
static char *look_for_prog PARAMS ((const char *, const char *, int));
|
||||
static char *deduce_name PARAMS ((const char *));
|
||||
|
||||
#ifdef DLLTOOL_MCORE_ELF
|
||||
static void mcore_elf_cache_filename (char *);
|
||||
@ -456,12 +459,6 @@ static const unsigned char ppc_jtab[] =
|
||||
static bfd_vma ppc_glue_insn = 0x80410004;
|
||||
#endif
|
||||
|
||||
/* The outfile array must be big enough to contain a fully
|
||||
qualified path name, plus an arbitary series of command
|
||||
line switches. We hope that PATH_MAX times two will be
|
||||
enough. */
|
||||
static char outfile [PATHMAX * 2];
|
||||
|
||||
struct mac
|
||||
{
|
||||
const char *type;
|
||||
@ -1686,6 +1683,7 @@ gen_exp_file ()
|
||||
int i;
|
||||
export_type *exp;
|
||||
dlist_type *dl;
|
||||
char *cmd;
|
||||
|
||||
/* xgettext:c-format */
|
||||
inform (_("Generating export file: %s\n"), exp_name);
|
||||
@ -1903,15 +1901,17 @@ gen_exp_file ()
|
||||
fclose (f);
|
||||
|
||||
/* assemble the file */
|
||||
sprintf (outfile, "%s -o %s %s", as_flags, exp_name, TMP_ASM);
|
||||
cmd = (char *) alloca (strlen (as_flags) + strlen (exp_name)
|
||||
+ sizeof TMP_ASM + 50);
|
||||
sprintf (cmd, "%s -o %s %s", as_flags, exp_name, TMP_ASM);
|
||||
|
||||
#ifdef DLLTOOL_ARM
|
||||
if (machine == MARM_INTERWORK || machine == MTHUMB)
|
||||
strcat (outfile, " -mthumb-interwork");
|
||||
strcat (cmd, " -mthumb-interwork");
|
||||
#endif
|
||||
|
||||
run (as_name, outfile);
|
||||
|
||||
|
||||
run (as_name, cmd);
|
||||
|
||||
if (dontdeltemps == 0)
|
||||
unlink (TMP_ASM);
|
||||
|
||||
@ -2091,10 +2091,14 @@ make_one_lib_file (exp, i)
|
||||
{
|
||||
#if 0
|
||||
{
|
||||
char *name;
|
||||
FILE *f;
|
||||
char *prefix="d";
|
||||
sprintf (outfile, "%ss%05d.s", prefix, i);
|
||||
f = fopen (outfile, FOPEN_WT);
|
||||
const char *prefix = "d";
|
||||
char *cmd;
|
||||
|
||||
name = (char *) alloca (strlen (prefix) + 10);
|
||||
sprintf (name, "%ss%05d.s", prefix, i);
|
||||
f = fopen (name, FOPEN_WT);
|
||||
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);
|
||||
@ -2129,15 +2133,16 @@ make_one_lib_file (exp, i)
|
||||
|
||||
fclose (f);
|
||||
|
||||
sprintf (outfile, "%s -o %ss%05d.o %ss%d.s",
|
||||
cmd = (char *) alloca (strlen (as_flags) + 2 * strlen (prefix) + 50);
|
||||
sprintf (cmd, "%s -o %ss%05d.o %ss%d.s",
|
||||
as_flags, prefix, i, prefix, i);
|
||||
|
||||
#ifdef DLLTOOL_ARM
|
||||
if (machine == MARM_INTERWORK || machine == MTHUMB)
|
||||
strcat (outfile, " -mthumb-interwork");
|
||||
strcat (cmd, " -mthumb-interwork");
|
||||
#endif
|
||||
|
||||
run (as_name, outfile);
|
||||
run (as_name, cmd);
|
||||
}
|
||||
#else /* if 0 */
|
||||
{
|
||||
@ -2550,7 +2555,8 @@ make_one_lib_file (exp, i)
|
||||
static bfd *
|
||||
make_head ()
|
||||
{
|
||||
FILE * f = fopen (TMP_HEAD_S, FOPEN_WT);
|
||||
FILE *f = fopen (TMP_HEAD_S, FOPEN_WT);
|
||||
char *cmd;
|
||||
|
||||
if (f == NULL)
|
||||
{
|
||||
@ -2601,22 +2607,25 @@ make_head ()
|
||||
|
||||
fclose (f);
|
||||
|
||||
sprintf (outfile, "%s -o %s %s", as_flags, TMP_HEAD_O, TMP_HEAD_S);
|
||||
cmd = (char *) alloca (strlen (as_flags) + sizeof TMP_HEAD_O
|
||||
+ sizeof TMP_HEAD_S + 50);
|
||||
sprintf (cmd, "%s -o %s %s", as_flags, TMP_HEAD_O, TMP_HEAD_S);
|
||||
|
||||
#ifdef DLLTOOL_ARM
|
||||
if (machine == MARM_INTERWORK || machine == MTHUMB)
|
||||
strcat (outfile, " -mthumb-interwork");
|
||||
strcat (cmd, " -mthumb-interwork");
|
||||
#endif
|
||||
|
||||
run (as_name, outfile);
|
||||
run (as_name, cmd);
|
||||
|
||||
return bfd_openr (TMP_HEAD_O, HOW_BFD_TARGET);
|
||||
return bfd_openr (TMP_HEAD_O, HOW_BFD_TARGET);
|
||||
}
|
||||
|
||||
static bfd *
|
||||
make_tail ()
|
||||
{
|
||||
FILE * f = fopen (TMP_TAIL_S, FOPEN_WT);
|
||||
FILE *f = fopen (TMP_TAIL_S, FOPEN_WT);
|
||||
char *cmd;
|
||||
|
||||
if (f == NULL)
|
||||
{
|
||||
@ -2667,14 +2676,16 @@ make_tail ()
|
||||
|
||||
fclose (f);
|
||||
|
||||
sprintf (outfile, "%s -o %s %s", as_flags, TMP_TAIL_O, TMP_TAIL_S);
|
||||
cmd = (char *) alloca (strlen (as_flags) + sizeof TMP_TAIL_O
|
||||
+ sizeof TMP_TAIL_S + 50);
|
||||
sprintf (cmd, "%s -o %s %s", as_flags, TMP_TAIL_O, TMP_TAIL_S);
|
||||
|
||||
#ifdef DLLTOOL_ARM
|
||||
if (machine == MARM_INTERWORK || MTHUMB)
|
||||
strcat (outfile, " -mthumb-interwork");
|
||||
strcat (cmd, " -mthumb-interwork");
|
||||
#endif
|
||||
|
||||
run (as_name, outfile);
|
||||
run (as_name, cmd);
|
||||
|
||||
return bfd_openr (TMP_TAIL_O, HOW_BFD_TARGET);
|
||||
}
|
||||
@ -2749,12 +2760,15 @@ gen_lib_file ()
|
||||
|
||||
if (dontdeltemps < 2)
|
||||
{
|
||||
char *name;
|
||||
|
||||
name = (char *) alloca (sizeof TMP_STUB + 10);
|
||||
for (i = 0, exp = d_exports; exp; i++, exp = exp->next)
|
||||
{
|
||||
sprintf (outfile, "%s%05d.o", TMP_STUB, i);
|
||||
if (unlink (outfile) < 0)
|
||||
sprintf (name, "%s%05d.o", TMP_STUB, i);
|
||||
if (unlink (name) < 0)
|
||||
/* xgettext:c-format */
|
||||
warn (_("cannot delete %s: %s\n"), outfile, strerror (errno));
|
||||
warn (_("cannot delete %s: %s\n"), name, strerror (errno));
|
||||
}
|
||||
}
|
||||
|
||||
@ -3305,36 +3319,127 @@ main (ac, av)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Look for the program formed by concatenating PROG_NAME and the
|
||||
string running from PREFIX to END_PREFIX. If the concatenated
|
||||
string contains a '/', try appending EXECUTABLE_SUFFIX if it is
|
||||
defined. */
|
||||
|
||||
static char *
|
||||
look_for_prog (prog_name, prefix, end_prefix)
|
||||
const char *prog_name;
|
||||
const char *prefix;
|
||||
int end_prefix;
|
||||
{
|
||||
struct stat s;
|
||||
char *cmd;
|
||||
|
||||
cmd = xmalloc (strlen (prefix)
|
||||
+ strlen (prog_name)
|
||||
#ifdef EXECUTABLE_SUFFIX
|
||||
+ strlen (EXECUTABLE_SUFFIX)
|
||||
#endif
|
||||
+ 10);
|
||||
strcpy (cmd, prefix);
|
||||
|
||||
sprintf (cmd + end_prefix, "%s", prog_name);
|
||||
|
||||
if (strchr (cmd, '/') != NULL)
|
||||
{
|
||||
int found;
|
||||
|
||||
found = (stat (cmd, &s) == 0
|
||||
#ifdef EXECUTABLE_SUFFIX
|
||||
|| stat (strcat (cmd, EXECUTABLE_SUFFIX), &s) == 0
|
||||
#endif
|
||||
);
|
||||
|
||||
if (! found)
|
||||
{
|
||||
/* xgettext:c-format */
|
||||
inform (_("Tried file: %s"), cmd);
|
||||
free (cmd);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* xgettext:c-format */
|
||||
inform (_("Using file: %s"), cmd);
|
||||
|
||||
return cmd;
|
||||
}
|
||||
|
||||
/* Deduce the name of the program we are want to invoke.
|
||||
PROG_NAME is the basic name of the program we want to run,
|
||||
eg "as" or "ld". The catch is that we might want actually
|
||||
run "i386-pe-as" or "ppc-pe-ld". We detect this case by
|
||||
examining the name used to invoke dlltool itself. If
|
||||
dlltool is actually called <foo>-<bar>-dlltool then we
|
||||
prepend <foo>-<bar> to the default name. */
|
||||
run "i386-pe-as" or "ppc-pe-ld".
|
||||
|
||||
If argv[0] contains the full path, then try to find the program
|
||||
in the same place, with and then without a target-like prefix.
|
||||
|
||||
Given, argv[0] = /usr/local/bin/i586-cygwin32-dlltool,
|
||||
deduce_name("as") uses the following search order:
|
||||
|
||||
/usr/local/bin/i586-cygwin32-as
|
||||
/usr/local/bin/as
|
||||
as
|
||||
|
||||
If there's an EXECUTABLE_SUFFIX, it'll use that as well; for each
|
||||
name, it'll try without and then with EXECUTABLE_SUFFIX.
|
||||
|
||||
Given, argv[0] = i586-cygwin32-dlltool, it will not even try "as"
|
||||
as the fallback, but rather return i586-cygwin32-as.
|
||||
|
||||
Oh, and given, argv[0] = dlltool, it'll return "as".
|
||||
|
||||
Returns a dynamically allocated string. */
|
||||
|
||||
static char *
|
||||
deduce_name (char * prog_name)
|
||||
deduce_name (prog_name)
|
||||
const char *prog_name;
|
||||
{
|
||||
/* Use our own static array to hold the constructed name
|
||||
rather than the outfile[] array, as that array may
|
||||
already be in use. */
|
||||
static char new_name[32];
|
||||
char * p;
|
||||
char *cmd;
|
||||
char *dash, *slash, *cp;
|
||||
|
||||
p = strrchr (program_name, '-');
|
||||
|
||||
if (p == NULL)
|
||||
return prog_name;
|
||||
dash = NULL;
|
||||
slash = NULL;
|
||||
for (cp = program_name; *cp != '\0'; ++cp)
|
||||
{
|
||||
if (*cp == '-')
|
||||
dash = cp;
|
||||
if (
|
||||
#if defined(__DJGPP__) || defined (__CYGWIN__) || defined(__WIN32__)
|
||||
*cp == ':' || *cp == '\\' ||
|
||||
#endif
|
||||
*cp == '/')
|
||||
{
|
||||
slash = cp;
|
||||
dash = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* assert (strlen (program_name) < 32); */
|
||||
|
||||
strcpy (new_name, program_name);
|
||||
|
||||
new_name [(p - program_name) + 1] = 0;
|
||||
cmd = NULL;
|
||||
|
||||
strcat (new_name, prog_name);
|
||||
if (dash != NULL)
|
||||
{
|
||||
/* First, try looking for a prefixed PROG_NAME in the
|
||||
PROGRAM_NAME directory, with the same prefix as PROGRAM_NAME. */
|
||||
cmd = look_for_prog (prog_name, program_name, dash - program_name + 1);
|
||||
}
|
||||
|
||||
return new_name;
|
||||
if (slash != NULL && cmd == NULL)
|
||||
{
|
||||
/* Next, try looking for a PROG_NAME in the same directory as
|
||||
that of this program. */
|
||||
cmd = look_for_prog (prog_name, program_name, slash - program_name + 1);
|
||||
}
|
||||
|
||||
if (cmd == NULL)
|
||||
{
|
||||
/* Just return PROG_NAME as is. */
|
||||
cmd = xstrdup (prog_name);
|
||||
}
|
||||
|
||||
return cmd;
|
||||
}
|
||||
|
||||
#ifdef DLLTOOL_MCORE_ELF
|
||||
@ -3371,79 +3476,85 @@ static void
|
||||
mcore_elf_gen_out_file (void)
|
||||
{
|
||||
fname_cache * ptr;
|
||||
dyn_string_t ds;
|
||||
|
||||
/* Step one. Run 'ld -r' on the input object files in order to resolve
|
||||
any internal references and to generate a single .exports section. */
|
||||
ptr = & fnames;
|
||||
|
||||
strcpy (outfile, "-r ");
|
||||
ds = dyn_string_new (100);
|
||||
dyn_string_append (ds, "-r ");
|
||||
|
||||
if (mcore_elf_linker_flags != NULL)
|
||||
strcat (outfile, mcore_elf_linker_flags);
|
||||
dyn_string_append (ds, mcore_elf_linker_flags);
|
||||
|
||||
while (ptr->next != NULL)
|
||||
{
|
||||
/* Check for overrun: what the hell, it's only cpu cycles... */
|
||||
if (strlen (outfile) + strlen (ptr->filename) + 2 >= sizeof (outfile))
|
||||
{
|
||||
fatal (_("buffer overflow\n"));
|
||||
return;
|
||||
}
|
||||
|
||||
strcat (outfile, ptr->filename);
|
||||
strcat (outfile, " ");
|
||||
dyn_string_append (ds, ptr->filename);
|
||||
dyn_string_append (ds, " ");
|
||||
|
||||
ptr = ptr->next;
|
||||
}
|
||||
|
||||
strcat (outfile, "-o ");
|
||||
strcat (outfile, MCORE_ELF_TMP_OBJ);
|
||||
dyn_string_append (ds, "-o ");
|
||||
dyn_string_append (ds, MCORE_ELF_TMP_OBJ);
|
||||
|
||||
if (mcore_elf_linker == NULL)
|
||||
mcore_elf_linker = deduce_name ("ld");
|
||||
|
||||
run (mcore_elf_linker, outfile);
|
||||
run (mcore_elf_linker, ds->s);
|
||||
|
||||
dyn_string_delete (ds);
|
||||
|
||||
/* Step two. Create a .exp file and a .lib file from the temporary file.
|
||||
Do this by recursively invoking dlltool....*/
|
||||
sprintf (outfile, "-S %s", as_name);
|
||||
ds = dyn_string_new (100);
|
||||
|
||||
dyn_string_append (ds, "-S ");
|
||||
dyn_string_append (ds, as_name);
|
||||
|
||||
strcat (outfile, " -e ");
|
||||
strcat (outfile, MCORE_ELF_TMP_EXP);
|
||||
strcat (outfile, " -l ");
|
||||
strcat (outfile, MCORE_ELF_TMP_LIB);
|
||||
strcat (outfile, " " );
|
||||
strcat (outfile, MCORE_ELF_TMP_OBJ);
|
||||
dyn_string_append (ds, " -e ");
|
||||
dyn_string_append (ds, MCORE_ELF_TMP_EXP);
|
||||
dyn_string_append (ds, " -l ");
|
||||
dyn_string_append (ds, MCORE_ELF_TMP_LIB);
|
||||
dyn_string_append (ds, " " );
|
||||
dyn_string_append (ds, MCORE_ELF_TMP_OBJ);
|
||||
|
||||
if (verbose)
|
||||
strcat (outfile, " -v");
|
||||
dyn_string_append (ds, " -v");
|
||||
|
||||
if (dontdeltemps)
|
||||
{
|
||||
strcat (outfile, " -n");
|
||||
dyn_string_append (ds, " -n");
|
||||
|
||||
if (dontdeltemps > 1)
|
||||
strcat (outfile, " -n");
|
||||
dyn_string_append (ds, " -n");
|
||||
}
|
||||
|
||||
/* XXX - FIME: ought to check/copy other command line options as well. */
|
||||
|
||||
run (program_name, outfile);
|
||||
run (program_name, ds->s);
|
||||
|
||||
dyn_string_delete (ds);
|
||||
|
||||
/* Step four. Feed the .exp and object files to ld -shared to create the dll. */
|
||||
strcpy (outfile, "-shared ");
|
||||
ds = dyn_string_new (100);
|
||||
|
||||
dyn_string_append (ds, "-shared ");
|
||||
|
||||
if (mcore_elf_linker_flags)
|
||||
strcat (outfile, mcore_elf_linker_flags);
|
||||
dyn_string_append (ds, mcore_elf_linker_flags);
|
||||
|
||||
strcat (outfile, " ");
|
||||
strcat (outfile, MCORE_ELF_TMP_EXP);
|
||||
strcat (outfile, " ");
|
||||
strcat (outfile, MCORE_ELF_TMP_OBJ);
|
||||
strcat (outfile, " -o ");
|
||||
strcat (outfile, mcore_elf_out_file);
|
||||
dyn_string_append (ds, " ");
|
||||
dyn_string_append (ds, MCORE_ELF_TMP_EXP);
|
||||
dyn_string_append (ds, " ");
|
||||
dyn_string_append (ds, MCORE_ELF_TMP_OBJ);
|
||||
dyn_string_append (ds, " -o ");
|
||||
dyn_string_append (ds, mcore_elf_out_file);
|
||||
|
||||
run (mcore_elf_linker, outfile);
|
||||
run (mcore_elf_linker, ds->s);
|
||||
|
||||
dyn_string_delete (ds);
|
||||
|
||||
if (dontdeltemps == 0)
|
||||
unlink (MCORE_ELF_TMP_EXP);
|
||||
|
||||
@ -26,21 +26,10 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#ifdef HAVE_STDLIB_H
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include "bfd.h"
|
||||
#include "libiberty.h"
|
||||
#include "bucomm.h"
|
||||
@ -49,6 +38,13 @@
|
||||
|
||||
#include <ctype.h>
|
||||
#include <time.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#ifdef ANSI_PROTOTYPES
|
||||
#include <stdarg.h>
|
||||
#else
|
||||
#include <varargs.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_WAIT_H
|
||||
#include <sys/wait.h>
|
||||
@ -83,7 +79,7 @@
|
||||
#endif /* ! HAVE_SYS_WAIT_H */
|
||||
|
||||
static char *program_version = "0.2.4";
|
||||
static char *driver_name = "gcc";
|
||||
static char *driver_name = NULL;
|
||||
static char *cygwin_driver_flags =
|
||||
"-Wl,--dll -nostartfiles";
|
||||
static char *mingw32_driver_flags = "-mdll";
|
||||
@ -91,7 +87,7 @@ static char *generic_driver_flags = "-Wl,--dll";
|
||||
|
||||
static char *entry_point;
|
||||
|
||||
static char *dlltool_name = "dlltool";
|
||||
static char *dlltool_name = NULL;
|
||||
|
||||
static char *target = TARGET;
|
||||
|
||||
@ -122,11 +118,186 @@ static int delete_def_file = 1;
|
||||
|
||||
static int run PARAMS ((const char *, char *));
|
||||
static void usage PARAMS ((FILE *, int));
|
||||
static void display PARAMS ((const char *, va_list));
|
||||
static void inform PARAMS ((const char *, ...));
|
||||
static char *look_for_prog PARAMS ((const char *, const char *, int));
|
||||
static char *deduce_name PARAMS ((const char *));
|
||||
static void delete_temp_files PARAMS ((void));
|
||||
static void cleanup_and_exit PARAMS ((int status));
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
/* Please keep the following 4 routines in sync with dlltool.c:
|
||||
display ()
|
||||
inform ()
|
||||
look_for_prog ()
|
||||
deduce_name ()
|
||||
It's not worth the hassle to break these out since dllwrap will
|
||||
(hopefully) soon be retired in favor of `ld --shared. */
|
||||
|
||||
static void
|
||||
display (message, args)
|
||||
const char * message;
|
||||
va_list args;
|
||||
{
|
||||
if (program_name != NULL)
|
||||
fprintf (stderr, "%s: ", program_name);
|
||||
|
||||
vfprintf (stderr, message, args);
|
||||
|
||||
if (message [strlen (message) - 1] != '\n')
|
||||
fputc ('\n', stderr);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
#ifdef __STDC__
|
||||
inform (const char * message, ...)
|
||||
#else
|
||||
inform (message, va_alist)
|
||||
const char * message;
|
||||
va_dcl
|
||||
#endif
|
||||
{
|
||||
va_list args;
|
||||
|
||||
if (!verbose)
|
||||
return;
|
||||
|
||||
#ifdef __STDC__
|
||||
va_start (args, message);
|
||||
#else
|
||||
va_start (args);
|
||||
#endif
|
||||
|
||||
display (message, args);
|
||||
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
/* Look for the program formed by concatenating PROG_NAME and the
|
||||
string running from PREFIX to END_PREFIX. If the concatenated
|
||||
string contains a '/', try appending EXECUTABLE_SUFFIX if it is
|
||||
defined. */
|
||||
|
||||
static char *
|
||||
look_for_prog (prog_name, prefix, end_prefix)
|
||||
const char *prog_name;
|
||||
const char *prefix;
|
||||
int end_prefix;
|
||||
{
|
||||
struct stat s;
|
||||
char *cmd;
|
||||
|
||||
cmd = xmalloc (strlen (prefix)
|
||||
+ strlen (prog_name)
|
||||
#ifdef EXECUTABLE_SUFFIX
|
||||
+ strlen (EXECUTABLE_SUFFIX)
|
||||
#endif
|
||||
+ 10);
|
||||
strcpy (cmd, prefix);
|
||||
|
||||
sprintf (cmd + end_prefix, "%s", prog_name);
|
||||
|
||||
if (strchr (cmd, '/') != NULL)
|
||||
{
|
||||
int found;
|
||||
|
||||
found = (stat (cmd, &s) == 0
|
||||
#ifdef EXECUTABLE_SUFFIX
|
||||
|| stat (strcat (cmd, EXECUTABLE_SUFFIX), &s) == 0
|
||||
#endif
|
||||
);
|
||||
|
||||
if (! found)
|
||||
{
|
||||
/* xgettext:c-format */
|
||||
inform (_("Tried file: %s"), cmd);
|
||||
free (cmd);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* xgettext:c-format */
|
||||
inform (_("Using file: %s"), cmd);
|
||||
|
||||
return cmd;
|
||||
}
|
||||
|
||||
/* Deduce the name of the program we are want to invoke.
|
||||
PROG_NAME is the basic name of the program we want to run,
|
||||
eg "as" or "ld". The catch is that we might want actually
|
||||
run "i386-pe-as" or "ppc-pe-ld".
|
||||
|
||||
If argv[0] contains the full path, then try to find the program
|
||||
in the same place, with and then without a target-like prefix.
|
||||
|
||||
Given, argv[0] = /usr/local/bin/i586-cygwin32-dlltool,
|
||||
deduce_name("as") uses the following search order:
|
||||
|
||||
/usr/local/bin/i586-cygwin32-as
|
||||
/usr/local/bin/as
|
||||
as
|
||||
|
||||
If there's an EXECUTABLE_SUFFIX, it'll use that as well; for each
|
||||
name, it'll try without and then with EXECUTABLE_SUFFIX.
|
||||
|
||||
Given, argv[0] = i586-cygwin32-dlltool, it will not even try "as"
|
||||
as the fallback, but rather return i586-cygwin32-as.
|
||||
|
||||
Oh, and given, argv[0] = dlltool, it'll return "as".
|
||||
|
||||
Returns a dynamically allocated string. */
|
||||
|
||||
static char *
|
||||
deduce_name (prog_name)
|
||||
const char *prog_name;
|
||||
{
|
||||
char *cmd;
|
||||
char *dash, *slash, *cp;
|
||||
|
||||
dash = NULL;
|
||||
slash = NULL;
|
||||
for (cp = program_name; *cp != '\0'; ++cp)
|
||||
{
|
||||
if (*cp == '-')
|
||||
dash = cp;
|
||||
if (
|
||||
#if defined(__DJGPP__) || defined (__CYGWIN__) || defined(__WIN32__)
|
||||
*cp == ':' || *cp == '\\' ||
|
||||
#endif
|
||||
*cp == '/')
|
||||
{
|
||||
slash = cp;
|
||||
dash = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
cmd = NULL;
|
||||
|
||||
if (dash != NULL)
|
||||
{
|
||||
/* First, try looking for a prefixed PROG_NAME in the
|
||||
PROGRAM_NAME directory, with the same prefix as PROGRAM_NAME. */
|
||||
cmd = look_for_prog (prog_name, program_name, dash - program_name + 1);
|
||||
}
|
||||
|
||||
if (slash != NULL && cmd == NULL)
|
||||
{
|
||||
/* Next, try looking for a PROG_NAME in the same directory as
|
||||
that of this program. */
|
||||
cmd = look_for_prog (prog_name, program_name, slash - program_name + 1);
|
||||
}
|
||||
|
||||
if (cmd == NULL)
|
||||
{
|
||||
/* Just return PROG_NAME as is. */
|
||||
cmd = xstrdup (prog_name);
|
||||
}
|
||||
|
||||
return cmd;
|
||||
}
|
||||
|
||||
static void
|
||||
delete_temp_files ()
|
||||
{
|
||||
@ -341,6 +512,7 @@ usage (file, status)
|
||||
fprintf (file, " --image-base <base> Specify image base address\n");
|
||||
fprintf (file, " --target <machine> i386-cygwin32 or i386-mingw32\n");
|
||||
fprintf (file, " --dry-run Show what needs to be run\n");
|
||||
fprintf (file, " --mno-cygwin Create Mingw DLL\n");
|
||||
fprintf (file, " Options passed to DLLTOOL:\n");
|
||||
fprintf (file, " --machine <machine>\n");
|
||||
fprintf (file, " --output-exp <outname> Generate export file.\n");
|
||||
@ -381,9 +553,10 @@ usage (file, status)
|
||||
#define OPTION_ENTRY (OPTION_DLLTOOL_NAME + 1)
|
||||
#define OPTION_IMAGE_BASE (OPTION_ENTRY + 1)
|
||||
#define OPTION_TARGET (OPTION_IMAGE_BASE + 1)
|
||||
#define OPTION_MNO_CYGWIN (OPTION_TARGET + 1)
|
||||
|
||||
/* DLLTOOL options. */
|
||||
#define OPTION_NODELETE (OPTION_TARGET + 1)
|
||||
#define OPTION_NODELETE (OPTION_MNO_CYGWIN + 1)
|
||||
#define OPTION_DLLNAME (OPTION_NODELETE + 1)
|
||||
#define OPTION_NO_IDATA4 (OPTION_DLLNAME + 1)
|
||||
#define OPTION_NO_IDATA5 (OPTION_NO_IDATA4 + 1)
|
||||
@ -568,6 +741,9 @@ main (argc, argv)
|
||||
case OPTION_TARGET:
|
||||
target = optarg;
|
||||
break;
|
||||
case OPTION_MNO_CYGWIN:
|
||||
target = "i386-mingw32";
|
||||
break;
|
||||
case OPTION_BASE_FILE:
|
||||
base_file_name = optarg;
|
||||
delete_base_file = 0;
|
||||
@ -614,7 +790,7 @@ main (argc, argv)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* sanity checks. */
|
||||
if (! dll_name && ! dll_file_name)
|
||||
{
|
||||
@ -631,7 +807,14 @@ main (argc, argv)
|
||||
{
|
||||
dll_file_name = xstrdup (dll_name);
|
||||
}
|
||||
|
||||
|
||||
/* Deduce driver-name and dlltool-name from our own. */
|
||||
if (driver_name == NULL)
|
||||
driver_name = deduce_name ("gcc");
|
||||
|
||||
if (dlltool_name == NULL)
|
||||
dlltool_name = deduce_name ("dlltool");
|
||||
|
||||
if (! def_file_seen)
|
||||
{
|
||||
char *fileprefix = choose_temp_base ();
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/* resrc.c -- read and write Windows rc files.
|
||||
Copyright 1997, 1998 Free Software Foundation, Inc.
|
||||
Copyright 1997, 1998, 1999 Free Software Foundation, Inc.
|
||||
Written by Ian Lance Taylor, Cygnus Support.
|
||||
|
||||
This file is part of GNU Binutils.
|
||||
@ -112,6 +112,8 @@ static int icons;
|
||||
|
||||
/* Local functions. */
|
||||
|
||||
static FILE *look_for_default PARAMS ((char *, const char *, int,
|
||||
const char *, const char *));
|
||||
static void close_pipe PARAMS ((void));
|
||||
static void unexpected_eof PARAMS ((const char *));
|
||||
static int get_word PARAMS ((FILE *, const char *));
|
||||
@ -122,41 +124,44 @@ static void define_fontdirs PARAMS ((void));
|
||||
|
||||
/* look for the preprocessor program */
|
||||
|
||||
FILE *
|
||||
static FILE *
|
||||
look_for_default (cmd, prefix, end_prefix, preprocargs, filename)
|
||||
char *cmd;
|
||||
char *prefix;
|
||||
const char *prefix;
|
||||
int end_prefix;
|
||||
char *preprocargs;
|
||||
char *filename;
|
||||
const char *preprocargs;
|
||||
const char *filename;
|
||||
{
|
||||
char *path = getenv ("PATH");
|
||||
char *space;
|
||||
int found;
|
||||
struct stat s;
|
||||
|
||||
strcpy (cmd, prefix);
|
||||
|
||||
sprintf (cmd+end_prefix, "%s", DEFAULT_PREPROCESSOR);
|
||||
space = strchr (cmd+end_prefix, ' ');
|
||||
sprintf (cmd + end_prefix, "%s", DEFAULT_PREPROCESSOR);
|
||||
space = strchr (cmd + end_prefix, ' ');
|
||||
if (space)
|
||||
*space = 0;
|
||||
|
||||
if (strchr (cmd, '/'))
|
||||
{
|
||||
found = stat (cmd, &s);
|
||||
found = (stat (cmd, &s) == 0
|
||||
#ifdef EXECUTABLE_SUFFIX
|
||||
|| stat (strcat (cmd, EXECUTABLE_SUFFIX), &s) == 0
|
||||
#endif
|
||||
);
|
||||
|
||||
if (found < 0)
|
||||
if (! found)
|
||||
{
|
||||
if (verbose)
|
||||
fprintf (stderr, "Tried `%s'\n", cmd);
|
||||
return 0;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
strcpy (cmd, prefix);
|
||||
|
||||
sprintf (cmd+end_prefix, "%s %s %s",
|
||||
sprintf (cmd + end_prefix, "%s %s %s",
|
||||
DEFAULT_PREPROCESSOR, preprocargs, filename);
|
||||
|
||||
if (verbose)
|
||||
@ -202,11 +207,14 @@ read_rc_file (filename, preprocessor, preprocargs, language)
|
||||
+ strlen (preprocessor)
|
||||
+ strlen (preprocargs)
|
||||
+ strlen (filename)
|
||||
#ifdef EXECUTABLE_SUFFIX
|
||||
+ strlen (EXECUTABLE_SUFFIX)
|
||||
#endif
|
||||
+ 10);
|
||||
|
||||
|
||||
dash = slash = 0;
|
||||
for (cp=program_name; *cp; cp++)
|
||||
for (cp = program_name; *cp; cp++)
|
||||
{
|
||||
if (*cp == '-')
|
||||
dash = cp;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user