Граф коммитов

768 Коммитов

Автор SHA1 Сообщение Дата
Mike Hommey 985a376afa Bug 1526857 - Improve bindgen configuration wrt clang. r=chmanchester
The current setup for bindgen relies on either finding clang/libclang
from the output of llvm-config, or from the paths given via the
configure flags --with-clang-path/--with-libclang-path.

One _very_ common problem is that the llvm-config we end up using does
not correspond to the clang used for compilation, which has some
undesirable side effect, like failing to build.

So instead of relying on llvm-config, we do the following:
- when the compiler is clang, we just use that
- when the compiler is clang-cl, we use clang from the same directory
- otherwise, we either try to find clang in PATH, or rely on
  --with-clang-path.

Once clang is found, we try to deduce the location of the corresponding
libclang via the output of `clang -print-search-dirs`, or rely on
--with-libclang-path.

Differential Revision: https://phabricator.services.mozilla.com/D33241

--HG--
extra : moz-landing-system : lando
2019-06-05 02:48:20 +00:00
Mike Shal e52ded1092 Bug 1553065 - Move profile-use mozconfig info into common mozconfigs; r=firefox-build-system-reviewers,chmanchester
The 3-tier PGO builds used a separate mozconfig called 'profile-use' for
the final tier. This created a problem when it rode to beta, since the
same mozconfig was used for all trees, which meant we ended up with
nightly branding on beta builds.

With the PGO-enabling logic in common mozconfigs, we can enable it by
setting the MOZ_PGO_PROFILE_USE environment variable from the task
definition. All of the final-tier PGO builds now use the nightly, beta,
etc mozconfigs like before, so branding should be intact.

Differential Revision: https://phabricator.services.mozilla.com/D33172

--HG--
extra : moz-landing-system : lando
2019-05-31 23:56:16 +00:00
Mike Shal f5680f2fee Bug 1553065 - Use MOZ_LTO environment variable in mozconfig.unix; r=firefox-build-system-reviewers,chmanchester
This makes it consistent with bug 1530908 and 1536194.

Differential Revision: https://phabricator.services.mozilla.com/D33171

--HG--
extra : moz-landing-system : lando
2019-05-31 23:56:12 +00:00
Sylvestre Ledru e226046cb8 Bug 1547143 - Format the tree: Be prescriptive with the pointer style (left) r=Ehsan
# ignore-this-changeset

Depends on D28954

Differential Revision: https://phabricator.services.mozilla.com/D28956

--HG--
extra : moz-landing-system : lando
2019-05-01 08:47:10 +00:00
Nathan Froyd 3b7164be54 Bug 1542958 - fix code section adjustments in elfhack; r=glandium
We were never adjusting `last` in this loop, so we were computing the
wrong addresses for all sections beyond the first.  Which in turn meant
that we would compute the wrong size for the section data we needed to
allocate.

Differential Revision: https://phabricator.services.mozilla.com/D28195

--HG--
extra : moz-landing-system : lando
2019-04-22 23:44:28 +00:00
Nathan Froyd 0d8cc55ffb Bug 1542958 - avoid malloc/delete[] mismatches in elfhack; r=glandium
We were allocating ElfSection's data with `new[]` and modifying it with
`realloc` in some places, which causes allocator mismatches.
Consistently manage the data with `malloc`, `realloc`, and `free` instead.

Differential Revision: https://phabricator.services.mozilla.com/D27327

--HG--
extra : moz-landing-system : lando
2019-04-15 23:40:04 +00:00
Mike Hommey aeac69533b Bug 1540882 - Align binutils aarch64 target with build time clang --target. r=froydnj
When cross-building with clang, we use `--target` with a target that is
derived from the configure target, with the vendor removed. So for
`configure --target=aarch64-unknown-linux-gnu`, we use
`clang --target=aarch64-linux-gnu`.

Then, clang itself looks for tools as `$target-$tool` first, then
`$tool`, which means for the assembler,  it's looking for
`aarch64-linux-gnu-as` before `as`, but not
`aarch64-unknown-linux-gnu-as`.

Building GNU as with `--target=aarch64-unknown-linux-gnu` creates the
`aarch64-unknown-linux-gnu-as`, but we really want `aarch64-linux-gnu`,
so we adjust the target in the binutils build script.

Differential Revision: https://phabricator.services.mozilla.com/D25684

--HG--
extra : moz-landing-system : lando
2019-04-02 13:50:54 +00:00
Mike Hommey 920c719ba8 Bug 1540369 - Build GNU as for aarch64 target in binutils toolchain. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D25502

