Commit Graph

785 Commits

Author SHA1 Message Date
Tom Ritter
2313bfe0d4 Bug 1457482 Add --enable-lto that turns on LTO r=glandium
MozReview-Commit-ID: DjICW7OKqzB

--HG--
extra : rebase_source : 92c766880845ec89305ef1e66ff13223421ac152
2018-04-13 15:55:39 -05:00
Tom Ritter
2eb926954e Bug 1457482 Add an LTO Build Target r=glandium
This build target doesn't have LTO enabled on it (yet)

MozReview-Commit-ID: 56tAHMyvH7o

--HG--
extra : rebase_source : 90039cd8e97332e2ef8aad7908b8a04b2869f4a5
2018-05-30 12:27:25 -05:00
Tom Ritter
539edded29 Bug 1457482 Correct elfhack's LTO detection to handle -flto=thin r=glandium
MozReview-Commit-ID: LnDLrDN0W9O

--HG--
extra : rebase_source : 3ba425fc9316d1b3df12a481c9ece1e3a65c8fe5
2018-06-01 10:10:16 -05:00
Mike Hommey
5c6ce84a4c Bug 1464084 - Don't export std:🧵:_M_start_thread symbols with --enable-stdcxx-compat. r=froydnj
This relies on the fact that providing multiple --version-script
combines them all, so we effectively create a new symbol version
that has no global symbol, but hides the std:🧵:_M_start_thread
symbols.

This version script trick happens to work with BFD ld, gold, and lld.

The downside is that when providing multiple --version-script's, ld
doesn't want any of them to have no version at all. So for the libraries
that do already have a version script (through SYMBOLS_FILE), we use a
version where there used to be none, using the library name as the
version. Practically speaking, this binds the libraries a little closer
than they used to be, kind of non-flat namespace on OSX (which is the
default there), meaning the dynamic linker will actively want to use
symbols from those libraries instead of a system library that might
happen to have the same symbol name.

--HG--
extra : rebase_source : a7f672c35609d993849385ddb874ba791b34f929
2018-06-01 08:10:25 +09:00
Gurzau Raul
7e4f5e7dc6 Backed out changeset 838c0ab9cbdb (bug 1464084) for Linux static bustage on a CLOSED TREE 2018-06-02 02:42:52 +03:00
Mike Hommey
e680be2ec4 Bug 1466060 - Upgrade to binutils 2.28.1. r=nalexander
Version 2.25.1's libiberty can choke on some symbols. That was fixed in
2.27. As of writing, the last version is 2.30. Conservatively go with
2.28.1, which is the same major version (2.28) as what is currently in
Debian stable.

--HG--
extra : rebase_source : 9e5ba94421a1568f662cfd98af7168ea1c890934
2018-06-01 17:48:41 +09:00
Mike Hommey
cc7ff037ab Bug 1464084 - Don't export libstdc++ symbols with --enable-stdcxx-compat. r=froydnj
This relies on the fact that providing multiple --version-script
combines them all, so we effectively create a new symbol version
that has no global symbol, but hides as much std::* stuff as possible.

The added symbol script could use `extern "C++"` syntax and demangled
symbols but there is no guarantee the demangled symbols won't change.
Plus, it's not possible to match demangled symbols that have a return
type: they contain a space, and the only way to match that is to use
double quotes, which doesn't allow globs at the same time.

This version script trick happens to work with BFD ld, gold, and lld.

The downside is that when providing multiple --version-script's, ld
doesn't want any of them to have no version at all. So for the libraries
that do already have a version script (through SYMBOLS_FILE), we use a
version where there used to be none, using the library name as the
version. Practically speaking, this binds the libraries a little closer
than they used to be, kind of non-flat namespace on OSX (which is the
default there), meaning the dynamic linker will actively want to use
symbols from those libraries instead of a system library that might
happen to have the same symbol name.

--HG--
extra : rebase_source : 78adb64b90e75ebad203b8a647b305c9d7198d16
2018-06-01 08:10:25 +09:00
Sylvestre Ledru
dcfef841a7 bug 1463425 - Fix flake8/pep8 issue by hand in build/ r=gps
MozReview-Commit-ID: AZdcEWyVV6e

--HG--
extra : rebase_source : b1c45028c8d46be5ba590a27a2f9f20e248a26b1
2018-05-21 23:58:19 +02:00
Sylvestre Ledru
8cd16bb55b bug 1463425 - autopep8 on build/ r=gps
MozReview-Commit-ID: ETzx4HsjbEF

--HG--
extra : rebase_source : 7e27a4cfe2bb358d513a18a33c245bcc6d559c46
2018-05-21 23:56:34 +02:00
Mike Hommey
e4ed02a860 Bug 1462273 - Use more reliable mirrors for gcc dependencies. r=froydnj
In the span of one week, both gmplib.org and multiprecision.org,
respective home of gmp and mpc have gone down. The latter is still down.

It turns out that all versions of gmp and mpfr we need are mirrored on
ftp.gnu.org, so we can just use that instead. For mpc, versions > 1.0
are on ftp.gnu.org, but not earlier versions.

The one mpc version <= 1.0 we do need is 0.8.2, and a copy of the exact
same archive, as per its sha256, which we're already checking per the
gcc build scripts, can be found on snapshot.debian.org. We lose gpg
validation on the way, but since we're already checking the sha256,
that's a fine tradeoff.

At least this unblocks changes to toolchains until multiprecision.org
comes back online.

--HG--
extra : rebase_source : f2bc67f8757655d99bfd9735b80d7205f7bfe47b
2018-05-17 17:52:37 +09:00
Mike Hommey
49a407b2ec Bug 1462273 - Use https for ftp.gnu.org instead of ftp. r=froydnj
--HG--
extra : rebase_source : 8c2b6a74b720d602f87c6c9bc622eeae2c2b8b97
2018-05-17 17:52:15 +09:00
Mike Hommey
be4f305f62 Bug 1445536 - Add a toolchain job for GCC 7. r=froydnj
And adapt the build-gcc.sh script for the changes to
contrib/download_prerequisites.

--HG--
rename : taskcluster/scripts/misc/build-gcc-6-linux.sh => taskcluster/scripts/misc/build-gcc-7-linux.sh
extra : rebase_source : b1d785777b8c141c0eb0f52a73734abd2db21b94
2018-03-14 09:37:27 +09:00
Sylvestre Ledru
ae22e4d7c9 Bug 1446809 - Remove some b2g leftover in the build r=glandium
MozReview-Commit-ID: EAXd3JmiL2Z

--HG--
extra : rebase_source : dcd3ea92aad6150ffbee08d6b83670af14a9b50d
extra : source : 9b98c5aad44c43592fde29f95650c7cf54fe9a06
2018-03-20 10:46:23 +01:00
Csoregi Natalia
fc0283f66c Backed out 10 changesets (bug 1446809) for failing on jsat/test_content_integration.html . CLOSED TREE
Backed out changeset 42146f3856d0 (bug 1446809)
Backed out changeset e6b888d19add (bug 1446809)
Backed out changeset 2293192557ef (bug 1446809)
Backed out changeset 643d30faeef8 (bug 1446809)
Backed out changeset 73639fbb3a61 (bug 1446809)
Backed out changeset df179cf0797d (bug 1446809)
Backed out changeset 04c46f107d24 (bug 1446809)
Backed out changeset 9b98c5aad44c (bug 1446809)
Backed out changeset 347d7259df0f (bug 1446809)
Backed out changeset 2a350e323713 (bug 1446809)
2018-03-21 11:17:38 +02:00
Sylvestre Ledru
3ba7519bb2 Bug 1446809 - Remove some b2g leftover in the build r=glandium
MozReview-Commit-ID: EAXd3JmiL2Z

--HG--
extra : rebase_source : 68a42be6d803efcbc00b21d88c2741e258bb5a3b
extra : histedit_source : e7937e472a1de065991789c1868ed23e1f50eadd
2018-03-20 10:46:23 +01:00
Mike Hommey
8c090e66b4 Bug 1440037 - Add support for R_X86_64_PLT32 relocations in elfhack. r=froydnj
--HG--
extra : rebase_source : a0b3f39575585a0969402e88482fe0ac62b9c332
2018-02-22 07:15:23 +09:00
Jesse Schwartzentruber
8edb6105b8 Bug 1421728 - Add a macosx64 fuzzing-asan build. r=dustin,froydnj
MozReview-Commit-ID: DNNu4jyG50Z

