The `freestanding` library is built with specific compiler flags to signify
that it is indeed freestanding code. That is, it does not depend on a
standard library.
One of the requirements of freestanding code is that the toolchain still
expects implementations of `memcpy`, `memmove`, `memcmp`, and `memset`.
I did briefly implement my own naive versions of these functions, but that
solution is less than ideal since the implementations must be `extern` and are
thus picked up by the entire `firefox.exe` binary. This denies the rest of
`firefox.exe` the benefit of optimized implementations. On Windows, the
sandbox is linked into `firefox.exe`, so we cannot just shrug and
assume that naive implementations will not have any effect on anything.
There are, however, optimized implementations of these functions that are
exported by `ntdll.dll`. They are not included in the `ntdll.lib` that is
included in the Windows SDK. Using `llvm-dlltool`, we can build an import
library containing the missing entries and then add that library to `OS_LIBS`.
Differential Revision: https://phabricator.services.mozilla.com/D43157
--HG--
extra : moz-landing-system : lando
The `freestanding` library is built with specific compiler flags to signify
that it is indeed freestanding code. That is, it does not depend on a
standard library.
One of the requirements of freestanding code is that the toolchain still
expects implementations of `memcpy`, `memmove`, `memcmp`, and `memset`.
I did briefly implement my own naive versions of these functions, but that
solution is less than ideal since the implementations must be `extern` and are
thus picked up by the entire `firefox.exe` binary. This denies the rest of
`firefox.exe` the benefit of optimized implementations. On Windows, the
sandbox is linked into `firefox.exe`, so we cannot just shrug and
assume that naive implementations will not have any effect on anything.
There are, however, optimized implementations of these functions that are
exported by `ntdll.dll`. They are not included in the `ntdll.lib` that is
included in the Windows SDK. Using `llvm-dlltool`, we can build an import
library containing the missing entries and then add that library to `OS_LIBS`.
Differential Revision: https://phabricator.services.mozilla.com/D43157
--HG--
extra : moz-landing-system : lando
The `freestanding` library is built with specific compiler flags to signify
that it is indeed freestanding code. That is, it does not depend on a
standard library.
One of the requirements of freestanding code is that the toolchain still
expects implementations of `memcpy`, `memmove`, `memcmp`, and `memset`.
I did briefly implement my own naive versions of these functions, but that
solution is less than ideal since the implementations must be `extern` and are
thus picked up by the entire `firefox.exe` binary. This denies the rest of
`firefox.exe` the benefit of optimized implementations. On Windows, the
sandbox is linked into `firefox.exe`, so we cannot just shrug and
assume that naive implementations will not have any effect on anything.
There are, however, optimized implementations of these functions that are
exported by `ntdll.dll`. They are not included in the `ntdll.lib` that is
included in the Windows SDK. Using `llvm-dlltool`, we can build an import
library containing the missing entries and then add that library to `OS_LIBS`.
Differential Revision: https://phabricator.services.mozilla.com/D43157
--HG--
extra : moz-landing-system : lando
It was added in bug 1575760 and turns out to be causing a lot more
problems than anticipated.
However, the previous status quo is also not ideal, so we do
auto-generate .cargo/config.in instead, with a little trick that allows
to just copy it to .cargo/config instead of how individual scripts would
previously manually preprocess it.
Differential Revision: https://phabricator.services.mozilla.com/D46138
--HG--
extra : moz-landing-system : lando
New releases of the `adler32-rs` crate have this license, and we already
incorporate zlib into Firefox, so crates using this license should be allowed.
..and since `adler32-rs` now has an obviously acceptable license, we can
remove it from the list of build-time exceptions.
Differential Revision: https://phabricator.services.mozilla.com/D46283
--HG--
extra : moz-landing-system : lando
The underlying native libraries are identical between Fennec and
GeckoView example. This paves the way for removing Fennec entirely.
At the same, remove the `.ini` extraction, which is no longer required.
Differential Revision: https://phabricator.services.mozilla.com/D45769
--HG--
extra : moz-landing-system : lando
These were originally in exports because having it in the same tier as
the install rule interacted poorly with VPATH. Now that we no longer
have a generic VPATH rule, make can handle the rules properly with
everything in misc.
Differential Revision: https://phabricator.services.mozilla.com/D42969
--HG--
extra : moz-landing-system : lando
The build system has no clue that there is something to build in
dom/bindings/test. It's currently all handled via make rules generated
by the backend, but ideally, this would all be handled by the frontend
emitting appropriate GeneratedFiles and Sources objects.
In the meanwhile, we just force the make backend to recurse through
dom/bindings/test.
Differential Revision: https://phabricator.services.mozilla.com/D45124
--HG--
extra : moz-landing-system : lando
The build system has no clue that there is something to build in
dom/bindings/test. It's currently all handled via make rules generated
by the backend, but ideally, this would all be handled by the frontend
emitting appropriate GeneratedFiles and Sources objects.
In the meanwhile, we just force the make backend to recurse through
dom/bindings/test.
Differential Revision: https://phabricator.services.mozilla.com/D45124
--HG--
extra : moz-landing-system : lando
Having a full VPATH for the srcdir sometimes causes make to grab the
wrong prerequisite for a rule, in particular if we have a file in the
srcdir and also generate a file of the same name in the objdir. We don't
really need VPATH anymore though, since most of the information comes
from mozbuild, where we can explicitly list the path to the srcdir or
objdir as necessary.
Differential Revision: https://phabricator.services.mozilla.com/D42968
--HG--
extra : moz-landing-system : lando