Dactyloidae/xpcom/string
athenian200 0239eb8ac9 MoonchildProductions#1251 - Part 23: Allow AMD64 build to work.
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Compiling_32-bit_Firefox_on_a_Linux_64-bit_OS

Setting this up turned out to be easier than I thought it would be. All I had to do was apply these instructions in reverse and add the following to my .mozconfig file:

CC="gcc -m64"
CXX="g++ -m64"
AS="gas --64"
ac_add_options --target=x86_64-pc-solaris2.11
export PKG_CONFIG_PATH=/usr/lib/amd64/pkgconfig
ac_add_options --libdir=/usr/lib/amd64
ac_add_options --x-libraries=/usr/lib/amd64

Most of these changes were fairly trivial, just requiring me to make a few of the changes I made earlier conditional on a 32-bit build. The biggest challenge was figuring out why the JavaScript engine triggered a segfault everytime it tried to allocate memory. But this patch fixes it:

https://github.com/OpenIndiana/oi-userland/blob/oi/hipster/components/web/firefox/patches/patch-js_src_gc_Memory.cpp.patch

Turns out that Solaris on AMD64 handles memory management in a fairly unusual way with a segmented memory model, but it's not that different from what we see on other 64-bit processors. In fact, I saw a SPARC crash for a similar reason, and noticed that it looked just like mine except the numbers in the first segment were reversed. Having played around with hex editors before, I had a feeling I might be dealing with a little-endian version of a big-endian problem, but I didn't expect that knowledge to actually yield an easy solution.

https://bugzilla.mozilla.org/show_bug.cgi?id=577056

https://www.oracle.com/technetwork/server-storage/solaris10/solaris-memory-135224.html

As far as I can tell, this was the last barrier to an AMD64 Solaris build of Pale Moon.
2019-11-04 11:54:02 +08:00
..
crashtests
moz.build
nsAString.h
nsCharTraits.h
nsDependentString.cpp
nsDependentString.h
nsDependentSubstring.cpp
nsDependentSubstring.h
nsEmbedString.h
nsLiteralString.h
nsPrintfCString.h
nsPromiseFlatString.cpp
nsPromiseFlatString.h
nsReadableUtils.cpp
nsReadableUtils.h
nsReadableUtilsImpl.h Remove the const to fix the -Wignored-qualifiers warning with GCC 8 2019-02-16 00:10:59 +08:00
nsReadableUtilsSSE2.cpp
nsString.cpp
nsString.h
nsStringBuffer.h
nsStringComparator.cpp
nsStringFwd.h
nsStringIterator.h
nsStringObsolete.cpp
nsSubstring.cpp
nsSubstring.h
nsSubstringTuple.cpp
nsSubstringTuple.h
nsTDependentString.cpp
nsTDependentString.h
nsTDependentSubstring.cpp
nsTDependentSubstring.h
nsTLiteralString.h
nsTPromiseFlatString.cpp
nsTPromiseFlatString.h
nsTString.cpp
nsTString.h
nsTStringComparator.cpp
nsTStringObsolete.cpp
nsTSubstring.cpp
nsTSubstring.h MoonchildProductions#1251 - Part 23: Allow AMD64 build to work. 2019-11-04 11:54:02 +08:00
nsTSubstringTuple.cpp
nsTSubstringTuple.h
nsUTF8Utils.h
nsUTF8UtilsSSE2.cpp
nsXPCOMStrings.h
nsXPIDLString.h
README.html
string-template-def-char.h
string-template-def-unichar.h
string-template-undef.h

<html>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
   - License, v. 2.0. If a copy of the MPL was not distributed with this
   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<body>
  <h1><span class="LXRSHORTDESC">managing sequences of characters</span></h1>
<p>
  <span class="LXRLONGDESC"></span>
</p>
</body>
</html>