--HG--
extra : rebase_source : 4440c958965ee6021a3aaf732f9a87cc10763245
2018-02-08 17:16:41 -05:00
Tom Prince
2f67397a2b Bug 1436800: Update fedora source URL; r=glandium
The fedora project is migrating from pkgs.fedoraproject.org to
src.fedoraproject.org. We should use the newer URL, particularly because the
later has a globally trusted TLS certificate.

MozReview-Commit-ID: 7TducICRR0k

--HG--
extra : rebase_source : 88e58d064d1699e853527019200d6fbd4989d6b3
2018-02-08 12:26:08 -07:00
Mike Hommey
1d38c4309b Bug 1432398 - Remove the desktop-build docker image and related files. r=dustin
--HG--
extra : rebase_source : 158e14474ce049343105d2be95aabc03ec0b7854
2018-01-27 11:04:23 +09:00
Mike Hommey
e8b62fa5df Bug 1431251 - Remove CRT objects from the GCC build. r=rillian
They were added in bug 1427344 to reduce the differences between builds
on CentOS docker images and builds on Debian docker images. We're now
entirely on Debian docker images, so we can back this out.

--HG--
extra : rebase_source : 672e389cb8d6dbf7860a989024690de18e5c320e
2018-01-27 11:52:12 +09:00
Mike Hommey
e551e11340 Bug 1431251 - Remove PKG_CONFIG_LIBDIR from mozconfigs. r=rillian
As of bug 1430036 it was only set when building on CentOS, and as of bug
1432398, we don't have CentOS-based docker images anymore.

--HG--
extra : rebase_source : 5ade9bee773bca3283cfdb9d69209033fe82253f
2018-01-27 11:49:23 +09:00
Gregory Szorc
6f469dc037 Bug 1430908 - Use --progress=dot:mega with wget; r=glandium
By default, wget prints dots every 1k bytes. This can render a
lot of output for large files. We switch to the "mega" style, which
makes each dot represent 64k, thus reducing output by up to 64x.

We also force the use of dot display. By default, it uses "bar"
which attempts to use terminal formatting if possible. Since most
of this code executes in CI and terminal control characters can
interfere with logged output, we force the use of "dot." (Although
wget appears to automatically switch to dot in TC today. But
consistency is good.)

MozReview-Commit-ID: IpTWJdcauTV

--HG--
extra : rebase_source : 5c9aa1bbdcd78eaa0b31347ad026a2c1beaedc03
2018-01-16 14:24:31 -08:00
Mike Hommey
648d8e17e1 Bug 1430506 - Install pulseaudio 2.0 on CentOS build images. r=nalexander
Switching to Debian build images will force a version bump from
pulseaudio 0.9.something to pulseaudio 2.0. Practically speaking, as
long as bug 1427150 is fixed (which it is), this is strictly better,
because this enables all the PA_CHECK_VERSION(2,0,0) code in libcubeb,
which handles port availability (whether output is plugged or not), and
with bug 1427150, it does so in a backward compatible manner.

Now, since this is a behavior change from what we're currently shipping,
this has the potential of triggering unexpected test failures, or break
sound for users. The likelyhood of the latter happening is rather low,
though, because Linux distros have been building with pulseaudio >= 2.0
for a long time and we haven't heard about port availability breaking
sound for them. But it's still better to decouple this change from the
switch to Debian.

We abuse the build-gtk3.sh script which installs gtk3 in the CentOS
build image to install pulseaudio as well.