--HG--
extra : moz-landing-system : lando
2019-03-30 23:04:42 +00:00
Mike Hommey 25dbad7cb2 Bug 1536307 - Bump libstdc++ requirement to 4.7. r=froydnj
Last time we updated the requirements was in bug 1278456, after we
switched to GTK+3.

While it might be worth checking what would be a reasonable requirement,
the immediate problem is that updating ANGLE hits a snag with a
libstdc++ 4.7 symbol, and the only main distro release that bumping to
that version would make us not support anymore is Ubuntu 12.04 LTS,
EOLed 2 years ago (April 2017).

Bumping to some even newer version would need more consideration.
Desupporting Ubuntu 12.04 LTS at this point is almost a no-brainer.

Differential Revision: https://phabricator.services.mozilla.com/D23979

--HG--
extra : moz-landing-system : lando
2019-03-25 12:40:25 +00:00
Nathan Froyd 9ebe50fc6e Bug 1451104 - part 1 - be explicit about our GCC/binutils target and build machine; r=glandium
Explicit is better than implicit, and helps ensure that GCC is always
using the binutils we built it with, rather than the system binutils.

Differential Revision: https://phabricator.services.mozilla.com/D22879

--HG--
extra : moz-landing-system : lando
2019-03-15 01:28:10 +00:00
Gurzau Raul c3883e46f7 Backed out 6 changesets (bug 1451104) for toolchains bustage on a CLOSED TREE.
Backed out changeset 2f6199beeb71 (bug 1451104)
Backed out changeset 7c116f85ede6 (bug 1451104)
Backed out changeset 5179c8066914 (bug 1451104)
Backed out changeset 675f73d41eb4 (bug 1451104)
Backed out changeset c64bfaad8a2f (bug 1451104)
Backed out changeset 991777e081ff (bug 1451104)
2019-03-14 05:02:44 +02:00
Nathan Froyd 502083172c Bug 1451104 - part 1 - be explicit about our GCC/binutils target and build machine; r=glandium
Explicit is better than implicit, and helps ensure that GCC is always
using the binutils we built it with, rather than the system binutils.

Differential Revision: https://phabricator.services.mozilla.com/D22879

--HG--
extra : moz-landing-system : lando
2019-03-12 00:19:25 +00:00
Mike Hommey 26938ca3a9 Bug 1534524 - Apply the changes from bug 1470502 to build-binutils.sh. r=dmajor
Differential Revision: https://phabricator.services.mozilla.com/D23092

--HG--
extra : moz-landing-system : lando
2019-03-12 14:18:47 +00:00
Mike Hommey b0f3ca8044 Bug 1490573 - Use fetches for nsis and wine toolchain tasks. r=froydnj
These toolchain tasks are the last ones using the historical
download-tools script from build/unix/build-gcc, which invokes gpg to
validate the downloaded tarballs. The consequence is that gpg-agent is
spawned and stays running, preventing a cleanup script from doing its
job, making the tasks fail.

Fetches are the new way to download sources, and can also do gpg
validation without those caveats.

The download-tools.sh script can then be removed as it's not used
anymore.

Differential Revision: https://phabricator.services.mozilla.com/D22682

--HG--
extra : moz-landing-system : lando
2019-03-11 01:38:46 +00:00
Mike Hommey ad8855ed35 Bug 1525760 - Add a clang-based base toolchains task. r=froydnj
These are copies of the corresponding gcc-based base toolchain tasks,
with FORCE_GCC and the gcc dependency removed.

We also tweak things a little for those builds to actually end up green.

Differential Revision: https://phabricator.services.mozilla.com/D18903

--HG--
extra : moz-landing-system : lando
2019-02-09 09:41:03 +00:00
shindli a8e8126805 Backed out changeset 439db957d3e2 (bug 1525760) for linux64 toolchains bustages in toolkit/library/gtest/target CLOSED TREE 2019-02-09 07:19:32 +02:00
Mike Hommey 011c259380 Bug 1525760 - Add a clang-based base toolchains task. r=froydnj
These are copies of the corresponding gcc-based base toolchain tasks,
with FORCE_GCC and the gcc dependency removed.

We also tweak things a little for those builds to actually end up green.

Differential Revision: https://phabricator.services.mozilla.com/D18903

--HG--
extra : moz-landing-system : lando
2019-02-08 14:40:22 +00:00
Mike Hommey 247022a791 Bug 1525510 - Add a trampoline to call original_init when it's not possible directly. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D18807

--HG--
extra : moz-landing-system : lando
2019-02-07 16:23:49 +00:00
David Major 147bd27b98 Bug 1477306 - Point -fcrash-diagnostics-dir at UPLOAD_DIR when compiling with clang in automation r=firefox-build-system-reviewers,chmanchester
Differential Revision: https://phabricator.services.mozilla.com/D16765

