Commit graph

479 commits

Author SHA1 Message Date
Bastian Köcher 780592ca6e gcc7: Enable arm erratum 843419 on aarch64
This fix is required for the raspherry pi 3 with glibc 2.27,
otherwise the kernel panics in initrd with:
```
<<< NixOS Stage 1 >>>

loading module dm_mod...
running udev...
kbd_mode: KDSKBMODE: Inappropriate ioctl for device
Gstarting device mapper and LVM...
[    1.969164] Kernel panic - not syncing: Attempted to kill init!
exitcode=0x0000000b
[    1.969164]
[    1.978476] CPU: 0 PID: 1 Comm: init Not tainted 4.16.8 #1-NixOS
[    1.984580] Hardware name: Raspberry Pi 3 Model B (DT)
[    1.989801] Call trace:
[    1.992301]  dump_backtrace+0x0/0x1c8
[    1.996025]  show_stack+0x24/0x30
[    1.999396]  dump_stack+0x9c/0xc0
[    2.002766]  panic+0x124/0x294
[    2.005872]  complete_and_exit+0x0/0x30
[    2.009771]  do_group_exit+0x40/0xa8
[    2.013406]  get_signal+0x280/0x5b0
[    2.016954]  do_signal+0x88/0x240
[    2.020325]  do_notify_resume+0xd8/0x130
[    2.024311]  work_pending+0x8/0x10
[    2.027774] SMP: stopping secondary CPUs
[    2.031763] Kernel Offset: disabled
[    2.035308] CPU features: 0x0802004
[    2.038850] Memory Limit: none
[    2.041963] ---[ end Kernel panic - not syncing: Attempted to kill
init! exitcode=0x0000000b
[    2.041963]
[    2.865264] random: crng init done
```
Suse has done the same to circumvent crashes with hostname resolving in
glibc 2.27 on aarch64.
2018-05-16 03:04:29 +03:00
John Ericson bf7d1bae20 Merge remote-tracking branch 'upstream/master' into gcc-hurd-condition 2018-05-14 13:15:06 -04:00
John Ericson 3a9654bfe2 gcc: Simplify this old Hurd condition
Steps towards getting rid of crossConfig.
2018-05-14 13:13:11 -04:00
John Ericson 92b7a814f2 Merge branch 'fix-gcc-with-float' 2018-05-12 15:21:30 -04:00
John Ericson f2004e6287 lib: Fix float handling for Aarch32
Forgot to adjust default so abi with explicit float attr would be used.
2018-05-12 15:18:31 -04:00
John Ericson f18ddabee7 Merge remote-tracking branch 'upstream/master' into lib-float 2018-05-10 18:13:00 -04:00
John Ericson 1fe81a4bcd lib: Clean up float/fpu options
ARM ABIs now have a float field. This is used as a fallback to lessen
our use of `platform.gcc.float`. I didn't know what the MIPs convention
is so I kept using `platform.gcc.float` in that case.
2018-05-10 18:02:00 -04:00
John Ericson c9f6a82b61 gcc: Factor out "platform flags" 2018-05-10 18:00:57 -04:00
Jörg Thalheim 1537dca7fc
Merge pull request #39914 from nlewo/pr-retpoline
gcc49: backport retpoline support
2018-05-04 19:14:35 +01:00
Patrick Hilhorst 51ac1d8df0 gcc8: Removed X11 components, since they were only used by langJava 2018-05-03 16:30:32 +02:00
Antoine Eiche 5b6129f69c gcc49: remove darwin support 2018-05-03 15:12:01 +02:00
Patrick Hilhorst d21ff87160 gcc8: Removed java as a target language 2018-05-03 13:07:19 +02:00
Antoine Eiche ada2fc088c gcc49: backport retpoline support
To mitigate Spectre Variant 2, GCC needs to have retpoline
support (-mindirect-branch and -mfunction-return arguments on amd64
and i386).

Patches were pulled from H.J. Lu's backport branch to
4.9 (hjl/indirect/gcc-4_9-branch), available at
https://github.com/hjl-tools/gcc/tree/hjl/indirect/gcc-4_9-branch/master. Upstream
GCC does not apply patches to anything older than the
gcc-6-branch. H.J. Lu is the author of the upstream retpoline commits
as well.

Several Linux distributions already backported these patches to GCC 4
branches and some old kernels (3.13 for instance) have been recompiled
with these GCC patches. These kernels only allow to load kernel
modules that are compiled with the retpoline support.

References:
- Ubuntu bug: https://bugs.launchpad.net/ubuntu/+source/gcc-4.8/+bug/1749261
- Ubuntu package: https://launchpad.net/ubuntu/+source/gcc-4.8/4.8.4-2ubuntu1~14.04.4