--HG--
extra : rebase_source : eb4e4033c50d59117b5199d1653d85f871503b2f
2018-01-13 06:24:51 +09:00
Csoregi Natalia
7476b71e00 Merge inbound to mozilla-central r=merge a=merge 2018-01-12 23:59:06 +02:00
Mike Hommey
f1dcc7b8db Bug 1427344 - Add Debian CRT objects to GCC. r=nfroyd
One of the last remaining differences when building Firefox on Debian
with all the changes we've done so far is that linking against the
system libc statically links some CRT objects. This causes massive
differences in the resulting binaries because of slight differences
in those objects (because they weren't compiled with the same compiler
and because they're not for the exact same glibc version)

In practice, their content difference don't cause any problem. If they
did, we wouldn't be able to run our builds on newer systems than those
we build them on. The only hypothetical risk would be to run on systems
with a glibc older than Debian 7's, but those already can't run Firefox
anyways (those systems don't have Gtk+3, which is a system requirement).

AFAICT, this is only an hypothetical problem anyways, even such systems
with Gtk+3 should be able to run those builds. Plus, this is a change
that will happen anyways when switching to Debian-based build images,
since they would be using the CRT objects from there. We're merely
making it happen earlier so that the differences from switching to
Debian-based build images are more tractable.

Note we only do this when building GCC on Debian, allowing to roll back
to CentOS-based toolchains by just switching back the toolchain jobs to
use the desktop-build docker image again.
2018-01-12 21:39:57 +09:00
Mike Hommey
e17b79e152 Bug 1427344 - Build GCC without --disable-initfini-array. r=nfroyd
When building on Debian (which we now are), this means we enable
.init_array/.fini_array.

When building on CentOS, this means no change. Which implies we could
roll back to CentOS-based toolchains by just switching back the
toolchain jobs to use the desktop-build docker image again.

This change causes massive differences in the resulting binaries because
of the offset differences, but practically speaking, there is no
difference. .init_array/.fini_array have been supported in glibc for 18
years.
2018-01-12 21:39:56 +09:00
Mike Hommey
c42e9d7d91 Bug 1429918 - Adjust the MPC download url. r=nalexander
--HG--
extra : rebase_source : 28fedbf2c08c179c2b2f1aeb15921d09e817f7af
2018-01-12 06:58:34 +09:00
shindli
f1c9a5da78 Backed out changeset 1af647b2f9e8 (bug 1429918) for a request made by the developer on a CLOSED TREE 2018-01-12 00:47:35 +02:00
Mike Hommey
e73fcbf697 Bug 1429918 - Adjust the MPC download url. r=nalexander
--HG--
extra : rebase_source : e457431f9aa04c58ec29eb0c6450d43232de12d2
2018-01-12 06:58:34 +09:00
Mike Hommey
0804de7e8e Bug 1430036 - Don't set PKG_CONFIG_LIBDIR when building on Debian. r=ted
--HG--
extra : rebase_source : 06f96fe0060a34f65f1126e3510580e0b6bc4969
2018-01-12 15:16:19 +09:00
Mike Hommey
87c31766de Bug 1429257 - Statically link newfs_hfs against libcrypto. r=gps
For the same reasons as bug 1427266.

--HG--
extra : rebase_source : f27c9d05b2ea74d323fde29c09c2faae9fe8ee19
2018-01-10 09:59:29 +09:00
Mike Hommey
e1983fc387 Bug 1429257 - Make build-hfsplus.sh fail when something goes wrong. r=gps
Currently, the build can finish succesfully even when one of the
programs fails to build and is not included in the final artifact. The
macosx build then fails because of that, which is the wrong place to
be failing.

--HG--
extra : rebase_source : 4a41b2f96eea45d3eefa2734900603b6e6ee0ea5
2018-01-10 08:37:44 +09:00
Jean-Luc Bonnafoux
5acf65c7fe Bug 1428629 - elfhack.cpp prefer prefix ++ operator for non primitive types r=froydnj
MozReview-Commit-ID: C0L2NUsbmc4

--HG--
extra : rebase_source : b4b3dfbbabbd610384448169b10c3f9b5c27e621
2018-01-08 09:30:32 +01:00
Jean-Luc Bonnafoux
83cf591ec7 Bug 1417215 - Prefer prefix ++ operator for non primitive types r=froydnj
MozReview-Commit-ID: Hjbj0PEjAnf

--HG--
extra : rebase_source : 659bfb57eba416e6105035e453d7366a9515ea3a
2017-12-30 21:09:58 +01:00
Mike Hommey
e34ef317f6 Bug 1427339 - Make mozconfig.stdcxx work with both CentOS and Debian-built GCCs. r=gps 2018-01-06 14:19:30 +09:00
Mike Hommey
0c1517dd8c Bug 1427339 - Configure binutils and gcc --with-sysroot=/. r=gps
The system binutils and gcc are built with that option on Debian, but
not on CentOS. That makes no practical difference, except for the fact
that when building GCC, we use our own-built binutils (as per bug
1427316), but use the system GCC. And a GCC built with --with-sysroot=/
doesn't work with a binutils built without. However, a GCC built without
--with-sysroot=/ works fine with a binutils built with it. So this
change is compatible with building our GCC on both CentOS and Debian.
2018-01-06 14:19:29 +09:00
Mike Hommey
511d112e2d Bug 1427316 - Use the binutils we just built to build GCC. r=gps
We're currently building GCC with the system binutils, which, at the
moment, is whatever version is available on the CentOS 6 build
environments. With the imminent switch to Debian 7, that will be a
different version.

It turns out the GCC configure script does enable some features
depending on the binutils it's built with. For the most notable
differences it makes when going from Centos 6 to Debian, it enables
.init_array/.fini_array depending on the binutils version, and enables
the use of CFI advances depending on gas and objdump respectively
supporting and displaying DW_CFA_advance_loc.

But we're already building a fixed version of binutils (which happens to
be more recent than the one in both CentOS 6 and Debian 7), and we're
using that version when using GCC to build, so we can just as much use
the version we built to build GCC.

In order to avoid any changes to the resulting builds, we explicitly
turn off .init_array/.fini_array (which currently happens implicitly
when building on CentOS 6). This will ensure that there is not other
change to the builds due to this binutils version bump
(.init_array/.fini_array being enabled shifts everything in the
binaries, so it makes the whole diff full of noise)
2018-01-04 19:16:19 +09:00
Mike Hommey
25c3f317c0 Bug 1427404 - Always export PATH when passing it through mk_add_options. r=nalexander
mk_add_options has this kind of awkward feature where
  mk_add_options VAR=value
would set VAR for the build through client.mk, but not when running
make -C objdir target. But
  mk_add_options "export VAR=value"
does.

We might want to change that on the long run, but the side effects would
have to be calculated first.

OTOH, we have automation jobs that run compilations during `make check`
(e.g. rusttests), which is not invoked through client.mk. So they
currently don't get the same PATH as the build part, meaning that
they're using system binutils instead of the one from the GCC toolchain
package.

--HG--
extra : rebase_source : aab7f221243c486cf70c7b0c91b9313231050ed8
2017-12-31 08:50:29 +09:00
Mike Hommey
4aa79652c5 Bug 1427232 - Remove .la files when building gtk3. r=gps
In bug 1426785, Gtk+3 build was moved to docker image creation time, and
at the same time, the removal of .la files was stripped, because it
seemed too broad to do that in /usr/local/lib*, and because I didn't
really remember why it was there in the first place.

I now do remember, and that's because libtool likes to add useless
dependencies on libraries just because direct dependencies transitively
depend on them. For example, this adds a dependency on libffi to
libpangocairo, which doesn't use it directly.

I also happens that /usr/local/lib* is empty at the moment we build
gtk3, so we can just do the cleanup there.

On its own, this change is useless, but:
- it restores the libraries in their state pre-bug 1426785,
- it helps reduce some differences when building on Debian (for bug
1399679), easing the comparison of those builds.

--HG--
extra : rebase_source : 3fa644d8ae5eb4ccac5940c7d3605201f589936d
2017-12-28 11:15:00 +09:00
Mike Hommey
6a21d1f58e Bug 1426785 - Remove mozconfig.gtk. r=gps
It now only does something trivial, which also happens to be a no-op
because it's the default. It does have a commented entry for possible
gtk+2 builds, but we're soon going to remove that possibility anyways in
bug 1278282.

--HG--
extra : rebase_source : 9ac927bb7bd8c057264c8f6f9ca5cbf79a839c4e
2017-12-22 07:57:05 +09:00
Mike Hommey
79b5314945 Bug 1426785 - Use gtk+3 from /usr/local on automation. r=gps
Now that build environment docker images have gtk+3 installed in
/usr/local, adjust mozconfigs to point pkg-config there, and remove
all the glue that was required to build using the tooltool package.

Also remove the --x-libraries=/usr/lib on 32-bits builds, which only
confuses the linker.

--HG--
extra : rebase_source : c7de7b3959a3c6b77ea202d9609c891b5b7ec442
2017-12-22 07:53:33 +09:00
Mike Hommey
a6e25e84a3 Bug 1426785 - Install gtk+3 in the Centos images used for desktop builds. r=gps
Back when we started needing gtk+3 to build Firefox, we were using mock
to setup the build environment, and a tooltool package was the most
sensible way to handle this.

Fast forward to today, and we're close to moving the build environment
to Debian, which comes with gtk+3 packages. But in order to simplify
the various checks for the transition, it is desirable to stop using the
tooltool package. Which we can actually do in a reasonable way now that
we use docker images instead of mock, by building and installing gtk+3
in the build environment images.

So we modify the script that was producing the gtk+3 tooltool packages
such that it installs gtk+3 in the docker images, both 32 and 64 bits.
And invoke it when creating the desktop build environment docker images.

--HG--
extra : rebase_source : 75e987d6de7f3ae8a3d9b478fc173e191d28aace
2017-12-22 07:41:56 +09:00
Coroiu Cristina
dbb27acb6d Backed out 5 changesets (bug 1426785) for failing repackage the nightly build on Linux a=backout.
Backed out changeset 08b5850633de (bug 1426785)
Backed out changeset 61453b6473f1 (bug 1426785)
Backed out changeset 851ce8944b41 (bug 1426785)
Backed out changeset 386cd0532519 (bug 1426785)
Backed out changeset 2a52bf9e0898 (bug 1426785)
2017-12-24 14:03:02 +02:00
Mike Hommey
2dca68b63f Bug 1426785 - Remove mozconfig.gtk. r=gps
It now only does something trivial, which also happens to be a no-op
because it's the default. It does have a commented entry for possible
gtk+2 builds, but we're soon going to remove that possibility anyways in
bug 1278282.

--HG--
extra : rebase_source : 0de751e523ee002bbe6638d223eb384364edd22b
2017-12-22 07:57:05 +09:00
Mike Hommey
2e32acf893 Bug 1426785 - Use gtk+3 from /usr/local on automation. r=gps
Now that build environment docker images have gtk+3 installed in
/usr/local, adjust mozconfigs to point pkg-config there, and remove
all the glue that was required to build using the tooltool package.

Also remove the --x-libraries=/usr/lib on 32-bits builds, which only
confuses the linker.

--HG--
extra : rebase_source : 22b1273ae4b78807b355d33ed5895bdfe83a141d
2017-12-22 07:53:33 +09:00
Mike Hommey
089e3a8dc2 Bug 1426785 - Install gtk+3 in the Centos images used for desktop builds. r=gps
Back when we started needing gtk+3 to build Firefox, we were using mock
to setup the build environment, and a tooltool package was the most
sensible way to handle this.

Fast forward to today, and we're close to moving the build environment
to Debian, which comes with gtk+3 packages. But in order to simplify
the various checks for the transition, it is desirable to stop using the
tooltool package. Which we can actually do in a reasonable way now that
we use docker images instead of mock, by building and installing gtk+3
in the build environment images.

So we modify the script that was producing the gtk+3 tooltool packages
such that it installs gtk+3 in the docker images, both 32 and 64 bits.
And invoke it when creating the desktop build environment docker images.

--HG--
extra : rebase_source : fe18bfb2ec8db183c44838d5a7a0051322b2a9c0
2017-12-22 07:41:56 +09:00
Mike Hommey
cffd7e8396 Bug 1426555 - Move --enable-stdcxx-compat to python configure. r=chmanchester
At the same time, we make it actually do something on spidermonkey
builds. We also add an environment variable alternative, that we use
in mozconfig.stdcxx, allowing for mozconfig.no-compile to override it
and avoid configure failures on e.g. artifact builds.

--HG--
extra : rebase_source : b68d362025e0c99f9184a03391c652ec2c9357ad
2017-12-21 11:13:08 +09:00
Mike Hommey
e45c2bc4bc Bug 1426283 - Use nproc for the number of parallel jobs to run when building gcc. r=gps
While in the vicinity.

--HG--
extra : rebase_source : 8d885ff5fd4fa124a08326c0ca002a49ef559e57
2017-12-20 14:39:26 +09:00
Mike Hommey
d61456f499 Bug 1426283 - Work around bug 1409276. r=gps
Both the cc crate and the rust compiler may want to use "cc", which,
on automation, points to the system GCC compiler instead of ours.

As a workaround, we add a cc symbolic link in the GCC toolchain artifact
so that, as long as the GCC toolchain artifact's bin directory is in
$PATH early enough, it's picked over /usr/bin/cc.

--HG--
extra : rebase_source : 53cacf8a750539706a484218e168c8c9e0ba49a6
2017-12-20 10:32:36 +09:00
Mike Hommey
fbaf337e4b Bug 1426322 - Separate gcc and mingw32-gcc. r=gps
The "contract" for toolchains is that extracting foo.tar.xz creates a
directory named foo/. That is however not true for mingw32.tar.xz, which
extracts into gcc/, possibly overwriting files from the gcc.tar.xz
archive (which is also used for mingw builds, for the host part).

This is also not true for nsis.tar.xz, but it reportedly has problems
when it's not in the same directory as mingw32.

But mingw32 doesn't actually need to be mixed with gcc, so it's better
to separate them as they are supposed to be.

--HG--
extra : rebase_source : 30d90af64459bbb31bc076e48f3c661fa9cd4a79
2017-12-20 13:46:53 +09:00
Mike Hommey
8bb6a1a03e Bug 1423821 - Add a consistency check for section offsets to elfhack. r=froydnj
lld is being too smart for its own good, and places non-relocatable data
right after the program headers, which prevents the program headers from
growing. But elfhack wasn't checking for that, so happily placed the
non-relocatable data at its non-relocated location, overwriting the last
item of the program headers.

--HG--
extra : rebase_source : 6f26d475f0a19d88ddf21399dbce8ceac62b492d
2017-12-07 15:34:58 +09:00
Mike Hommey
ded54a5e92 Bug 1423813 - Properly handle elfhack -r after bug 1385783. r=froydnj
Bug 1385783 changed things such that the two elfhack sections are not
adjacent anymore. They can even be in different segments in some cases,
but the undo code doesn't know how to actually handle that case.

So for now, allow non adjacent sections, but still verify that they are
in the same segment.

--HG--
extra : rebase_source : da95ef7df19eeea8dfd07b24f22e7bee18939b69
2017-12-07 15:22:22 +09:00
Tom Prince
1d74db87ce Bug 1424651: Remove unused SOCORRO_SYMBOL_UPLOAD_TOKEN_FILE mozconfig variable; r=ted.mielczarek
MozReview-Commit-ID: CkIg3fiwp1z

--HG--
extra : rebase_source : 5a4a50c8feb477a9b50c30e35b72a316b1f1bc8c
2017-12-10 23:05:05 -07:00
Dorel Luca
2f271a1136 Backed out 4 changesets (bug 1424651) as requested by tomprice r=backout on a CLOSED TREE
Backed out changeset 10ebf78f32bb (bug 1424651)
Backed out changeset 746d96792d18 (bug 1424651)
Backed out changeset 6038fb7b458c (bug 1424651)
Backed out changeset 189fd4f1df41 (bug 1424651)
2017-12-12 06:33:18 +02:00
Tom Prince
4dfc8f7a46 Bug 1424651: Remove unused SOCORRO_SYMBOL_UPLOAD_TOKEN_FILE mozconfig variable; r=ted.mielczarek
MozReview-Commit-ID: CkIg3fiwp1z

--HG--
extra : rebase_source : 475e2d8888ff4b93efa9886581de9d145b51c51c
2017-12-10 23:05:05 -07:00
Ted Mielczarek
8b7140ce04 bug 1424323 - remove MOZ_AUTOMATION_UPLOAD_SYMBOLS from in-tree mozconfigs. r=rillian
With all of our builds in Taskcluster now, we should never be uploading
symbols from build tasks. Unfortunately Windows builds were still doing so.
This patch removes MOZ_AUTOMATION_UPLOAD_SYMBOLS from all the in-tree
mozconfigs and a few other places so that it should always default off
(per moz-automation.mk). The rest of the uploadsymbols bits will be
removed once Thunderbird fixes their automation.

This patch was mostly autogenerated by running:
rg --files-with-matches UPLOAD_SYMBOLS browser/config/mozconfigs/ mobile/android/config/mozconfigs/ | xargs sed -ri '/.*UPLOAD_SYMBOLS.*/d'
sed -ri '/.*UPLOAD_SYMBOLS.*/d' build/unix/mozconfig.linux build/mozconfig.win-common build/macosx/local-mozconfig.common build/mozconfig.automation

Then mobile/android/config/mozconfigs/common and
taskcluster/scripts/builder/build-linux.sh were hand-edited.

MozReview-Commit-ID: Cy8kSEodSg4

--HG--
extra : rebase_source : 01caf1651b4eb428313e1f371aa585f8f34c4151
2017-12-08 13:50:17 -05:00
Mike Hommey
9ec14dddcb Bug 1417689 - Remove explicit --enable-elf-hack in mozconfigs. r=nalexander
--enable-elf-hack is the default on all platforms where it's supported,
and is completely ignored on platforms where it's not supported.
While moving the flag to moz.configure, we're going to make it only
work on platforms where elfhack is supported, so we at least need to
remove it from mozconfigs for those platforms where it's not supported.
But generally speaking, we want less things in mozconfigs, so just
remove it from there, since it's the default anyways.
2017-11-16 09:37:17 +09:00
Chris Manchester
fb88a7e614 Bug 1407388 - Remove build/unix/elfhack/inject/Makefile.in and replace with generated files. r=mshal
MozReview-Commit-ID: Cr2RUlksKBJ

--HG--
extra : rebase_source : 03f32e52d754d29a23e774707b6f92e265bf3ce0
2017-11-07 16:54:22 -08:00
Nathan Froyd
bce27af988 Bug 1163171 - part 2 - switch to using -isystem rather than -idirafter for Android; r=glandium
This command-line flag is a little more evocative and works correctly
with both GCC and clang.
2017-10-28 17:38:59 -04:00
Chris Manchester
e361318990 Bug 1403346 - Remove clang plugin flags from stdc++compat through moz.build rather than Makefile.in r=glandium
MozReview-Commit-ID: DuFMdNru2i4
2017-10-25 15:12:10 -07:00
Chris Manchester
3aac6ce692 Bug 1403346 - Implement cflags filtering for elfhack in mozbuild COMPILE_FLAGS r=glandium
MozReview-Commit-ID: GO2mqMjHuHd
2017-10-25 15:12:10 -07:00
Tom Ritter
302cef9ace Bug 1407359 Set up a framework for patching the MinGW toolchain r=glandium
MozReview-Commit-ID: 8HtjLXAIXTP

--HG--
extra : rebase_source : b32cb4ac931c9dc599572bc5e726e4d68982c8a4
2017-10-16 20:52:47 -05:00
Robert-André Mauchin
3d620068f1 Bug 1407211 - Fix typo in build/unix/run-mozilla.sh from bug 1403366. r=glandium 2017-10-12 07:28:20 +09:00
Mike Hommey
37d01456dc Bug 1403366 - Don't set MOZILLA_FIVE_HOME from multiple scripts. r=froydnj
It was seldom used before previous commit and now does nothing.

--HG--
extra : rebase_source : e0b1dcdabe798af478e054cde0df65facf25ea21
2017-09-28 11:00:09 +09:00
Sebastian Hengst
2e58d81866 Backed out changeset ff0705eda4bd (bug 1403366) 2017-10-04 01:26:56 +02:00
Mike Hommey
5f2f5b4e64 Bug 1403366 - Don't set MOZILLA_FIVE_HOME from multiple scripts. r=froydnj
It was seldom used before previous commit and now does nothing.

--HG--
extra : rebase_source : e0b1dcdabe798af478e054cde0df65facf25ea21
2017-09-28 11:00:09 +09:00
Sebastian Hengst
6a0c7a5682 Backed out changeset 28b00bdf83a3 (bug 1403366) 2017-09-29 17:19:35 +02:00
Mike Hommey
8142d74974 Bug 1403366 - Don't set MOZILLA_FIVE_HOME from multiple scripts. r=froydnj
It was seldom used before previous commit and now does nothing.

--HG--
extra : rebase_source : 59ba89dbd8de9c0b9361872f3f45504a46f454a2
2017-09-28 11:00:09 +09:00
Tom Ritter
095b4bfda8 Bug 1330608 Add the MinGW32 toolchain build to Taskcluster r=glandium
MozReview-Commit-ID: JHS6y8kqr4T

--HG--
extra : rebase_source : e04692af64312db7028d4123075e02d8b9127ef2
2017-09-22 00:24:58 -05:00
Mike Hommey
6be61a27e7 Bug 1401005 - Handle the case where the relocation addend is not found at the relocation location. r=froydnj
--HG--
extra : rebase_source : 58c6dfbe9fc584bbbbce2b9739a374a465823b32
2017-09-21 11:37:30 +09:00
Chris Manchester
fab07bc443 Bug 1386876 - Replace all uses of NO_VISIBILITY_FLAGS with a template and remove NO_VISIBILITY_FLAGS. r=glandium
MozReview-Commit-ID: 194U1WMCAM0

--HG--
extra : rebase_source : 365b68b0a1772d238ae9b84966e53dcd1197fd85
2017-05-01 18:12:35 -07:00
Chris Manchester
c0a229d4c3 Bug 1386876 - Replace all uses of DISABLE_STL_WRAPPING with a template, remove DISABLE_STL_WRAPPING. r=glandium
MozReview-Commit-ID: FMEtb5PY7iP

--HG--
extra : rebase_source : 3cdee7528846462c758e623d6bcd2e6e17dbabff
2017-09-11 11:33:26 -07:00
Mike Hommey
a3250ab5f7 Bug 1390752 - Avoid std::basic_ios<char, std::char_traits<char>>::operator bool() references. r=froydnj
This is similar to what we had until bug 1278456 removed them when we dropped
support for older libstdc++, but for a different symbol.

--HG--
extra : rebase_source : 641fc6c86c8f47e3dbd752bc20056f61646541a7
2017-08-16 15:03:43 +09:00
Eugen Sawin
c0560f54d7 Bug 1388893 - [1.0] Abort code insertion if executable section was not found. r=glandium 2017-08-15 13:58:41 +02:00
Mike Hommey
733dc0bf95 Bug 1389422 - Avoid @GLIBCXX_3.4.22 symbols from the use of std::thread when building with GCC 6. r=froydnj
That the wrapper implementation works has been verified by creating a
dummy program such as:

  $ cat test.cc
  #include <thread>

  int main() {
    std::thread([]() {
      printf("foo\n");
    }).join();
    return 0;
  }

And compiling it with and without the hack:

  $ g++ -fno-rtti -o test test.cc -lpthread
  $ objdump -TC test | grep UND.*GLIBCXX_3.4.22
  0000000000000000      DF *UND*	0000000000000000  GLIBCXX_3.4.22 std:🧵:_State::~_State()
  0000000000000000      DF *UND*	0000000000000000  GLIBCXX_3.4.22 std:🧵:_M_start_thread(std::unique_ptr<std:🧵:_State, std::default_delete<std:🧵:_State> >, void (*)())

  $ ./test
  foo

  $ g++ -fno-rtti -o test test.cc $objdir/build/unix/stdc++compat/stdc++compat.o -lpthread
  $ objdump -TC test | grep UND.*GLIBCXX_3.4.22
  $ ./test
  foo

--HG--
extra : rebase_source : 53ca8e2d0424eaeb539d50510c441c8a3252c819
2017-08-11 17:20:47 +09:00
Mike Hommey
ccd43013f6 Bug 1388713 - Change how elfhack looks for the bss section. r=froydnj
In bug 635961, elfhack was made to (ab)use the bss section as a
temporary space for a pointer. To find it, it scanned writable PT_LOAD
segments to find one that has a different file and memory size,
indicating the presence of .bss. This usually works fine, but when
the binary is linked with lld and relro is enabled, the end of the
file-backed part of the PT_LOAD segment containing the .bss section
ends up in the RELRO segment, making that location read-only and
subsequently making the elfhacked binary crash when it tries to restore
the .bss to a clean state, because it's not actually writing in the .bss
section: lld page aligns it after the RELRO segment.

So instead of scanning PT_LOAD segments, we scan for SHT_NOBITS
sections that are not SHF_TLS (i.e. not .tbss).

--HG--
extra : rebase_source : f18c43897fd0139aa8535f983e13eb785088cb18
2017-08-10 07:55:55 +09:00
Wes Kocher
db7d003ae0 Merge m-c to autoland a=merge CLOSED TREE
MozReview-Commit-ID: Ko3lhAvzMJN
2017-08-03 18:22:09 -07:00
Mike Hommey
118fd76cf0 Bug 1356926 - Make all stdc++compat symbols weak. r=froydnj
In some cases, we can end up linking some things with
--static-libstdc++. The notable (only?) example of that is for the
clang-plugin, and that happens because it gets some of its flags from
llvm-config, which contains --static-libstdc++ because clang itself is
built that way.

When that happens, the combination of --static-libstdc++ and
stdc++compat breaks the build because they have conflicting symbols,
which is very much by design.

There are two ways out of this:
- avoiding either -static-libstdc++ or stdc++compat
- work around the symbol conflicts

The former is not totally reliable ; we'd have to accurately determine
if we're in a potentially conflicting case, and remove one of the two in
that case, and while we can do that for the cases we explicitly know
about, that's not future-proof, and might fail just as much in the
future.

So we go with the latter. The way we do this is by defining all the
std++compat symbols weak, such that at link time, they're overridden by
any symbol with the same name. When building with -static-libstdc++,
libstdc++.a provides those symbols so the linker eliminates the weak
ones. When not building with -static-libstdc++, the linker keeps the
symbols from stdc++compat. That last assertion is validated by the
long-standing CHECK_STDCXX test that we run when linking shared
libraries and programs.

That still leaves the symbols weak in the final shared
libraries/programs, which is a change from the current setup, but
shouldn't cause problems because when using versions of libstdc++.so
that do provide those symbols, it's fine to use the libstdc++.so version
anyways.
2017-08-04 06:07:42 +09:00
Mike Hommey
614312f061 Bug 1386588 - Change the GCC build script to be future-proof. r=gps
It becomes a library of some sort, so that multiple scripts can benefit
from it to build different versions of GCC.

The GPG key associated with GCC is also refreshed from keys.gnupg.net,
adding a new subkey, used to sign newer versions of GCC (and
postprocessed with pgpstrip to make it smaller).
2017-08-03 08:12:47 +09:00
Sylvestre Ledru
6e1f2d507b Bug 1385910 - In the error message, also ask to upload the pre-elfhacked library r=froydnj
MozReview-Commit-ID: A7ADGyQunjN

--HG--
extra : rebase_source : fac3410f828871b5b694851f99bdf588b67f0ef8
2017-07-31 16:35:03 +02:00
Mike Hommey
48eba8560c Bug 1385783 - Insert the elfhack code before the first executable section. r=froydnj
The lld linker creates separate segments for purely executable sections
(such as .text) and sections preceding those (such as .rel.dyn). Neither
gold nor bfd ld do that, and just put all those sections in the same
executable segment.

Since elfhack is putting its executable code between the two relocation
sections, it ends up in a non-executable segment, leading to a crash
when it's time to run that code.

We thus insert the elfhack code before the first executable section
instead of between the two relocation sections (which is where the
elfhack data lies, and stays).

--HG--
extra : rebase_source : ab18eb9ac518d69a8639ad0e785741395b662112
2017-08-02 16:39:12 +09:00
Mike Hommey
a2b46623f9 Bug 1385783 - Don't assume both elfhack sections are next to each other. r=froydnj
--HG--
extra : rebase_source : 989e0233f5c80c61680ad4578ea6bd835d231655
2017-08-02 16:05:07 +09:00
Cameron McCormack
66d005a1e5 Bug 1385537 - Check for writable segments correctly. r=glandium
MozReview-Commit-ID: FItpvVeiMJM

--HG--
extra : rebase_source : e9eaeba92967c1e839667fb0597fd0cd8a9616a8
2017-07-29 13:56:25 +08:00
Mike Hommey
a15c6351cb Bug 1385117 - Make the bss section of the elfhack testcase large enough. r=froydnj
Since bug 635961, building with relro makes elfhack try to use the bss
data for a temporary function pointer. If there is not enough space for
a pointer in the bss, elfhack will complain it couldn't find the bss.

In normal circumstances, this is most likely fine. Libraries with a bss
so small that it can't fit a pointer are already too small to be
elfhacked anyways. In Firefox, the two libraries with the smallest bss
have enough space for two pointers, and aren't elfhacked (libmozgtk.so
and libplds4.so).

