diff --git a/pkgs/development/compilers/gcc-4.5/default.nix b/pkgs/development/compilers/gcc-4.5/default.nix index abe6186ef96..2e840e90fbe 100644 --- a/pkgs/development/compilers/gcc-4.5/default.nix +++ b/pkgs/development/compilers/gcc-4.5/default.nix @@ -137,7 +137,7 @@ stdenv.mkDerivation ({ }; patches = - [ ] + [ ./pr45894.patch ] ++ optional (cross != null) ./libstdc++-target.patch ++ optional noSysDirs ./no-sys-dirs.patch # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its diff --git a/pkgs/development/compilers/gcc-4.5/pr45894.patch b/pkgs/development/compilers/gcc-4.5/pr45894.patch new file mode 100644 index 00000000000..b6263faffc1 --- /dev/null +++ b/pkgs/development/compilers/gcc-4.5/pr45894.patch @@ -0,0 +1,23 @@ +See for details. + +Without this, compilation of GCC itself fails: + + ./../../../gcc-4.5.2/libstdc++-v3/src/pool_allocator.cc -fPIC -DPIC -o .libs/pool_allocator.o + In file included from ../../../../gcc-4.5.2/libstdc++-v3/src/pool_allocator.cc:31:0: + /tmp/nix-build-7d6ii7c1hqf0vzhxklbmnpbmzhq7glgr-gcc-4.5.2.drv-0/build/i686-pc-linux-gnu/libstdc++-v3/include/ext/pool_allocator.h: In constructor '__gnu_cxx::__pool_alloc<_Tp>::__pool_alloc() [with _Tp = char]': + ../../../../gcc-4.5.2/libstdc++-v3/src/pool_allocator.cc:171:18: instantiated from here + /tmp/nix-build-7d6ii7c1hqf0vzhxklbmnpbmzhq7glgr-gcc-4.5.2.drv-0/build/i686-pc-linux-gnu/libstdc++-v3/include/ext/pool_allocator.h:140:30: internal compiler error: Segmentation fault + Please submit a full bug report, + +--- gcc-4_5-branch/gcc/cp/tree.c 2010/11/11 20:40:32 166620 ++++ gcc-4_5-branch/gcc/cp/tree.c 2010/11/11 20:41:34 166621 +@@ -72,7 +72,8 @@ + == REFERENCE_TYPE) + return lvalue_p_1 (TREE_OPERAND (ref, 0)); + +- if (TREE_CODE (TREE_TYPE (ref)) == REFERENCE_TYPE) ++ if (TREE_TYPE (ref) ++ && TREE_CODE (TREE_TYPE (ref)) == REFERENCE_TYPE) + { + /* unnamed rvalue references are rvalues */ + if (TYPE_REF_IS_RVALUE (TREE_TYPE (ref))