--HG--
extra : moz-landing-system : lando
2019-01-22 19:27:13 +00:00
Ehsan Akhgari e5e885ae31 Bug 1521000 - Part 2: Adjust our clang-format rules to include spaces after the hash for nested preprocessor directives r=sylvestre
# ignore-this-changeset

--HG--
extra : amend_source : 7221c8d15a765df71171099468e7c7faa648f37c
extra : histedit_source : a0cce6015636202bff09e35a13f72e03257a7695
2019-01-18 10:16:18 +01:00
Sylvestre Ledru 265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Mike Hommey 29e5c3b9dd Bug 1505608 - Try to ensure the bss section of the elfhack testcase stays large enough. r=froydnj
In bug 1470701, we added a dummy global variable so that it ends up in
the bss section, making it large enough for two pointers. Unfortunately,
in some cases, the symbol is eliminated by the linker because it is
unused. So we try to ensure it stays there.

Differential Revision: https://phabricator.services.mozilla.com/D11257

--HG--
extra : moz-landing-system : lando
2018-11-08 14:50:22 +00:00
Mike Hommey 3d7847dc20 Bug 1501885 - Switch hfsplus toolchain to clang 7. r=ted
And remove the clang-6 toolchain, which is now unused.

Differential Revision: https://phabricator.services.mozilla.com/D9739

--HG--
extra : moz-landing-system : lando
2018-10-25 10:35:59 +00:00
Mike Hommey 0cf2b93ff2 Bug 1499915 - Support undoing elfhack when the elfhacked sections are in separate segments r=froydnj
This is some sort of followup to bug 1423813, providing a minimalistic
way to undo elfhack when the elfhack sections are in separate segments,
which has been the case since bug 1385783 but didn't cause problems
on Android builds until bug 1423822.

Depends on D9622

Differential Revision: https://phabricator.services.mozilla.com/D9623

--HG--
extra : moz-landing-system : lando
2018-10-24 13:42:38 +00:00
Mike Hommey 66921ba849 Bug 1499915 - Remove support for the elfhack filler segment r=froydnj
This effectively backs out bug 822584, which worked around a similar
problem to what we are facing with Android xpcshell, being that the
crash reporter doesn't handle the address space "fragmentation" induced
by elfhack. The work around worked, at the expense of some added
complexity.

It was used for B2G only, and has effectively been unused since B2G was
retired.

Differential Revision: https://phabricator.services.mozilla.com/D9622

--HG--
extra : moz-landing-system : lando
2018-10-24 13:42:31 +00:00
Tom Prince f85b06c132 Bug 1492526: Don't build mar's as part of the build; r=firefox-build-system-reviewers,mshal,Callek
We need to sign parts of the contents of the archives, so the mar's that we
ship get built as part of the repackage task. Thus, there is no reason to also
create and upload as part of the build, just to throw them away.

Differential Revision: https://phabricator.services.mozilla.com/D6213

--HG--
extra : moz-landing-system : lando
2018-10-01 18:15:40 +00:00
Mike Hommey 9f4a67977e Bug 1491140 - Count non-elfhacked relocations size when comparing to original size r=froydnj
When checking whether the new relocations sizes are going to be a win, we
need to account for the fact that there are non-elfhacked relocation
remaining.

Differential Revision: https://phabricator.services.mozilla.com/D5837

--HG--
extra : moz-landing-system : lando
2018-09-14 13:16:25 +00:00
Mike Hommey 682d2bd651 Bug 1491198 - Don't enable LTO on artifact builds r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D5836

--HG--
extra : moz-landing-system : lando
2018-09-14 17:33:45 +00:00
Chris Peterson e58c4d5a41 Bug 1490575 - Remove Mulet comments from build files. r=froydnj
Mulet was a Firefox OS simulator that is no longer supported: https://wiki.mozilla.org/Mulet

Differential Revision: https://phabricator.services.mozilla.com/D5735

--HG--
extra : rebase_source : d077c88b8446d0491b4af0dfe2198c4b980fa279
extra : source : 41301ab98bd094235b6995b18bcaa521f221c5f1
2018-09-11 23:07:32 -07:00
Mike Hommey 0a7e03bf20 Bug 1490542 - Remove the Linux LTO builds. r=froydnj
Now that Linux PGO builds also do LTO and all the Linux builds use
clang, there's not much use for separate LTO builds.

Differential Revision: https://phabricator.services.mozilla.com/D5632
2018-09-13 11:23:24 +09:00
Mike Hommey 1e441ae694 Bug 1481721 - Switch Linux nightlies and PGO builds to clang r=froydnj
And enable LTO on CI builds using clang + PGO.