However, the testcase that is used during the build to validate that
elfhack works doesn't have a large enough bss on x86-64, making elfhack
bail out, and the build fail as a consequence.

This, in turn, is due to the only non-thread-local zeroed data being an
int, which is not enough to fit a pointer on x86-64. We thus make it a
size_t.

--HG--
extra : rebase_source : bca2ddbf9d4a5e8786881fc524d642c38d610227
2017-07-28 07:15:39 +09:00
Mike Hommey
43b0a30fd0 Bug 635961 - Allow elfhack to relocate data under the GNU_RELRO segment. r=froydnj
--HG--
extra : rebase_source : 873898d5929414b754bf592ab4d60574700b646a
2017-07-11 07:41:07 +09:00
Wes Kocher
5dbd554bdd Backed out 2 changesets (bug 635961) at developer's request a=backout
Backed out changeset c56fa9c1eda0 (bug 635961)
Backed out changeset ddda63d5366e (bug 635961)

MozReview-Commit-ID: I6NxBctFn8e
2017-07-25 17:57:43 -07:00
Mike Hommey
809895d12d Bug 1378986 - Avoid crashing in elfhack when the input file has no relocations. r=me a=bustage
MozReview-Commit-ID: 8jXvB8iRJkC

--HG--
extra : rebase_source : 6b5f24e9bca51d090c5a7c41977e42c513136ec4
2017-07-25 15:50:34 -07:00
Mike Hommey
76cfb9c89f Bug 635961 - Allow elfhack to relocate data under the GNU_RELRO segment. r=froydnj
--HG--
extra : rebase_source : abbb92ee6a8f317fe80af5bf982c93c8b773a42f
2017-07-11 07:41:07 +09:00
Mike Hommey
7e8198e4b7 Bug 1379835 - Don't filter out -idirafter flag when building elfhack injected code. r=gps
--HG--
extra : rebase_source : 4c6eea5ec9c592873ef94cb0c674fc4b26ef385c
2017-07-11 08:02:16 +09:00
Mike Hommey
b54839958c Bug 1378986 - Adjust the fake phdr section properly. r=froydnj
The PT_PHDR segment is optional, but the Android toolchain decides to
create one in some cases, and places it first. When that happens, the
work around for bug 1233963 fails, because the fake phdr section has not
been adjusted yet (it only happens when we see a PT_LOAD).

