This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "IPFire 3.x development tree".
The branch, master has been updated via 1ba5a3059b185cd68f57a06cdccb10aaffd58a9c (commit) via 1172f26c5e5e7a4193abab44a3f36cc9f8ae98c0 (commit) via 56ba7d1911fe9d55c2f720662e37c24f59ddc40d (commit) via 461b7e77b1ed90bf172cb0af13b7c08b70e98cdc (commit) via a56c436952b43c014e7f2e06d1787746c35e8974 (commit) via 513f8ca4a081e2a0c3c577b6277d78a231af18bd (commit) from 1d155cf115a84ec292bdd8299baa0fbb77be67d6 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 1ba5a3059b185cd68f57a06cdccb10aaffd58a9c Merge: 1d155cf 1172f26 Author: Michael Tremer michael.tremer@ipfire.org Date: Sat Sep 27 12:38:49 2014 +0200
Merge branch 'gcc-4.9'
commit 1172f26c5e5e7a4193abab44a3f36cc9f8ae98c0 Author: Michael Tremer michael.tremer@ipfire.org Date: Sat Sep 27 12:38:14 2014 +0200
libusb: Update to 1.0.19
commit 56ba7d1911fe9d55c2f720662e37c24f59ddc40d Author: Michael Tremer michael.tremer@ipfire.org Date: Sat Sep 27 12:36:42 2014 +0200
bash: Update to 4.3
Updated because of the old version won't compile with GCC 4.9, but also fixes CVE-2014-6271, CVE-2014-7169, and #10631.
commit 461b7e77b1ed90bf172cb0af13b7c08b70e98cdc Author: Michael Tremer michael.tremer@ipfire.org Date: Sat Sep 27 12:36:11 2014 +0200
kernel: Enable -fstack-protector-strong
commit a56c436952b43c014e7f2e06d1787746c35e8974 Author: Michael Tremer michael.tremer@ipfire.org Date: Sat Sep 27 12:34:36 2014 +0200
pakfire: Enable more hardening
Enables -fstack-protector-strong by default, which is supported since GCC 4.9.
commit 513f8ca4a081e2a0c3c577b6277d78a231af18bd Author: Michael Tremer michael.tremer@ipfire.org Date: Sat Sep 27 12:33:42 2014 +0200
gcc: Update to version 4.9.1
-----------------------------------------------------------------------
Summary of changes: bash/bash.nm | 28 +- bash/patches/bash-2.02-security.patch | 11 + bash/patches/bash-2.03-paths.patch | 11 + ...4.0-profile-1.patch => bash-2.03-profile.patch} | 0 bash/patches/bash-2.05a-interpreter.patch | 219 ++++++ bash/patches/bash-2.05b-debuginfo.patch | 10 + bash/patches/bash-2.05b-manso.patch | 10 + bash/patches/bash-2.05b-pgrp_sync.patch | 11 + bash/patches/bash-2.05b-readline-oom.patch | 11 + bash/patches/bash-2.05b-xcc.patch | 19 + bash/patches/bash-3.2-audit.patch | 96 +++ bash/patches/bash-3.2-ssh_source_bash.patch | 12 + bash/patches/bash-4.0-nobits.patch | 154 ++++ bash/patches/bash-4.0-paths-1.patch | 30 - bash/patches/bash-4.1-broken_pipe.patch | 12 + bash/patches/bash-4.1-defer-sigchld-trap.patch | 11 + bash/patches/bash-4.1-examples.patch | 24 + bash/patches/bash-4.2-coverity.patch | 99 +++ bash/patches/bash-4.2-manpage_trap.patch | 12 + bash/patches/bash-4.2-rc2-logout.patch | 36 + bash/patches/bash-4.2-size_type.patch | 14 + bash/patches/bash-4.3-here-doc-ps2-comsub.patch0 | 47 ++ .../bash-4.3-lastpipe-nested-pipe-segfault.patch0 | 24 + bash/patches/bash-4.3-man-ulimit.patch | 24 + bash/patches/bash-4.3-noecho.patch | 39 + bash/patches/bash-4.3-parse-time-keyword.patch0 | 28 + .../bash-4.3-pathexp-globignore-delim.patch0 | 15 + bash/patches/bash-4.3-readline-revert-lines.patch0 | 18 + bash/patches/bash-bashbug.patch | 56 ++ bash/patches/bash-infotags.patch | 30 + bash/patches/bash-requires.patch | 14 +- bash/patches/bash-setlocale.patch | 10 + bash/patches/bash-tty-tests.patch | 54 ++ bash/patches/bash43-001 | 58 ++ bash/patches/bash43-002 | 62 ++ bash/patches/bash43-003 | 48 ++ bash/patches/bash43-004 | 47 ++ bash/patches/bash43-005 | 63 ++ bash/patches/bash43-006 | 48 ++ bash/patches/bash43-007 | 50 ++ bash/patches/bash43-008 | 188 +++++ bash/patches/bash43-009 | 64 ++ bash/patches/bash43-010 | 157 ++++ bash/patches/bash43-011 | 49 ++ bash/patches/bash43-012 | 43 + bash/patches/bash43-013 | 66 ++ bash/patches/bash43-014 | 102 +++ bash/patches/bash43-015 | 58 ++ bash/patches/bash43-016 | 132 ++++ bash/patches/bash43-017 | 51 ++ bash/patches/bash43-018 | 44 ++ bash/patches/bash43-019 | 84 ++ bash/patches/bash43-020 | 110 +++ bash/patches/bash43-021 | 52 ++ bash/patches/bash43-022 | 56 ++ bash/patches/bash43-023 | 104 +++ bash/patches/bash43-024 | 54 ++ bash/patches/bash43-025 | 123 +++ bash/patches/bash43-026 | 60 ++ gcc/gcc.nm | 168 ++-- gcc/patches/01_all_gcc49_configure.patch | 156 ++++ gcc/patches/02_all_gcc48_config.in.patch0 | 32 + gcc/patches/03_all_gcc49_Makefile.in.patch | 96 +++ gcc/patches/04_all_gcc49_default_ssp.patch | 261 ++++++ gcc/patches/05_all_gcc48_gcc.c.patch0 | 25 + .../10_all_gcc49_default-fortify-source.patch | 29 + ...11_all_gcc49_default-warn-format-security.patch | 43 + .../12_all_gcc49_default-warn-trampolines.patch | 25 + gcc/patches/16_all_gcc47_nopie_option.patch | 16 + gcc/patches/20_all_gcc49_config_crtbeginp.patch0 | 40 + gcc/patches/24_all_gcc49_invoke.texi.patch0 | 44 ++ gcc/patches/34_all_gcc48_config_i386.patch | 56 ++ gcc/patches/35_all_gcc48_config_arm.patch | 35 + gcc/patches/40_all_gcc49_config_esp.patch0 | 135 ++++ gcc/patches/53_all_libitm-no-fortify-source.patch | 27 + gcc/patches/gcc-4.8.1-piepatch-20130628.patch | 874 --------------------- gcc/patches/gcc49-aarch64-async-unw-tables.patch0 | 35 + gcc/patches/gcc49-aarch64-unwind-opt.patch0 | 338 ++++++++ gcc/patches/gcc49-cloog-dl.patch0 | 476 +++++++++++ gcc/patches/gcc49-cloog-dl2.patch0 | 74 ++ gcc/patches/gcc49-color-auto.patch0 | 46 ++ ...86-libgomp.patch0 => gcc49-i386-libgomp.patch0} | 0 ...c++-docs.patch0 => gcc49-libstdc++-docs.patch0} | 4 +- ...-rpath.patch0 => gcc49-libtool-no-rpath.patch0} | 0 ...dd-needed.patch0 => gcc49-no-add-needed.patch0} | 0 gcc/patches/gcc49-pr38757.patch0 | 106 +++ gcc/patches/gcc49-pr56493.patch0 | 76 ++ kernel/config-generic | 4 +- kernel/kernel.nm | 3 +- libusb/libusb.nm | 2 +- pakfire/pakfire.nm | 5 +- .../0001-CFLAGS-Enable-more-hardening.patch | 26 + 92 files changed, 5436 insertions(+), 983 deletions(-) create mode 100644 bash/patches/bash-2.02-security.patch create mode 100644 bash/patches/bash-2.03-paths.patch rename bash/patches/{bash-4.0-profile-1.patch => bash-2.03-profile.patch} (100%) create mode 100644 bash/patches/bash-2.05a-interpreter.patch create mode 100644 bash/patches/bash-2.05b-debuginfo.patch create mode 100644 bash/patches/bash-2.05b-manso.patch create mode 100644 bash/patches/bash-2.05b-pgrp_sync.patch create mode 100644 bash/patches/bash-2.05b-readline-oom.patch create mode 100644 bash/patches/bash-2.05b-xcc.patch create mode 100644 bash/patches/bash-3.2-audit.patch create mode 100644 bash/patches/bash-3.2-ssh_source_bash.patch create mode 100644 bash/patches/bash-4.0-nobits.patch delete mode 100644 bash/patches/bash-4.0-paths-1.patch create mode 100644 bash/patches/bash-4.1-broken_pipe.patch create mode 100644 bash/patches/bash-4.1-defer-sigchld-trap.patch create mode 100644 bash/patches/bash-4.1-examples.patch create mode 100644 bash/patches/bash-4.2-coverity.patch create mode 100644 bash/patches/bash-4.2-manpage_trap.patch create mode 100644 bash/patches/bash-4.2-rc2-logout.patch create mode 100644 bash/patches/bash-4.2-size_type.patch create mode 100644 bash/patches/bash-4.3-here-doc-ps2-comsub.patch0 create mode 100644 bash/patches/bash-4.3-lastpipe-nested-pipe-segfault.patch0 create mode 100644 bash/patches/bash-4.3-man-ulimit.patch create mode 100644 bash/patches/bash-4.3-noecho.patch create mode 100644 bash/patches/bash-4.3-parse-time-keyword.patch0 create mode 100644 bash/patches/bash-4.3-pathexp-globignore-delim.patch0 create mode 100644 bash/patches/bash-4.3-readline-revert-lines.patch0 create mode 100644 bash/patches/bash-bashbug.patch create mode 100644 bash/patches/bash-infotags.patch create mode 100644 bash/patches/bash-setlocale.patch create mode 100644 bash/patches/bash-tty-tests.patch create mode 100644 bash/patches/bash43-001 create mode 100644 bash/patches/bash43-002 create mode 100644 bash/patches/bash43-003 create mode 100644 bash/patches/bash43-004 create mode 100644 bash/patches/bash43-005 create mode 100644 bash/patches/bash43-006 create mode 100644 bash/patches/bash43-007 create mode 100644 bash/patches/bash43-008 create mode 100644 bash/patches/bash43-009 create mode 100644 bash/patches/bash43-010 create mode 100644 bash/patches/bash43-011 create mode 100644 bash/patches/bash43-012 create mode 100644 bash/patches/bash43-013 create mode 100644 bash/patches/bash43-014 create mode 100644 bash/patches/bash43-015 create mode 100644 bash/patches/bash43-016 create mode 100644 bash/patches/bash43-017 create mode 100644 bash/patches/bash43-018 create mode 100644 bash/patches/bash43-019 create mode 100644 bash/patches/bash43-020 create mode 100644 bash/patches/bash43-021 create mode 100644 bash/patches/bash43-022 create mode 100644 bash/patches/bash43-023 create mode 100644 bash/patches/bash43-024 create mode 100644 bash/patches/bash43-025 create mode 100644 bash/patches/bash43-026 create mode 100644 gcc/patches/01_all_gcc49_configure.patch create mode 100644 gcc/patches/02_all_gcc48_config.in.patch0 create mode 100644 gcc/patches/03_all_gcc49_Makefile.in.patch create mode 100644 gcc/patches/04_all_gcc49_default_ssp.patch create mode 100644 gcc/patches/05_all_gcc48_gcc.c.patch0 create mode 100644 gcc/patches/10_all_gcc49_default-fortify-source.patch create mode 100644 gcc/patches/11_all_gcc49_default-warn-format-security.patch create mode 100644 gcc/patches/12_all_gcc49_default-warn-trampolines.patch create mode 100644 gcc/patches/16_all_gcc47_nopie_option.patch create mode 100644 gcc/patches/20_all_gcc49_config_crtbeginp.patch0 create mode 100644 gcc/patches/24_all_gcc49_invoke.texi.patch0 create mode 100644 gcc/patches/34_all_gcc48_config_i386.patch create mode 100644 gcc/patches/35_all_gcc48_config_arm.patch create mode 100644 gcc/patches/40_all_gcc49_config_esp.patch0 create mode 100644 gcc/patches/53_all_libitm-no-fortify-source.patch delete mode 100644 gcc/patches/gcc-4.8.1-piepatch-20130628.patch create mode 100644 gcc/patches/gcc49-aarch64-async-unw-tables.patch0 create mode 100644 gcc/patches/gcc49-aarch64-unwind-opt.patch0 create mode 100644 gcc/patches/gcc49-cloog-dl.patch0 create mode 100644 gcc/patches/gcc49-cloog-dl2.patch0 create mode 100644 gcc/patches/gcc49-color-auto.patch0 rename gcc/patches/{gcc48-i386-libgomp.patch0 => gcc49-i386-libgomp.patch0} (100%) rename gcc/patches/{gcc48-libstdc++-docs.patch0 => gcc49-libstdc++-docs.patch0} (96%) rename gcc/patches/{gcc48-libtool-no-rpath.patch0 => gcc49-libtool-no-rpath.patch0} (100%) rename gcc/patches/{gcc48-no-add-needed.patch0 => gcc49-no-add-needed.patch0} (100%) create mode 100644 gcc/patches/gcc49-pr38757.patch0 create mode 100644 gcc/patches/gcc49-pr56493.patch0 create mode 100644 pakfire/patches/0001-CFLAGS-Enable-more-hardening.patch
Difference in files: diff --git a/bash/bash.nm b/bash/bash.nm index 83435de..9894794 100644 --- a/bash/bash.nm +++ b/bash/bash.nm @@ -4,7 +4,7 @@ ###############################################################################
name = bash -version = 4.2 +version = 4.3 release = 11
groups = System/Tools @@ -28,7 +28,6 @@ build bison filesystem >= 002 ncurses-devel - readline-devel texinfo end
@@ -43,13 +42,18 @@ build end
configure_options += \ - --without-bash-malloc \ - --with-installed-readline + --with-afs \ + --with-bash-malloc=no + + # Recycles pids is neccessary. When bash's last fork's pid was X + # and new fork's pid is also X, bash has to wait for this same pid. + # Without Recycles pids bash will not wait. + make_build_targets += "CPPFLAGS=-D_GNU_SOURCE -DRECYCLES_PIDS -DDEFAULT_PATH_VALUE='"/usr/local/bin:/usr/bin"' $(getconf LFS_CFLAGS)"
# Test hangs forever - #def test - # make tests - #end + test + make tests + end
install_cmds mkdir -pv %{BUILDROOT}%{sysconfdir}/{profile.d,skel} @@ -68,6 +72,16 @@ build cp -vf %{DIR_SOURCE}/profile.d/* %{BUILDROOT}/etc/profile.d
ln -svf bash %{BUILDROOT}%{bindir}/sh + + # https://bugzilla.redhat.com/show_bug.cgi?id=820192 + # bug #820192, need to add execable alternatives for regular built-ins + for f in alias bg cd command fc fg getopts jobs read umask unalias wait; do + ( + echo "#!/bin/sh" + echo "builtin "${f}" "$@"" + ) > "%{BUILDROOT}/%{bindir}/${f}" + chmod +x "%{BUILDROOT}%{bindir}/${f}" + done end end
diff --git a/bash/patches/bash-2.02-security.patch b/bash/patches/bash-2.02-security.patch new file mode 100644 index 0000000..f8a913b --- /dev/null +++ b/bash/patches/bash-2.02-security.patch @@ -0,0 +1,11 @@ +--- bash-2.02-orig/parse.y Wed Mar 25 18:16:23 1998 ++++ bash-2.02/parse.y Sun Apr 19 16:46:34 1998 +@@ -923,7 +923,7 @@ + + #if defined (READLINE) + char *current_readline_prompt = (char *)NULL; +-char *current_readline_line = (char *)NULL; ++unsigned char *current_readline_line = (unsigned char *)NULL; + int current_readline_line_index = 0; + + static int diff --git a/bash/patches/bash-2.03-paths.patch b/bash/patches/bash-2.03-paths.patch new file mode 100644 index 0000000..24ec5cc --- /dev/null +++ b/bash/patches/bash-2.03-paths.patch @@ -0,0 +1,11 @@ +--- bash-3.0/config-top.h.paths 2003-08-05 15:36:12.000000000 +0100 ++++ bash-3.0/config-top.h 2004-07-28 09:36:27.117205637 +0100 +@@ -66,7 +66,7 @@ + the Posix.2 confstr () function, or CS_PATH define are not present. */ + #ifndef STANDARD_UTILS_PATH + #define STANDARD_UTILS_PATH \ +- "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc" ++ "/bin:/usr/bin:/usr/sbin:/sbin" + #endif + + /* Default primary and secondary prompt strings. */ diff --git a/bash/patches/bash-2.03-profile.patch b/bash/patches/bash-2.03-profile.patch new file mode 100644 index 0000000..ba3344b --- /dev/null +++ b/bash/patches/bash-2.03-profile.patch @@ -0,0 +1,12 @@ +diff -up bash-3.2/config-top.h.profile bash-3.2/config-top.h +--- bash-3.2/config-top.h.profile 2008-07-17 13:35:39.000000000 +0200 ++++ bash-3.2/config-top.h 2008-07-17 13:42:18.000000000 +0200 +@@ -26,6 +26,8 @@ + what POSIX.2 specifies. */ + #define CONTINUE_AFTER_KILL_ERROR + ++#define NON_INTERACTIVE_LOGIN_SHELLS ++ + /* Define BREAK_COMPLAINS if you want the non-standard, but useful + error messages about `break' and `continue' out of context. */ + #define BREAK_COMPLAINS diff --git a/bash/patches/bash-2.05a-interpreter.patch b/bash/patches/bash-2.05a-interpreter.patch new file mode 100644 index 0000000..b9f0da2 --- /dev/null +++ b/bash/patches/bash-2.05a-interpreter.patch @@ -0,0 +1,219 @@ +diff -up bash-4.2-rc2/config.h.in.interpreter bash-4.2-rc2/config.h.in +--- bash-4.2-rc2/config.h.in.interpreter 2011-02-09 07:59:21.000000000 +0100 ++++ bash-4.2-rc2/config.h.in 2011-02-09 07:59:21.000000000 +0100 +@@ -706,6 +706,9 @@ + /* Define if you have the pathconf function. */ + #undef HAVE_PATHCONF + ++/* Define if you have the pread function. */ ++#undef HAVE_PREAD ++ + /* Define if you have the putenv function. */ + #undef HAVE_PUTENV + +@@ -898,6 +901,9 @@ + /* Define if you have the <dlfcn.h> header file. */ + #undef HAVE_DLFCN_H + ++/* Define if you have the <elf.h> header file. */ ++#undef HAVE_ELF_H ++ + /* Define if you have the <grp.h> header file. */ + #undef HAVE_GRP_H + +diff -up bash-4.2-rc2/configure.in.interpreter bash-4.2-rc2/configure.in +--- bash-4.2-rc2/configure.in.interpreter 2011-01-16 21:31:12.000000000 +0100 ++++ bash-4.2-rc2/configure.ac 2011-02-09 08:02:27.000000000 +0100 +@@ -659,7 +659,7 @@ BASH_HEADER_INTTYPES + AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ + memory.h locale.h termcap.h termio.h termios.h dlfcn.h \ + stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \ +- regex.h syslog.h ulimit.h) ++ regex.h syslog.h ulimit.h elf.h) + AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h \ + sys/resource.h sys/param.h sys/socket.h sys/stat.h \ + sys/time.h sys/times.h sys/types.h sys/wait.h) +@@ -723,7 +723,7 @@ dnl checks for system calls + AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \ + getpagesize getpeername getrlimit getrusage gettimeofday \ + kill killpg lstat readlink sbrk select setdtablesize \ +- setitimer tcgetpgrp uname ulimit waitpid) ++ setitimer tcgetpgrp uname ulimit waitpid pread) + AC_REPLACE_FUNCS(rename) + + dnl checks for c library functions +diff -up bash-4.2-rc2/execute_cmd.c.interpreter bash-4.2-rc2/execute_cmd.c +--- bash-4.2-rc2/execute_cmd.c.interpreter 2011-01-20 04:24:47.000000000 +0100 ++++ bash-4.2-rc2/execute_cmd.c 2011-02-09 07:59:21.000000000 +0100 +@@ -41,6 +41,10 @@ + # include <unistd.h> + #endif + ++#ifdef HAVE_ELF_H ++# include <elf.h> ++#endif ++ + #include "posixtime.h" + + #if defined (HAVE_SYS_RESOURCE_H) && !defined (RLIMTYPE) +@@ -4975,14 +4979,22 @@ shell_execve (command, args, env) + { + /* The file has the execute bits set, but the kernel refuses to + run it for some reason. See why. */ ++#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H) ++ int fd = open (command, O_RDONLY); ++ ++ if (fd >= 0) ++ sample_len = read (fd, sample, sizeof (sample)); ++ else ++ sample_len = -1; ++#endif + #if defined (HAVE_HASH_BANG_EXEC) +- READ_SAMPLE_BUF (command, sample, sample_len); + sample[sample_len - 1] = '\0'; + if (sample_len > 2 && sample[0] == '#' && sample[1] == '!') + { + char *interp; + int ilen; + ++ close (fd); + interp = getinterp (sample, sample_len, (int *)NULL); + ilen = strlen (interp); + errno = i; +@@ -4997,6 +5009,136 @@ shell_execve (command, args, env) + return (EX_NOEXEC); + } + #endif ++#if defined (HAVE_ELF_H) ++ if (i == ENOENT ++ && sample_len > EI_NIDENT ++ && memcmp (sample, ELFMAG, SELFMAG) == 0) ++ { ++ off_t offset = -1; ++ ++ /* It is an ELF file. Now determine whether it is dynamically ++ linked and if yes, get the offset of the interpreter ++ string. */ ++ if (sample[EI_CLASS] == ELFCLASS32 ++ && sample_len > sizeof (Elf32_Ehdr)) ++ { ++ Elf32_Ehdr ehdr; ++ Elf32_Phdr *phdr; ++ int nphdr; ++ ++ /* We have to copy the data since the sample buffer ++ might not be aligned correctly to be accessed as ++ an Elf32_Ehdr struct. */ ++ memcpy (&ehdr, sample, sizeof (Elf32_Ehdr)); ++ ++ nphdr = ehdr.e_phnum; ++ phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize); ++ if (phdr != NULL) ++ { ++#ifdef HAVE_PREAD ++ sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize, ++ ehdr.e_phoff); ++#else ++ if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1) ++ sample_len = read (fd, phdr, ++ nphdr * ehdr.e_phentsize); ++ else ++ sample_len = -1; ++#endif ++ if (sample_len == nphdr * ehdr.e_phentsize) ++ while (nphdr-- > 0) ++ if (phdr[nphdr].p_type == PT_INTERP) ++ { ++ offset = phdr[nphdr].p_offset; ++ break; ++ } ++ free (phdr); ++ } ++ } ++ else if (sample[EI_CLASS] == ELFCLASS64 ++ && sample_len > sizeof (Elf64_Ehdr)) ++ { ++ Elf64_Ehdr ehdr; ++ Elf64_Phdr *phdr; ++ int nphdr; ++ ++ /* We have to copy the data since the sample buffer ++ might not be aligned correctly to be accessed as ++ an Elf64_Ehdr struct. */ ++ memcpy (&ehdr, sample, sizeof (Elf64_Ehdr)); ++ ++ nphdr = ehdr.e_phnum; ++ phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize); ++ if (phdr != NULL) ++ { ++#ifdef HAVE_PREAD ++ sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize, ++ ehdr.e_phoff); ++#else ++ if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1) ++ sample_len = read (fd, phdr, ++ nphdr * ehdr.e_phentsize); ++ else ++ sample_len = -1; ++#endif ++ if (sample_len == nphdr * ehdr.e_phentsize) ++ while (nphdr-- > 0) ++ if (phdr[nphdr].p_type == PT_INTERP) ++ { ++ offset = phdr[nphdr].p_offset; ++ break; ++ } ++ free (phdr); ++ } ++ } ++ ++ if (offset != -1) ++ { ++ size_t maxlen = 0; ++ size_t actlen = 0; ++ char *interp = NULL; ++ ++ do ++ { ++ if (actlen == maxlen) ++ { ++ char *newinterp = realloc (interp, maxlen += 200); ++ if (newinterp == NULL) ++ { ++ actlen = 0; ++ break; ++ } ++ interp = newinterp; ++ ++#ifdef HAVE_PREAD ++ actlen = pread (fd, interp, maxlen, offset); ++#else ++ if (lseek (fd, offset, SEEK_SET) != -1) ++ actlen = read (fd, interp, maxlen); ++ else ++ actlen = -1; ++#endif ++ } ++ } ++ while (actlen > 0 && memchr (interp, '\0', actlen) == NULL); ++ ++ if (actlen > 0) ++ { ++ close (fd); ++ errno = i; ++ sys_error ("%s: %s: bad ELF interpreter", command, ++ interp); ++ free (interp); ++ return (EX_NOEXEC); ++ } ++ ++ free (interp); ++ } ++ } ++#endif ++#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H) ++ close (fd); ++#endif + errno = i; + file_error (command); + } diff --git a/bash/patches/bash-2.05b-debuginfo.patch b/bash/patches/bash-2.05b-debuginfo.patch new file mode 100644 index 0000000..3278cab --- /dev/null +++ b/bash/patches/bash-2.05b-debuginfo.patch @@ -0,0 +1,10 @@ +--- bash-2.05b/builtins/Makefile.in.debuginfo 2003-03-25 17:25:21.000000000 +0000 ++++ bash-2.05b/builtins/Makefile.in 2003-03-25 17:25:49.000000000 +0000 +@@ -93,7 +93,6 @@ + $(RM) $@ + ./$(MKBUILTINS) $(DIRECTDEFINE) $< + $(CC) -c $(CCFLAGS) $*.c || ( $(RM) $*.c ; exit 1 ) +- $(RM) $*.c + + # How to make a .c file from a .def file. + .def.c: diff --git a/bash/patches/bash-2.05b-manso.patch b/bash/patches/bash-2.05b-manso.patch new file mode 100644 index 0000000..39ebf74 --- /dev/null +++ b/bash/patches/bash-2.05b-manso.patch @@ -0,0 +1,10 @@ +--- bash-2.05b/doc/builtins.1.manso 2003-02-10 18:58:21.000000000 +0000 ++++ bash-2.05b/doc/builtins.1 2003-02-10 18:58:28.000000000 +0000 +@@ -10,6 +10,6 @@ + ulimit, umask, unalias, unset, wait - bash built-in commands, see \fBbash\fR(1) + .SH BASH BUILTIN COMMANDS + .nr zZ 1 +-.so bash.1 ++.so man1/bash.1 + .SH SEE ALSO + bash(1), sh(1) diff --git a/bash/patches/bash-2.05b-pgrp_sync.patch b/bash/patches/bash-2.05b-pgrp_sync.patch new file mode 100644 index 0000000..bd7ded6 --- /dev/null +++ b/bash/patches/bash-2.05b-pgrp_sync.patch @@ -0,0 +1,11 @@ +--- bash-2.05b/aclocal.m4.pgrp_sync 2002-06-25 14:45:43.000000000 +0100 ++++ bash-2.05b/aclocal.m4 2003-01-15 18:17:35.000000000 +0000 +@@ -1255,7 +1255,7 @@ + wait(&status); + exit(ok ? 0 : 5); + } +-], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes, ++], bash_cv_pgrp_pipe=yes,bash_cv_pgrp_pipe=yes, + [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no) + bash_cv_pgrp_pipe=no]) + ]) diff --git a/bash/patches/bash-2.05b-readline-oom.patch b/bash/patches/bash-2.05b-readline-oom.patch new file mode 100644 index 0000000..f25d780 --- /dev/null +++ b/bash/patches/bash-2.05b-readline-oom.patch @@ -0,0 +1,11 @@ +--- bash-2.05b/lib/readline/readline.c.oom 2002-03-13 23:10:46.000000000 +0100 ++++ bash-2.05b/lib/readline/readline.c 2002-08-07 12:02:04.000000000 +0200 +@@ -817,7 +817,7 @@ + /* Special case rl_do_lowercase_version (). */ + if (func == rl_do_lowercase_version) + /* Should we do anything special if key == ANYOTHERKEY? */ +- return (_rl_dispatch (_rl_to_lower (key), map)); ++ return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map)); + + rl_executing_keymap = map; + rl_executing_key = key; diff --git a/bash/patches/bash-2.05b-xcc.patch b/bash/patches/bash-2.05b-xcc.patch new file mode 100644 index 0000000..ad42832 --- /dev/null +++ b/bash/patches/bash-2.05b-xcc.patch @@ -0,0 +1,19 @@ +--- bash-3.1/Makefile.in.xcc 2005-10-25 19:37:52.000000000 +0100 ++++ bash-3.1/Makefile.in 2005-12-23 16:11:09.000000000 +0000 +@@ -68,6 +68,7 @@ + ARFLAGS = @ARFLAGS@ + RANLIB = @RANLIB@ + SIZE = @SIZE@ ++STRIP = strip + + INSTALL = @INSTALL@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ +@@ -535,7 +536,7 @@ + @chmod a+rx bashbug + + strip: $(Program) .made +- strip $(Program) ++ $(STRIP) $(Program) + ls -l $(Program) + -$(SIZE) $(Program) + diff --git a/bash/patches/bash-3.2-audit.patch b/bash/patches/bash-3.2-audit.patch new file mode 100644 index 0000000..48a1751 --- /dev/null +++ b/bash/patches/bash-3.2-audit.patch @@ -0,0 +1,96 @@ +diff -up bash-4.2/config.h.in.audit bash-4.2/config.h.in +--- bash-4.2/config.h.in.audit 2013-01-31 16:26:16.857698992 +0100 ++++ bash-4.2/config.h.in 2013-01-31 16:26:16.876699255 +0100 +@@ -1131,6 +1131,14 @@ + + /* End additions for lib/intl */ + ++ ++/* Additions for lib/readline */ ++ ++/* Define if you have <linux/audit.h> and it defines AUDIT_USER_TTY */ ++#undef HAVE_DECL_AUDIT_USER_TTY ++ ++/* End additions for lib/readline */ ++ + #include "config-bot.h" + + #endif /* _CONFIG_H_ */ +diff -up bash-4.2/configure.in.audit bash-4.2/configure.in +--- bash-4.2/configure.in.audit 2013-01-31 16:26:16.858699005 +0100 ++++ bash-4.2/configure.ac 2013-01-31 16:26:16.877699269 +0100 +@@ -888,6 +888,8 @@ BASH_FUNC_DUP2_CLOEXEC_CHECK + BASH_SYS_PGRP_SYNC + BASH_SYS_SIGNAL_VINTAGE + ++AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include <linux/audit.h>]]) ++ + dnl checking for the presence of certain library symbols + BASH_SYS_ERRLIST + BASH_SYS_SIGLIST +diff -up bash-4.2/lib/readline/readline.c.audit bash-4.2/lib/readline/readline.c +--- bash-4.2/lib/readline/readline.c.audit 2013-01-31 16:26:16.871699185 +0100 ++++ bash-4.2/lib/readline/readline.c 2013-01-31 17:24:23.902744860 +0100 +@@ -55,6 +55,12 @@ + extern int errno; + #endif /* !errno */ + ++#if defined (HAVE_DECL_AUDIT_USER_TTY) ++# include <sys/socket.h> ++# include <linux/audit.h> ++# include <linux/netlink.h> ++#endif ++ + /* System-specific feature definitions and include files. */ + #include "rldefs.h" + #include "rlmbutil.h" +@@ -301,7 +307,48 @@ rl_set_prompt (prompt) + rl_visible_prompt_length = rl_expand_prompt (rl_prompt); + return 0; + } +- ++ ++#if defined (HAVE_DECL_AUDIT_USER_TTY) ++/* Report STRING to the audit system. */ ++static void ++audit_tty (char *string) ++{ ++ struct sockaddr_nl addr; ++ struct msghdr msg; ++ struct nlmsghdr nlm; ++ struct iovec iov[2]; ++ size_t size; ++ int fd; ++ ++ size = strlen (string) + 1; ++ fd = socket (AF_NETLINK, SOCK_RAW, NETLINK_AUDIT); ++ if (fd < 0) ++ return; ++ nlm.nlmsg_len = NLMSG_LENGTH (size); ++ nlm.nlmsg_type = AUDIT_USER_TTY; ++ nlm.nlmsg_flags = NLM_F_REQUEST; ++ nlm.nlmsg_seq = 0; ++ nlm.nlmsg_pid = 0; ++ iov[0].iov_base = &nlm; ++ iov[0].iov_len = sizeof (nlm); ++ iov[1].iov_base = string; ++ iov[1].iov_len = size; ++ addr.nl_family = AF_NETLINK; ++ addr.nl_pad = 0; ++ addr.nl_pid = 0; ++ addr.nl_groups = 0; ++ msg.msg_name = &addr; ++ msg.msg_namelen = sizeof (addr); ++ msg.msg_iov = iov; ++ msg.msg_iovlen = 2; ++ msg.msg_control = NULL; ++ msg.msg_controllen = 0; ++ msg.msg_flags = 0; ++ (void)sendmsg (fd, &msg, 0); ++ close (fd); ++} ++#endif ++ + /* Read a line of input. Prompt with PROMPT. An empty PROMPT means + none. A return value of NULL means that EOF was encountered. */ + char * diff --git a/bash/patches/bash-3.2-ssh_source_bash.patch b/bash/patches/bash-3.2-ssh_source_bash.patch new file mode 100644 index 0000000..5bd19ce --- /dev/null +++ b/bash/patches/bash-3.2-ssh_source_bash.patch @@ -0,0 +1,12 @@ +diff -up bash-4.0/config-top.h.ssh_source_bash bash-4.0/config-top.h +--- bash-4.0/config-top.h.ssh_source_bash 2009-01-21 15:20:06.000000000 +0100 ++++ bash-4.0/config-top.h 2009-01-21 15:25:46.000000000 +0100 +@@ -90,7 +90,7 @@ + sshd and source the .bashrc if so (like the rshd behavior). This checks + for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment, + which can be fooled under certain not-uncommon circumstances. */ +-/* #define SSH_SOURCE_BASHRC */ ++#define SSH_SOURCE_BASHRC + + /* Define if you want the case-capitalizing operators (~[~]) and the + `capcase' variable attribute (declare -c). */ diff --git a/bash/patches/bash-4.0-nobits.patch b/bash/patches/bash-4.0-nobits.patch new file mode 100644 index 0000000..0e77fda --- /dev/null +++ b/bash/patches/bash-4.0-nobits.patch @@ -0,0 +1,154 @@ +diff -up bash-4.0/execute_cmd.c.nobits bash-4.0/execute_cmd.c +--- bash-4.0/execute_cmd.c.nobits 2009-08-11 11:53:38.000000000 +0200 ++++ bash-4.0/execute_cmd.c 2009-08-14 16:18:18.000000000 +0200 +@@ -4747,6 +4747,7 @@ shell_execve (command, args, env) + && memcmp (sample, ELFMAG, SELFMAG) == 0) + { + off_t offset = -1; ++ int dynamic_nobits = 0; + + /* It is an ELF file. Now determine whether it is dynamically + linked and if yes, get the offset of the interpreter +@@ -4756,13 +4757,61 @@ shell_execve (command, args, env) + { + Elf32_Ehdr ehdr; + Elf32_Phdr *phdr; +- int nphdr; ++ Elf32_Shdr *shdr; ++ int nphdr, nshdr; + + /* We have to copy the data since the sample buffer + might not be aligned correctly to be accessed as + an Elf32_Ehdr struct. */ + memcpy (&ehdr, sample, sizeof (Elf32_Ehdr)); + ++ nshdr = ehdr.e_shnum; ++ shdr = (Elf32_Shdr *) malloc (nshdr * ehdr.e_shentsize); ++ ++ if (shdr != NULL) ++ { ++#ifdef HAVE_PREAD ++ sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize, ++ ehdr.e_shoff); ++#else ++ if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1) ++ sample_len = read (fd, shdr, ++ nshdr * ehdr.e_shentsize); ++ else ++ sample_len = -1; ++#endif ++ if (sample_len == nshdr * ehdr.e_shentsize) ++ { ++ char *strings = (char *) malloc (shdr[ehdr.e_shstrndx].sh_size); ++ if (strings != NULL) ++ { ++#ifdef HAVE_PREAD ++ sample_len = pread (fd, strings, ++ shdr[ehdr.e_shstrndx].sh_size, ++ shdr[ehdr.e_shstrndx].sh_offset); ++#else ++ if (lseek (fd, shdr[ehdr.e_shstrndx].sh_offset, ++ SEEK_SET) != -1) ++ sample_len = read (fd, strings, ++ shdr[ehdr.e_shstrndx].sh_size); ++ else ++ sample_len = -1; ++#endif ++ if (sample_len == shdr[ehdr.e_shstrndx].sh_size) ++ while (nshdr-- > 0) ++ if (strcmp (strings + shdr[nshdr].sh_name, ++ ".interp") == 0 && ++ shdr[nshdr].sh_type == SHT_NOBITS) ++ { ++ dynamic_nobits++; ++ break; ++ } ++ free (strings); ++ } ++ } ++ free (shdr); ++ } ++ + nphdr = ehdr.e_phnum; + phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize); + if (phdr != NULL) +@@ -4792,13 +4841,60 @@ shell_execve (command, args, env) + { + Elf64_Ehdr ehdr; + Elf64_Phdr *phdr; +- int nphdr; ++ Elf64_Shdr *shdr; ++ int nphdr, nshdr; + + /* We have to copy the data since the sample buffer + might not be aligned correctly to be accessed as + an Elf64_Ehdr struct. */ + memcpy (&ehdr, sample, sizeof (Elf64_Ehdr)); + ++ nshdr = ehdr.e_shnum; ++ shdr = (Elf64_Shdr *) malloc (nshdr * ehdr.e_shentsize); ++ if (shdr != NULL) ++ { ++#ifdef HAVE_PREAD ++ sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize, ++ ehdr.e_shoff); ++#else ++ if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1) ++ sample_len = read (fd, shdr, ++ nshdr * ehdr.e_shentsize); ++ else ++ sample_len = -1; ++#endif ++ if (sample_len == nshdr * ehdr.e_shentsize) ++ { ++ char *strings = (char *) malloc (shdr[ehdr.e_shstrndx].sh_size); ++ if (strings != NULL) ++ { ++#ifdef HAVE_PREAD ++ sample_len = pread (fd, strings, ++ shdr[ehdr.e_shstrndx].sh_size, ++ shdr[ehdr.e_shstrndx].sh_offset); ++#else ++ if (lseek (fd, shdr[ehdr.e_shstrndx].sh_offset, ++ SEEK_SET) != -1) ++ sample_len = read (fd, strings, ++ shdr[ehdr.e_shstrndx].sh_size); ++ else ++ sample_len = -1; ++#endif ++ if (sample_len == shdr[ehdr.e_shstrndx].sh_size) ++ while (nshdr-- > 0) ++ if (strcmp (strings + shdr[nshdr].sh_name, ++ ".interp") == 0 && ++ shdr[nshdr].sh_type == SHT_NOBITS) ++ { ++ dynamic_nobits++; ++ break; ++ } ++ free (strings); ++ } ++ } ++ free (shdr); ++ } ++ + nphdr = ehdr.e_phnum; + phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize); + if (phdr != NULL) +@@ -4858,8 +4954,15 @@ shell_execve (command, args, env) + { + close (fd); + errno = i; +- sys_error ("%s: %s: bad ELF interpreter", command, +- interp); ++ if (dynamic_nobits > 0) ++ { ++ sys_error ("%s: bad ELF interpreter", command); ++ } ++ else ++ { ++ sys_error ("%s: %s: bad ELF interpreter", command, ++ interp); ++ } + free (interp); + return (EX_NOEXEC); + } diff --git a/bash/patches/bash-4.0-paths-1.patch b/bash/patches/bash-4.0-paths-1.patch deleted file mode 100644 index 735a381..0000000 --- a/bash/patches/bash-4.0-paths-1.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- bash-3.0/config.h.in.paths 2004-07-21 21:08:31.000000000 +0100 -+++ bash-3.0/config.h.in 2004-07-28 09:16:27.257884999 +0100 -@@ -197,7 +197,7 @@ - - /* System paths */ - --#define DEFAULT_MAIL_DIRECTORY "/usr/spool/mail" -+#define DEFAULT_MAIL_DIRECTORY "/var/spool/mail" - - /* Characteristics of the system's header files and libraries that affect - the compilation environment. */ ---- bash-3.0/config-top.h.paths 2003-08-05 15:36:12.000000000 +0100 -+++ bash-3.0/config-top.h 2004-07-28 09:36:27.117205637 +0100 -@@ -52,14 +52,14 @@ - /* The default value of the PATH variable. */ - #ifndef DEFAULT_PATH_VALUE - #define DEFAULT_PATH_VALUE \ -- "/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:." -+ "/usr/local/bin:/bin:/usr/bin" - #endif - - /* The value for PATH when invoking `command -p'. This is only used when - the Posix.2 confstr () function, or CS_PATH define are not present. */ - #ifndef STANDARD_UTILS_PATH - #define STANDARD_UTILS_PATH \ -- "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc" -+ "/bin:/usr/bin:/usr/sbin:/sbin" - #endif - - /* Default primary and secondary prompt strings. */ diff --git a/bash/patches/bash-4.0-profile-1.patch b/bash/patches/bash-4.0-profile-1.patch deleted file mode 100644 index ba3344b..0000000 --- a/bash/patches/bash-4.0-profile-1.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up bash-3.2/config-top.h.profile bash-3.2/config-top.h ---- bash-3.2/config-top.h.profile 2008-07-17 13:35:39.000000000 +0200 -+++ bash-3.2/config-top.h 2008-07-17 13:42:18.000000000 +0200 -@@ -26,6 +26,8 @@ - what POSIX.2 specifies. */ - #define CONTINUE_AFTER_KILL_ERROR - -+#define NON_INTERACTIVE_LOGIN_SHELLS -+ - /* Define BREAK_COMPLAINS if you want the non-standard, but useful - error messages about `break' and `continue' out of context. */ - #define BREAK_COMPLAINS diff --git a/bash/patches/bash-4.1-broken_pipe.patch b/bash/patches/bash-4.1-broken_pipe.patch new file mode 100644 index 0000000..e083374 --- /dev/null +++ b/bash/patches/bash-4.1-broken_pipe.patch @@ -0,0 +1,12 @@ +diff -up bash-4.1/config-top.h.broken_pipe bash-4.1/config-top.h +--- bash-4.1/config-top.h.broken_pipe 2011-01-06 18:01:30.000000000 +0100 ++++ bash-4.1/config-top.h 2011-01-06 18:02:14.000000000 +0100 +@@ -51,7 +51,7 @@ + /* Define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS if you don't want builtins + like `echo' and `printf' to report errors when output does not succeed + due to EPIPE. */ +-/* #define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS */ ++#define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS + + /* The default value of the PATH variable. */ + #ifndef DEFAULT_PATH_VALUE diff --git a/bash/patches/bash-4.1-defer-sigchld-trap.patch b/bash/patches/bash-4.1-defer-sigchld-trap.patch new file mode 100644 index 0000000..e00adec --- /dev/null +++ b/bash/patches/bash-4.1-defer-sigchld-trap.patch @@ -0,0 +1,11 @@ +diff -pruN bash-4.1/jobs.c bash-4.1.patched/jobs.c +--- bash-4.1/jobs.c 2009-11-30 03:42:05.000000000 +0530 ++++ bash-4.1.patched/jobs.c 2012-03-06 16:44:15.706595703 +0530 +@@ -3037,6 +3037,7 @@ waitchld (wpid, block) + pid_t pid; + + int call_set_current, last_stopped_job, job, children_exited, waitpid_flags; ++ int called_from_sighand = sigchld; + static int wcontinued = WCONTINUED; /* run-time fix for glibc problem */ + + call_set_current = children_exited = 0; diff --git a/bash/patches/bash-4.1-examples.patch b/bash/patches/bash-4.1-examples.patch new file mode 100644 index 0000000..19159e7 --- /dev/null +++ b/bash/patches/bash-4.1-examples.patch @@ -0,0 +1,24 @@ +diff -up bash-4.1/examples/loadables/Makefile.in.examples bash-4.1/examples/loadables/Makefile.in +--- bash-4.1/examples/loadables/Makefile.in.examples 2010-06-22 16:20:02.000000000 +0200 ++++ bash-4.1/examples/loadables/Makefile.in 2010-06-22 16:20:41.000000000 +0200 +@@ -43,7 +43,7 @@ host_os = @host_os@ + host_cpu = @host_cpu@ + host_vendor = @host_vendor@ + +-CFLAGS = @CFLAGS@ ++CFLAGS = -O2 -g + LOCAL_CFLAGS = @LOCAL_CFLAGS@ + DEFS = @DEFS@ + LOCAL_DEFS = @LOCAL_DEFS@ +diff -up bash-4.1/examples/loadables/perl/Makefile.in.examples bash-4.1/examples/loadables/perl/Makefile.in +--- bash-4.1/examples/loadables/perl/Makefile.in.examples 2010-06-22 16:20:46.000000000 +0200 ++++ bash-4.1/examples/loadables/perl/Makefile.in 2010-06-22 16:21:04.000000000 +0200 +@@ -42,7 +42,7 @@ SHELL = @MAKE_SHELL@ + + PERL5 = perl5 + +-CFLAGS = @CFLAGS@ ++CFLAGS = -O2 -g + + # + # These values are generated for configure by ${topdir}/support/shobj-conf. diff --git a/bash/patches/bash-4.2-coverity.patch b/bash/patches/bash-4.2-coverity.patch new file mode 100644 index 0000000..5fc8456 --- /dev/null +++ b/bash/patches/bash-4.2-coverity.patch @@ -0,0 +1,99 @@ +diff -up bash-4.2/execute_cmd.c.coverity bash-4.2/execute_cmd.c +--- bash-4.2/execute_cmd.c.coverity 2011-02-24 13:04:35.000000000 +0100 ++++ bash-4.2/execute_cmd.c 2011-02-24 13:49:13.000000000 +0100 +@@ -5036,7 +5036,7 @@ shell_execve (command, args, env) + Elf32_Ehdr ehdr; + Elf32_Phdr *phdr; + Elf32_Shdr *shdr; +- int nphdr, nshdr; ++ Elf32_Half nphdr, nshdr; + + /* We have to copy the data since the sample buffer + might not be aligned correctly to be accessed as +@@ -5044,12 +5044,12 @@ shell_execve (command, args, env) + memcpy (&ehdr, sample, sizeof (Elf32_Ehdr)); + + nshdr = ehdr.e_shnum; +- shdr = (Elf32_Shdr *) malloc (nshdr * ehdr.e_shentsize); ++ shdr = (Elf32_Shdr *) malloc ((size_t)nshdr * (size_t)ehdr.e_shentsize); + + if (shdr != NULL) + { + #ifdef HAVE_PREAD +- sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize, ++ sample_len = pread (fd, shdr, (size_t)nshdr * (size_t)ehdr.e_shentsize, + ehdr.e_shoff); + #else + if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1) +@@ -5091,11 +5091,11 @@ shell_execve (command, args, env) + } + + nphdr = ehdr.e_phnum; +- phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize); ++ phdr = (Elf32_Phdr *) malloc ((size_t)nphdr * (size_t)ehdr.e_phentsize); + if (phdr != NULL) + { + #ifdef HAVE_PREAD +- sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize, ++ sample_len = pread (fd, phdr, (size_t)nphdr * (size_t)ehdr.e_phentsize, + ehdr.e_phoff); + #else + if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1) +@@ -5120,7 +5120,7 @@ shell_execve (command, args, env) + Elf64_Ehdr ehdr; + Elf64_Phdr *phdr; + Elf64_Shdr *shdr; +- int nphdr, nshdr; ++ Elf32_Half nphdr, nshdr; + + /* We have to copy the data since the sample buffer + might not be aligned correctly to be accessed as +@@ -5128,11 +5128,11 @@ shell_execve (command, args, env) + memcpy (&ehdr, sample, sizeof (Elf64_Ehdr)); + + nshdr = ehdr.e_shnum; +- shdr = (Elf64_Shdr *) malloc (nshdr * ehdr.e_shentsize); ++ shdr = (Elf64_Shdr *) malloc ((size_t)nshdr * (size_t)ehdr.e_shentsize); + if (shdr != NULL) + { + #ifdef HAVE_PREAD +- sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize, ++ sample_len = pread (fd, shdr, (size_t)nshdr * (size_t)ehdr.e_shentsize, + ehdr.e_shoff); + #else + if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1) +@@ -5174,11 +5174,11 @@ shell_execve (command, args, env) + } + + nphdr = ehdr.e_phnum; +- phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize); ++ phdr = (Elf64_Phdr *) malloc ((size_t)nphdr * (size_t)ehdr.e_phentsize); + if (phdr != NULL) + { + #ifdef HAVE_PREAD +- sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize, ++ sample_len = pread (fd, phdr, (size_t)nphdr * (size_t)ehdr.e_phentsize, + ehdr.e_phoff); + #else + if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1) +@@ -5200,8 +5200,8 @@ shell_execve (command, args, env) + + if (offset != -1) + { +- size_t maxlen = 0; +- size_t actlen = 0; ++ ssize_t maxlen = 0; ++ ssize_t actlen = 0; + char *interp = NULL; + + do +@@ -5250,7 +5250,8 @@ shell_execve (command, args, env) + } + #endif + #if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H) +- close (fd); ++ if (fd >= 0) ++ close (fd); + #endif + errno = i; + file_error (command); diff --git a/bash/patches/bash-4.2-manpage_trap.patch b/bash/patches/bash-4.2-manpage_trap.patch new file mode 100644 index 0000000..e81882f --- /dev/null +++ b/bash/patches/bash-4.2-manpage_trap.patch @@ -0,0 +1,12 @@ +diff -up bash-4.1/doc/bash.1.manpage_trap bash-4.1/doc/bash.1 +--- bash-4.1/doc/bash.1.manpage_trap 2012-08-28 10:06:00.561999092 +0200 ++++ bash-4.1/doc/bash.1 2012-08-28 10:06:24.225304505 +0200 +@@ -9251,7 +9251,7 @@ being inverted via + These are the same conditions obeyed by the \fBerrexit\fP (\fB-e\fP) option. + .if t .sp 0.5 + .if n .sp 1 +-Signals ignored upon entry to the shell cannot be trapped or reset. ++Signals ignored upon entry to the shell cannot be trapped, reset or listed. + Trapped signals that are not being ignored are reset to their original + values in a subshell or subshell environment when one is created. + The return status is false if any diff --git a/bash/patches/bash-4.2-rc2-logout.patch b/bash/patches/bash-4.2-rc2-logout.patch new file mode 100644 index 0000000..5aff01a --- /dev/null +++ b/bash/patches/bash-4.2-rc2-logout.patch @@ -0,0 +1,36 @@ +diff -up bash-3.2/config-top.h.logout bash-3.2/config-top.h +--- bash-3.2/config-top.h.logout 2011-04-14 08:55:55.000000000 +0200 ++++ bash-3.2/config-top.h 2011-04-14 08:55:55.000000000 +0200 +@@ -78,7 +78,7 @@ + /* #define SYS_BASHRC "/etc/bash.bashrc" */ + + /* System-wide .bash_logout for login shells. */ +-/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */ ++#define SYS_BASH_LOGOUT "/etc/bash.bash_logout" + + /* Define this to make non-interactive shells begun with argv[0][0] == '-' + run the startup files when not in posix mode. */ +diff -up bash-3.2/doc/bash.1.logout bash-3.2/doc/bash.1 +--- bash-3.2/doc/bash.1.logout 2011-04-14 09:16:32.000000000 +0200 ++++ bash-3.2/doc/bash.1 2011-04-14 11:59:33.000000000 +0200 +@@ -326,8 +326,8 @@ option may be used when the shell is sta + .PP + When a login shell exits, + .B bash +-reads and executes commands from the file \fI~/.bash_logout\fP, if it +-exists. ++reads and executes commands from the files \fI~/.bash_logout\fP ++and \fI/etc/bash.bash_logout\fP, if the files exists. + .PP + When an interactive shell that is not a login shell is started, + .B bash +@@ -8814,6 +8814,9 @@ The \fBbash\fP executable + .FN /etc/profile + The systemwide initialization file, executed for login shells + .TP ++.FN /etc/bash.bash_logout ++The systemwide login shell cleanup file, executed when a login shell exits ++.TP + .FN ~/.bash_profile + The personal initialization file, executed for login shells + .TP diff --git a/bash/patches/bash-4.2-size_type.patch b/bash/patches/bash-4.2-size_type.patch new file mode 100644 index 0000000..ab56677 --- /dev/null +++ b/bash/patches/bash-4.2-size_type.patch @@ -0,0 +1,14 @@ +diff -up bash-4.2/variables.h.size_type bash-4.2/variables.h +--- bash-4.2/variables.h.size_type 2012-11-29 10:33:25.109036844 +0100 ++++ bash-4.2/variables.h 2012-11-29 10:46:12.718530162 +0100 +@@ -95,8 +95,8 @@ typedef struct variable { + + typedef struct _vlist { + SHELL_VAR **list; +- int list_size; /* allocated size */ +- int list_len; /* current number of entries */ ++ size_t list_size; /* allocated size */ ++ size_t list_len; /* current number of entries */ + } VARLIST; + + /* The various attributes that a given variable can have. */ diff --git a/bash/patches/bash-4.3-here-doc-ps2-comsub.patch0 b/bash/patches/bash-4.3-here-doc-ps2-comsub.patch0 new file mode 100644 index 0000000..0ccfd20 --- /dev/null +++ b/bash/patches/bash-4.3-here-doc-ps2-comsub.patch0 @@ -0,0 +1,47 @@ +*** ../bash-4.3-patched/shell.h 2012-12-25 21:11:01.000000000 -0500 +--- shell.h 2014-06-03 09:24:28.000000000 -0400 +*************** +*** 169,173 **** + int expand_aliases; + int echo_input_at_read; +! + } sh_parser_state_t; + +--- 169,174 ---- + int expand_aliases; + int echo_input_at_read; +! int need_here_doc; +! + } sh_parser_state_t; + +*** ../bash-4.3-patched/parse.y 2014-05-14 09:16:40.000000000 -0400 +--- parse.y 2014-04-30 09:27:59.000000000 -0400 +*************** +*** 2643,2647 **** + + r = 0; +! while (need_here_doc) + { + parser_state |= PST_HEREDOC; +--- 2643,2647 ---- + + r = 0; +! while (need_here_doc > 0) + { + parser_state |= PST_HEREDOC; +*************** +*** 6076,6079 **** +--- 6076,6080 ---- + ps->expand_aliases = expand_aliases; + ps->echo_input_at_read = echo_input_at_read; ++ ps->need_here_doc = need_here_doc; + + ps->token = token; +*************** +*** 6124,6127 **** +--- 6125,6129 ---- + expand_aliases = ps->expand_aliases; + echo_input_at_read = ps->echo_input_at_read; ++ need_here_doc = ps->need_here_doc; + + FREE (token); diff --git a/bash/patches/bash-4.3-lastpipe-nested-pipe-segfault.patch0 b/bash/patches/bash-4.3-lastpipe-nested-pipe-segfault.patch0 new file mode 100644 index 0000000..200a84f --- /dev/null +++ b/bash/patches/bash-4.3-lastpipe-nested-pipe-segfault.patch0 @@ -0,0 +1,24 @@ +*** ../bash-4.3-patched/execute_cmd.c 2014-01-31 10:54:52.000000000 -0500 +--- execute_cmd.c 2014-06-19 08:05:49.000000000 -0400 +*************** +*** 2410,2414 **** + lstdin = wait_for (lastpid); + #if defined (JOB_CONTROL) +! exec_result = job_exit_status (lastpipe_jid); + #endif + unfreeze_jobs_list (); +--- 2425,2438 ---- + lstdin = wait_for (lastpid); + #if defined (JOB_CONTROL) +! /* If wait_for removes the job from the jobs table, use result of last +! command as pipeline's exit status as usual. The jobs list can get +! frozen and unfrozen at inconvenient times if there are multiple pipelines +! running simultaneously. */ +! if (INVALID_JOB (lastpipe_jid) == 0) +! exec_result = job_exit_status (lastpipe_jid); +! else if (pipefail_opt) +! exec_result = exec_result | lstdin; /* XXX */ +! /* otherwise we use exec_result */ +! + #endif + unfreeze_jobs_list (); diff --git a/bash/patches/bash-4.3-man-ulimit.patch b/bash/patches/bash-4.3-man-ulimit.patch new file mode 100644 index 0000000..fdba544 --- /dev/null +++ b/bash/patches/bash-4.3-man-ulimit.patch @@ -0,0 +1,24 @@ +From ccd35766d2451677f4c49f66b8e18ad6e274d56a Mon Sep 17 00:00:00 2001 +From: Jan Chaloupka jchaloup@redhat.com +Date: Mon, 7 Jul 2014 07:15:41 +0200 +Subject: [PATCH] bash.1: posix block size for cf options + +--- + doc/bash.1 | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/doc/bash.1 b/doc/bash.1 +index a4ad746..1916515 100644 +--- a/doc/bash.1 ++++ b/doc/bash.1 +@@ -9451,6 +9451,7 @@ and + which are unscaled values. + The return status is 0 unless an invalid option or argument is supplied, + or an error occurs while setting a new limit. ++In POSIX Mode 512-byte blocks are used for the `-c' and `-f' options. + .RE + .TP + \fBumask\fP [\fB-p\fP] [\fB-S\fP] [\fImode\fP] +-- +1.9.3 + diff --git a/bash/patches/bash-4.3-noecho.patch b/bash/patches/bash-4.3-noecho.patch new file mode 100644 index 0000000..8a2842a --- /dev/null +++ b/bash/patches/bash-4.3-noecho.patch @@ -0,0 +1,39 @@ +--- bash-4.3/parse.y 2014-05-29 14:46:09.545543384 +0200 ++++ bash-4.3/parse.y 2014-05-29 14:48:40.758626213 +0200 +@@ -3858,6 +3858,8 @@ xparse_dolparen (base, string, indp, fla + save_parser_state (&ps); + save_input_line_state (&ls); + orig_eof_token = shell_eof_token; ++ /* avoid echoing every substitution again */ ++ echo_input_at_read = 0; + + /*(*/ + parser_state |= PST_CMDSUBST|PST_EOFTOKEN; /* allow instant ')' */ /*(*/ +--- bash-4.3/subst.c 2014-05-29 16:04:35.802784549 +0200 ++++ bash-4.3/subst.c 2014-05-29 16:08:25.021942676 +0200 +@@ -7103,6 +7103,7 @@ param_expand (string, sindex, quoted, ex + WORD_LIST *list; + WORD_DESC *tdesc, *ret; + int tflag; ++ int old_echo_input; + + zindex = *sindex; + c = string[++zindex]; +@@ -7401,6 +7402,9 @@ arithsub: + } + + comsub: ++ old_echo_input = echo_input_at_read; ++ /* avoid echoing every substitution again */ ++ echo_input_at_read = 0; + if (pflags & PF_NOCOMSUB) + /* we need zindex+1 because string[zindex] == RPAREN */ + temp1 = substring (string, *sindex, zindex+1); +@@ -7413,6 +7417,7 @@ comsub: + } + FREE (temp); + temp = temp1; ++ echo_input_at_read = old_echo_input; + break; + + /* Do POSIX.2d9-style arithmetic substitution. This will probably go diff --git a/bash/patches/bash-4.3-parse-time-keyword.patch0 b/bash/patches/bash-4.3-parse-time-keyword.patch0 new file mode 100644 index 0000000..40337f5 --- /dev/null +++ b/bash/patches/bash-4.3-parse-time-keyword.patch0 @@ -0,0 +1,28 @@ +*** ../bash-4.3-patched/parse.y 2014-04-07 11:56:12.000000000 -0400 +--- parse.y 2014-06-11 10:25:53.000000000 -0400 +*************** +*** 2789,2797 **** + case OR_OR: + case '&': + case DO: + case THEN: + case ELSE: + case '{': /* } */ +! case '(': /* ) */ + case BANG: /* ! time pipeline */ + case TIME: /* time time pipeline */ +--- 2789,2802 ---- + case OR_OR: + case '&': ++ case WHILE: + case DO: ++ case UNTIL: ++ case IF: + case THEN: ++ case ELIF: + case ELSE: + case '{': /* } */ +! case '(': /* )( */ +! case ')': /* only valid in case statement */ + case BANG: /* ! time pipeline */ + case TIME: /* time time pipeline */ diff --git a/bash/patches/bash-4.3-pathexp-globignore-delim.patch0 b/bash/patches/bash-4.3-pathexp-globignore-delim.patch0 new file mode 100644 index 0000000..6b019f9 --- /dev/null +++ b/bash/patches/bash-4.3-pathexp-globignore-delim.patch0 @@ -0,0 +1,15 @@ +*** ../bash-4.3-patched/pathexp.c 2014-01-31 09:34:33.000000000 -0500 +--- pathexp.c 2014-06-20 15:33:09.000000000 -0400 +*************** +*** 539,543 **** + return 0; + +! n = skip_to_delim (s, i, ":", SD_NOJMP|SD_EXTGLOB); + t = substring (s, i, n); + +--- 539,543 ---- + return 0; + +! n = skip_to_delim (s, i, ":", SD_NOJMP|SD_EXTGLOB|SD_GLOB); + t = substring (s, i, n); + diff --git a/bash/patches/bash-4.3-readline-revert-lines.patch0 b/bash/patches/bash-4.3-readline-revert-lines.patch0 new file mode 100644 index 0000000..2ce3d87 --- /dev/null +++ b/bash/patches/bash-4.3-readline-revert-lines.patch0 @@ -0,0 +1,18 @@ +*** ../bash-4.3-patched/lib/readline/misc.c 2012-09-01 18:03:11.000000000 -0400 +--- lib/readline/misc.c 2014-06-30 13:41:19.000000000 -0400 +*************** +*** 462,465 **** +--- 462,466 ---- + /* Set up rl_line_buffer and other variables from history entry */ + rl_replace_from_history (entry, 0); /* entry->line is now current */ ++ entry->data = 0; /* entry->data is now current undo list */ + /* Undo all changes to this history entry */ + while (rl_undo_list) +*************** +*** 469,473 **** + FREE (entry->line); + entry->line = savestring (rl_line_buffer); +- entry->data = 0; + } + entry = previous_history (); +--- 470,473 ---- diff --git a/bash/patches/bash-bashbug.patch b/bash/patches/bash-bashbug.patch new file mode 100644 index 0000000..7ed60d2 --- /dev/null +++ b/bash/patches/bash-bashbug.patch @@ -0,0 +1,56 @@ +diff -up bash-4.2-rc2/doc/bash.1.bashbug bash-4.2-rc2/doc/bash.1 +--- bash-4.2-rc2/doc/bash.1.bashbug 2011-01-16 21:31:39.000000000 +0100 ++++ bash-4.2-rc2/doc/bash.1 2011-02-09 08:52:14.000000000 +0100 +@@ -9857,7 +9857,7 @@ The latest version is always available f + .PP + Once you have determined that a bug actually exists, use the + .I bashbug +-command to submit a bug report. ++command (from the source package) to submit a bug report. + If you have a fix, you are encouraged to mail that as well! + Suggestions and `philosophical' bug reports may be mailed + to \fIbug-bash@gnu.org\fP or posted to the Usenet +@@ -9879,10 +9879,6 @@ A description of the bug behaviour + A short script or `recipe' which exercises the bug + .PD + .PP +-.I bashbug +-inserts the first three items automatically into the template +-it provides for filing a bug report. +-.PP + Comments and bug reports concerning + this manual page should be directed to + .IR chet.ramey@case.edu . +diff -up bash-4.2-rc2/doc/bashref.texi.bashbug bash-4.2-rc2/doc/bashref.texi +--- bash-4.2-rc2/doc/bashref.texi.bashbug 2011-01-16 21:31:57.000000000 +0100 ++++ bash-4.2-rc2/doc/bashref.texi 2011-02-09 08:47:07.000000000 +0100 +@@ -7635,7 +7635,7 @@ The latest version of Bash is always ava + @uref{ftp://ftp.gnu.org/pub/gnu/bash/}. + + Once you have determined that a bug actually exists, use the +-@code{bashbug} command to submit a bug report. ++@code{bashbug} command (from the source package) to submit a bug report. + If you have a fix, you are encouraged to mail that as well! + Suggestions and `philosophical' bug reports may be mailed + to @email{bug-bash@@gnu.org} or posted to the Usenet +@@ -7657,9 +7657,6 @@ to reproduce it. + @end itemize + + @noindent +-@code{bashbug} inserts the first three items automatically into +-the template it provides for filing a bug report. +- + Please send all reports concerning this manual to + @email{bug-bash@@gnu.org}. + +diff -up bash-4.2-rc2/shell.c.bashbug bash-4.2-rc2/shell.c +--- bash-4.2-rc2/shell.c.bashbug 2011-01-02 22:04:51.000000000 +0100 ++++ bash-4.2-rc2/shell.c 2011-02-09 08:47:07.000000000 +0100 +@@ -1823,7 +1823,6 @@ show_shell_usage (fp, extra) + { + fprintf (fp, _("Type `%s -c "help set"' for more information about shell options.\n"), shell_name); + fprintf (fp, _("Type `%s -c help' for more information about shell builtin commands.\n"), shell_name); +- fprintf (fp, _("Use the `bashbug' command to report bugs.\n")); + } + } + diff --git a/bash/patches/bash-infotags.patch b/bash/patches/bash-infotags.patch new file mode 100644 index 0000000..2e50d6e --- /dev/null +++ b/bash/patches/bash-infotags.patch @@ -0,0 +1,30 @@ +--- bash-3.1/doc/Makefile.in.infotags 2006-07-12 13:57:18.000000000 +0100 ++++ bash-3.1/doc/Makefile.in 2006-07-12 13:58:25.000000000 +0100 +@@ -69,7 +69,6 @@ + TEXI2HTML = ${SUPPORT_SRCDIR}/texi2html + MAN2HTML = ${BUILD_DIR}/support/man2html + HTMLPOST = ${srcdir}/htmlpost.sh +-INFOPOST = ${srcdir}/infopost.sh + QUIETPS = #set this to -q to shut up dvips + PAPERSIZE = letter # change to a4 for A4-size paper + PSDPI = 600 # could be 300 if you like +@@ -146,7 +145,7 @@ + + PSFILES = bash.ps bashbug.ps article.ps builtins.ps rbash.ps + DVIFILES = bashref.dvi bashref.ps +-INFOFILES = bashref.info ++INFOFILES = bashref.info bash.info + MAN0FILES = bash.0 bashbug.0 builtins.0 rbash.0 + HTMLFILES = bashref.html bash.html + PDFFILES = bash.pdf bashref.pdf article.pdf rose94.pdf +@@ -167,8 +166,8 @@ + bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER) + $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi + +-bash.info: bashref.info +- ${SHELL} ${INFOPOST} < $(srcdir)/bashref.info > $@ ; \ ++bash.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER) ++ $(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi -o $@ + + bash.txt: bash.1 + bash.ps: bash.1 diff --git a/bash/patches/bash-requires.patch b/bash/patches/bash-requires.patch index 63ef4d7..5d82ac6 100644 --- a/bash/patches/bash-requires.patch +++ b/bash/patches/bash-requires.patch @@ -71,7 +71,7 @@ diff -up bash-4.1/builtins/mkbuiltins.c.requires bash-4.1/builtins/mkbuiltins.c + (builtin->flags & BUILTIN_FLAG_REQUIRES) ? " | REQUIRES_BUILTIN" : "", document_name (builtin));
- fprintf + if (inhibit_functions) @@ -1581,6 +1599,13 @@ is_posix_builtin (name) return (_find_in_table (name, posix_builtins)); } @@ -130,8 +130,8 @@ diff -up bash-4.1/eval.c.requires bash-4.1/eval.c extern int expand_aliases; +extern int rpm_requires;
- static void send_pwd_to_eterm __P((void)); - static sighandler alrm_catcher __P((int)); + #if defined (HAVE_POSIX_SIGNALS) + extern sigset_t top_level_mask; @@ -136,7 +137,7 @@ reader_loop ()
if (read_command () == 0) @@ -150,11 +150,11 @@ diff -up bash-4.1/execute_cmd.c.requires bash-4.1/execute_cmd.c
+extern int rpm_requires; + - /* Execute the command passed in COMMAND, perhaps doing it asynchrounously. + /* Execute the command passed in COMMAND, perhaps doing it asynchronously. COMMAND is exactly what read_command () places into GLOBAL_COMMAND. ASYNCHROUNOUS, if non-zero, says to do this command in the background. @@ -534,7 +536,13 @@ execute_command_internal (command, async - #else + if (breaking || continuing) return (last_command_exit_value); - if (command == 0 || read_but_dont_execute) @@ -166,8 +166,8 @@ diff -up bash-4.1/execute_cmd.c.requires bash-4.1/execute_cmd.c + command->value.Function_def->command); + if (read_but_dont_execute) return (EXECUTION_SUCCESS); - #endif
+ QUIT; @@ -5066,7 +5074,7 @@ execute_intern_function (name, function)
if (check_identifier (name, posixly_correct) == 0) @@ -289,8 +289,8 @@ diff -up bash-4.1/shell.c.requires bash-4.1/shell.c static int act_like_sh;
@@ -251,6 +254,7 @@ static const struct { - { "posix", Int, &posixly_correct, (char **)0x0 }, { "protected", Int, &protected_mode, (char **)0x0 }, + #endif { "rcfile", Charp, (int *)0x0, &bashrc_file }, + { "rpm-requires", Int, &rpm_requires, (char **)0x0 }, #if defined (RESTRICTED_SHELL) diff --git a/bash/patches/bash-setlocale.patch b/bash/patches/bash-setlocale.patch new file mode 100644 index 0000000..f068ec7 --- /dev/null +++ b/bash/patches/bash-setlocale.patch @@ -0,0 +1,10 @@ +--- bash-3.0/builtins/setattr.def.setlocale 2005-08-08 12:22:42.000000000 +0100 ++++ bash-3.0/builtins/setattr.def 2005-08-08 12:25:16.000000000 +0100 +@@ -423,4 +423,7 @@ + + if (var && (exported_p (var) || (attribute & att_exported))) + array_needs_making++; /* XXX */ ++ ++ if (var) ++ stupidly_hack_special_variables (name); + } diff --git a/bash/patches/bash-tty-tests.patch b/bash/patches/bash-tty-tests.patch new file mode 100644 index 0000000..984f1b4 --- /dev/null +++ b/bash/patches/bash-tty-tests.patch @@ -0,0 +1,54 @@ +diff -up bash-4.2-rc2/tests/exec.right.tty_tests bash-4.2-rc2/tests/exec.right +--- bash-4.2-rc2/tests/exec.right.tty_tests 2011-02-09 10:42:48.000000000 +0100 ++++ bash-4.2-rc2/tests/exec.right 2011-02-09 10:42:59.000000000 +0100 +@@ -50,7 +50,6 @@ this is ohio-state + 0 + 1 + testb +-expand_aliases on + 1 + 1 + 1 +diff -up bash-4.2-rc2/tests/execscript.tty_tests bash-4.2-rc2/tests/execscript +--- bash-4.2-rc2/tests/execscript.tty_tests 2010-12-27 22:01:02.000000000 +0100 ++++ bash-4.2-rc2/tests/execscript 2011-02-09 10:42:34.000000000 +0100 +@@ -107,8 +107,6 @@ ${THIS_SH} ./exec6.sub + # checks for properly deciding what constitutes an executable file + ${THIS_SH} ./exec7.sub + +-${THIS_SH} -i ./exec8.sub +- + ${THIS_SH} ./exec9.sub + + true | `echo true` & +diff -up bash-4.2-rc2/tests/read.right.tty_tests bash-4.2-rc2/tests/read.right +--- bash-4.2-rc2/tests/read.right.tty_tests 2010-12-21 16:49:00.000000000 +0100 ++++ bash-4.2-rc2/tests/read.right 2011-02-09 10:42:34.000000000 +0100 +@@ -33,14 +33,6 @@ a = abcdefg + a = xyz + a = -xyz 123- + a = abc +-timeout 1: ok +- +-timeout 2: ok +- +-./read2.sub: line 23: read: -3: invalid timeout specification +-1 +- +-abcde + ./read3.sub: line 4: read: -1: invalid number + abc + ab +diff -up bash-4.2-rc2/tests/read.tests.tty_tests bash-4.2-rc2/tests/read.tests +--- bash-4.2-rc2/tests/read.tests.tty_tests 2008-09-06 19:09:11.000000000 +0200 ++++ bash-4.2-rc2/tests/read.tests 2011-02-09 10:42:34.000000000 +0100 +@@ -82,9 +82,6 @@ echo " foo" | { IFS=$':' ; read line; re + # test read -d delim behavior + ${THIS_SH} ./read1.sub + +-# test read -t timeout behavior +-${THIS_SH} ./read2.sub +- + # test read -n nchars behavior + ${THIS_SH} ./read3.sub + diff --git a/bash/patches/bash43-001 b/bash/patches/bash43-001 new file mode 100644 index 0000000..ea1c6b2 --- /dev/null +++ b/bash/patches/bash43-001 @@ -0,0 +1,58 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-001 + +Bug-Reported-by: NBaH nbah@sfr.fr +Bug-Reference-ID: ler0b5$iu9$1@speranza.aioe.org +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00092.html + +Bug-Description: + +A missing check for a valid option prevented `test -R' from working. There +is another problem that causes bash to look up the wrong variable name when +processing the argument to `test -R'. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/test.c 2014-02-04 16:52:58.000000000 -0500 +--- test.c 2014-02-28 21:22:44.000000000 -0500 +*************** +*** 647,652 **** + + case 'R': +! v = find_variable (arg); +! return (v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v) ? TRUE : FALSE); + } + +--- 647,652 ---- + + case 'R': +! v = find_variable_noref (arg); +! return ((v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v)) ? TRUE : FALSE); + } + +*************** +*** 724,727 **** +--- 724,728 ---- + case 'u': case 'v': case 'w': case 'x': case 'z': + case 'G': case 'L': case 'O': case 'S': case 'N': ++ case 'R': + return (1); + } +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 0 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 1 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-002 b/bash/patches/bash43-002 new file mode 100644 index 0000000..735b7b8 --- /dev/null +++ b/bash/patches/bash43-002 @@ -0,0 +1,62 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-002 + +Bug-Reported-by: Moe Tunes moetunes42@gmail.com +Bug-Reference-ID: 53103F49.3070100@gmail.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00086.html + +Bug-Description: + +A change to save state while running the DEBUG trap caused pipelines to hang +on systems which need process group synchronization while building pipelines. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/trap.c 2014-02-05 10:03:21.000000000 -0500 +--- trap.c 2014-02-28 09:51:43.000000000 -0500 +*************** +*** 921,925 **** + + #if defined (JOB_CONTROL) +! save_pipeline (1); /* XXX only provides one save level */ + #endif + +--- 921,926 ---- + + #if defined (JOB_CONTROL) +! if (sig != DEBUG_TRAP) /* run_debug_trap does this */ +! save_pipeline (1); /* XXX only provides one save level */ + #endif + +*************** +*** 941,945 **** + + #if defined (JOB_CONTROL) +! restore_pipeline (1); + #endif + +--- 942,947 ---- + + #if defined (JOB_CONTROL) +! if (sig != DEBUG_TRAP) /* run_debug_trap does this */ +! restore_pipeline (1); + #endif + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 1 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 2 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-003 b/bash/patches/bash43-003 new file mode 100644 index 0000000..0f32f41 --- /dev/null +++ b/bash/patches/bash43-003 @@ -0,0 +1,48 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-003 + +Bug-Reported-by: Anatol Pomozov anatol.pomozov@gmail.com +Bug-Reference-ID: CAOMFOmXy3mT2So5GQ5F-smCVArQuAeBwZ2QKzgCtMeXJoDeYOQ@mail.gmail.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00010.html + +Bug-Description: + +When in callback mode, some readline commands can cause readline to seg +fault by passing invalid contexts to callback functions. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/lib/readline/readline.c 2013-10-28 14:58:06.000000000 -0400 +--- lib/readline/readline.c 2014-03-10 14:15:02.000000000 -0400 +*************** +*** 745,749 **** + + RL_CHECK_SIGNALS (); +! if (r == 0) /* success! */ + { + _rl_keyseq_chain_dispose (); +--- 745,750 ---- + + RL_CHECK_SIGNALS (); +! /* We only treat values < 0 specially to simulate recursion. */ +! if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */ + { + _rl_keyseq_chain_dispose (); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 2 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 3 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-004 b/bash/patches/bash43-004 new file mode 100644 index 0000000..010f04a --- /dev/null +++ b/bash/patches/bash43-004 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-004 + +Bug-Reported-by: Daan van Rossum daan@flash.uchicago.edu +Bug-Reference-ID: 20140307072523.GA14250@flash.uchicago.edu +Bug-Reference-URL: + +Bug-Description: + +The `.' command in vi mode cannot undo multi-key commands beginning with +`c', `d', and `y' (command plus motion specifier). + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/lib/readline/readline.c 2013-10-28 14:58:06.000000000 -0400 +--- lib/readline/readline.c 2014-03-07 15:20:33.000000000 -0500 +*************** +*** 965,969 **** + if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && + key != ANYOTHERKEY && +! rl_key_sequence_length == 1 && /* XXX */ + _rl_vi_textmod_command (key)) + _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); +--- 965,969 ---- + if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && + key != ANYOTHERKEY && +! _rl_dispatching_keymap == vi_movement_keymap && + _rl_vi_textmod_command (key)) + _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 3 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 4 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-005 b/bash/patches/bash43-005 new file mode 100644 index 0000000..bcd4069 --- /dev/null +++ b/bash/patches/bash43-005 @@ -0,0 +1,63 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-005 + +Bug-Reported-by: David Sines dave.gma@googlemail.com +Bug-Reference-ID: CAO3BAa_CK_Rgkhdfzs+NJ4KFYdB9qW3pvXQK0xLCi6GMmDU8bw@mail.gmail.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00037.html + +Bug-Description: + +When in Posix mode, bash did not correctly interpret the ANSI-C-style +$'...' quoting mechanism when performing pattern substitution word +expansions within double quotes. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/parse.y 2014-02-11 09:42:10.000000000 -0500 +--- parse.y 2014-03-07 20:57:15.000000000 -0500 +*************** +*** 3399,3403 **** + unescaped double-quotes or single-quotes, if any, shall occur." */ + /* This was changed in Austin Group Interp 221 */ +! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == ''') + continue; + +--- 3399,3403 ---- + unescaped double-quotes or single-quotes, if any, shall occur." */ + /* This was changed in Austin Group Interp 221 */ +! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == ''') + continue; + +*** ../bash-4.3/y.tab.c 2014-02-11 10:57:47.000000000 -0500 +--- y.tab.c 2014-03-28 10:41:15.000000000 -0400 +*************** +*** 5711,5715 **** + unescaped double-quotes or single-quotes, if any, shall occur." */ + /* This was changed in Austin Group Interp 221 */ +! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == ''') + continue; + +--- 5711,5715 ---- + unescaped double-quotes or single-quotes, if any, shall occur." */ + /* This was changed in Austin Group Interp 221 */ +! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == ''') + continue; + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 4 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 5 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-006 b/bash/patches/bash43-006 new file mode 100644 index 0000000..24ff057 --- /dev/null +++ b/bash/patches/bash43-006 @@ -0,0 +1,48 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-006 + +Bug-Reported-by: Eduardo A . Bustamante Lopez dualbus@gmail.com +Bug-Reference-ID: 20140228170013.GA16015@dualbus.me +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00091.html + +Bug-Description: + +A shell that started with job control active but was not interactive left +the terminal in the wrong process group when exiting, causing its parent +shell to get a stop signal when it attempted to read from the terminal. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/jobs.c 2014-01-10 09:05:34.000000000 -0500 +--- jobs.c 2014-03-02 18:05:09.000000000 -0500 +*************** +*** 4375,4379 **** + end_job_control () + { +! if (interactive_shell) /* XXX - should it be interactive? */ + { + terminate_stopped_jobs (); +--- 4375,4379 ---- + end_job_control () + { +! if (interactive_shell || job_control) /* XXX - should it be just job_control? */ + { + terminate_stopped_jobs (); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 5 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 6 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-007 b/bash/patches/bash43-007 new file mode 100644 index 0000000..0d62c9e --- /dev/null +++ b/bash/patches/bash43-007 @@ -0,0 +1,50 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-007 + +Bug-Reported-by: geir.hauge@gmail.com +Bug-Reference-ID: 20140318093650.B181C1C5B0B@gina.itea.ntnu.no +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00095.html + +Bug-Description: + +Using compound assignments for associative arrays like + +assoc=( [x]= [y]=bar ) + +left the value corresponding to the key `x' NULL. This caused subsequent +lookups to interpret it as unset. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/arrayfunc.c 2013-08-02 16:19:59.000000000 -0400 +--- arrayfunc.c 2014-03-18 11:08:15.000000000 -0400 +*************** +*** 598,601 **** +--- 598,606 ---- + { + val = expand_assignment_string_to_string (val, 0); ++ if (val == 0) ++ { ++ val = (char *)xmalloc (1); ++ val[0] = '\0'; /* like do_assignment_internal */ ++ } + free_val = 1; + } +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 6 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 7 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-008 b/bash/patches/bash43-008 new file mode 100644 index 0000000..0ae7c95 --- /dev/null +++ b/bash/patches/bash43-008 @@ -0,0 +1,188 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-008 + +Bug-Reported-by: Stephane Chazelas stephane.chazelas@gmail.com +Bug-Reference-ID: 20140318135901.GB22158@chaz.gmail.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00098.html + +Bug-Description: + +Some extended glob patterns incorrectly matched filenames with a leading +dot, regardless of the setting of the `dotglob' option. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/lib/glob/gmisc.c 2013-10-28 14:45:25.000000000 -0400 +--- lib/glob/gmisc.c 2014-03-19 09:16:08.000000000 -0400 +*************** +*** 211,214 **** +--- 211,215 ---- + case '!': + case '@': ++ case '?': + return (pat[1] == LPAREN); + default: +*** ../bash-4.3/lib/glob/glob.c 2014-01-31 21:43:51.000000000 -0500 +--- lib/glob/glob.c 2014-03-20 09:01:26.000000000 -0400 +*************** +*** 180,202 **** + int flags; + { +! char *pp, *pe, *t; +! int n, r; + + pp = pat + 2; +! pe = pp + strlen (pp) - 1; /*(*/ +! if (*pe != ')') +! return 0; +! if ((t = strchr (pp, '|')) == 0) /* easy case first */ + { + *pe = '\0'; + r = skipname (pp, dname, flags); /*(*/ + *pe = ')'; + return r; + } + while (t = glob_patscan (pp, pe, '|')) + { + n = t[-1]; + t[-1] = '\0'; + r = skipname (pp, dname, flags); + t[-1] = n; + if (r == 0) /* if any pattern says not skip, we don't skip */ +--- 180,215 ---- + int flags; + { +! char *pp, *pe, *t, *se; +! int n, r, negate; + ++ negate = *pat == '!'; + pp = pat + 2; +! se = pp + strlen (pp) - 1; /* end of string */ +! pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */ +! /* we should check for invalid extglob pattern here */ +! /* if pe != se we have more of the pattern at the end of the extglob +! pattern. Check the easy case first ( */ +! if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0) + { + *pe = '\0'; ++ #if defined (HANDLE_MULTIBYTE) ++ r = mbskipname (pp, dname, flags); ++ #else + r = skipname (pp, dname, flags); /*(*/ ++ #endif + *pe = ')'; + return r; + } ++ ++ /* check every subpattern */ + while (t = glob_patscan (pp, pe, '|')) + { + n = t[-1]; + t[-1] = '\0'; ++ #if defined (HANDLE_MULTIBYTE) ++ r = mbskipname (pp, dname, flags); ++ #else + r = skipname (pp, dname, flags); ++ #endif + t[-1] = n; + if (r == 0) /* if any pattern says not skip, we don't skip */ +*************** +*** 205,219 **** + } /*(*/ + +! if (pp == pe) /* glob_patscan might find end of pattern */ + return r; + +! *pe = '\0'; +! # if defined (HANDLE_MULTIBYTE) +! r = mbskipname (pp, dname, flags); /*(*/ +! # else +! r = skipname (pp, dname, flags); /*(*/ +! # endif +! *pe = ')'; +! return r; + } + #endif +--- 218,227 ---- + } /*(*/ + +! /* glob_patscan might find end of pattern */ +! if (pp == se) + return r; + +! /* but if it doesn't then we didn't match a leading dot */ +! return 0; + } + #endif +*************** +*** 278,289 **** + { + #if EXTENDED_GLOB +! wchar_t *pp, *pe, *t, n; +! int r; + + pp = pat + 2; +! pe = pp + wcslen (pp) - 1; /*(*/ +! if (*pe != L')') +! return 0; +! if ((t = wcschr (pp, L'|')) == 0) + { + *pe = L'\0'; +--- 286,298 ---- + { + #if EXTENDED_GLOB +! wchar_t *pp, *pe, *t, n, *se; +! int r, negate; + ++ negate = *pat == L'!'; + pp = pat + 2; +! se = pp + wcslen (pp) - 1; /*(*/ +! pe = glob_patscan_wc (pp, se, 0); +! +! if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0) + { + *pe = L'\0'; +*************** +*** 292,295 **** +--- 301,306 ---- + return r; + } ++ ++ /* check every subpattern */ + while (t = glob_patscan_wc (pp, pe, '|')) + { +*************** +*** 306,313 **** + return r; + +! *pe = L'\0'; +! r = wchkname (pp, dname); /*(*/ +! *pe = L')'; +! return r; + #else + return (wchkname (pat, dname)); +--- 317,322 ---- + return r; + +! /* but if it doesn't then we didn't match a leading dot */ +! return 0; + #else + return (wchkname (pat, dname)); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 7 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 8 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-009 b/bash/patches/bash43-009 new file mode 100644 index 0000000..015835c --- /dev/null +++ b/bash/patches/bash43-009 @@ -0,0 +1,64 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-009 + +Bug-Reported-by: Matthias Klose doko@debian.org +Bug-Reference-ID: 53346FC8.6090005@debian.org +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00171.html + +Bug-Description: + +There is a problem with unsigned sign extension when attempting to reallocate +the input line when it is fewer than 3 characters long and there has been a +history expansion. The sign extension causes the shell to not reallocate the +line, which results in a segmentation fault when it writes past the end. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/parse.y 2014-02-11 09:42:10.000000000 -0500 +--- parse.y 2014-03-27 16:33:29.000000000 -0400 +*************** +*** 2425,2429 **** + if (shell_input_line_terminator != EOF) + { +! if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3) + shell_input_line = (char *)xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); +--- 2425,2429 ---- + if (shell_input_line_terminator != EOF) + { +! if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size)) + shell_input_line = (char *)xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); +*** ../bash-4.3-patched/y.tab.c 2014-03-28 11:17:06.000000000 -0400 +--- y.tab.c 2014-04-07 11:48:31.000000000 -0400 +*************** +*** 4737,4741 **** + if (shell_input_line_terminator != EOF) + { +! if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3) + shell_input_line = (char *)xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); +--- 4737,4741 ---- + if (shell_input_line_terminator != EOF) + { +! if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size)) + shell_input_line = (char *)xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 8 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 9 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-010 b/bash/patches/bash43-010 new file mode 100644 index 0000000..835a96e --- /dev/null +++ b/bash/patches/bash43-010 @@ -0,0 +1,157 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-010 + +Bug-Reported-by: Albert Shih Albert.Shih@obspm.fr +Bug-Reference-ID: Wed, 5 Mar 2014 23:01:40 +0100 +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00028.html + +Bug-Description: + +Patch (apply with `patch -p0'): + +This patch changes the behavior of programmable completion to compensate +for two assumptions made by the bash-completion package. Bash-4.3 changed +to dequote the argument to programmable completion only under certain +circumstances, to make the behavior of compgen more consistent when run +from the command line -- closer to the behavior when run by a shell function +run as part of programmable completion. Bash-completion can pass quoted +arguments to compgen when the original word to be completed was not quoted, +expecting programmable completion to dequote the word before attempting +completion. + +This patch fixes two cases: + +1. An empty string that bash-completion passes to compgen as a quoted null + string (''). + +2. An unquoted word that bash-completion quotes using single quotes or + backslashes before passing it to compgen. + +In these cases, since readline did not detect a quote character in the original +word to be completed, bash-4.3 + +*** ../bash-4.3/externs.h 2014-01-02 14:58:20.000000000 -0500 +--- externs.h 2014-03-13 14:42:57.000000000 -0400 +*************** +*** 325,328 **** +--- 325,329 ---- + extern char *sh_backslash_quote_for_double_quotes __P((char *)); + extern int sh_contains_shell_metas __P((char *)); ++ extern int sh_contains_quotes __P((char *)); + + /* declarations for functions defined in lib/sh/spell.c */ +*** ../bash-4.3/lib/sh/shquote.c 2013-03-31 21:53:32.000000000 -0400 +--- lib/sh/shquote.c 2014-03-13 14:42:57.000000000 -0400 +*************** +*** 312,313 **** +--- 312,327 ---- + return (0); + } ++ ++ int ++ sh_contains_quotes (string) ++ char *string; ++ { ++ char *s; ++ ++ for (s = string; s && *s; s++) ++ { ++ if (*s == ''' || *s == '"' || *s == '\') ++ return 1; ++ } ++ return 0; ++ } +*** ../bash-4.3/pcomplete.c 2013-08-26 15:23:45.000000000 -0400 +--- pcomplete.c 2014-03-25 17:23:23.000000000 -0400 +*************** +*** 184,187 **** +--- 184,188 ---- + COMPSPEC *pcomp_curcs; + const char *pcomp_curcmd; ++ const char *pcomp_curtxt; + + #ifdef DEBUG +*************** +*** 754,757 **** +--- 755,784 ---- + dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); + } ++ /* Intended to solve a mismatched assumption by bash-completion. If ++ the text to be completed is empty, but bash-completion turns it into ++ a quoted string ('') assuming that this code will dequote it before ++ calling readline, do the dequoting. */ ++ else if (iscompgen && iscompleting && ++ pcomp_curtxt && *pcomp_curtxt == 0 && ++ text && (*text == ''' || *text == '"') && text[1] == text[0] && text[2] == 0 && ++ rl_filename_dequoting_function) ++ dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); ++ /* Another mismatched assumption by bash-completion. If compgen is being ++ run as part of bash-completion, and the argument to compgen is not ++ the same as the word originally passed to the programmable completion ++ code, dequote the argument if it has quote characters. It's an ++ attempt to detect when bash-completion is quoting its filename ++ argument before calling compgen. */ ++ /* We could check whether gen_shell_function_matches is in the call ++ stack by checking whether the gen-shell-function-matches tag is in ++ the unwind-protect stack, but there's no function to do that yet. ++ We could simply check whether we're executing in a function by ++ checking variable_context, and may end up doing that. */ ++ else if (iscompgen && iscompleting && rl_filename_dequoting_function && ++ pcomp_curtxt && text && ++ STREQ (pcomp_curtxt, text) == 0 && ++ variable_context && ++ sh_contains_quotes (text)) /* guess */ ++ dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); + else + dfn = savestring (text); +*************** +*** 1523,1527 **** + { + COMPSPEC *cs, *oldcs; +! const char *oldcmd; + STRINGLIST *ret; + +--- 1550,1554 ---- + { + COMPSPEC *cs, *oldcs; +! const char *oldcmd, *oldtxt; + STRINGLIST *ret; + +*************** +*** 1546,1552 **** +--- 1573,1581 ---- + oldcs = pcomp_curcs; + oldcmd = pcomp_curcmd; ++ oldtxt = pcomp_curtxt; + + pcomp_curcs = cs; + pcomp_curcmd = cmd; ++ pcomp_curtxt = word; + + ret = gen_compspec_completions (cs, cmd, word, start, end, foundp); +*************** +*** 1554,1557 **** +--- 1583,1587 ---- + pcomp_curcs = oldcs; + pcomp_curcmd = oldcmd; ++ pcomp_curtxt = oldtxt; + + /* We need to conditionally handle setting *retryp here */ +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 9 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 10 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-011 b/bash/patches/bash43-011 new file mode 100644 index 0000000..cdc1572 --- /dev/null +++ b/bash/patches/bash43-011 @@ -0,0 +1,49 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-011 + +Bug-Reported-by: Egmont Koblinger egmont@gmail.com +Bug-Reference-ID: CAGWcZk+bU5Jo1M+tutGvL-250UBE9DXjpeJVofYJSFcqFEVfMg@mail.gmail.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00153.html + +Bug-Description: + +The signal handling changes to bash and readline (to avoid running any code +in a signal handler context) cause the cursor to be placed on the wrong +line of a multi-line command after a ^C interrupts editing. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/lib/readline/display.c 2013-12-27 13:10:56.000000000 -0500 +--- lib/readline/display.c 2014-03-27 11:52:45.000000000 -0400 +*************** +*** 2678,2682 **** + if (_rl_echoing_p) + { +! _rl_move_vert (_rl_vis_botlin); + _rl_vis_botlin = 0; + fflush (rl_outstream); +--- 2678,2683 ---- + if (_rl_echoing_p) + { +! if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */ +! _rl_move_vert (_rl_vis_botlin); + _rl_vis_botlin = 0; + fflush (rl_outstream); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 10 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 11 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-012 b/bash/patches/bash43-012 new file mode 100644 index 0000000..176fa15 --- /dev/null +++ b/bash/patches/bash43-012 @@ -0,0 +1,43 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-012 + +Bug-Reported-by: Eduardo A. Bustamante Lópezdualbus@gmail.com +Bug-Reference-ID: 5346B54C.4070205@case.edu +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00051.html + +Bug-Description: + +When a SIGCHLD trap runs a command containing a shell builtin while +a script is running `wait' to wait for all running children to complete, +the SIGCHLD trap will not be run once for each child that terminates. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/jobs.c 2014-03-28 10:54:19.000000000 -0400 +--- jobs.c 2014-04-15 08:47:03.000000000 -0400 +*************** +*** 3598,3601 **** +--- 3598,3602 ---- + unwind_protect_pointer (the_pipeline); + unwind_protect_pointer (subst_assign_varlist); ++ unwind_protect_pointer (this_shell_builtin); + + /* We have to add the commands this way because they will be run +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 11 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 12 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-013 b/bash/patches/bash43-013 new file mode 100644 index 0000000..8f4006b --- /dev/null +++ b/bash/patches/bash43-013 @@ -0,0 +1,66 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-013 + +Bug-Reported-by: Trond.Endrestol@ximalas.info +Bug-Reference-ID: alpine.BSF.2.03.1404192114310.1973@enterprise.ximalas.info +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00069.html + +Bug-Description: + +Using reverse-i-search when horizontal scrolling is enabled does not redisplay +the entire line containing the successful search results. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/lib/readline/display.c 2014-04-08 18:19:36.000000000 -0400 +--- lib/readline/display.c 2014-04-20 18:32:52.000000000 -0400 +*************** +*** 1638,1642 **** + the spot of first difference is before the end of the invisible chars, + lendiff needs to be adjusted. */ +! if (current_line == 0 && !_rl_horizontal_scroll_mode && + current_invis_chars != visible_wrap_offset) + { +--- 1638,1642 ---- + the spot of first difference is before the end of the invisible chars, + lendiff needs to be adjusted. */ +! if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */ + current_invis_chars != visible_wrap_offset) + { +*************** +*** 1826,1831 **** + _rl_last_c_pos += bytes_to_insert; + + if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) +! goto clear_rest_of_line; + } + } +--- 1826,1836 ---- + _rl_last_c_pos += bytes_to_insert; + ++ /* XXX - we only want to do this if we are at the end of the line ++ so we move there with _rl_move_cursor_relative */ + if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) +! { +! _rl_move_cursor_relative (ne-new, new); +! goto clear_rest_of_line; +! } + } + } +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 12 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 13 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-014 b/bash/patches/bash43-014 new file mode 100644 index 0000000..f837196 --- /dev/null +++ b/bash/patches/bash43-014 @@ -0,0 +1,102 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-014 + +Bug-Reported-by: Greg Wooledge wooledg@eeg.ccf.org +Bug-Reference-ID: 20140418202123.GB7660@eeg.ccf.org +Bug-Reference-URL: http://lists.gnu.org/archive/html/help-bash/2014-04/msg00004.html + +Bug-Description: + +Under certain circumstances, $@ is expanded incorrectly in contexts where +word splitting is not performed. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/subst.c 2014-01-23 16:26:37.000000000 -0500 +--- subst.c 2014-04-19 15:41:26.000000000 -0400 +*************** +*** 3249,3254 **** +--- 3249,3256 ---- + return ((char *)NULL); + ++ expand_no_split_dollar_star = 1; + w->flags |= W_NOSPLIT2; + l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0); ++ expand_no_split_dollar_star = 0; + if (l) + { +*************** +*** 7848,7851 **** +--- 7850,7857 ---- + according to POSIX.2, this expands to a list of the positional + parameters no matter what IFS is set to. */ ++ /* XXX - what to do when in a context where word splitting is not ++ performed? Even when IFS is not the default, posix seems to imply ++ that we behave like unquoted $* ? Maybe we should use PF_NOSPLIT2 ++ here. */ + temp = string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quoted|Q_DOUBLE_QUOTES) : quoted); + +*************** +*** 8817,8820 **** +--- 8823,8827 ---- + { + char *ifs_chars; ++ char *tstring; + + ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL; +*************** +*** 8831,8834 **** +--- 8838,8865 ---- + if (split_on_spaces) + list = list_string (istring, " ", 1); /* XXX quoted == 1? */ ++ /* If we have $@ (has_dollar_at != 0) and we are in a context where we ++ don't want to split the result (W_NOSPLIT2), and we are not quoted, ++ we have already separated the arguments with the first character of ++ $IFS. In this case, we want to return a list with a single word ++ with the separator possibly replaced with a space (it's what other ++ shells seem to do). ++ quoted_dollar_at is internal to this function and is set if we are ++ passed an argument that is unquoted (quoted == 0) but we encounter a ++ double-quoted $@ while expanding it. */ ++ else if (has_dollar_at && quoted_dollar_at == 0 && ifs_chars && quoted == 0 && (word->flags & W_NOSPLIT2)) ++ { ++ /* Only split and rejoin if we have to */ ++ if (*ifs_chars && *ifs_chars != ' ') ++ { ++ list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1); ++ tstring = string_list (list); ++ } ++ else ++ tstring = istring; ++ tword = make_bare_word (tstring); ++ if (tstring != istring) ++ free (tstring); ++ goto set_word_flags; ++ } + else if (has_dollar_at && ifs_chars) + list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1); +*************** +*** 8836,8839 **** +--- 8867,8871 ---- + { + tword = make_bare_word (istring); ++ set_word_flags: + if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED)) + tword->flags |= W_QUOTED; +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 13 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 14 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-015 b/bash/patches/bash43-015 new file mode 100644 index 0000000..9c4e5ea --- /dev/null +++ b/bash/patches/bash43-015 @@ -0,0 +1,58 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-015 + +Bug-Reported-by: Clark Wang dearvoid@gmail.com +Bug-Reference-ID: CADv8-og2TOSoabXeNVXVGaXN3tEMHnYVq1rwOLe5meaRPSGRig@mail.gmail.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00095.html + +Bug-Description: + +When completing directory names, the directory name is dequoted twice. +This causes problems for directories with single and double quotes in +their names. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/bashline.c 2014-02-09 19:56:58.000000000 -0500 +--- bashline.c 2014-04-25 14:57:52.000000000 -0400 +*************** +*** 4168,4174 **** + + qc = rl_dispatching ? rl_completion_quote_character : 0; +! dfn = bash_dequote_filename ((char *)text, qc); + m1 = rl_completion_matches (dfn, rl_filename_completion_function); +! free (dfn); + + if (m1 == 0 || m1[0] == 0) +--- 4209,4222 ---- + + qc = rl_dispatching ? rl_completion_quote_character : 0; +! /* If rl_completion_found_quote != 0, rl_completion_matches will call the +! filename dequoting function, causing the directory name to be dequoted +! twice. */ +! if (rl_dispatching && rl_completion_found_quote == 0) +! dfn = bash_dequote_filename ((char *)text, qc); +! else +! dfn = (char *)text; + m1 = rl_completion_matches (dfn, rl_filename_completion_function); +! if (dfn != text) +! free (dfn); + + if (m1 == 0 || m1[0] == 0) +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 14 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 15 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-016 b/bash/patches/bash43-016 new file mode 100644 index 0000000..882d593 --- /dev/null +++ b/bash/patches/bash43-016 @@ -0,0 +1,132 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-016 + +Bug-Reported-by: Pierre Gaston pierre.gaston@gmail.com +Bug-Reference-ID: CAPSX3sTCD61k1VQLJ5r-LWzEt+e7Xc-fxXmwn2u8EA5gJJej8Q@mail.gmail.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00100.html + +Bug-Description: + +An extended glob pattern containing a slash (`/') causes the globbing code +to misinterpret it as a directory separator. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/lib/glob/glob.c 2014-03-28 10:54:23.000000000 -0400 +--- lib/glob/glob.c 2014-05-02 10:24:28.000000000 -0400 +*************** +*** 124,127 **** +--- 124,129 ---- + extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int)); + ++ extern char *glob_dirscan __P((char *, int)); ++ + /* Compile `glob_loop.c' for single-byte characters. */ + #define CHAR unsigned char +*************** +*** 188,191 **** +--- 190,196 ---- + pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */ + /* we should check for invalid extglob pattern here */ ++ if (pe == 0) ++ return 0; ++ + /* if pe != se we have more of the pattern at the end of the extglob + pattern. Check the easy case first ( */ +*************** +*** 1016,1020 **** + char **result; + unsigned int result_size; +! char *directory_name, *filename, *dname; + unsigned int directory_len; + int free_dirname; /* flag */ +--- 1021,1025 ---- + char **result; + unsigned int result_size; +! char *directory_name, *filename, *dname, *fn; + unsigned int directory_len; + int free_dirname; /* flag */ +*************** +*** 1032,1035 **** +--- 1037,1052 ---- + /* Find the filename. */ + filename = strrchr (pathname, '/'); ++ #if defined (EXTENDED_GLOB) ++ if (filename && extended_glob) ++ { ++ fn = glob_dirscan (pathname, '/'); ++ #if DEBUG_MATCHING ++ if (fn != filename) ++ fprintf (stderr, "glob_filename: glob_dirscan: fn (%s) != filename (%s)\n", fn ? fn : "(null)", filename); ++ #endif ++ filename = fn; ++ } ++ #endif ++ + if (filename == NULL) + { +*** ../bash-4.3-patched/lib/glob/gmisc.c 2014-03-28 10:54:23.000000000 -0400 +--- lib/glob/gmisc.c 2014-05-02 09:35:57.000000000 -0400 +*************** +*** 43,46 **** +--- 43,48 ---- + #define WRPAREN L')' + ++ extern char *glob_patscan __P((char *, char *, int)); ++ + /* Return 1 of the first character of WSTRING could match the first + character of pattern WPAT. Wide character version. */ +*************** +*** 376,377 **** +--- 378,410 ---- + return matlen; + } ++ ++ /* Skip characters in PAT and return the final occurrence of DIRSEP. This ++ is only called when extended_glob is set, so we have to skip over extglob ++ patterns x(...) */ ++ char * ++ glob_dirscan (pat, dirsep) ++ char *pat; ++ int dirsep; ++ { ++ char *p, *d, *pe, *se; ++ ++ d = pe = se = 0; ++ for (p = pat; p && *p; p++) ++ { ++ if (extglob_pattern_p (p)) ++ { ++ if (se == 0) ++ se = p + strlen (p) - 1; ++ pe = glob_patscan (p + 2, se, 0); ++ if (pe == 0) ++ continue; ++ else if (*pe == 0) ++ break; ++ p = pe - 1; /* will do increment above */ ++ continue; ++ } ++ if (*p == dirsep) ++ d = p; ++ } ++ return d; ++ } + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 15 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 16 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-017 b/bash/patches/bash43-017 new file mode 100644 index 0000000..4016fb9 --- /dev/null +++ b/bash/patches/bash43-017 @@ -0,0 +1,51 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-017 + +Bug-Reported-by: Dan Douglas ormaaj@gmail.com +Bug-Reference-ID: 7781746.RhfoTROLxF@smorgbox +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00026.html + +Bug-Description: + +The code that creates local variables should not clear the `invisible' +attribute when returning an existing local variable. Let the code that +actually assigns a value clear it. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/variables.c 2014-02-14 11:55:12.000000000 -0500 +--- variables.c 2014-05-07 10:53:57.000000000 -0400 +*************** +*** 2198,2205 **** + old_var = find_variable (name); + if (old_var && local_p (old_var) && old_var->context == variable_context) +! { +! VUNSETATTR (old_var, att_invisible); /* XXX */ +! return (old_var); +! } + + was_tmpvar = old_var && tempvar_p (old_var); +--- 2260,2264 ---- + old_var = find_variable (name); + if (old_var && local_p (old_var) && old_var->context == variable_context) +! return (old_var); + + was_tmpvar = old_var && tempvar_p (old_var); + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 16 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 17 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-018 b/bash/patches/bash43-018 new file mode 100644 index 0000000..39499f6 --- /dev/null +++ b/bash/patches/bash43-018 @@ -0,0 +1,44 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-018 + +Bug-Reported-by: Geir Hauge geir.hauge@gmail.com +Bug-Reference-ID: CAO-BiTLOvfPXDypg61jcBausADrxUKJejakV2WTWP26cW0=rgA@mail.gmail.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00040.html + +Bug-Description: + +When assigning an array variable using the compound assignment syntax, +but using `declare' with the rhs of the compound assignment quoted, the +shell did not mark the variable as visible after successfully performing +the assignment. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/arrayfunc.c 2014-03-28 10:54:21.000000000 -0400 +--- arrayfunc.c 2014-05-12 11:19:00.000000000 -0400 +*************** +*** 180,183 **** +--- 180,184 ---- + FREE (newval); + ++ VUNSETATTR (entry, att_invisible); /* no longer invisible */ + return (entry); + } + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 17 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 18 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-019 b/bash/patches/bash43-019 new file mode 100644 index 0000000..a93714b --- /dev/null +++ b/bash/patches/bash43-019 @@ -0,0 +1,84 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-019 + +Bug-Reported-by: John Lenton +Bug-Reference-ID: +Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476 + +Bug-Description: + +The -t timeout option to `read' does not work when the -e option is used. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/lib/readline/input.c 2014-01-10 15:07:08.000000000 -0500 +--- lib/readline/input.c 2014-05-22 18:40:59.000000000 -0400 +*************** +*** 535,540 **** +--- 538,551 ---- + else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM) + return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF); ++ /* keyboard-generated signals of interest */ + else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT) + RL_CHECK_SIGNALS (); ++ /* non-keyboard-generated signals of interest */ ++ else if (_rl_caught_signal == SIGALRM ++ #if defined (SIGVTALRM) ++ || _rl_caught_signal == SIGVTALRM ++ #endif ++ ) ++ RL_CHECK_SIGNALS (); + + if (rl_signal_event_hook) +*** ../bash-4.3-patched/builtins/read.def 2013-09-02 11:54:00.000000000 -0400 +--- builtins/read.def 2014-05-08 11:43:35.000000000 -0400 +*************** +*** 443,447 **** + #if defined (READLINE) + if (edit) +! add_unwind_protect (reset_attempted_completion_function, (char *)NULL); + #endif + falarm (tmsec, tmusec); +--- 443,450 ---- + #if defined (READLINE) + if (edit) +! { +! add_unwind_protect (reset_attempted_completion_function, (char *)NULL); +! add_unwind_protect (bashline_reset_event_hook, (char *)NULL); +! } + #endif + falarm (tmsec, tmusec); +*************** +*** 1022,1025 **** +--- 1025,1029 ---- + old_attempted_completion_function = rl_attempted_completion_function; + rl_attempted_completion_function = (rl_completion_func_t *)NULL; ++ bashline_set_event_hook (); + if (itext) + { +*************** +*** 1033,1036 **** +--- 1037,1041 ---- + rl_attempted_completion_function = old_attempted_completion_function; + old_attempted_completion_function = (rl_completion_func_t *)NULL; ++ bashline_reset_event_hook (); + + if (ret == 0) +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 18 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 19 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-020 b/bash/patches/bash43-020 new file mode 100644 index 0000000..5f533ef --- /dev/null +++ b/bash/patches/bash43-020 @@ -0,0 +1,110 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-020 + +Bug-Reported-by: Jared Yanovich slovichon@gmail.com +Bug-Reference-ID: 20140417073654.GB26875@nightderanger.psc.edu +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00065.html + +Bug-Description: + +When PS2 contains a command substitution, here-documents entered in an +interactive shell can sometimes cause a segmentation fault. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/shell.h 2012-12-25 21:11:01.000000000 -0500 +--- shell.h 2014-06-03 09:24:28.000000000 -0400 +*************** +*** 169,173 **** + int expand_aliases; + int echo_input_at_read; +! + } sh_parser_state_t; + +--- 169,174 ---- + int expand_aliases; + int echo_input_at_read; +! int need_here_doc; +! + } sh_parser_state_t; + +*** ../bash-4.3-patched/parse.y 2014-05-14 09:16:40.000000000 -0400 +--- parse.y 2014-04-30 09:27:59.000000000 -0400 +*************** +*** 2643,2647 **** + + r = 0; +! while (need_here_doc) + { + parser_state |= PST_HEREDOC; +--- 2643,2647 ---- + + r = 0; +! while (need_here_doc > 0) + { + parser_state |= PST_HEREDOC; +*************** +*** 6076,6079 **** +--- 6076,6080 ---- + ps->expand_aliases = expand_aliases; + ps->echo_input_at_read = echo_input_at_read; ++ ps->need_here_doc = need_here_doc; + + ps->token = token; +*************** +*** 6124,6127 **** +--- 6125,6129 ---- + expand_aliases = ps->expand_aliases; + echo_input_at_read = ps->echo_input_at_read; ++ need_here_doc = ps->need_here_doc; + + FREE (token); +*** ../bash-4.3-patched/y.tab.c 2014-04-07 11:56:12.000000000 -0400 +--- y.tab.c 2014-07-30 09:55:57.000000000 -0400 +*************** +*** 4955,4959 **** + + r = 0; +! while (need_here_doc) + { + parser_state |= PST_HEREDOC; +--- 5151,5155 ---- + + r = 0; +! while (need_here_doc > 0) + { + parser_state |= PST_HEREDOC; +*************** +*** 8388,8391 **** +--- 8584,8588 ---- + ps->expand_aliases = expand_aliases; + ps->echo_input_at_read = echo_input_at_read; ++ ps->need_here_doc = need_here_doc; + + ps->token = token; +*************** +*** 8436,8439 **** +--- 8633,8637 ---- + expand_aliases = ps->expand_aliases; + echo_input_at_read = ps->echo_input_at_read; ++ need_here_doc = ps->need_here_doc; + + FREE (token); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 19 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 20 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-021 b/bash/patches/bash43-021 new file mode 100644 index 0000000..fd1c945 --- /dev/null +++ b/bash/patches/bash43-021 @@ -0,0 +1,52 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-021 + +Bug-Reported-by: Jared Yanovich slovichon@gmail.com +Bug-Reference-ID: 20140625225019.GJ17044@nightderanger.psc.edu +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00070.html + +Bug-Description: + +When the readline `revert-all-at-newline' option is set, pressing newline +when the current line is one retrieved from history results in a double free +and a segmentation fault. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/lib/readline/misc.c 2012-09-01 18:03:11.000000000 -0400 +--- lib/readline/misc.c 2014-06-30 13:41:19.000000000 -0400 +*************** +*** 462,465 **** +--- 462,466 ---- + /* Set up rl_line_buffer and other variables from history entry */ + rl_replace_from_history (entry, 0); /* entry->line is now current */ ++ entry->data = 0; /* entry->data is now current undo list */ + /* Undo all changes to this history entry */ + while (rl_undo_list) +*************** +*** 469,473 **** + FREE (entry->line); + entry->line = savestring (rl_line_buffer); +- entry->data = 0; + } + entry = previous_history (); +--- 470,473 ---- + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 20 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 21 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-022 b/bash/patches/bash43-022 new file mode 100644 index 0000000..7ce39ec --- /dev/null +++ b/bash/patches/bash43-022 @@ -0,0 +1,56 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-022 + +Bug-Reported-by: scorp.dev.null@gmail.com +Bug-Reference-ID: E1WxXw8-0007iE-Bi@pcm14 +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00061.html + +Bug-Description: + +Using nested pipelines within loops with the `lastpipe' option set can result +in a segmentation fault. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/execute_cmd.c 2014-01-31 10:54:52.000000000 -0500 +--- execute_cmd.c 2014-06-19 08:05:49.000000000 -0400 +*************** +*** 2410,2414 **** + lstdin = wait_for (lastpid); + #if defined (JOB_CONTROL) +! exec_result = job_exit_status (lastpipe_jid); + #endif + unfreeze_jobs_list (); +--- 2425,2438 ---- + lstdin = wait_for (lastpid); + #if defined (JOB_CONTROL) +! /* If wait_for removes the job from the jobs table, use result of last +! command as pipeline's exit status as usual. The jobs list can get +! frozen and unfrozen at inconvenient times if there are multiple pipelines +! running simultaneously. */ +! if (INVALID_JOB (lastpipe_jid) == 0) +! exec_result = job_exit_status (lastpipe_jid); +! else if (pipefail_opt) +! exec_result = exec_result | lstdin; /* XXX */ +! /* otherwise we use exec_result */ +! + #endif + unfreeze_jobs_list (); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 21 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 22 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-023 b/bash/patches/bash43-023 new file mode 100644 index 0000000..d1e4e9d --- /dev/null +++ b/bash/patches/bash43-023 @@ -0,0 +1,104 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-023 + +Bug-Reported-by: Tim Friske me@timfriske.com +Bug-Reference-ID: CAM1RzOcOR9zzC2i+aeES6LtbHNHoOV+0pZEYPrqxv_QAii-RXA@mail.gmail.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00056.html + +Bug-Description: + +Bash does not correctly parse process substitution constructs that contain +unbalanced parentheses as part of the contained command. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/subst.h 2014-01-11 21:02:27.000000000 -0500 +--- subst.h 2014-07-20 17:25:01.000000000 -0400 +*************** +*** 83,87 **** + Start extracting at (SINDEX) as if we had just seen "<(". + Make (SINDEX) get the position just after the matching ")". */ +! extern char *extract_process_subst __P((char *, char *, int *)); + #endif /* PROCESS_SUBSTITUTION */ + +--- 83,87 ---- + Start extracting at (SINDEX) as if we had just seen "<(". + Make (SINDEX) get the position just after the matching ")". */ +! extern char *extract_process_subst __P((char *, char *, int *, int)); + #endif /* PROCESS_SUBSTITUTION */ + +*** ../bash-4.3-patched/subst.c 2014-05-15 08:26:45.000000000 -0400 +--- subst.c 2014-07-20 17:26:44.000000000 -0400 +*************** +*** 1193,1202 **** + Make (SINDEX) get the position of the matching ")". */ /*))*/ + char * +! extract_process_subst (string, starter, sindex) + char *string; + char *starter; + int *sindex; + { + return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND)); + } + #endif /* PROCESS_SUBSTITUTION */ +--- 1193,1208 ---- + Make (SINDEX) get the position of the matching ")". */ /*))*/ + char * +! extract_process_subst (string, starter, sindex, xflags) + char *string; + char *starter; + int *sindex; ++ int xflags; + { ++ #if 0 + return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND)); ++ #else ++ xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0); ++ return (xparse_dolparen (string, string+*sindex, sindex, xflags)); ++ #endif + } + #endif /* PROCESS_SUBSTITUTION */ +*************** +*** 1786,1790 **** + if (string[si] == '\0') + CQ_RETURN(si); +! temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si); + free (temp); /* no SX_ALLOC here */ + i = si; +--- 1792,1796 ---- + if (string[si] == '\0') + CQ_RETURN(si); +! temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si, 0); + free (temp); /* no SX_ALLOC here */ + i = si; +*************** +*** 8250,8254 **** + t_index = sindex + 1; /* skip past both '<' and LPAREN */ + +! temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index); /*))*/ + sindex = t_index; + +--- 8256,8260 ---- + t_index = sindex + 1; /* skip past both '<' and LPAREN */ + +! temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index, 0); /*))*/ + sindex = t_index; + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 22 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 23 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-024 b/bash/patches/bash43-024 new file mode 100644 index 0000000..a24b8fb --- /dev/null +++ b/bash/patches/bash43-024 @@ -0,0 +1,54 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-024 + +Bug-Reported-by: Corentin Peuvrel cpeuvrel@pom-monitoring.com +Bug-Reference-ID: 53CE9E5D.6050203@pom-monitoring.com +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-07/msg00021.html + +Bug-Description: + +Indirect variable references do not work correctly if the reference +variable expands to an array reference using a subscript other than 0 +(e.g., foo='bar[1]' ; echo ${!foo}). + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/subst.c 2014-06-03 09:32:44.000000000 -0400 +--- subst.c 2014-07-23 09:58:19.000000000 -0400 +*************** +*** 7375,7379 **** + + if (want_indir) +! tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at); + else + tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind); +--- 7445,7455 ---- + + if (want_indir) +! { +! tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at); +! /* Turn off the W_ARRAYIND flag because there is no way for this function +! to return the index we're supposed to be using. */ +! if (tdesc && tdesc->flags) +! tdesc->flags &= ~W_ARRAYIND; +! } + else + tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 23 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 24 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-025 b/bash/patches/bash43-025 new file mode 100644 index 0000000..721aca0 --- /dev/null +++ b/bash/patches/bash43-025 @@ -0,0 +1,123 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-025 + +Bug-Reported-by: Stephane Chazelas stephane.chazelas@gmail.com +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +Under certain circumstances, bash will execute user code while processing the +environment for exported function definitions. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/builtins/common.h 2013-07-08 16:54:47.000000000 -0400 +--- builtins/common.h 2014-09-12 14:25:47.000000000 -0400 +*************** +*** 34,37 **** +--- 49,54 ---- + #define SEVAL_PARSEONLY 0x020 + #define SEVAL_NOLONGJMP 0x040 ++ #define SEVAL_FUNCDEF 0x080 /* only allow function definitions */ ++ #define SEVAL_ONECMD 0x100 /* only allow a single command */ + + /* Flags for describe_command, shared between type.def and command.def */ +*** ../bash-4.3-patched/builtins/evalstring.c 2014-02-11 09:42:10.000000000 -0500 +--- builtins/evalstring.c 2014-09-14 14:15:13.000000000 -0400 +*************** +*** 309,312 **** +--- 313,324 ---- + struct fd_bitmap *bitmap; + ++ if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def) ++ { ++ internal_warning ("%s: ignoring function definition attempt", from_file); ++ should_jump_to_top_level = 0; ++ last_result = last_command_exit_value = EX_BADUSAGE; ++ break; ++ } ++ + bitmap = new_fd_bitmap (FD_BITMAP_SIZE); + begin_unwind_frame ("pe_dispose"); +*************** +*** 369,372 **** +--- 381,387 ---- + dispose_fd_bitmap (bitmap); + discard_unwind_frame ("pe_dispose"); ++ ++ if (flags & SEVAL_ONECMD) ++ break; + } + } +*** ../bash-4.3-patched/variables.c 2014-05-15 08:26:50.000000000 -0400 +--- variables.c 2014-09-14 14:23:35.000000000 -0400 +*************** +*** 359,369 **** + strcpy (temp_string + char_index + 1, string); + +! if (posixly_correct == 0 || legal_identifier (name)) +! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST); +! +! /* Ancient backwards compatibility. Old versions of bash exported +! functions like name()=() {...} */ +! if (name[char_index - 1] == ')' && name[char_index - 2] == '(') +! name[char_index - 2] = '\0'; + + if (temp_var = find_function (name)) +--- 364,372 ---- + strcpy (temp_string + char_index + 1, string); + +! /* Don't import function names that are invalid identifiers from the +! environment, though we still allow them to be defined as shell +! variables. */ +! if (legal_identifier (name)) +! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD); + + if (temp_var = find_function (name)) +*************** +*** 382,389 **** + report_error (_("error importing function definition for `%s'"), name); + } +- +- /* ( */ +- if (name[char_index - 1] == ')' && name[char_index - 2] == '\0') +- name[char_index - 2] = '('; /* ) */ + } + #if defined (ARRAY_VARS) +--- 385,388 ---- +*** ../bash-4.3-patched/subst.c 2014-08-11 11:16:35.000000000 -0400 +--- subst.c 2014-09-12 15:31:04.000000000 -0400 +*************** +*** 8048,8052 **** + goto return0; + } +! else if (var = find_variable_last_nameref (temp1)) + { + temp = nameref_cell (var); +--- 8118,8124 ---- + goto return0; + } +! else if (var && (invisible_p (var) || var_isset (var) == 0)) +! temp = (char *)NULL; +! else if ((var = find_variable_last_nameref (temp1)) && var_isset (var) && invisible_p (var) == 0) + { + temp = nameref_cell (var); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 24 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 25 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/bash/patches/bash43-026 b/bash/patches/bash43-026 new file mode 100644 index 0000000..d5d5b1d --- /dev/null +++ b/bash/patches/bash43-026 @@ -0,0 +1,60 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-026 + +Bug-Reported-by: Tavis Ormandy taviso@cmpxchg8b.com +Bug-Reference-ID: +Bug-Reference-URL: http://twitter.com/taviso/statuses/514887394294652929 + +Bug-Description: + +Under certain circumstances, bash can incorrectly save a lookahead character and +return it on a subsequent call, even when reading a new line. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3.25/parse.y 2014-07-30 10:14:31.000000000 -0400 +--- parse.y 2014-09-25 20:20:21.000000000 -0400 +*************** +*** 2954,2957 **** +--- 2954,2959 ---- + word_desc_to_read = (WORD_DESC *)NULL; + ++ eol_ungetc_lookahead = 0; ++ + current_token = '\n'; /* XXX */ + last_read_token = '\n'; +*** ../bash-4.3.25/y.tab.c 2014-07-30 10:14:32.000000000 -0400 +--- y.tab.c 2014-09-25 20:21:48.000000000 -0400 +*************** +*** 5266,5269 **** +--- 5266,5271 ---- + word_desc_to_read = (WORD_DESC *)NULL; + ++ eol_ungetc_lookahead = 0; ++ + current_token = '\n'; /* XXX */ + last_read_token = '\n'; +*************** +*** 8540,8542 **** + } + #endif /* HANDLE_MULTIBYTE */ +- +--- 8542,8543 ---- +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 25 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 26 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/gcc/gcc.nm b/gcc/gcc.nm index 75b6970..919dccc 100644 --- a/gcc/gcc.nm +++ b/gcc/gcc.nm @@ -3,11 +3,11 @@ # Copyright (C) - IPFire Development Team info@ipfire.org # ###############################################################################
-# Configure build to compile with cloog and ppl. -build_cloog_ppl = 1 +# Configure build to compile with cloog. +build_cloog = 1
name = gcc -version = 4.8.1 +version = 4.9.1 release = 1
maintainer = Michael Tremer michael.tremer@ipfire.org @@ -22,15 +22,17 @@ description end
# This is the at least required version of binutils. -required_binutils_version = 2.21.51.0.8-1 +binutils_version = 2.24 +cloog_version = 0.18.1
source_dl = http://ftp.gnu.org/gnu/gcc/%%7Bthisapp%7D/ +source_dl += ftp://gcc.gnu.org/pub/gcc/infrastructure/ sources = %{thisapp}.tar.gz
build requires autogen - binutils >= %{required_binutils_version} + binutils >= %{binutils_version} dejagnu elfutils-devel expect @@ -47,17 +49,23 @@ build end
# If cloog support is enabled, we require the devel packages for build. - if "%{build_cloog_ppl}" == "1" - requires += cloog-ppl-devel >= 0.15.11-2 - requires += ppl-devel >= 1.0 + if "%{build_cloog}" == "1" + requires += cloog-devel >= %{cloog_version} + requires += isl-devel end
# Build libquadmath (only on x86). build_libquadmath = 0
+ # Build liblsan (only on x86_64). + build_liblsan = 0 + # Build libtasn (only on x86_64). build_libtsan = 0
+ # Build libcilkrts (only x86) + build_libcilkrts = 0 + # A couple of configure arguments depending on the architecture and # configuration. configure_options = @@ -68,13 +76,16 @@ build configure_options = --disable-multilib
build_libquadmath = 1 + build_liblsan = 1 build_libtsan = 1 + build_libcilkrts = 1 end
if "%{DISTRO_ARCH}" == "i686" configure_options = --with-arch=%{DISTRO_ARCH} --with-tune=generic
build_libquadmath = 1 + build_libcilkrts = 1 end
if "%{DISTRO_ARCH}" == "armv5tel" @@ -98,9 +109,11 @@ build --with-abi=aapcs-linux end
- if "%{build_cloog_ppl}" == "1" - configure_options += --with-cloog --with-ppl \ - --disable-ppl-version-check + if "%{build_cloog}" == "1" + configure_options += \ + --with-cloog=%{prefix} \ + --with-isl=%{prefix} \ + --enable-cloog-backend=isl end
# CFLAGS for hardening. @@ -163,10 +176,20 @@ build CFLAGS="%{CFLAGS}" CFLAGS=$(echo ${CFLAGS} | sed -e 's/(-Wp,)?-D_FORTIFY_SOURCE=[12]//g') CFLAGS=$(echo ${CFLAGS} | sed -e 's/-m64//g;s/-m32//g;s/-m31//g') + CFLAGS=$(echo ${CFLAGS} | sed -e 's/-mfpmath=sse/-mfpmath=sse -msse2/g') CFLAGS=$(echo ${CFLAGS} | sed -e 's/-march=i.86//g') CFLAGS=$(echo ${CFLAGS} | sed -e 's/ -pipe / /g') CFLAGS=$(echo "${CFLAGS}" | sed -e 's/[[:blank:]]+/ /g') CXXFLAGS=$(echo ${CFLAGS} | sed -e 's/ -Wall//g') + CXXFLAGS=$(echo ${CXXFLAGS} | sed -e 's/ -fexceptions / /g') + CXXFLAGS=$(echo ${CXXFLAGS} | sed -e 's/ -Werror=format-security / -Wformat -Werror=format-security /g') + + case "${CFLAGS}" in + *-fasynchronous-unwind-tables*) + sed -i -e "s/-fno-exceptions /-fno-exceptions -fno-asynchronous-unwind-tables/" \ + ../%{thisapp}/Makefile.in + ;; + esac
CFLAGS="${CFLAGS}" \ CXXFLAGS="${CXXFLAGS}" \ @@ -188,7 +211,6 @@ build --enable-checking=release \ --disable-werror \ --disable-libssp \ - --disable-static \ --with-system-zlib \ --with-bugurl=http://bugtracker.ipfire.org \ --disable-libunwind-exceptions \ @@ -197,8 +219,12 @@ build --with-linker-hash-style=gnu \ --enable-plugin \ --enable-initfini-array \ + --disable-libgcj \ %{configure_options}
+ # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58012 + # XXX disabled flags: --disable-static + # GCC does not support a parallel build. make %{make_bootstrap} BOOT_CFLAGS="${CFLAGS}"
@@ -212,7 +238,7 @@ build end
#test - # cd %{DIR_SRC}/gcc-build && make check + # cd %{DIR_SRC}/gcc-build && make -k check || true # cd %{DIR_APP} && ./contrib/test_summary #end
@@ -265,12 +291,7 @@ build chmod 755 %{BUILDROOT}%{libdir}/libgomp.so.1.*
# libstdc++ - ln -svf ../../../libstdc++.so.6.0.18 ${FULLPATH}/libstdc++.so - - # libmudflap - ln -svf ../../../libmudflap.so.0.0.0 ${FULLPATH}/libmudflap.so - ln -svf ../../../libmudflapth.so.0.0.0 ${FULLPATH}/libmudflapth.so - chmod 755 %{BUILDROOT}%{libdir}/libmudflap{,th}.so.0.* + ln -svf ../../../libstdc++.so.6.0.20 ${FULLPATH}/libstdc++.so
# libquadmath if [ "%{build_libquadmath}" = "1" ]; then @@ -282,6 +303,28 @@ build mv -vf %{BUILDROOT}%{libdir}/libitm.spec ${FULLPATH}/ ln -svf ../../../libitm.so.1.0.0 ${FULLPATH}/libitm.so chmod 755 %{BUILDROOT}%{libdir}/libitm.so.1.* + + # liblsan + if [ "%{build_liblsan}" = "1" ]; then + ln -svf ../../../liblsan.so.0.0.0 ${FULLPATH}/liblsan.so + chmod 755 %{BUILDROOT}%{libdir}/liblsan.so.* + fi + + # libtsan + if [ "%{build_libtsan}" = "1" ]; then + ln -svf ../../../libtsan.so.0.0.0 ${FULLPATH}/libtsan.so + chmod 755 %{BUILDROOT}%{libdir}/libtsan.so.* + fi + + # libubsan + ln -svf ../../../libubsan.so.0.0.0 ${FULLPATH}/libubsan.so + chmod 755 %{BUILDROOT}%{libdir}/libubsan.so.* + + # libcilkrts + if [ "%{build_libcilkrts}" = "1" ]; then + ln -svf ../../../libcilkrts.so.5.0.0 ${FULLPATH}/libcilkrts.so + chmod 755 %{BUILDROOT}%{libdir}/libcilkrts.so.5.* + fi end
keep_libraries @@ -295,7 +338,7 @@ packages groups += Build
requires - binutils >= %{required_binutils_version} + binutils >= %{binutils_version} filesystem >= 002 glibc >= 2.16 glibc-devel @@ -309,8 +352,8 @@ packages provides += libgcc-devel = %{thisver} obsoletes += libgcc-devel < %{thisver}
- if "%{build_cloog_ppl}" == "1" - requires += cloog-ppl >= 0.15 + if "%{build_cloog}" == "1" + requires += cloog >= %{cloog_version} end end
@@ -382,6 +425,11 @@ packages files %{libdir}/libgcc*.so.* end + + obsoletes + libmudflap + libmudflap-devel + end end
package libstdc++ @@ -426,41 +474,6 @@ packages end end
- package libmudflap - summary = GCC mudflap shared support library. - description - This package contains GCC shared support library which is needed - for mudflap support. - end - - files - %{libdir}/libmudflap*.so.* - end - end - - package libmudflap-devel - summary = Development files for GCC mudflap support. - description - This package contains headers for building mudflap-instrumented programs. - - To instrument a non-threaded program, add -fmudflap - option to GCC and when linking add -lmudflap, for threaded programs - also add -fmudflapth and -lmudflapth. - end - - requires - libmudflap = %{thisver} - end - - files - %{libdir}/libmudflap.so - %{libdir}/libmudflapth.so - %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/mf-runtime.h - %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libmudflap.so - %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libmudflapth.so - end - end - if "%{build_libquadmath}" == "1" package libquadmath summary = GCC __float128 shared support library. @@ -548,7 +561,7 @@ packages end
files - %{libdir}/libasan.so.0* + %{libdir}/libasan.so.1* end end
@@ -566,6 +579,45 @@ packages end end
+ package libubsan + summary = The Undefined Behavior Sanitizer runtime library + description + This package contains the Undefined Behavior Sanitizer library + which is used for -fsanitize=undefined instrumented programs. + end + + files + %{libdir}/libubsan.so.0* + end + end + + if "%{build_liblsan}" == "1" + package liblsan + summary = The Leak Sanitizer runtime library + description + This package contains the Leak Sanitizer library + which is used for -fsanitize=leak instrumented programs. + end + + files + %{libdir}/liblsan.so.0* + end + end + end + + if "%{build_libcilkrts}" == "1" + package libcilkrts + summary = The Cilk+ runtime library + description + This package contains the Cilk+ runtime library. + end + + files + %{libdir}/libcilkrts.so.5* + end + end + end + package gcc-plugin-devel summary = Support for compiling GCC plugins. description diff --git a/gcc/patches/01_all_gcc49_configure.patch b/gcc/patches/01_all_gcc49_configure.patch new file mode 100644 index 0000000..ab9aae0 --- /dev/null +++ b/gcc/patches/01_all_gcc49_configure.patch @@ -0,0 +1,156 @@ +2013-12-30 Magnus Granberg zorry@gentoo.org + + * gcc/configure.ac Add --enable-esp and define ENABLE_ESP. + Check if we support crtbeginP and define ENABLE_CRTBEGINP. + * gcc/configure Regenerated + + +--- a/gcc/configure.ac 2011-11-18 11:52:32.000000000 +0100 ++++ b/gcc/configure.ac 2012-10-02 17:39:15.649526241 +0200 +@@ -5130,6 +5237,55 @@ if test x"${LINKER_HASH_STYLE}" != x; th + [The linker hash style]) + fi + ++# -------------- ++# Esp checks ++# -------------- ++ ++# Check whether --enable-esp was given and target have the support. ++AC_ARG_ENABLE([esp], ++[AS_HELP_STRING([--enable-esp], ++ [Enable Stack protector and Position independent executable as ++ default if we have suppot for it when compiling ++ and link with -z now as default. ++ Linux targets supported i*86, x86_64, x32, ++ powerpc, powerpc64, ia64, arm and mips.])], ++ enable_esp=$enableval, ++ enable_esp=no) ++if test $enable_esp = yes ; then ++ AC_MSG_CHECKING(if $target support esp) ++ case "$target" in ++ i?86*-*-linux* | x86_64-*-linux* | powerpc*-*-linux* | mips-*-linux* | arm*-*-linux* | ia64-*-linux*) ++ enable_esp=yes ++ AC_DEFINE(ENABLE_ESP, 1, ++ [Define if your target support esp and you have enable it.]) ++ ;; ++ *) ++ enable_esp=no ++ ;; ++ esac ++AC_MSG_RESULT($enable_esp) ++fi ++AC_SUBST([enable_esp]) ++if test $enable_esp = yes ; then ++ AC_MSG_CHECKING(checking for crtbeginP.o support) ++ if test x$enable_esp = xyes ; then ++ case "$target" in ++ ia64*-*-linux*) ++ enable_crtbeginP=no ;; ++ *-*-linux*) ++ if test x$gcc_cv_ld_pie = xyes && test x$lt_cv_prog_compiler_static_works = xyes; then ++ enable_crtbeginP=yes ++ AC_DEFINE(ENABLE_CRTBEGINP, 1, ++ [Define if your compiler will support crtbeginP.]) ++ fi ++ ;; ++ *) enable_crtbeginP=no ;; ++ esac ++ fi ++ AC_MSG_RESULT($enable_crtbeginP) ++fi ++AC_SUBST([enable_crtbeginP]) ++ + # Configure the subdirectories + # AC_CONFIG_SUBDIRS($subdirs) + +--- a/gcc/configure 2013-02-01 21:26:24.000000000 +0100 ++++ b/gcc/configure 2013-02-12 01:59:20.000000000 +0100 +@@ -600,6 +600,8 @@ + ac_subst_vars='LTLIBOBJS + LIBOBJS + PICFLAG ++enable_crtbeginP ++enable_esp + enable_host_shared + enable_plugin + pluginlibs +@@ -920,6 +922,7 @@ + enable_plugin + enable_libquadmath_support + with_linker_hash_style ++enable_esp + ' + ac_precious_vars='build_alias + host_alias +@@ -1633,6 +1636,11 @@ + --enable-plugin enable plugin support + --disable-libquadmath-support + disable libquadmath support for Fortran ++ --enable-esp Enable Stack protector and Position independent ++ executable as default if we have suppot for it when ++ compiling and link with -z now as default. ++ Linux targets supported i*86, x86_64, x32, ++ powerpc, powerpc64, ia64, arm and mips. + + Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] +@@ -27419,6 +27427,59 @@ + + fi + ++# -------------- ++# Esp checks ++# -------------- ++ ++# Check whether --enable-esp was given and target have the support. ++# Check whether --enable-esp was given. ++if test "${enable_esp+set}" = set; then : ++ enableval=$enable_esp; enable_esp=$enableval ++else ++ enable_esp=no ++fi ++ ++if test $enable_esp = yes ; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $target support esp" >&5 ++$as_echo_n "checking if $target support esp... " >&6; } ++ case "$target" in ++ i?86*-*-linux* | x86_64-*-linux* | powerpc*-*-linux* | mips*-*-linux* | arm*-*-linux* | ia64-*-linux*) ++ enable_esp=yes ++ ++$as_echo "#define ENABLE_ESP 1" >>confdefs.h ++ ++ ;; ++ *) ++ enable_esp=no ++ ;; ++ esac ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_esp" >&5 ++$as_echo "$enable_esp" >&6; } ++fi ++ ++if test $enable_esp = yes ; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking checking for crtbeginP.o support" >&5 ++$as_echo_n "checking checking for crtbeginP.o support... " >&6; } ++ if test x$enable_esp = xyes ; then ++ case "$target" in ++ ia64*-*-linux*) ++ enable_crtbeginP=no ;; ++ *-*-linux*) ++ if test x$gcc_cv_ld_pie = xyes && test x$lt_cv_prog_compiler_static_works = xyes; then ++ enable_crtbeginP=yes ++ ++$as_echo "#define ENABLE_CRTBEGINP 1" >>confdefs.h ++ ++ fi ++ ;; ++ *) enable_crtbeginP=no ;; ++ esac ++ fi ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_crtbeginP" >&5 ++$as_echo "$enable_crtbeginP" >&6; } ++fi ++ ++ + # Configure the subdirectories + # AC_CONFIG_SUBDIRS($subdirs) + diff --git a/gcc/patches/02_all_gcc48_config.in.patch0 b/gcc/patches/02_all_gcc48_config.in.patch0 new file mode 100644 index 0000000..3b4747b --- /dev/null +++ b/gcc/patches/02_all_gcc48_config.in.patch0 @@ -0,0 +1,32 @@ +2013-02-13 Magnus Granberg zorry@gentoo.org + + * gcc/config.in Add ENABLE_CRTBEGINP, ENABLE_ESP + +--- gcc/config.in 2009-04-21 11:08:08.000000000 +0200 ++++ gcc/config.in 2009-05-12 00:10:08.000000000 +0200 +@@ -46,6 +46,12 @@ + #endif + + ++/* Define to 1 to enable crtbeginP.o. */ ++#ifndef USED_FOR_TARGET ++#undef ENABLE_CRTBEGINP ++#endif ++ ++ + /* Define to 1 to specify that we are using the BID decimal floating point + format instead of DPD */ + #ifndef USED_FOR_TARGET +@@ -65,6 +65,12 @@ + #endif + + ++/* Define to 1 to enable esp. */ ++#ifndef USED_FOR_TARGET ++#undef ENABLE_ESP ++#endif ++ ++ + /* Define to 1 to enable fixed-point arithmetic extension to C. */ + #ifndef USED_FOR_TARGET + #undef ENABLE_FIXED_POINT diff --git a/gcc/patches/03_all_gcc49_Makefile.in.patch b/gcc/patches/03_all_gcc49_Makefile.in.patch new file mode 100644 index 0000000..bf53d3c --- /dev/null +++ b/gcc/patches/03_all_gcc49_Makefile.in.patch @@ -0,0 +1,96 @@ +2012-01-17 Magnus Granberg zorry@gentoo.org + + * gcc/Makefile.in Add -fno-PIE. to ALL_CFLAGS and + ALL_CXXFLAGS if enable_esp yes. + Echo enable_esp and enable_crtbeginP to tmp-libgcc.mvars. + * libgcc/Makefile.in Add crtbeginP.o to EXTRA_PARTS if enable_crtbeginP yes + We add new file crtbeginP.o if enable_crtbeginP yes + Add -fno-PIE. to CRTSTUFF_CFLAGS. + +--- a/gcc/Makefile.in 2011-11-09 02:20:14.000000000 +0100 ++++ b/gcc/Makefile.in 2011-12-24 22:28:08.864804375 +0100 +@@ -247,6 +247,14 @@ LINKER_FLAGS = $(CFLAGS) + endif + endif + ++# We don't want to compile the compiler with -fPIE, it make PCH fail. ++enable_esp = @enable_esp@ ++ifeq ($(enable_esp),yes) ++ESP_NOPIE_CFLAGS = -fno-PIE ++else ++ESP_NOPIE_CFLAGS= ++endif ++ + # ------------------------------------------- + # Programs which operate on the build machine + # ------------------------------------------- +@@ -974,12 +982,13 @@ INTERNAL_CFLAGS = -DIN_GCC @CROSS@ + + # This is the variable actually used when we compile. If you change this, + # you probably want to update BUILD_CFLAGS in configure.ac +-ALL_CFLAGS = $(T_CFLAGS) $(CFLAGS-$@) \ ++ALL_CFLAGS = $(ESP_NOPIE_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) \ + $(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) @DEFS@ + + # The C++ version. +-ALL_CXXFLAGS = $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS) $(INTERNAL_CFLAGS) \ +- $(COVERAGE_FLAGS) $(NOEXCEPTION_FLAGS) $(WARN_CXXFLAGS) @DEFS@ ++ALL_CXXFLAGS = $(ESP_NOPIE_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS) \ ++ $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(NOEXCEPTION_FLAGS) \ ++ $(WARN_CXXFLAGS) @DEFS@ + + # Likewise. Put INCLUDES at the beginning: this way, if some autoconf macro + # puts -I options in CPPFLAGS, our include files in the srcdir will always +@@ -1814,6 +1823,8 @@ libgcc.mvars: config.status Makefile spe + echo GCC_CFLAGS = '$(GCC_CFLAGS)' >> tmp-libgcc.mvars + echo INHIBIT_LIBC_CFLAGS = '$(INHIBIT_LIBC_CFLAGS)' >> tmp-libgcc.mvars + echo TARGET_SYSTEM_ROOT = '$(TARGET_SYSTEM_ROOT)' >> tmp-libgcc.mvars ++ echo enable_esp = '$(enable_esp)' >> tmp-libgcc.mvars ++ echo enable_crtbeginP = '@enable_crtbeginP@' >> tmp-libgcc.mvars + + mv tmp-libgcc.mvars libgcc.mvars + +--- a/libgcc/Makefile.in 2011-11-22 04:01:02.000000000 +0100 ++++ b/libgcc/Makefile.in 2011-12-25 15:18:22.449610631 +0100 +@@ -219,6 +219,17 @@ else + DECNUMINC = + endif + ++ifeq ($(enable_esp),yes) ++ESP_NOPIE_CFLAGS = -fno-PIE ++else ++ESP_NOPIE_CFLAGS= ++endif ++ ++# We add crtbeginP.o to the EXTRA_PARTS list if enable_crtbeginP = yes ++ifeq ($(enable_crtbeginP),yes) ++EXTRA_PARTS += crtbeginP.o ++endif ++ + # Options to use when compiling libgcc2.a. + # + LIBGCC2_DEBUG_CFLAGS = -g +@@ -279,7 +290,7 @@ INTERNAL_CFLAGS = $(CFLAGS) $(LIBGCC2_CF + CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \ + -finhibit-size-directive -fno-inline -fno-exceptions \ + -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \ +- -fno-stack-protector \ ++ -fno-stack-protector $(ESP_NOPIE_CFLAGS) \ + $(INHIBIT_LIBC_CFLAGS) + + # Extra flags to use when compiling crt{begin,end}.o. +@@ -966,6 +977,13 @@ crtendS$(objext): $(srcdir)/crtstuff.c + # This is a version of crtbegin for -static links. + crtbeginT$(objext): $(srcdir)/crtstuff.c + $(crt_compile) $(CRTSTUFF_T_CFLAGS) -c $< -DCRT_BEGIN -DCRTSTUFFT_O ++ ++# This is a version of crtbegin for -static -fPIE links. ++ifeq ($(enable_crtbeginP),yes) ++crtbeginP$(objext): $(srcdir)/crtstuff.c ++ $(crt_compile) $(CRTSTUFF_T_CFLAGS_S) \ ++ -c $< -DCRT_BEGIN -DCRTSTUFFT_O -DCRTSTUFFS_O ++endif + + ifeq ($(enable_vtable_verify),yes) + # These are used in vtable verification; see comments in source files for + \ No newline at end of file diff --git a/gcc/patches/04_all_gcc49_default_ssp.patch b/gcc/patches/04_all_gcc49_default_ssp.patch new file mode 100644 index 0000000..50e2645 --- /dev/null +++ b/gcc/patches/04_all_gcc49_default_ssp.patch @@ -0,0 +1,261 @@ +2014-04-27 Magnus Granberg zorry@gentoo.org + + Patch orig: Debian/Ubuntu + # 484714 + We Add -fstack-protector-strong as default and change + ssp-buffer-size + +--- a/configure.ac ++++ b/configure.ac +@@ -3238,6 +3238,9 @@ case $build in + esac ;; + esac + ++# Needed when we build with -fstack-protector as default. ++stage1_cflags="$stage1_cflags -fno-stack-protector" ++ + AC_SUBST(stage1_cflags) + + # Enable --enable-checking in stage1 of the compiler. +--- a/configure ++++ b/configure +@@ -14453,7 +14453,8 @@ case $build in + esac ;; + esac + +- ++# Needed when we build with -fstack-protector as default. ++stage1_cflags="$stage1_cflags -fno-stack-protector" + + # Enable --enable-checking in stage1 of the compiler. + # Check whether --enable-stage1-checking was given. +--- a/Makefile.in ++++ b/Makefile.in +@@ -362,7 +362,7 @@ BUILD_PREFIX_1 = @BUILD_PREFIX_1@ + + # Flags to pass to stage2 and later makes. They are defined + # here so that they can be overridden by Makefile fragments. +-BOOT_CFLAGS= -g -O2 ++BOOT_CFLAGS= -g -O2 -fno-stack-protector + BOOT_LDFLAGS= + BOOT_ADAFLAGS= -gnatpg + +@@ -408,9 +408,9 @@ GNATMAKE = @GNATMAKE@ + + CFLAGS = @CFLAGS@ + LDFLAGS = @LDFLAGS@ +-LIBCFLAGS = $(CFLAGS) ++LIBCFLAGS = $(CFLAGS) -fno-stack-protector + CXXFLAGS = @CXXFLAGS@ +-LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates ++LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates -fno-stack-protector + GOCFLAGS = $(CFLAGS) + + TFLAGS = +--- a/gcc/doc/invoke.texi ++++ b/gcc/doc/invoke.texi +@@ -9239,6 +9251,11 @@ Like @option{-fstack-protector} but incl + be protected --- those that have local array definitions, or have + references to local frame addresses. + ++NOTE: In Gentoo GCC 4.9.0 and later versions this option is enabled by default ++for C, C++, ObjC, ObjC++, if neither @option{-fno-stack-protector}, ++@option{-nostdlib}, @option{-ffreestanding}, @option{-fstack-protector}, ++@option{-fstack-protector-strong}or @option{-fstack-protector-all}are found. ++ + @item -fsection-anchors + @opindex fsection-anchors + Try to reduce the number of symbolic address calculations by using +@@ -9461,6 +9465,9 @@ + The minimum size of buffers (i.e.@: arrays) that receive stack smashing + protection when @option{-fstack-protection} is used. + ++NOTE: In Gentoo this is change from "8" to "4", to increase ++the number of functions protected by the stack protector. ++ + @item max-jump-thread-duplication-stmts + Maximum number of statements allowed in a block that needs to be + duplicated when threading jumps. +--- a/gcc/cp/lang-specs.h ++++ b/gcc/cp/lang-specs.h +@@ -46,7 +46,7 @@ along with GCC; see the file COPYING3. If not see + %(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}\ + cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}\ + %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\ +- %(cc1_options) %2\ ++ %(cc1_options) %(ssp_default) %2\ + %{!fsyntax-only:%{!fdump-ada-spec*:-o %g.s %{!o*:--output-pch=%i.gch}\ + %W{o*:--output-pch=%*}}%V}}}}", + CPLUSPLUS_CPP_SPEC, 0, 0}, +@@ -57,11 +57,11 @@ along with GCC; see the file COPYING3. If not see + %(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}\ + cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}\ + %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\ +- %(cc1_options) %2\ ++ %(cc1_options) %(ssp_default) %2\ + %{!fsyntax-only:%(invoke_as)}}}}", + CPLUSPLUS_CPP_SPEC, 0, 0}, + {".ii", "@c++-cpp-output", 0, 0, 0}, + {"@c++-cpp-output", + "%{!M:%{!MM:%{!E:\ +- cc1plus -fpreprocessed %i %(cc1_options) %2\ ++ cc1plus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, +--- a/gcc/gcc.c ++++ b/gcc/gcc.c +@@ -651,6 +651,19 @@ proper position among the other output files. */ + #define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G" + #endif + ++#ifndef SSP_DEFAULT_SPEC ++#if defined ( TARGET_LIBC_PROVIDES_SSP ) && defined ( EFAULT_SSP ) ++#define SSP_DEFAULT_SPEC "%{fno-stack-protector|fstack-protector| \ ++ fstack-protector-strong|fstack-protector-all| \ ++ ffreestanding|nostdlib:;:-fstack-protector-strong}" ++/* Add -fno-stack-protector for the use of gcc-specs-ssp. */ ++#define CC1_SSP_DEFAULT_SPEC "%{!fno-stack-protector:}" ++#else ++#define SSP_DEFAULT_SPEC "" ++#define CC1_SSP_DEFAULT_SPEC "" ++#endif ++#endif ++ + #ifndef LINK_SSP_SPEC + #ifdef TARGET_LIBC_PROVIDES_SSP + #define LINK_SSP_SPEC "%{fstack-protector:}" +@@ -771,7 +781,7 @@ proper position among the other output f + + static const char *asm_debug = ASM_DEBUG_SPEC; + static const char *cpp_spec = CPP_SPEC; +-static const char *cc1_spec = CC1_SPEC; ++static const char *cc1_spec = CC1_SPEC CC1_SSP_DEFAULT_SPEC; + static const char *cc1plus_spec = CC1PLUS_SPEC; + static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC; + static const char *link_ssp_spec = LINK_SSP_SPEC; +@@ -777,6 +785,8 @@ static const char *cc1_spec = CC1_SPEC; + static const char *cc1plus_spec = CC1PLUS_SPEC; + static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC; + static const char *link_ssp_spec = LINK_SSP_SPEC; ++static const char *ssp_default_spec = SSP_DEFAULT_SPEC; ++static const char *cc1_ssp_default_spec = CC1_SSP_DEFAULT_SPEC; + static const char *asm_spec = ASM_SPEC; + static const char *asm_final_spec = ASM_FINAL_SPEC; + static const char *link_spec = LINK_SPEC; +@@ -835,7 +844,7 @@ static const char *cpp_unique_options = + static const char *cpp_options = + "%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w}\ + %{f*} %{g*:%{!g0:%{g*} %{!fno-working-directory:-fworking-directory}}} %{O*}\ +- %{undef} %{save-temps*:-fpch-preprocess}"; ++ %{undef} %{save-temps*:-fpch-preprocess} %(ssp_default)"; + + /* This contains cpp options which are not passed when the preprocessor + output will be used by another program. */ +@@ -1015,9 +1024,9 @@ static const struct compiler default_compilers[] = + %{save-temps*|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \ + %(cpp_options) -o %{save-temps*:%b.i} %{!save-temps*:%g.i} \n\ + cc1 -fpreprocessed %{save-temps*:%b.i} %{!save-temps*:%g.i} \ +- %(cc1_options)}\ ++ %(cc1_options) %(ssp_default)}\ + %{!save-temps*:%{!traditional-cpp:%{!no-integrated-cpp:\ +- cc1 %(cpp_unique_options) %(cc1_options)}}}\ ++ cc1 %(cpp_unique_options) %(cc1_options) %(ssp_default)}}}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 1}, + {"-", + "%{!E:%e-E or -x required when input is from standard input}\ +@@ -1040,7 +1049,7 @@ static const struct compiler default_compilers[] = + %W{o*:--output-pch=%*}}%V}}}}}}", 0, 0, 0}, + {".i", "@cpp-output", 0, 0, 0}, + {"@cpp-output", +- "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, ++ "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %(ssp_default) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, + {".s", "@assembler", 0, 0, 0}, + {"@assembler", + "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 0, 0}, +@@ -1267,6 +1276,8 @@ static struct spec_list static_specs[] = + INIT_STATIC_SPEC ("cc1plus", &cc1plus_spec), + INIT_STATIC_SPEC ("link_gcc_c_sequence", &link_gcc_c_sequence_spec), + INIT_STATIC_SPEC ("link_ssp", &link_ssp_spec), ++ INIT_STATIC_SPEC ("ssp_default", &ssp_default_spec), ++ INIT_STATIC_SPEC ("cc1_ssp_default", &cc1_ssp_default_spec), + INIT_STATIC_SPEC ("endfile", &endfile_spec), + INIT_STATIC_SPEC ("link", &link_spec), + INIT_STATIC_SPEC ("lib", &lib_spec), +--- a/gcc/objc/lang-specs.h ++++ b/gcc/objc/lang-specs.h +@@ -29,9 +29,9 @@ along with GCC; see the file COPYING3. If not see + %{traditional|traditional-cpp:\ + %eGNU Objective C no longer supports traditional compilation}\ + %{save-temps*|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps*:%b.mi} %{!save-temps*:%g.mi} \n\ +- cc1obj -fpreprocessed %{save-temps*:%b.mi} %{!save-temps*:%g.mi} %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}\ ++ cc1obj -fpreprocessed %{save-temps*:%b.mi} %{!save-temps*:%g.mi} %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}\ + %{!save-temps*:%{!no-integrated-cpp:\ +- cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}}\ ++ cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, + {"@objective-c-header", + "%{E|M|MM:cc1obj -E %{traditional|traditional-cpp:-traditional-cpp}\ +@@ -40,18 +40,18 @@ along with GCC; see the file COPYING3. If not see + %{traditional|traditional-cpp:\ + %eGNU Objective C no longer supports traditional compilation}\ + %{save-temps*|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps*:%b.mi} %{!save-temps*:%g.mi} \n\ +- cc1obj -fpreprocessed %b.mi %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ ++ cc1obj -fpreprocessed %b.mi %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\ + -o %g.s %{!o*:--output-pch=%i.gch}\ + %W{o*:--output-pch=%*}%V}\ + %{!save-temps*:%{!no-integrated-cpp:\ +- cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ ++ cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\ + -o %g.s %{!o*:--output-pch=%i.gch}\ + %W{o*:--output-pch=%*}%V}}}}}", 0, 0, 0}, + {".mi", "@objective-c-cpp-output", 0, 0, 0}, + {"@objective-c-cpp-output", +- "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ ++ "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, + {"@objc-cpp-output", + "%nobjc-cpp-output is deprecated; please use objective-c-cpp-output instead\n\ +- %{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ ++ %{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, +--- a/gcc/objcp/lang-specs.h ++++ b/gcc/objcp/lang-specs.h +@@ -36,7 +36,7 @@ along with GCC; see the file COPYING3. If not see + %(cpp_options) %2 -o %{save-temps*:%b.mii} %{!save-temps*:%g.mii} \n}\ + cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\ + %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\ +- %(cc1_options) %2\ ++ %(cc1_options) %(ssp_default) %2\ + -o %g.s %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}%V}}}", + CPLUSPLUS_CPP_SPEC, 0, 0}, + {"@objective-c++", +@@ -46,16 +46,16 @@ along with GCC; see the file COPYING3. If not see + %(cpp_options) %2 -o %{save-temps*:%b.mii} %{!save-temps*:%g.mii} \n}\ + cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\ + %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\ +- %(cc1_options) %2\ ++ %(cc1_options) %(ssp_default) %2\ + %{!fsyntax-only:%(invoke_as)}}}}", + CPLUSPLUS_CPP_SPEC, 0, 0}, + {".mii", "@objective-c++-cpp-output", 0, 0, 0}, + {"@objective-c++-cpp-output", + "%{!M:%{!MM:%{!E:\ +- cc1objplus -fpreprocessed %i %(cc1_options) %2\ ++ cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, + {"@objc++-cpp-output", + "%nobjc++-cpp-output is deprecated; please use objective-c++-cpp-output instead\n\ + %{!M:%{!MM:%{!E:\ +- cc1objplus -fpreprocessed %i %(cc1_options) %2\ ++ cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, +--- a/gcc/params.def ++++ b/gcc/params.def +@@ -662,7 +662,7 @@ DEFPARAM (PARAM_INTEGER_SHARE_LIMIT, + DEFPARAM (PARAM_SSP_BUFFER_SIZE, + "ssp-buffer-size", + "The lower bound for a buffer to be considered for stack smashing protection", +- 8, 1, 0) ++ 4, 1, 0) + + /* When we thread through a block we have to make copies of the + statements within the block. Clearly for large blocks the code diff --git a/gcc/patches/05_all_gcc48_gcc.c.patch0 b/gcc/patches/05_all_gcc48_gcc.c.patch0 new file mode 100644 index 0000000..ddfcafd --- /dev/null +++ b/gcc/patches/05_all_gcc48_gcc.c.patch0 @@ -0,0 +1,25 @@ +2014-01-01 Magnus Granberg zorry@gentoo.org + + * gcc/gcc.c include esp.h + static const char *cc1_spec We set that in esp.h if ENABLE_ESP. + +--- gcc/gcc.c 2010-01-21 10:29:30.000000000 -0500 ++++ gcc/gcc.c 2010-01-29 23:29:16.000000000 -0500 +@@ -44,6 +44,7 @@ + #include "opts.h" + #include "params.h" + #include "vec.h" ++#include "config/esp.h" /* for --enable-esp support */ + #include "filenames.h" + + /* By default there is no special suffix for target executables. */ +@@ -822,7 +823,9 @@ + + static const char *asm_debug; + static const char *cpp_spec = CPP_SPEC; ++#ifndef ENABLE_ESP + static const char *cc1_spec = CC1_SPEC CC1_SSP_DEFAULT_SPEC; ++#endif + static const char *cc1plus_spec = CC1PLUS_SPEC; + static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC; + static const char *link_ssp_spec = LINK_SSP_SPEC; diff --git a/gcc/patches/10_all_gcc49_default-fortify-source.patch b/gcc/patches/10_all_gcc49_default-fortify-source.patch new file mode 100644 index 0000000..ad2f2b1 --- /dev/null +++ b/gcc/patches/10_all_gcc49_default-fortify-source.patch @@ -0,0 +1,29 @@ +Enable -D_FORTIFY_SOURCE=2 by default. + + +--- a/gcc/c-family/c-cppbuiltin.c ++++ b/gcc/c-family/c-cppbuiltin.c +@@ -951,6 +951,9 @@ c_cpp_builtins (cpp_reader *pfile) + builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0); + builtin_define_with_value ("__USER_LABEL_PREFIX__", user_label_prefix, 0); + ++ /* Fortify Source enabled by default w/optimization. */ ++ cpp_define (pfile, "_FORTIFY_SOURCE=((defined __OPTIMIZE__ && __OPTIMIZE__ > 0) ? 2 : 0)"); ++ + /* Misc. */ + if (flag_gnu89_inline) + cpp_define (pfile, "__GNUC_GNU_INLINE__"); +--- a/gcc/doc/gcc.info ++++ b/gcc/doc/gcc.info +@@ -6255,6 +6255,11 @@ find out the exact set of optimizations that are enabled at each level. + Please note the warning under '-fgcse' about invoking '-O2' on + programs that use computed gotos. + ++ NOTE: In Gentoo, `-D_FORTIFY_SOURCE=2' is set by default, and is ++ activated when `-O' is set to 2 or higher. This enables additional ++ compile-time and run-time checks for several libc functions. To disable, ++ specify either `-U_FORTIFY_SOURCE' or `-D_FORTIFY_SOURCE=0'. ++ + '-O3' + Optimize yet more. '-O3' turns on all optimizations specified by + '-O2' and also turns on the '-finline-functions', diff --git a/gcc/patches/11_all_gcc49_default-warn-format-security.patch b/gcc/patches/11_all_gcc49_default-warn-format-security.patch new file mode 100644 index 0000000..ee6c7c4 --- /dev/null +++ b/gcc/patches/11_all_gcc49_default-warn-format-security.patch @@ -0,0 +1,43 @@ +Enable -Wformat and -Wformat-security by default. + + +--- a/gcc/c-family/c.opt ++++ b/gcc/c-family/c.opt +@@ -412,7 +412,7 @@ C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning LangEnabledBy(C ObjC C++ O + Warn about format strings that are not literals + + Wformat-security +-C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0) ++C ObjC C++ ObjC++ Var(warn_format_security) Init(1) Warning LangEnabledBy(C ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0) + Warn about possible security problems with format functions + + Wformat-y2k +@@ -424,7 +424,7 @@ C ObjC C++ ObjC++ Var(warn_format_zero_length) Warning LangEnabledBy(C ObjC C++ + Warn about zero-length formats + + Wformat= +-C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) ++C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Init(1) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) + Warn about printf/scanf/strftime/strfmon format string anomalies + + Wignored-qualifiers +--- a/gcc/doc/gcc.info ++++ b/gcc/doc/gcc.info +@@ -3451,6 +3451,8 @@ compiler warns that an unrecognized option is present. + '-Wno-format-contains-nul', '-Wno-format-extra-args', and + '-Wno-format-zero-length'. '-Wformat' is enabled by '-Wall'. + ++ This option is enabled by default in Gentoo. ++ + '-Wno-format-contains-nul' + If '-Wformat' is specified, do not warn about format strings + that contain NUL bytes. +@@ -3496,6 +3498,8 @@ compiler warns that an unrecognized option is present. + future warnings may be added to '-Wformat-security' that are + not included in '-Wformat-nonliteral'.) + ++ This option is enabled by default in Gentoo. ++ + '-Wformat-y2k' + If '-Wformat' is specified, also warn about 'strftime' formats + that may yield only a two-digit year. diff --git a/gcc/patches/12_all_gcc49_default-warn-trampolines.patch b/gcc/patches/12_all_gcc49_default-warn-trampolines.patch new file mode 100644 index 0000000..9ab4378 --- /dev/null +++ b/gcc/patches/12_all_gcc49_default-warn-trampolines.patch @@ -0,0 +1,25 @@ +Enable -Wtrampolines by default. + + +--- a/gcc/common.opt ++++ b/gcc/common.opt +@@ -648,7 +648,7 @@ Common Var(warn_system_headers) Warning + Do not suppress warnings from system headers + + Wtrampolines +-Common Var(warn_trampolines) Warning ++Common Var(warn_trampolines) Init(1) Warning + Warn whenever a trampoline is generated + + Wtype-limits +--- a/gcc/doc/gcc.info ++++ b/gcc/doc/gcc.info +@@ -4021,6 +4021,8 @@ compiler warns that an unrecognized option is present. + and thus requires the stack to be made executable in order for the + program to work properly. + ++ This warning is enabled by default in Gentoo. ++ + '-Wfloat-equal' + Warn if floating-point values are used in equality comparisons. + diff --git a/gcc/patches/16_all_gcc47_nopie_option.patch b/gcc/patches/16_all_gcc47_nopie_option.patch new file mode 100644 index 0000000..ed9a961 --- /dev/null +++ b/gcc/patches/16_all_gcc47_nopie_option.patch @@ -0,0 +1,16 @@ +2012-01-24 Magnus Granberg zorry@gentoo.org + + * gcc/common.opt Add -nopie + +--- a/gcc/common.opt 2011-11-23 19:51:17.000000000 +0100 ++++ b//gcc/common.opt 2012-01-24 16:56:24.302224357 +0100 +@@ -2280,6 +2280,9 @@ Driver + nodefaultlibs + Driver + ++nopie ++Driver ++ + nostartfiles + Driver + diff --git a/gcc/patches/20_all_gcc49_config_crtbeginp.patch0 b/gcc/patches/20_all_gcc49_config_crtbeginp.patch0 new file mode 100644 index 0000000..4bd5c18 --- /dev/null +++ b/gcc/patches/20_all_gcc49_config_crtbeginp.patch0 @@ -0,0 +1,40 @@ +2014-04-23 Magnus Granberg zorry@gentoo.org + + * gcc/config/gnu-user.h If ENABLE_CRTBEGINP, -static and -pie use crtbegineP.o. + * gcc/config/rs6000/sysv4.h If ENABLE_CRTBEGINP, -static and -pie use crtbegineP.o. + +--- gcc/config/gnu-user.h 2014-01-02 23:23:26.000000000 +0100 ++++ gcc/config/gnu-user.h 2014-04-23 00:55:06.390265454 +0200 +@@ -40,7 +40,15 @@ see the files COPYING3 and COPYING.RUNTI + provides part of the support for getting C++ file-scope static + object constructed before entering `main'. */ + +-#if defined HAVE_LD_PIE ++#if defined (HAVE_LD_PIE) && defined (ENABLE_CRTBEGINP) ++#define GNU_USER_TARGET_STARTFILE_SPEC \ ++ "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ ++ crti.o%s %{static:%{pie:crtbeginP.o%s;:crtbeginT.o%s}; \ ++ shared|pie:crtbeginS.o%s;:crtbegin.o%s} \ ++ %{fvtable-verify=none:%s; \ ++ fvtable-verify=preinit:vtv_start_preinit.o%s; \ ++ fvtable-verify=std:vtv_start.o%s}" ++#elif defined (HAVE_LD_PIE) && ! defined (ENABLE_CRTBEGINP) + #define GNU_USER_TARGET_STARTFILE_SPEC \ + "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ + crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s} \ +--- gcc/config/rs6000/sysv4.h 2009-04-10 01:23:07.000000000 +0200 ++++ gcc/config/rs6000/sysv4.h 2009-09-08 04:41:50.000000000 +0200 +@@ -883,7 +883,12 @@ + %{!mnewlib: %{pthread:-lpthread} %{shared:-lc} \ + %{!shared: %{profile:-lc_p} %{!profile:-lc}}}" + +-#ifdef HAVE_LD_PIE ++#if defined (HAVE_LD_PIE) && defined (ENABLE_CRTBEGINP) ++#define STARTFILE_LINUX_SPEC "\ ++%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ ++%{mnewlib:ecrti.o%s;:crti.o%s} \ ++%{static:%{pie:crtbeginP.o%s;:crtbeginT.o%s}} %{!static:%{shared|pie:crtbeginS.o%s;:crtbegin.o%s}}" ++#elif defined (HAVE_LD_PIE) && ! defined (ENABLE_CRTBEGINP) + #define STARTFILE_LINUX_SPEC "\ + %{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ + %{mnewlib:ecrti.o%s;:crti.o%s} \ diff --git a/gcc/patches/24_all_gcc49_invoke.texi.patch0 b/gcc/patches/24_all_gcc49_invoke.texi.patch0 new file mode 100644 index 0000000..856a4e5 --- /dev/null +++ b/gcc/patches/24_all_gcc49_invoke.texi.patch0 @@ -0,0 +1,44 @@ +2014-04-24 Magnus Granberg zorry@gentoo.org + + * gcc/doc/invoke.texi Add NOTES about -fstack-protector-all, -pie and + -fPIE/-fpie when --enable-esp is enable, this options is on by default. + +--- gcc/doc/invoke.texi 2009-04-01 09:18:47.000000000 +0200 ++++ gcc/doc/invoke.texi 2009-06-18 14:08:38.000000000 +0200 +@@ -9233,6 +9245,11 @@ If a guard check fails, an error message + @opindex fstack-protector-all + Like @option{-fstack-protector} except that all functions are protected. + ++NOTE: NOTE: When --enable-esp this option is enabled by default ++for C, C++, ObjC, ObjC++, if neither @option{-fno-stack-protector}, ++@option{-nostdlib}, @option{-ffreestanding}, @option{-fstack-protector}, ++@option{-fstack-protector-strong}or @option{-fstack-protector-all}are found. ++ + @item -fstack-protector-strong + @opindex fstack-protector-strong + Like @option{-fstack-protector} but includes additional functions to +@@ -7960,6 +7965,12 @@ + that were used to generate code (@option{-fpie}, @option{-fPIE}, + or model suboptions) when you specify this option. + ++NOTE: When --enable-esp this option is enabled by default ++for C, C++, ObjC, ObjC++, if neither @option{-fno-pie} or @option{-fno-PIE} ++or @option{-fno-pic} or @option{-fno-PIC} or @option{-nostdlib} or ++@option{-nostartfiles} or @option{-shared} or @option{-pg} or @option{-p} ++are found. ++ + @item -rdynamic + @opindex rdynamic + Pass the flag @option{-export-dynamic} to the ELF linker, on targets +@@ -15889,6 +15910,11 @@ + @code{__pie__} and @code{__PIE__}. The macros have the value 1 + for @option{-fpie} and 2 for @option{-fPIE}. + ++NOTE: When --enable-esp this option is enabled by default ++for C, C++, ObjC, ObjC++, if neither @option{-fno-pie} or @option{-fno-PIE} ++or @option{-fno-pic} or @option{-fno-PIC} or @option{-nostdlib} or ++@option{-nostartfiles} or @option{-shared} are found. ++ + @item -fno-jump-tables + @opindex fno-jump-tables + Do not use jump tables for switch statements even where it would be diff --git a/gcc/patches/34_all_gcc48_config_i386.patch b/gcc/patches/34_all_gcc48_config_i386.patch new file mode 100644 index 0000000..9f0f7a3 --- /dev/null +++ b/gcc/patches/34_all_gcc48_config_i386.patch @@ -0,0 +1,56 @@ +2013-03-24 Magnus Granberg zorry@gentoo.org + + * gcc/config/i386/gnu-user-common.h (DRIVER_SELF_SPECS): Add ESP_DRIVER_SELF_SPEC. + * gcc/config/i386/gnu-user.h (SUBTARGET_EXTRA_SPECS): Add ESP_EXTRA_SPECS. + * gcc/config/i386/i386.h (SUBTARGET_EXTRA_SPECS): Add ESP_EXTRA_SPECS. + +--- a/gcc/config/i386/gnu-user-common.h 2013-01-10 21:38:27.000000000 +0100 ++++ b/gcc/config/i386/gnu-user-common.h 2013-02-14 00:51:44.689637605 +0100 +@@ -70,3 +70,7 @@ along with GCC; see the file COPYING3. + + /* Static stack checking is supported by means of probes. */ + #define STACK_CHECK_STATIC_BUILTIN 1 ++ ++#ifdef ENABLE_ESP ++#define DRIVER_SELF_SPECS ESP_DRIVER_SELF_SPEC ++#endif +--- a/gcc/config/i386/gnu-user.h 2011-05-05 14:32:50.000000000 +0200 ++++ b/gcc/config/i386/gnu-user.h 2012-07-09 14:28:38.726289455 +0200 +@@ -93,9 +93,16 @@ along with GCC; see the file COPYING3. + "--32 %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}" + + #undef SUBTARGET_EXTRA_SPECS ++#ifdef ENABLE_ESP + #define SUBTARGET_EXTRA_SPECS \ + { "link_emulation", GNU_USER_LINK_EMULATION },\ +- { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } ++ { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }, \ ++ ESP_EXTRA_SPECS ++#else ++#define SUBTARGET_EXTRA_SPECS \ ++ { "link_emulation", GNU_USER_LINK_EMULATION },\ ++ { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } ++#endif + + #undef LINK_SPEC + #define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ +--- a/gcc/config/i386/i386.h 2011-11-24 23:11:12.000000000 +0100 ++++ b/gcc/config/i386/i386.h 2012-07-09 14:21:24.575276517 +0200 +@@ -617,13 +617,16 @@ enum target_cpu_default + Do not define this macro if it does not need to do anything. */ + + #ifndef SUBTARGET_EXTRA_SPECS ++#ifdef ENABLE_ESP ++#define SUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS ++#else + #define SUBTARGET_EXTRA_SPECS + #endif ++#endif + + #define EXTRA_SPECS \ + { "cc1_cpu", CC1_CPU_SPEC }, \ + SUBTARGET_EXTRA_SPECS +- + + /* Set the value of FLT_EVAL_METHOD in float.h. When using only the + FPU, assume that the fpcw is set to extended precision; when using diff --git a/gcc/patches/35_all_gcc48_config_arm.patch b/gcc/patches/35_all_gcc48_config_arm.patch new file mode 100644 index 0000000..5aecc6b --- /dev/null +++ b/gcc/patches/35_all_gcc48_config_arm.patch @@ -0,0 +1,35 @@ +2013-06-03 Magnus Granberg zorry@gentoo.org + + * gcc/config/arm/arm.h (DRIVER_SELF_SPECS): Add ESP_DRIVER_SELF_SPEC. + * gcc/config/arm/elf.h (SUBSUBTARGET_EXTRA_SPECS): Add ESP_EXTRA_SPECS. + +--- a/gcc/config/arm/arm.h 2013-01-15 17:17:28.000000000 +0100 ++++ b/gcc/config/arm/arm.h 2013-02-18 22:45:18.327284928 +0100 +@@ -2326,6 +2326,11 @@ extern const char *host_detect_local_cpu + # define MCPU_MTUNE_NATIVE_SPECS "" + #endif + +-#define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS +- ++#ifdef ENABLE_ESP ++# define DRIVER_SELF_SPECS \ ++ MCPU_MTUNE_NATIVE_SPECS, \ ++ ESP_DRIVER_SELF_SPEC ++#else ++# define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS ++#endif + #endif /* ! GCC_ARM_H */ +--- a/gcc/config/arm/elf.h 2013-01-10 21:38:27.000000000 +0100 ++++ b/gcc/config/arm/elf.h 2013-05-19 02:15:49.595855825 +0200 +@@ -49,7 +49,11 @@ + #endif + + #undef SUBSUBTARGET_EXTRA_SPECS ++#ifdef ENABLE_ESP ++#define SUBSUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS ++#else + #define SUBSUBTARGET_EXTRA_SPECS ++#endif + + #ifndef ASM_SPEC + #define ASM_SPEC "\ diff --git a/gcc/patches/40_all_gcc49_config_esp.patch0 b/gcc/patches/40_all_gcc49_config_esp.patch0 new file mode 100644 index 0000000..ec3482e --- /dev/null +++ b/gcc/patches/40_all_gcc49_config_esp.patch0 @@ -0,0 +1,135 @@ +2014-05-12 Magnus Granberg zorry@gentoo.org + + * gcc/esp.h New file to support --enable-esp + Version 20140512.1 + +--- gcc/config/esp.h 2010-04-09 16:14:00.000000000 +0200 ++++ gcc/config/esp.h 2012-06-23 01:00:31.248348491 +0200 +@@ -0,0 +1,127 @@ ++/* License terms see GNU GENERAL PUBLIC LICENSE Version 3. ++ * Version 20140512.1 ++ * Magnus Granberg (Zorry) zorry@gentoo.org */ ++#ifndef GCC_ESP_H ++#define GCC_ESP_H ++ ++/* This file will add -fstack-protector-all, -fstack-check, -fPIE, -pie and -z now ++ as default if the defines and the spec allow it. ++ Added a hack for gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass ++ to support older hardened GCC patches and we don't need to change the code on gcc-specs-* and _filter-hardened. ++ This will add some unsupported upstream commands options as -nopie and -nonow. ++ -D__KERNEL__ is added so we don't have -fPIE, -pie and -fstack-protector-all and -fstack-check when building kernels. ++ ESP_CC1_SPEC is added to CC1_SPEC. ++ ESP_CC1_STRICT_OVERFLOW_SPEC is added so we don't disable the strict-overflow check. ++ ESP_LINK_PIE_CHECK_SPEC check for -pie, -p, -pg, -profile and -static. ++ ENABLE_CRTBEGINP add support for crtbeginP.o, build -static with -fPIE or -fpie. ++*/ ++#ifdef ENABLE_ESP ++ ++ /* Hack to support gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass */ ++ #define ESP_CC1_SPEC " %(esp_cc1_ssp) %(esp_cc1_pie) %(esp_cc1_strict_overflow)" ++ #if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP ) ++ #define ESP_CC1_SSP_SPEC "%{!fno-stack-protector: %{!fno-stack-protector-all: %{!fno-stack-check: }}}" ++ #else ++ #define ESP_CC1_SSP_SPEC "" ++ #endif ++ #if defined ( EFAULT_PIE ) || defined ( EFAULT_PIE_SSP ) ++ #define ESP_CC1_PIE_SPEC "%{!nopie: }" ++ #else ++ #define ESP_CC1_PIE_SPEC "" ++ #endif ++ #define ESP_CC1_STRICT_OVERFLOW_SPEC "%{!fstrict-overflow:%{!fno-strict-overflow: -fno-strict-overflow}}" ++ ++ /* ESP_LINK_SPEC is added to LINK_PIE_SPEC if esp is enable ++ -z now will be added if we don't have -vanilla spec. We do a -pie incompatible check ++ Don't remove the specs in the end */ ++ #define ESP_LINK_SPEC "%(esp_link_now) %(esp_link_pie_check) " ++ #define ESP_LINK_NOW_SPEC "%{!nonow:-z now}" ++ ++ /* We use ESP_DRIVER_SELF_SPEC to add pie and ssp command-line options. */ ++ #define ESP_DRIVER_SELF_SPEC "%{D__KERNEL__:;:%{!nopie:%(esp_options_pie) \ ++ %(esp_link_pie)} %(esp_options_ssp) }" ++ ++ /* This will add -fstack-protector-all if we don't have -nostdlib -nodefaultlibs -fno-stack-protector -fstack-protector ++ -fstack-protector-all and we have EFAULT_SSP or EFAULT_PIE_SSP defined. */ ++ #if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP ) ++ #define ESP_OPTIONS_SSP_SPEC \ ++ "%{nostdlib|ffreestanding|fno-stack-protector|fstack-protector| \ ++ fstack-protector-all|fstack-protector-strong:;:-fstack-protector-all} \ ++ %{fstack-check|fstack-check=*:;: -fstack-check}" ++ #else ++ #define ESP_OPTIONS_SSP_SPEC "" ++ #endif ++ ++ /* If EFAULT_PIE or EFAULT_PIE_SSP is defined we will add -fPIE -pie */ ++ #if defined ( EFAULT_PIE ) || defined ( EFAULT_PIE_SSP ) ++ ++ /* This will add -fPIE if we don't have -pie -fpic -fPIC -fpie -fPIE -fno-pic -fno-PIC -fno-pie -fno-PIE -shared -static ++ -nostdlib -nostartfiles. */ ++ /* With ENABLE_CRTBEGINP we don't need to check for -static */ ++ #ifdef ENABLE_CRTBEGINP ++ #define ESP_OPTIONS_PIE_SPEC \ ++ "%{!pie: %{!fpic:%{!fPIC:%{!fpie:%{!fPIE: %{!fno-pic:%{!fno-PIC:%{!fno-pie:%{!fno-PIE: \ ++ %{!shared: %{!nostdlib: %{!nostartfiles:-fPIE}} } }}}} }}}} }" ++ #else ++ #define ESP_OPTIONS_PIE_SPEC \ ++ "%{!pie: %{!fpic:%{!fPIC:%{!fpie:%{!fPIE: %{!fno-pic:%{!fno-PIC:%{!fno-pie:%{!fno-PIE: \ ++ %{!shared: %{!static: %{!nostdlib: %{!nostartfiles:-fPIE}} } }}}} }}}} }}" ++ #endif ++ ++ /* This will add -pie if we don't have -pie -A -fno-pic -fno-PIC -fno-pie -fno-PIE -shared -static -r -nostdlib ++ -nostartfiles */ ++ /* With ENABLE_CRTBEGINP we don't need to check for -static ++ and we add -pie only to get the start and endfiles. -pie will not go to the linker. */ ++ #ifdef ENABLE_CRTBEGINP ++ #define ESP_LINK_PIE_SPEC \ ++ "%{!pie:%{!A:%{!fno-pie:%{!fno-PIE:%{!fno-pic:%{!fno-PIC:%{!shared:%{!r: \ ++ %{!nostdlib:%{!nostartfiles:-pie}}}}}}}}}}" ++ #else ++ #define ESP_LINK_PIE_SPEC \ ++ "%{!pie:%{!A:%{!fno-pie:%{!fno-PIE:%{!fno-pic:%{!fno-PIC:%{!shared:%{!static:%{!r: \ ++ %{!nostdlib:%{!nostartfiles:-pie}}}}}}}}}}}" ++ #endif ++ ++ /* This will check if -pie is set when (-static) -pg -p -profile. If set it will make gcc print out ++ "-pie and (static)|pg|p|profile are incompatible when linking" */ ++ /* With ENABLE_CRTBEGINP we don't need to check for -static */ ++ #ifdef ENABLE_CRTBEGINP ++ #define ESP_LINK_PIE_CHECK_SPEC \ ++ "%{pie:%{pg|p|profile:%e-pie and -pg|p|profile are incompatible when linking}}" ++ #else ++ #define ESP_LINK_PIE_CHECK_SPEC \ ++ "%{pie:%{static|pg|p|profile:%e-pie and -static|pg|p|profile are incompatible when linking}}" ++ #endif ++ ++ /* We don't pass -pie to the linker when -static. */ ++ #ifdef ENABLE_CRTBEGINP ++ #define LINK_PIE_SPEC "%{!static:%{pie:-pie}} %(esp_link)" ++ #else ++ #define LINK_PIE_SPEC "%{pie:-pie} %(esp_link)" ++ #endif ++ ++ #else ++ #define ESP_OPTIONS_PIE_SPEC "" ++ #define ESP_LINK_PIE_CHECK_SPEC "" ++ #define ESP_LINK_PIE_SPEC "" ++ #define LINK_PIE_SPEC "%{pie:-pie} %(esp_link)" ++ #endif ++ ++ /* We add extra spec name's to the EXTRA_SPECS list */ ++ #define ESP_EXTRA_SPECS \ ++ { "esp_cc1", ESP_CC1_SPEC }, \ ++ { "esp_cc1_pie", ESP_CC1_PIE_SPEC }, \ ++ { "esp_cc1_ssp", ESP_CC1_SSP_SPEC }, \ ++ { "esp_cc1_strict_overflow", ESP_CC1_STRICT_OVERFLOW_SPEC }, \ ++ { "esp_link", ESP_LINK_SPEC }, \ ++ { "esp_link_now", ESP_LINK_NOW_SPEC }, \ ++ { "esp_link_pie", ESP_LINK_PIE_SPEC }, \ ++ { "esp_link_pie_check", ESP_LINK_PIE_CHECK_SPEC }, \ ++ { "esp_driver_self", ESP_DRIVER_SELF_SPEC }, \ ++ { "esp_options_pie", ESP_OPTIONS_PIE_SPEC }, \ ++ { "esp_options_ssp", ESP_OPTIONS_SSP_SPEC } ++ ++ static const char *cc1_spec = CC1_SPEC ESP_CC1_SPEC; ++ ++#endif ++#endif /* End GCC_ESP_H */ diff --git a/gcc/patches/53_all_libitm-no-fortify-source.patch b/gcc/patches/53_all_libitm-no-fortify-source.patch new file mode 100644 index 0000000..5ab15af --- /dev/null +++ b/gcc/patches/53_all_libitm-no-fortify-source.patch @@ -0,0 +1,27 @@ +https://bugs.gentoo.org/508852 +https://gcc.gnu.org/PR61164 + +2014-04-27 Magnus Granberg zorry@gentoo.org + + #508852 + * libitm/configure.tgt: Disable FORTIFY + +--- a/libitm/configure.tgt ++++ b/libitm/configure.tgt +@@ -43,6 +43,16 @@ if test "$gcc_cv_have_tls" = yes ; then + esac + fi + ++# FIXME: error: inlining failed in call to always_inline ++# ‘int vfprintf(FILE*, const char*, __va_list_tag*)’ ++# : function body can be overwritten at link time ++# Disable Fortify in libitm for now. #508852 ++case "${target}" in ++ *-*-linux*) ++ XCFLAGS="${XCFLAGS} -U_FORTIFY_SOURCE" ++ ;; ++esac ++ + # Map the target cpu to an ARCH sub-directory. At the same time, + # work out any special compilation flags as necessary. + case "${target_cpu}" in diff --git a/gcc/patches/gcc-4.8.1-piepatch-20130628.patch b/gcc/patches/gcc-4.8.1-piepatch-20130628.patch deleted file mode 100644 index 839e303..0000000 --- a/gcc/patches/gcc-4.8.1-piepatch-20130628.patch +++ /dev/null @@ -1,874 +0,0 @@ -diff -Nur gcc-4.8.1-vanilla/configure gcc-4.8.1/configure ---- gcc-4.8.1-vanilla/configure 2013-02-15 18:45:54.000000000 +0100 -+++ gcc-4.8.1/configure 2013-06-27 23:57:54.004095553 +0200 -@@ -670,6 +670,7 @@ - CFLAGS - CC - EXTRA_CONFIGARGS_LIBJAVA -+enable_esp - target_subdir - host_subdir - build_subdir -@@ -748,6 +749,7 @@ - enable_libquadmath - enable_libquadmath_support - enable_libada -+enable_esp - enable_libssp - enable_libstdcxx - enable_static_libjava -@@ -1464,6 +1466,11 @@ - --disable-libquadmath-support - disable libquadmath support for Fortran - --enable-libada build libada directory -+ --enable-esp Enable Stack protector and Position independent -+ executable as default if we have suppot for it when -+ compiling and link with and -z now as default. -+ Linux targets supported i*86, x86_64, x32, -+ powerpc, powerpc64, ia64, arm and mips. - --enable-libssp build libssp directory - --disable-libstdcxx do not build libstdc++-v3 directory - --enable-static-libjava[=ARG] -@@ -3068,6 +3075,24 @@ - noconfigdirs="$noconfigdirs gnattools" - fi - -+# Check whether --enable-esp was given and target have the support. -+# Check whether --enable-esp was given. -+if test "${enable_esp+set}" = set; then : -+ enableval=$enable_esp; -+ case $target in -+ i?86*-*-linux* | x86_64-*-linux* | powerpc*-*-linux* | mips*-*-linux* | arm*-*-linux* | ia64-*-linux*) -+ enable_esp=yes -+ ;; -+ *) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** --enable-esp is not supported on this $target target." >&5 -+$as_echo "$as_me: WARNING: *** --enable-esp is not supported on this $target target." >&2;} -+ ;; -+ esac -+ -+fi -+ -+ -+ - # Check whether --enable-libssp was given. - if test "${enable_libssp+set}" = set; then : - enableval=$enable_libssp; ENABLE_LIBSSP=$enableval -@@ -14456,6 +14481,11 @@ - esac ;; - esac - -+# Disable -fstack-protector on stage1 -+if test x$enable_esp = xyes; then -+ stage1_cflags="$stage1_cflags -fno-stack-protector" -+fi -+ - - - # Enable --enable-checking in stage1 of the compiler. -diff -Nur gcc-4.8.1-vanilla/configure.ac gcc-4.8.1/configure.ac ---- gcc-4.8.1-vanilla/configure.ac 2013-02-15 18:45:54.000000000 +0100 -+++ gcc-4.8.1/configure.ac 2013-06-27 23:57:53.999095429 +0200 -@@ -423,6 +423,26 @@ - noconfigdirs="$noconfigdirs gnattools" - fi - -+# Check whether --enable-esp was given and target have the support. -+AC_ARG_ENABLE([esp], -+[AS_HELP_STRING([--enable-esp], -+ [Enable Stack protector and Position independent executable as -+ default if we have suppot for it when compiling -+ and link with -z relro and -z now as default. -+ Linux targets supported i*86, x86_64, x32, -+ powerpc, powerpc64, ia64, arm and mips.])], -+[ -+ case $target in -+ i?86*-*-linux* | x86_64-*-linux* | powerpc*-*-linux* | mips-*-linux* | arm*-*-linux* | ia64-*-linux*) -+ enable_esp=yes -+ ;; -+ *) -+ AC_MSG_WARN([*** --enable-esp is not supported on this $target target.]) -+ ;; -+ esac -+]) -+AC_SUBST([enable_esp]) -+ - AC_ARG_ENABLE(libssp, - [AS_HELP_STRING([--enable-libssp], [build libssp directory])], - ENABLE_LIBSSP=$enableval, -@@ -3241,6 +3261,11 @@ - esac ;; - esac - -+# Disable -fstack-protector on stage1 -+if test x$enable_esp = xyes; then -+ stage1_cflags="$stage1_cflags -fno-stack-protector" -+fi -+ - AC_SUBST(stage1_cflags) - - # Enable --enable-checking in stage1 of the compiler. -diff -Nur gcc-4.8.1-vanilla/gcc/common.opt gcc-4.8.1/gcc/common.opt ---- gcc-4.8.1-vanilla/gcc/common.opt 2013-03-14 10:13:36.000000000 +0100 -+++ gcc-4.8.1/gcc/common.opt 2013-06-27 23:57:54.024096050 +0200 -@@ -2393,6 +2393,9 @@ - nodefaultlibs - Driver - -+nopie -+Driver -+ - nostartfiles - Driver - -diff -Nur gcc-4.8.1-vanilla/gcc/config/arm/arm.h gcc-4.8.1/gcc/config/arm/arm.h ---- gcc-4.8.1-vanilla/gcc/config/arm/arm.h 2013-03-17 17:28:55.000000000 +0100 -+++ gcc-4.8.1/gcc/config/arm/arm.h 2013-06-27 23:57:54.031096224 +0200 -@@ -2328,6 +2328,11 @@ - # define MCPU_MTUNE_NATIVE_SPECS "" - #endif - --#define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS -- -+#ifdef ENABLE_ESP -+# define DRIVER_SELF_SPECS \ -+ MCPU_MTUNE_NATIVE_SPECS, \ -+ ESP_DRIVER_SELF_SPEC -+#else -+# define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS -+#endif - #endif /* ! GCC_ARM_H */ -diff -Nur gcc-4.8.1-vanilla/gcc/config/arm/elf.h gcc-4.8.1/gcc/config/arm/elf.h ---- gcc-4.8.1-vanilla/gcc/config/arm/elf.h 2013-01-10 21:38:27.000000000 +0100 -+++ gcc-4.8.1/gcc/config/arm/elf.h 2013-06-27 23:57:54.031096224 +0200 -@@ -49,7 +49,11 @@ - #endif - - #undef SUBSUBTARGET_EXTRA_SPECS -+#ifdef ENABLE_ESP -+#define SUBSUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS -+#else - #define SUBSUBTARGET_EXTRA_SPECS -+#endif - - #ifndef ASM_SPEC - #define ASM_SPEC "\ -diff -Nur gcc-4.8.1-vanilla/gcc/config/esp.h gcc-4.8.1/gcc/config/esp.h ---- gcc-4.8.1-vanilla/gcc/config/esp.h 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-4.8.1/gcc/config/esp.h 2013-06-27 23:57:54.033096274 +0200 -@@ -0,0 +1,127 @@ -+/* License terms see GNU GENERAL PUBLIC LICENSE Version 3. -+ * Version 20130214.1 -+ * Magnus Granberg (Zorry) zorry@gentoo.org */ -+#ifndef GCC_ESP_H -+#define GCC_ESP_H -+ -+/* This file will add -fstack-protector-all, -fPIE, -pie and -z now -+ as default if the defines and the spec allow it. -+ Added a hack for gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass -+ to support older hardened GCC patches and we don't need to change the code on gcc-specs-* and _filter-hardened. -+ This will add some unsupported upstream commands options as -nopie and -nonow. -+ -D__KERNEL__ is added so we don't have -fPIE, -pie and -fstack-protector-all when building kernels. -+ ESP_CC1_SPEC is added to CC1_SPEC. -+ ESP_CC1_STRICT_OVERFLOW_SPEC is added so we don't disable the strict-overflow check. -+ ESP_LINK_PIE_CHECK_SPEC check for -pie, -p, -pg, -profile and -static. -+ ENABLE_CRTBEGINP add support for crtbeginP.o, build -static with -fPIE or -fpie. -+*/ -+#ifdef ENABLE_ESP -+ -+ /* Hack to support gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass */ -+ #define ESP_CC1_SPEC " %(esp_cc1_ssp) %(esp_cc1_pie) %(esp_cc1_strict_overflow)" -+ #if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP ) -+ #define ESP_CC1_SSP_SPEC "%{!fno-stack-protector: %{!fno-stack-protector-all: }}" -+ #else -+ #define ESP_CC1_SSP_SPEC "" -+ #endif -+ #if defined ( EFAULT_PIE ) || defined ( EFAULT_PIE_SSP ) -+ #define ESP_CC1_PIE_SPEC "%{!nopie: }" -+ #else -+ #define ESP_CC1_PIE_SPEC "" -+ #endif -+ #define ESP_CC1_STRICT_OVERFLOW_SPEC "%{!fstrict-overflow:%{!fno-strict-overflow: -fno-strict-overflow}}" -+ -+ /* ESP_LINK_SPEC is added to LINK_PIE_SPEC if esp is enable -+ -z now will be added if we don't have -vanilla spec. We do a -pie incompatible check -+ Don't remove the specs in the end */ -+ #define ESP_LINK_SPEC "%(esp_link_now) %(esp_link_pie_check) " -+ #define ESP_LINK_NOW_SPEC "%{!nonow:-z now}" -+ -+ /* We use ESP_ESP_DRIVER_SELF_SPEC to add pie and ssp command-line options. */ -+ #define ESP_DRIVER_SELF_SPEC "%{D__KERNEL__:;:%{!nopie:%(esp_options_pie) \ -+ %(esp_link_pie)} %(esp_options_ssp) }" -+ -+ /* This will add -fstack-protector-all if we don't have -nostdlib -nodefaultlibs -fno-stack-protector -fstack-protector -+ -fstack-protector-all and we have EFAULT_SSP or EFAULT_PIE_SSP defined. */ -+ #if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP ) -+ #define ESP_OPTIONS_SSP_SPEC \ -+ "%{nostdlib|nodefaultlibs|fno-stack-protector| \ -+ fstack-protector|fstack-protector-all:;:-fstack-protector-all}" -+ #else -+ #define ESP_OPTIONS_SSP_SPEC "" -+ #endif -+ -+ /* If EFAULT_PIE or EFAULT_PIE_SSP is defined we will add -fPIE -pie */ -+ #if defined ( EFAULT_PIE ) || defined ( EFAULT_PIE_SSP ) -+ -+ /* This will add -fPIE if we don't have -pie -fpic -fPIC -fpie -fPIE -fno-pic -fno-PIC -fno-pie -fno-PIE -shared -static -+ -nostdlib -nostartfiles. */ -+ /* With ENABLE_CRTBEGINP we don't need to check for -static */ -+ #ifdef ENABLE_CRTBEGINP -+ #define ESP_OPTIONS_PIE_SPEC \ -+ "%{!pie: %{!fpic:%{!fPIC:%{!fpie:%{!fPIE: %{!fno-pic:%{!fno-PIC:%{!fno-pie:%{!fno-PIE: \ -+ %{!shared: %{!nostdlib: %{!nostartfiles:-fPIE}} } }}}} }}}} }" -+ #else -+ #define ESP_OPTIONS_PIE_SPEC \ -+ "%{!pie: %{!fpic:%{!fPIC:%{!fpie:%{!fPIE: %{!fno-pic:%{!fno-PIC:%{!fno-pie:%{!fno-PIE: \ -+ %{!shared: %{!static: %{!nostdlib: %{!nostartfiles:-fPIE}} } }}}} }}}} }}" -+ #endif -+ -+ /* This will add -pie if we don't have -pie -A -fno-pic -fno-PIC -fno-pie -fno-PIE -shared -static -r -nostdlib -+ -nostartfiles */ -+ /* With ENABLE_CRTBEGINP we don't need to check for -static -+ and we add -pie only to get the start and endfiles. -pie will not go to the linker. */ -+ #ifdef ENABLE_CRTBEGINP -+ #define ESP_LINK_PIE_SPEC \ -+ "%{!pie:%{!A:%{!fno-pie:%{!fno-PIE:%{!fno-pic:%{!fno-PIC:%{!shared:%{!r: \ -+ %{!nostdlib:%{!nostartfiles:-pie}}}}}}}}}}" -+ #else -+ #define ESP_LINK_PIE_SPEC \ -+ "%{!pie:%{!A:%{!fno-pie:%{!fno-PIE:%{!fno-pic:%{!fno-PIC:%{!shared:%{!static:%{!r: \ -+ %{!nostdlib:%{!nostartfiles:-pie}}}}}}}}}}}" -+ #endif -+ -+ /* This will check if -pie is set when (-static) -pg -p -profile. If set it will make gcc print out -+ "-pie and (static)|pg|p|profile are incompatible when linking" */ -+ /* With ENABLE_CRTBEGINP we don't need to check for -static */ -+ #ifdef ENABLE_CRTBEGINP -+ #define ESP_LINK_PIE_CHECK_SPEC \ -+ "%{pie:%{pg|p|profile:%e-pie and -pg|p|profile are incompatible when linking}}" -+ #else -+ #define ESP_LINK_PIE_CHECK_SPEC \ -+ "%{pie:%{static|pg|p|profile:%e-pie and -static|pg|p|profile are incompatible when linking}}" -+ #endif -+ -+ /* We don't pass -pie to the linker when -static. */ -+ #ifdef ENABLE_CRTBEGINP -+ #define LINK_PIE_SPEC "%{!static:%{pie:-pie}} %(esp_link)" -+ #else -+ #define LINK_PIE_SPEC "%{pie:-pie} %(esp_link)" -+ #endif -+ -+ #else -+ #define ESP_OPTIONS_PIE_SPEC "" -+ #define ESP_LINK_PIE_CHECK_SPEC "" -+ #define ESP_LINK_PIE_SPEC "" -+ #define LINK_PIE_SPEC "%{pie:-pie} %(esp_link)" -+ #endif -+ -+ /* We add extra spec name's to the EXTRA_SPECS list */ -+ #define ESP_EXTRA_SPECS \ -+ { "esp_cc1", ESP_CC1_SPEC }, \ -+ { "esp_cc1_pie", ESP_CC1_PIE_SPEC }, \ -+ { "esp_cc1_ssp", ESP_CC1_SSP_SPEC }, \ -+ { "esp_cc1_strict_overflow", ESP_CC1_STRICT_OVERFLOW_SPEC }, \ -+ { "esp_link", ESP_LINK_SPEC }, \ -+ { "esp_link_now", ESP_LINK_NOW_SPEC }, \ -+ { "esp_link_pie", ESP_LINK_PIE_SPEC }, \ -+ { "esp_link_pie_check", ESP_LINK_PIE_CHECK_SPEC }, \ -+ { "esp_driver_self", ESP_DRIVER_SELF_SPEC }, \ -+ { "esp_options_pie", ESP_OPTIONS_PIE_SPEC }, \ -+ { "esp_options_ssp", ESP_OPTIONS_SSP_SPEC } -+ -+ static const char *esp_driver_self_spec = ESP_DRIVER_SELF_SPEC; -+ static const char *cc1_spec = CC1_SPEC ESP_CC1_SPEC; -+ -+#endif -+#endif /* End GCC_ESP_H */ -diff -Nur gcc-4.8.1-vanilla/gcc/config/gnu-user.h gcc-4.8.1/gcc/config/gnu-user.h ---- gcc-4.8.1-vanilla/gcc/config/gnu-user.h 2013-03-08 18:16:45.000000000 +0100 -+++ gcc-4.8.1/gcc/config/gnu-user.h 2013-06-27 23:57:54.024096050 +0200 -@@ -40,7 +40,11 @@ - provides part of the support for getting C++ file-scope static - object constructed before entering `main'. */ - --#if defined HAVE_LD_PIE -+#if defined (HAVE_LD_PIE) && defined (ENABLE_CRTBEGINP) -+#define GNU_USER_TARGET_STARTFILE_SPEC \ -+ "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} crti.o%s \ -+ %{static:%{pie:crtbeginP.o%s;:crtbeginT.o%s}} %{!static:%{shared|pie:crtbeginS.o%s;:crtbegin.o%s}}" -+#elif defined (HAVE_LD_PIE) && ! defined (ENABLE_CRTBEGINP) - #define GNU_USER_TARGET_STARTFILE_SPEC \ - "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ - crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}" -diff -Nur gcc-4.8.1-vanilla/gcc/config/i386/gnu-user-common.h gcc-4.8.1/gcc/config/i386/gnu-user-common.h ---- gcc-4.8.1-vanilla/gcc/config/i386/gnu-user-common.h 2013-01-10 21:38:27.000000000 +0100 -+++ gcc-4.8.1/gcc/config/i386/gnu-user-common.h 2013-06-27 23:57:54.030096199 +0200 -@@ -70,3 +70,7 @@ - - /* Static stack checking is supported by means of probes. */ - #define STACK_CHECK_STATIC_BUILTIN 1 -+ -+#ifdef ENABLE_ESP -+#define DRIVER_SELF_SPECS ESP_DRIVER_SELF_SPEC -+#endif -diff -Nur gcc-4.8.1-vanilla/gcc/config/i386/gnu-user.h gcc-4.8.1/gcc/config/i386/gnu-user.h ---- gcc-4.8.1-vanilla/gcc/config/i386/gnu-user.h 2013-02-08 19:08:12.000000000 +0100 -+++ gcc-4.8.1/gcc/config/i386/gnu-user.h 2013-06-27 23:57:54.030096199 +0200 -@@ -70,9 +70,16 @@ - "--32 %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}" - - #undef SUBTARGET_EXTRA_SPECS -+#ifdef ENABLE_ESP -+#define SUBTARGET_EXTRA_SPECS \ -+ { "link_emulation", GNU_USER_LINK_EMULATION },\ -+ { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }, \ -+ ESP_EXTRA_SPECS -+#else - #define SUBTARGET_EXTRA_SPECS \ - { "link_emulation", GNU_USER_LINK_EMULATION },\ - { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } -+#endif - - #define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ - %{!shared: \ -diff -Nur gcc-4.8.1-vanilla/gcc/config/i386/i386.h gcc-4.8.1/gcc/config/i386/i386.h ---- gcc-4.8.1-vanilla/gcc/config/i386/i386.h 2013-01-28 21:42:55.000000000 +0100 -+++ gcc-4.8.1/gcc/config/i386/i386.h 2013-06-27 23:57:54.031096224 +0200 -@@ -643,13 +643,16 @@ - Do not define this macro if it does not need to do anything. */ - - #ifndef SUBTARGET_EXTRA_SPECS -+#ifdef ENABLE_ESP -+#define SUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS -+#else - #define SUBTARGET_EXTRA_SPECS - #endif -+#endif - - #define EXTRA_SPECS \ - { "cc1_cpu", CC1_CPU_SPEC }, \ - SUBTARGET_EXTRA_SPECS -- - - /* Set the value of FLT_EVAL_METHOD in float.h. When using only the - FPU, assume that the fpcw is set to extended precision; when using -diff -Nur gcc-4.8.1-vanilla/gcc/config/ia64/ia64.h gcc-4.8.1/gcc/config/ia64/ia64.h ---- gcc-4.8.1-vanilla/gcc/config/ia64/ia64.h 2013-01-10 21:38:27.000000000 +0100 -+++ gcc-4.8.1/gcc/config/ia64/ia64.h 2013-06-27 23:57:54.033096274 +0200 -@@ -41,8 +41,12 @@ - } while (0) - - #ifndef SUBTARGET_EXTRA_SPECS -+#ifdef ENABLE_ESP -+#define SUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS -+#else - #define SUBTARGET_EXTRA_SPECS - #endif -+#endif - - #define EXTRA_SPECS \ - { "asm_extra", ASM_EXTRA_SPEC }, \ -diff -Nur gcc-4.8.1-vanilla/gcc/config/ia64/linux.h gcc-4.8.1/gcc/config/ia64/linux.h ---- gcc-4.8.1-vanilla/gcc/config/ia64/linux.h 2013-01-10 21:38:27.000000000 +0100 -+++ gcc-4.8.1/gcc/config/ia64/linux.h 2013-06-27 23:57:54.032096249 +0200 -@@ -88,3 +88,7 @@ - - /* Define this to be nonzero if static stack checking is supported. */ - #define STACK_CHECK_STATIC_BUILTIN 1 -+ -+#ifdef ENABLE_ESP -+#define DRIVER_SELF_SPECS ESP_DRIVER_SELF_SPEC -+#endif -diff -Nur gcc-4.8.1-vanilla/gcc/config/mips/gnu-user64.h gcc-4.8.1/gcc/config/mips/gnu-user64.h ---- gcc-4.8.1-vanilla/gcc/config/mips/gnu-user64.h 2013-01-10 21:38:27.000000000 +0100 -+++ gcc-4.8.1/gcc/config/mips/gnu-user64.h 2013-06-27 23:57:54.032096249 +0200 -@@ -26,9 +26,16 @@ - " %{!mabi=*: -" MULTILIB_ABI_DEFAULT "}" - - #undef DRIVER_SELF_SPECS -+#ifdef ENABLE_ESP - #define DRIVER_SELF_SPECS \ - BASE_DRIVER_SELF_SPECS, \ -+ ESP_DRIVER_SELF_SPEC, \ - LINUX64_DRIVER_SELF_SPECS -+# else -+#define DRIVER_SELF_SPECS \ -+ BASE_DRIVER_SELF_SPECS, \ -+ LINUX64_DRIVER_SELF_SPECS -+#endif - - #undef GNU_USER_TARGET_LINK_SPEC - #define GNU_USER_TARGET_LINK_SPEC "\ -diff -Nur gcc-4.8.1-vanilla/gcc/config/mips/gnu-user.h gcc-4.8.1/gcc/config/mips/gnu-user.h ---- gcc-4.8.1-vanilla/gcc/config/mips/gnu-user.h 2013-01-10 21:38:27.000000000 +0100 -+++ gcc-4.8.1/gcc/config/mips/gnu-user.h 2013-06-27 23:57:54.032096249 +0200 -@@ -125,9 +125,16 @@ - "%{mabi=64:%{!msym32:%<mplt}}" - - #undef DRIVER_SELF_SPECS -+#ifdef ENABLE_ESP - #define DRIVER_SELF_SPECS \ - BASE_DRIVER_SELF_SPECS, \ -+ ESP_DRIVER_SELF_SPEC, \ - LINUX_DRIVER_SELF_SPECS -+# else -+#define DRIVER_SELF_SPECS \ -+ BASE_DRIVER_SELF_SPECS, \ -+ LINUX_DRIVER_SELF_SPECS -+#endif - - /* Similar to standard Linux, but adding -ffast-math support. */ - #undef GNU_USER_TARGET_MATHFILE_SPEC -diff -Nur gcc-4.8.1-vanilla/gcc/config/mips/mips.h gcc-4.8.1/gcc/config/mips/mips.h ---- gcc-4.8.1-vanilla/gcc/config/mips/mips.h 2013-02-25 14:53:16.000000000 +0100 -+++ gcc-4.8.1/gcc/config/mips/mips.h 2013-06-27 23:57:54.032096249 +0200 -@@ -1197,9 +1197,13 @@ - SUBTARGET_EXTRA_SPECS - - #ifndef SUBTARGET_EXTRA_SPECS -+#ifdef ENABLE_ESP -+#define SUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS -+#else - #define SUBTARGET_EXTRA_SPECS - #endif -- -+#endif -+ - #define DBX_DEBUGGING_INFO 1 /* generate stabs (OSF/rose) */ - #define DWARF2_DEBUGGING_INFO 1 /* dwarf2 debugging info */ - -diff -Nur gcc-4.8.1-vanilla/gcc/config/rs6000/linux64.h gcc-4.8.1/gcc/config/rs6000/linux64.h ---- gcc-4.8.1-vanilla/gcc/config/rs6000/linux64.h 2013-01-10 21:38:27.000000000 +0100 -+++ gcc-4.8.1/gcc/config/rs6000/linux64.h 2013-06-27 23:57:54.029096174 +0200 -@@ -180,7 +180,7 @@ - #endif - - #define ASM_SPEC32 "-a32 \ --%{mrelocatable} %{mrelocatable-lib} %{fpic:-K PIC} %{fPIC:-K PIC} \ -+%{mrelocatable} %{mrelocatable-lib} %{fpic|fPIC|fpie|fPIE:-K PIC} \ - %{memb} %{!memb: %{msdata=eabi: -memb}} \ - %{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \ - %{mcall-freebsd: -mbig} \ -diff -Nur gcc-4.8.1-vanilla/gcc/config/rs6000/sysv4.h gcc-4.8.1/gcc/config/rs6000/sysv4.h ---- gcc-4.8.1-vanilla/gcc/config/rs6000/sysv4.h 2013-01-10 21:38:27.000000000 +0100 -+++ gcc-4.8.1/gcc/config/rs6000/sysv4.h 2013-06-27 23:57:54.030096199 +0200 -@@ -627,8 +627,13 @@ - - #define LINK_OS_DEFAULT_SPEC "" - -+#ifdef ENABLE_ESP -+#define DRIVER_SELF_SPECS "%{mfpu=none: %<mfpu=* \ -+ %<msingle-float %<mdouble-float}", ESP_DRIVER_SELF_SPECS -+#else - #define DRIVER_SELF_SPECS "%{mfpu=none: %<mfpu=* \ - %<msingle-float %<mdouble-float}" -+#endif - - /* Override rs6000.h definition. */ - #undef CPP_SPEC -@@ -769,7 +774,12 @@ - %{!mnewlib: %{pthread:-lpthread} %{shared:-lc} \ - %{!shared: %{profile:-lc_p} %{!profile:-lc}}}" - --#ifdef HAVE_LD_PIE -+#if defined (HAVE_LD_PIE) && defined (ENABLE_CRTBEGINP) -+#define STARTFILE_LINUX_SPEC "\ -+%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ -+%{mnewlib:ecrti.o%s;:crti.o%s} \ -+%{static:%{pie:crtbeginP.o%s;:crtbeginT.o%s}} %{!static:%{shared|pie:crtbeginS.o%s;:crtbegin.o%s}}" -+#elif defined (HAVE_LD_PIE) && ! defined (ENABLE_CRTBEGINP) - #define STARTFILE_LINUX_SPEC "\ - %{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ - %{mnewlib:ecrti.o%s;:crti.o%s} \ -@@ -933,7 +943,11 @@ - { "cpp_os_openbsd", CPP_OS_OPENBSD_SPEC }, \ - { "cpp_os_default", CPP_OS_DEFAULT_SPEC }, \ - { "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER }, \ -- SUBSUBTARGET_EXTRA_SPECS -+ SUBSUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS -+ -+#ifndef ENABLE_ESP -+#define ESP_EXTRA_SPECS -+#endif - - #define SUBSUBTARGET_EXTRA_SPECS - -diff -Nur gcc-4.8.1-vanilla/gcc/config.in gcc-4.8.1/gcc/config.in ---- gcc-4.8.1-vanilla/gcc/config.in 2013-05-31 11:09:26.000000000 +0200 -+++ gcc-4.8.1/gcc/config.in 2013-06-27 23:57:54.009095677 +0200 -@@ -52,6 +52,12 @@ - #endif - - -+/* Define to 1 to enable crtbeginP.o. */ -+#ifndef USED_FOR_TARGET -+#undef ENABLE_CRTBEGINP -+#endif -+ -+ - /* Define to 1 to specify that we are using the BID decimal floating point - format instead of DPD */ - #ifndef USED_FOR_TARGET -@@ -71,6 +77,12 @@ - #endif - - -+/* Define to 1 to enable esp. */ -+#ifndef USED_FOR_TARGET -+#undef ENABLE_ESP -+#endif -+ -+ - /* Define to 1 to enable fixed-point arithmetic extension to C. */ - #ifndef USED_FOR_TARGET - #undef ENABLE_FIXED_POINT -diff -Nur gcc-4.8.1-vanilla/gcc/configure gcc-4.8.1/gcc/configure ---- gcc-4.8.1-vanilla/gcc/configure 2013-05-08 13:36:36.000000000 +0200 -+++ gcc-4.8.1/gcc/configure 2013-06-27 23:57:54.008095652 +0200 -@@ -600,6 +600,8 @@ - - ac_subst_vars='LTLIBOBJS - LIBOBJS -+enable_crtbeginP -+enable_esp - enable_plugin - pluginlibs - CLOOGINC -@@ -920,6 +922,7 @@ - enable_plugin - enable_libquadmath_support - with_linker_hash_style -+enable_esp - ' - ac_precious_vars='build_alias - host_alias -@@ -1633,6 +1636,11 @@ - --enable-plugin enable plugin support - --disable-libquadmath-support - disable libquadmath support for Fortran -+ --enable-esp Enable Stack protector and Position independent -+ executable as default if we have suppot for it when -+ compiling and link with -z now as default. -+ Linux targets supported i*86, x86_64, x32, -+ powerpc, powerpc64, ia64, arm and mips. - - Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] -@@ -27431,6 +27439,59 @@ - - fi - -+# -------------- -+# Esp checks -+# -------------- -+ -+# Check whether --enable-esp was given and target have the support. -+# Check whether --enable-esp was given. -+if test "${enable_esp+set}" = set; then : -+ enableval=$enable_esp; enable_esp=$enableval -+else -+ enable_esp=no -+fi -+ -+if test $enable_esp = yes ; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $target support esp" >&5 -+$as_echo_n "checking if $target support esp... " >&6; } -+ case "$target" in -+ i?86*-*-linux* | x86_64-*-linux* | powerpc*-*-linux* | mips*-*-linux* | arm*-*-linux* | ia64-*-linux*) -+ enable_esp=yes -+ -+$as_echo "#define ENABLE_ESP 1" >>confdefs.h -+ -+ ;; -+ *) -+ enable_esp=no -+ ;; -+ esac -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_esp" >&5 -+$as_echo "$enable_esp" >&6; } -+fi -+ -+if test $enable_esp = yes ; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking checking for crtbeginP.o support" >&5 -+$as_echo_n "checking checking for crtbeginP.o support... " >&6; } -+ if test x$enable_esp = xyes ; then -+ case "$target" in -+ ia64*-*-linux*) -+ enable_crtbeginP=no ;; -+ *-*-linux*) -+ if test x$gcc_cv_ld_pie = xyes && test x$lt_cv_prog_compiler_static_works = xyes; then -+ enable_crtbeginP=yes -+ -+$as_echo "#define ENABLE_CRTBEGINP 1" >>confdefs.h -+ -+ fi -+ ;; -+ *) enable_crtbeginP=no ;; -+ esac -+ fi -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_crtbeginP" >&5 -+$as_echo "$enable_crtbeginP" >&6; } -+fi -+ -+ - # Configure the subdirectories - # AC_CONFIG_SUBDIRS($subdirs) - -diff -Nur gcc-4.8.1-vanilla/gcc/configure.ac gcc-4.8.1/gcc/configure.ac ---- gcc-4.8.1-vanilla/gcc/configure.ac 2013-05-08 13:36:36.000000000 +0200 -+++ gcc-4.8.1/gcc/configure.ac 2013-06-27 23:57:54.001095478 +0200 -@@ -5297,6 +5297,55 @@ - [The linker hash style]) - fi - -+# -------------- -+# Esp checks -+# -------------- -+ -+# Check whether --enable-esp was given and target have the support. -+AC_ARG_ENABLE([esp], -+[AS_HELP_STRING([--enable-esp], -+ [Enable Stack protector and Position independent executable as -+ default if we have suppot for it when compiling -+ and link with -z now as default. -+ Linux targets supported i*86, x86_64, x32, -+ powerpc, powerpc64, ia64, arm and mips.])], -+ enable_esp=$enableval, -+ enable_esp=no) -+if test $enable_esp = yes ; then -+ AC_MSG_CHECKING(if $target support esp) -+ case "$target" in -+ i?86*-*-linux* | x86_64-*-linux* | powerpc*-*-linux* | mips-*-linux* | arm*-*-linux* | ia64-*-linux*) -+ enable_esp=yes -+ AC_DEFINE(ENABLE_ESP, 1, -+ [Define if your target support esp and you have enable it.]) -+ ;; -+ *) -+ enable_esp=no -+ ;; -+ esac -+AC_MSG_RESULT($enable_esp) -+fi -+AC_SUBST([enable_esp]) -+if test $enable_esp = yes ; then -+ AC_MSG_CHECKING(checking for crtbeginP.o support) -+ if test x$enable_esp = xyes ; then -+ case "$target" in -+ ia64*-*-linux*) -+ enable_crtbeginP=no ;; -+ *-*-linux*) -+ if test x$gcc_cv_ld_pie = xyes && test x$lt_cv_prog_compiler_static_works = xyes; then -+ enable_crtbeginP=yes -+ AC_DEFINE(ENABLE_CRTBEGINP, 1, -+ [Define if your compiler will support crtbeginP.]) -+ fi -+ ;; -+ *) enable_crtbeginP=no ;; -+ esac -+ fi -+ AC_MSG_RESULT($enable_crtbeginP) -+fi -+AC_SUBST([enable_crtbeginP]) -+ - # Configure the subdirectories - # AC_CONFIG_SUBDIRS($subdirs) - -diff -Nur gcc-4.8.1-vanilla/gcc/doc/invoke.texi gcc-4.8.1/gcc/doc/invoke.texi ---- gcc-4.8.1-vanilla/gcc/doc/invoke.texi 2013-03-29 14:41:29.000000000 +0100 -+++ gcc-4.8.1/gcc/doc/invoke.texi 2013-06-27 23:57:54.029096174 +0200 -@@ -8877,6 +8877,11 @@ - @opindex fstack-protector-all - Like @option{-fstack-protector} except that all functions are protected. - -+NOTE: When --enable-esp this option is enabled by default -+for C, C++, ObjC, ObjC++, if neither @option{-fno-stack-protector} -+or @option{-nostdlib} or @option{-nodefaultlibs} or -+@option{-fstack-protector} are found. -+ - @item -fsection-anchors - @opindex fsection-anchors - Try to reduce the number of symbolic address calculations by using -@@ -9905,6 +9910,12 @@ - used for compilation (@option{-fpie}, @option{-fPIE}, - or model suboptions) when you specify this linker option. - -+NOTE: When --enable-esp this option is enabled by default -+for C, C++, ObjC, ObjC++, if neither @option{-fno-pie} or @option{-fno-PIE} -+or @option{-fno-pic} or @option{-fno-PIC} or @option{-nostdlib} or -+@option{-nostartfiles} or @option{-shared} or @option{-pg} or @option{-p} -+are found. -+ - @item -rdynamic - @opindex rdynamic - Pass the flag @option{-export-dynamic} to the ELF linker, on targets -@@ -20360,6 +20371,11 @@ - @code{__pie__} and @code{__PIE__}. The macros have the value 1 - for @option{-fpie} and 2 for @option{-fPIE}. - -+NOTE: When --enable-esp this option is enabled by default -+for C, C++, ObjC, ObjC++, if neither @option{-fno-pie} or @option{-fno-PIE} -+or @option{-fno-pic} or @option{-fno-PIC} or @option{-nostdlib} or -+@option{-nostartfiles} or @option{-shared} are found. -+ - @item -fno-jump-tables - @opindex fno-jump-tables - Do not use jump tables for switch statements even where it would be -diff -Nur gcc-4.8.1-vanilla/gcc/gcc.c gcc-4.8.1/gcc/gcc.c ---- gcc-4.8.1-vanilla/gcc/gcc.c 2013-05-17 14:24:26.000000000 +0200 -+++ gcc-4.8.1/gcc/gcc.c 2013-06-27 23:57:54.021095975 +0200 -@@ -42,6 +42,7 @@ - #include "opts.h" - #include "params.h" - #include "vec.h" -+#include "config/esp.h" /* for --enable-esp support */ - #include "filenames.h" - - /* By default there is no special suffix for target executables. */ -@@ -773,7 +774,9 @@ - - static const char *asm_debug = ASM_DEBUG_SPEC; - static const char *cpp_spec = CPP_SPEC; -+#ifndef ENABLE_ESP - static const char *cc1_spec = CC1_SPEC; -+#endif - static const char *cc1plus_spec = CC1PLUS_SPEC; - static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC; - static const char *link_ssp_spec = LINK_SSP_SPEC; -diff -Nur gcc-4.8.1-vanilla/gcc/Makefile.in gcc-4.8.1/gcc/Makefile.in ---- gcc-4.8.1-vanilla/gcc/Makefile.in 2013-05-21 18:00:49.000000000 +0200 -+++ gcc-4.8.1/gcc/Makefile.in 2013-06-27 23:57:54.019095926 +0200 -@@ -235,6 +235,14 @@ - LINKER_FLAGS = $(CFLAGS) - endif - -+# We don't want to compile the compiler with -fPIE, it make PCH fail. -+enable_esp = @enable_esp@ -+ifeq ($(enable_esp),yes) -+ESP_NOPIE_CFLAGS = -fno-PIE -+else -+ESP_NOPIE_CFLAGS= -+endif -+ - # ------------------------------------------- - # Programs which operate on the build machine - # ------------------------------------------- -@@ -986,12 +994,13 @@ - - # This is the variable actually used when we compile. If you change this, - # you probably want to update BUILD_CFLAGS in configure.ac --ALL_CFLAGS = $(T_CFLAGS) $(CFLAGS-$@) \ -+ALL_CFLAGS = $(ESP_NOPIE_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) \ - $(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) @DEFS@ - - # The C++ version. --ALL_CXXFLAGS = $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS) $(INTERNAL_CFLAGS) \ -- $(COVERAGE_FLAGS) $(NOEXCEPTION_FLAGS) $(WARN_CXXFLAGS) @DEFS@ -+ALL_CXXFLAGS = $(ESP_NOPIE_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS) \ -+ $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(NOEXCEPTION_FLAGS) \ -+ $(WARN_CXXFLAGS) @DEFS@ - - # Likewise. Put INCLUDES at the beginning: this way, if some autoconf macro - # puts -I options in CPPFLAGS, our include files in the srcdir will always -@@ -1808,6 +1817,8 @@ - echo GCC_CFLAGS = '$(GCC_CFLAGS)' >> tmp-libgcc.mvars - echo INHIBIT_LIBC_CFLAGS = '$(INHIBIT_LIBC_CFLAGS)' >> tmp-libgcc.mvars - echo TARGET_SYSTEM_ROOT = '$(TARGET_SYSTEM_ROOT)' >> tmp-libgcc.mvars -+ echo enable_esp = '$(enable_esp)' >> tmp-libgcc.mvars -+ echo enable_crtbeginP = '@enable_crtbeginP@' >> tmp-libgcc.mvars - - mv tmp-libgcc.mvars libgcc.mvars - -diff -Nur gcc-4.8.1-vanilla/gcc/varasm.c gcc-4.8.1/gcc/varasm.c ---- gcc-4.8.1-vanilla/gcc/varasm.c 2013-05-10 03:54:06.000000000 +0200 -+++ gcc-4.8.1/gcc/varasm.c 2013-06-27 23:57:54.023096025 +0200 -@@ -5939,7 +5939,11 @@ - bool is_local; - - is_local = targetm.binds_local_p (decl); -- if (!flag_shlib) -+ #ifdef ENABLE_ESP -+ if (!flag_pic) -+ #else -+ if (!flag_shlib) -+ #endif - { - if (is_local) - kind = TLS_MODEL_LOCAL_EXEC; -diff -Nur gcc-4.8.1-vanilla/libgcc/Makefile.in gcc-4.8.1/libgcc/Makefile.in ---- gcc-4.8.1-vanilla/libgcc/Makefile.in 2013-02-04 20:06:20.000000000 +0100 -+++ gcc-4.8.1/libgcc/Makefile.in 2013-06-27 23:57:54.019095926 +0200 -@@ -220,6 +220,17 @@ - DECNUMINC = - endif - -+ifeq ($(enable_esp),yes) -+ESP_NOPIE_CFLAGS = -fno-PIE -+else -+ESP_NOPIE_CFLAGS= -+endif -+ -+# We add crtbeginP.o to the EXTRA_PARTS list if enable_crtbeginP = yes -+ifeq ($(enable_crtbeginP),yes) -+EXTRA_PARTS += crtbeginP.o -+endif -+ - # Options to use when compiling libgcc2.a. - # - LIBGCC2_DEBUG_CFLAGS = -g -@@ -280,7 +291,7 @@ - CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \ - -finhibit-size-directive -fno-inline -fno-exceptions \ - -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \ -- -fno-stack-protector \ -+ -fno-stack-protector $(ESP_NOPIE_CFLAGS) \ - $(INHIBIT_LIBC_CFLAGS) - - # Extra flags to use when compiling crt{begin,end}.o. -@@ -969,6 +980,13 @@ - # This is a version of crtbegin for -static links. - crtbeginT$(objext): $(srcdir)/crtstuff.c - $(crt_compile) $(CRTSTUFF_T_CFLAGS) -c $< -DCRT_BEGIN -DCRTSTUFFT_O -+ -+# This is a version of crtbegin for -static -fPIE links. -+ifeq ($(enable_crtbeginP),yes) -+crtbeginP$(objext): $(srcdir)/crtstuff.c -+ $(crt_compile) $(CRTSTUFF_T_CFLAGS_S) \ -+ -c $< -DCRT_BEGIN -DCRTSTUFFT_O -DCRTSTUFFS_O -+endif - endif - - ifeq ($(CUSTOM_CRTIN),) -diff -Nur gcc-4.8.1-vanilla/Makefile.in gcc-4.8.1/Makefile.in ---- gcc-4.8.1-vanilla/Makefile.in 2013-03-30 12:25:03.000000000 +0100 -+++ gcc-4.8.1/Makefile.in 2013-06-27 23:57:54.017095876 +0200 -@@ -360,9 +360,17 @@ - BUILD_PREFIX = @BUILD_PREFIX@ - BUILD_PREFIX_1 = @BUILD_PREFIX_1@ - -+# Some stuff don't compile with SSP -+enable_esp = @enable_esp@ -+ifeq ($(enable_esp),yes) -+ESP_NOSSP_CFLAGS = -fno-stack-protector -+else -+ESP_NOSSP_CFLAGS= -+endif -+ - # Flags to pass to stage2 and later makes. They are defined - # here so that they can be overridden by Makefile fragments. --BOOT_CFLAGS= -g -O2 -+BOOT_CFLAGS= -g -O2 $(ESP_NOSSP_CFLAGS) - BOOT_LDFLAGS= - BOOT_ADAFLAGS= -gnatpg - -@@ -408,9 +416,9 @@ - - CFLAGS = @CFLAGS@ - LDFLAGS = @LDFLAGS@ --LIBCFLAGS = $(CFLAGS) -+LIBCFLAGS = $(CFLAGS) $(ESP_NOSSP_CFLAGS) - CXXFLAGS = @CXXFLAGS@ --LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates -+LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates $(ESP_NOSSP_CFLAGS) - GOCFLAGS = $(CFLAGS) - - TFLAGS = diff --git a/gcc/patches/gcc48-i386-libgomp.patch0 b/gcc/patches/gcc48-i386-libgomp.patch0 deleted file mode 100644 index 45883a6..0000000 --- a/gcc/patches/gcc48-i386-libgomp.patch0 +++ /dev/null @@ -1,20 +0,0 @@ ---- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100 -+++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100 -@@ -67,7 +67,7 @@ if test $enable_linux_futex = yes; then - ;; - *) - if test -z "$with_arch"; then -- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" -+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic" - fi - esac - ;; -@@ -79,7 +79,7 @@ if test $enable_linux_futex = yes; then - config_path="linux/x86 linux posix" - case " ${CC} ${CFLAGS} " in - *" -m32 "*) -- XCFLAGS="${XCFLAGS} -march=i486 -mtune=i686" -+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic" - ;; - esac - ;; diff --git a/gcc/patches/gcc48-libstdc++-docs.patch0 b/gcc/patches/gcc48-libstdc++-docs.patch0 deleted file mode 100644 index 019b974..0000000 --- a/gcc/patches/gcc48-libstdc++-docs.patch0 +++ /dev/null @@ -1,26 +0,0 @@ ---- libstdc++-v3/doc/html/index.html.jj 2011-01-03 12:53:21.282829010 +0100 -+++ libstdc++-v3/doc/html/index.html 2011-01-04 18:06:28.999851145 +0100 -@@ -5,6 +5,8 @@ - <a class="link" href="http://www.fsf.org/" target="_top">FSF - </a> - </p><p> -+ Release 4.8.0 -+ </p><p> - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation - License, Version 1.2 or any later version published by the ---- libstdc++-v3/doc/html/api.html.jj 2011-01-03 12:53:21.000000000 +0100 -+++ libstdc++-v3/doc/html/api.html 2011-01-04 18:12:01.672757784 +0100 -@@ -18,8 +18,11 @@ - member functions for the library classes, finding out what is in a - particular include file, looking at inheritance diagrams, etc. - </p><p> -- The API documentation, rendered into HTML, can be viewed online: -+ The API documentation, rendered into HTML, can be viewed here: - </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> -+ <a class="link" href="api/index.html" target="_top">for the 4.8 release, local -+ </a> -+ </p></li><li class="listitem"><p> - <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html" target="_top">for the 3.4 release - </a> - </p></li><li class="listitem"><p> diff --git a/gcc/patches/gcc48-libtool-no-rpath.patch0 b/gcc/patches/gcc48-libtool-no-rpath.patch0 deleted file mode 100644 index 466c661..0000000 --- a/gcc/patches/gcc48-libtool-no-rpath.patch0 +++ /dev/null @@ -1,27 +0,0 @@ -libtool sucks. ---- ltmain.sh.jj 2007-12-07 14:53:21.000000000 +0100 -+++ ltmain.sh 2008-09-05 21:51:48.000000000 +0200 -@@ -5394,6 +5394,7 @@ EOF - rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do -+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then -@@ -6071,6 +6072,7 @@ EOF - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do -+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then -@@ -6120,6 +6122,7 @@ EOF - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do -+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then diff --git a/gcc/patches/gcc48-no-add-needed.patch0 b/gcc/patches/gcc48-no-add-needed.patch0 deleted file mode 100644 index b6ca777..0000000 --- a/gcc/patches/gcc48-no-add-needed.patch0 +++ /dev/null @@ -1,50 +0,0 @@ -2010-02-08 Roland McGrath roland@redhat.com - - * config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the - linker. - * config/gnu-user.h (LINK_EH_SPEC): Likewise. - * config/alpha/elf.h (LINK_EH_SPEC): Likewise. - * config/ia64/linux.h (LINK_EH_SPEC): Likewise. - ---- gcc/config/alpha/elf.h.jj 2011-01-03 12:52:31.118056764 +0100 -+++ gcc/config/alpha/elf.h 2011-01-04 18:14:10.931874160 +0100 -@@ -165,5 +165,5 @@ extern int alpha_this_gpdisp_sequence_nu - I imagine that other systems will catch up. In the meantime, it - doesn't harm to make sure that the data exists to be used later. */ - #if defined(HAVE_LD_EH_FRAME_HDR) --#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} " - #endif ---- gcc/config/ia64/linux.h.jj 2011-01-03 13:02:11.462994522 +0100 -+++ gcc/config/ia64/linux.h 2011-01-04 18:14:10.931874160 +0100 -@@ -77,7 +77,7 @@ do { \ - Signalize that because we have fde-glibc, we don't need all C shared libs - linked against -lgcc_s. */ - #undef LINK_EH_SPEC --#define LINK_EH_SPEC "" -+#define LINK_EH_SPEC "--no-add-needed " - - /* Put all *tf routines in libgcc. */ - #undef LIBGCC2_HAS_TF_MODE ---- gcc/config/gnu-user.h.jj 2011-01-03 12:53:03.739057299 +0100 -+++ gcc/config/gnu-user.h 2011-01-04 18:14:10.932814884 +0100 -@@ -82,7 +82,7 @@ see the files COPYING3 and COPYING.RUNTI - #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC - - #if defined(HAVE_LD_EH_FRAME_HDR) --#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} " - #endif - - #undef LINK_GCC_C_SEQUENCE_SPEC ---- gcc/config/rs6000/sysv4.h.jj 2011-01-03 13:02:18.255994215 +0100 -+++ gcc/config/rs6000/sysv4.h 2011-01-04 18:14:10.933888871 +0100 -@@ -820,7 +820,7 @@ extern int fixuplabelno; - -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" - - #if defined(HAVE_LD_EH_FRAME_HDR) --# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -+# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} " - #endif - - #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \ diff --git a/gcc/patches/gcc49-aarch64-async-unw-tables.patch0 b/gcc/patches/gcc49-aarch64-async-unw-tables.patch0 new file mode 100644 index 0000000..feec149 --- /dev/null +++ b/gcc/patches/gcc49-aarch64-async-unw-tables.patch0 @@ -0,0 +1,35 @@ +2014-04-07 Richard Henderson rth@redhat.com + + * common/config/aarch64/aarch64-common.c (TARGET_OPTION_INIT_STRUCT): + Define. + (aarch64_option_init_struct): New function. + +--- gcc/common/config/aarch64/aarch64-common.c ++++ gcc/common/config/aarch64/aarch64-common.c +@@ -39,6 +39,9 @@ + #undef TARGET_OPTION_OPTIMIZATION_TABLE + #define TARGET_OPTION_OPTIMIZATION_TABLE aarch_option_optimization_table + ++#undef TARGET_OPTION_INIT_STRUCT ++#define TARGET_OPTION_INIT_STRUCT aarch64_option_init_struct ++ + /* Set default optimization options. */ + static const struct default_options aarch_option_optimization_table[] = + { +@@ -47,6 +50,16 @@ static const struct default_options aarch_option_optimization_table[] = + { OPT_LEVELS_NONE, 0, NULL, 0 } + }; + ++/* Implement TARGET_OPTION_INIT_STRUCT. */ ++ ++static void ++aarch64_option_init_struct (struct gcc_options *opts) ++{ ++ /* By default, always emit DWARF-2 unwind info. This allows debugging ++ without maintaining a stack frame back-chain. */ ++ opts->x_flag_asynchronous_unwind_tables = 1; ++} ++ + /* Implement TARGET_HANDLE_OPTION. + This function handles the target specific options for CPU/target selection. + diff --git a/gcc/patches/gcc49-aarch64-unwind-opt.patch0 b/gcc/patches/gcc49-aarch64-unwind-opt.patch0 new file mode 100644 index 0000000..3ad55ab --- /dev/null +++ b/gcc/patches/gcc49-aarch64-unwind-opt.patch0 @@ -0,0 +1,338 @@ +2014-08-08 Richard Henderson rth@redhat.com + + * config/aarch64/aarch64.c (aarch64_save_or_restore_fprs): Add + cfi_ops argument, for restore put REG_CFA_RESTORE notes into + *cfi_ops rather than on individual insns. Cleanup. + (aarch64_save_or_restore_callee_save_registers): Likewise. + (aarch64_expand_prologue): Adjust caller. + (aarch64_expand_epilogue): Likewise. Cleanup. Emit queued cfi_ops + on the stack restore insn. + +--- gcc/config/aarch64/aarch64.c.jj 2014-07-08 17:38:17.398231989 +0200 ++++ gcc/config/aarch64/aarch64.c 2014-08-13 10:02:45.599757706 +0200 +@@ -1810,8 +1810,7 @@ aarch64_register_saved_on_entry (int reg + + static void + aarch64_save_or_restore_fprs (int start_offset, int increment, +- bool restore, rtx base_rtx) +- ++ bool restore, rtx base_rtx, rtx *cfi_ops) + { + unsigned regno; + unsigned regno2; +@@ -1819,16 +1818,16 @@ aarch64_save_or_restore_fprs (int start_ + rtx (*gen_mem_ref)(enum machine_mode, rtx) + = (frame_pointer_needed)? gen_frame_mem : gen_rtx_MEM; + +- + for (regno = V0_REGNUM; regno <= V31_REGNUM; regno++) + { + if (aarch64_register_saved_on_entry (regno)) + { +- rtx mem; ++ rtx mem, reg1; + mem = gen_mem_ref (DFmode, + plus_constant (Pmode, + base_rtx, + start_offset)); ++ reg1 = gen_rtx_REG (DFmode, regno); + + for (regno2 = regno + 1; + regno2 <= V31_REGNUM +@@ -1840,56 +1839,51 @@ aarch64_save_or_restore_fprs (int start_ + if (regno2 <= V31_REGNUM && + aarch64_register_saved_on_entry (regno2)) + { +- rtx mem2; ++ rtx mem2, reg2; + /* Next highest register to be saved. */ + mem2 = gen_mem_ref (DFmode, + plus_constant + (Pmode, + base_rtx, + start_offset + increment)); ++ reg2 = gen_rtx_REG (DFmode, regno2); ++ + if (restore == false) + { +- insn = emit_insn +- ( gen_store_pairdf (mem, gen_rtx_REG (DFmode, regno), +- mem2, gen_rtx_REG (DFmode, regno2))); +- ++ insn = emit_insn (gen_store_pairdf (mem, reg1, mem2, reg2)); ++ /* The first part of a frame-related parallel insn ++ is always assumed to be relevant to the frame ++ calculations; subsequent parts, are only ++ frame-related if explicitly marked. */ ++ RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1; ++ RTX_FRAME_RELATED_P (insn) = 1; + } + else + { +- insn = emit_insn +- ( gen_load_pairdf (gen_rtx_REG (DFmode, regno), mem, +- gen_rtx_REG (DFmode, regno2), mem2)); +- +- add_reg_note (insn, REG_CFA_RESTORE, +- gen_rtx_REG (DFmode, regno)); +- add_reg_note (insn, REG_CFA_RESTORE, +- gen_rtx_REG (DFmode, regno2)); ++ emit_insn (gen_load_pairdf (reg1, mem, reg2, mem2)); ++ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg1, *cfi_ops); ++ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg2, *cfi_ops); + } + +- /* The first part of a frame-related parallel insn +- is always assumed to be relevant to the frame +- calculations; subsequent parts, are only +- frame-related if explicitly marked. */ +- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1; + regno = regno2; + start_offset += increment * 2; + } + else + { + if (restore == false) +- insn = emit_move_insn (mem, gen_rtx_REG (DFmode, regno)); ++ { ++ insn = emit_move_insn (mem, reg1); ++ RTX_FRAME_RELATED_P (insn) = 1; ++ } + else + { +- insn = emit_move_insn (gen_rtx_REG (DFmode, regno), mem); +- add_reg_note (insn, REG_CFA_RESTORE, +- gen_rtx_REG (DImode, regno)); ++ emit_move_insn (reg1, mem); ++ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg1, *cfi_ops); + } + start_offset += increment; + } +- RTX_FRAME_RELATED_P (insn) = 1; + } + } +- + } + + +@@ -1897,13 +1891,14 @@ aarch64_save_or_restore_fprs (int start_ + restore's have to happen. */ + static void + aarch64_save_or_restore_callee_save_registers (HOST_WIDE_INT offset, +- bool restore) ++ bool restore, rtx *cfi_ops) + { + rtx insn; + rtx base_rtx = stack_pointer_rtx; + HOST_WIDE_INT start_offset = offset; + HOST_WIDE_INT increment = UNITS_PER_WORD; +- rtx (*gen_mem_ref)(enum machine_mode, rtx) = (frame_pointer_needed)? gen_frame_mem : gen_rtx_MEM; ++ rtx (*gen_mem_ref)(enum machine_mode, rtx) ++ = (frame_pointer_needed)? gen_frame_mem : gen_rtx_MEM; + unsigned limit = (frame_pointer_needed)? R28_REGNUM: R30_REGNUM; + unsigned regno; + unsigned regno2; +@@ -1912,11 +1907,13 @@ aarch64_save_or_restore_callee_save_regi + { + if (aarch64_register_saved_on_entry (regno)) + { +- rtx mem; ++ rtx mem, reg1; ++ + mem = gen_mem_ref (Pmode, + plus_constant (Pmode, + base_rtx, + start_offset)); ++ reg1 = gen_rtx_REG (DImode, regno); + + for (regno2 = regno + 1; + regno2 <= limit +@@ -1928,56 +1925,54 @@ aarch64_save_or_restore_callee_save_regi + if (regno2 <= limit && + aarch64_register_saved_on_entry (regno2)) + { +- rtx mem2; ++ rtx mem2, reg2; + /* Next highest register to be saved. */ + mem2 = gen_mem_ref (Pmode, + plus_constant + (Pmode, + base_rtx, + start_offset + increment)); ++ reg2 = gen_rtx_REG (DImode, regno2); ++ + if (restore == false) + { +- insn = emit_insn +- ( gen_store_pairdi (mem, gen_rtx_REG (DImode, regno), +- mem2, gen_rtx_REG (DImode, regno2))); +- ++ insn = emit_insn (gen_store_pairdi (mem, reg1, mem2, reg2)); ++ /* The first part of a frame-related parallel insn ++ is always assumed to be relevant to the frame ++ calculations; subsequent parts, are only ++ frame-related if explicitly marked. */ ++ RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1; ++ RTX_FRAME_RELATED_P (insn) = 1; + } + else + { +- insn = emit_insn +- ( gen_load_pairdi (gen_rtx_REG (DImode, regno), mem, +- gen_rtx_REG (DImode, regno2), mem2)); +- +- add_reg_note (insn, REG_CFA_RESTORE, gen_rtx_REG (DImode, regno)); +- add_reg_note (insn, REG_CFA_RESTORE, gen_rtx_REG (DImode, regno2)); ++ emit_insn (gen_load_pairdi (reg1, mem, reg2, mem2)); ++ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg1, *cfi_ops); ++ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg2, *cfi_ops); + } + +- /* The first part of a frame-related parallel insn +- is always assumed to be relevant to the frame +- calculations; subsequent parts, are only +- frame-related if explicitly marked. */ +- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, +- 1)) = 1; + regno = regno2; + start_offset += increment * 2; + } + else + { + if (restore == false) +- insn = emit_move_insn (mem, gen_rtx_REG (DImode, regno)); ++ { ++ insn = emit_move_insn (mem, reg1); ++ RTX_FRAME_RELATED_P (insn) = 1; ++ } + else + { +- insn = emit_move_insn (gen_rtx_REG (DImode, regno), mem); +- add_reg_note (insn, REG_CFA_RESTORE, gen_rtx_REG (DImode, regno)); ++ emit_move_insn (reg1, mem); ++ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg1, *cfi_ops); + } + start_offset += increment; + } +- RTX_FRAME_RELATED_P (insn) = 1; + } + } + +- aarch64_save_or_restore_fprs (start_offset, increment, restore, base_rtx); +- ++ aarch64_save_or_restore_fprs (start_offset, increment, restore, ++ base_rtx, cfi_ops); + } + + /* AArch64 stack frames generated by this compiler look like: +@@ -2179,7 +2174,7 @@ aarch64_expand_prologue (void) + } + + aarch64_save_or_restore_callee_save_registers +- (fp_offset + cfun->machine->frame.hardfp_offset, 0); ++ (fp_offset + cfun->machine->frame.hardfp_offset, 0, NULL); + } + + /* when offset >= 512, +@@ -2248,15 +2243,18 @@ aarch64_expand_epilogue (bool for_sibcal + insn = emit_insn (gen_add3_insn (stack_pointer_rtx, + hard_frame_pointer_rtx, + GEN_INT (- fp_offset))); ++ /* CFA should be calculated from the value of SP from now on. */ ++ add_reg_note (insn, REG_CFA_ADJUST_CFA, ++ gen_rtx_SET (VOIDmode, stack_pointer_rtx, ++ plus_constant (Pmode, hard_frame_pointer_rtx, ++ -fp_offset))); + RTX_FRAME_RELATED_P (insn) = 1; +- /* As SP is set to (FP - fp_offset), according to the rules in +- dwarf2cfi.c:dwarf2out_frame_debug_expr, CFA should be calculated +- from the value of SP from now on. */ + cfa_reg = stack_pointer_rtx; + } + ++ rtx cfi_ops = NULL; + aarch64_save_or_restore_callee_save_registers +- (fp_offset + cfun->machine->frame.hardfp_offset, 1); ++ (fp_offset + cfun->machine->frame.hardfp_offset, 1, &cfi_ops); + + /* Restore the frame pointer and lr if the frame pointer is needed. */ + if (offset > 0) +@@ -2264,6 +2262,8 @@ aarch64_expand_epilogue (bool for_sibcal + if (frame_pointer_needed) + { + rtx mem_fp, mem_lr; ++ rtx reg_fp = hard_frame_pointer_rtx; ++ rtx reg_lr = gen_rtx_REG (DImode, LR_REGNUM); + + if (fp_offset) + { +@@ -2276,52 +2276,36 @@ aarch64_expand_epilogue (bool for_sibcal + stack_pointer_rtx, + fp_offset + + UNITS_PER_WORD)); +- insn = emit_insn (gen_load_pairdi (hard_frame_pointer_rtx, +- mem_fp, +- gen_rtx_REG (DImode, +- LR_REGNUM), +- mem_lr)); ++ emit_insn (gen_load_pairdi (reg_fp, mem_fp, reg_lr, mem_lr)); ++ ++ insn = emit_insn (gen_add2_insn (stack_pointer_rtx, ++ GEN_INT (offset))); + } + else + { + insn = emit_insn (gen_loadwb_pairdi_di +- (stack_pointer_rtx, +- stack_pointer_rtx, +- hard_frame_pointer_rtx, +- gen_rtx_REG (DImode, LR_REGNUM), +- GEN_INT (offset), ++ (stack_pointer_rtx, stack_pointer_rtx, ++ reg_fp, reg_lr, GEN_INT (offset), + GEN_INT (GET_MODE_SIZE (DImode) + offset))); +- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 2)) = 1; +- add_reg_note (insn, REG_CFA_ADJUST_CFA, +- (gen_rtx_SET (Pmode, stack_pointer_rtx, +- plus_constant (Pmode, cfa_reg, +- offset)))); +- } +- +- /* The first part of a frame-related parallel insn +- is always assumed to be relevant to the frame +- calculations; subsequent parts, are only +- frame-related if explicitly marked. */ +- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1; +- RTX_FRAME_RELATED_P (insn) = 1; +- add_reg_note (insn, REG_CFA_RESTORE, hard_frame_pointer_rtx); +- add_reg_note (insn, REG_CFA_RESTORE, +- gen_rtx_REG (DImode, LR_REGNUM)); +- +- if (fp_offset) +- { +- insn = emit_insn (gen_add2_insn (stack_pointer_rtx, +- GEN_INT (offset))); +- RTX_FRAME_RELATED_P (insn) = 1; + } ++ cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg_fp, cfi_ops); ++ cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg_lr, cfi_ops); + } + else + { + insn = emit_insn (gen_add2_insn (stack_pointer_rtx, + GEN_INT (offset))); +- RTX_FRAME_RELATED_P (insn) = 1; + } ++ cfi_ops = alloc_reg_note (REG_CFA_ADJUST_CFA, ++ gen_rtx_SET (VOIDmode, stack_pointer_rtx, ++ plus_constant (Pmode, cfa_reg, ++ offset)), ++ cfi_ops); ++ REG_NOTES (insn) = cfi_ops; ++ RTX_FRAME_RELATED_P (insn) = 1; + } ++ else ++ gcc_assert (cfi_ops == NULL); + + /* Stack adjustment for exception handler. */ + if (crtl->calls_eh_return) diff --git a/gcc/patches/gcc49-cloog-dl.patch0 b/gcc/patches/gcc49-cloog-dl.patch0 new file mode 100644 index 0000000..8a72509 --- /dev/null +++ b/gcc/patches/gcc49-cloog-dl.patch0 @@ -0,0 +1,476 @@ +--- gcc/Makefile.in.jj 2012-12-13 17:09:20.000000000 +0100 ++++ gcc/Makefile.in 2012-12-14 11:45:22.585670055 +0100 +@@ -1006,7 +1006,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY) + # and the system's installed libraries. + LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \ + $(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS) +-BACKENDLIBS = $(CLOOGLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \ ++BACKENDLIBS = $(if $(CLOOGLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \ + $(ZLIB) + # Any system libraries needed just for GNAT. + SYSLIBS = @GNAT_LIBEXC@ +@@ -2011,6 +2011,15 @@ $(out_object_file): $(out_file) + $(common_out_object_file): $(common_out_file) + $(COMPILE) $< + $(POSTCOMPILE) ++ ++graphite%.o : \ ++ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS)) ++graphite.o : \ ++ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS)) ++graphite%.o : \ ++ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS)) ++graphite.o : \ ++ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS)) + # + # Generate header and source files from the machine description, + # and compile them. +--- gcc/graphite-poly.h.jj 2012-12-13 11:31:27.000000000 +0100 ++++ gcc/graphite-poly.h 2012-12-14 13:41:41.970800726 +0100 +@@ -22,6 +22,371 @@ along with GCC; see the file COPYING3. + #ifndef GCC_GRAPHITE_POLY_H + #define GCC_GRAPHITE_POLY_H + ++#include <isl/aff.h> ++#include <isl/schedule.h> ++#include <isl/ilp.h> ++#include <isl/flow.h> ++#include <isl/options.h> ++#include <cloog/isl/cloog.h> ++#include <dlfcn.h> ++#define DYNSYMS \ ++ DYNSYM (clast_pprint); \ ++ DYNSYM (cloog_clast_create_from_input); \ ++ DYNSYM (cloog_clast_free); \ ++ DYNSYM (cloog_domain_from_isl_set); \ ++ DYNSYM (cloog_input_alloc); \ ++ DYNSYM (cloog_isl_state_malloc); \ ++ DYNSYM (cloog_options_free); \ ++ DYNSYM (cloog_options_malloc); \ ++ DYNSYM (cloog_scattering_from_isl_map); \ ++ DYNSYM (cloog_state_free); \ ++ DYNSYM (cloog_union_domain_add_domain); \ ++ DYNSYM (cloog_union_domain_alloc); \ ++ DYNSYM (cloog_union_domain_set_name); \ ++ DYNSYM (isl_aff_add_coefficient_si); \ ++ DYNSYM (isl_aff_add_constant); \ ++ DYNSYM (isl_aff_free); \ ++ DYNSYM (isl_aff_get_coefficient); \ ++ DYNSYM (isl_aff_get_space); \ ++ DYNSYM (isl_aff_mod); \ ++ DYNSYM (isl_aff_set_coefficient_si); \ ++ DYNSYM (isl_aff_set_constant_si); \ ++ DYNSYM (isl_aff_zero_on_domain); \ ++ DYNSYM (isl_band_free); \ ++ DYNSYM (isl_band_get_children); \ ++ DYNSYM (isl_band_get_partial_schedule); \ ++ DYNSYM (isl_band_has_children); \ ++ DYNSYM (isl_band_list_free); \ ++ DYNSYM (isl_band_list_get_band); \ ++ DYNSYM (isl_band_list_get_ctx); \ ++ DYNSYM (isl_band_list_n_band); \ ++ DYNSYM (isl_band_member_is_zero_distance); \ ++ DYNSYM (isl_band_n_member); \ ++ DYNSYM (isl_basic_map_add_constraint); \ ++ DYNSYM (isl_basic_map_project_out); \ ++ DYNSYM (isl_basic_map_universe); \ ++ DYNSYM (isl_constraint_set_coefficient); \ ++ DYNSYM (isl_constraint_set_coefficient_si); \ ++ DYNSYM (isl_constraint_set_constant); \ ++ DYNSYM (isl_constraint_set_constant_si); \ ++ DYNSYM (isl_ctx_alloc); \ ++ DYNSYM (isl_ctx_free); \ ++ DYNSYM (isl_equality_alloc); \ ++ DYNSYM (isl_id_alloc); \ ++ DYNSYM (isl_id_copy); \ ++ DYNSYM (isl_id_free); \ ++ DYNSYM (isl_inequality_alloc); \ ++ DYNSYM (isl_local_space_copy); \ ++ DYNSYM (isl_local_space_free); \ ++ DYNSYM (isl_local_space_from_space); \ ++ DYNSYM (isl_local_space_range); \ ++ DYNSYM (isl_map_add_constraint); \ ++ DYNSYM (isl_map_add_dims); \ ++ DYNSYM (isl_map_align_params); \ ++ DYNSYM (isl_map_apply_range); \ ++ DYNSYM (isl_map_copy); \ ++ DYNSYM (isl_map_dim); \ ++ DYNSYM (isl_map_dump); \ ++ DYNSYM (isl_map_equate); \ ++ DYNSYM (isl_map_fix_si); \ ++ DYNSYM (isl_map_flat_product); \ ++ DYNSYM (isl_map_flat_range_product); \ ++ DYNSYM (isl_map_free); \ ++ DYNSYM (isl_map_from_basic_map); \ ++ DYNSYM (isl_map_from_pw_aff); \ ++ DYNSYM (isl_map_from_union_map); \ ++ DYNSYM (isl_map_get_ctx); \ ++ DYNSYM (isl_map_get_space); \ ++ DYNSYM (isl_map_get_tuple_id); \ ++ DYNSYM (isl_map_insert_dims); \ ++ DYNSYM (isl_map_intersect); \ ++ DYNSYM (isl_map_intersect_domain); \ ++ DYNSYM (isl_map_intersect_range); \ ++ DYNSYM (isl_map_is_empty); \ ++ DYNSYM (isl_map_lex_ge); \ ++ DYNSYM (isl_map_lex_le); \ ++ DYNSYM (isl_map_n_out); \ ++ DYNSYM (isl_map_range); \ ++ DYNSYM (isl_map_set_tuple_id); \ ++ DYNSYM (isl_map_universe); \ ++ DYNSYM (isl_options_set_on_error); \ ++ DYNSYM (isl_options_set_schedule_fuse); \ ++ DYNSYM (isl_options_set_schedule_max_constant_term); \ ++ DYNSYM (isl_options_set_schedule_maximize_band_depth); \ ++ DYNSYM (isl_printer_free); \ ++ DYNSYM (isl_printer_print_aff); \ ++ DYNSYM (isl_printer_print_constraint); \ ++ DYNSYM (isl_printer_print_map); \ ++ DYNSYM (isl_printer_print_set); \ ++ DYNSYM (isl_printer_to_file); \ ++ DYNSYM (isl_pw_aff_add); \ ++ DYNSYM (isl_pw_aff_alloc); \ ++ DYNSYM (isl_pw_aff_copy); \ ++ DYNSYM (isl_pw_aff_eq_set); \ ++ DYNSYM (isl_pw_aff_free); \ ++ DYNSYM (isl_pw_aff_from_aff); \ ++ DYNSYM (isl_pw_aff_ge_set); \ ++ DYNSYM (isl_pw_aff_gt_set); \ ++ DYNSYM (isl_pw_aff_is_cst); \ ++ DYNSYM (isl_pw_aff_le_set); \ ++ DYNSYM (isl_pw_aff_lt_set); \ ++ DYNSYM (isl_pw_aff_mod); \ ++ DYNSYM (isl_pw_aff_mul); \ ++ DYNSYM (isl_pw_aff_ne_set); \ ++ DYNSYM (isl_pw_aff_nonneg_set); \ ++ DYNSYM (isl_pw_aff_set_tuple_id); \ ++ DYNSYM (isl_pw_aff_sub); \ ++ DYNSYM (isl_pw_aff_zero_set); \ ++ DYNSYM (isl_schedule_free); \ ++ DYNSYM (isl_schedule_get_band_forest); \ ++ DYNSYM (isl_set_add_constraint); \ ++ DYNSYM (isl_set_add_dims); \ ++ DYNSYM (isl_set_apply); \ ++ DYNSYM (isl_set_coalesce); \ ++ DYNSYM (isl_set_copy); \ ++ DYNSYM (isl_set_dim); \ ++ DYNSYM (isl_set_fix_si); \ ++ DYNSYM (isl_set_free); \ ++ DYNSYM (isl_set_from_cloog_domain); \ ++ DYNSYM (isl_set_get_space); \ ++ DYNSYM (isl_set_get_tuple_id); \ ++ DYNSYM (isl_set_intersect); \ ++ DYNSYM (isl_set_is_empty); \ ++ DYNSYM (isl_set_max); \ ++ DYNSYM (isl_set_min); \ ++ DYNSYM (isl_set_n_dim); \ ++ DYNSYM (isl_set_nat_universe); \ ++ DYNSYM (isl_set_project_out); \ ++ DYNSYM (isl_set_set_tuple_id); \ ++ DYNSYM (isl_set_universe); \ ++ DYNSYM (isl_space_add_dims); \ ++ DYNSYM (isl_space_alloc); \ ++ DYNSYM (isl_space_copy); \ ++ DYNSYM (isl_space_dim); \ ++ DYNSYM (isl_space_domain); \ ++ DYNSYM (isl_space_find_dim_by_id); \ ++ DYNSYM (isl_space_free); \ ++ DYNSYM (isl_space_from_domain); \ ++ DYNSYM (isl_space_get_tuple_id); \ ++ DYNSYM (isl_space_params_alloc); \ ++ DYNSYM (isl_space_range); \ ++ DYNSYM (isl_space_set_alloc); \ ++ DYNSYM (isl_space_set_dim_id); \ ++ DYNSYM (isl_space_set_tuple_id); \ ++ DYNSYM (isl_union_map_add_map); \ ++ DYNSYM (isl_union_map_align_params); \ ++ DYNSYM (isl_union_map_apply_domain); \ ++ DYNSYM (isl_union_map_apply_range); \ ++ DYNSYM (isl_union_map_compute_flow); \ ++ DYNSYM (isl_union_map_copy); \ ++ DYNSYM (isl_union_map_empty); \ ++ DYNSYM (isl_union_map_flat_range_product); \ ++ DYNSYM (isl_union_map_foreach_map); \ ++ DYNSYM (isl_union_map_free); \ ++ DYNSYM (isl_union_map_from_map); \ ++ DYNSYM (isl_union_map_get_ctx); \ ++ DYNSYM (isl_union_map_get_space); \ ++ DYNSYM (isl_union_map_gist_domain); \ ++ DYNSYM (isl_union_map_gist_range); \ ++ DYNSYM (isl_union_map_intersect_domain); \ ++ DYNSYM (isl_union_map_is_empty); \ ++ DYNSYM (isl_union_map_subtract); \ ++ DYNSYM (isl_union_map_union); \ ++ DYNSYM (isl_union_set_add_set); \ ++ DYNSYM (isl_union_set_compute_schedule); \ ++ DYNSYM (isl_union_set_copy); \ ++ DYNSYM (isl_union_set_empty); \ ++ DYNSYM (isl_union_set_from_set); \ ++ DYNSYM (stmt_ass); \ ++ DYNSYM (stmt_block); \ ++ DYNSYM (stmt_for); \ ++ DYNSYM (stmt_guard); \ ++ DYNSYM (stmt_root); \ ++ DYNSYM (stmt_user); ++extern struct cloog_pointers_s__ ++{ ++ bool inited; ++ void *h; ++#define DYNSYM(x) __typeof (x) *p_##x ++ DYNSYMS ++#undef DYNSYM ++} cloog_pointers__; ++ ++#define cloog_block_alloc (*cloog_pointers__.p_cloog_block_alloc) ++#define clast_pprint (*cloog_pointers__.p_clast_pprint) ++#define cloog_clast_create_from_input (*cloog_pointers__.p_cloog_clast_create_from_input) ++#define cloog_clast_free (*cloog_pointers__.p_cloog_clast_free) ++#define cloog_domain_from_isl_set (*cloog_pointers__.p_cloog_domain_from_isl_set) ++#define cloog_input_alloc (*cloog_pointers__.p_cloog_input_alloc) ++#define cloog_isl_state_malloc (*cloog_pointers__.p_cloog_isl_state_malloc) ++#define cloog_options_free (*cloog_pointers__.p_cloog_options_free) ++#define cloog_options_malloc (*cloog_pointers__.p_cloog_options_malloc) ++#define cloog_scattering_from_isl_map (*cloog_pointers__.p_cloog_scattering_from_isl_map) ++#define cloog_state_free (*cloog_pointers__.p_cloog_state_free) ++#define cloog_union_domain_add_domain (*cloog_pointers__.p_cloog_union_domain_add_domain) ++#define cloog_union_domain_alloc (*cloog_pointers__.p_cloog_union_domain_alloc) ++#define cloog_union_domain_set_name (*cloog_pointers__.p_cloog_union_domain_set_name) ++#define isl_aff_add_coefficient_si (*cloog_pointers__.p_isl_aff_add_coefficient_si) ++#define isl_aff_add_constant (*cloog_pointers__.p_isl_aff_add_constant) ++#define isl_aff_free (*cloog_pointers__.p_isl_aff_free) ++#define isl_aff_get_coefficient (*cloog_pointers__.p_isl_aff_get_coefficient) ++#define isl_aff_get_space (*cloog_pointers__.p_isl_aff_get_space) ++#define isl_aff_mod (*cloog_pointers__.p_isl_aff_mod) ++#define isl_aff_set_coefficient_si (*cloog_pointers__.p_isl_aff_set_coefficient_si) ++#define isl_aff_set_constant_si (*cloog_pointers__.p_isl_aff_set_constant_si) ++#define isl_aff_zero_on_domain (*cloog_pointers__.p_isl_aff_zero_on_domain) ++#define isl_band_free (*cloog_pointers__.p_isl_band_free) ++#define isl_band_get_children (*cloog_pointers__.p_isl_band_get_children) ++#define isl_band_get_partial_schedule (*cloog_pointers__.p_isl_band_get_partial_schedule) ++#define isl_band_has_children (*cloog_pointers__.p_isl_band_has_children) ++#define isl_band_list_free (*cloog_pointers__.p_isl_band_list_free) ++#define isl_band_list_get_band (*cloog_pointers__.p_isl_band_list_get_band) ++#define isl_band_list_get_ctx (*cloog_pointers__.p_isl_band_list_get_ctx) ++#define isl_band_list_n_band (*cloog_pointers__.p_isl_band_list_n_band) ++#define isl_band_member_is_zero_distance (*cloog_pointers__.p_isl_band_member_is_zero_distance) ++#define isl_band_n_member (*cloog_pointers__.p_isl_band_n_member) ++#define isl_basic_map_add_constraint (*cloog_pointers__.p_isl_basic_map_add_constraint) ++#define isl_basic_map_project_out (*cloog_pointers__.p_isl_basic_map_project_out) ++#define isl_basic_map_universe (*cloog_pointers__.p_isl_basic_map_universe) ++#define isl_constraint_set_coefficient (*cloog_pointers__.p_isl_constraint_set_coefficient) ++#define isl_constraint_set_coefficient_si (*cloog_pointers__.p_isl_constraint_set_coefficient_si) ++#define isl_constraint_set_constant (*cloog_pointers__.p_isl_constraint_set_constant) ++#define isl_constraint_set_constant_si (*cloog_pointers__.p_isl_constraint_set_constant_si) ++#define isl_ctx_alloc (*cloog_pointers__.p_isl_ctx_alloc) ++#define isl_ctx_free (*cloog_pointers__.p_isl_ctx_free) ++#define isl_equality_alloc (*cloog_pointers__.p_isl_equality_alloc) ++#define isl_id_alloc (*cloog_pointers__.p_isl_id_alloc) ++#define isl_id_copy (*cloog_pointers__.p_isl_id_copy) ++#define isl_id_free (*cloog_pointers__.p_isl_id_free) ++#define isl_inequality_alloc (*cloog_pointers__.p_isl_inequality_alloc) ++#define isl_local_space_copy (*cloog_pointers__.p_isl_local_space_copy) ++#define isl_local_space_free (*cloog_pointers__.p_isl_local_space_free) ++#define isl_local_space_from_space (*cloog_pointers__.p_isl_local_space_from_space) ++#define isl_local_space_range (*cloog_pointers__.p_isl_local_space_range) ++#define isl_map_add_constraint (*cloog_pointers__.p_isl_map_add_constraint) ++#define isl_map_add_dims (*cloog_pointers__.p_isl_map_add_dims) ++#define isl_map_align_params (*cloog_pointers__.p_isl_map_align_params) ++#define isl_map_apply_range (*cloog_pointers__.p_isl_map_apply_range) ++#define isl_map_copy (*cloog_pointers__.p_isl_map_copy) ++#define isl_map_dim (*cloog_pointers__.p_isl_map_dim) ++#define isl_map_dump (*cloog_pointers__.p_isl_map_dump) ++#define isl_map_equate (*cloog_pointers__.p_isl_map_equate) ++#define isl_map_fix_si (*cloog_pointers__.p_isl_map_fix_si) ++#define isl_map_flat_product (*cloog_pointers__.p_isl_map_flat_product) ++#define isl_map_flat_range_product (*cloog_pointers__.p_isl_map_flat_range_product) ++#define isl_map_free (*cloog_pointers__.p_isl_map_free) ++#define isl_map_from_basic_map (*cloog_pointers__.p_isl_map_from_basic_map) ++#define isl_map_from_pw_aff (*cloog_pointers__.p_isl_map_from_pw_aff) ++#define isl_map_from_union_map (*cloog_pointers__.p_isl_map_from_union_map) ++#define isl_map_get_ctx (*cloog_pointers__.p_isl_map_get_ctx) ++#define isl_map_get_space (*cloog_pointers__.p_isl_map_get_space) ++#define isl_map_get_tuple_id (*cloog_pointers__.p_isl_map_get_tuple_id) ++#define isl_map_insert_dims (*cloog_pointers__.p_isl_map_insert_dims) ++#define isl_map_intersect (*cloog_pointers__.p_isl_map_intersect) ++#define isl_map_intersect_domain (*cloog_pointers__.p_isl_map_intersect_domain) ++#define isl_map_intersect_range (*cloog_pointers__.p_isl_map_intersect_range) ++#define isl_map_is_empty (*cloog_pointers__.p_isl_map_is_empty) ++#define isl_map_lex_ge (*cloog_pointers__.p_isl_map_lex_ge) ++#define isl_map_lex_le (*cloog_pointers__.p_isl_map_lex_le) ++#define isl_map_n_out (*cloog_pointers__.p_isl_map_n_out) ++#define isl_map_range (*cloog_pointers__.p_isl_map_range) ++#define isl_map_set_tuple_id (*cloog_pointers__.p_isl_map_set_tuple_id) ++#define isl_map_universe (*cloog_pointers__.p_isl_map_universe) ++#define isl_options_set_on_error (*cloog_pointers__.p_isl_options_set_on_error) ++#define isl_options_set_schedule_fuse (*cloog_pointers__.p_isl_options_set_schedule_fuse) ++#define isl_options_set_schedule_max_constant_term (*cloog_pointers__.p_isl_options_set_schedule_max_constant_term) ++#define isl_options_set_schedule_maximize_band_depth (*cloog_pointers__.p_isl_options_set_schedule_maximize_band_depth) ++#define isl_printer_free (*cloog_pointers__.p_isl_printer_free) ++#define isl_printer_print_aff (*cloog_pointers__.p_isl_printer_print_aff) ++#define isl_printer_print_constraint (*cloog_pointers__.p_isl_printer_print_constraint) ++#define isl_printer_print_map (*cloog_pointers__.p_isl_printer_print_map) ++#define isl_printer_print_set (*cloog_pointers__.p_isl_printer_print_set) ++#define isl_printer_to_file (*cloog_pointers__.p_isl_printer_to_file) ++#define isl_pw_aff_add (*cloog_pointers__.p_isl_pw_aff_add) ++#define isl_pw_aff_alloc (*cloog_pointers__.p_isl_pw_aff_alloc) ++#define isl_pw_aff_copy (*cloog_pointers__.p_isl_pw_aff_copy) ++#define isl_pw_aff_eq_set (*cloog_pointers__.p_isl_pw_aff_eq_set) ++#define isl_pw_aff_free (*cloog_pointers__.p_isl_pw_aff_free) ++#define isl_pw_aff_from_aff (*cloog_pointers__.p_isl_pw_aff_from_aff) ++#define isl_pw_aff_ge_set (*cloog_pointers__.p_isl_pw_aff_ge_set) ++#define isl_pw_aff_gt_set (*cloog_pointers__.p_isl_pw_aff_gt_set) ++#define isl_pw_aff_is_cst (*cloog_pointers__.p_isl_pw_aff_is_cst) ++#define isl_pw_aff_le_set (*cloog_pointers__.p_isl_pw_aff_le_set) ++#define isl_pw_aff_lt_set (*cloog_pointers__.p_isl_pw_aff_lt_set) ++#define isl_pw_aff_mod (*cloog_pointers__.p_isl_pw_aff_mod) ++#define isl_pw_aff_mul (*cloog_pointers__.p_isl_pw_aff_mul) ++#define isl_pw_aff_ne_set (*cloog_pointers__.p_isl_pw_aff_ne_set) ++#define isl_pw_aff_nonneg_set (*cloog_pointers__.p_isl_pw_aff_nonneg_set) ++#define isl_pw_aff_set_tuple_id (*cloog_pointers__.p_isl_pw_aff_set_tuple_id) ++#define isl_pw_aff_sub (*cloog_pointers__.p_isl_pw_aff_sub) ++#define isl_pw_aff_zero_set (*cloog_pointers__.p_isl_pw_aff_zero_set) ++#define isl_schedule_free (*cloog_pointers__.p_isl_schedule_free) ++#define isl_schedule_get_band_forest (*cloog_pointers__.p_isl_schedule_get_band_forest) ++#define isl_set_add_constraint (*cloog_pointers__.p_isl_set_add_constraint) ++#define isl_set_add_dims (*cloog_pointers__.p_isl_set_add_dims) ++#define isl_set_apply (*cloog_pointers__.p_isl_set_apply) ++#define isl_set_coalesce (*cloog_pointers__.p_isl_set_coalesce) ++#define isl_set_copy (*cloog_pointers__.p_isl_set_copy) ++#define isl_set_dim (*cloog_pointers__.p_isl_set_dim) ++#define isl_set_fix_si (*cloog_pointers__.p_isl_set_fix_si) ++#define isl_set_free (*cloog_pointers__.p_isl_set_free) ++#define isl_set_from_cloog_domain (*cloog_pointers__.p_isl_set_from_cloog_domain) ++#define isl_set_get_space (*cloog_pointers__.p_isl_set_get_space) ++#define isl_set_get_tuple_id (*cloog_pointers__.p_isl_set_get_tuple_id) ++#define isl_set_intersect (*cloog_pointers__.p_isl_set_intersect) ++#define isl_set_is_empty (*cloog_pointers__.p_isl_set_is_empty) ++#define isl_set_max (*cloog_pointers__.p_isl_set_max) ++#define isl_set_min (*cloog_pointers__.p_isl_set_min) ++#define isl_set_n_dim (*cloog_pointers__.p_isl_set_n_dim) ++#define isl_set_nat_universe (*cloog_pointers__.p_isl_set_nat_universe) ++#define isl_set_project_out (*cloog_pointers__.p_isl_set_project_out) ++#define isl_set_set_tuple_id (*cloog_pointers__.p_isl_set_set_tuple_id) ++#define isl_set_universe (*cloog_pointers__.p_isl_set_universe) ++#define isl_space_add_dims (*cloog_pointers__.p_isl_space_add_dims) ++#define isl_space_alloc (*cloog_pointers__.p_isl_space_alloc) ++#define isl_space_copy (*cloog_pointers__.p_isl_space_copy) ++#define isl_space_dim (*cloog_pointers__.p_isl_space_dim) ++#define isl_space_domain (*cloog_pointers__.p_isl_space_domain) ++#define isl_space_find_dim_by_id (*cloog_pointers__.p_isl_space_find_dim_by_id) ++#define isl_space_free (*cloog_pointers__.p_isl_space_free) ++#define isl_space_from_domain (*cloog_pointers__.p_isl_space_from_domain) ++#define isl_space_get_tuple_id (*cloog_pointers__.p_isl_space_get_tuple_id) ++#define isl_space_params_alloc (*cloog_pointers__.p_isl_space_params_alloc) ++#define isl_space_range (*cloog_pointers__.p_isl_space_range) ++#define isl_space_set_alloc (*cloog_pointers__.p_isl_space_set_alloc) ++#define isl_space_set_dim_id (*cloog_pointers__.p_isl_space_set_dim_id) ++#define isl_space_set_tuple_id (*cloog_pointers__.p_isl_space_set_tuple_id) ++#define isl_union_map_add_map (*cloog_pointers__.p_isl_union_map_add_map) ++#define isl_union_map_align_params (*cloog_pointers__.p_isl_union_map_align_params) ++#define isl_union_map_apply_domain (*cloog_pointers__.p_isl_union_map_apply_domain) ++#define isl_union_map_apply_range (*cloog_pointers__.p_isl_union_map_apply_range) ++#define isl_union_map_compute_flow (*cloog_pointers__.p_isl_union_map_compute_flow) ++#define isl_union_map_copy (*cloog_pointers__.p_isl_union_map_copy) ++#define isl_union_map_empty (*cloog_pointers__.p_isl_union_map_empty) ++#define isl_union_map_flat_range_product (*cloog_pointers__.p_isl_union_map_flat_range_product) ++#define isl_union_map_foreach_map (*cloog_pointers__.p_isl_union_map_foreach_map) ++#define isl_union_map_free (*cloog_pointers__.p_isl_union_map_free) ++#define isl_union_map_from_map (*cloog_pointers__.p_isl_union_map_from_map) ++#define isl_union_map_get_ctx (*cloog_pointers__.p_isl_union_map_get_ctx) ++#define isl_union_map_get_space (*cloog_pointers__.p_isl_union_map_get_space) ++#define isl_union_map_gist_domain (*cloog_pointers__.p_isl_union_map_gist_domain) ++#define isl_union_map_gist_range (*cloog_pointers__.p_isl_union_map_gist_range) ++#define isl_union_map_intersect_domain (*cloog_pointers__.p_isl_union_map_intersect_domain) ++#define isl_union_map_is_empty (*cloog_pointers__.p_isl_union_map_is_empty) ++#define isl_union_map_subtract (*cloog_pointers__.p_isl_union_map_subtract) ++#define isl_union_map_union (*cloog_pointers__.p_isl_union_map_union) ++#define isl_union_set_add_set (*cloog_pointers__.p_isl_union_set_add_set) ++#define isl_union_set_compute_schedule (*cloog_pointers__.p_isl_union_set_compute_schedule) ++#define isl_union_set_copy (*cloog_pointers__.p_isl_union_set_copy) ++#define isl_union_set_empty (*cloog_pointers__.p_isl_union_set_empty) ++#define isl_union_set_from_set (*cloog_pointers__.p_isl_union_set_from_set) ++#define stmt_ass (*cloog_pointers__.p_stmt_ass) ++#define stmt_block (*cloog_pointers__.p_stmt_block) ++#define stmt_for (*cloog_pointers__.p_stmt_for) ++#define stmt_guard (*cloog_pointers__.p_stmt_guard) ++#define stmt_root (*cloog_pointers__.p_stmt_root) ++#define stmt_user (*cloog_pointers__.p_stmt_user) ++ + typedef struct poly_dr *poly_dr_p; + + typedef struct poly_bb *poly_bb_p; +--- gcc/graphite.c.jj 2012-12-13 11:31:00.000000000 +0100 ++++ gcc/graphite.c 2012-12-14 13:40:44.155136961 +0100 +@@ -78,6 +78,34 @@ along with GCC; see the file COPYING3. + + CloogState *cloog_state; + ++__typeof (cloog_pointers__) cloog_pointers__; ++ ++static bool ++init_cloog_pointers (void) ++{ ++ void *h; ++ ++ if (cloog_pointers__.inited) ++ return cloog_pointers__.h != NULL; ++ h = dlopen ("libcloog-isl.so.4", RTLD_LAZY); ++ cloog_pointers__.h = h; ++ if (h == NULL) ++ return false; ++#define DYNSYM(x) \ ++ do \ ++ { \ ++ union { __typeof (cloog_pointers__.p_##x) p; void *q; } u; \ ++ u.q = dlsym (h, #x); \ ++ if (u.q == NULL) \ ++ return false; \ ++ cloog_pointers__.p_##x = u.p; \ ++ } \ ++ while (0) ++ DYNSYMS ++#undef DYNSYM ++ return true; ++} ++ + /* Print global statistics to FILE. */ + + static void +@@ -277,6 +305,15 @@ graphite_transform_loops (void) + if (parallelized_function_p (cfun->decl)) + return; + ++ if (number_of_loops (cfun) <= 1) ++ return; ++ ++ if (!init_cloog_pointers ()) ++ { ++ sorry ("Graphite loop optimizations cannot be used"); ++ return; ++ } ++ + ctx = isl_ctx_alloc (); + isl_options_set_on_error (ctx, ISL_ON_ERROR_ABORT); + if (!graphite_initialize (ctx)) +--- gcc/graphite-clast-to-gimple.c.jj 2012-12-13 11:31:27.000000000 +0100 ++++ gcc/graphite-clast-to-gimple.c 2012-12-14 13:27:47.196519858 +0100 +@@ -910,7 +910,7 @@ compute_bounds_for_loop (struct clast_fo + from STMT_FOR. */ + + static tree +-type_for_clast_for (struct clast_for *stmt_for, ivs_params_p ip) ++type_for_clast_for (struct clast_for *stmt_fora, ivs_params_p ip) + { + mpz_t bound_one, bound_two; + tree lb_type, ub_type; +@@ -918,8 +918,8 @@ type_for_clast_for (struct clast_for *st + mpz_init (bound_one); + mpz_init (bound_two); + +- lb_type = type_for_clast_expr (stmt_for->LB, ip, bound_one, bound_two); +- ub_type = type_for_clast_expr (stmt_for->UB, ip, bound_one, bound_two); ++ lb_type = type_for_clast_expr (stmt_fora->LB, ip, bound_one, bound_two); ++ ub_type = type_for_clast_expr (stmt_fora->UB, ip, bound_one, bound_two); + + mpz_clear (bound_one); + mpz_clear (bound_two); diff --git a/gcc/patches/gcc49-cloog-dl2.patch0 b/gcc/patches/gcc49-cloog-dl2.patch0 new file mode 100644 index 0000000..2f647a3 --- /dev/null +++ b/gcc/patches/gcc49-cloog-dl2.patch0 @@ -0,0 +1,74 @@ +2011-04-04 Jakub Jelinek jakub@redhat.com + + * toplev.c (toplev_main_argv): New variable. + (toplev_main): Initialize it. + * graphite.c (init_cloog_pointers): Load libcloog-isl.so.4 from gcc's private + directory. + +--- gcc/toplev.c.jj 2008-12-09 23:59:10.000000000 +0100 ++++ gcc/toplev.c 2009-01-27 14:33:52.000000000 +0100 +@@ -107,6 +107,8 @@ static bool no_backend; + /* Length of line when printing switch values. */ + #define MAX_LINE 75 + ++const char **toplev_main_argv; ++ + /* Decoded options, and number of such options. */ + struct cl_decoded_option *save_decoded_options; + unsigned int save_decoded_options_count; +@@ -1909,6 +1911,8 @@ toplev_main (int argc, char **argv) + + expandargv (&argc, &argv); + ++ toplev_main_argv = CONST_CAST2 (const char **, char **, argv); ++ + /* Initialization of GCC's environment, and diagnostics. */ + general_init (argv[0]); + +--- gcc/graphite.c.jj 2010-12-01 10:24:32.000000000 -0500 ++++ gcc/graphite.c 2010-12-01 11:46:07.832118193 -0500 +@@ -72,11 +72,39 @@ __typeof (cloog_pointers__) cloog_pointe + static bool + init_cloog_pointers (void) + { +- void *h; +- +- if (cloog_pointers__.inited) +- return cloog_pointers__.h != NULL; +- h = dlopen ("libcloog-isl.so.4", RTLD_LAZY); ++ void *h = NULL; ++ extern const char **toplev_main_argv; ++ char *buf, *p; ++ size_t len; ++ ++ if (cloog_pointers__.inited) ++ return cloog_pointers__.h != NULL; ++ len = progname - toplev_main_argv[0]; ++ buf = XALLOCAVAR (char, len + sizeof "libcloog-isl.so.4"); ++ memcpy (buf, toplev_main_argv[0], len); ++ strcpy (buf + len, "libcloog-isl.so.4"); ++ len += sizeof "libcloog-isl.so.4"; ++ p = strstr (buf, "/libexec/"); ++ if (p != NULL) ++ { ++ while (1) ++ { ++ char *q = strstr (p + 8, "/libexec/"); ++ if (q == NULL) ++ break; ++ p = q; ++ } ++ memmove (p + 4, p + 8, len - (p + 8 - buf)); ++ h = dlopen (buf, RTLD_LAZY); ++ if (h == NULL) ++ { ++ len = progname - toplev_main_argv[0]; ++ memcpy (buf, toplev_main_argv[0], len); ++ strcpy (buf + len, "libcloog-isl.so.4"); ++ } ++ } ++ if (h == NULL) ++ h = dlopen (buf, RTLD_LAZY); + cloog_pointers__.h = h; + if (h == NULL) + return false; diff --git a/gcc/patches/gcc49-color-auto.patch0 b/gcc/patches/gcc49-color-auto.patch0 new file mode 100644 index 0000000..a8cf938 --- /dev/null +++ b/gcc/patches/gcc49-color-auto.patch0 @@ -0,0 +1,46 @@ +2013-09-20 Jakub Jelinek jakub@redhat.com + + * common.opt (-fdiagnostics-color=): Default to auto. + * toplev.c (process_options): Always default to + -fdiagnostics-color=auto if no -f{,no-}diagnostics-color*. + * doc/invoke.texi (-fdiagnostics-color*): Adjust documentation + of the default. + +--- gcc/common.opt.jj 2013-09-18 12:06:53.000000000 +0200 ++++ gcc/common.opt 2013-09-20 10:00:00.935823900 +0200 +@@ -1037,7 +1037,7 @@ Common Alias(fdiagnostics-color=,always, + ; + + fdiagnostics-color= +-Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO) ++Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_AUTO) + -fdiagnostics-color=[never|always|auto] Colorize diagnostics + + ; Required for these enum values. +--- gcc/toplev.c.jj 2013-09-09 11:32:39.000000000 +0200 ++++ gcc/toplev.c 2013-09-20 10:10:08.198721005 +0200 +@@ -1229,10 +1229,8 @@ process_options (void) + + maximum_field_alignment = initial_max_fld_align * BITS_PER_UNIT; + +- /* Default to -fdiagnostics-color=auto if GCC_COLORS is in the environment, +- otherwise default to -fdiagnostics-color=never. */ +- if (!global_options_set.x_flag_diagnostics_show_color +- && getenv ("GCC_COLORS")) ++ /* Default to -fdiagnostics-color=auto. */ ++ if (!global_options_set.x_flag_diagnostics_show_color) + pp_show_color (global_dc->printer) + = colorize_init (DIAGNOSTICS_COLOR_AUTO); + +--- gcc/doc/invoke.texi.jj 2013-09-18 12:06:50.000000000 +0200 ++++ gcc/doc/invoke.texi 2013-09-20 10:09:29.079904455 +0200 +@@ -3046,8 +3046,7 @@ a message which is too long to fit on a + @cindex highlight, color, colour + @vindex GCC_COLORS @r{environment variable} + Use color in diagnostics. @var{WHEN} is @samp{never}, @samp{always}, +-or @samp{auto}. The default is @samp{never} if @env{GCC_COLORS} environment +-variable isn't present in the environment, and @samp{auto} otherwise. ++or @samp{auto}. The default is @samp{auto}. + @samp{auto} means to use color only when the standard error is a terminal. + The forms @option{-fdiagnostics-color} and @option{-fno-diagnostics-color} are + aliases for @option{-fdiagnostics-color=always} and diff --git a/gcc/patches/gcc49-i386-libgomp.patch0 b/gcc/patches/gcc49-i386-libgomp.patch0 new file mode 100644 index 0000000..45883a6 --- /dev/null +++ b/gcc/patches/gcc49-i386-libgomp.patch0 @@ -0,0 +1,20 @@ +--- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100 ++++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100 +@@ -67,7 +67,7 @@ if test $enable_linux_futex = yes; then + ;; + *) + if test -z "$with_arch"; then +- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" ++ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic" + fi + esac + ;; +@@ -79,7 +79,7 @@ if test $enable_linux_futex = yes; then + config_path="linux/x86 linux posix" + case " ${CC} ${CFLAGS} " in + *" -m32 "*) +- XCFLAGS="${XCFLAGS} -march=i486 -mtune=i686" ++ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic" + ;; + esac + ;; diff --git a/gcc/patches/gcc49-libstdc++-docs.patch0 b/gcc/patches/gcc49-libstdc++-docs.patch0 new file mode 100644 index 0000000..2c8c2b8 --- /dev/null +++ b/gcc/patches/gcc49-libstdc++-docs.patch0 @@ -0,0 +1,26 @@ +--- libstdc++-v3/doc/html/index.html.jj 2011-01-03 12:53:21.282829010 +0100 ++++ libstdc++-v3/doc/html/index.html 2011-01-04 18:06:28.999851145 +0100 +@@ -5,6 +5,8 @@ + <a class="link" href="http://www.fsf.org/" target="_top">FSF + </a> + </p><p> ++ Release 4.9.1 ++ </p><p> + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation + License, Version 1.2 or any later version published by the +--- libstdc++-v3/doc/html/api.html.jj 2011-01-03 12:53:21.000000000 +0100 ++++ libstdc++-v3/doc/html/api.html 2011-01-04 18:12:01.672757784 +0100 +@@ -18,8 +18,11 @@ + member functions for the library classes, finding out what is in a + particular include file, looking at inheritance diagrams, etc. + </p><p> +- The API documentation, rendered into HTML, can be viewed online: ++ The API documentation, rendered into HTML, can be viewed here: + </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> ++ <a class="link" href="api/index.html" target="_top">for the 4.9.1 release, local ++ </a> ++ </p></li><li class="listitem"><p> + <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html" target="_top">for the 3.4 release + </a> + </p></li><li class="listitem"><p> diff --git a/gcc/patches/gcc49-libtool-no-rpath.patch0 b/gcc/patches/gcc49-libtool-no-rpath.patch0 new file mode 100644 index 0000000..466c661 --- /dev/null +++ b/gcc/patches/gcc49-libtool-no-rpath.patch0 @@ -0,0 +1,27 @@ +libtool sucks. +--- ltmain.sh.jj 2007-12-07 14:53:21.000000000 +0100 ++++ ltmain.sh 2008-09-05 21:51:48.000000000 +0200 +@@ -5394,6 +5394,7 @@ EOF + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then +@@ -6071,6 +6072,7 @@ EOF + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then +@@ -6120,6 +6122,7 @@ EOF + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then diff --git a/gcc/patches/gcc49-no-add-needed.patch0 b/gcc/patches/gcc49-no-add-needed.patch0 new file mode 100644 index 0000000..b6ca777 --- /dev/null +++ b/gcc/patches/gcc49-no-add-needed.patch0 @@ -0,0 +1,50 @@ +2010-02-08 Roland McGrath roland@redhat.com + + * config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the + linker. + * config/gnu-user.h (LINK_EH_SPEC): Likewise. + * config/alpha/elf.h (LINK_EH_SPEC): Likewise. + * config/ia64/linux.h (LINK_EH_SPEC): Likewise. + +--- gcc/config/alpha/elf.h.jj 2011-01-03 12:52:31.118056764 +0100 ++++ gcc/config/alpha/elf.h 2011-01-04 18:14:10.931874160 +0100 +@@ -165,5 +165,5 @@ extern int alpha_this_gpdisp_sequence_nu + I imagine that other systems will catch up. In the meantime, it + doesn't harm to make sure that the data exists to be used later. */ + #if defined(HAVE_LD_EH_FRAME_HDR) +-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " ++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} " + #endif +--- gcc/config/ia64/linux.h.jj 2011-01-03 13:02:11.462994522 +0100 ++++ gcc/config/ia64/linux.h 2011-01-04 18:14:10.931874160 +0100 +@@ -77,7 +77,7 @@ do { \ + Signalize that because we have fde-glibc, we don't need all C shared libs + linked against -lgcc_s. */ + #undef LINK_EH_SPEC +-#define LINK_EH_SPEC "" ++#define LINK_EH_SPEC "--no-add-needed " + + /* Put all *tf routines in libgcc. */ + #undef LIBGCC2_HAS_TF_MODE +--- gcc/config/gnu-user.h.jj 2011-01-03 12:53:03.739057299 +0100 ++++ gcc/config/gnu-user.h 2011-01-04 18:14:10.932814884 +0100 +@@ -82,7 +82,7 @@ see the files COPYING3 and COPYING.RUNTI + #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC + + #if defined(HAVE_LD_EH_FRAME_HDR) +-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " ++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} " + #endif + + #undef LINK_GCC_C_SEQUENCE_SPEC +--- gcc/config/rs6000/sysv4.h.jj 2011-01-03 13:02:18.255994215 +0100 ++++ gcc/config/rs6000/sysv4.h 2011-01-04 18:14:10.933888871 +0100 +@@ -820,7 +820,7 @@ extern int fixuplabelno; + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" + + #if defined(HAVE_LD_EH_FRAME_HDR) +-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " ++# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} " + #endif + + #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \ diff --git a/gcc/patches/gcc49-pr38757.patch0 b/gcc/patches/gcc49-pr38757.patch0 new file mode 100644 index 0000000..4206584 --- /dev/null +++ b/gcc/patches/gcc49-pr38757.patch0 @@ -0,0 +1,106 @@ +2009-03-18 Jakub Jelinek jakub@redhat.com + + PR debug/38757 + * langhooks.h (struct lang_hooks): Add source_language langhook. + * langhooks-def.h (LANG_HOOKS_SOURCE_LANGUAGE): Define to NULL. + (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_SOURCE_LANGUAGE. + * dwarf2out.c (add_prototyped_attribute): Add DW_AT_prototype + also for DW_LANG_{C,C99,ObjC}. + (gen_compile_unit_die): Use lang_hooks.source_language () to + determine if DW_LANG_C99 or DW_LANG_C89 should be returned. +c/ + * c-lang.c (c_source_language): New function. + (LANG_HOOKS_SOURCE_LANGUAGE): Define. + +--- gcc/langhooks.h.jj 2011-01-03 12:53:05.125745450 +0100 ++++ gcc/langhooks.h 2011-01-04 17:59:43.166744926 +0100 +@@ -467,6 +467,10 @@ struct lang_hooks + gimplification. */ + bool deep_unsharing; + ++ /* Return year of the source language standard version if the FE supports ++ multiple versions of the standard. */ ++ int (*source_language) (void); ++ + /* Whenever you add entries here, make sure you adjust langhooks-def.h + and langhooks.c accordingly. */ + }; +--- gcc/langhooks-def.h.jj 2011-01-03 12:53:05.000000000 +0100 ++++ gcc/langhooks-def.h 2011-01-04 18:00:44.858851030 +0100 +@@ -118,6 +118,7 @@ extern void lhd_omp_firstprivatize_type_ + #define LANG_HOOKS_BLOCK_MAY_FALLTHRU hook_bool_const_tree_true + #define LANG_HOOKS_EH_USE_CXA_END_CLEANUP false + #define LANG_HOOKS_DEEP_UNSHARING false ++#define LANG_HOOKS_SOURCE_LANGUAGE NULL + + /* Attribute hooks. */ + #define LANG_HOOKS_ATTRIBUTE_TABLE NULL +@@ -303,7 +304,8 @@ extern void lhd_end_section (void); + LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS, \ + LANG_HOOKS_BLOCK_MAY_FALLTHRU, \ + LANG_HOOKS_EH_USE_CXA_END_CLEANUP, \ +- LANG_HOOKS_DEEP_UNSHARING \ ++ LANG_HOOKS_DEEP_UNSHARING, \ ++ LANG_HOOKS_SOURCE_LANGUAGE \ + } + + #endif /* GCC_LANG_HOOKS_DEF_H */ +--- gcc/c/c-lang.c.jj 2011-01-03 12:53:05.376056936 +0100 ++++ gcc/c/c-lang.c 2011-01-04 17:59:43.167743798 +0100 +@@ -36,6 +36,12 @@ along with GCC; see the file COPYING3. + + enum c_language_kind c_language = clk_c; + ++static int ++c_source_language (void) ++{ ++ return flag_isoc99 ? 1999 : 1989; ++} ++ + /* Lang hooks common to C and ObjC are declared in c-objc-common.h; + consequently, there should be very few hooks below. */ + +@@ -45,6 +51,8 @@ enum c_language_kind c_language = clk_c; + #define LANG_HOOKS_INIT c_objc_common_init + #undef LANG_HOOKS_INIT_TS + #define LANG_HOOKS_INIT_TS c_common_init_ts ++#undef LANG_HOOKS_SOURCE_LANGUAGE ++#define LANG_HOOKS_SOURCE_LANGUAGE c_source_language + + /* Each front end provides its own lang hook initializer. */ + struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; +--- gcc/dwarf2out.c.jj 2011-01-03 12:53:05.102056475 +0100 ++++ gcc/dwarf2out.c 2011-01-04 18:03:14.534151763 +0100 +@@ -16109,9 +16109,18 @@ add_bit_size_attribute (dw_die_ref die, + static inline void + add_prototyped_attribute (dw_die_ref die, tree func_type) + { +- if (get_AT_unsigned (comp_unit_die (), DW_AT_language) == DW_LANG_C89 +- && prototype_p (func_type)) +- add_AT_flag (die, DW_AT_prototyped, 1); ++ switch (get_AT_unsigned (comp_unit_die (), DW_AT_language)) ++ { ++ case DW_LANG_C: ++ case DW_LANG_C89: ++ case DW_LANG_C99: ++ case DW_LANG_ObjC: ++ if (prototype_p (func_type)) ++ add_AT_flag (die, DW_AT_prototyped, 1); ++ break; ++ default: ++ break; ++ } + } + + /* Add an 'abstract_origin' attribute below a given DIE. The DIE is found +@@ -18915,6 +18924,10 @@ gen_compile_unit_die (const char *filena + if (strcmp (language_string, "GNU Go") == 0) + language = DW_LANG_Go; + } ++ else if (strcmp (language_string, "GNU C") == 0 ++ && lang_hooks.source_language ++ && lang_hooks.source_language () >= 1999) ++ language = DW_LANG_C99; + } + /* Use a degraded Fortran setting in strict DWARF2 so is_fortran works. */ + else if (strcmp (language_string, "GNU Fortran") == 0) diff --git a/gcc/patches/gcc49-pr56493.patch0 b/gcc/patches/gcc49-pr56493.patch0 new file mode 100644 index 0000000..87603db --- /dev/null +++ b/gcc/patches/gcc49-pr56493.patch0 @@ -0,0 +1,76 @@ +2013-06-17 Jakub Jelinek jakub@redhat.com + + PR c++/56493 + * convert.c (convert_to_real, convert_to_expr, convert_to_complex): + Handle COMPOUND_EXPR. + + * c-c++-common/pr56493.c: New test. + +--- gcc/convert.c.jj 2013-05-13 09:44:53.000000000 +0200 ++++ gcc/convert.c 2013-06-16 12:16:13.754108523 +0200 +@@ -95,6 +95,15 @@ convert_to_real (tree type, tree expr) + enum built_in_function fcode = builtin_mathfn_code (expr); + tree itype = TREE_TYPE (expr); + ++ if (TREE_CODE (expr) == COMPOUND_EXPR) ++ { ++ tree t = convert_to_real (type, TREE_OPERAND (expr, 1)); ++ if (t == TREE_OPERAND (expr, 1)) ++ return expr; ++ return build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR, TREE_TYPE (t), ++ TREE_OPERAND (expr, 0), t); ++ } ++ + /* Disable until we figure out how to decide whether the functions are + present in runtime. */ + /* Convert (float)sqrt((double)x) where x is float into sqrtf(x) */ +@@ -366,6 +375,15 @@ convert_to_integer (tree type, tree expr + return error_mark_node; + } + ++ if (ex_form == COMPOUND_EXPR) ++ { ++ tree t = convert_to_integer (type, TREE_OPERAND (expr, 1)); ++ if (t == TREE_OPERAND (expr, 1)) ++ return expr; ++ return build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR, TREE_TYPE (t), ++ TREE_OPERAND (expr, 0), t); ++ } ++ + /* Convert e.g. (long)round(d) -> lround(d). */ + /* If we're converting to char, we may encounter differing behavior + between converting from double->char vs double->long->char. +@@ -854,6 +872,14 @@ convert_to_complex (tree type, tree expr + + if (TYPE_MAIN_VARIANT (elt_type) == TYPE_MAIN_VARIANT (subtype)) + return expr; ++ else if (TREE_CODE (expr) == COMPOUND_EXPR) ++ { ++ tree t = convert_to_complex (type, TREE_OPERAND (expr, 1)); ++ if (t == TREE_OPERAND (expr, 1)) ++ return expr; ++ return build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR, ++ TREE_TYPE (t), TREE_OPERAND (expr, 0), t); ++ } + else if (TREE_CODE (expr) == COMPLEX_EXPR) + return fold_build2 (COMPLEX_EXPR, type, + convert (subtype, TREE_OPERAND (expr, 0)), +--- gcc/testsuite/c-c++-common/pr56493.c.jj 2013-06-17 10:24:36.891659600 +0200 ++++ gcc/testsuite/c-c++-common/pr56493.c 2013-06-17 10:24:33.164720149 +0200 +@@ -0,0 +1,16 @@ ++/* PR c++/56493 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fdump-tree-gimple" } */ ++ ++unsigned long long bar (void); ++int x; ++ ++void ++foo (void) ++{ ++ x += bar (); ++} ++ ++/* Verify we narrow the addition from unsigned long long to unsigned int type. */ ++/* { dg-final { scan-tree-dump " ([a-zA-Z._0-9]*) = \(unsigned int\) [^;\n\r]*;.* ([a-zA-Z._0-9]*) = \(unsigned int\) [^;\n\r]*;.* = \1 \+ \2;" "gimple" { target { ilp32 || lp64 } } } } */ ++/* { dg-final { cleanup-tree-dump "gimple" } } */ diff --git a/kernel/config-generic b/kernel/config-generic index 167d038..fc91921 100644 --- a/kernel/config-generic +++ b/kernel/config-generic @@ -182,8 +182,8 @@ CONFIG_SECCOMP_FILTER=y CONFIG_HAVE_CC_STACKPROTECTOR=y CONFIG_CC_STACKPROTECTOR=y # CONFIG_CC_STACKPROTECTOR_NONE is not set -CONFIG_CC_STACKPROTECTOR_REGULAR=y -# CONFIG_CC_STACKPROTECTOR_STRONG is not set +# CONFIG_CC_STACKPROTECTOR_REGULAR is not set +CONFIG_CC_STACKPROTECTOR_STRONG=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y CONFIG_OLD_SIGSUSPEND3=y
diff --git a/kernel/kernel.nm b/kernel/kernel.nm index d77786f..38430ba 100644 --- a/kernel/kernel.nm +++ b/kernel/kernel.nm @@ -5,7 +5,7 @@
name = kernel version = 3.16.2 -release = 1 +release = 2 thisapp = linux-%{version}
maintainer = Arne Fitzenreiter arne.fitzenreiter@ipfire.org @@ -45,6 +45,7 @@ build bison elfutils-devel flex + gcc >= 4.9 gcc-plugin-devel gettext libunwind-devel diff --git a/libusb/libusb.nm b/libusb/libusb.nm index 8c9129d..12ab65f 100644 --- a/libusb/libusb.nm +++ b/libusb/libusb.nm @@ -4,7 +4,7 @@ ###############################################################################
name = libusb -version = 1.0.18 +version = 1.0.19 release = 1
groups = System/Libraries diff --git a/pakfire/pakfire.nm b/pakfire/pakfire.nm index 3fb99bf..45a1c25 100644 --- a/pakfire/pakfire.nm +++ b/pakfire/pakfire.nm @@ -5,7 +5,7 @@
name = pakfire version = 0.9.26 -release = 2 +release = 3
maintainer = Michael Tremer michael.tremer@ipfire.org groups = System/Packaging @@ -104,6 +104,9 @@ packages systemd-devel < 38 end
+ # Requires GCC 4.9 or later for -fstack-protector-strong + conflicts += gcc < 4.9 + configfiles %{sysconfdir}/pakfire/builder.conf %{sysconfdir}/pakfire/distros diff --git a/pakfire/patches/0001-CFLAGS-Enable-more-hardening.patch b/pakfire/patches/0001-CFLAGS-Enable-more-hardening.patch new file mode 100644 index 0000000..bab8cb5 --- /dev/null +++ b/pakfire/patches/0001-CFLAGS-Enable-more-hardening.patch @@ -0,0 +1,26 @@ +commit 664591620ddc73ac6838c6ed152c2b3c4233d609 +Author: Michael Tremer michael.tremer@ipfire.org +Date: Tue Sep 16 15:49:25 2014 +0200 + + CFLAGS: Enable more hardening + + -fstack-protector-strong is available since GCC 4.9 + + -D_FORTIFY_SOURCE=2 is automatically enabled in IPFire since + GCC 4.9 and when optimization is enabled (e.g. -O2). + +diff --git a/macros/cflags.macro b/macros/cflags.macro +index a2c583c..52a069a 100644 +--- a/macros/cflags.macro ++++ b/macros/cflags.macro +@@ -1,7 +1,8 @@ + + # Export CFLAGS + CXXFLAGS +-GLOBAL_CFLAGS = -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fPIC +-GLOBAL_CFLAGS += -fstack-protector-all --param=ssp-buffer-size=4 ++GLOBAL_CFLAGS = -O2 -g -pipe -Wall -Werror=format-security ++GLOBAL_CFLAGS += -fexceptions -fPIC -fstack-protector-strong --param=ssp-buffer-size=4 ++GLOBAL_CFLAGS += -grecord-gcc-switches + + CFLAGS_i686 = -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables + CFLAGS_x86_64 = -m64 -mtune=generic
hooks/post-receive -- IPFire 3.x development tree