Differential Revision: https://phabricator.services.mozilla.com/D4991

--HG--
extra : moz-landing-system : lando
2018-09-11 22:52:29 +00:00
Mike Hommey cd06f032af Bug 1079662 - Always enable PIE. r=froydnj
Last attempt, a few years ago, blatantly failed because nautilus (the
GNOME file manager) can't start PIE executables, which look like shared
libraries, and that it thus considers not being executables.

Downstreams don't actually have the problem, because users won't be
launching Firefox from a file manager, but for mozilla.org builds, it is
a problem because users would download, then extract, and then likely
try to run the Firefox executable from a file manager.

So for mozilla.org builds, we still need to find a way around the
nautilus problem.

A .desktop file could be a solution, but .desktop files have not
actually been designed for this use case, which leads to:
- having to use an awful one-liner shell wrapper to derive the path
  to the executable from that of the .desktop file,
- not even being able to associate an icon,
- the .desktop file not being copiable to a location where .desktop
  files would normally go, because it would then fail to find the
  executable.

Another possibility is to go back to using a shell wrapper, but that's
not entirely appealing.

What we chose here is similar, where we have a small `firefox` wrapper
that launches the real `firefox-bin` (which is still leftover from those
old times where we had a shell wrapper, for reasons).

The small `firefox` wrapper is a minimalist C executable that just
finds the path to the `firefox-bin` executable and executes it with the
same args it was called with. The wrapper is only enabled when the
MOZ_NO_PIE_COMPAT environment variable is set, which we only take into
account on Linux. The variable is only really meant to be used for
mozilla.org builds, for the nautilus problem. Downstreams will just pick
the default, which is changed to build PIE.

On other platforms, PIE was already enabled by default, so we just
remove the --enable-pie configure flag.

Differential Revision: https://phabricator.services.mozilla.com/D5109
2018-09-08 07:41:21 +09:00
Mike Hommey a5cbd7bc7e Bug 1489001 - Move most of mozconfig.linux to mozconfig.unix. r=froydnj
Bug 1487330 made mozconfig.asan use mozconfig.linux, but while that
worked out fine, it turns out that we do have mac builds using
e.g. mozconfig.asan, and that those can break when doing linux-specific
changes to mozconfig.linux.


--HG--
rename : build/unix/mozconfig.linux => build/unix/mozconfig.unix
2018-09-08 07:41:19 +09:00
Mike Hommey d974ecd01d Bug 1488632 - Don't disable the clang plugin on ASAN builds. r=dmajor
Somehow, bug 1488631 "fixes" the test failure that the original landing
of bug 1487330 caused.

Differential Revision: https://phabricator.services.mozilla.com/D5001
2018-09-08 06:51:22 +09:00
Ted Mielczarek eb72babf41 bug 1417646 - build geckodriver in cross-compile builds. r=ato
With patches from other bugs in place to use the right C compiler and cflags,
we can enable geckodriver on cross-compiles for macOS.

MozReview-Commit-ID: 5wqBiA6UCf
2018-07-05 07:19:24 -04:00
Mike Hommey f8fa0c1926 Bug 1482268 - Upgrade binutils for clang builds to 2.31.1. r=froydnj
All the Linux builds using GCC uses the binutils bundled with GCC. This
gives us some leeway to update the binutils used for clang builds (using
the binutils toolchain as of bug 1486998) separately.

Since we only ship builds using GCC, we're more free to upgrade
binutils for clang builds, without worrying about the next merge.

This upgrades to the last released version of binutils, and applies the
patch from https://sourceware.org/bugzilla/show_bug.cgi?id=23591 on top,
so that asan fuzzing builds don't fail.

The GPG key used to sign the upstream tarball is unfortunately not
connected to the web of trust. I verified the contents matched what's in
the Debian archive (which has a different tarball, because some files
are removed/modified in Debian for license reasons ; there were no
differences besides those).

Differential Revision: https://phabricator.services.mozilla.com/D4748

--HG--
extra : moz-landing-system : lando
2018-08-31 21:49:12 +00:00
Mike Hommey 880d97b311 Bug 1487330 - Make mozconfig.{asan,lto,tsan} use mozconfig.linux. r=froydnj
Those mozconfigs do things in common that are already in
mozconfig.linux. Let's just use that.

This will make the build have the binutils toolchain in PATH rather than
passing it to CC/CXX, which is better because it also makes the build
use tools such as ar, ranlib, objcopy from the binutils toolchain,
rather than the old system ones.