So we adjust the fake phdr section when we see a PT_PHDR segment (and
avoid re-updating it when we see a subsequent PT_LOAD).

--HG--
extra : rebase_source : 2190ec2f20ba9d144b8828874f9f8d70dd5ad2f6
2017-07-07 18:29:06 +09:00
Mike Hommey
e6b808292f Bug 1378986 - Avoid elfhack failing on weird DT_INIT_ARRAYs. r=froydnj
Somehow, with the Android toolchain, we end up with
non-empty-but-really-empty DT_INIT_ARRAYs.

In practical terms, they are arrays with no relocations, and content
that is meaningless:

  $ objdump -s -j .init_array libnss3.so

  libnss3.so:     file format elf32-little

  Contents of section .init_array:
   1086e0 00000000                             ....

  $ readelf -r libnss3.so | grep 1086e0

  $ objdump -s -j .init_array libplugin-container-pie.so

  libplugin-container-pie.so:     file format elf32-little

  Contents of section .init_array:
   4479c ffffffff 00000000 ffffffff 00000000  ................

  $ readelf -r libplugin-container-pie.so | grep 4479c

Because so far, elfhack expected meaningful DT_INIT_ARRAYs, it bailed out
early in that case.

--HG--
extra : rebase_source : 217aacb42fdfabb466ed1f8149dfaeb4a595eda8
2017-07-07 14:44:46 +09:00
rforbes
1b11218ff1 Bug 1376968 - Remove obsolete -fsantize-coverage=edge from fuzzing config. r=decoder
MozReview-Commit-ID: IJAoxu9Ovze

