-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEiKQfd6o81mjI+LWALell7WOCXJMFAl3kpZcACgkQLell7WOC
XJO45w//eUaKB8RrPARPqPgt1npwShaRf5mvyzkb1n4t/Acmjl7++wsAImLH5euH
qPfwvvIAO2dvxgDALTSxbk9C/ozlL1GUphUYqhrr1awIeXj5i+aeo3zdWv2mUl2f
9NR2Hw7fobz3iHxASd6iUhmVd6DgXkWQwnDdgtXKoQc8P+8QEpf8J6DnLLp9+w7n
2RD8qyovIFx4x57kvHH9+IvTa0V3/2hcGFsFPNQ7ytlMAHekqQdihC5nqFLGwGIn
p41ui0qhkn7pwa74qHlmyuKKZ6kT36UhJkVoL7JjcPWks7EngIJFsoeRtnpKHHfb
MSV6i6GgsPMfcWHXZa0+f8PdutLpcl6e+qGYM5lYgQedAqa3JqlJ1Af2S8AVLlRL
AntkoI8Gc38E8UoM01GDzs/3KYQ1UstG76hV2vV56//q8Y57YBiUKQ2EFM6TkImt
SOuoHdCZFaUkS+9jYMkuiZt/BBQK/2U/AxVAdFJccyasWV4gfe0WrOodziy6Cog4
dL8wzR4djgETo5k2FnwLnxuK7YOAy/ICW+X6HsM/aWvGM6HpK6QafrbbPKfqs2ks
NEiqCcANlHbKfGr4T84aSOaRzIgVBozIdHvsZC7Ztq8uih8kjqWwETCbEgyr4Mkn
lnCfffntp8Ud0sIQPRKFPv04F/wKfCsboxuOgR40kkVmTY6hJkI=
=7xVV
-----END PGP SIGNATURE-----
Thanks so much Brian! This patch works flawlessly!
On 12/1/19 6:45 AM, Brian Callahan wrote:
> Untested, but can you try adding the attached patch? It looks like
> spidermonkey just forgot to copy some defines over for mips. If not I'll
> take a closer look at it.
>
> ~Brian
>
> On 2019-12-01 5:14 AM, manphiz@gmail.com wrote:
>> Hi Ports maintainers,
>>
>> I'm having trouble to get devel/spidermonkey60 to build on mips64el.
>> The initial problem was the following error:
>>
>> ------8<------
>> usr/ports/pobj/spidermonkey-60.8.0/firefox-60.8.0/js/src/jit/mips64/LIR-mips64.h:17:45:
>>
>> error: no matching function for call to 'js::jit::LInstructionHelper<1,
>> 1, 0>::LInstructionHelper()'
>> explicit LUnbox(const LAllocation& input) { setOperand(0, input); }
>> ------8<------
>>
>> It turned out that JIT was not well supported on MIPS as suggested in
>> the Debian bug[1], and the solution is to disable JIT on MIPS[2]. I
>> added it to the configure args and get passed this issue. Probably this
>> patch[7] should be applied.
>>
>> However the second issue is more complicated. The error message is the
>> following:
>>
>> ------8<------
>> /usr/ports/pobj/spidermonkey-60.8.0/firefox-60.8.0/js/src/wasm/WasmSignalHandlers.cpp:101:26:
>>
>> error: 'ucontext_t' {aka 'struct sigcontext'} has no member named
>> 'sc_rsp'; did you mean 'sc_mask'?
>> #define RSP_sig(p) ((p)->sc_rsp)
>> ^~~~~~
>> /usr/ports/pobj/spidermonkey-60.8.0/firefox-60.8.0/js/src/wasm/WasmSignalHandlers.cpp:450:19:
>>
>> note: in expansion of macro 'RSP_sig'
>> #define SP_sig(p) RSP_sig(p)
>> ^~~~~~~
>> /usr/ports/pobj/spidermonkey-60.8.0/firefox-60.8.0/js/src/wasm/WasmSignalHandlers.cpp:481:37:
>>
>> note: in expansion of macro 'SP_sig'
>> return reinterpret_cast<uint8_t*>(SP_sig(context));
>> ^~~~~~
>> In file included from
>> /usr/ports/pobj/spidermonkey-60.8.0/firefox-60.8.0/js/src/js/src/Unified_cpp_js_src41.cpp:2:
>>
>> /usr/ports/pobj/spidermonkey-60.8.0/firefox-60.8.0/js/src/wasm/WasmSignalHandlers.cpp:
>>
>> In function 'uint8_t* ContextToLR(ucontext_t*)':
>> /usr/ports/pobj/spidermonkey-60.8.0/firefox-60.8.0/js/src/wasm/WasmSignalHandlers.cpp:451:19:
>>
>> error: 'R31_sig' was not declared in this scope
>> #define LR_sig(p) R31_sig(p)
>> ------8<------
>>
>> It seems that some members are missing from "struct sigcontext". The
>> relevant code from Firefox can be found at [3], which assumes some
>> members are available on OpenBSD. However, it turns out they are
>> available for some archs (e.g. AMD64[4]), but it's not for MIPS64[5].
>> The latest version of Firefox provides a more fine-grained check of
>> symbols for OpenBSD archs[6] but still assumes some symbols to be
>> available for all archs which are missing in MIPS64. And I'm not sure
>> about how this can be handled properly.
>>
>> On the other hand, I think this target is dragged in as an indirect
>> dependency of Emacs because I think it needs gjs and WASM may not be
>> required. Is there a way to disable compiling the WASM part?
>>
>>
>> [1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908486
>> [2]
>> https://salsa.debian.org/gnome-team/mozjs60/blob/debian/master/debian/rules#L42
>>
>> [3]
>> https://hg.mozilla.org/mozilla-central/file/e33efdb3e1517d521deb949de3fcd6d9946ea440/js/src/wasm/WasmSignalHandlers.cpp#l103
>>
>> [4]
>> https://github.com/openbsd/src/blob/b66614995ab119f75167daaa7755b34001836821/sys/arch/amd64/include/signal.h#L54
>>
>> [5]
>> https://github.com/openbsd/src/blob/b66614995ab119f75167daaa7755b34001836821/sys/arch/mips64/include/signal.h#L56
>>
>> [6]
>> https://hg.mozilla.org/mozilla-central/file/8504d70d827261346737af1cbe9b96acf6756b6d/js/src/wasm/WasmSignalHandlers.cpp#l80
>>
>> [7] Patch for disabling JIT on MIPS* archs:
>>
>> Index: Makefile
>> ===================================================================
>> RCS file: /cvs/ports/devel/spidermonkey60/Makefile,v
>> retrieving revision 1.12
>> diff -u -p -r1.12 Makefile
>> --- Makefile 26 Sep 2019 13:00:21 -0000 1.12
>> +++ Makefile 1 Dec 2019 10:12:07 -0000
>> @@ -78,6 +78,12 @@ CONFIGURE_ARGS = --disable-debug \
>> # /usr/bin/ld.lld: error: undefined symbol:
>> std::__1::basic_ostream<char, std::__1::char_traits<char>
>>> ::operator<<(unsigned long long)
>> CONFIGURE_ARGS += --disable-js-shell
>>
>> +# Build failure on mips64{,el}. Related bug on Debian:
>> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908486
>> +# error: no matching function for call to
>> 'js::jit::LInstructionHelper<1, 1, 0>::LInstructionHelper()'
>> +.if ${MACHINE_ARCH} == "mips64" || ${MACHINE_ARCH} == "mips64el"
>> +CONFIGURE_ARGS += --disable-ion
>> +.endif
>> +
>> SO_VERSION = ${LIBmozjs-${MOZILLA_VERSION}_VERSION}
>> SUBST_VARS += SO_VERSION
>>
>> cvs server: Diffing patches
>> cvs server: Diffing pkg
>>
>
No comments:
Post a Comment