Differential Revision: https://phabricator.services.mozilla.com/D4649
2018-08-31 17:25:37 +09:00
Gurzau Raul 3291b096a2 Backed out changeset e1eac066705f (bug 1487330) for permafailing with leaks at mozilla::net::nsStandardURL::TemplatedMutator on a CLOSED TREE 2018-08-31 04:39:10 +03:00
Mike Hommey 78c3a07f1f Bug 1487330 - Make mozconfig.{asan,lto,tsan} use mozconfig.linux. r=froydnj
Those mozconfigs do things in common that are already in
mozconfig.linux. Let's just use that.

This will make the build have the binutils toolchain in PATH rather than
passing it to CC/CXX, which is better because it also makes the build
use tools such as ar, ranlib, objcopy from the binutils toolchain,
rather than the old system ones.

Differential Revision: https://phabricator.services.mozilla.com/D4649
2018-08-31 07:50:56 +09:00
Sebastian Hengst ceebee3842 Backed out 4 changesets (bug 1417646) for Webdriver missing geckodriver binary, at least on Linux x64 asan
Backed out changeset 1c7e3f8af2e3 (bug 1417646)
Backed out changeset 42ea09d91d7e (bug 1417646)
Backed out changeset 1a3c37471045 (bug 1417646)
Backed out changeset 7179a078b7b4 (bug 1417646)
2018-08-30 12:54:45 +03:00
Hiroyuki Ikezoe 84dbd47154 Bug 1417646 - Remove explicit ac_add_options --enable-geckodriver for linux32 build. r=me 2018-08-30 18:08:45 +09:00
Mike Hommey 6e78f08178 Bug 1486998 - Use the binutils toolchain instead of gcc for builds using clang. r=froydnj
This avoids downloading and unpacking a large package that we only use
for binutils when building with clang.

Differential Revision: https://phabricator.services.mozilla.com/D4516
2018-08-30 07:30:30 +09:00
Mike Hommey f3d7015c06 Bug 1486995 - Use fetch task for binutils source for the binutils toolchain. r=dmajor
While here, use nproc instead of hardcoding a -j value.

Differential Revision: https://phabricator.services.mozilla.com/D4515
2018-08-30 07:30:13 +09:00
Mike Hommey 357a8bb20c Bug 1486654 - Enable static analysis on all Linux CI builds. r=ted
And turn off separate static analysis build tasks.
2018-08-29 13:55:24 +09:00
Mike Hommey 99d57d4dfb Bug 1486652 - Make x86 linux builds actual cross builds. r=ted
The x86 linux builds originally were performed in x86 build environment.
That was a long time ago. Since then, they moved to x86-64 hosts with
x86 headers and libraries. But for reasons that might have to do with
the build system not really supporting cross-compilation nicely back
then, the build is still explicitly passing both --host and --target,
making those builds non-cross builds.

Since the toolchains used to build are for x86-64, the fact that --host
is for x86 actually prevents enabling the clang plugin, so we need to
turn these builds in actual cross builds if we want to enable the clang
plugin.
2018-08-29 13:50:02 +09:00
Dorel Luca 544b61c613 Backed out changeset 692efe8acba9 (bug 1486654) for wd failures on /builds/worker/workspace/build/tests/bin/geckodriver 2018-08-29 05:16:55 +03:00
Dorel Luca 05fb3381f3 Backed out changeset 9da60503ea49 (bug 1486652) for wd failures on /builds/worker/workspace/build/tests/bin/geckodriver 2018-08-29 05:16:13 +03:00
Mike Hommey 2ef817ea52 Bug 1486654 - Enable static analysis on all Linux CI builds. r=ted
And turn off separate static analysis build tasks.
2018-08-29 08:02:06 +09:00
Mike Hommey 49b5785ec6 Bug 1486652 - Make x86 linux builds actual cross builds. r=ted
The x86 linux builds originally were performed in x86 build environment.
That was a long time ago. Since then, they moved to x86-64 hosts with
x86 headers and libraries. But for reasons that might have to do with
the build system not really supporting cross-compilation nicely back
then, the build is still explicitly passing both --host and --target,
making those builds non-cross builds.

Since the toolchains used to build are for x86-64, the fact that --host
is for x86 actually prevents enabling the clang plugin, so we need to
turn these builds in actual cross builds if we want to enable the clang
plugin.
2018-08-29 08:02:05 +09:00
Mike Hommey 95f25c8a5d Bug 1485610 - Avoid copy relocations in binaries we build. r=froydnj
See bug 1485562 for an example of bad things that can happen with such
relocations, and see also
c90379ddfe/ELF/Relocations.cpp (L496-L537)
2018-08-24 08:57:04 +09:00