--HG--
extra : rebase_source : 5f19fc176360fba47ee0b62250a4fa2605911672
2017-06-28 15:58:42 -07:00
Chris Manchester
479795876a Bug 1370695 - Remove build system code handling binary components. r=glandium
MozReview-Commit-ID: BKHWR34vWsu

--HG--
extra : rebase_source : d870a222d393479bb8ede2aaec571299488806c0
2017-06-13 16:01:45 -07:00
rforbes
3e2112c609 Bug 1359328 - Updates for fuzzing taskcluster build r=aobreja,decoder
MozReview-Commit-ID: 1RDQYnGTE2s

--HG--
extra : rebase_source : 77d2bdd37931d2c324cd07f4d6c7b996c1845a1c
2017-05-25 15:36:21 -07:00
Steve Fink
7e29e4b949 Bug 1339989 - Add --no-build option to build-gcc.sh, r=glandium
--HG--
extra : rebase_source : c642a75ceef62cdcd973ab121fd177de770d1b24
2017-04-17 14:51:17 -07:00
Mike Hommey
ecbc3ab66c Bug 1365182 - When both clang and gcc are installed via tooltool, pick libstdc++ from gcc. r=froydnj
--HG--
extra : rebase_source : 7f5eec8e85e34c5249be11daabc466963476f279
2017-05-16 15:09:52 +09:00
Lee Salzman
20ac00c192 Bug 1350262 - implement prime rehash policy compat for unordered_map and unordered_set in libstdc++. r=glandium
MozReview-Commit-ID: 1zlGjRMKcBM
2017-05-09 22:15:18 -04:00
Ting-Yu Chou
337e68fa28 Bug 1333003 part 4 - Package the binary of llvm-symbolizer also on Windows. r=ted
MozReview-Commit-ID: 4nhVgQTJ7Bz

--HG--
extra : rebase_source : 4df3d39da1847ff40927ec3d1f11f76916181a46
2017-03-10 12:24:02 +08:00
Mike Hommey
97164d67cd Bug 1353661 - Don't build elfhack/inject during export. r=mshal
When the clang plugin is used, building something during export needs to
happen after the plugin is built. But there is no dependency ensuring
this happens.

OTOH, these sources in elfhack/inject don't need to be built that early,
so we'll just leave to the build system to build it at a proper time.

--HG--
extra : rebase_source : a6bef8ec6eece3a1b0e45f84c907c2fbc0800863
2017-04-05 18:01:33 +09:00
Wes Kocher
93d11e3441 Backed out 7 changesets (bug 1333003) for windows asan failures a=backout
Backed out changeset 3d2b2eeda8d3 (bug 1333003)
Backed out changeset 400d409ba4ca (bug 1333003)
Backed out changeset 1ba027abdfc9 (bug 1333003)
Backed out changeset 70114135bd8c (bug 1333003)
Backed out changeset 5715b15e33c0 (bug 1333003)
Backed out changeset 375e952bd738 (bug 1333003)
Backed out changeset d5d4112599f2 (bug 1333003)

MozReview-Commit-ID: DZUHJTdjX7V
2017-03-23 11:01:44 -07:00
Ting-Yu Chou
e83fb17b3a Bug 1333003 part 4 - Package the binary of llvm-symbolizer also on Windows. r=ted
MozReview-Commit-ID: 4nhVgQTJ7Bz

--HG--
extra : rebase_source : 4df3d39da1847ff40927ec3d1f11f76916181a46
2017-03-10 12:24:02 +08:00
Carsten "Tomcat" Book
5787f19c5c Backed out changeset d88370d20b83 (bug 1333003) 2017-03-23 10:38:13 +01:00
Ting-Yu Chou
319b8a884d Bug 1333003 part 4 - Package the binary of llvm-symbolizer also on Windows. r=ted
MozReview-Commit-ID: 4nhVgQTJ7Bz