Fixes #38394
2018-05-03 11:35:49 +02:00
Patrick Hilhorst 5794d94136 gcc8: made the remove-selftests patch more robust, removed old hash 2018-05-02 22:31:58 +02:00
Patrick Hilhorst c7a6b36658 gcc8: removed commented gcc7 hash 2018-05-02 20:53:13 +02:00
Patrick Hilhorst d0708a30c4 gcc8: removed merged patches
Log:
```
patching sources
applying patch /nix/store/6m27y27zvzsjn1ir4y8mm9nc9xnh2sgx-riscv-no-relax.patch
patching file gcc/config/riscv/riscv.c
Reversed (or previously applied) patch detected!  Assume -R? [n]
Apply anyway? [n]
Skipping patch.
1 out of 1 hunk ignored -- saving rejects to file gcc/config/riscv/riscv.c.rej
patching file gcc/config/riscv/riscv.opt
Reversed (or previously applied) patch detected!  Assume -R? [n]
Apply anyway? [n]
Skipping patch.
1 out of 1 hunk ignored -- saving rejects to file gcc/config/riscv/riscv.opt.rej
patching file gcc/doc/invoke.texi
Reversed (or previously applied) patch detected!  Assume -R? [n]
Apply anyway? [n]
Skipping patch.
```
2018-05-02 20:51:01 +02:00
Patrick Hilhorst 728eb27618 gcc8: added myself as maintainer 2018-05-02 18:52:50 +02:00
Patrick Hilhorst 659363fb40 gcc8: init at 8.1.0 2018-05-02 18:34:28 +02:00
John Ericson b9acfb4ecf treewide: isArm -> isAarch32
Following legacy packing conventions, `isArm` was defined just for
32-bit ARM instruction set. This is confusing to non packagers though,
because Aarch64 is an ARM instruction set.

The official ARM overview for ARMv8[1] is surprisingly not confusing,
given the overall state of affairs for ARM naming conventions, and
offers us a solution. It divides the nomenclature into three levels:

```
ISA:             ARMv8   {-A, -R, -M}
                 /    \
Mode:     Aarch32     Aarch64
             |         /   \
Encoding:   A64      A32   T32
```

At the top is the overall v8 instruction set archicture. Second are the
two modes, defined by bitwidth but differing in other semantics too, and
buttom are the encodings, (hopefully?) isomorphic if they encode the
same mode.

The 32 bit encodings are mostly backwards compatible with previous
non-Thumb and Thumb encodings, and if so we can pun the mode names to
instead mean "sets of compatable or isomorphic encodings", and then
voilà we have nice names for 32-bit and 64-bit arm instruction sets
which do not use the word ARM so as to not confused either laymen or
experienced ARM packages.

[1]: https://developer.arm.com/products/architecture/a-profile

(cherry picked from commit ba52ae5048)
2018-04-25 15:50:41 -04:00
John Ericson ba52ae5048 treewide: isArm -> isAarch32
Following legacy packing conventions, `isArm` was defined just for
32-bit ARM instruction set. This is confusing to non packagers though,
because Aarch64 is an ARM instruction set.

The official ARM overview for ARMv8[1] is surprisingly not confusing,
given the overall state of affairs for ARM naming conventions, and
offers us a solution. It divides the nomenclature into three levels:

```
ISA:             ARMv8   {-A, -R, -M}
                 /    \
Mode:     Aarch32     Aarch64
             |         /   \
Encoding:   A64      A32   T32
```

At the top is the overall v8 instruction set archicture. Second are the
two modes, defined by bitwidth but differing in other semantics too, and
buttom are the encodings, (hopefully?) isomorphic if they encode the
same mode.

The 32 bit encodings are mostly backwards compatible with previous
non-Thumb and Thumb encodings, and if so we can pun the mode names to
instead mean "sets of compatable or isomorphic encodings", and then
voilà we have nice names for 32-bit and 64-bit arm instruction sets
which do not use the word ARM so as to not confused either laymen or
experienced ARM packages.

