diff options
author | Alexey Neyman <stilor@att.net> | 2017-03-03 16:54:14 -0800 |
---|---|---|
committer | Alexey Neyman <stilor@att.net> | 2017-03-03 16:54:14 -0800 |
commit | 6d5ec0c35b275b74f97cb01f8fa93b4630ed39c2 (patch) | |
tree | 16417822d11dbff65934a0446b9cfca74e2d33f7 | |
parent | 2f24d5cd7509999998f788d28f8fd21e41bb68c1 (diff) | |
download | crosstool-ng-6d5ec0c35b275b74f97cb01f8fa93b4630ed39c2.tar.gz crosstool-ng-6d5ec0c35b275b74f97cb01f8fa93b4630ed39c2.tar.bz2 crosstool-ng-6d5ec0c35b275b74f97cb01f8fa93b4630ed39c2.zip |
Pick up new revision in elf2flt
... and updated cygwin patch.
Signed-off-by: Alexey Neyman <stilor@att.net>
4 files changed, 112 insertions, 248 deletions
diff --git a/config/binutils/binutils.in.2 b/config/binutils/binutils.in.2 index 227f3d81..47ae94c5 100644 --- a/config/binutils/binutils.in.2 +++ b/config/binutils/binutils.in.2 @@ -35,7 +35,7 @@ if ELF2FLT_GIT config ELF2FLT_GIT_CSET string prompt "git cset" - default "4820f0dbb77cd6564d5fa0817218fe2a1fb99f32" + default "a8bc69b882a55b1f1e437b50e33d3db8414eb68e" help Enter the git changeset to use. diff --git a/patches/elf2flt/4820f0dbb77cd6564d5fa0817218fe2a1fb99f32/100-filter-includes.patch b/patches/elf2flt/4820f0dbb77cd6564d5fa0817218fe2a1fb99f32/100-filter-includes.patch deleted file mode 100644 index 204aac00..00000000 --- a/patches/elf2flt/4820f0dbb77cd6564d5fa0817218fe2a1fb99f32/100-filter-includes.patch +++ /dev/null @@ -1,190 +0,0 @@ -From 6ae8f1cc9abd2c25b3376a18f33fee00d9e771cf Mon Sep 17 00:00:00 2001 -From: Alexey Neyman <stilor@att.net> -Date: Mon, 27 Feb 2017 01:20:10 -0800 -Subject: [PATCH 1/2] When looking for binutils/BFD headers, create a local - include dir - -... and filter only those headers that elf2flt binaries are going -to use, to minimize the chance of clashes with system headers. - -Signed-off-by: Alexey Neyman <stilor@att.net> ---- - Makefile.in | 13 ++++++-- - configure | 4 +-- - configure.ac | 4 +-- - mk-local-include.sh | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 103 insertions(+), 7 deletions(-) - create mode 100755 mk-local-include.sh - -diff --git a/Makefile.in b/Makefile.in -index a6feea6..1e34bda 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -14,7 +14,9 @@ CPU = @target_cpu@ - TARGET = @target_alias@ - SYMBOL_PREFIX = @SYMBOL_PREFIX@ - CFLAGS = @CFLAGS@ --INCLUDES = -I$(srcdir) @bfd_include_dir@ @binutils_include_dir@ @zlib_include_dir@ -+INCLUDES = -I$(srcdir) -Ilocal-include @zlib_include_dir@ -+BFD_INCLUDE_DIR = @bfd_include_dir@ -+BINUTILS_INCLUDE_DIR = @binutils_include_dir@ - CPPFLAGS = @CPPFLAGS@ $(DEFS) $(INCLUDES) - LDFLAGS = @LDFLAGS@ - LDLIBS = @LIBS@ -@@ -101,7 +103,7 @@ check-flthdr: - check: check-flthdr - - clean: -- -rm -f $(PROGS) *.$(OBJEXT) .deps -+ -rm -f $(PROGS) *.$(OBJEXT) .deps local-include - - distclean: clean - -rm -f Makefile config.log config.status config.cache ld-elf2flt -@@ -121,5 +123,10 @@ install: - $(INSTALL) -m 644 $(SRC_LDFILE) $(DESTDIR)$(target_libdir)/$(LDFILE) - - sinclude .deps --.deps: -+.deps: local-include/.stamp - $(CC) -MM $(CPPFLAGS) $(srcdir)/*.c > .deps -+ -+local-include/.stamp: $(srcdir)/mk-local-include.sh -+ bash $(srcdir)/mk-local-include.sh local-include '$(CC)' \ -+ '$(BFD_INCLUDE_DIR)' '$(BINUTILS_INCLUDE_DIR)' $(DEFS) -+ touch $@ -diff --git a/configure b/configure -index 3a4e8d6..af64990 100755 ---- a/configure -+++ b/configure -@@ -3931,12 +3931,12 @@ fi - - bfd_include_dir= - if test "$ac_bfd_include_dir" != "NONE"; then -- bfd_include_dir="-I$ac_bfd_include_dir" -+ bfd_include_dir="$ac_bfd_include_dir" - fi - - binutils_include_dir= - if test "$ac_binutils_include_dir" != "NONE"; then -- binutils_include_dir="-I$ac_binutils_include_dir" -+ binutils_include_dir="$ac_binutils_include_dir" - fi - - zlib_include_dir= -diff --git a/configure.ac b/configure.ac -index 6002894..b7fb790 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -135,12 +135,12 @@ fi - - bfd_include_dir= - if test "$ac_bfd_include_dir" != "NONE"; then -- bfd_include_dir="-I$ac_bfd_include_dir" -+ bfd_include_dir="$ac_bfd_include_dir" - fi - - binutils_include_dir= - if test "$ac_binutils_include_dir" != "NONE"; then -- binutils_include_dir="-I$ac_binutils_include_dir" -+ binutils_include_dir="$ac_binutils_include_dir" - fi - - zlib_include_dir= -diff --git a/mk-local-include.sh b/mk-local-include.sh -new file mode 100755 -index 0000000..a6e8a63 ---- /dev/null -+++ b/mk-local-include.sh -@@ -0,0 +1,89 @@ -+#!/bin/bash -+ -+# Binutils provide certain headers that are clashing with system-wide -+# headers on Cygwin and MacOS. They do so in different manners, though, -+# so it is not possible to just tweak the inclusion/library order. -+# Hence, we prepare a filtered inclusion directory where we only place -+# the headers that we need for BFD/binutils. To determine them, we'll -+# need to preprocess a sample file including the headers that will be used, -+# and have the compiler output the actual list of included headers for us. -+ -+# Usage: -+# mk-local-include.sh DIR CC BFD-INCLUDES BINUTILS-INCLUDES [DEFINES...] -+ -+local_inc=$1 -+cc=$2 -+bfd_inc=$3 -+binutils_inc=$4 -+shift 4 -+# What remains are defines to pass to GCC -+ -+case "${local_inc}" in -+ */*) echo "Local include dir may only have one component" >&2; exit 1;; -+ .|..) echo "Local include dir may not be . or .." >&2; exit 1;; -+esac -+ -+# Re-create it from a clean slate -+rm -rf "${local_inc}" -+mkdir -p "${local_inc}" -+ -+# Create a dummy source file that we'll preprocess -+{ -+ echo "#include <libiberty.h>" -+ echo "#include <filenames.h>" -+ echo "#include <bfd.h>" -+} > "${local_inc}/_dummy.c" -+ -+$cc ${bfd_inc:+-I${bfd_inc}} ${binutils_inc:+-I${binutils_inc}} "$@" \ -+ -E -o /dev/null -H "${local_inc}/_dummy.c" 2>&1 | \ -+ sed -rn -e 's/^\.+ //p' > "${local_inc}/_hdr.list" -+if [ $? != 0 ]; then -+ echo "Failed to locate libiberty.h/bfd.h headers" >&2 -+ exit 1 -+fi -+ -+# Now go over the list twice. First determine how the compiler printed -+# the location of <bfd.h> and <libiberty.h>. They themselves may be in -+# a system include directory. We'll create a mess of symlinks in that case, -+# but they'll still point to the system headers. -+while read f; do -+ case "$f" in -+ */bfd.h) bfd_loc=${f%/bfd.h};; -+ */libiberty.h) binutils_loc=${f%/libiberty.h};; -+ esac -+done < $local_inc/_hdr.list -+ -+# Now symlink the headers that reside in the same directory as the headers -+# we're looking for, or in any subdirectory thereof. -+create_link() { -+ local f=$1 -+ local bd=$2 -+ local relpath lnkname bname src -+ -+ relpath=${f#${bd}/} -+ lnkname=${local_inc}/${relpath} -+ bname=${relpath##*/} -+ if [ "${bname}" != "${relpath}" ]; then -+ mkdir -p "${relpath%/*}" -+ fi -+ case "${f}" in -+ /*) src=${f};; -+ *) src=../${f};; # account for one extra path component (DIR) -+ esac -+ if [ ! -L "${lnkname}" ]; then -+ ln -s "${src}" "${lnkname}" -+ fi -+} -+ -+while read f; do -+ case "$f" in -+ ${bfd_loc}/*) create_link "$f" "${bfd_loc}";; -+ ${binutils_loc}/*) create_link "$f" "${binutils_loc}";; -+ esac -+done < $local_inc/_hdr.list -+ -+# Final bit of secret knowledge. We need ELF headers, and the exact headers -+# depend on the selected target. Fortunately, they are all in the 'elf/' -+# subdirectory of binutils include directory, which we get by searching for -+# <libiberty.h>. -+create_link "${binutils_loc}/elf" "${binutils_loc}" --- -2.9.3 - diff --git a/patches/elf2flt/4820f0dbb77cd6564d5fa0817218fe2a1fb99f32/110-macos-use-local-elf.h.patch b/patches/elf2flt/4820f0dbb77cd6564d5fa0817218fe2a1fb99f32/110-macos-use-local-elf.h.patch deleted file mode 100644 index b189b69f..00000000 --- a/patches/elf2flt/4820f0dbb77cd6564d5fa0817218fe2a1fb99f32/110-macos-use-local-elf.h.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 1c19bf8cc294e95c8de314cc457bcea6854c3a2d Mon Sep 17 00:00:00 2001 -From: Alexey Neyman <stilor@att.net> -Date: Tue, 28 Feb 2017 09:29:21 -0800 -Subject: [PATCH 2/2] Macos does not have <elf.h> and needs a local copy - -Also, move <elf/xtensa.h> up - generic <elf.h> does not have -definitions for xtensa relocations. - -Local file, cygwin-elf.h, needs to include <stdint.h> for standard -integer types which is POSIX - rather than glibc-originated <features.h>. - -Signed-off-by: Alexey Neyman <stilor@att.net> ---- - cygwin-elf.h | 2 +- - elf2flt.c | 7 +++++-- - 2 files changed, 6 insertions(+), 3 deletions(-) - -diff --git a/cygwin-elf.h b/cygwin-elf.h -index bd72b37..8e3dbff 100644 ---- a/cygwin-elf.h -+++ b/cygwin-elf.h -@@ -26,7 +26,7 @@ typedef uint16_t u_int16_t; - typedef uint32_t u_int32_t; - typedef uint64_t u_int64_t; - #else --#include <features.h> -+#include <stdint.h> - #endif - /* Standard ELF types. */ - -diff --git a/elf2flt.c b/elf2flt.c -index 08296cf..19a4d4d 100644 ---- a/elf2flt.c -+++ b/elf2flt.c -@@ -58,14 +58,17 @@ const char *elf2flt_progname; - #include <elf/h8.h> /* TARGET_* ELF support for the BFD library */ - #elif defined(TARGET_arm) - #include <elf/arm.h> --#elif defined(__CYGWIN__) || defined(__MINGW32__) || defined(TARGET_nios) || defined(TARGET_nios2) --#include "cygwin-elf.h" /* Cygwin uses a local copy */ - #elif defined(TARGET_xtensa) - #include <elf/xtensa.h> /* TARGET_* ELF support for the BFD library */ -+#elif defined(TARGET_nios) || defined(TARGET_nios2) -+#include "cygwin-elf.h" // <elf/nios2.h> does not have R_NIOS_* declarations - #elif defined(TARGET_microblaze) - #include <elf/microblaze.h> /* TARGET_* ELF support for the BFD library */ - #elif defined(TARGET_v850) - #include <elf/v850.h> -+#elif (__CYGWIN__) || defined(__MINGW32__) || defined(__APPLE__) -+// FIXME: does Cygwin need this? It has <elf.h> in /usr/include -+#include "cygwin-elf.h" // Some systems don't have <elf.h> - #else - #include <elf.h> /* TARGET_* ELF support for the BFD library */ - #endif --- -2.9.3 - diff --git a/patches/elf2flt/a8bc69b882a55b1f1e437b50e33d3db8414eb68e/100-fix-cygwin-build.patch b/patches/elf2flt/a8bc69b882a55b1f1e437b50e33d3db8414eb68e/100-fix-cygwin-build.patch new file mode 100644 index 00000000..53311bf3 --- /dev/null +++ b/patches/elf2flt/a8bc69b882a55b1f1e437b50e33d3db8414eb68e/100-fix-cygwin-build.patch @@ -0,0 +1,111 @@ +From 4e5250f8319e72b739932b87193fa29f4a5b96b1 Mon Sep 17 00:00:00 2001 +From: Alexey Neyman <stilor@att.net> +Date: Mon, 27 Feb 2017 01:20:10 -0800 +Subject: [PATCH] Symlink required binutils/BFD headers to local dir + +... to minimize the chance of clashes with system headers. + +Also, remove the -lcygwin from Makefile.in: this breaks canadian +build on cygwin, as it tries to pass -lcygwin into non-Cygwin host +CC. This chunk pre-dates the addition of -lc into configure.ac and +passing -lc should be sufficient (it works for me). + +Signed-off-by: Alexey Neyman <stilor@att.net> +--- + Makefile.in | 21 +++++++++++++-------- + configure | 4 ++-- + configure.ac | 4 ++-- + 3 files changed, 17 insertions(+), 12 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index a6feea6..46d904b 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -14,7 +14,9 @@ CPU = @target_cpu@ + TARGET = @target_alias@ + SYMBOL_PREFIX = @SYMBOL_PREFIX@ + CFLAGS = @CFLAGS@ +-INCLUDES = -I$(srcdir) @bfd_include_dir@ @binutils_include_dir@ @zlib_include_dir@ ++INCLUDES = -I$(srcdir) -I. @zlib_include_dir@ ++BFD_INCLUDE_DIR = @bfd_include_dir@ ++BINUTILS_INCLUDE_DIR = @binutils_include_dir@ + CPPFLAGS = @CPPFLAGS@ $(DEFS) $(INCLUDES) + LDFLAGS = @LDFLAGS@ + LDLIBS = @LIBS@ +@@ -38,11 +40,6 @@ ifneq (,$(findstring mingw32,$(HOST))) + LDLIBS += -lws2_32 + endif + +-# force link order under cygwin to avoid getopts / libiberty clash +-ifneq ($(strip $(shell gcc -v 2>&1 | grep "cygwin")),) +- LDLIBS := -lcygwin $(LDLIBS) +-endif +- + LDFILE= elf2flt.ld + ifeq ($(strip $(CPU)),e1) + SRC_LDFILE= $(srcdir)/$(CPU)-elf2flt.ld +@@ -101,7 +98,7 @@ check-flthdr: + check: check-flthdr + + clean: +- -rm -f $(PROGS) *.$(OBJEXT) .deps ++ -rm -f $(PROGS) *.$(OBJEXT) *.h elf .deps .stamp-local-include + + distclean: clean + -rm -f Makefile config.log config.status config.cache ld-elf2flt +@@ -121,5 +118,13 @@ install: + $(INSTALL) -m 644 $(SRC_LDFILE) $(DESTDIR)$(target_libdir)/$(LDFILE) + + sinclude .deps +-.deps: ++.deps: .stamp-local-include + $(CC) -MM $(CPPFLAGS) $(srcdir)/*.c > .deps ++ ++.stamp-local-include: ++ ln -sf $(BFD_INCLUDE_DIR)/bfd.h bfd.h ++ for f in ansidecl filenames hashtab libiberty symcat; do \ ++ ln -sf $(BINUTILS_INCLUDE_DIR)/$$f.h $$f.h; \ ++ done ++ ln -sf $(BINUTILS_INCLUDE_DIR)/elf elf ++ touch $@ +diff --git a/configure b/configure +index 3a4e8d6..af64990 100755 +--- a/configure ++++ b/configure +@@ -3931,12 +3931,12 @@ fi + + bfd_include_dir= + if test "$ac_bfd_include_dir" != "NONE"; then +- bfd_include_dir="-I$ac_bfd_include_dir" ++ bfd_include_dir="$ac_bfd_include_dir" + fi + + binutils_include_dir= + if test "$ac_binutils_include_dir" != "NONE"; then +- binutils_include_dir="-I$ac_binutils_include_dir" ++ binutils_include_dir="$ac_binutils_include_dir" + fi + + zlib_include_dir= +diff --git a/configure.ac b/configure.ac +index 6002894..b7fb790 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -135,12 +135,12 @@ fi + + bfd_include_dir= + if test "$ac_bfd_include_dir" != "NONE"; then +- bfd_include_dir="-I$ac_bfd_include_dir" ++ bfd_include_dir="$ac_bfd_include_dir" + fi + + binutils_include_dir= + if test "$ac_binutils_include_dir" != "NONE"; then +- binutils_include_dir="-I$ac_binutils_include_dir" ++ binutils_include_dir="$ac_binutils_include_dir" + fi + + zlib_include_dir= +-- +2.9.3 + |