Last touches for binutils patch.

This commit is contained in:
Krystian Bacławski
2012-02-14 20:51:08 -08:00
parent f1312c9535
commit f64d23e853
13 changed files with 9 additions and 3222 deletions
@@ -1,37 +1,5 @@
--- binutils-2.9.1/bfd/doc/Makefile.in Fri May 1 08:48:02 1998
+++ binutils-2.9.1/bfd/doc/Makefile.in Sun Aug 23 00:00:00 1998
@@ -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
@@ -11,7 +11,7 @@
# PARTICULAR PURPOSE.
-SHELL = @SHELL@
+SHELL = /bin/sh
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@@ -28,10 +28,16 @@ sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
+guidedir = @guidedir@
+htmldir = @htmldir@
+dvidir = @dvidir@
+psdir = @psdir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
+DISTDIR =
+
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
@@ -91,7 +97,7 @@ wordsize = @wordsize@
AUTOMAKE_OPTIONS = cygnus
@@ -49,353 +17,6 @@
$(srcdir)/../libbfd.c $(srcdir)/../opncls.c \
$(srcdir)/../reloc.c $(srcdir)/../section.c \
$(srcdir)/../syms.c $(srcdir)/../targets.c \
@@ -151,26 +158,35 @@ TEXINFO_TEX = $(top_srcdir)/../texinfo/t
INFO_DEPS = bfd.info
DVIS = bfd.dvi
TEXINFOS = bfd.texinfo
+GUIDES = bfd.guide
+GUIDE_DEPS = bfd.guide
+HTMLS = bfd.html
+HTML_DEPS = bfd.html
+PS_S = bfd.ps
+PS_DEPS = bfd.ps
DIST_COMMON = ChangeLog Makefile.am Makefile.in
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) \
+ $(INFOS) $(GUIDES) $(HTMLS) $(MANS)
TAR = tar
GZIP = --best
-default: all
+all: Makefile
.SUFFIXES:
-.SUFFIXES: .dvi .info .ps .texi .texinfo
-$(srcdir)/Makefile.in: @MAINT@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
- cd $(top_srcdir) && $(AUTOMAKE) --cygnus doc/Makefile
+.SUFFIXES: .dvi .guide .html .info .ps .texi .texinfo .txi
+$(srcdir)/Makefile.in: @MAINT@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && $(AUTOMAKE) --cygnus --include-deps doc/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
bfd.info: bfd.texinfo
+bfd.guide: bfd.texinfo
+bfd.html: bfd.texinfo
+bfd.ps: bfd.dvi
bfd.dvi: bfd.texinfo
@@ -178,7 +194,7 @@ DVIPS = dvips
.texi.info:
@rm -f $@ $@-[0-9] $@-[0-9][0-9]
- $(MAKEINFO) -I $(srcdir) $<
+ $(MAKEINFO) -I$(srcdir) $< --output=$@
.texi.dvi:
TEXINPUTS=$(top_srcdir)/../texinfo:$$TEXINPUTS \
@@ -186,39 +202,51 @@ DVIPS = dvips
.texi:
@rm -f $@ $@-[0-9] $@-[0-9][0-9]
- $(MAKEINFO) -I $(srcdir) $<
+ $(MAKEINFO) -I $(srcdir) $< --output=$@
.texinfo.info:
@rm -f $@ $@-[0-9] $@-[0-9][0-9]
- $(MAKEINFO) -I $(srcdir) $<
+ $(MAKEINFO) -I $(srcdir) $< --output=$@
.texinfo:
@rm -f $@ $@-[0-9] $@-[0-9][0-9]
- $(MAKEINFO) -I $(srcdir) $<
+ $(MAKEINFO) -I $(srcdir) $< --output=$@
.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
@@ -229,11 +257,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)
@@ -246,10 +274,140 @@ dist-info: $(INFO_DEPS)
done; \
done
+MAKEGUIDE= $(MAKEINFO) --amiga
+
+MAKEHTML = texi2html -number -split_chapter
+
+.texi.guide:
+ $(MAKEGUIDE) -I$(srcdir) $< -o $@
+
+.texinfo.guide:
+ $(MAKEGUIDE) -I$(srcdir) $< -o $@
+
+.txi.guide:
+ $(MAKEGUIDE) -I$(srcdir) $< -o $@
+
+.texi.html:
+ $(MAKEHTML) -I$(srcdir) $<
+
+.texinfo.html:
+ $(MAKEHTML) -I$(srcdir) $<
+
+install-guide: $(GUIDE_DEPS)
+ $(mkinstalldirs) $(guidedir)
+ for file in $(GUIDE_DEPS); do \
+ for ifile in `echo $$file*`; do \
+ $(INSTALL_DATA) $$ifile $(guidedir)/$$ifile; \
+ done; \
+ done
+
+uninstall-guide:
+ for file in *.guide*; do \
+ rm -f $(guidedir)/$$file; \
+ done
+
+install-ps: $(PS_S)
+ $(mkinstalldirs) $(psdir)
+ for file in $(PS_DEPS); do \
+ for ifile in `echo $$file*`; do \
+ $(INSTALL_DATA) $$ifile $(psdir)/$$ifile; \
+ done; \
+ done
+
+uninstall-ps:
+ for file in *.ps*; do \
+ rm -f $(psdir)/$$file; \
+ done
+
+install-dvi: $(DVIS)
+ $(mkinstalldirs) $(dvidir)
+ for file in $(DVIS); do \
+ for ifile in `echo $$file*`; do \
+ $(INSTALL_DATA) $$ifile $(dvidir)/$$ifile; \
+ done; \
+ done
+
+uninstall-dvi:
+ for file in *.dvi*; do \
+ rm -f $(dvidir)/$$file; \
+ done
+
+install-html: $(HTML_DEPS)
+ $(mkinstalldirs) $(htmldir)
+ @touch $(HTML_DEPS)
+ @for file in $(HTML_DEPS); do \
+ if test -f $$file; then d=.; else d=$(srcdir); fi; \
+ bfile=`basename $$file .html`; \
+ for ifile in `cd $$d && echo $$file $$bfile'_toc.html' $$bfile'_foot.html' $$bfile'_[0-9].html' $$bfile'_[0-9][0-9].html'`; do \
+ if test -f $$d/$$ifile; then \
+ echo " $(INSTALL_DATA) $$d/$$ifile $(htmldir)/$$ifile"; \
+ $(INSTALL_DATA) $$d/$$ifile $(htmldir)/$$ifile; \
+ else : ; fi; \
+ done; \
+ done
+ @rm -f $(htmldir)/$(HTML_DEPS)
+
+uninstall-html:
+ @for file in $(HTML_DEPS); do \
+ bfile=`basename $$file .html`; \
+ for ifile in `cd $(htmldir) && echo $$file $$bfile'_toc.html' $$bfile'_foot.html' $$bfile'_[0-9].html' $$bfile'_[0-9][0-9].html'`; do \
+ echo "removing: $(htmldir)/$$ifile"; \
+ rm -f $(htmldir)/$$ifile; \
+ done; \
+ done
+
+mostlyclean-guide:
+ rm -f bfd.aux bfd.cp bfd.cps bfd.dvi bfd.fn bfd.fns bfd.ky bfd.kys \
+ bfd.ps bfd.log bfd.pg bfd.toc bfd.tp bfd.tps bfd.vr bfd.vrs \
+ bfd.op bfd.tr bfd.cv bfd.cn bfd.guide bfd.html bfd.ps
+
+clean-guide:
+
+distclean-guide:
+
+maintainer-clean-guide:
+ rm -f $(GUIDES)
+
+mostlyclean-html:
+ rm -f bfd.aux bfd.cp bfd.cps bfd.dvi bfd.fn bfd.fns bfd.ky bfd.kys \
+ bfd.ps bfd.log bfd.pg bfd.toc bfd.tp bfd.tps bfd.vr bfd.vrs \
+ bfd.op bfd.tr bfd.cv bfd.cn bfd.guide bfd.html bfd.ps
+
+clean-html:
+
+distclean-html:
+
+maintainer-clean-html:
+ rm -f $(HTMLS)
+
+mostlyclean-ps:
+ rm -f bfd.aux bfd.cp bfd.cps bfd.dvi bfd.fn bfd.fns bfd.ky bfd.kys \
+ bfd.ps bfd.log bfd.pg bfd.toc bfd.tp bfd.tps bfd.vr bfd.vrs \
+ bfd.op bfd.tr bfd.cv bfd.cn bfd.guide bfd.html bfd.ps
+
+clean-ps:
+
+distclean-ps:
+
+maintainer-clean-ps:
+ rm -f $(PS_S)
+
+mostlyclean-dvi:
+ rm -f bfd.aux bfd.cp bfd.cps bfd.dvi bfd.fn bfd.fns bfd.ky bfd.kys \
+ bfd.ps bfd.log bfd.pg bfd.toc bfd.tp bfd.tps bfd.vr bfd.vrs \
+ bfd.op bfd.tr bfd.cv bfd.cn bfd.guide bfd.html bfd.ps
+
+clean-dvi:
+
+distclean-dvi:
+
+maintainer-clean-dvi:
+ rm -f $(DVIS)
+
mostlyclean-aminfo:
-rm -f bfd.aux bfd.cp bfd.cps bfd.dvi bfd.fn bfd.fns bfd.ky bfd.kys \
bfd.ps bfd.log bfd.pg bfd.toc bfd.tp bfd.tps bfd.vr bfd.vrs \
- bfd.op bfd.tr bfd.cv bfd.cn
+ bfd.op bfd.tr bfd.cv bfd.cn bfd.guide bfd.html bfd.ps
clean-aminfo:
@@ -280,6 +438,9 @@ distdir: $(DISTFILES)
done
$(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info
info: $(INFO_DEPS)
+guide: $(GUIDE_DEPS)
+html: $(HTML_DEPS)
+ps: $(PS_DEPS)
dvi: $(DVIS)
check:
$(MAKE)
@@ -296,8 +457,6 @@ install: install-exec install-data all
uninstall:
-all: Makefile
-
install-strip:
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
installdirs:
@@ -317,36 +476,45 @@ distclean-generic:
maintainer-clean-generic:
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-mostlyclean: mostlyclean-aminfo mostlyclean-generic
+mostlyclean: mostlyclean-aminfo mostlyclean-guide mostlyclean-html \
+ mostlyclean-dvi mostlyclean-ps mostlyclean-generic
-clean: clean-aminfo clean-generic mostlyclean
+clean: clean-aminfo clean-guide clean-html clean-dvi clean-ps \
+ clean-generic mostlyclean
-distclean: distclean-aminfo distclean-generic clean
+distclean: distclean-aminfo distclean-guide distclean-html \
+ distclean-dvi distclean-ps distclean-generic clean
-rm -f config.status
-rm -f libtool
-maintainer-clean: maintainer-clean-aminfo maintainer-clean-generic \
- distclean
+maintainer-clean: maintainer-clean-aminfo maintainer-clean-guide \
+ maintainer-clean-html maintainer-clean-dvi \
+ maintainer-clean-ps maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
-.PHONY: default install-info-am uninstall-info mostlyclean-aminfo \
-distclean-aminfo clean-aminfo maintainer-clean-aminfo tags distdir info \
-dvi installcheck install-info install-exec install-data install \
-uninstall all installdirs mostlyclean-generic distclean-generic \
-clean-generic maintainer-clean-generic clean mostlyclean distclean \
-maintainer-clean
+.PHONY: install-info-am uninstall-info install-guide uninstall-guide \
+install-ps uninstall-ps install-html uninstall-html install-dvi \
+uninstall-dvi mostlyclean-guide distclean-guide clean-guide \
+maintainer-clean-guide mostlyclean-html distclean-html clean-html \
+maintainer-clean-html mostlyclean-ps distclean-ps clean-ps \
+maintainer-clean-ps mostlyclean-dvi distclean-dvi clean-dvi \
+maintainer-clean-dvi mostlyclean-aminfo distclean-aminfo clean-aminfo \
+maintainer-clean-aminfo tags distdir info guide html ps dvi \
+installcheck install-info install-exec install-data install uninstall \
+all installdirs mostlyclean-generic distclean-generic clean-generic \
+maintainer-clean-generic clean mostlyclean distclean maintainer-clean
$(MKDOC): chew.o
- $(CC_FOR_BUILD) -o $(MKDOC) chew.o $(LOADLIBES) $(LDFLAGS)
+ $(CC_FOR_BUILD) $(H_CFLAGS) $(CFLAGS) -o $(MKDOC) chew.o $(LOADLIBES) $(LDFLAGS)
chew.o: chew.c
$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c
protos: libbfd.h libcoff.h bfd.h
-bfd.info bfd.dvi: $(DOCFILES) bfdsumm.texi bfd.texinfo
+bfd.info bfd.dvi bfd.guide: $(DOCFILES) bfdsumm.texi bfd.texinfo
# We can't replace these rules with an implicit rule, because
# makes without VPATH support couldn't find the .h files in `..'.
@@ -473,6 +641,18 @@ s-linker: $(MKDOC) $(srcdir)/../linker.c
$(srcdir)/../../move-if-change linker.tmp linker.texi
touch s-linker
-18
View File
@@ -72,21 +72,3 @@
#endif /* TC_CONS_FIX_NEW */
#endif /* BFD_ASSEMBLER */
}
@@ -4111,7 +4129,7 @@ sizeof_uleb128 (value)
return size;
}
-inline int
+int
sizeof_leb128 (value, sign)
valueT value;
int sign;
@@ -4175,7 +4193,7 @@ output_uleb128 (p, value)
return p - orig;
}
-inline int
+int
output_leb128 (p, value, sign)
char *p;
valueT value;
File diff suppressed because it is too large Load Diff
+5 -9
View File
@@ -1,6 +1,6 @@
--- binutils-2.9.1/ld/Makefile.am Fri May 1 08:48:47 1998
+++ binutils-2.9.1/ld/Makefile.am Sun Aug 23 00:00:00 1998
@@ -93,6 +93,8 @@ ALL_EMULATIONS = \
--- binutils-2.9.1/ld/Makefile.am.orig 1998-05-01 08:48:47.000000000 -0700
+++ binutils-2.9.1/ld/Makefile.am 2012-02-14 20:07:02.321812291 -0800
@@ -93,6 +93,8 @@
ea29k.o \
eaixppc.o \
eaixrs6.o \
@@ -9,7 +9,7 @@
ealpha.o \
earcelf.o \
earmaoutb.o \
@@ -159,6 +162,8 @@ ALL_EMULATIONS = \
@@ -159,6 +161,8 @@
enews.o \
ens32knbsd.o \
epc532macha.o \
@@ -18,11 +18,7 @@
eppcmacos.o \
eppcnw.o \
eppcpe.o \
@@ -225,10 +230,22 @@ ldemul-list.h: Makefile
# These all start with e so 'make clean' can find them.
GENSCRIPTS = $(SHELL) $(srcdir)/genscripts.sh ${srcdir} ${libdir} @host@ @target@ @target_alias@ ${EMUL} "@NATIVE_LIB_DIRS@"
@@ -229,6 +233,18 @@
GEN_DEPENDS = $(srcdir)/genscripts.sh $(srcdir)/emultempl/stringify.sed
@TDIRS@
@@ -1,9 +0,0 @@
--- binutils-2.9.1/ld/acconfig.h Fri May 1 08:48:47 1998
+++ binutils-2.9.1/ld/acconfig.h Sun Aug 23 00:00:00 1998
@@ -20,3 +20,6 @@
/* Do we need to use the b modifier when opening binary files? */
#undef USE_BINARY_FOPEN
+
+/* Are we building a cross linker */
+#undef CROSS_LINKER
-12
View File
@@ -1,12 +0,0 @@
--- binutils-2.9.1/ld/config.in Fri May 1 08:48:48 1998
+++ binutils-2.9.1/ld/config.in Sun Aug 23 00:00:00 1998
@@ -24,6 +24,9 @@
/* Do we need to use the b modifier when opening binary files? */
#undef USE_BINARY_FOPEN
+/* Are we building a cross linker */
+#undef CROSS_LINKER
+
/* Define if you have the sbrk function. */
#undef HAVE_SBRK
File diff suppressed because it is too large Load Diff
@@ -1,24 +0,0 @@
--- binutils-2.9.1/ld/configure.host Fri May 1 08:48:48 1998
+++ binutils-2.9.1/ld/configure.host Sun Aug 23 00:00:00 1998
@@ -35,6 +35,10 @@ alpha*-*-*)
NATIVE_LIB_DIRS=/usr/ccs/lib
;;
+i[3456]86-*-beos*)
+ NATIVE_LIB_DIRS=/boot/develop/lib/x86
+ ;;
+
i[3456]86-*-bsd* | i[3456]86-*-freebsd* | i[3456]86-*-netbsd*)
# The new BSD `make' has a bug: it doesn't pass empty arguments in
# shell commands. So we need to make this value non-empty in order
@@ -112,6 +116,10 @@ mips*-sgi-irix4*)
mips*-sgi-irix[56]*)
HOSTING_CRT0=/usr/lib/crt1.o
HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else gcc -print-libgcc-file-name; fi` -lc /usr/lib/crtn.o'
+ ;;
+
+m68*-*-amigaos*)
+ HDEFINES=-mstackextend
;;
m68*-*-linux*aout*)
@@ -1,30 +0,0 @@
--- binutils-2.9.1/ld/configure.in Fri May 1 08:48:48 1998
+++ binutils-2.9.1/ld/configure.in Sun Aug 23 00:00:00 1998
@@ -45,6 +45,17 @@ AC_PROG_YACC
AC_PROG_LEX
AC_DECL_YYTEXT
+# begin-GG-local
+AC_MSG_CHECKING(whether compiling a cross-linker)
+if test "${host}" = "${target}"; then
+ cross_linker=no
+else
+ cross_linker=yes
+ AC_DEFINE(CROSS_LINKER)
+fi
+AC_MSG_RESULT($cross_linker)
+# end-GG-local
+
AM_MAINTAINER_MODE
. ${srcdir}/configure.host
@@ -108,6 +119,9 @@ done
AC_SUBST(EMUL)
AC_SUBST(TDIRS)
+AC_SUBST(LDNAME)
+AC_SUBST(EXTRA_PROGS)
+AC_SUBST(EXTRA_INSTALL)
dnl FIXME: We will build a 64 bit BFD for a 64 bit host or a 64 bit
dnl target, and in those cases we should also build the 64 bit
@@ -1,13 +0,0 @@
--- binutils-2.9.1/ld/genscripts.sh Fri May 1 08:48:48 1998
+++ binutils-2.9.1/ld/genscripts.sh Sun Aug 23 00:00:00 1998
@@ -16,7 +16,9 @@ target=$4
target_alias=$5
DEFAULT_EMULATION=$6
NATIVE_LIB_DIRS=$7
-EMULATION_NAME=$8
+LIB_PATH=$8
+EMULATION_NAME=$9
+shift
tool_lib=`echo ${libdir} | sed -e 's|/lib$||'`/${9-$target_alias}/lib
# Include the emulation-specific parameters:
-96
View File
@@ -1,96 +0,0 @@
--- binutils-2.9.1/ld/ldlang.c Fri May 1 08:48:49 1998
+++ binutils-2.9.1/ld/ldlang.c Sun Aug 23 00:00:00 1998
@@ -745,12 +745,32 @@ section_already_linked (abfd, sec, data)
if ((flags & SEC_LINK_ONCE) == 0)
return;
-
+ pei_get_comdat_info(sec);
name = bfd_get_section_name (abfd, sec);
+ if (sec->pe_comdat_info != NULL)
+ {
+ if (sec->pe_comdat_info && sec->pe_comdat_info->asoc_sec != (int)NULL)
+ {
+ /* .idata$2 & .idata$3 are not marked SEC_LINK_ONCE in MS .lib's
+ assuming that any SEC_LINK_ONCE section that dosen't have a
+ comdat symbol is an associated section and that the
+ section with the symbol has already been processed */
+ for (l = sec_link_once_list; l != NULL; l = l->next)
+ {
+ if ((abfd == l->sec->owner) && (sec->pe_comdat_info->asoc_sec == l->sec->index + 1))
+ return;
+ }
+ sec->output_section = bfd_abs_section_ptr;
+ return;
+ }
+ }
for (l = sec_link_once_list; l != NULL; l = l->next)
{
- if (strcmp (name, bfd_get_section_name (l->sec->owner, l->sec)) == 0)
+ if ((strcmp (name, bfd_get_section_name (l->sec->owner, l->sec)) == 0)
+ && sec->pe_comdat_info != NULL
+ && (strcmp (sec->pe_comdat_info->name_buf, l->sec->pe_comdat_info->name_buf) == 0)
+ && (strcmp (sec->pe_comdat_info->comdat_sym, l->sec->pe_comdat_info->comdat_sym) == 0))
{
/* The section has already been linked. See if we should
issue a warning. */
@@ -790,7 +810,7 @@ section_already_linked (abfd, sec, data)
}
}
- /* This is the first section with this name. Record it. */
+ /* This is the first section with this name and symbol. Record it. */
l = (struct sec_link_once *) xmalloc (sizeof *l);
l->sec = sec;
@@ -1442,6 +1462,27 @@ ldlang_add_undef (name)
new->name = buystring (name);
}
+/* exchange an older undefined entry point for a newer one
+ this will avoid dragging in the extra .o files
+ when the entry point is in a lib file */
+void
+ldlang_switch_undef_entry (name)
+ CONST char *CONST name;
+{
+ ldlang_undef_chain_list_type *new = ldlang_undef_chain_list_head;
+ while (new != (ldlang_undef_chain_list_type *) NULL)
+ {
+ if (strcmp (new->name, entry_symbol) == 0)
+ {
+ free(new->name);
+ new->name = buystring (name);
+ }
+ new = new->next;
+ }
+
+}
+
+
/* Run through the list of undefineds created above and place them
into the linker hash table as undefined symbols belonging to the
script file.
@@ -3389,17 +3430,13 @@ lang_add_entry (name, cmdline)
|| cmdline
|| ! entry_from_cmdline)
{
+ if (entry_symbol != NULL)
+ ldlang_switch_undef_entry (name);
+ else
+ ldlang_add_undef(name);
entry_symbol = name;
entry_from_cmdline = cmdline;
}
-#if 0
- /* don't do this yet. It seems to work (the executables run), but the
- image created is very different from what I was getting before indicating
- that something else is being pulled in. When everything else is working,
- then try to put this back in to see if it will do the right thing for
- other more complicated applications */
- ldlang_add_undef (name);
-#endif
}
void
+3 -3
View File
@@ -1,6 +1,6 @@
--- binutils-2.9.1/ld/ldlang.h Fri May 1 08:48:49 1998
+++ binutils-2.9.1/ld/ldlang.h Sun Aug 23 00:00:00 1998
@@ -256,6 +256,8 @@ typedef struct lang_input_statement_stru
--- binutils-2.9.1/ld/ldlang.h 1998-05-01 08:48:49.000000000 -0700
+++ binutils-2.9.1/ld/ldlang.h 2011-05-08 20:28:36.636307945 -0700
@@ -256,6 +256,8 @@
/* unsigned int globals_in_this_file;*/
const char *target;
boolean real;
-14
View File
@@ -1,14 +0,0 @@
--- binutils-2.9.1/ld/ldmain.c Fri May 1 08:48:49 1998
+++ binutils-2.9.1/ld/ldmain.c Sun Aug 23 00:00:00 1998
@@ -147,8 +147,10 @@ remove_output ()
{
if (output_filename)
{
- if (output_bfd && output_bfd->iostream)
+ if (output_bfd && output_bfd->iostream) {
fclose((FILE *)(output_bfd->iostream));
+ output_bfd->iostream = NULL;
+ }
if (delete_output_file_on_failure)
unlink (output_filename);
}