diff options
Diffstat (limited to 'patches')
49 files changed, 1696 insertions, 293 deletions
diff --git a/patches/binutils/2.27/120-sh-conf.patch b/patches/binutils/2.27/120-sh-conf.patch new file mode 100644 index 0000000..c12a023 --- /dev/null +++ b/patches/binutils/2.27/120-sh-conf.patch @@ -0,0 +1,33 @@ +r10231 | lethal | 2005-05-02 09:58:00 -0400 (Mon, 02 May 2005) | 13 lines + +Likewise, binutils has no idea about any of these new targets either, so we +fix that up too.. now we're able to actually build a real toolchain for +sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more +inept targets than that one, really. Go look, I promise). + +diff --git a/configure b/configure +index 87677bc..2d916f1 100755 +--- a/configure ++++ b/configure +@@ -3812,7 +3812,7 @@ case "${target}" in + or1k*-*-*) + noconfigdirs="$noconfigdirs gdb" + ;; +- sh-*-* | sh64-*-*) ++ sh*-*-* | sh64-*-*) + case "${target}" in + sh*-*-elf) + ;; +diff --git a/configure.ac b/configure.ac +index 8fe0eca..b10a99f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1140,7 +1140,7 @@ case "${target}" in + or1k*-*-*) + noconfigdirs="$noconfigdirs gdb" + ;; +- sh-*-* | sh64-*-*) ++ sh*-*-* | sh64-*-*) + case "${target}" in + sh*-*-elf) + ;; diff --git a/patches/binutils/2.27/300-001_ld_makefile_patch.patch b/patches/binutils/2.27/300-001_ld_makefile_patch.patch new file mode 100644 index 0000000..2a1320c --- /dev/null +++ b/patches/binutils/2.27/300-001_ld_makefile_patch.patch @@ -0,0 +1,26 @@ +diff --git a/ld/Makefile.am b/ld/Makefile.am +index 9575f1f..84df0bf 100644 +--- a/ld/Makefile.am ++++ b/ld/Makefile.am +@@ -54,7 +54,7 @@ endif + # We put the scripts in the directory $(scriptdir)/ldscripts. + # 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 ++scriptdir = $(libdir) + + EMUL = @EMUL@ + EMULATION_OFILES = @EMULATION_OFILES@ +diff --git a/ld/Makefile.in b/ld/Makefile.in +index 9f56ca1..272860f 100644 +--- a/ld/Makefile.in ++++ b/ld/Makefile.in +@@ -388,7 +388,7 @@ AM_CFLAGS = $(WARN_CFLAGS) + # We put the scripts in the directory $(scriptdir)/ldscripts. + # 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 ++scriptdir = $(libdir) + BASEDIR = $(srcdir)/.. + BFDDIR = $(BASEDIR)/bfd + INCDIR = $(BASEDIR)/include diff --git a/patches/binutils/2.27/300-012_check_ldrunpath_length.patch b/patches/binutils/2.27/300-012_check_ldrunpath_length.patch new file mode 100644 index 0000000..f1f31af --- /dev/null +++ b/patches/binutils/2.27/300-012_check_ldrunpath_length.patch @@ -0,0 +1,22 @@ +diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em +index 137446f..bb8391a 100644 +--- a/ld/emultempl/elf32.em ++++ b/ld/emultempl/elf32.em +@@ -1195,6 +1195,8 @@ fragment <<EOF + && command_line.rpath == NULL) + { + lib_path = (const char *) getenv ("LD_RUN_PATH"); ++ if ((lib_path) && (strlen (lib_path) == 0)) ++ lib_path = NULL; + if (gld${EMULATION_NAME}_search_needed (lib_path, &n, + force)) + break; +@@ -1458,6 +1460,8 @@ gld${EMULATION_NAME}_before_allocation (void) + rpath = command_line.rpath; + if (rpath == NULL) + rpath = (const char *) getenv ("LD_RUN_PATH"); ++ if ((rpath) && (*rpath == '\0')) ++ rpath = NULL; + + for (abfd = link_info.input_bfds; abfd; abfd = abfd->link.next) + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) diff --git a/patches/binutils/2.27/320-MinGW-w64-winpthreads-doesnt-have-pthread_mutexattr_settype.patch b/patches/binutils/2.27/320-MinGW-w64-winpthreads-doesnt-have-pthread_mutexattr_settype.patch new file mode 100644 index 0000000..2956385 --- /dev/null +++ b/patches/binutils/2.27/320-MinGW-w64-winpthreads-doesnt-have-pthread_mutexattr_settype.patch @@ -0,0 +1,11 @@ +--- binutils-2.27/gold/gold-threads.cc.orig 2016-12-26 16:44:23.691075600 +1100 ++++ binutils-2.27/gold/gold-threads.cc 2016-12-26 16:46:21.071855200 +1100 +@@ -101,7 +101,7 @@ + int err = pthread_mutexattr_init(&attr); + if (err != 0) + gold_fatal(_("pthead_mutexattr_init failed: %s"), strerror(err)); +-#ifdef PTHREAD_MUTEX_ADAPTIVE_NP ++#if defined(PTHREAD_MUTEX_ADAPTIVE_NP) && !defined(_WIN32) + err = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ADAPTIVE_NP); + if (err != 0) + gold_fatal(_("pthread_mutexattr_settype failed: %s"), strerror(err)); diff --git a/patches/binutils/2.27/330-Dont-link-to-libfl-as-its-unnecessary.patch b/patches/binutils/2.27/330-Dont-link-to-libfl-as-its-unnecessary.patch new file mode 100644 index 0000000..c52af05 --- /dev/null +++ b/patches/binutils/2.27/330-Dont-link-to-libfl-as-its-unnecessary.patch @@ -0,0 +1,108 @@ +diff --git a/binutils/configure b/binutils/configure +index 6e1f21e..78bf4ae 100755 +--- a/binutils/configure ++++ b/binutils/configure +@@ -12106,6 +12106,7 @@ + done + test -n "$YACC" || YACC="yacc" + ++save_LIBS=$LIBS + for ac_prog in flex lex + do + # Extract the first word of "$ac_prog", so it can be a program name with args. +@@ -12267,6 +12268,8 @@ + if test "$LEX" = :; then + LEX=${am_missing_run}flex + fi ++LIBS=$save_LIBS ++LEXLIB= + + ALL_LINGUAS="bg da es fi fr id it ja ro ru rw sk sv tr uk vi zh_CN zh_TW hr ca" + # If we haven't got the data from the intl directory, +diff --git a/binutils/configure.ac b/binutils/configure.ac +index defe781..8fd236a 100644 +--- a/binutils/configure.ac ++++ b/binutils/configure.ac +@@ -87,7 +87,10 @@ + fi + + AC_PROG_YACC ++save_LIBS=$LIBS + AM_PROG_LEX ++LIBS=$save_LIBS ++LEXLIB= + + ALL_LINGUAS="bg da es fi fr id it ja ro ru rw sk sv tr uk vi zh_CN zh_TW hr ca" + ZW_GNU_GETTEXT_SISTER_DIR +diff --git a/gas/configure b/gas/configure +index f959e95..9bb4043 100755 +--- a/gas/configure ++++ b/gas/configure +@@ -12819,6 +12819,7 @@ fi + done + test -n "$YACC" || YACC="yacc" + ++save_LIBS=$LIBS + for ac_prog in flex lex + do + # Extract the first word of "$ac_prog", so it can be a program name with args. +@@ -12980,6 +12981,8 @@ esac + if test "$LEX" = :; then + LEX=${am_missing_run}flex + fi ++LIBS=$save_LIBS ++LEXLIB= + + ALL_LINGUAS="fr tr es rw id ru fi ja zh_CN" + # If we haven't got the data from the intl directory, +diff --git a/gas/configure.ac b/gas/configure.ac +index 07f825d..c552b7e 100644 +--- a/gas/configure.ac ++++ b/gas/configure.ac +@@ -734,7 +734,10 @@ AC_DEFINE_UNQUOTED(TARGET_VENDOR, "${target_vendor}", [Target vendor.]) + AC_DEFINE_UNQUOTED(TARGET_OS, "${target_os}", [Target OS.]) + + AC_PROG_YACC ++save_LIBS=$LIBS + AM_PROG_LEX ++LIBS=$save_LIBS ++LEXLIB= + + ALL_LINGUAS="fr tr es rw id ru fi ja zh_CN" + ZW_GNU_GETTEXT_SISTER_DIR +diff --git a/ld/configure b/ld/configure +index a446283..1a6bf81 100755 +--- a/ld/configure ++++ b/ld/configure +@@ -16087,6 +16087,7 @@ fi + done + test -n "$YACC" || YACC="yacc" + ++save_LIBS=$LIBS + for ac_prog in flex lex + do + # Extract the first word of "$ac_prog", so it can be a program name with args. +@@ -16248,6 +16249,8 @@ esac + if test "$LEX" = :; then + LEX=${am_missing_run}flex + fi ++LIBS=$save_LIBS ++LEXLIB= + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +diff --git a/ld/configure.ac b/ld/configure.ac +index 188172d..45eec53 100644 +--- a/ld/configure.ac ++++ b/ld/configure.ac +@@ -186,7 +186,10 @@ AM_PO_SUBDIRS + AC_EXEEXT + + AC_PROG_YACC ++save_LIBS=$LIBS + AM_PROG_LEX ++LIBS=$save_LIBS ++LEXLIB= + + AM_MAINTAINER_MODE + AM_CONDITIONAL(GENINSRC_NEVER, false) diff --git a/patches/binutils/2.27/340-Darwin-gold-binary-cc-include-string-not-cstring.patch b/patches/binutils/2.27/340-Darwin-gold-binary-cc-include-string-not-cstring.patch new file mode 100644 index 0000000..e4f235b --- /dev/null +++ b/patches/binutils/2.27/340-Darwin-gold-binary-cc-include-string-not-cstring.patch @@ -0,0 +1,13 @@ +diff --git a/gold/binary.cc b/gold/binary.cc +index 52df81a..03a8f20 100644 +--- a/gold/binary.cc ++++ b/gold/binary.cc +@@ -23,7 +23,7 @@ + #include "gold.h" + + #include <cerrno> +-#include <cstring> ++#include <string> + + #include "elfcpp.h" + #include "stringpool.h" diff --git a/patches/binutils/2.27/350-Darwin-Two-fixes-from-Android-NDK-PTHREAD_ONCE_INIT-wcsncasecmp.patch b/patches/binutils/2.27/350-Darwin-Two-fixes-from-Android-NDK-PTHREAD_ONCE_INIT-wcsncasecmp.patch new file mode 100644 index 0000000..6168b31 --- /dev/null +++ b/patches/binutils/2.27/350-Darwin-Two-fixes-from-Android-NDK-PTHREAD_ONCE_INIT-wcsncasecmp.patch @@ -0,0 +1,77 @@ +From c39479f4ab4d372b518957871e1f205a03e7c3d6 Mon Sep 17 00:00:00 2001 +From: Andrew Hsieh <andrewhsieh@google.com> +Date: Wed, 18 Mar 2015 10:57:24 +0800 +Subject: [PATCH] Fix darwin build + +1. In Drawin PTHREAD_ONCE_INIT is {0x30B1BCBA, {0}} and the GCC < 4.4 + doesn't support ended initializer list +2. wcsncasecmp doesn't exist in MacSDK10.6.x + +Change-Id: I69204a72f853f5263dffedc448379d75ed4eca2e +--- + binutils-2.25/bfd/peXXigen.c | 22 ++++++++++++++++++++++ + binutils-2.25/gold/gold-threads.cc | 15 ++++++++++++--- + 2 files changed, 34 insertions(+), 3 deletions(-) + +diff --git binutils-2.25.orig/bfd/peXXigen.c binutils-2.25/bfd/peXXigen.c +index 13e39e4..7a98306 100644 +--- binutils-2.25.orig/bfd/peXXigen.c ++++ binutils-2.25/bfd/peXXigen.c +@@ -3522,6 +3522,28 @@ u16_mbtouc (wchar_t * puc, const unsigned short * s, unsigned int n) + } + #endif /* HAVE_WCHAR_H and not Cygwin/Mingw */ + ++#if defined __APPLE__ && __DARWIN_C_LEVEL < 200809L ++/* wcsncasecmp isn't always defined in Mac SDK */ ++static int ++wcsncasecmp(const wchar_t *s1, const wchar_t *s2, size_t n) ++{ ++ wchar_t c1, c2; ++ ++ if (n == 0) ++ return (0); ++ for (; *s1; s1++, s2++) ++ { ++ c1 = towlower(*s1); ++ c2 = towlower(*s2); ++ if (c1 != c2) ++ return ((int)c1 - c2); ++ if (--n == 0) ++ return (0); ++ } ++ return (-*s2); ++} ++#endif ++ + /* Perform a comparison of two entries. */ + static signed int + rsrc_cmp (bfd_boolean is_name, rsrc_entry * a, rsrc_entry * b) +diff --git binutils-2.25.orig/gold/gold-threads.cc binutils-2.25/gold/gold-threads.cc +index ff5a8ac..45140e0 100644 +--- binutils-2.25.orig/gold/gold-threads.cc ++++ binutils-2.25/gold/gold-threads.cc +@@ -284,9 +284,18 @@ Condvar::~Condvar() + class Once_initialize + { + public: +- Once_initialize() +- : once_(PTHREAD_ONCE_INIT) +- { } ++ Once_initialize() ++#if !defined(__APPLE__) ++ : once_(PTHREAD_ONCE_INIT) ++ { } ++#else ++// In Drawin PTHREAD_ONCE_INIT is {0x30B1BCBA, {0}} and the GCC < 4.4 doesn't support ++// extended initializer list as above */ ++ { ++ pthread_once_t once_2 = PTHREAD_ONCE_INIT; ++ once_ = once_2; ++ } ++#endif + + // Return a pointer to the pthread_once_t variable. + pthread_once_t* +-- +2.1.3 + diff --git a/patches/binutils/2.27/500-sysroot.patch b/patches/binutils/2.27/500-sysroot.patch new file mode 100644 index 0000000..4cb9bc7 --- /dev/null +++ b/patches/binutils/2.27/500-sysroot.patch @@ -0,0 +1,37 @@ +Signed-off-by: Sven Rebhan <odinshorse@googlemail.com> + +Always try to prepend the sysroot prefix to absolute filenames first. + +http://bugs.gentoo.org/275666 +http://sourceware.org/bugzilla/show_bug.cgi?id=10340 + +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -336,18 +336,25 @@ + directory first. */ + if (!entry->flags.maybe_archive) + { +- if (entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename)) ++ /* For absolute pathnames, try to always open the file in the ++ sysroot first. If this fails, try to open the file at the ++ given location. */ ++ entry->flags.sysrooted = is_sysrooted_pathname (entry->filename); ++ if (!entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename) ++ && ld_sysroot) + { + char *name = concat (ld_sysroot, entry->filename, + (const char *) NULL); + if (ldfile_try_open_bfd (name, entry)) + { + entry->filename = name; ++ entry->flags.sysrooted = TRUE; + return TRUE; + } + free (name); + } +- else if (ldfile_try_open_bfd (entry->filename, entry)) ++ ++ if (ldfile_try_open_bfd (entry->filename, entry)) + return TRUE; + + if (IS_ABSOLUTE_PATH (entry->filename)) diff --git a/patches/binutils/2.27/600-poison-system-directories.patch b/patches/binutils/2.27/600-poison-system-directories.patch new file mode 100644 index 0000000..ff235e3 --- /dev/null +++ b/patches/binutils/2.27/600-poison-system-directories.patch @@ -0,0 +1,285 @@ +Patch adapted to binutils 2.23.2 and extended to use +BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. + +[Gustavo: adapt to binutils 2.25] +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> +Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> + +Upstream-Status: Inappropriate [distribution: codesourcery] + +Patch originally created by Mark Hatle, forward-ported to +binutils 2.21 by Scott Garman. + +purpose: warn for uses of system directories when cross linking + +Code Merged from Sourcery G++ binutils 2.19 - 4.4-277 + +2008-07-02 Joseph Myers <joseph@codesourcery.com> + + ld/ + * ld.h (args_type): Add error_poison_system_directories. + * ld.texinfo (--error-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.error_poison_system_directories. + * ldmain.c (main): Initialize + command_line.error_poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --error-poison-system-directories. + (parse_args): Handle new option. + +2007-06-13 Joseph Myers <joseph@codesourcery.com> + + ld/ + * config.in: Regenerate. + * ld.h (args_type): Add poison_system_directories. + * ld.texinfo (--no-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.poison_system_directories. + * ldmain.c (main): Initialize + command_line.poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_NO_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --no-poison-system-directories. + (parse_args): Handle new option. + +2007-04-20 Joseph Myers <joseph@codesourcery.com> + + Merge from Sourcery G++ binutils 2.17: + + 2007-03-20 Joseph Myers <joseph@codesourcery.com> + Based on patch by Mark Hatle <mark.hatle@windriver.com>. + ld/ + * configure.ac (--enable-poison-system-directories): New option. + * configure, config.in: Regenerate. + * ldfile.c (ldfile_add_library_path): If + ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib, + /usr/lib, /usr/local/lib or /usr/X11R6/lib. + +Signed-off-by: Mark Hatle <mark.hatle@windriver.com> +Signed-off-by: Scott Garman <scott.a.garman@intel.com> + +diff --git a/ld/config.in b/ld/config.in +index 276fb77..35c58eb 100644 +--- a/ld/config.in ++++ b/ld/config.in +@@ -17,6 +17,9 @@ + language is requested. */ + #undef ENABLE_NLS + ++/* Define to warn for use of native system library directories */ ++#undef ENABLE_POISON_SYSTEM_DIRECTORIES ++ + /* Additional extension a shared object might have. */ + #undef EXTRA_SHLIB_EXTENSION + +diff --git a/ld/configure b/ld/configure +index a446283..d1f9504 100755 +--- a/ld/configure ++++ b/ld/configure +@@ -788,6 +788,7 @@ with_lib_path + enable_targets + enable_64_bit_bfd + with_sysroot ++enable_poison_system_directories + enable_gold + enable_got + enable_compressed_debug_sections +@@ -1445,6 +1446,8 @@ Optional Features: + --disable-largefile omit support for large files + --enable-targets alternative target configurations + --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) ++ --enable-poison-system-directories ++ warn for use of native system library directories + --enable-gold[=ARG] build gold [ARG={default,yes,no}] + --enable-got=<type> GOT handling scheme (target, single, negative, + multigot) +@@ -15498,7 +15501,18 @@ else + fi + + ++# Check whether --enable-poison-system-directories was given. ++if test "${enable_poison_system_directories+set}" = set; then : ++ enableval=$enable_poison_system_directories; ++else ++ enable_poison_system_directories=no ++fi ++ ++if test "x${enable_poison_system_directories}" = "xyes"; then + ++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h ++ ++fi + + # Check whether --enable-got was given. + if test "${enable_got+set}" = set; then : +diff --git a/ld/configure.ac b/ld/configure.ac +index 188172d..2cd8443 100644 +--- a/ld/configure.ac ++++ b/ld/configure.ac +@@ -95,6 +95,16 @@ AC_SUBST(use_sysroot) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) + ++AC_ARG_ENABLE([poison-system-directories], ++ AS_HELP_STRING([--enable-poison-system-directories], ++ [warn for use of native system library directories]),, ++ [enable_poison_system_directories=no]) ++if test "x${enable_poison_system_directories}" = "xyes"; then ++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES], ++ [1], ++ [Define to warn for use of native system library directories]) ++fi ++ + dnl Use --enable-gold to decide if this linker should be the default. + dnl "install_as_default" is set to false if gold is the default linker. + dnl "installed_linker" is the installed BFD linker name. +diff --git a/ld/ld.h b/ld/ld.h +index d84ec4e..3476b26 100644 +--- a/ld/ld.h ++++ b/ld/ld.h +@@ -169,6 +169,14 @@ typedef struct { + /* If set, display the target memory usage (per memory region). */ + bfd_boolean print_memory_usage; + ++ /* If TRUE (the default) warn for uses of system directories when ++ cross linking. */ ++ bfd_boolean poison_system_directories; ++ ++ /* If TRUE (default FALSE) give an error for uses of system ++ directories when cross linking instead of a warning. */ ++ bfd_boolean error_poison_system_directories; ++ + /* Big or little endian as set on command line. */ + enum endian_enum endian; + +diff --git a/ld/ld.texinfo b/ld/ld.texinfo +index 1dd7492..fb1438e 100644 +--- a/ld/ld.texinfo ++++ b/ld/ld.texinfo +@@ -2357,6 +2357,18 @@ string identifying the original linked file does not change. + + Passing @code{none} for @var{style} disables the setting from any + @code{--build-id} options earlier on the command line. ++ ++@kindex --no-poison-system-directories ++@item --no-poison-system-directories ++Do not warn for @option{-L} options using system directories such as ++@file{/usr/lib} when cross linking. This option is intended for use ++in chroot environments when such directories contain the correct ++libraries for the target system rather than the host. ++ ++@kindex --error-poison-system-directories ++@item --error-poison-system-directories ++Give an error instead of a warning for @option{-L} options using ++system directories when cross linking. + @end table + + @c man end +diff --git a/ld/ldfile.c b/ld/ldfile.c +index 96f9ecc..af231c0 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -114,6 +114,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline) + new_dirs->name = concat (ld_sysroot, name + 1, (const char *) NULL); + else + new_dirs->name = xstrdup (name); ++ ++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES ++ if (command_line.poison_system_directories ++ && ((!strncmp (name, "/lib", 4)) ++ || (!strncmp (name, "/usr/lib", 8)) ++ || (!strncmp (name, "/usr/local/lib", 14)) ++ || (!strncmp (name, "/usr/X11R6/lib", 14)))) ++ { ++ if (command_line.error_poison_system_directories) ++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ else ++ einfo (_("%P: warning: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ } ++#endif ++ + } + + /* Try to open a BFD for a lang_input_statement. */ +diff --git a/ld/ldlex.h b/ld/ldlex.h +index 6f11e7b..0ca3110 100644 +--- a/ld/ldlex.h ++++ b/ld/ldlex.h +@@ -144,6 +144,8 @@ enum option_values + OPTION_PRINT_MEMORY_USAGE, + OPTION_REQUIRE_DEFINED_SYMBOL, + OPTION_ORPHAN_HANDLING, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, + }; + + /* The initial parser states. */ +diff --git a/ld/ldmain.c b/ld/ldmain.c +index bb0b9cc..a23c56c 100644 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -257,6 +257,8 @@ main (int argc, char **argv) + command_line.warn_mismatch = TRUE; + command_line.warn_search_mismatch = TRUE; + command_line.check_section_addresses = -1; ++ command_line.poison_system_directories = TRUE; ++ command_line.error_poison_system_directories = FALSE; + + /* We initialize DEMANGLING based on the environment variable + COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the +diff --git a/ld/lexsup.c b/ld/lexsup.c +index 4cad209..be7d584 100644 +--- a/ld/lexsup.c ++++ b/ld/lexsup.c +@@ -530,6 +530,14 @@ static const struct ld_option ld_options[] = + { {"orphan-handling", required_argument, NULL, OPTION_ORPHAN_HANDLING}, + '\0', N_("=MODE"), N_("Control how orphan sections are handled."), + TWO_DASHES }, ++ { {"no-poison-system-directories", no_argument, NULL, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Do not warn for -L options using system directories"), ++ TWO_DASHES }, ++ { {"error-poison-system-directories", no_argument, NULL, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Give an error for -L options using system directories"), ++ TWO_DASHES }, + }; + + #define OPTION_COUNT ARRAY_SIZE (ld_options) +@@ -542,6 +550,7 @@ parse_args (unsigned argc, char **argv) + int ingroup = 0; + char *default_dirlist = NULL; + char *shortopts; ++ char *BR_paranoid_env; + struct option *longopts; + struct option *really_longopts; + int last_optind; +@@ -1516,6 +1525,14 @@ parse_args (unsigned argc, char **argv) + } + break; + ++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES: ++ command_line.poison_system_directories = FALSE; ++ break; ++ ++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES: ++ command_line.error_poison_system_directories = TRUE; ++ break; ++ + case OPTION_PUSH_STATE: + input_flags.pushed = xmemdup (&input_flags, + sizeof (input_flags), +@@ -1559,6 +1576,10 @@ parse_args (unsigned argc, char **argv) + command_line.soname = NULL; + } + ++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH"); ++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0) ++ command_line.error_poison_system_directories = TRUE; ++ + while (ingroup) + { + lang_leave_group (); diff --git a/patches/binutils/2.27/999-xtensa-reverse-shift-count.patch b/patches/binutils/2.27/999-xtensa-reverse-shift-count.patch new file mode 100644 index 0000000..f8bb9c1 --- /dev/null +++ b/patches/binutils/2.27/999-xtensa-reverse-shift-count.patch @@ -0,0 +1,33 @@ +From 78fb7e37eb8bb08ae537d6c487996ff17c810332 Mon Sep 17 00:00:00 2001 +From: Trevor Saunders <tbsaunde+binutils@tbsaunde.org> +Date: Mon, 26 Sep 2016 12:42:11 -0400 +Subject: [PATCH] tc-xtensa.c: fixup xg_reverse_shift_count typo + +gas/ChangeLog: + +2016-09-26 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> + + * config/tc-xtensa.c (xg_reverse_shift_count): Pass cnt_arg instead of + cnt_argp to concat. +--- + gas/ChangeLog | 5 +++++ + gas/config/tc-xtensa.c | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +[[ ChangeLog skipped, fails to apply on 2.27 ]] +diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c +index d062044..ca261ae 100644 +--- a/gas/config/tc-xtensa.c ++++ b/gas/config/tc-xtensa.c +@@ -2228,7 +2228,7 @@ xg_reverse_shift_count (char **cnt_argp) + cnt_arg = *cnt_argp; + + /* replace the argument with "31-(argument)" */ +- new_arg = concat ("31-(", cnt_argp, ")", (char *) NULL); ++ new_arg = concat ("31-(", cnt_arg, ")", (char *) NULL); + + free (cnt_arg); + *cnt_argp = new_arg; +-- +2.9.3 + diff --git a/patches/gcc/4.8.5/1000-libtool-leave-framework-alone.patch b/patches/gcc/4.8.5/1000-libtool-leave-framework-alone.patch new file mode 100644 index 0000000..525592e --- /dev/null +++ b/patches/gcc/4.8.5/1000-libtool-leave-framework-alone.patch @@ -0,0 +1,14 @@ +--- gcc-4.9.4/libtool-ldflags 2016-12-20 11:13:12.669668125 -0800 ++++ gcc-4.9.4/libtool-ldflags 2016-12-20 11:28:34.894826286 -0800 +@@ -36,6 +36,11 @@ + for arg + do + case $arg in ++ -framework) ++ # libtool handles this option. It should not be prefixed with ++ # -Xcompiler, as that would split it from the argument that ++ # follows. ++ ;; + -f*|--*) + # Libtool does not ascribe any special meaning options + # that begin with -f or with a double-dash. So, it will diff --git a/patches/gcc/4.9.4/1000-libtool-leave-framework-alone.patch b/patches/gcc/4.9.4/1000-libtool-leave-framework-alone.patch new file mode 100644 index 0000000..525592e --- /dev/null +++ b/patches/gcc/4.9.4/1000-libtool-leave-framework-alone.patch @@ -0,0 +1,14 @@ +--- gcc-4.9.4/libtool-ldflags 2016-12-20 11:13:12.669668125 -0800 ++++ gcc-4.9.4/libtool-ldflags 2016-12-20 11:28:34.894826286 -0800 +@@ -36,6 +36,11 @@ + for arg + do + case $arg in ++ -framework) ++ # libtool handles this option. It should not be prefixed with ++ # -Xcompiler, as that would split it from the argument that ++ # follows. ++ ;; + -f*|--*) + # Libtool does not ascribe any special meaning options + # that begin with -f or with a double-dash. So, it will diff --git a/patches/gcc/5.4.0/1000-libtool-leave-framework-alone.patch b/patches/gcc/5.4.0/1000-libtool-leave-framework-alone.patch new file mode 100644 index 0000000..0f4912a --- /dev/null +++ b/patches/gcc/5.4.0/1000-libtool-leave-framework-alone.patch @@ -0,0 +1,14 @@ +--- gcc-5.4.0/libtool-ldflags 2016-12-20 11:13:12.669668125 -0800 ++++ gcc-5.4.0/libtool-ldflags 2016-12-20 11:28:34.894826286 -0800 +@@ -36,6 +36,11 @@ + for arg + do + case $arg in ++ -framework) ++ # libtool handles this option. It should not be prefixed with ++ # -Xcompiler, as that would split it from the argument that ++ # follows. ++ ;; + -f*|--*|-static-lib*|-shared-lib*|-B*) + # Libtool does not ascribe any special meaning options + # that begin with -f or with a double-dash. So, it will diff --git a/patches/gcc/6.2.0/100-uclibc-conf.patch b/patches/gcc/6.3.0/100-uclibc-conf.patch index 73d1f0d..73d1f0d 100644 --- a/patches/gcc/6.2.0/100-uclibc-conf.patch +++ b/patches/gcc/6.3.0/100-uclibc-conf.patch diff --git a/patches/gcc/6.3.0/1000-libtool-leave-framework-alone.patch b/patches/gcc/6.3.0/1000-libtool-leave-framework-alone.patch new file mode 100644 index 0000000..bce09eb --- /dev/null +++ b/patches/gcc/6.3.0/1000-libtool-leave-framework-alone.patch @@ -0,0 +1,14 @@ +--- gcc-6.2.0/libtool-ldflags 2016-12-20 11:13:12.669668125 -0800 ++++ gcc-6.2.0/libtool-ldflags 2016-12-20 11:28:34.894826286 -0800 +@@ -36,6 +36,11 @@ + for arg + do + case $arg in ++ -framework) ++ # libtool handles this option. It should not be prefixed with ++ # -Xcompiler, as that would split it from the argument that ++ # follows. ++ ;; + -f*|--*|-static-lib*|-shared-lib*|-B*) + # Libtool does not ascribe any special meaning options + # that begin with -f or with a double-dash. So, it will diff --git a/patches/gcc/6.2.0/301-missing-execinfo_h.patch b/patches/gcc/6.3.0/301-missing-execinfo_h.patch index 2d0e7ba..2d0e7ba 100644 --- a/patches/gcc/6.2.0/301-missing-execinfo_h.patch +++ b/patches/gcc/6.3.0/301-missing-execinfo_h.patch diff --git a/patches/gcc/6.2.0/370-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch b/patches/gcc/6.3.0/370-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch index d8986d5..d8986d5 100644 --- a/patches/gcc/6.2.0/370-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch +++ b/patches/gcc/6.3.0/370-gcc-plugin-Win-Dont-need-undefined-extern-var-refs-nor-fpic.patch diff --git a/patches/gcc/6.2.0/380-gcc-plugin-POSIX-include-sys-select-h.patch b/patches/gcc/6.3.0/380-gcc-plugin-POSIX-include-sys-select-h.patch index 12ef48e..12ef48e 100644 --- a/patches/gcc/6.2.0/380-gcc-plugin-POSIX-include-sys-select-h.patch +++ b/patches/gcc/6.3.0/380-gcc-plugin-POSIX-include-sys-select-h.patch diff --git a/patches/gcc/6.2.0/810-arm-softfloat-libgcc.patch b/patches/gcc/6.3.0/810-arm-softfloat-libgcc.patch index 5efa7fd..5efa7fd 100644 --- a/patches/gcc/6.2.0/810-arm-softfloat-libgcc.patch +++ b/patches/gcc/6.3.0/810-arm-softfloat-libgcc.patch diff --git a/patches/gcc/6.2.0/830-arm_unbreak_armv4t.patch b/patches/gcc/6.3.0/830-arm_unbreak_armv4t.patch index b730059..b730059 100644 --- a/patches/gcc/6.2.0/830-arm_unbreak_armv4t.patch +++ b/patches/gcc/6.3.0/830-arm_unbreak_armv4t.patch diff --git a/patches/gcc/6.2.0/831-ARM-PR-target-70473-Reduce-size-of-Cortex-A8-automat.patch b/patches/gcc/6.3.0/831-ARM-PR-target-70473-Reduce-size-of-Cortex-A8-automat.patch index af9fb1d..af9fb1d 100644 --- a/patches/gcc/6.2.0/831-ARM-PR-target-70473-Reduce-size-of-Cortex-A8-automat.patch +++ b/patches/gcc/6.3.0/831-ARM-PR-target-70473-Reduce-size-of-Cortex-A8-automat.patch diff --git a/patches/gcc/6.2.0/860-cilk-wchar.patch b/patches/gcc/6.3.0/860-cilk-wchar.patch index 1d9916f..1d9916f 100644 --- a/patches/gcc/6.2.0/860-cilk-wchar.patch +++ b/patches/gcc/6.3.0/860-cilk-wchar.patch diff --git a/patches/gcc/6.2.0/870-xtensa-don-t-use-unwind-dw2-fde-dip-with-elf-targets.patch b/patches/gcc/6.3.0/870-xtensa-don-t-use-unwind-dw2-fde-dip-with-elf-targets.patch index 6e0ce6e..6e0ce6e 100644 --- a/patches/gcc/6.2.0/870-xtensa-don-t-use-unwind-dw2-fde-dip-with-elf-targets.patch +++ b/patches/gcc/6.3.0/870-xtensa-don-t-use-unwind-dw2-fde-dip-with-elf-targets.patch diff --git a/patches/gcc/6.2.0/871-xtensa-Fix-PR-target-78118.patch b/patches/gcc/6.3.0/871-xtensa-Fix-PR-target-78118.patch index c6ae103..c6ae103 100644 --- a/patches/gcc/6.2.0/871-xtensa-Fix-PR-target-78118.patch +++ b/patches/gcc/6.3.0/871-xtensa-Fix-PR-target-78118.patch diff --git a/patches/gcc/6.2.0/872-xtensa-Fix-PR-target-78603.patch b/patches/gcc/6.3.0/872-xtensa-Fix-PR-target-78603.patch index 669097c..669097c 100644 --- a/patches/gcc/6.2.0/872-xtensa-Fix-PR-target-78603.patch +++ b/patches/gcc/6.3.0/872-xtensa-Fix-PR-target-78603.patch diff --git a/patches/gcc/6.2.0/890-fix-m68k-compile.patch b/patches/gcc/6.3.0/890-fix-m68k-compile.patch index 6e63de0..6e63de0 100644 --- a/patches/gcc/6.2.0/890-fix-m68k-compile.patch +++ b/patches/gcc/6.3.0/890-fix-m68k-compile.patch diff --git a/patches/gcc/6.2.0/891-fix-m68k-uclinux.patch b/patches/gcc/6.3.0/891-fix-m68k-uclinux.patch index 4e186bd..4e186bd 100644 --- a/patches/gcc/6.2.0/891-fix-m68k-uclinux.patch +++ b/patches/gcc/6.3.0/891-fix-m68k-uclinux.patch diff --git a/patches/gcc/6.2.0/892-libgcc-mkmap-symver-support-skip_underscore.patch b/patches/gcc/6.3.0/892-libgcc-mkmap-symver-support-skip_underscore.patch index 73ee6c5..73ee6c5 100644 --- a/patches/gcc/6.2.0/892-libgcc-mkmap-symver-support-skip_underscore.patch +++ b/patches/gcc/6.3.0/892-libgcc-mkmap-symver-support-skip_underscore.patch diff --git a/patches/gcc/6.2.0/893-libgcc-config-bfin-use-the-generic-linker-version-in.patch b/patches/gcc/6.3.0/893-libgcc-config-bfin-use-the-generic-linker-version-in.patch index 454295d..454295d 100644 --- a/patches/gcc/6.2.0/893-libgcc-config-bfin-use-the-generic-linker-version-in.patch +++ b/patches/gcc/6.3.0/893-libgcc-config-bfin-use-the-generic-linker-version-in.patch diff --git a/patches/gcc/6.2.0/894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch b/patches/gcc/6.3.0/894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch index ce49de7..ce49de7 100644 --- a/patches/gcc/6.2.0/894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch +++ b/patches/gcc/6.3.0/894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch diff --git a/patches/gcc/6.2.0/895-bfin-define-REENTRANT.patch b/patches/gcc/6.3.0/895-bfin-define-REENTRANT.patch index e2828a5..e2828a5 100644 --- a/patches/gcc/6.2.0/895-bfin-define-REENTRANT.patch +++ b/patches/gcc/6.3.0/895-bfin-define-REENTRANT.patch diff --git a/patches/gcc/6.2.0/910-nios2-bad-multilib-default.patch b/patches/gcc/6.3.0/910-nios2-bad-multilib-default.patch index 61989e5..61989e5 100644 --- a/patches/gcc/6.2.0/910-nios2-bad-multilib-default.patch +++ b/patches/gcc/6.3.0/910-nios2-bad-multilib-default.patch diff --git a/patches/gcc/6.2.0/930-libgcc-disable-split-stack-nothreads.patch b/patches/gcc/6.3.0/930-libgcc-disable-split-stack-nothreads.patch index 07f9a73..07f9a73 100644 --- a/patches/gcc/6.2.0/930-libgcc-disable-split-stack-nothreads.patch +++ b/patches/gcc/6.3.0/930-libgcc-disable-split-stack-nothreads.patch diff --git a/patches/gcc/6.2.0/940-uclinux-enable-threads.patch b/patches/gcc/6.3.0/940-uclinux-enable-threads.patch index 490a55b..490a55b 100644 --- a/patches/gcc/6.2.0/940-uclinux-enable-threads.patch +++ b/patches/gcc/6.3.0/940-uclinux-enable-threads.patch diff --git a/patches/gdb/7.12/100-musl_fix.patch b/patches/gdb/7.12/100-musl_fix.patch new file mode 100644 index 0000000..c0c1e0a --- /dev/null +++ b/patches/gdb/7.12/100-musl_fix.patch @@ -0,0 +1,28 @@ +--- a/gdb/linux-nat.c ++++ b/gdb/linux-nat.c +@@ -17,6 +17,7 @@ + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + ++#include "stopcode.h" + #include "defs.h" + #include "inferior.h" + #include "infrun.h" +@@ -73,6 +74,10 @@ + #define SPUFS_MAGIC 0x23c9b64e + #endif + ++#ifndef __SIGRTMIN ++#define __SIGRTMIN SIGRTMIN ++#endif ++ + /* This comment documents high-level logic of this file. + + Waiting for events in sync mode +--- /dev/null ++++ b/gdb/stopcode.h +@@ -0,0 +1,4 @@ ++#ifndef W_STOPCODE ++#define W_STOPCODE(sig) ((sig) << 8 | 0x7f) ++#endif ++ diff --git a/patches/gdb/7.12/101-uclibc-no-gettimeofday-clobber.patch b/patches/gdb/7.12/101-uclibc-no-gettimeofday-clobber.patch new file mode 100644 index 0000000..cd7a4c6 --- /dev/null +++ b/patches/gdb/7.12/101-uclibc-no-gettimeofday-clobber.patch @@ -0,0 +1,30 @@ +Improve gnulib in gdb's guess work, gettimeofday() works in uClibcm promise. + +This patch helps building x86_64-unknown-linux-uclibc toolchains, the final +gdb-native step otherwise fails when linking the libinproctrace.so + +Signed-off-by: Joachim Nilsson <troglobit@gmail.com> +Signed-off-by: Alexey Neyman <stilor@att.net> + +diff -urpN gdb-7.12.orig/gdb/gnulib/configure gdb-7.12/gdb/gnulib/configure +--- gdb-7.12.orig/gdb/gnulib/configure 2017-01-13 13:42:11.773027566 -0800 ++++ gdb-7.12/gdb/gnulib/configure 2017-01-13 13:44:32.518082618 -0800 +@@ -13522,6 +13522,7 @@ else + case "$host_os" in + # Guess all is fine on glibc systems. + *-gnu*) gl_cv_func_gettimeofday_clobber="guessing no" ;; ++ *-uclibc*) gl_cv_func_gettimeofday_clobber="guessing no" ;; + # If we don't know, assume the worst. + *) gl_cv_func_gettimeofday_clobber="guessing yes" ;; + esac +diff -urpN gdb-7.12.orig/gdb/gnulib/import/m4/gettimeofday.m4 gdb-7.12/gdb/gnulib/import/m4/gettimeofday.m4 +--- gdb-7.12.orig/gdb/gnulib/import/m4/gettimeofday.m4 2017-01-13 13:42:11.777027595 -0800 ++++ gdb-7.12/gdb/gnulib/import/m4/gettimeofday.m4 2017-01-13 13:43:55.781797640 -0800 +@@ -111,6 +111,7 @@ AC_DEFUN([gl_FUNC_GETTIMEOFDAY_CLOBBER], + case "$host_os" in + # Guess all is fine on glibc systems. + *-gnu*) gl_cv_func_gettimeofday_clobber="guessing no" ;; ++ *-uclibc*) gl_cv_func_gettimeofday_clobber="guessing no" ;; + # If we don't know, assume the worst. + *) gl_cv_func_gettimeofday_clobber="guessing yes" ;; + esac diff --git a/patches/gdb/7.12/111-xtensa-make-sure-ar_base-is-initialized.patch b/patches/gdb/7.12/111-xtensa-make-sure-ar_base-is-initialized.patch new file mode 100644 index 0000000..982bd7f --- /dev/null +++ b/patches/gdb/7.12/111-xtensa-make-sure-ar_base-is-initialized.patch @@ -0,0 +1,35 @@ +From 208ea73d38c9c16cf983b6419f58050dbadcb6a9 Mon Sep 17 00:00:00 2001 +From: Max Filippov <jcmvbkbc@gmail.com> +Date: Sun, 7 Jun 2015 22:43:49 +0300 +Subject: [PATCH 2/2] xtensa: make sure ar_base is initialized + +ar_base is uninitialized for cores w/o windowed registers as their +regmap doesn't have register 0x0100. +Check that ar_base is initialized and if not initialize it with a0_base. + +gdb/ + * xtensa-tdep.c (xtensa_derive_tdep): Make sure ar_base is + initialized. + +Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> +--- + gdb/xtensa-tdep.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/gdb/xtensa-tdep.c b/gdb/xtensa-tdep.c +index 55e7d98..41f5ec1 100644 +--- a/gdb/xtensa-tdep.c ++++ b/gdb/xtensa-tdep.c +@@ -3175,6 +3175,9 @@ xtensa_derive_tdep (struct gdbarch_tdep *tdep) + tdep->num_regs = n; + } + ++ if (tdep->ar_base == -1) ++ tdep->ar_base = tdep->a0_base; ++ + /* Number of pseudo registers. */ + tdep->num_pseudo_regs = n - tdep->num_regs; + +-- +1.8.1.4 + diff --git a/patches/gdb/7.12/112-WIP-end-of-prologue-detection-hack.patch b/patches/gdb/7.12/112-WIP-end-of-prologue-detection-hack.patch new file mode 100644 index 0000000..506a57c --- /dev/null +++ b/patches/gdb/7.12/112-WIP-end-of-prologue-detection-hack.patch @@ -0,0 +1,31 @@ +From 7f8eacbb468575fb67db7fd1155a3aedaa91911b Mon Sep 17 00:00:00 2001 +From: Max Filippov <jcmvbkbc@gmail.com> +Date: Sun, 7 Jun 2015 23:15:39 +0300 +Subject: [PATCH] WIP: *end of prologue* detection hack + +see + http://www.esp8266.com/viewtopic.php?p=18461#p18461 + http://www.esp8266.com/viewtopic.php?p=19026#p19026 + http://www.esp8266.com/viewtopic.php?p=19683#p19683 + +Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> +--- + gdb/xtensa-tdep.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gdb/xtensa-tdep.c b/gdb/xtensa-tdep.c +index 41f5ec1..6a7dba7 100644 +--- a/gdb/xtensa-tdep.c ++++ b/gdb/xtensa-tdep.c +@@ -2410,7 +2410,7 @@ call0_analyze_prologue (struct gdbarch *gdbarch, + /* Find out, if we have an information about the prologue from DWARF. */ + prologue_sal = find_pc_line (start, 0); + if (prologue_sal.line != 0) /* Found debug info. */ +- body_pc = prologue_sal.end; ++ body_pc = prologue_sal.end + 40; + + /* If we are going to analyze the prologue in general without knowing about + the current PC, make the best assumtion for the end of the prologue. */ +-- +1.8.1.4 + diff --git a/patches/musl/1.0.4/0001-max_align_t.patch b/patches/musl/1.0.4/0001-max_align_t.patch deleted file mode 100644 index 766f667..0000000 --- a/patches/musl/1.0.4/0001-max_align_t.patch +++ /dev/null @@ -1,140 +0,0 @@ -From 321f4fa9067185aa6bb47403dfba46e8cfe917d3 Mon Sep 17 00:00:00 2001 -From: Rich Felker <dalias@aerifal.cx> -Date: Wed, 20 Aug 2014 21:20:14 +0000 -Subject: add max_align_t definition for C11 and C++11 - -unfortunately this needs to be able to vary by arch, because of a huge -mess GCC made: the GCC definition, which became the ABI, depends on -quirks in GCC's definition of __alignof__, which does not match the -formal alignment of the type. - -GCC's __alignof__ unexpectedly exposes the an implementation detail, -its "preferred alignment" for the type, rather than the formal/ABI -alignment of the type, which it only actually uses in structures. on -most archs the two values are the same, but on some (at least i386) -the preferred alignment is greater than the ABI alignment. - -I considered using _Alignas(8) unconditionally, but on at least one -arch (or1k), the alignment of max_align_t with GCC's definition is -only 4 (even the "preferred alignment" for these types is only 4). - -[bryanhundven@gmail.com: remove the or1k hunk] -[yann.morin.1998@free.fr: add the commit log] -diff --git a/arch/arm/bits/alltypes.h.in b/arch/arm/bits/alltypes.h.in -index bd23a6a..3482874 100644 ---- a/arch/arm/bits/alltypes.h.in -+++ b/arch/arm/bits/alltypes.h.in -@@ -13,6 +13,8 @@ TYPEDEF unsigned wint_t; - TYPEDEF float float_t; - TYPEDEF double double_t; - -+TYPEDEF struct { long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long time_t; - TYPEDEF long suseconds_t; - -diff --git a/arch/i386/bits/alltypes.h.in b/arch/i386/bits/alltypes.h.in -index efd2c07..8a62c80 100644 ---- a/arch/i386/bits/alltypes.h.in -+++ b/arch/i386/bits/alltypes.h.in -@@ -27,6 +27,8 @@ TYPEDEF long double float_t; - TYPEDEF long double double_t; - #endif - -+TYPEDEF struct { _Alignas(8) long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long time_t; - TYPEDEF long suseconds_t; - -diff --git a/arch/microblaze/bits/alltypes.h.in b/arch/microblaze/bits/alltypes.h.in -index 6bd7942..27006b0 100644 ---- a/arch/microblaze/bits/alltypes.h.in -+++ b/arch/microblaze/bits/alltypes.h.in -@@ -13,6 +13,8 @@ TYPEDEF unsigned wint_t; - TYPEDEF float float_t; - TYPEDEF double double_t; - -+TYPEDEF struct { long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long time_t; - TYPEDEF long suseconds_t; - -diff --git a/arch/mips/bits/alltypes.h.in b/arch/mips/bits/alltypes.h.in -index 6bd7942..27006b0 100644 ---- a/arch/mips/bits/alltypes.h.in -+++ b/arch/mips/bits/alltypes.h.in -@@ -13,6 +13,8 @@ TYPEDEF unsigned wint_t; - TYPEDEF float float_t; - TYPEDEF double double_t; - -+TYPEDEF struct { long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long time_t; - TYPEDEF long suseconds_t; - -diff --git a/arch/powerpc/bits/alltypes.h.in b/arch/powerpc/bits/alltypes.h.in -index e9d8dd8..040157e 100644 ---- a/arch/powerpc/bits/alltypes.h.in -+++ b/arch/powerpc/bits/alltypes.h.in -@@ -13,6 +13,8 @@ TYPEDEF unsigned wint_t; - TYPEDEF float float_t; - TYPEDEF double double_t; - -+TYPEDEF struct { long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long time_t; - TYPEDEF long suseconds_t; - -diff --git a/arch/sh/bits/alltypes.h.in b/arch/sh/bits/alltypes.h.in -index e9d8dd8..040157e 100644 ---- a/arch/sh/bits/alltypes.h.in -+++ b/arch/sh/bits/alltypes.h.in -@@ -13,6 +13,8 @@ TYPEDEF unsigned wint_t; - TYPEDEF float float_t; - TYPEDEF double double_t; - -+TYPEDEF struct { long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long time_t; - TYPEDEF long suseconds_t; - -diff --git a/arch/x32/bits/alltypes.h.in b/arch/x32/bits/alltypes.h.in -index b077fc9..c98a3d7 100644 ---- a/arch/x32/bits/alltypes.h.in -+++ b/arch/x32/bits/alltypes.h.in -@@ -18,6 +18,8 @@ TYPEDEF float float_t; - TYPEDEF double double_t; - #endif - -+TYPEDEF struct { long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long long time_t; - TYPEDEF long long suseconds_t; - -diff --git a/arch/x86_64/bits/alltypes.h.in b/arch/x86_64/bits/alltypes.h.in -index 277e944..c4898c7 100644 ---- a/arch/x86_64/bits/alltypes.h.in -+++ b/arch/x86_64/bits/alltypes.h.in -@@ -18,6 +18,8 @@ TYPEDEF float float_t; - TYPEDEF double double_t; - #endif - -+TYPEDEF struct { long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long time_t; - TYPEDEF long suseconds_t; - -diff --git a/include/stddef.h b/include/stddef.h -index 0a32919..bd75385 100644 ---- a/include/stddef.h -+++ b/include/stddef.h -@@ -10,6 +10,9 @@ - #define __NEED_ptrdiff_t - #define __NEED_size_t - #define __NEED_wchar_t -+#if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L -+#define __NEED_max_align_t -+#endif - - #include <bits/alltypes.h> - diff --git a/patches/musl/1.1.4/0001-max_align_t.patch b/patches/musl/1.1.4/0001-max_align_t.patch deleted file mode 100644 index 6423337..0000000 --- a/patches/musl/1.1.4/0001-max_align_t.patch +++ /dev/null @@ -1,153 +0,0 @@ -From 321f4fa9067185aa6bb47403dfba46e8cfe917d3 Mon Sep 17 00:00:00 2001 -From: Rich Felker <dalias@aerifal.cx> -Date: Wed, 20 Aug 2014 21:20:14 +0000 -Subject: add max_align_t definition for C11 and C++11 - -unfortunately this needs to be able to vary by arch, because of a huge -mess GCC made: the GCC definition, which became the ABI, depends on -quirks in GCC's definition of __alignof__, which does not match the -formal alignment of the type. - -GCC's __alignof__ unexpectedly exposes the an implementation detail, -its "preferred alignment" for the type, rather than the formal/ABI -alignment of the type, which it only actually uses in structures. on -most archs the two values are the same, but on some (at least i386) -the preferred alignment is greater than the ABI alignment. - -I considered using _Alignas(8) unconditionally, but on at least one -arch (or1k), the alignment of max_align_t with GCC's definition is -only 4 (even the "preferred alignment" for these types is only 4). ---- -diff --git a/arch/arm/bits/alltypes.h.in b/arch/arm/bits/alltypes.h.in -index 0d750cc..183c4c4 100644 ---- a/arch/arm/bits/alltypes.h.in -+++ b/arch/arm/bits/alltypes.h.in -@@ -13,6 +13,8 @@ TYPEDEF unsigned wint_t; - TYPEDEF float float_t; - TYPEDEF double double_t; - -+TYPEDEF struct { long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long time_t; - TYPEDEF long suseconds_t; - -diff --git a/arch/i386/bits/alltypes.h.in b/arch/i386/bits/alltypes.h.in -index 502c882..8ba8f6f 100644 ---- a/arch/i386/bits/alltypes.h.in -+++ b/arch/i386/bits/alltypes.h.in -@@ -27,6 +27,8 @@ TYPEDEF long double float_t; - TYPEDEF long double double_t; - #endif - -+TYPEDEF struct { _Alignas(8) long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long time_t; - TYPEDEF long suseconds_t; - -diff --git a/arch/microblaze/bits/alltypes.h.in b/arch/microblaze/bits/alltypes.h.in -index 4657d14..a03e1b8 100644 ---- a/arch/microblaze/bits/alltypes.h.in -+++ b/arch/microblaze/bits/alltypes.h.in -@@ -13,6 +13,8 @@ TYPEDEF unsigned wint_t; - TYPEDEF float float_t; - TYPEDEF double double_t; - -+TYPEDEF struct { long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long time_t; - TYPEDEF long suseconds_t; - -diff --git a/arch/mips/bits/alltypes.h.in b/arch/mips/bits/alltypes.h.in -index 4657d14..a03e1b8 100644 ---- a/arch/mips/bits/alltypes.h.in -+++ b/arch/mips/bits/alltypes.h.in -@@ -13,6 +13,8 @@ TYPEDEF unsigned wint_t; - TYPEDEF float float_t; - TYPEDEF double double_t; - -+TYPEDEF struct { long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long time_t; - TYPEDEF long suseconds_t; - -diff --git a/arch/or1k/bits/alltypes.h.in b/arch/or1k/bits/alltypes.h.in -index 0d750cc..183c4c4 100644 ---- a/arch/or1k/bits/alltypes.h.in -+++ b/arch/or1k/bits/alltypes.h.in -@@ -13,6 +13,8 @@ TYPEDEF unsigned wint_t; - TYPEDEF float float_t; - TYPEDEF double double_t; - -+TYPEDEF struct { long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long time_t; - TYPEDEF long suseconds_t; - -diff --git a/arch/powerpc/bits/alltypes.h.in b/arch/powerpc/bits/alltypes.h.in -index 378124c..ee7f137 100644 ---- a/arch/powerpc/bits/alltypes.h.in -+++ b/arch/powerpc/bits/alltypes.h.in -@@ -13,6 +13,8 @@ TYPEDEF unsigned wint_t; - TYPEDEF float float_t; - TYPEDEF double double_t; - -+TYPEDEF struct { long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long time_t; - TYPEDEF long suseconds_t; - -diff --git a/arch/sh/bits/alltypes.h.in b/arch/sh/bits/alltypes.h.in -index 378124c..ee7f137 100644 ---- a/arch/sh/bits/alltypes.h.in -+++ b/arch/sh/bits/alltypes.h.in -@@ -13,6 +13,8 @@ TYPEDEF unsigned wint_t; - TYPEDEF float float_t; - TYPEDEF double double_t; - -+TYPEDEF struct { long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long time_t; - TYPEDEF long suseconds_t; - -diff --git a/arch/x32/bits/alltypes.h.in b/arch/x32/bits/alltypes.h.in -index 8930efa..8e396c9 100644 ---- a/arch/x32/bits/alltypes.h.in -+++ b/arch/x32/bits/alltypes.h.in -@@ -18,6 +18,8 @@ TYPEDEF float float_t; - TYPEDEF double double_t; - #endif - -+TYPEDEF struct { long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long long time_t; - TYPEDEF long long suseconds_t; - -diff --git a/arch/x86_64/bits/alltypes.h.in b/arch/x86_64/bits/alltypes.h.in -index 34b7d6a..7b4f3e7 100644 ---- a/arch/x86_64/bits/alltypes.h.in -+++ b/arch/x86_64/bits/alltypes.h.in -@@ -18,6 +18,8 @@ TYPEDEF float float_t; - TYPEDEF double double_t; - #endif - -+TYPEDEF struct { long long __ll; long double __ld; } max_align_t; -+ - TYPEDEF long time_t; - TYPEDEF long suseconds_t; - -diff --git a/include/stddef.h b/include/stddef.h -index 0a32919..bd75385 100644 ---- a/include/stddef.h -+++ b/include/stddef.h -@@ -10,6 +10,9 @@ - #define __NEED_ptrdiff_t - #define __NEED_size_t - #define __NEED_wchar_t -+#if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L -+#define __NEED_max_align_t -+#endif - - #include <bits/alltypes.h> - --- -cgit v0.9.0.3-65-g4555 diff --git a/patches/strace/4.10/007_fix_bexecve64_test.patch b/patches/strace/4.10/007_fix_bexecve64_test.patch index 09cd8ad..6dc9b46 100644 --- a/patches/strace/4.10/007_fix_bexecve64_test.patch +++ b/patches/strace/4.10/007_fix_bexecve64_test.patch @@ -1,3 +1,5 @@ +commit b704e8fbb4d9cf90ac56f3c889de5b779c444db4 +(loosely based on) --- a/tests/bexecve.test +++ b/tests/bexecve.test @@ -24,13 +24,14 @@ diff --git a/patches/strace/4.10/008_decode_mips_indirect_syscall.patch b/patches/strace/4.10/008_decode_mips_indirect_syscall.patch index de0004c..d2d7217 100644 --- a/patches/strace/4.10/008_decode_mips_indirect_syscall.patch +++ b/patches/strace/4.10/008_decode_mips_indirect_syscall.patch @@ -1,3 +1,4 @@ +commit f34b97f89dd3893ef3652a6899487771402fc13c Index: strace-4.10/linux/mips/syscallent-o32.h =================================================================== --- strace-4.10.orig/linux/mips/syscallent-o32.h diff --git a/patches/strace/4.10/009-upstream-musl_includes.patch b/patches/strace/4.10/009-upstream-musl_includes.patch index a35d7fd..c68f8d8 100644 --- a/patches/strace/4.10/009-upstream-musl_includes.patch +++ b/patches/strace/4.10/009-upstream-musl_includes.patch @@ -1,3 +1,5 @@ +commit 3460dc486d333231998de0f19918204aacee9ae3 +commit d34e00b293942b1012ddc49ed3ab379a32337611 --- a/evdev.c +++ b/evdev.c @@ -28,6 +28,8 @@ diff --git a/patches/strace/4.10/010-use-host-ioctl.patch b/patches/strace/4.10/010-use-host-ioctl.patch new file mode 100644 index 0000000..e9c34d3 --- /dev/null +++ b/patches/strace/4.10/010-use-host-ioctl.patch @@ -0,0 +1,142 @@ +diff -urpN strace-4.10.orig/ioctl_iocdef.c strace-4.10/ioctl_iocdef.c +--- strace-4.10.orig/ioctl_iocdef.c 1969-12-31 16:00:00.000000000 -0800 ++++ strace-4.10/ioctl_iocdef.c 2017-01-14 15:05:49.505335680 -0800 +@@ -0,0 +1,43 @@ ++/* ++ * Copyright (c) 2017 Alexey Neyman <stilor@att.net> ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. The name of the author may not be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++/* ++ * This file is *PREPROCESSED*, not *COMPILED* for host and the result ++ * is included into ioctlsort (which is compiled for build). Since some ++ * of these values are used in structure initializers, they cannot be ++ * defined as 'const unsigned int' - instead, they have to be macros. ++ * Hence, the result of preprocessing will be run through sed to change ++ * 'DEFINE' into '#define' ++ */ ++#include <linux/ioctl.h> ++ ++DEFINE HOST_IOC_NONE _IOC_NONE ++DEFINE HOST_IOC_READ _IOC_READ ++DEFINE HOST_IOC_WRITE _IOC_WRITE ++ ++DEFINE HOST_IOC_SIZESHIFT _IOC_SIZESHIFT ++DEFINE HOST_IOC_DIRSHIFT _IOC_DIRSHIFT +diff -urpN strace-4.10.orig/ioctlsort.c strace-4.10/ioctlsort.c +--- strace-4.10.orig/ioctlsort.c 2015-02-15 18:35:58.000000000 -0800 ++++ strace-4.10/ioctlsort.c 2017-01-14 15:20:30.597371979 -0800 +@@ -33,7 +33,8 @@ + #include <stdio.h> + #include <stdlib.h> + #include <string.h> +-#include <linux/ioctl.h> ++ ++#include "ioctl_iocdef.h" + + struct ioctlent { + const char *info; +diff -urpN strace-4.10.orig/Makefile.am strace-4.10/Makefile.am +--- strace-4.10.orig/Makefile.am 2015-03-05 18:19:01.000000000 -0800 ++++ strace-4.10/Makefile.am 2017-01-14 15:07:28.978244260 -0800 +@@ -159,6 +159,7 @@ EXTRA_DIST = \ + debian/strace64.manpages \ + debian/watch \ + errnoent.sh \ ++ ioctl_iocdef.c \ + ioctlsort.c \ + linux/32/ioctls_inc.h \ + linux/32/syscallent.h \ +@@ -416,15 +417,24 @@ ioctlsort_LDFLAGS = $(AM_LDFLAGS) $(LDFL + ioctls_inc_h = $(wildcard $(srcdir)/$(OS)/$(ARCH)/ioctls_inc*.h) + ioctlent_h = $(patsubst $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%,ioctlent%,$(ioctls_inc_h)) + BUILT_SOURCES += $(ioctlent_h) +-CLEANFILES = $(ioctlent_h) ++CLEANFILES = $(ioctlent_h) ioctl_iocdef.h + + ioctlent%.h: ioctlsort% + ./$< > $@ + ++# Need to pick up <linux/ioctl.h> definitions *for host* while compiling ++# ioctlsort *for build*, hence this magic. ++ioctl_iocdef.i: $(srcdir)/ioctl_iocdef.c ++ $(CPP) -P $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(strace_CPPFLAGS) $(CPPFLAGS) $< -o $@ ++ ++ioctl_iocdef.h: ioctl_iocdef.i ++ sed -n 's/^DEFINE HOST/#define /p' $< > $@ ++ + ioctlsort%$(BUILD_EXEEXT): ioctlsort%.o + $(ioctlsort_CC) $(ioctlsort_CFLAGS) $(ioctlsort_LDFLAGS) $< -o $@ + +-ioctlsort%.o: ioctls_all%.h $(srcdir)/ioctlsort.c ++ioctlsort%.o: ioctls_all%.h ioctl_iocdef.h $(srcdir)/ioctlsort.c + $(ioctlsort_CC) $(ioctlsort_DEFS) $(ioctlsort_INCLUDES) $(ioctlsort_CPPFLAGS) $(ioctlsort_CFLAGS) -DIOCTLSORT_INC=\"$<\" -c -o $@ $(srcdir)/ioctlsort.c + + ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%.h $(srcdir)/$(OS)/$(ARCH)/ioctls_arch%.h +diff -urpN strace-4.10.orig/Makefile.in strace-4.10/Makefile.in +--- strace-4.10.orig/Makefile.in 2015-03-06 07:16:46.000000000 -0800 ++++ strace-4.10/Makefile.in 2017-01-14 15:23:06.718794409 -0800 +@@ -687,6 +687,7 @@ EXTRA_DIST = \ + debian/strace64.manpages \ + debian/watch \ + errnoent.sh \ ++ ioctl_iocdef.c \ + ioctlsort.c \ + linux/32/ioctls_inc.h \ + linux/32/syscallent.h \ +@@ -921,7 +922,7 @@ ioctlsort_CFLAGS = $(AM_CFLAGS) $(CFLAGS + ioctlsort_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_FOR_BUILD) + ioctls_inc_h = $(wildcard $(srcdir)/$(OS)/$(ARCH)/ioctls_inc*.h) + ioctlent_h = $(patsubst $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%,ioctlent%,$(ioctls_inc_h)) +-CLEANFILES = $(ioctlent_h) ++CLEANFILES = $(ioctlent_h) ioctl_iocdef.h + @MAINTAINER_MODE_TRUE@gen_changelog_start_date = 2009-07-08 20:00 + all: $(BUILT_SOURCES) config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive +@@ -3414,13 +3415,22 @@ news-check: NEWS + exit 1; \ + fi + ++# Need to pick up <linux/ioctl.h> definitions *for host* while compiling ++# ioctlsort *for build*, hence this magic. ++ioctl_iocdef.i: $(srcdir)/ioctl_iocdef.c ++ $(CPP) -P $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(strace_CPPFLAGS) $(CPPFLAGS) $< -o $@ ++ ++ioctl_iocdef.h: ioctl_iocdef.i ++ sed -n 's/^DEFINE HOST/#define /p' $< > $@ ++ + ioctlent%.h: ioctlsort% + ./$< > $@ + + ioctlsort%$(BUILD_EXEEXT): ioctlsort%.o + $(ioctlsort_CC) $(ioctlsort_CFLAGS) $(ioctlsort_LDFLAGS) $< -o $@ + +-ioctlsort%.o: ioctls_all%.h $(srcdir)/ioctlsort.c ++ioctlsort%.o: ioctls_all%.h ioctl_iocdef.h $(srcdir)/ioctlsort.c + $(ioctlsort_CC) $(ioctlsort_DEFS) $(ioctlsort_INCLUDES) $(ioctlsort_CPPFLAGS) $(ioctlsort_CFLAGS) -DIOCTLSORT_INC=\"$<\" -c -o $@ $(srcdir)/ioctlsort.c + + ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%.h $(srcdir)/$(OS)/$(ARCH)/ioctls_arch%.h diff --git a/patches/strace/4.11/010-use-host-ioctl.patch b/patches/strace/4.11/010-use-host-ioctl.patch new file mode 100644 index 0000000..5155200 --- /dev/null +++ b/patches/strace/4.11/010-use-host-ioctl.patch @@ -0,0 +1,144 @@ +diff -urpN strace-4.11.orig/ioctl_iocdef.c strace-4.11/ioctl_iocdef.c +--- strace-4.11.orig/ioctl_iocdef.c 1969-12-31 16:00:00.000000000 -0800 ++++ strace-4.11/ioctl_iocdef.c 2017-01-14 15:31:16.925139193 -0800 +@@ -0,0 +1,43 @@ ++/* ++ * Copyright (c) 2017 Alexey Neyman <stilor@att.net> ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. The name of the author may not be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++/* ++ * This file is *PREPROCESSED*, not *COMPILED* for host and the result ++ * is included into ioctlsort (which is compiled for build). Since some ++ * of these values are used in structure initializers, they cannot be ++ * defined as 'const unsigned int' - instead, they have to be macros. ++ * Hence, the result of preprocessing will be run through sed to change ++ * 'DEFINE' into '#define' ++ */ ++#include <linux/ioctl.h> ++ ++DEFINE HOST_IOC_NONE _IOC_NONE ++DEFINE HOST_IOC_READ _IOC_READ ++DEFINE HOST_IOC_WRITE _IOC_WRITE ++ ++DEFINE HOST_IOC_SIZESHIFT _IOC_SIZESHIFT ++DEFINE HOST_IOC_DIRSHIFT _IOC_DIRSHIFT +diff -urpN strace-4.11.orig/ioctlsort.c strace-4.11/ioctlsort.c +--- strace-4.11.orig/ioctlsort.c 2015-03-28 15:37:30.000000000 -0700 ++++ strace-4.11/ioctlsort.c 2017-01-14 15:32:13.373831957 -0800 +@@ -33,7 +33,8 @@ + #include <stdio.h> + #include <stdlib.h> + #include <string.h> +-#include <linux/ioctl.h> ++ ++#include "ioctl_iocdef.h" + + struct ioctlent { + const char *info; +diff -urpN strace-4.11.orig/Makefile.am strace-4.11/Makefile.am +--- strace-4.11.orig/Makefile.am 2015-12-17 09:56:48.000000000 -0800 ++++ strace-4.11/Makefile.am 2017-01-14 15:33:39.186837242 -0800 +@@ -239,6 +239,7 @@ EXTRA_DIST = \ + debian/watch \ + errnoent.sh \ + generate_sen.sh \ ++ ioctl_iocdef.c \ + ioctlsort.c \ + linux/32/ioctls_inc.h \ + linux/32/ioctls_inc_align32.h \ +@@ -666,17 +667,26 @@ ioctlent_h = $(patsubst $(srcdir)/$(OS)/ + ioctlent%.h: ioctlsort% + ./$< > $@ + ++# Need to pick up <linux/ioctl.h> definitions *for host* while compiling ++# ioctlsort *for build*, hence this magic. ++ioctl_iocdef.i: $(srcdir)/ioctl_iocdef.c ++ $(CPP) -P $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(strace_CPPFLAGS) $(CPPFLAGS) $< -o $@ ++ ++ioctl_iocdef.h: ioctl_iocdef.i ++ sed -n 's/^DEFINE HOST/#define /p' $< > $@ ++ + ioctlsort%$(BUILD_EXEEXT): ioctlsort%.o + $(ioctlsort_CC) $(ioctlsort_CFLAGS) $(ioctlsort_LDFLAGS) $< -o $@ + +-ioctlsort%.o: ioctls_all%.h $(srcdir)/ioctlsort.c ++ioctlsort%.o: ioctls_all%.h ioctl_iocdef.h $(srcdir)/ioctlsort.c + $(ioctlsort_CC) $(ioctlsort_DEFS) $(ioctlsort_INCLUDES) $(ioctlsort_CPPFLAGS) $(ioctlsort_CFLAGS) -DIOCTLSORT_INC=\"$<\" -c -o $@ $(srcdir)/ioctlsort.c + + ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%.h $(srcdir)/$(OS)/$(ARCH)/ioctls_arch%.h + cat $^ > $@ + + BUILT_SOURCES = $(ioctlent_h) native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h .version +-CLEANFILES = $(ioctlent_h) native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h ++CLEANFILES = $(ioctlent_h) ioctl_iocdef.h native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h + DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h + + # defines mpers_source_files +diff -urpN strace-4.11.orig/Makefile.in strace-4.11/Makefile.in +--- strace-4.11.orig/Makefile.in 2015-12-21 15:24:05.000000000 -0800 ++++ strace-4.11/Makefile.in 2017-01-14 15:34:34.803440359 -0800 +@@ -848,6 +848,7 @@ EXTRA_DIST = \ + debian/watch \ + errnoent.sh \ + generate_sen.sh \ ++ ioctl_iocdef.c \ + ioctlsort.c \ + linux/32/ioctls_inc.h \ + linux/32/ioctls_inc_align32.h \ +@@ -1243,7 +1244,7 @@ ioctlent_h = $(patsubst $(srcdir)/$(OS)/ + BUILT_SOURCES = $(ioctlent_h) native_printer_decls.h \ + native_printer_defs.h printers.h sen.h sys_func.h .version \ + $(am__append_7) $(am__append_11) +-CLEANFILES = $(ioctlent_h) native_printer_decls.h \ ++CLEANFILES = $(ioctlent_h) ioctl_iocdef.h native_printer_decls.h \ + native_printer_defs.h printers.h sen.h sys_func.h \ + $(am__append_8) $(am__append_12) + DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h +@@ -4829,13 +4830,22 @@ news-check: NEWS + exit 1; \ + fi + ++# Need to pick up <linux/ioctl.h> definitions *for host* while compiling ++# ioctlsort *for build*, hence this magic. ++ioctl_iocdef.i: $(srcdir)/ioctl_iocdef.c ++ $(CPP) -P $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(strace_CPPFLAGS) $(CPPFLAGS) $< -o $@ ++ ++ioctl_iocdef.h: ioctl_iocdef.i ++ sed -n 's/^DEFINE HOST/#define /p' $< > $@ ++ + ioctlent%.h: ioctlsort% + ./$< > $@ + + ioctlsort%$(BUILD_EXEEXT): ioctlsort%.o + $(ioctlsort_CC) $(ioctlsort_CFLAGS) $(ioctlsort_LDFLAGS) $< -o $@ + +-ioctlsort%.o: ioctls_all%.h $(srcdir)/ioctlsort.c ++ioctlsort%.o: ioctls_all%.h ioctl_iocdef.h $(srcdir)/ioctlsort.c + $(ioctlsort_CC) $(ioctlsort_DEFS) $(ioctlsort_INCLUDES) $(ioctlsort_CPPFLAGS) $(ioctlsort_CFLAGS) -DIOCTLSORT_INC=\"$<\" -c -o $@ $(srcdir)/ioctlsort.c + + ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%.h $(srcdir)/$(OS)/$(ARCH)/ioctls_arch%.h diff --git a/patches/strace/4.12/010-use-host-ioctl.patch b/patches/strace/4.12/010-use-host-ioctl.patch new file mode 100644 index 0000000..bd5a40e --- /dev/null +++ b/patches/strace/4.12/010-use-host-ioctl.patch @@ -0,0 +1,145 @@ +diff -urpN strace-4.12.orig/ioctl_iocdef.c strace-4.12/ioctl_iocdef.c +--- strace-4.12.orig/ioctl_iocdef.c 1969-12-31 16:00:00.000000000 -0800 ++++ strace-4.12/ioctl_iocdef.c 2017-01-14 15:35:21.055924401 -0800 +@@ -0,0 +1,43 @@ ++/* ++ * Copyright (c) 2017 Alexey Neyman <stilor@att.net> ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. The name of the author may not be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++/* ++ * This file is *PREPROCESSED*, not *COMPILED* for host and the result ++ * is included into ioctlsort (which is compiled for build). Since some ++ * of these values are used in structure initializers, they cannot be ++ * defined as 'const unsigned int' - instead, they have to be macros. ++ * Hence, the result of preprocessing will be run through sed to change ++ * 'DEFINE' into '#define' ++ */ ++#include <linux/ioctl.h> ++ ++DEFINE HOST_IOC_NONE _IOC_NONE ++DEFINE HOST_IOC_READ _IOC_READ ++DEFINE HOST_IOC_WRITE _IOC_WRITE ++ ++DEFINE HOST_IOC_SIZESHIFT _IOC_SIZESHIFT ++DEFINE HOST_IOC_DIRSHIFT _IOC_DIRSHIFT +diff -urpN strace-4.12.orig/ioctlsort.c strace-4.12/ioctlsort.c +--- strace-4.12.orig/ioctlsort.c 2015-03-28 15:37:30.000000000 -0700 ++++ strace-4.12/ioctlsort.c 2017-01-14 15:35:21.055924401 -0800 +@@ -33,7 +33,8 @@ + #include <stdio.h> + #include <stdlib.h> + #include <string.h> +-#include <linux/ioctl.h> ++ ++#include "ioctl_iocdef.h" + + struct ioctlent { + const char *info; +diff -urpN strace-4.12.orig/Makefile.am strace-4.12/Makefile.am +--- strace-4.12.orig/Makefile.am 2016-05-28 03:29:30.000000000 -0700 ++++ strace-4.12/Makefile.am 2017-01-14 15:36:46.916796883 -0800 +@@ -274,6 +274,7 @@ EXTRA_DIST = \ + debian/watch \ + errnoent.sh \ + generate_sen.sh \ ++ ioctl_iocdef.c \ + ioctlsort.c \ + linux/32/ioctls_inc.h \ + linux/32/ioctls_inc_align32.h \ +@@ -712,10 +713,19 @@ ioctl_redefs%.h: ioctlent%.h ioctlent0.h + ioctlent%.h: ioctlsort% + ./$< > $@ + ++# Need to pick up <linux/ioctl.h> definitions *for host* while compiling ++# ioctlsort *for build*, hence this magic. ++ioctl_iocdef.i: $(srcdir)/ioctl_iocdef.c ++ $(CPP) -P $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(strace_CPPFLAGS) $(CPPFLAGS) $< -o $@ ++ ++ioctl_iocdef.h: ioctl_iocdef.i ++ sed -n 's/^DEFINE HOST/#define /p' $< > $@ ++ + ioctlsort%$(BUILD_EXEEXT): ioctlsort%.o + $(ioctlsort_CC) $(ioctlsort_CFLAGS) $(ioctlsort_LDFLAGS) $< -o $@ + +-ioctlsort%.o: ioctls_all%.h $(srcdir)/ioctlsort.c ++ioctlsort%.o: ioctls_all%.h ioctl_iocdef.h $(srcdir)/ioctlsort.c + $(ioctlsort_CC) $(ioctlsort_DEFS) $(ioctlsort_INCLUDES) $(ioctlsort_CPPFLAGS) $(ioctlsort_CFLAGS) -DIOCTLSORT_INC=\"$<\" -c -o $@ $(srcdir)/ioctlsort.c + + ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%.h $(srcdir)/$(OS)/$(ARCH)/ioctls_arch%.h +@@ -723,7 +733,7 @@ ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/i + + BUILT_SOURCES = $(ioctl_redefs_h) $(ioctlent_h) \ + native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h .version +-CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) $(mpers_preproc_files) \ ++CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) ioctl_iocdef.h $(mpers_preproc_files) \ + native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h + DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h + +diff -urpN strace-4.12.orig/Makefile.in strace-4.12/Makefile.in +--- strace-4.12.orig/Makefile.in 2016-05-31 04:35:57.000000000 -0700 ++++ strace-4.12/Makefile.in 2017-01-14 15:37:33.353259891 -0800 +@@ -952,6 +952,7 @@ EXTRA_DIST = \ + debian/watch \ + errnoent.sh \ + generate_sen.sh \ ++ ioctl_iocdef.c \ + ioctlsort.c \ + linux/32/ioctls_inc.h \ + linux/32/ioctls_inc_align32.h \ +@@ -1351,7 +1352,7 @@ ioctl_redefs_h = $(filter-out ioctl_rede + BUILT_SOURCES = $(ioctl_redefs_h) $(ioctlent_h) native_printer_decls.h \ + native_printer_defs.h printers.h sen.h sys_func.h .version \ + $(am__append_7) $(am__append_11) +-CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) $(mpers_preproc_files) \ ++CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) octl_iocdef.h $(mpers_preproc_files) \ + native_printer_decls.h native_printer_defs.h printers.h sen.h \ + sys_func.h $(am__append_8) $(am__append_12) + DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h +@@ -5506,13 +5507,22 @@ ioctl_redefs%.h: ioctlent%.h ioctlent0.h + rm -f $<-t + mv $@-t $@ + ++# Need to pick up <linux/ioctl.h> definitions *for host* while compiling ++# ioctlsort *for build*, hence this magic. ++ioctl_iocdef.i: $(srcdir)/ioctl_iocdef.c ++ $(CPP) -P $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(strace_CPPFLAGS) $(CPPFLAGS) $< -o $@ ++ ++ioctl_iocdef.h: ioctl_iocdef.i ++ sed -n 's/^DEFINE HOST/#define /p' $< > $@ ++ + ioctlent%.h: ioctlsort% + ./$< > $@ + + ioctlsort%$(BUILD_EXEEXT): ioctlsort%.o + $(ioctlsort_CC) $(ioctlsort_CFLAGS) $(ioctlsort_LDFLAGS) $< -o $@ + +-ioctlsort%.o: ioctls_all%.h $(srcdir)/ioctlsort.c ++ioctlsort%.o: ioctls_all%.h ioctl_iocdef.h $(srcdir)/ioctlsort.c + $(ioctlsort_CC) $(ioctlsort_DEFS) $(ioctlsort_INCLUDES) $(ioctlsort_CPPFLAGS) $(ioctlsort_CFLAGS) -DIOCTLSORT_INC=\"$<\" -c -o $@ $(srcdir)/ioctlsort.c + + ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%.h $(srcdir)/$(OS)/$(ARCH)/ioctls_arch%.h diff --git a/patches/strace/4.13/010-use-host-ioctl.patch b/patches/strace/4.13/010-use-host-ioctl.patch new file mode 100644 index 0000000..40ebbf3 --- /dev/null +++ b/patches/strace/4.13/010-use-host-ioctl.patch @@ -0,0 +1,145 @@ +diff -urpN strace-4.13.orig/ioctl_iocdef.c strace-4.13/ioctl_iocdef.c +--- strace-4.13.orig/ioctl_iocdef.c 1969-12-31 16:00:00.000000000 -0800 ++++ strace-4.13/ioctl_iocdef.c 2017-01-14 15:50:14.368196376 -0800 +@@ -0,0 +1,43 @@ ++/* ++ * Copyright (c) 2017 Alexey Neyman <stilor@att.net> ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. The name of the author may not be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++/* ++ * This file is *PREPROCESSED*, not *COMPILED* for host and the result ++ * is included into ioctlsort (which is compiled for build). Since some ++ * of these values are used in structure initializers, they cannot be ++ * defined as 'const unsigned int' - instead, they have to be macros. ++ * Hence, the result of preprocessing will be run through sed to change ++ * 'DEFINE' into '#define' ++ */ ++#include <linux/ioctl.h> ++ ++DEFINE HOST_IOC_NONE _IOC_NONE ++DEFINE HOST_IOC_READ _IOC_READ ++DEFINE HOST_IOC_WRITE _IOC_WRITE ++ ++DEFINE HOST_IOC_SIZESHIFT _IOC_SIZESHIFT ++DEFINE HOST_IOC_DIRSHIFT _IOC_DIRSHIFT +diff -urpN strace-4.13.orig/ioctlsort.c strace-4.13/ioctlsort.c +--- strace-4.13.orig/ioctlsort.c 2015-03-28 15:37:30.000000000 -0700 ++++ strace-4.13/ioctlsort.c 2017-01-14 15:50:14.368196376 -0800 +@@ -33,7 +33,8 @@ + #include <stdio.h> + #include <stdlib.h> + #include <string.h> +-#include <linux/ioctl.h> ++ ++#include "ioctl_iocdef.h" + + struct ioctlent { + const char *info; +diff -urpN strace-4.13.orig/Makefile.am strace-4.13/Makefile.am +--- strace-4.13.orig/Makefile.am 2016-07-22 12:28:06.000000000 -0700 ++++ strace-4.13/Makefile.am 2017-01-14 15:50:14.368196376 -0800 +@@ -283,6 +283,7 @@ EXTRA_DIST = \ + debian/watch \ + errnoent.sh \ + generate_sen.sh \ ++ ioctl_iocdef.c \ + ioctlsort.c \ + linux/32/ioctls_inc.h \ + linux/32/ioctls_inc_align32.h \ +@@ -721,10 +722,19 @@ ioctl_redefs%.h: ioctlent%.h ioctlent0.h + ioctlent%.h: ioctlsort% + ./$< > $@ + ++# Need to pick up <linux/ioctl.h> definitions *for host* while compiling ++# ioctlsort *for build*, hence this magic. ++ioctl_iocdef.i: $(srcdir)/ioctl_iocdef.c ++ $(CPP) -P $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(strace_CPPFLAGS) $(CPPFLAGS) $< -o $@ ++ ++ioctl_iocdef.h: ioctl_iocdef.i ++ sed -n 's/^DEFINE HOST/#define /p' $< > $@ ++ + ioctlsort%$(BUILD_EXEEXT): ioctlsort%.o + $(ioctlsort_CC) $(ioctlsort_CFLAGS) $(ioctlsort_LDFLAGS) $< -o $@ + +-ioctlsort%.o: ioctls_all%.h $(srcdir)/ioctlsort.c ++ioctlsort%.o: ioctls_all%.h ioctl_iocdef.h $(srcdir)/ioctlsort.c + $(ioctlsort_CC) $(ioctlsort_DEFS) $(ioctlsort_INCLUDES) $(ioctlsort_CPPFLAGS) $(ioctlsort_CFLAGS) -DIOCTLSORT_INC=\"$<\" -c -o $@ $(srcdir)/ioctlsort.c + + ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%.h $(srcdir)/$(OS)/$(ARCH)/ioctls_arch%.h +@@ -732,7 +742,7 @@ ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/i + + BUILT_SOURCES = $(ioctl_redefs_h) $(ioctlent_h) \ + native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h .version +-CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) $(mpers_preproc_files) \ ++CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) ioctl_iocdef.h $(mpers_preproc_files) \ + native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h + DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h + +diff -urpN strace-4.13.orig/Makefile.in strace-4.13/Makefile.in +--- strace-4.13.orig/Makefile.in 2016-07-26 09:17:18.000000000 -0700 ++++ strace-4.13/Makefile.in 2017-01-14 15:50:14.368196376 -0800 +@@ -978,6 +978,7 @@ EXTRA_DIST = \ + debian/watch \ + errnoent.sh \ + generate_sen.sh \ ++ ioctl_iocdef.c \ + ioctlsort.c \ + linux/32/ioctls_inc.h \ + linux/32/ioctls_inc_align32.h \ +@@ -1377,7 +1378,7 @@ ioctl_redefs_h = $(filter-out ioctl_rede + BUILT_SOURCES = $(ioctl_redefs_h) $(ioctlent_h) native_printer_decls.h \ + native_printer_defs.h printers.h sen.h sys_func.h .version \ + $(am__append_7) $(am__append_11) +-CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) $(mpers_preproc_files) \ ++CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) octl_iocdef.h $(mpers_preproc_files) \ + native_printer_decls.h native_printer_defs.h printers.h sen.h \ + sys_func.h $(am__append_8) $(am__append_12) + DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h +@@ -5730,13 +5731,22 @@ ioctl_redefs%.h: ioctlent%.h ioctlent0.h + rm -f $<-t + mv $@-t $@ + ++# Need to pick up <linux/ioctl.h> definitions *for host* while compiling ++# ioctlsort *for build*, hence this magic. ++ioctl_iocdef.i: $(srcdir)/ioctl_iocdef.c ++ $(CPP) -P $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(strace_CPPFLAGS) $(CPPFLAGS) $< -o $@ ++ ++ioctl_iocdef.h: ioctl_iocdef.i ++ sed -n 's/^DEFINE HOST/#define /p' $< > $@ ++ + ioctlent%.h: ioctlsort% + ./$< > $@ + + ioctlsort%$(BUILD_EXEEXT): ioctlsort%.o + $(ioctlsort_CC) $(ioctlsort_CFLAGS) $(ioctlsort_LDFLAGS) $< -o $@ + +-ioctlsort%.o: ioctls_all%.h $(srcdir)/ioctlsort.c ++ioctlsort%.o: ioctls_all%.h ioctl_iocdef.h $(srcdir)/ioctlsort.c + $(ioctlsort_CC) $(ioctlsort_DEFS) $(ioctlsort_INCLUDES) $(ioctlsort_CPPFLAGS) $(ioctlsort_CFLAGS) -DIOCTLSORT_INC=\"$<\" -c -o $@ $(srcdir)/ioctlsort.c + + ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%.h $(srcdir)/$(OS)/$(ARCH)/ioctls_arch%.h diff --git a/patches/strace/4.14/010-use-host-ioctl.patch b/patches/strace/4.14/010-use-host-ioctl.patch new file mode 100644 index 0000000..2c7671f --- /dev/null +++ b/patches/strace/4.14/010-use-host-ioctl.patch @@ -0,0 +1,145 @@ +diff -urpN strace-4.14.orig/ioctl_iocdef.c strace-4.14/ioctl_iocdef.c +--- strace-4.14.orig/ioctl_iocdef.c 1969-12-31 16:00:00.000000000 -0800 ++++ strace-4.14/ioctl_iocdef.c 2017-01-14 15:50:38.748425119 -0800 +@@ -0,0 +1,43 @@ ++/* ++ * Copyright (c) 2017 Alexey Neyman <stilor@att.net> ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. The name of the author may not be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++/* ++ * This file is *PREPROCESSED*, not *COMPILED* for host and the result ++ * is included into ioctlsort (which is compiled for build). Since some ++ * of these values are used in structure initializers, they cannot be ++ * defined as 'const unsigned int' - instead, they have to be macros. ++ * Hence, the result of preprocessing will be run through sed to change ++ * 'DEFINE' into '#define' ++ */ ++#include <linux/ioctl.h> ++ ++DEFINE HOST_IOC_NONE _IOC_NONE ++DEFINE HOST_IOC_READ _IOC_READ ++DEFINE HOST_IOC_WRITE _IOC_WRITE ++ ++DEFINE HOST_IOC_SIZESHIFT _IOC_SIZESHIFT ++DEFINE HOST_IOC_DIRSHIFT _IOC_DIRSHIFT +diff -urpN strace-4.14.orig/ioctlsort.c strace-4.14/ioctlsort.c +--- strace-4.14.orig/ioctlsort.c 2015-03-28 15:37:30.000000000 -0700 ++++ strace-4.14/ioctlsort.c 2017-01-14 15:50:38.748425119 -0800 +@@ -33,7 +33,8 @@ + #include <stdio.h> + #include <stdlib.h> + #include <string.h> +-#include <linux/ioctl.h> ++ ++#include "ioctl_iocdef.h" + + struct ioctlent { + const char *info; +diff -urpN strace-4.14.orig/Makefile.am strace-4.14/Makefile.am +--- strace-4.14.orig/Makefile.am 2016-09-05 12:52:57.000000000 -0700 ++++ strace-4.14/Makefile.am 2017-01-14 15:50:38.748425119 -0800 +@@ -289,6 +289,7 @@ EXTRA_DIST = \ + debian/watch \ + errnoent.sh \ + generate_sen.sh \ ++ ioctl_iocdef.c \ + ioctlsort.c \ + linux/32/ioctls_inc.h \ + linux/32/ioctls_inc_align32.h \ +@@ -739,10 +740,19 @@ ioctl_redefs%.h: ioctlent%.h ioctlent0.h + ioctlent%.h: ioctlsort% + ./$< > $@ + ++# Need to pick up <linux/ioctl.h> definitions *for host* while compiling ++# ioctlsort *for build*, hence this magic. ++ioctl_iocdef.i: $(srcdir)/ioctl_iocdef.c ++ $(CPP) -P $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(strace_CPPFLAGS) $(CPPFLAGS) $< -o $@ ++ ++ioctl_iocdef.h: ioctl_iocdef.i ++ sed -n 's/^DEFINE HOST/#define /p' $< > $@ ++ + ioctlsort%$(BUILD_EXEEXT): ioctlsort%.o + $(ioctlsort_CC) $(ioctlsort_CFLAGS) $(ioctlsort_LDFLAGS) $< -o $@ + +-ioctlsort%.o: ioctls_all%.h $(srcdir)/ioctlsort.c ++ioctlsort%.o: ioctls_all%.h ioctl_iocdef.h $(srcdir)/ioctlsort.c + $(ioctlsort_CC) $(ioctlsort_DEFS) $(ioctlsort_INCLUDES) $(ioctlsort_CPPFLAGS) $(ioctlsort_CFLAGS) -DIOCTLSORT_INC=\"$<\" -c -o $@ $(srcdir)/ioctlsort.c + + ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%.h $(srcdir)/$(OS)/$(ARCH)/ioctls_arch%.h +@@ -750,7 +760,7 @@ ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/i + + BUILT_SOURCES = $(ioctl_redefs_h) $(ioctlent_h) \ + native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h .version +-CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) $(mpers_preproc_files) \ ++CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) ioctl_iocdef.h $(mpers_preproc_files) \ + native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h + DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h + +diff -urpN strace-4.14.orig/Makefile.in strace-4.14/Makefile.in +--- strace-4.14.orig/Makefile.in 2016-10-04 12:13:20.000000000 -0700 ++++ strace-4.14/Makefile.in 2017-01-14 15:50:38.752425155 -0800 +@@ -995,6 +995,7 @@ EXTRA_DIST = \ + debian/watch \ + errnoent.sh \ + generate_sen.sh \ ++ ioctl_iocdef.c \ + ioctlsort.c \ + linux/32/ioctls_inc.h \ + linux/32/ioctls_inc_align32.h \ +@@ -1406,7 +1407,7 @@ ioctl_redefs_h = $(filter-out ioctl_rede + BUILT_SOURCES = $(ioctl_redefs_h) $(ioctlent_h) native_printer_decls.h \ + native_printer_defs.h printers.h sen.h sys_func.h .version \ + $(am__append_7) $(am__append_11) +-CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) $(mpers_preproc_files) \ ++CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) octl_iocdef.h $(mpers_preproc_files) \ + native_printer_decls.h native_printer_defs.h printers.h sen.h \ + sys_func.h $(am__append_8) $(am__append_12) + DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h +@@ -5896,13 +5897,22 @@ ioctl_redefs%.h: ioctlent%.h ioctlent0.h + rm -f $<-t + mv $@-t $@ + ++# Need to pick up <linux/ioctl.h> definitions *for host* while compiling ++# ioctlsort *for build*, hence this magic. ++ioctl_iocdef.i: $(srcdir)/ioctl_iocdef.c ++ $(CPP) -P $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(strace_CPPFLAGS) $(CPPFLAGS) $< -o $@ ++ ++ioctl_iocdef.h: ioctl_iocdef.i ++ sed -n 's/^DEFINE HOST/#define /p' $< > $@ ++ + ioctlent%.h: ioctlsort% + ./$< > $@ + + ioctlsort%$(BUILD_EXEEXT): ioctlsort%.o + $(ioctlsort_CC) $(ioctlsort_CFLAGS) $(ioctlsort_LDFLAGS) $< -o $@ + +-ioctlsort%.o: ioctls_all%.h $(srcdir)/ioctlsort.c ++ioctlsort%.o: ioctls_all%.h ioctl_iocdef.h $(srcdir)/ioctlsort.c + $(ioctlsort_CC) $(ioctlsort_DEFS) $(ioctlsort_INCLUDES) $(ioctlsort_CPPFLAGS) $(ioctlsort_CFLAGS) -DIOCTLSORT_INC=\"$<\" -c -o $@ $(srcdir)/ioctlsort.c + + ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%.h $(srcdir)/$(OS)/$(ARCH)/ioctls_arch%.h diff --git a/patches/strace/4.15/010-use-host-ioctl.patch b/patches/strace/4.15/010-use-host-ioctl.patch new file mode 100644 index 0000000..71d380a --- /dev/null +++ b/patches/strace/4.15/010-use-host-ioctl.patch @@ -0,0 +1,145 @@ +diff -urpN strace-4.15.orig/ioctl_iocdef.c strace-4.15/ioctl_iocdef.c +--- strace-4.15.orig/ioctl_iocdef.c 1969-12-31 16:00:00.000000000 -0800 ++++ strace-4.15/ioctl_iocdef.c 2017-01-14 15:50:56.388590804 -0800 +@@ -0,0 +1,43 @@ ++/* ++ * Copyright (c) 2017 Alexey Neyman <stilor@att.net> ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. The name of the author may not be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++/* ++ * This file is *PREPROCESSED*, not *COMPILED* for host and the result ++ * is included into ioctlsort (which is compiled for build). Since some ++ * of these values are used in structure initializers, they cannot be ++ * defined as 'const unsigned int' - instead, they have to be macros. ++ * Hence, the result of preprocessing will be run through sed to change ++ * 'DEFINE' into '#define' ++ */ ++#include <linux/ioctl.h> ++ ++DEFINE HOST_IOC_NONE _IOC_NONE ++DEFINE HOST_IOC_READ _IOC_READ ++DEFINE HOST_IOC_WRITE _IOC_WRITE ++ ++DEFINE HOST_IOC_SIZESHIFT _IOC_SIZESHIFT ++DEFINE HOST_IOC_DIRSHIFT _IOC_DIRSHIFT +diff -urpN strace-4.15.orig/ioctlsort.c strace-4.15/ioctlsort.c +--- strace-4.15.orig/ioctlsort.c 2015-03-28 15:37:30.000000000 -0700 ++++ strace-4.15/ioctlsort.c 2017-01-14 15:50:56.388590804 -0800 +@@ -33,7 +33,8 @@ + #include <stdio.h> + #include <stdlib.h> + #include <string.h> +-#include <linux/ioctl.h> ++ ++#include "ioctl_iocdef.h" + + struct ioctlent { + const char *info; +diff -urpN strace-4.15.orig/Makefile.am strace-4.15/Makefile.am +--- strace-4.15.orig/Makefile.am 2016-12-07 07:53:13.000000000 -0800 ++++ strace-4.15/Makefile.am 2017-01-14 15:50:56.392590842 -0800 +@@ -298,6 +298,7 @@ EXTRA_DIST = \ + debian/watch \ + errnoent.sh \ + generate_sen.sh \ ++ ioctl_iocdef.c \ + ioctlsort.c \ + linux/32/ioctls_inc.h \ + linux/32/ioctls_inc_align16.h \ +@@ -815,10 +816,19 @@ ioctl_redefs%.h: ioctlent%.h ioctlent0.h + ioctlent%.h: ioctlsort% + ./$< > $@ + ++# Need to pick up <linux/ioctl.h> definitions *for host* while compiling ++# ioctlsort *for build*, hence this magic. ++ioctl_iocdef.i: $(srcdir)/ioctl_iocdef.c ++ $(CPP) -P $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(strace_CPPFLAGS) $(CPPFLAGS) $< -o $@ ++ ++ioctl_iocdef.h: ioctl_iocdef.i ++ sed -n 's/^DEFINE HOST/#define /p' $< > $@ ++ + ioctlsort%$(BUILD_EXEEXT): ioctlsort%.o + $(ioctlsort_CC) $(ioctlsort_CFLAGS) $(ioctlsort_LDFLAGS) $< -o $@ + +-ioctlsort%.o: ioctls_all%.h $(srcdir)/ioctlsort.c ++ioctlsort%.o: ioctls_all%.h ioctl_iocdef.h $(srcdir)/ioctlsort.c + $(ioctlsort_CC) $(ioctlsort_DEFS) $(ioctlsort_INCLUDES) $(ioctlsort_CPPFLAGS) $(ioctlsort_CFLAGS) -DIOCTLSORT_INC=\"$<\" -c -o $@ $(srcdir)/ioctlsort.c + + ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%.h $(srcdir)/$(OS)/$(ARCH)/ioctls_arch%.h +@@ -826,7 +836,7 @@ ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/i + + BUILT_SOURCES = $(ioctl_redefs_h) $(ioctlent_h) \ + native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h .version +-CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) $(mpers_preproc_files) \ ++CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) ioctl_iocdef.h $(mpers_preproc_files) \ + native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h + DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h + +diff -urpN strace-4.15.orig/Makefile.in strace-4.15/Makefile.in +--- strace-4.15.orig/Makefile.in 2016-12-14 01:17:46.000000000 -0800 ++++ strace-4.15/Makefile.in 2017-01-14 15:50:56.392590842 -0800 +@@ -1036,6 +1036,7 @@ EXTRA_DIST = \ + debian/watch \ + errnoent.sh \ + generate_sen.sh \ ++ ioctl_iocdef.c \ + ioctlsort.c \ + linux/32/ioctls_inc.h \ + linux/32/ioctls_inc_align16.h \ +@@ -1514,7 +1515,7 @@ ioctl_redefs_h = $(filter-out ioctl_rede + BUILT_SOURCES = $(ioctl_redefs_h) $(ioctlent_h) native_printer_decls.h \ + native_printer_defs.h printers.h sen.h sys_func.h .version \ + $(am__append_7) $(am__append_11) +-CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) $(mpers_preproc_files) \ ++CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) octl_iocdef.h $(mpers_preproc_files) \ + native_printer_decls.h native_printer_defs.h printers.h sen.h \ + sys_func.h $(am__append_8) $(am__append_12) + DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h +@@ -6177,13 +6178,22 @@ ioctl_redefs%.h: ioctlent%.h ioctlent0.h + rm -f $<-t + mv $@-t $@ + ++# Need to pick up <linux/ioctl.h> definitions *for host* while compiling ++# ioctlsort *for build*, hence this magic. ++ioctl_iocdef.i: $(srcdir)/ioctl_iocdef.c ++ $(CPP) -P $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(strace_CPPFLAGS) $(CPPFLAGS) $< -o $@ ++ ++ioctl_iocdef.h: ioctl_iocdef.i ++ sed -n 's/^DEFINE HOST/#define /p' $< > $@ ++ + ioctlent%.h: ioctlsort% + ./$< > $@ + + ioctlsort%$(BUILD_EXEEXT): ioctlsort%.o + $(ioctlsort_CC) $(ioctlsort_CFLAGS) $(ioctlsort_LDFLAGS) $< -o $@ + +-ioctlsort%.o: ioctls_all%.h $(srcdir)/ioctlsort.c ++ioctlsort%.o: ioctls_all%.h ioctl_iocdef.h $(srcdir)/ioctlsort.c + $(ioctlsort_CC) $(ioctlsort_DEFS) $(ioctlsort_INCLUDES) $(ioctlsort_CPPFLAGS) $(ioctlsort_CFLAGS) -DIOCTLSORT_INC=\"$<\" -c -o $@ $(srcdir)/ioctlsort.c + + ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%.h $(srcdir)/$(OS)/$(ARCH)/ioctls_arch%.h |