[1]: https://developer.arm.com/products/architecture/a-profile
2018-04-25 15:28:55 -04:00
Shea Levy d0a8866622
Merge branch 'binutils-2.30' into staging 2018-03-22 07:28:10 -04:00
Tuomas Tynkkynen 74720a36c7 Merge remote-tracking branch 'upstream/master' into staging 2018-03-21 23:51:55 +02:00
Clemens Fruhwirth c0cf13e52e Add space for NIX_CXXSTDLIB_COMPILE+=' ...' as NIX_CXXSTDLIB_COMPILE might not be empty. 2018-03-19 13:18:49 +01:00
Shea Levy a5d064826b
gcc: Try to fix /bin/sh dependency 2018-03-17 21:58:15 -04:00
Shea Levy 017d678a00
gcc: Add uncommitted patch. 2018-03-16 16:39:55 -04:00
Shea Levy a1ede569ef
gcc: Unconditionally add some upstream RISC-V patches. 2018-03-16 16:38:32 -04:00
Shea Levy c69d8bf5e6
treewide: Remove gnat support.
See discussion in 6ac7b19c97.
2018-03-08 13:56:36 -05:00
Tuomas Tynkkynen 34f95d92a2 Merge remote-tracking branch 'upstream/master' into staging
Conflicts:
	pkgs/applications/misc/pytrainer/default.nix
	pkgs/development/tools/pew/default.nix
	pkgs/tools/misc/you-get/default.nix
2018-02-28 20:52:49 +02:00
John Ericson dfc5d7835d
Merge pull request #35247 from telent/mips32
lib, treewide: Add missing MIPS arches, and fix existing usage
2018-02-27 14:01:15 -05:00
Shea Levy 4728ef130e
RISC-V: Add upstream gcc patch to fix -pthread.
Fixes libmicrohttpd build.
2018-02-26 05:24:36 -05:00
Daniel Barlow 9c50ae6898 lib, treewide: Add missing MIPS arches, and fix existing usage
Existing "mips64el" should be "mipsel".

This is just the barest minimum so that nixpkgs can recognize them as
systems - although required for building individual derivations onto
MIPS boards, it is not sufficient if you want to actually build nixos on
those targets
2018-02-23 20:43:42 -05:00
Will Dietz 39f61d5c02 gcc7: fix native and cross-musl build, sync w/gcc6 fixes 2018-02-21 20:55:22 -06:00
Tuomas Tynkkynen b1916b45a3 Merge remote-tracking branch 'upstream/staging' into gcc-7
Conflicts:
	pkgs/development/libraries/libidn/default.nix
	pkgs/top-level/all-packages.nix
2018-02-15 15:45:37 +02:00
Will Dietz 9bd4e00ce3 gcc6: cross-musl disable libmpx 2018-02-13 09:45:03 -06:00
Will Dietz 7eba45d063 gcc5: patch for musl compat/support 2018-02-13 09:44:52 -06:00
Will Dietz 3b0d3248c9 gcc7: tweak check, target -> host 2018-02-13 09:44:43 -06:00
Will Dietz f566e3f987 gcc7: more selftest disabling, whenever building cross 2018-02-13 09:44:42 -06:00
Will Dietz ff9b494103 gcc7: Apply patch to fix selftest w/musl? 2018-02-13 09:44:39 -06:00
Will Dietz f146a3c316 gcc5, 7: same fixes as gcc6 2018-02-13 09:44:38 -06:00
Will Dietz fbf41b9ee2 gcc6: try to fix LOCAL_INCLUDE_DIR problem w/musl 2018-02-13 09:44:38 -06:00
Will Dietz 5eea9e82f4 gcc6: try patching MUSL_DYNAMIC_LINKER as well 2018-02-13 09:44:38 -06:00
Will Dietz ece06deee4 gcc6: try to fix gccCrossStageStati 2018-02-13 09:44:38 -06:00
Will Dietz 15d401dcfa gcc: disable libsanitizer, libgomp on musl 2018-02-13 09:44:38 -06:00
Ben Gamari d625f181bd autoconf: Enable cross-compilation 2018-02-13 09:44:28 -06:00
Franz Pletz e2c1c76fd0
Merge remote-tracking branch 'origin/master' into gcc-7 2018-01-28 23:17:32 +01:00
Tuomas Tynkkynen 11e98eaae7 gcc7: More resync from gcc6
I think I managed to lose these during a merge conflict.
2018-01-28 03:15:05 +02:00
Clemens Fruhwirth 2f83f52ab8 gcc: 7.2.0 -> 7.3.0 2018-01-26 15:59:22 +01:00
Tuomas Tynkkynen 99fc949330 gcc7: Drop flex again
I think I lost this during merge conflict resolution
2018-01-26 16:50:13 +02:00
John Ericson c98e6b6771 gcc, binutils: Narrow down ARM hack so only native builds are affected 2018-01-09 17:25:49 -05:00
Drew Hess 3ed545ab31
Revert "gcc, binutils: Get rid of 32-bit ARM configure flag exception"
This commit breaks native armv7l-linux builds. Revert it until it can
be root-caused. This reversion does not affect other platforms or
cross-compiling.

This reverts commit 0f5c804631.
2018-01-08 20:03:33 -08:00