--HG--
extra : rebase_source : 4df3d39da1847ff40927ec3d1f11f76916181a46
2017-03-10 12:24:02 +08:00
Jesse Schwartzentruber
df40990bb3 Bug 1335411 - Fix --enable-address-sanitizer for Mac cross-compilation and adapt Linux ASan configs for Mac. r=froydnj
--HG--
extra : rebase_source : 493400a792fd50266a8d434b842710586c7947c5
2017-02-10 11:10:23 -05:00
Mike Hommey
8e89cfc337 Bug 1338016 - Use clang from tooltool to build hfsplus. r=mshal
--HG--
extra : rebase_source : 0c4aaad8bc04fe9ab4160e877cd4e09b3128bf94
2017-02-09 11:37:28 +09:00
Mike Hommey
226427e5a2 Bug 1335667 - Validate all downloaded sources when building GCC. r=froydnj
We can just check the GPG signature for the upstream tarballs that are
GPG signed. We keep a copy of the relevant GPG keys in tree so that
we only use a controlled set of keys.

I validated the GPG keys by:
- Creating a fresh keyring.
- Importing the keys with gpg --receive-key.
- Importing my own GPG public key in that keyring.
- Importing the gpg keys that the PGP pathfinder told me were on the path
  to those keys (which weren't directly in their keyring, so I had to
  manually find some steps first).
- Using `gpg --check-sigs` to validate that the all those keys I got are
  the right ones.

Then the relevant GPG keys were exported with `gpg --export --armor` and
stripped with https://github.com/glandium/pgpstrip/.

For MPC, the first GPG-signed version upstream was 0.8.2, while the GCC
script to download prerequisites downloads 0.8.1. So instead of using
0.8.1, we use 0.8.2, which we can verify.

For GMP, the GCC script downloads 4.3.2. The only web-of-trust path is
through a revoked key, which signs a revoked uid of the GMP key.
Releases newer than 5.1.0 are signed with a new key that can be
validated with the steps above. So instead of using 4.3.2, we use 5.1.3
(last of the 5.1.x line).

But MPFR 2.4.2, which the GCC script downloads, doesn't build against
GMP 5.1.3, so instead of that, we use MPFR 3.1.5.

Sadly, the remaining GCC prerequisites are not signed, so I had to:
- Download the files from ftp.gnu.org.
- Download the corresponding files from snapshot.debian.org.
- Compare the raw files when possible, or the uncompressed (not extracted)
  files (when, thankfully, they matched).
- Validate those snapshot.debian.org files checksums against the
  checksums in the corresponding Sources.bz2/xz files.
- Validate the Sources.bz2/xz checksums against the corresponding InRelease
  files.
- Validate the InRelease files GPG signatures against the Debian
  archives keyring.

With all those things we actually don't get through the GCC script, we
also change how we get those prerequisites, by diverting the commands
the script runs and making it output the urls instead of downloading and
extracting the files.

All downloaded files, GPG-validated or otherwise, have their SHA-256
digest checked against a list in build/unix/build-gcc/checksums.

--HG--
extra : rebase_source : e6809a6ac392e6c5f99801826e1d30bdeee7ddf5
2017-02-01 16:35:29 +09:00
Mike Hommey
4a68fd13bf Bug 1335667 - Use set -e instead of manual exit 1. r=froydnj
--HG--
extra : rebase_source : 2cdffa62dafab2f9cc588122bdb3240d92a8d188
2017-02-01 16:35:18 +09:00
Justin Wood
8cf804e40f Bug 1197325 - Generate mkfs.hfsplus. r=ted
MozReview-Commit-ID: Dl0eBQR8XFR

--HG--
extra : rebase_source : bc20b8c35b8d62b2230f52a076c619fc674047e1
2017-01-30 13:12:57 -05:00
Phil Ringnalda
0bf37ead29 Backed out 3 changesets (bug 1197325) for adding a burning Cc(hfsplus) job
CLOSED TREE

Backed out changeset 158233bce738 (bug 1197325)
Backed out changeset b5ac3fa0bbe7 (bug 1197325)
Backed out changeset 55a8ad127517 (bug 1197325)
2017-02-06 20:04:55 -08:00
Justin Wood
4d8337864f Bug 1197325 - Generate mkfs.hfsplus. r=ted
MozReview-Commit-ID: Dl0eBQR8XFR

--HG--
extra : rebase_source : e83031f29b85838f6478081a7b27415099132653
2017-01-30 13:12:57 -05:00
Benjamin Smedberg
ca77995f5d Bug 1333826 - Remove SDK_FILES, SDK_LIBRARY, and related is_sdk support in the build goop, r=mshal
MozReview-Commit-ID: 52vPyDXdFte

--HG--
extra : rebase_source : c3217730bb70eb7319152dd07536b12f49d6a597
2017-01-30 11:24:10 -05:00
Benjamin Smedberg
270de3f511 Bug 1333826 - Remove all references to MOZ_AUTOMATION_SDK, r=mshal
MozReview-Commit-ID: CuTK1hn0pVl

--HG--
extra : rebase_source : 4581c71360ccd81505079ee9e068ed2ca0431a6a
2017-01-25 12:30:49 -05:00
Nathan Froyd
d3f03b9167 Bug 1029245 - part 1 - modify build-gcc.sh to build GCC 4.9.4; r=glandium
PR 64905 apparently never got backported to 4.9.x, so we still need the
patch for that.
2016-12-21 04:28:08 -05:00
Mike Hommey
efb1ecf093 Bug 1321065 - Default to --enable-profiling for nightly milestones. r=gps
--HG--
extra : rebase_source : a811cd6a1e0ccae4fb07563fce152e2072ace862
2016-11-30 06:47:38 +09:00
Henri Sivonen
b66ce7516a Bug 1274196 - Turn on SSE2 autovectorization and SSE2-based floating-point math for 32-bit Linux. r=glandium.
MozReview-Commit-ID: K8CMfRxcLBH
2016-10-05 18:59:12 +03:00
Enes Goktas
2f65f683e3 Bug 1272629 - Add taskcluster task to build binutils package; r=glandium
MozReview-Commit-ID: AEOShpN8ZMI

--HG--
extra : rebase_source : fc8b99002c4944ae666b1a6922edc42d2b0805f4
extra : source : 86d07e6bd5b7197f249e5064ee600fe83b808fb1
2016-09-14 18:47:50 -07:00
Tom Tromey
5538d692d3 Bug 1286877 - do not set c-basic-offset for python-mode; r=gps
This removes the unnecessary setting of c-basic-offset from all
python-mode files.

This was automatically generated using

    perl -pi -e 's/; *c-basic-offset: *[0-9]+//'

... on the affected files.

The bulk of these files are moz.build files but there a few others as
well.

MozReview-Commit-ID: 2pPf3DEiZqx

--HG--
extra : rebase_source : 0a7dcac80b924174a2c429b093791148ea6ac204
2016-07-14 10:16:42 -06:00
Steve Fink
3765bea320 Bug 1280637 - Make --enable-thread-sanitizer & friends do more work, r=glandium
MozReview-Commit-ID: KinAe8zLivJ

--HG--
extra : rebase_source : 8ce1b58222a034f2d6ec45f28aabb3a543bc84c7
2016-07-12 17:30:23 -07:00
Mike Hommey
2fe5367788 Bug 1280338 - Use tooltool GCC's ld on TSan builds. r=froydnj
Something similar was done in bug 1278718 for ASan builds, because of
indirect dependencies on libstdc++ being picked by the linker and
leading to linkage failure with the older binutils from the CentOS 6
image we use to do desktop builds.
2016-06-16 16:16:51 +09:00
Mike Hommey
422162d82a Bug 1278718 - Use clang 3.8 on ASAN builds. r=decoder 2016-06-15 12:22:56 +09:00
Mike Hommey
9ae35b95e7 Bug 1278456 - Remove stdc++-compat hacks for libstdc++ < 4.6.1. r=froydnj 2016-06-12 18:52:21 +09:00
Mike Hommey
c5caa62fdf Bug 1278456 - Add the tooltool GCC library directory to LD_LIBRARY_PATH on Linux builds. r=mshal
Build slaves on automation are based on Centos 6, which doesn't have a
recent enough version of libstdc++ for our new requirements. But since
we're building with a recent GCC or clang with its own libstdc++, we do
have such a libstdc++ available somewhere, and the compiler picks it
when invoking the linker.

Problems start happening when we execute some of the built programs
during the build, like host tools (e.g. nsinstall), or target programs
(xpcshell, during packaging). In that case, we need the compiler's
libstdc++ to be used. Which required adding the GCC or clang library
directory to LD_LIBRARY_PATH.

