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, [email protected] 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 >> >
signature.asc
Description: OpenPGP digital signature
