Hi Carsten! On 05/05/2017 11:47 AM, Carsten Schoenert wrote: > Could you prepare new updates patches so we can add sparc64 support > again? We probably need to upload more than one Debian version of 52.1.0 > so we could add a updated changeset in -2 or so.
Attaching an updated patch for sparc64. It compiles, but there are some issues with xpcshell which I need to figure out: Executing /<<PKGBUILDDIR>>/obj-thunderbird/dist/bin/xpcshell -g /<<PKGBUILDDIR>>/obj-thunderbird/dist/bin/ -a /<<PKGBUILDDIR>>/obj-thunderbird/dist/bin/ -f /<<PKGBUILDDIR>>/mozilla/toolkit/ mozapps/installer/precompile_cache.js -e precompile_startupcache("resource://gre/"); ^G[77997] ###!!! ABORT: u_init() failed: file /<<PKGBUILDDIR>>/mozilla/xpcom/build/XPCOMInit.cpp, line 709 [77997] ###!!! ABORT: u_init() failed: file /<<PKGBUILDDIR>>/mozilla/xpcom/build/XPCOMInit.cpp, line 709 Traceback (most recent call last): File "/<<PKGBUILDDIR>>/mozilla/toolkit/mozapps/installer/packager.py", line 415, in <module> main() File "/<<PKGBUILDDIR>>/mozilla/toolkit/mozapps/installer/packager.py", line 409, in main args.source, gre_path, base) File "/<<PKGBUILDDIR>>/mozilla/toolkit/mozapps/installer/packager.py", line 166, in precompile_cache errors.fatal('Error while running startup cache precompilation') File "/<<PKGBUILDDIR>>/mozilla/python/mozbuild/mozpack/errors.py", line 103, in fatal self._handle(self.FATAL, msg) File "/<<PKGBUILDDIR>>/mozilla/python/mozbuild/mozpack/errors.py", line 98, in _handle raise ErrorMessage(msg) mozpack.errors.ErrorMessage: Error: Error while running startup cache precompilation Please include the patch anyway, I will try to figure out what the problem is in the meantime. Might be a local issue, too. PS: The folder with the m68k support patch says "porting-mk68". Could you fix that to be "porting-m68k"? Thanks :). Adrian -- .''`. John Paul Adrian Glaubitz : :' : Debian Developer - glaub...@debian.org `. `' Freie Universitaet Berlin - glaub...@physik.fu-berlin.de `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
Description: Add sparc64 support to Thunderbird This is a squashed commit of the following patches cherry-picked from Firefox upstream to add sparc64 support: - a73e3b7ea901f648ae7e1c4b41d77c45786bff0b Bug 1275204 - protobuf: Sync sparc64 pre-processor defines from upstream. r=fitzgen - 9fd9034ad9de26cc0cb0c70f9307d501823a79d9 Bug 1275204 - media:webrtc: Use better pre-processor defines for sparc64. r=jesup - 87f559a4d89164c402d0f22b1ff7b8a686ececfd Bug 1275204 - js: Use the arm64 allocator on Linux/sparc64. r=ehoogeveen - ef8c81a9852551bb4428850687b41f7fb6137a45 Bug 1275204 - js: Use better pre-processor defines for sparc64. r=glandium - 120b9c868b2155c29eb5d18603a04f21620328af Bug 1275204 - ipc:chromium: Use better pre-processor defines for sparc64. r=froydnj - fde7f4bca8db23193ba04459aef21875f4602aa9 Bug 1275204 - Use OpenBSD/sparc64 xptcall stubs on Linux/sparc64. r=froydnj Author: John Paul Adrian Glaubitz <glaub...@physik.fu-berlin.de> Last-Update: 2017-06-01 --- icedove-52.1.1.orig/mozilla/ipc/chromium/src/build/build_config.h +++ icedove-52.1.1/mozilla/ipc/chromium/src/build/build_config.h @@ -87,7 +87,7 @@ #elif defined(__ppc__) || defined(__powerpc__) #define ARCH_CPU_PPC 1 #define ARCH_CPU_32_BITS 1 -#elif defined(__sparc64__) +#elif defined(__sparc__) && defined(__arch64__) #define ARCH_CPU_SPARC 1 #define ARCH_CPU_64_BITS 1 #elif defined(__sparc__) --- icedove-52.1.1.orig/mozilla/js/src/gc/Memory.cpp +++ icedove-52.1.1/mozilla/js/src/gc/Memory.cpp @@ -501,7 +501,9 @@ static inline void* MapMemoryAt(void* desired, size_t length, int prot = PROT_READ | PROT_WRITE, int flags = MAP_PRIVATE | MAP_ANON, int fd = -1, off_t offset = 0) { -#if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__)) || defined(__aarch64__) + +#if defined(__ia64__) || defined(__aarch64__) || \ + (defined(__sparc__) && defined(__arch64__) && (defined(__NetBSD__) || defined(__linux__))) MOZ_ASSERT((0xffff800000000000ULL & (uintptr_t(desired) + length - 1)) == 0); #endif void* region = mmap(desired, length, prot, flags, fd, offset); @@ -524,7 +526,7 @@ static inline void* MapMemory(size_t length, int prot = PROT_READ | PROT_WRITE, int flags = MAP_PRIVATE | MAP_ANON, int fd = -1, off_t offset = 0) { -#if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__)) +#if defined(__ia64__) || (defined(__sparc__) && defined(__arch64__) && defined(__NetBSD__)) /* * The JS engine assumes that all allocated pointers have their high 17 bits clear, * which ia64's mmap doesn't support directly. However, we can emulate it by passing @@ -551,7 +553,7 @@ MapMemory(size_t length, int prot = PROT return nullptr; } return region; -#elif defined(__aarch64__) +#elif defined(__aarch64__) || (defined(__sparc__) && defined(__arch64__) && defined(__linux__)) /* * There might be similar virtual address issue on arm64 which depends on * hardware and kernel configurations. But the work around is slightly --- icedove-52.1.1.orig/mozilla/js/src/jsapi-tests/testGCAllocator.cpp +++ icedove-52.1.1/mozilla/js/src/jsapi-tests/testGCAllocator.cpp @@ -312,7 +312,9 @@ void unmapPages(void* p, size_t size) { void* mapMemoryAt(void* desired, size_t length) { -#if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__)) || defined(__aarch64__) + +#if defined(__ia64__) || defined(__aarch64__) || \ + (defined(__sparc__) && defined(__arch64__) && (defined(__NetBSD__) || defined(__linux__))) MOZ_RELEASE_ASSERT(0xffff800000000000ULL & (uintptr_t(desired) + length - 1) == 0); #endif void* region = mmap(desired, length, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); @@ -334,7 +336,7 @@ mapMemory(size_t length) int fd = -1; off_t offset = 0; // The test code must be aligned with the implementation in gc/Memory.cpp. -#if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__)) +#if defined(__ia64__) || (defined(__sparc__) && defined(__arch64__) && defined(__NetBSD__)) void* region = mmap((void*)0x0000070000000000, length, prot, flags, fd, offset); if (region == MAP_FAILED) return nullptr; @@ -344,7 +346,7 @@ mapMemory(size_t length) return nullptr; } return region; -#elif defined(__aarch64__) +#elif defined(__aarch64__) || (defined(__sparc__) && defined(__arch64__) && defined(__linux__)) const uintptr_t start = UINT64_C(0x0000070000000000); const uintptr_t end = UINT64_C(0x0000800000000000); const uintptr_t step = js::gc::ChunkSize; --- icedove-52.1.1.orig/mozilla/media/webrtc/trunk/build/build_config.h +++ icedove-52.1.1/mozilla/media/webrtc/trunk/build/build_config.h @@ -138,7 +138,7 @@ #define ARCH_CPU_PPC 1 #define ARCH_CPU_32_BITS 1 #define ARCH_CPU_BIG_ENDIAN 1 -#elif defined(__sparc64__) +#elif defined(__sparc__) && defined(__arch64__) #define ARCH_CPU_SPARC_FAMILY 1 #define ARCH_CPU_SPARC 1 #define ARCH_CPU_64_BITS 1 --- icedove-52.1.1.orig/mozilla/media/webrtc/trunk/webrtc/typedefs.h +++ icedove-52.1.1/mozilla/media/webrtc/trunk/webrtc/typedefs.h @@ -61,7 +61,7 @@ #define WEBRTC_ARCH_BIG_ENDIAN #define WEBRTC_BIG_ENDIAN #endif -#elif defined(__sparc64__) +#elif defined(__sparc__) && defined(__arch64__) #define WEBRTC_ARCH_SPARC 1 #define WEBRTC_ARCH_64_BITS 1 #define WEBRTC_ARCH_BIG_ENDIAN --- icedove-52.1.1.orig/mozilla/toolkit/components/protobuf/m-c-changes.patch +++ icedove-52.1.1/mozilla/toolkit/components/protobuf/m-c-changes.patch @@ -408,3 +408,16 @@ diff --git a/toolkit/components/protobuf // return result; // // I.e., replace "*ptr" with "new_value" if "*ptr" used to be "old_value". +diff --git a/toolkit/components/protobuf/src/google/protobuf/stubs/platform_macros.h b/toolkit/components/protobuf/src/google/protobuf/stubs/platform_macros.h +index 7956d076dcd5..1bd67d436331 100644 +--- a/toolkit/components/protobuf/src/google/protobuf/stubs/platform_macros.h ++++ b/toolkit/components/protobuf/src/google/protobuf/stubs/platform_macros.h +@@ -67,7 +67,7 @@ + #define GOOGLE_PROTOBUF_ARCH_32_BIT 1 + #elif defined(sparc) + #define GOOGLE_PROTOBUF_ARCH_SPARC 1 +-#ifdef SOLARIS_64BIT_ENABLED ++#if defined(__sparc_v9__) || defined(__sparcv9) || defined(__arch64__) + #define GOOGLE_PROTOBUF_ARCH_64_BIT 1 + #else + #define GOOGLE_PROTOBUF_ARCH_32_BIT 1 --- icedove-52.1.1.orig/mozilla/toolkit/components/protobuf/src/google/protobuf/stubs/platform_macros.h +++ icedove-52.1.1/mozilla/toolkit/components/protobuf/src/google/protobuf/stubs/platform_macros.h @@ -67,7 +67,7 @@ #define GOOGLE_PROTOBUF_ARCH_32_BIT 1 #elif defined(sparc) #define GOOGLE_PROTOBUF_ARCH_SPARC 1 -#ifdef SOLARIS_64BIT_ENABLED +#if defined(__sparc_v9__) || defined(__sparcv9) || defined(__arch64__) #define GOOGLE_PROTOBUF_ARCH_64_BIT 1 #else #define GOOGLE_PROTOBUF_ARCH_32_BIT 1 --- icedove-52.1.1.orig/mozilla/xpcom/reflect/xptcall/md/unix/moz.build +++ icedove-52.1.1/mozilla/xpcom/reflect/xptcall/md/unix/moz.build @@ -232,7 +232,7 @@ if CONFIG['OS_ARCH'] == 'OpenBSD' and CO 'xptcstubs_ppc_openbsd.cpp', ] -if CONFIG['OS_ARCH'] == 'Linux' and 'sparc' in CONFIG['OS_TEST']: +if CONFIG['OS_ARCH'] == 'Linux' and CONFIG['OS_TEST'] == 'sparc': SOURCES += [ 'xptcinvoke_asm_sparc_linux_GCC3.s', 'xptcinvoke_sparc_solaris.cpp', @@ -256,7 +256,7 @@ if CONFIG['OS_ARCH'] == 'OpenBSD' and CO 'xptcstubs_sparc_openbsd.cpp', ] -if CONFIG['OS_ARCH'] in ('OpenBSD', 'FreeBSD') and CONFIG['OS_TEST'] == 'sparc64': +if CONFIG['OS_ARCH'] in ('OpenBSD', 'FreeBSD', 'Linux') and CONFIG['OS_TEST'] == 'sparc64': SOURCES += [ 'xptcinvoke_asm_sparc64_openbsd.s', 'xptcinvoke_sparc64_openbsd.cpp',