mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-27 14:00:30 +00:00
This patch adds a default manifest in to the final links performed by the Cygwin and MinGW targets.
The manifest is necessary in order for the linked binaries to be executed in a Windows 8 environment. The manifest is added using a linker script so that this feature will be compiler-neutral. The resource merging code in the linker means that if an application provides its own manifest then the default manifest will be ignored. * configure.in (all_emul_extra_binaries): New variable. Populated by invoking configure.tgt. (EMUL_EXTRA_BINARIES): New substitution. * configure: Regenerate. * configure.tgt (target_extra_binaries): New variable. Set to default-manifest.o for Cygwin and MinGW targets. * Makefile.am (EMUL_EXTRA_BINARIES): New variable. Initialised by the configure script. (ALL_EMUL_EXTRA_BINARIES): New variable. (default-manifest.o): New rule to build the default manifest. (ld_new_DEPENDENCIES): Add EMUL_EXTRA_BINARIES. (install-data-local): Add EMUL_EXTRA_BINARIES. * Makefile.in: Regenerate. * ld.texinfo: Document default manifest support. * emulparams/i386pe.sh (DEFAULT_MANIFEST): Define. * emulparams/i386pep.sh (DEFAULT_MANIFEST): Define. * emultempl/default-manifest.rc: New file. * scripttempl/pe.sc (R_RSRC): Include DEFAULT_MANIFEST, if defined. * scripttempl/pep.sc (R_RSRC): Likewise. * ld-pe/longsecn-1.d: Allow for extra sections. * ld-pe/longsecn-2.d: Likewise. * ld-pe/longsecn.d: Likewise. * ld-pe/secrel.d: Likewise.
This commit is contained in:
parent
db434ba03e
commit
5063daf735
22
ld/ChangeLog
22
ld/ChangeLog
@ -8,6 +8,28 @@
|
||||
(PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS): Exclude
|
||||
-secure-plt, -bss-plt and -sdata-got when vxworks.
|
||||
|
||||
2014-02-27 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* configure.in (all_emul_extra_binaries): New variable. Populated
|
||||
by invoking configure.tgt.
|
||||
(EMUL_EXTRA_BINARIES): New substitution.
|
||||
* configure: Regenerate.
|
||||
* configure.tgt (target_extra_binaries): New variable. Set to
|
||||
default-manifest.o for Cygwin and MinGW targets.
|
||||
* Makefile.am (EMUL_EXTRA_BINARIES): New variable. Initialised
|
||||
by the configure script.
|
||||
(ALL_EMUL_EXTRA_BINARIES): New variable.
|
||||
(default-manifest.o): New rule to build the default manifest.
|
||||
(ld_new_DEPENDENCIES): Add EMUL_EXTRA_BINARIES.
|
||||
(install-data-local): Add EMUL_EXTRA_BINARIES.
|
||||
* Makefile.in: Regenerate.
|
||||
* ld.texinfo: Document default manifest support.
|
||||
* emulparams/i386pe.sh (DEFAULT_MANIFEST): Define.
|
||||
* emulparams/i386pep.sh (DEFAULT_MANIFEST): Define.
|
||||
* emultempl/default-manifest.rc: New file.
|
||||
* scripttempl/pe.sc (R_RSRC): Include DEFAULT_MANIFEST, if defined.
|
||||
* scripttempl/pep.sc (R_RSRC): Likewise.
|
||||
|
||||
2014-02-26 Dan Mick <dan.mick@inktank.com>
|
||||
|
||||
PR ld/16569
|
||||
|
@ -59,6 +59,8 @@ scriptdir = $(tooldir)/lib
|
||||
EMUL = @EMUL@
|
||||
EMULATION_OFILES = @EMULATION_OFILES@
|
||||
EMUL_EXTRA_OFILES = @EMUL_EXTRA_OFILES@
|
||||
EMUL_EXTRA_BINARIES = @EMUL_EXTRA_BINARIES@
|
||||
|
||||
|
||||
# Search path to override the default search path for -lfoo libraries.
|
||||
# If LIB_PATH is empty, the ones in the script (if any) are left alone.
|
||||
@ -489,6 +491,9 @@ ALL_EMUL_EXTRA_OFILES = \
|
||||
pe-dll.@OBJEXT@ \
|
||||
pep-dll.@OBJEXT@
|
||||
|
||||
ALL_EMUL_EXTRA_BINARIES = \
|
||||
default-manifest.@OBJEXT@
|
||||
|
||||
CFILES = ldctor.c ldemul.c ldexp.c ldfile.c ldlang.c \
|
||||
ldmain.c ldmisc.c ldver.c ldwrite.c lexsup.c \
|
||||
mri.c ldcref.c pe-dll.c pep-dll.c ldlex-wrapper.c \
|
||||
@ -1921,6 +1926,10 @@ eshlelf64_nbsd.c: $(srcdir)/emulparams/shlelf64_nbsd.sh \
|
||||
$(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
||||
${GENSCRIPTS} shlelf64_nbsd "$(tdir_shlelf64_nbsd)"
|
||||
|
||||
# Rule to create a manifest file for Cygwin and Mingw.
|
||||
default-manifest.o: $(srcdir)/emultempl/default-manifest.rc
|
||||
../binutils/windres -o $@ $<
|
||||
|
||||
# We need this for automake to use YLWRAP.
|
||||
EXTRA_ld_new_SOURCES = deffilep.y ldlex.l
|
||||
# Allow dependency tracking to work for these files, too.
|
||||
@ -1928,7 +1937,8 @@ EXTRA_ld_new_SOURCES += pep-dll.c pe-dll.c
|
||||
|
||||
ld_new_SOURCES = ldgram.y ldlex-wrapper.c lexsup.c ldlang.c mri.c ldctor.c ldmain.c \
|
||||
ldwrite.c ldexp.c ldemul.c ldver.c ldmisc.c ldfile.c ldcref.c $(PLUGIN_C)
|
||||
ld_new_DEPENDENCIES = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) $(BFDLIB) $(LIBIBERTY) $(LIBINTL_DEP)
|
||||
ld_new_DEPENDENCIES = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) $(EMUL_EXTRA_BINARIES) \
|
||||
$(BFDLIB) $(LIBIBERTY) $(LIBINTL_DEP)
|
||||
ld_new_LDADD = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) $(BFDLIB) $(LIBIBERTY) $(LIBINTL)
|
||||
|
||||
# Dependency tracking for the generated emulation files.
|
||||
@ -2074,9 +2084,9 @@ install-exec-local: ld-new$(EXEEXT) install-binPROGRAMS
|
||||
fi; \
|
||||
fi
|
||||
|
||||
install-data-local:
|
||||
install-data-local: $(EMUL_EXTRA_BINARIES)
|
||||
$(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
|
||||
for f in ldscripts/*; do \
|
||||
for f in ldscripts/* $(EMUL_EXTRA_BINARIES); do \
|
||||
$(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
|
||||
done
|
||||
|
||||
|
@ -219,6 +219,7 @@ EGREP = @EGREP@
|
||||
EMUL = @EMUL@
|
||||
EMULATION_LIBPATH = @EMULATION_LIBPATH@
|
||||
EMULATION_OFILES = @EMULATION_OFILES@
|
||||
EMUL_EXTRA_BINARIES = @EMUL_EXTRA_BINARIES@
|
||||
EMUL_EXTRA_OFILES = @EMUL_EXTRA_OFILES@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
@ -388,6 +389,7 @@ AM_CFLAGS = $(WARN_CFLAGS)
|
||||
# We can't put the scripts in $(datadir) because the SEARCH_DIR
|
||||
# directives need to be different for native and cross linkers.
|
||||
scriptdir = $(tooldir)/lib
|
||||
EMUL_DEPS =
|
||||
BASEDIR = $(srcdir)/..
|
||||
BFDDIR = $(BASEDIR)/bfd
|
||||
INCDIR = $(BASEDIR)/include
|
||||
@ -795,6 +797,9 @@ ALL_EMUL_EXTRA_OFILES = \
|
||||
pe-dll.@OBJEXT@ \
|
||||
pep-dll.@OBJEXT@
|
||||
|
||||
ALL_EMUL_EXTRA_BINARIES = \
|
||||
default-manifest.@OBJEXT@
|
||||
|
||||
CFILES = ldctor.c ldemul.c ldexp.c ldfile.c ldlang.c \
|
||||
ldmain.c ldmisc.c ldver.c ldwrite.c lexsup.c \
|
||||
mri.c ldcref.c pe-dll.c pep-dll.c ldlex-wrapper.c \
|
||||
@ -838,7 +843,9 @@ EXTRA_ld_new_SOURCES = deffilep.y ldlex.l pep-dll.c pe-dll.c \
|
||||
ld_new_SOURCES = ldgram.y ldlex-wrapper.c lexsup.c ldlang.c mri.c ldctor.c ldmain.c \
|
||||
ldwrite.c ldexp.c ldemul.c ldver.c ldmisc.c ldfile.c ldcref.c $(PLUGIN_C)
|
||||
|
||||
ld_new_DEPENDENCIES = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) $(BFDLIB) $(LIBIBERTY) $(LIBINTL_DEP)
|
||||
ld_new_DEPENDENCIES = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) $(EMUL_EXTRA_BINARIES) \
|
||||
$(BFDLIB) $(LIBIBERTY) $(LIBINTL_DEP)
|
||||
|
||||
ld_new_LDADD = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) $(BFDLIB) $(LIBIBERTY) $(LIBINTL)
|
||||
|
||||
# A test program for C++ constructors and destructors.
|
||||
@ -3353,6 +3360,10 @@ eshlelf64_nbsd.c: $(srcdir)/emulparams/shlelf64_nbsd.sh \
|
||||
$(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
||||
${GENSCRIPTS} shlelf64_nbsd "$(tdir_shlelf64_nbsd)"
|
||||
|
||||
# Rule to create a manifest file for Cygwin and Mingw.
|
||||
default-manifest.o: $(srcdir)/emultempl/default-manifest.rc
|
||||
../binutils/windres -o $@ $<
|
||||
|
||||
check-DEJAGNU: site.exp
|
||||
srcroot=`cd $(srcdir) && pwd`; export srcroot; \
|
||||
r=`pwd`; export r; \
|
||||
@ -3438,9 +3449,9 @@ install-exec-local: ld-new$(EXEEXT) install-binPROGRAMS
|
||||
fi; \
|
||||
fi
|
||||
|
||||
install-data-local:
|
||||
install-data-local: $(EMUL_EXTRA_BINARIES)
|
||||
$(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
|
||||
for f in ldscripts/*; do \
|
||||
for f in ldscripts/* $(EMUL_EXTRA_BINARIES); do \
|
||||
$(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
|
||||
done
|
||||
diststuff: info $(EXTRA_DIST)
|
||||
|
18
ld/configure
vendored
18
ld/configure
vendored
@ -605,6 +605,7 @@ LIBOBJS
|
||||
TESTBFDLIB
|
||||
EMULATION_LIBPATH
|
||||
LIB_PATH
|
||||
EMUL_EXTRA_BINARIES
|
||||
EMUL_EXTRA_OFILES
|
||||
EMULATION_OFILES
|
||||
EMUL
|
||||
@ -12193,7 +12194,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 12196 "configure"
|
||||
#line 12197 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@ -12299,7 +12300,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 12302 "configure"
|
||||
#line 12303 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@ -16837,6 +16838,7 @@ all_targets=
|
||||
EMUL=
|
||||
all_emuls=
|
||||
all_emul_extras=
|
||||
all_emul_extra_binaries=
|
||||
all_libpath=
|
||||
|
||||
rm -f tdirs
|
||||
@ -16944,6 +16946,15 @@ do
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
for i in $targ_extra_binaries; do
|
||||
case " $all_emul_extra_binaries " in
|
||||
*" ${i} "*) ;;
|
||||
*)
|
||||
all_emul_extra_binaries="$all_emul_extra_binaries ${i}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
@ -16959,14 +16970,17 @@ if test x${all_targets} = xtrue; then
|
||||
EMULATION_OFILES='$(ALL_EMULATIONS)'
|
||||
fi
|
||||
EMUL_EXTRA_OFILES='$(ALL_EMUL_EXTRA_OFILES)'
|
||||
EMUL_EXTRA_BINARIES='$(ALL_EMUL_EXTRA_BINARIES)'
|
||||
else
|
||||
EMULATION_OFILES=$all_emuls
|
||||
EMUL_EXTRA_OFILES=$all_emul_extras
|
||||
EMUL_EXTRA_BINARIES=$all_emul_extra_binaries
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
EMULATION_LIBPATH=$all_libpath
|
||||
|
||||
|
||||
|
@ -275,6 +275,7 @@ all_targets=
|
||||
EMUL=
|
||||
all_emuls=
|
||||
all_emul_extras=
|
||||
all_emul_extra_binaries=
|
||||
all_libpath=
|
||||
|
||||
dnl We need to get an arbitrary number of tdir definitions into
|
||||
@ -353,6 +354,15 @@ do
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
for i in $targ_extra_binaries; do
|
||||
case " $all_emul_extra_binaries " in
|
||||
*" ${i} "*) ;;
|
||||
*)
|
||||
all_emul_extra_binaries="$all_emul_extra_binaries ${i}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
@ -368,12 +378,15 @@ if test x${all_targets} = xtrue; then
|
||||
EMULATION_OFILES='$(ALL_EMULATIONS)'
|
||||
fi
|
||||
EMUL_EXTRA_OFILES='$(ALL_EMUL_EXTRA_OFILES)'
|
||||
EMUL_EXTRA_BINARIES='$(ALL_EMUL_EXTRA_BINARIES)'
|
||||
else
|
||||
EMULATION_OFILES=$all_emuls
|
||||
EMUL_EXTRA_OFILES=$all_emul_extras
|
||||
EMUL_EXTRA_BINARIES=$all_emul_extra_binaries
|
||||
fi
|
||||
AC_SUBST(EMULATION_OFILES)
|
||||
AC_SUBST(EMUL_EXTRA_OFILES)
|
||||
AC_SUBST(EMUL_EXTRA_BINARIES)
|
||||
AC_SUBST(LIB_PATH)
|
||||
|
||||
EMULATION_LIBPATH=$all_libpath
|
||||
|
@ -26,7 +26,8 @@
|
||||
# targ_emul name of linker emulation to use
|
||||
# targ_extra_emuls additional linker emulations to provide
|
||||
# targ_extra_libpath additional linker emulations using LIB_PATH
|
||||
# targ_extra_ofiles additional objects needed by the emulation
|
||||
# targ_extra_ofiles additional host-compiled objects needed by the emulation
|
||||
# targ_extra_binaries additional target-built binaries needed by the emulation
|
||||
# targ64_extra_emuls additional linker emulations to provide if
|
||||
# --enable-64-bit-bfd is given or if host is 64 bit.
|
||||
# targ64_extra_libpath additional linker emulations using LIB_PATH if
|
||||
@ -309,23 +310,30 @@ i[3-7]86-*-gnu*) targ_emul=elf_i386 ;;
|
||||
i[3-7]86-*-msdos*) targ_emul=i386msdos; targ_extra_emuls=i386aout ;;
|
||||
i[3-7]86-*-moss*) targ_emul=i386moss; targ_extra_emuls=i386msdos ;;
|
||||
i[3-7]86-*-winnt*) targ_emul=i386pe ;
|
||||
targ_extra_binaries="default-manifest.o" ;
|
||||
targ_extra_ofiles="deffilep.o pe-dll.o" ;;
|
||||
i[3-7]86-*-pe) targ_emul=i386pe ;
|
||||
targ_extra_binaries="default-manifest.o" ;
|
||||
targ_extra_ofiles="deffilep.o pe-dll.o" ;;
|
||||
i[3-7]86-*-cygwin*) targ_emul=i386pe ;
|
||||
targ_extra_ofiles="deffilep.o pe-dll.o"
|
||||
targ_extra_binaries="default-manifest.o" ;
|
||||
targ_extra_ofiles="deffilep.o pe-dll.o" ;
|
||||
test "$targ" != "$host" && LIB_PATH='${tooldir}/lib/w32api' ;;
|
||||
i[3-7]86-*-mingw32*) targ_emul=i386pe ;
|
||||
targ_extra_binaries="default-manifest.o" ;
|
||||
targ_extra_ofiles="deffilep.o pe-dll.o" ;;
|
||||
x86_64-*-pe | x86_64-*-pep) targ_emul=i386pep ;
|
||||
targ_extra_emuls=i386pe ;
|
||||
targ_extra_binaries="default-manifest.o" ;
|
||||
targ_extra_ofiles="deffilep.o pep-dll.o pe-dll.o" ;;
|
||||
x86_64-*-cygwin) targ_emul=i386pep ;
|
||||
targ_extra_emuls=i386pe
|
||||
targ_extra_binaries="default-manifest.o" ;
|
||||
targ_extra_ofiles="deffilep.o pep-dll.o pe-dll.o"
|
||||
test "$targ" != "$host" && LIB_PATH='${tooldir}/lib/w32api' ;;
|
||||
x86_64-*-mingw*) targ_emul=i386pep ;
|
||||
targ_extra_emuls=i386pe
|
||||
targ_extra_binaries="default-manifest.o" ;
|
||||
targ_extra_ofiles="deffilep.o pep-dll.o pe-dll.o" ;;
|
||||
i[3-7]86-*-interix*) targ_emul=i386pe_posix;
|
||||
targ_extra_ofiles="deffilep.o pe-dll.o" ;;
|
||||
|
@ -7,3 +7,4 @@ SUBSYSTEM=PE_DEF_SUBSYSTEM
|
||||
INITIAL_SYMBOL_CHAR=\"_\"
|
||||
TARGET_PAGE_SIZE=0x1000
|
||||
GENERATE_AUTO_IMPORT_SCRIPT=1
|
||||
DEFAULT_MANIFEST="default-manifest.o"
|
||||
|
@ -7,3 +7,4 @@ SUBSYSTEM=PE_DEF_SUBSYSTEM
|
||||
INITIAL_SYMBOL_CHAR=\"_\"
|
||||
TARGET_PAGE_SIZE=0x1000
|
||||
GENERATE_AUTO_IMPORT_SCRIPT=1
|
||||
DEFAULT_MANIFEST="default-manifest.o"
|
||||
|
28
ld/emultempl/default-manifest.rc
Normal file
28
ld/emultempl/default-manifest.rc
Normal file
@ -0,0 +1,28 @@
|
||||
LANGUAGE 0, 0
|
||||
|
||||
/* CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST MOVEABLE PURE DISCARDABLE */
|
||||
1 9 MOVEABLE PURE DISCARDABLE
|
||||
BEGIN
|
||||
"<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>\n"
|
||||
"<assembly xmlns=""urn:schemas-microsoft-com:asm.v1"" manifestVersion=""1.0"">\n"
|
||||
" <trustInfo xmlns=""urn:schemas-microsoft-com:asm.v3"">\n"
|
||||
" <security>\n"
|
||||
" <requestedPrivileges>\n"
|
||||
" <requestedExecutionLevel level=""asInvoker""/>\n"
|
||||
" </requestedPrivileges>\n"
|
||||
" </security>\n"
|
||||
" </trustInfo>\n"
|
||||
" <compatibility xmlns=""urn:schemas-microsoft-com:compatibility.v1"">\n"
|
||||
" <application>\n"
|
||||
" <!--The ID below indicates application support for Windows Vista -->\n"
|
||||
" <supportedOS Id=""{e2011457-1546-43c5-a5fe-008deee3d3f0}""/>\n"
|
||||
" <!--The ID below indicates application support for Windows 7 -->\n"
|
||||
" <supportedOS Id=""{35138b9a-5d96-4fbd-8e2d-a2440225f93a}""/>\n"
|
||||
" <!--The ID below indicates application support for Windows 8 -->\n"
|
||||
" <supportedOS Id=""{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}""/>\n"
|
||||
" <!--The ID below indicates application support for Windows 8.1 -->\n"
|
||||
" <supportedOS Id=""{1f676c76-80e1-4239-95bb-83d0f6d0da78}""/> \n"
|
||||
" </application>\n"
|
||||
" </compatibility>\n"
|
||||
"</assembly>\n"
|
||||
END
|
@ -7585,6 +7585,15 @@ by @command{ld} and respected when laying out the common symbols. Native
|
||||
tools will be able to process object files employing this GNU extension,
|
||||
but will fail to respect the alignment instructions, and may issue noisy
|
||||
warnings about unknown linker directives.
|
||||
|
||||
@cindex default manifest
|
||||
@item default manifest
|
||||
The linker will automatically add a default manifest to the .rsrc
|
||||
section of any fully linked cygwin or MingGW binary. This manifest is
|
||||
necessary in order to be able to execute the binary under Windows 8
|
||||
(or later). An application can supply its own manifest, and if it
|
||||
does so then this manifest will be used in preference to the default
|
||||
one.
|
||||
@end table
|
||||
|
||||
@ifclear GENERIC
|
||||
|
@ -39,12 +39,25 @@ if test "${RELOCATING}"; then
|
||||
R_CRT_XP='*(SORT(.CRT$XP*)) /* Pre-termination */'
|
||||
R_CRT_XT='*(SORT(.CRT$XT*)) /* Termination */'
|
||||
R_TLS='
|
||||
*(.tls$AAA)
|
||||
*(.tls$AAA)
|
||||
*(.tls)
|
||||
*(.tls$)
|
||||
*(SORT(.tls$*))
|
||||
*(.tls$ZZZ)'
|
||||
R_RSRC='*(SORT(.rsrc$*))'
|
||||
if test -z "$DEFAULT_MANIFEST"; then
|
||||
R_RSRC='
|
||||
*(.rsrc)
|
||||
*(SORT(.rsrc$*))'
|
||||
else
|
||||
R_RSRC="
|
||||
/* The default manifest contains information necessary for
|
||||
binaries to run under Windows 8 (or later). It is included as
|
||||
the last resource file so that if the application has provided
|
||||
its own manifest then that one will take precedence. */
|
||||
*(EXCLUDE_FILE ($DEFAULT_MANIFEST) .rsrc)
|
||||
*(SORT(.rsrc*))
|
||||
KEEP ($DEFAULT_MANIFEST(.rsrc))"
|
||||
fi
|
||||
else
|
||||
R_TEXT=
|
||||
R_DATA=
|
||||
@ -53,7 +66,7 @@ else
|
||||
R_IDATA5=
|
||||
R_IDATA67=
|
||||
R_CRT=
|
||||
R_RSRC=
|
||||
R_RSRC='*(.rsrc)'
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
@ -69,7 +82,7 @@ SECTIONS
|
||||
${RELOCATING+ lower than the target page size. */}
|
||||
${RELOCATING+. = SIZEOF_HEADERS;}
|
||||
${RELOCATING+. = ALIGN(__section_alignment__);}
|
||||
.text ${RELOCATING+ __image_base__ + ( __section_alignment__ < ${TARGET_PAGE_SIZE} ? . : __section_alignment__ )} :
|
||||
.text ${RELOCATING+ __image_base__ + ( __section_alignment__ < ${TARGET_PAGE_SIZE} ? . : __section_alignment__ )} :
|
||||
{
|
||||
${RELOCATING+ *(.init)}
|
||||
*(.text)
|
||||
@ -78,9 +91,9 @@ SECTIONS
|
||||
${RELOCATING+ *(.gnu.linkonce.t.*)}
|
||||
*(.glue_7t)
|
||||
*(.glue_7)
|
||||
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
|
||||
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
|
||||
LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*)); LONG (0); }
|
||||
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
||||
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
||||
LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*)); LONG (0); }
|
||||
${RELOCATING+ *(.fini)}
|
||||
/* ??? Why is .gcc_exc here? */
|
||||
@ -96,7 +109,7 @@ SECTIONS
|
||||
breaks building the cygwin32 dll. Instead, we name the section
|
||||
".data_cygwin_nocopy" and explicitly include it after __data_end__. */
|
||||
|
||||
.data ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
.data ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
{
|
||||
${RELOCATING+__data_start__ = . ;}
|
||||
*(.data)
|
||||
@ -202,13 +215,12 @@ SECTIONS
|
||||
}
|
||||
|
||||
.rsrc ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
{
|
||||
*(.rsrc)
|
||||
{
|
||||
${R_RSRC}
|
||||
}
|
||||
|
||||
.reloc ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
{
|
||||
{
|
||||
*(.reloc)
|
||||
}
|
||||
|
||||
@ -226,7 +238,7 @@ SECTIONS
|
||||
Symbols in the DWARF debugging sections are relative to the beginning
|
||||
of the section. Unlike other targets that fake this by putting the
|
||||
section VMA at 0, the PE format will not allow it. */
|
||||
|
||||
|
||||
/* DWARF 1.1 and DWARF 2. */
|
||||
.debug_aranges ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
|
||||
{
|
||||
|
@ -39,12 +39,25 @@ if test "${RELOCATING}"; then
|
||||
R_CRT_XP='*(SORT(.CRT$XP*)) /* Pre-termination */'
|
||||
R_CRT_XT='*(SORT(.CRT$XT*)) /* Termination */'
|
||||
R_TLS='
|
||||
*(.tls$AAA)
|
||||
*(.tls$AAA)
|
||||
*(.tls)
|
||||
*(.tls$)
|
||||
*(SORT(.tls$*))
|
||||
*(.tls$ZZZ)'
|
||||
R_RSRC='*(SORT(.rsrc$*))'
|
||||
if test -z "$DEFAULT_MANIFEST"; then
|
||||
R_RSRC='
|
||||
*(.rsrc)
|
||||
*(SORT(.rsrc$*))'
|
||||
else
|
||||
R_RSRC="
|
||||
/* The default manifest contains information necessary for
|
||||
binaries to run under Windows 8 (or later). It is included as
|
||||
the last resource file so that if the application has provided
|
||||
its own manifest then that one will take precedence. */
|
||||
*(EXCLUDE_FILE ($DEFAULT_MANIFEST) .rsrc)
|
||||
*(SORT(.rsrc*))
|
||||
KEEP ($DEFAULT_MANIFEST(.rsrc))"
|
||||
fi
|
||||
else
|
||||
R_TEXT=
|
||||
R_DATA=
|
||||
@ -53,7 +66,7 @@ else
|
||||
R_IDATA5=
|
||||
R_IDATA67=
|
||||
R_CRT=
|
||||
R_RSRC=
|
||||
R_RSRC='*(.rsrc)'
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
@ -69,7 +82,7 @@ SECTIONS
|
||||
${RELOCATING+ lower than the target page size. */}
|
||||
${RELOCATING+. = SIZEOF_HEADERS;}
|
||||
${RELOCATING+. = ALIGN(__section_alignment__);}
|
||||
.text ${RELOCATING+ __image_base__ + ( __section_alignment__ < ${TARGET_PAGE_SIZE} ? . : __section_alignment__ )} :
|
||||
.text ${RELOCATING+ __image_base__ + ( __section_alignment__ < ${TARGET_PAGE_SIZE} ? . : __section_alignment__ )} :
|
||||
{
|
||||
${RELOCATING+ *(.init)}
|
||||
*(.text)
|
||||
@ -79,9 +92,9 @@ SECTIONS
|
||||
*(.glue_7t)
|
||||
*(.glue_7)
|
||||
${CONSTRUCTING+. = ALIGN(8);}
|
||||
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
|
||||
${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ;
|
||||
LONG (-1); LONG (-1);*(.ctors); *(.ctor); *(SORT(.ctors.*)); LONG (0); LONG (0); }
|
||||
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
||||
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
||||
LONG (-1); LONG (-1); *(.dtors); *(.dtor); *(SORT(.dtors.*)); LONG (0); LONG (0); }
|
||||
${RELOCATING+ *(.fini)}
|
||||
/* ??? Why is .gcc_exc here? */
|
||||
@ -96,7 +109,7 @@ SECTIONS
|
||||
breaks building the cygwin32 dll. Instead, we name the section
|
||||
".data_cygwin_nocopy" and explicitly include it after __data_end__. */
|
||||
|
||||
.data ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
.data ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
{
|
||||
${RELOCATING+__data_start__ = . ;}
|
||||
*(.data)
|
||||
@ -207,13 +220,12 @@ SECTIONS
|
||||
}
|
||||
|
||||
.rsrc ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
{
|
||||
*(.rsrc)
|
||||
{
|
||||
${R_RSRC}
|
||||
}
|
||||
|
||||
.reloc ${RELOCATING+BLOCK(__section_alignment__)} :
|
||||
{
|
||||
{
|
||||
*(.reloc)
|
||||
}
|
||||
|
||||
@ -231,7 +243,7 @@ SECTIONS
|
||||
Symbols in the DWARF debugging sections are relative to the beginning
|
||||
of the section. Unlike other targets that fake this by putting the
|
||||
section VMA at 0, the PE format will not allow it. */
|
||||
|
||||
|
||||
/* DWARF 1.1 and DWARF 2. */
|
||||
.debug_aranges ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} :
|
||||
{
|
||||
|
@ -1,3 +1,10 @@
|
||||
2014-02-27 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* ld-pe/longsecn-1.d: Allow for extra sections.
|
||||
* ld-pe/longsecn-2.d: Likewise.
|
||||
* ld-pe/longsecn.d: Likewise.
|
||||
* ld-pe/secrel.d: Likewise.
|
||||
|
||||
2014-02-21 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* ld-bootstrap/bootstrap.exp: Add ppc476 workaround test.
|
||||
|
@ -19,4 +19,4 @@ Idx Name Size VMA +LMA +File off Algn
|
||||
CONTENTS, ALLOC, LOAD, DATA
|
||||
5 \.idata [0-9a-fA-F]+ [0-9a-fA-F]+ [0-9a-fA-F]+ [0-9a-fA-F]+ 2\*\*[0-9]
|
||||
CONTENTS, ALLOC, LOAD, DATA
|
||||
|
||||
#...
|
||||
|
@ -19,3 +19,4 @@ Idx Name Size VMA +LMA +File off Algn
|
||||
CONTENTS, ALLOC, LOAD, DATA
|
||||
5 \.idata [0-9a-fA-F]+ [0-9a-fA-F]+ [0-9a-fA-F]+ [0-9a-fA-F]+ 2\*\*[0-9]
|
||||
CONTENTS, ALLOC, LOAD, DATA
|
||||
#...
|
||||
|
@ -19,4 +19,4 @@ Idx Name Size VMA +LMA +File off Algn
|
||||
CONTENTS, ALLOC, LOAD, DATA
|
||||
5 \.idata [0-9a-fA-F]+ [0-9a-fA-F]+ [0-9a-fA-F]+ [0-9a-fA-F]+ 2\*\*[0-9]
|
||||
CONTENTS, ALLOC, LOAD, DATA
|
||||
|
||||
#...
|
||||
|
@ -25,3 +25,4 @@ Contents of section \.rdata:
|
||||
Contents of section \.idata:
|
||||
.*4000 00000000 00000000 00000000 00000000 ................
|
||||
.*4010 00000000 ....
|
||||
#...
|
||||
|
Loading…
Reference in New Issue
Block a user