Unconveniently enough, the clang 3.5 tooltool package we're using for
ASAN builds until we can update to at least 3.8 (bug 1278718) doesn't
contain libstdc++.so. So for those builds, pull the GCC package from
tooltool as well, and pick libstdc++ from there.
2016-06-12 18:52:15 +09:00
Mike Hommey
a172eece8b Bug 1261264 - Apply GCC PR64905 to fix miscompilation with -fomit-frame-pointer. r=froydnj
The new GCC tarball was built on
https://tools.taskcluster.net/task-inspector/#ADIOXxgZQ7-9HuqEYZc3mw/0
2016-04-08 06:45:06 +09:00
Edmund Wong
0621281471 bug 1262057 - Copy TOOLTOOL_DIR to mozconfig.linux. r=glandium
--HG--
extra : rebase_source : 6d717c0a6850ff2db90650002cbc9cba10ff9ed7
2016-04-06 08:04:00 +02:00
Mike Hommey
99fc89b5e2 Bug 1261263 - Remove test for libstdc++ headers conflict with clang 3.3. r=froydnj
Also remove the hack around it.
2016-04-05 07:16:44 +09:00
Mike Hommey
d464f29e5f Bug 1255813 - Remove build system support for Solaris, HPUX and AIX. r=ted 2016-03-15 07:34:50 +09:00
Mike Hommey
3fe18eae3b Bug 1175546 - Update GCC to 4.8.5 and bump minimum GCC version required to build. r=froydnj 2016-03-12 09:03:37 +09:00
Mike Shal
8a7fd16468 Bug 1253431 part 5 - Remove build/unix/Makefile.in; r=gps
MozReview-Commit-ID: 7FhprSrtqyt

--HG--
extra : rebase_source : 51a338e9c3e61eb39d3952176cc944c78fb64705
2016-01-21 16:46:34 -05:00
Justin Wood
31da749c7c Bug 1242641 - Update gtk3 package in tooltool to specify the fontconfig path in the setup.sh r=glandium 2016-02-05 16:21:19 -05:00
Nick Thomas
b4bf649673 Bug 1242641 - GTK+3 still not working for buildbot builds on beta. r=rail
gtk3/setup.sh at unpack time in tooltool

--HG--
extra : commitid : DaHpc9KeO2P
extra : rebase_source : b519795dc6ae1a57ea6ce1e246cba942564c7de5
2016-01-29 22:19:48 +13:00
Ehsan Akhgari
1c924b8602 Bug 1042132 - Part 1: Port build-clang.py to Windows; r=rail
This is useful for deploying clang-cl to the infrastructure.


--HG--
rename : build/unix/build-clang/clang-static-analysis-linux64-centos6.json => build/build-clang/clang-static-analysis-linux64-centos6.json
rename : build/unix/build-clang/clang-static-analysis-linux64.json => build/build-clang/clang-static-analysis-linux64.json
rename : build/unix/build-clang/clang-static-analysis-macosx64.json => build/build-clang/clang-static-analysis-macosx64.json
rename : build/unix/build-clang/llvm-debug-frame.patch => build/build-clang/llvm-debug-frame.patch
rename : build/unix/build-clang/query-selector-visibility.patch => build/build-clang/query-selector-visibility.patch
rename : build/unix/build-clang/return-empty-string-non-mangled.patch => build/build-clang/return-empty-string-non-mangled.patch
2016-02-08 14:55:27 -05:00
Wes Kocher
688614d3d2 Backed out changeset 65e246baede4 (bug 1242641) for valgrind bustage CLOSED TREE
--HG--
extra : commitid : 1sQ76xShsLg
2016-02-04 11:42:34 -08:00
Nick Thomas
c971ab5018 Bug 1242641 - GTK+3 still not working for buildbot builds on beta. r=rail
gtk3/setup.sh at unpack time in tooltool

--HG--
extra : rebase_source : c113d5b3a73afb8405804d4e9a7751e95eb0bed0
2016-01-29 22:19:48 +13:00
Mike Hommey
9ca9b3074c Bug 1245763 - Don't emit Sources objects when there is no Linkable in the same directory. r=gps
We have very few directories where we have SOURCES declared that are not
part of a library or program in some way. In fact, there is only one
where it is legitimate because we only use the object file
(build/unix/elfhack/inject). Others are the result of moz.build control
flow (see e.g. netwerk/standalone), and we end up building more objects
than we need to.

There are other cases where we need objects without actually linking
them anywhere, but there are other sources in the same directory, and a
corresponding Linkable is emitted. And in fact, the only case I knew
about (media/libvpx), doesn't use such objects since bug 1151175.
2016-02-04 17:16:29 +09:00
Ralph Giles
ca9efa0b37 Bug 1243037 - part 3 - move "unix" mozconfig.rust up a level; r=mshal
The unix mozconfig.rust is actually completely generic now that we're
using toolchains built with --enable-rpath in tooltool.

Move the mozconfig.rust fragment up a level to reduce confusion.
2016-01-27 08:19:34 -05:00
Mike Hommey
687d9646b3 Bug 1233963 - Work around recent GNU gold behavior with segments starting before the first section they contain. r=froydnj 2016-01-21 13:54:03 +09:00
Ralph Giles
48960fbdea Bug 1175359 - Enable rust in linux64 automation builds. r=mshal
Write a mozconfig.rust fragment which makes the rust toolchain
provided by tooltool available for linux builds, similar to
what we do for MacOS X.

Include this in linux64 mozconfigs to enable rust for official
nightly builds of that target. These aren't used outside of automation
builds, so including rust there will verify code on check-in
without requiring developers to install rust.

We must whitelist the mozconfig fragment to pass the consistency
check since we're not ready to let this feature ride the trains
to beta and release.

The tooltool reference is to a custom build of rustc 1.4
with --enable-rpath to avoid having to add the rustc lib
directory to LD_LIBRARY_PATH which somehow conflicts with
the gtk3 build we also install through tooltool.

It is also built with --enable-llvm-static-stdcpp on a
rust-buildbot dist docker image (centos:5 + script updates)
to avoid issues with GLIBCXX and GLIBC symbol versions.
2015-11-30 15:10:24 -08:00
Mike Hommey
eeb6e0e1c2 Bug 1186748 - Now that all builds are pulling the Gtk+3 tooltool package, remove the Gtk+2 fallback in mozconfig.gtk. r=mshal 2015-11-04 11:21:49 +09:00
Ehsan Akhgari
e7d8787503 Bug 1210154 - Part 1: Add the patches needed for rust-bindgen to the clang build; r=rail 2015-10-15 10:17:08 -04:00
Ehsan Akhgari
a7dbfbd7df Bug 1182727 - Part 19: Fix another stupid mistake in build_tar_package()
DONTBUILD
2015-10-13 16:04:40 -04:00
Ehsan Akhgari
f7c5e6ff63 Bug 1182727 - Part 18: Fix building clang on OSX 10.8 and older
This is documented on http://libcxx.llvm.org/.
2015-10-09 21:15:23 -04:00
Ehsan Akhgari
eb858c4b20 Bug 1182727 - Part 16: Fix a bug in build_tar_package 2015-10-08 11:30:41 -04:00
Ehsan Akhgari
fbf588270f Bug 1182727 - Part 14: Remove the old files that are not needed any more; r=rail 2015-10-02 11:09:21 -04:00
Ehsan Akhgari
68537f63c4 Bug 1182727 - Part 12: Allow dumping out what the command is doing; r=rail 2015-10-02 11:09:17 -04:00
Ehsan Akhgari
22abaac72a Bug 1182727 - Part 11: Add a config file for Clang on CentOS6; r=rail 2015-10-02 11:09:15 -04:00
Ehsan Akhgari
d22cec1684 Bug 1182727 - Part 10: Make gcc_dir configurable; r=rail 2015-10-02 11:09:13 -04:00
Ehsan Akhgari
4d9a219994 Bug 1182727 - Part 9: Make python_path configurable; r=rail 2015-10-02 11:09:11 -04:00
Ehsan Akhgari
b279107ee2 Bug 1182727 - Part 8: Add some documentation and the new config files; r=rail 2015-10-02 11:09:09 -04:00
Ehsan Akhgari
02c518c779 Bug 1182727 - Part 7: Make build_libcxx configurable; r=rail 2015-10-02 11:09:07 -04:00
Ehsan Akhgari
c15428ca1e Bug 1182727 - Part 6: Add a --clean argument for cleaning the build directory; r=rail 2015-10-02 11:09:05 -04:00