Switch from yasm to nasm
Categories
(Firefox Build System :: General, task)
Tracking
(firefox88 fixed)
Tracking | Status | |
---|---|---|
firefox88 | --- | fixed |
People
(Reporter: glandium, Assigned: glandium)
References
(Blocks 1 open bug)
Details
Attachments
(11 files)
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review |
The last release of yasm was in 2014, and in most cases, we also require nasm on platforms where we require yasm. At the same time, we pass flags to yasm that make it take nasm syntax as input, so practically speaking, nasm can be used to replace yasm in a fairly straightforward manner. So instead of relying on two different assemblers, one of which is abandoned, rely on just one.
(This is also not a case of yasm being "finished" rather than abandoned. There are new instruction sets that yasm doesn't support but nasm does)
Assignee | ||
Comment 1•4 years ago
|
||
Note: even with bug 1693242 addressed, nasm is slower than yasm, but it also does (slightly) more work, such as using mov 42, %eax
instead of mov 42, %rax
(they do the same thing in practice (mov of 32-bits values in a 64-bits register clears the top-half of the 64-bits register) but encode in less bytes)
Assignee | ||
Comment 2•4 years ago
|
||
Back when bug 1508419 landed, we weren't using a bootstrapped nasm. It
is less useful now that we are.
Assignee | ||
Comment 3•4 years ago
|
||
Instead of preemptively check for it, and then check if it's good enough to
build AV1, only check for (and bootstrap) nasm when building AV1 requires
it.
At the same time, we future-proof the code to be able to handle multiple
things requiring nasm, which we're going to add shortly.
Assignee | ||
Comment 4•4 years ago
|
||
We're going to remove arguments to the function, and eventually remove
it.
Assignee | ||
Comment 5•4 years ago
|
||
We also remove the dependency on the check for GNU as, because all the
build environments we support for arm use GNU as, and the dependency
causes complications.
Assignee | ||
Comment 6•4 years ago
|
||
Assignee | ||
Comment 7•4 years ago
|
||
nasm doesn't like compiling simple_idct10.asm on x86
(https://bugzilla.nasm.us/show_bug.cgi?id=3392738), which is empty once
preprocessed for x86, so exclude it there.
Assignee | ||
Comment 8•4 years ago
|
||
nasm doesn't like compiling x86_abi_support.asm
(https://bugzilla.nasm.us/show_bug.cgi?id=3392738), which is actually an
include file, rather than a source file, so it shouldn't have been in
the list of sources in the first place (libvpx has a similar file that
is excluded already, for instance).
I was considering updating the vendoring script, but it turns out it
doesn't produce the current contents in-tree (which even breaks the
build), and aom is set to be removed (bug 1635296)...
Assignee | ||
Comment 9•4 years ago
|
||
Assignee | ||
Comment 10•4 years ago
|
||
Assignee | ||
Comment 11•4 years ago
|
||
Assignee | ||
Comment 12•4 years ago
|
||
We keep it in the Ubuntu image because that would mean rebuilding it,
which breaks things.
Comment 13•4 years ago
|
||
Comment 14•4 years ago
|
||
Comment 15•4 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/8b391b7adca2
https://hg.mozilla.org/mozilla-central/rev/a22f5d28effb
https://hg.mozilla.org/mozilla-central/rev/157125c6c140
https://hg.mozilla.org/mozilla-central/rev/2d3e201b3724
https://hg.mozilla.org/mozilla-central/rev/2d78e4bc3367
https://hg.mozilla.org/mozilla-central/rev/da0ee340f699
https://hg.mozilla.org/mozilla-central/rev/3b1e09a1e421
https://hg.mozilla.org/mozilla-central/rev/d74f2f0996f9
https://hg.mozilla.org/mozilla-central/rev/fdba4b86b00a
https://hg.mozilla.org/mozilla-central/rev/2310bd4635a2
https://hg.mozilla.org/mozilla-central/rev/001f6152928a
https://hg.mozilla.org/mozilla-central/rev/07420cd09432
Description
•