Skip to content

Commit

Permalink
Merge branch 'staging'
Browse files Browse the repository at this point in the history
Main change: glibc: 2.25-x -> 2.26-y, containing security fixes,
and various features and deprecations.  Unfortunately, some of the
latter still cause (transitively) a couple hundred newly failing jobs.
I'm not delaying anymore, so that we have the security fix on master.
I mainly patched gcc, llvm and icu, but I can't fix everything...
  • Loading branch information
vcunat committed Nov 7, 2017
2 parents 4db6d35 + f04b64c commit 6ffafc7
Show file tree
Hide file tree
Showing 61 changed files with 1,082 additions and 364 deletions.
2 changes: 1 addition & 1 deletion pkgs/build-support/cc-wrapper/cc-wrapper.sh
@@ -1,5 +1,5 @@
#! @shell@
set -eu -o pipefail
set -eu -o pipefail +o posix
shopt -s nullglob

if (( "${NIX_DEBUG:-0}" >= 7 )); then
Expand Down
2 changes: 1 addition & 1 deletion pkgs/build-support/cc-wrapper/default.nix
Expand Up @@ -286,7 +286,7 @@ stdenv.mkDerivation {
*) echo "Multiple dynamic linkers found for platform '${targetPlatform.config}'." >&2;;
esac
if [ -n "$dynamicLinker" ]; then
if [ -n "''${dynamicLinker:-}" ]; then
echo $dynamicLinker > $out/nix-support/dynamic-linker
'' + (if targetPlatform.isDarwin then ''
Expand Down
2 changes: 1 addition & 1 deletion pkgs/build-support/cc-wrapper/gnat-wrapper.sh
@@ -1,5 +1,5 @@
#! @shell@
set -eu -o pipefail
set -eu -o pipefail +o posix
shopt -s nullglob

if (( "${NIX_DEBUG:-0}" >= 7 )); then
Expand Down
2 changes: 1 addition & 1 deletion pkgs/build-support/cc-wrapper/gnatlink-wrapper.sh
@@ -1,5 +1,5 @@
#! @shell@
set -eu -o pipefail
set -eu -o pipefail +o posix
shopt -s nullglob

if (( "${NIX_DEBUG:-0}" >= 7 )); then
Expand Down
2 changes: 1 addition & 1 deletion pkgs/build-support/cc-wrapper/ld-wrapper.sh
@@ -1,5 +1,5 @@
#! @shell@
set -eu -o pipefail
set -eu -o pipefail +o posix
shopt -s nullglob

if (( "${NIX_DEBUG:-0}" >= 7 )); then
Expand Down
4 changes: 2 additions & 2 deletions pkgs/data/misc/dns-root-data/default.nix
Expand Up @@ -4,7 +4,7 @@ let

rootHints = fetchurl {
url = "https://www.internic.net/domain/named.root";
sha256 = "01n4bqf95kbvig1hahqzmmdkpn4v7mzfc1p944gq922i5j3fjr92";
sha256 = "0vdrff4l8s8grif52dnh091s8qydhh88k25zqd9rj66sf1qwcwxl";
};

rootKey = ./root.key;
Expand All @@ -13,7 +13,7 @@ let
in

stdenv.mkDerivation {
name = "dns-root-data-2017-08-29";
name = "dns-root-data-2017-10-24";

buildCommand = ''
mkdir $out
Expand Down
6 changes: 3 additions & 3 deletions pkgs/desktops/gnome-3/misc/gitg/src.nix
@@ -1,10 +1,10 @@
# Autogenerated by maintainers/scripts/gnome.sh update

fetchurl: {
name = "gitg-3.24.0";
name = "gitg-3.26.0";

src = fetchurl {
url = mirror://gnome/sources/gitg/3.24/gitg-3.24.0.tar.xz;
sha256 = "3e4ec4a8ae83bc7ced8c7610927ade70e37daa5e8beeb4f357a6ea30b4cc951e";
url = mirror://gnome/sources/gitg/3.26/gitg-3.26.0.tar.xz;
sha256 = "26730d437d6a30d6e341b9e8da99d2134dce4b96022c195609f45062f82b54d5";
};
}
10 changes: 6 additions & 4 deletions pkgs/desktops/gnome-3/misc/libgit2-glib/default.nix
@@ -1,12 +1,14 @@
{ stdenv, fetchurl, gnome3, libtool, pkgconfig, vala_0_32, libssh2
{ stdenv, fetchurl, gnome3, libtool, pkgconfig, vala, libssh2
, gtk_doc, gobjectIntrospection, libgit2, glib }:

stdenv.mkDerivation rec {
inherit (import ./src.nix fetchurl) name src;

nativeBuildInputs = [ pkgconfig ];
buildInputs = [ gnome3.gnome_common libtool vala_0_32 libssh2
gtk_doc gobjectIntrospection libgit2 glib ];
nativeBuildInputs = [
gnome3.gnome_common libtool pkgconfig vala gtk_doc gobjectIntrospection
];

buildInputs = [ libssh2 libgit2 glib ];

meta = with stdenv.lib; {
platforms = platforms.linux;
Expand Down
10 changes: 4 additions & 6 deletions pkgs/desktops/gnome-3/misc/libgit2-glib/src.nix
@@ -1,12 +1,10 @@
# Autogenerated by maintainers/scripts/gnome.sh update

fetchurl: rec {
major = "0.25";
minor = "0";
name = "libgit2-glib-${major}.${minor}";
fetchurl: {
name = "libgit2-glib-0.26.0";

src = fetchurl {
url = "mirror://gnome/sources/libgit2-glib/${major}/${name}.tar.xz";
sha256 = "0rf5gcr3khp35wj9ax9cbyq5j3iiwa1l0fi16w6sfgmrryd6n9aa";
url = mirror://gnome/sources/libgit2-glib/0.26/libgit2-glib-0.26.0.tar.xz;
sha256 = "06b16cfcc3a53d9804858618d690e5509e9af2e2245b75f0479cadbbe39745c3";
};
}
1 change: 1 addition & 0 deletions pkgs/development/compilers/gcc/4.5/default.nix
Expand Up @@ -153,6 +153,7 @@ stdenv.mkDerivation ({
# target libraries and tools.
++ optional langAda ../gnat-cflags.patch
++ optional langVhdl ./ghdl-ortho-cflags.patch
++ [ ../struct-ucontext-4.5.patch ] # glibc-2.26
;

postPatch =
Expand Down
6 changes: 5 additions & 1 deletion pkgs/development/compilers/gcc/4.8/default.nix
Expand Up @@ -78,7 +78,11 @@ let version = "4.8.5";
sha256 = "01jd7pdarh54ki498g6sz64ijl9a1l5f9v8q2696aaxalvh2vwzl";
excludes = [ "gcc/cp/ChangeLog" ];
})]
;
++ [ # glibc-2.26
../struct-ucontext-4.8.patch
../sigsegv-not-declared.patch
../res_state-not-declared.patch
];

javaEcj = fetchurl {
# The `$(top_srcdir)/ecj.jar' file is automatically picked up at
Expand Down
1 change: 1 addition & 0 deletions pkgs/development/compilers/gcc/4.9/default.nix
Expand Up @@ -72,6 +72,7 @@ let version = "4.9.4";
# target libraries and tools.
++ optional langAda ../gnat-cflags.patch
++ optional langFortran ../gfortran-driving.patch
++ [ ../struct-ucontext.patch ../struct-sigaltstack-4.9.patch ] # glibc-2.26
;

javaEcj = fetchurl {
Expand Down
4 changes: 3 additions & 1 deletion pkgs/development/compilers/gcc/6/default.nix
Expand Up @@ -72,7 +72,9 @@ let version = "6.4.0";
# The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its
# target libraries and tools.
++ optional langAda ../gnat-cflags.patch
++ optional langFortran ../gfortran-driving.patch;
++ optional langFortran ../gfortran-driving.patch
++ [ ../struct-ucontext.patch ../struct-sigaltstack.patch ] # glibc-2.26
;

javaEcj = fetchurl {
# The `$(top_srcdir)/ecj.jar' file is automatically picked up at
Expand Down
13 changes: 13 additions & 0 deletions pkgs/development/compilers/gcc/res_state-not-declared.patch
@@ -0,0 +1,13 @@
diff --git a/libsanitizer/tsan/tsan_platform_linux.cc b/libsanitizer/tsan/tsan_platform_linux.cc
index fe69430..49f5270 100644
--- a/libsanitizer/tsan/tsan_platform_linux.cc
+++ b/libsanitizer/tsan/tsan_platform_linux.cc
@@ -351,7 +351,7 @@ bool IsGlobalVar(uptr addr) {
// closes within glibc. The code is a pure hack.
int ExtractResolvFDs(void *state, int *fds, int nfd) {
int cnt = 0;
- __res_state *statp = (__res_state*)state;
+ struct __res_state *statp = (struct __res_state*)state;
for (int i = 0; i < MAXNS && cnt < nfd; i++) {
if (statp->_u._ext.nsaddrs[i] && statp->_u._ext.nssocks[i] != -1)
fds[cnt++] = statp->_u._ext.nssocks[i];
13 changes: 13 additions & 0 deletions pkgs/development/compilers/gcc/sigsegv-not-declared.patch
@@ -0,0 +1,13 @@
error: 'SIGSEGV' was not declared in this scope
diff --git a/libsanitizer/asan/asan_linux.cc b/libsanitizer/asan/asan_linux.cc
index 0692eb1..472f734 100644
--- a/libsanitizer/asan/asan_linux.cc
+++ b/libsanitizer/asan/asan_linux.cc
@@ -26,6 +26,7 @@
#include <sys/types.h>
#include <fcntl.h>
#include <pthread.h>
+#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <unwind.h>
78 changes: 78 additions & 0 deletions pkgs/development/compilers/gcc/struct-sigaltstack-4.9.patch
@@ -0,0 +1,78 @@
hand-resolved trivial conflicts for 4.9 from the upstream patch
72edc2c02f8b4768ad660f46a1c7e2400c0a8e06
diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.cc b/libsanitizer/sanitizer_common/sanitizer_linux.cc
index 69c9c10..8e53673 100644
--- a/libsanitizer/sanitizer_common/sanitizer_linux.cc
+++ b/libsanitizer/sanitizer_common/sanitizer_linux.cc
@@ -599,8 +599,7 @@ uptr internal_prctl(int option, uptr arg2, uptr arg3, uptr arg4, uptr arg5) {
return internal_syscall(__NR_prctl, option, arg2, arg3, arg4, arg5);
}

-uptr internal_sigaltstack(const struct sigaltstack *ss,
- struct sigaltstack *oss) {
+uptr internal_sigaltstack(const void *ss, void *oss) {
return internal_syscall(__NR_sigaltstack, (uptr)ss, (uptr)oss);
}

diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.h b/libsanitizer/sanitizer_common/sanitizer_linux.h
index 6422df1..8e111d1 100644
--- a/libsanitizer/sanitizer_common/sanitizer_linux.h
+++ b/libsanitizer/sanitizer_common/sanitizer_linux.h
@@ -18,7 +18,6 @@
#include "sanitizer_platform_limits_posix.h"

struct link_map; // Opaque type returned by dlopen().
-struct sigaltstack;

namespace __sanitizer {
// Dirent structure for getdents(). Note that this structure is different from
@@ -28,8 +27,7 @@ struct linux_dirent;
// Syscall wrappers.
uptr internal_getdents(fd_t fd, struct linux_dirent *dirp, unsigned int count);
uptr internal_prctl(int option, uptr arg2, uptr arg3, uptr arg4, uptr arg5);
-uptr internal_sigaltstack(const struct sigaltstack* ss,
- struct sigaltstack* oss);
+uptr internal_sigaltstack(const void* ss, void* oss);
uptr internal_sigaction(int signum, const __sanitizer_kernel_sigaction_t *act,
__sanitizer_kernel_sigaction_t *oldact);
uptr internal_sigprocmask(int how, __sanitizer_kernel_sigset_t *set,
diff --git a/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc b/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
index 891386dc..234e8c6 100644
--- a/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
+++ b/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
@@ -273,7 +273,7 @@ static int TracerThread(void* argument) {

// Alternate stack for signal handling.
InternalScopedBuffer<char> handler_stack_memory(kHandlerStackSize);
- struct sigaltstack handler_stack;
+ stack_t handler_stack;
internal_memset(&handler_stack, 0, sizeof(handler_stack));
handler_stack.ss_sp = handler_stack_memory.data();
handler_stack.ss_size = kHandlerStackSize;
diff --git a/libsanitizer/tsan/tsan_platform_linux.cc b/libsanitizer/tsan/tsan_platform_linux.cc
index 2ed5718..6f972ab 100644
--- a/libsanitizer/tsan/tsan_platform_linux.cc
+++ b/libsanitizer/tsan/tsan_platform_linux.cc
@@ -287,7 +287,7 @@ void InitializePlatform() {
int ExtractResolvFDs(void *state, int *fds, int nfd) {
#if SANITIZER_LINUX && !SANITIZER_ANDROID
int cnt = 0;
- __res_state *statp = (__res_state*)state;
+ struct __res_state *statp = (struct __res_state*)state;
for (int i = 0; i < MAXNS && cnt < nfd; i++) {
if (statp->_u._ext.nsaddrs[i] && statp->_u._ext.nssocks[i] != -1)
fds[cnt++] = statp->_u._ext.nssocks[i];

error: 'SIGSEGV' was not declared in this scope
diff --git a/libsanitizer/asan/asan_linux.cc b/libsanitizer/asan/asan_linux.cc
index 0692eb1..472f734 100644
--- a/libsanitizer/asan/asan_linux.cc
+++ b/libsanitizer/asan/asan_linux.cc
@@ -26,6 +26,7 @@
#include <sys/types.h>
#include <fcntl.h>
#include <pthread.h>
+#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <unwind.h>
87 changes: 87 additions & 0 deletions pkgs/development/compilers/gcc/struct-sigaltstack.patch
@@ -0,0 +1,87 @@
From 72edc2c02f8b4768ad660f46a1c7e2400c0a8e06 Mon Sep 17 00:00:00 2001
From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Mon, 17 Jul 2017 19:41:08 +0000
Subject: [PATCH] Backported from mainline 2017-07-14 Jakub
Jelinek <jakub@redhat.com>

PR sanitizer/81066
* sanitizer_common/sanitizer_linux.h: Cherry-pick upstream r307969.
* sanitizer_common/sanitizer_linux.cc: Likewise.
* sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc: Likewise.
* tsan/tsan_platform_linux.cc: Likewise.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@250287 138bc75d-0d04-0410-961f-82ee72b054a4
---
libsanitizer/ChangeLog (REMOVED) | 11 +++++++++++
libsanitizer/sanitizer_common/sanitizer_linux.cc | 3 +--
libsanitizer/sanitizer_common/sanitizer_linux.h | 4 +---
.../sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc | 2 +-
libsanitizer/tsan/tsan_platform_linux.cc | 2 +-
5 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.cc b/libsanitizer/sanitizer_common/sanitizer_linux.cc
index 806fcd5..5b6f186 100644
--- a/libsanitizer/sanitizer_common/sanitizer_linux.cc
+++ b/libsanitizer/sanitizer_common/sanitizer_linux.cc
@@ -605,8 +605,7 @@ uptr internal_prctl(int option, uptr arg2, uptr arg3, uptr arg4, uptr arg5) {
}
#endif

-uptr internal_sigaltstack(const struct sigaltstack *ss,
- struct sigaltstack *oss) {
+uptr internal_sigaltstack(const void *ss, void *oss) {
return internal_syscall(SYSCALL(sigaltstack), (uptr)ss, (uptr)oss);
}

diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.h b/libsanitizer/sanitizer_common/sanitizer_linux.h
index 895bfc1..a42df57 100644
--- a/libsanitizer/sanitizer_common/sanitizer_linux.h
+++ b/libsanitizer/sanitizer_common/sanitizer_linux.h
@@ -19,7 +19,6 @@
#include "sanitizer_platform_limits_posix.h"

struct link_map; // Opaque type returned by dlopen().
-struct sigaltstack;

namespace __sanitizer {
// Dirent structure for getdents(). Note that this structure is different from
@@ -28,8 +27,7 @@ struct linux_dirent;

// Syscall wrappers.
uptr internal_getdents(fd_t fd, struct linux_dirent *dirp, unsigned int count);
-uptr internal_sigaltstack(const struct sigaltstack* ss,
- struct sigaltstack* oss);
+uptr internal_sigaltstack(const void* ss, void* oss);
uptr internal_sigprocmask(int how, __sanitizer_sigset_t *set,
__sanitizer_sigset_t *oldset);

diff --git a/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc b/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
index 891386dc..234e8c6 100644
--- a/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
+++ b/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
@@ -273,7 +273,7 @@ static int TracerThread(void* argument) {

// Alternate stack for signal handling.
InternalScopedBuffer<char> handler_stack_memory(kHandlerStackSize);
- struct sigaltstack handler_stack;
+ stack_t handler_stack;
internal_memset(&handler_stack, 0, sizeof(handler_stack));
handler_stack.ss_sp = handler_stack_memory.data();
handler_stack.ss_size = kHandlerStackSize;
diff --git a/libsanitizer/tsan/tsan_platform_linux.cc b/libsanitizer/tsan/tsan_platform_linux.cc
index 2ed5718..6f972ab 100644
--- a/libsanitizer/tsan/tsan_platform_linux.cc
+++ b/libsanitizer/tsan/tsan_platform_linux.cc
@@ -287,7 +287,7 @@ void InitializePlatform() {
int ExtractResolvFDs(void *state, int *fds, int nfd) {
#if SANITIZER_LINUX && !SANITIZER_ANDROID
int cnt = 0;
- __res_state *statp = (__res_state*)state;
+ struct __res_state *statp = (struct __res_state*)state;
for (int i = 0; i < MAXNS && cnt < nfd; i++) {
if (statp->_u._ext.nsaddrs[i] && statp->_u._ext.nssocks[i] != -1)
fds[cnt++] = statp->_u._ext.nssocks[i];
--
2.9.3

0 comments on commit 6ffafc7

Please sign in to comment.