mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-05-04 20:06:43 +02:00
testing/xulrunner: add xulrunner-32.0
This commit is contained in:
parent
6bf481e6ab
commit
67f0d66bcc
29
testing/xulrunner/0002-Use-C99-math-isfinite.patch
Normal file
29
testing/xulrunner/0002-Use-C99-math-isfinite.patch
Normal file
@ -0,0 +1,29 @@
|
||||
From cdb9db4c1c593dbe22db4f389a62fce034f31f2d Mon Sep 17 00:00:00 2001
|
||||
From: Natanael Copa <ncopa@alpinelinux.org>
|
||||
Date: Fri, 25 Nov 2011 08:30:51 +0000
|
||||
Subject: [PATCH 2/4] Use C99 math isfinite
|
||||
|
||||
---
|
||||
xpcom/ds/nsMathUtils.h | 6 +++++-
|
||||
2 files changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/xpcom/ds/nsMathUtils.h b/xpcom/ds/nsMathUtils.h
|
||||
index 21ffbec..2e80476 100644
|
||||
--- a/xpcom/ds/nsMathUtils.h
|
||||
+++ b/xpcom/ds/nsMathUtils.h
|
||||
@@ -131,7 +131,11 @@ inline NS_HIDDEN_(bool) NS_finite(double d)
|
||||
// NOTE: '!!' casts an int to bool without spamming MSVC warning C4800.
|
||||
return !!_finite(d);
|
||||
#else
|
||||
- return finite(d);
|
||||
+#ifdef _GLIBCXX_CMATH
|
||||
+ return std::isfinite(d);
|
||||
+#else
|
||||
+ return isfinite(d);
|
||||
+#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
--
|
||||
1.7.7.4
|
||||
|
||||
67
testing/xulrunner/0003-xulrunner-jemalloc-aslr.patch
Normal file
67
testing/xulrunner/0003-xulrunner-jemalloc-aslr.patch
Normal file
@ -0,0 +1,67 @@
|
||||
From 88bb9f90ec1e4b43fb78596c8ff7577c92592eb4 Mon Sep 17 00:00:00 2001
|
||||
From: Natanael Copa <ncopa@alpinelinux.org>
|
||||
Date: Fri, 25 Nov 2011 08:36:52 +0000
|
||||
Subject: [PATCH 3/4] xulrunner: jemalloc aslr
|
||||
|
||||
---
|
||||
memory/jemalloc/jemalloc.c | 33 ++++++++++++++++++++++-----------
|
||||
1 files changed, 22 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/memory/jemalloc/jemalloc.c b/memory/jemalloc/jemalloc.c
|
||||
index ad7c450..91de92c 100644
|
||||
--- a/memory/mozjemalloc/jemalloc.c
|
||||
+++ b/memory/mozjemalloc/jemalloc.c
|
||||
@@ -410,7 +410,7 @@ void *_mmap(void *addr, size_t length, int prot, int flags,
|
||||
static const bool __isthreaded = true;
|
||||
#endif
|
||||
|
||||
-#if defined(MOZ_MEMORY_SOLARIS) && defined(MAP_ALIGN) && !defined(JEMALLOC_NEVER_USES_MAP_ALIGN)
|
||||
+#if defined(MOZ_MEMORY_SOLARIS) || defined(MOZ_MEMORY_LINUX) || defined(MOZ_MEMORY_BSD)
|
||||
#define JEMALLOC_USES_MAP_ALIGN /* Required on Solaris 10. Might improve performance elsewhere. */
|
||||
#endif
|
||||
|
||||
@@ -2181,20 +2181,31 @@ pages_map_align(size_t size, int pfd, size_t alignment)
|
||||
* We don't use MAP_FIXED here, because it can cause the *replacement*
|
||||
* of existing mappings, and we only want to create new mappings.
|
||||
*/
|
||||
-#ifdef MALLOC_PAGEFILE
|
||||
- if (pfd != -1) {
|
||||
- ret = mmap((void *)alignment, size, PROT_READ | PROT_WRITE, MAP_PRIVATE |
|
||||
- MAP_NOSYNC | MAP_ALIGN, pfd, 0);
|
||||
- } else
|
||||
-#endif
|
||||
- {
|
||||
- ret = mmap((void *)alignment, size, PROT_READ | PROT_WRITE, MAP_PRIVATE |
|
||||
- MAP_NOSYNC | MAP_ALIGN | MAP_ANON, -1, 0);
|
||||
- }
|
||||
+ ret = mmap(NULL, size + alignment, PROT_READ | PROT_WRITE, MAP_PRIVATE |
|
||||
+ MAP_NOSYNC| MAP_ANON, -1, 0);
|
||||
assert(ret != NULL);
|
||||
|
||||
if (ret == MAP_FAILED)
|
||||
ret = NULL;
|
||||
+ else {
|
||||
+ uintptr_t aligned_ret;
|
||||
+ size_t extra_size;
|
||||
+
|
||||
+ aligned_ret = (uintptr_t)ret + alignment - 1;
|
||||
+ aligned_ret &= ~(alignment - 1);
|
||||
+ extra_size = aligned_ret - (uintptr_t)ret;
|
||||
+ munmap(ret, extra_size);
|
||||
+ munmap(ret + extra_size + size, alignment - extra_size);
|
||||
+ ret = (void *)aligned_ret;
|
||||
+#ifdef MALLOC_PAGEFILE
|
||||
+ if (pfd != -1) {
|
||||
+ ret = mmap(ret, size, PROT_READ | PROT_WRITE, MAP_PRIVATE |
|
||||
+ MAP_NOSYNC | MAP_FIXED, pfd, 0);
|
||||
+ }
|
||||
+ if (ret == MAP_FAILED)
|
||||
+ ret = NULL;
|
||||
+#endif
|
||||
+ }
|
||||
return (ret);
|
||||
}
|
||||
#endif
|
||||
--
|
||||
1.7.7.4
|
||||
|
||||
175
testing/xulrunner/APKBUILD
Normal file
175
testing/xulrunner/APKBUILD
Normal file
@ -0,0 +1,175 @@
|
||||
# Contributor: William Pitcock <nenolod@dereferenced.org>
|
||||
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
|
||||
pkgname=xulrunner
|
||||
pkgver=32.0
|
||||
_ffoxver=$pkgver
|
||||
pkgrel=0
|
||||
pkgdesc="runtime environment for xul-based applications"
|
||||
url="http://developer.mozilla.org/en/XULRunner"
|
||||
arch="all"
|
||||
license="GPL LGPL MPL"
|
||||
depends=
|
||||
depends_dev="nspr-dev
|
||||
nss-dev
|
||||
gtk+-dev
|
||||
dbus-glib-dev
|
||||
alsa-lib-dev
|
||||
gstreamer1-dev
|
||||
gst-plugins-base1-dev
|
||||
libvorbis-dev
|
||||
libogg-dev
|
||||
libtheora-dev
|
||||
wireless-tools-dev
|
||||
libnotify-dev
|
||||
libevent-dev
|
||||
libvpx-dev
|
||||
libxt-dev
|
||||
libjpeg-turbo-dev
|
||||
bzip2-dev
|
||||
hunspell-dev
|
||||
startup-notification-dev
|
||||
sqlite-dev
|
||||
libidl-dev
|
||||
mesa-dev
|
||||
icu-dev"
|
||||
makedepends="$depends_dev
|
||||
autoconf2.13
|
||||
|
||||
sed
|
||||
python
|
||||
zip
|
||||
yasm
|
||||
paxctl
|
||||
|
||||
autoconf
|
||||
automake
|
||||
libtool"
|
||||
install=""
|
||||
options=""
|
||||
subpackages="$pkgname-dev $pkgname-dbg"
|
||||
source="ftp://ftp.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.bz2
|
||||
0002-Use-C99-math-isfinite.patch
|
||||
0003-xulrunner-jemalloc-aslr.patch
|
||||
getchar.patch
|
||||
stat.patch
|
||||
fix-arm-atomics-grsec.patch
|
||||
|
||||
fix-ipc.patch
|
||||
fix-media.patch
|
||||
fix-media-webrtc.patch
|
||||
fix-netwerk.patch
|
||||
fix-toolkit.patch
|
||||
fix-tools.patch
|
||||
mozilla-build-arm.patch
|
||||
|
||||
stab.h
|
||||
mozconfig
|
||||
"
|
||||
|
||||
# help our shared-object scanner to find the libs
|
||||
ldpath="/usr/lib/xulrunner-$pkgver"
|
||||
|
||||
_builddir="${srcdir}/mozilla-release"
|
||||
prepare() {
|
||||
local i
|
||||
|
||||
cd "$_builddir"
|
||||
|
||||
for i in $source; do
|
||||
case $i in
|
||||
*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
|
||||
esac
|
||||
done
|
||||
|
||||
cp "${srcdir}/mozconfig" .mozconfig || return 1
|
||||
sed -e "s/#${CLIBC}#//g" -i .mozconfig
|
||||
|
||||
cp "$srcdir"/stab.h toolkit/crashreporter/google-breakpad/src/
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "$_builddir"
|
||||
|
||||
# mozilla's buildsystem is on drugs, so we just kill our CFLAGS and hope
|
||||
# for the best. --nenolod
|
||||
unset CFLAGS
|
||||
unset CXXFLAGS
|
||||
|
||||
make -j1 -f client.mk build MOZ_MAKE_FLAGS="$MAKEFLAGS" || return 1
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$_builddir"
|
||||
|
||||
# only used for startupcache creation.
|
||||
local paxflags="-m"
|
||||
[ "$CARCH" = "x86" ] && paxflags="-msp"
|
||||
paxctl -c $paxflags */dist/bin/xpcshell || return 1
|
||||
|
||||
make -j1 DESTDIR="$pkgdir" -f client.mk install || return 1
|
||||
|
||||
# make install does not install xpt.py but its needed by firefox
|
||||
mkdir -p "$pkgdir"/usr/lib/xulrunner-devel-$pkgver/sdk/bin
|
||||
cp xpcom/typelib/xpt/tools/xpt.py \
|
||||
"$pkgdir"/usr/lib/xulrunner-devel-$pkgver/sdk/bin/
|
||||
|
||||
msg "Setting up compatibility symlinks..."
|
||||
ln -sf /usr/lib/xulrunner-${pkgver}/libxul.so "${pkgdir}"/usr/lib/libxul.so
|
||||
ln -sf /usr/lib/xulrunner-${pkgver}/libmozalloc.so "${pkgdir}"/usr/lib/libmozalloc.so
|
||||
}
|
||||
|
||||
dev() {
|
||||
replaces="xulrunner"
|
||||
depends="xulrunner"
|
||||
|
||||
mkdir -p "${subpkgdir}"/usr/lib
|
||||
mv "${pkgdir}"/usr/lib/xulrunner-devel-${pkgver} "${subpkgdir}"/usr/lib
|
||||
mv "${pkgdir}"/usr/lib/pkgconfig "${subpkgdir}"/usr/lib
|
||||
mv "${pkgdir}"/usr/include "${subpkgdir}"/usr/include
|
||||
}
|
||||
|
||||
md5sums="859d0b6fe2d36b6959cf08cee4c783cc firefox-32.0.source.tar.bz2
|
||||
f43c1f0ae57aa8289b130c6de8caf3ce 0002-Use-C99-math-isfinite.patch
|
||||
e8b3a22d670241bb5c038729ac49a975 0003-xulrunner-jemalloc-aslr.patch
|
||||
507742325de8687529e4e81e31132ddf getchar.patch
|
||||
d9a2245b93a7f5855ee029b5fa44e4e9 stat.patch
|
||||
b18bd948aae828e5c8f5f63e440c96d6 fix-arm-atomics-grsec.patch
|
||||
38a9c0d5be155164d50a956ac131d991 fix-ipc.patch
|
||||
f8bc97333847f37597c0bac0dca64eb2 fix-media.patch
|
||||
ce4839160acf3986a2118326ed2b8444 fix-media-webrtc.patch
|
||||
170b8e7f8cab21f0965f226c291a57f9 fix-netwerk.patch
|
||||
296954be4c6d6bfcc24d0a46a2bd7d74 fix-toolkit.patch
|
||||
2279c55a85013fc1c0d01427768edd4d fix-tools.patch
|
||||
308ba5b54116a035fe68d0d5c3974857 mozilla-build-arm.patch
|
||||
4383d038b8d8411ea46f4a109197c19e stab.h
|
||||
7701fb5564182cced00b2b45bce39685 mozconfig"
|
||||
sha256sums="3265971e15809ab904403b474fa9eccf15f34697deb16fc400c5c3684afd50eb firefox-32.0.source.tar.bz2
|
||||
2f319883300f2aef180bfb80221151fcbb29344a5a0a086d6ad1d80005daf039 0002-Use-C99-math-isfinite.patch
|
||||
324d5cd26858ad21bb4680db8635fb3fd014bf00a637bf9fb2b118c2925fc5e7 0003-xulrunner-jemalloc-aslr.patch
|
||||
d14357bf44f702d94b8d3ed79bdf81f6271370745c1ac8fa83522bd98be4adc4 getchar.patch
|
||||
a0f8a0fa9977ee43f3853b6c6bf5a506fdfabdfa32b4279e0ac3d7a3078f34cc stat.patch
|
||||
ff7cb3c9c4712e0517a6f11e3bf08e9b0d13dbe6384930bdc7f55b1ceed039b5 fix-arm-atomics-grsec.patch
|
||||
059a69ff0dbceeaa5bbb1446aa4233bc578a047fcad22c0efa27dc64bbd72980 fix-ipc.patch
|
||||
c1d0fbcf5e8610df9adc66ea956753e7d495e8ed2d1c1e06d183f4680c85db97 fix-media.patch
|
||||
3e53af8beff122bcf5790c148fb51f41f44b6fe5dd5799777b70c3542c32cb93 fix-media-webrtc.patch
|
||||
4a2f8ff5e9b1359541eba8854098cee2caeb40ad9dbdc4b8fcf48b47ea8ca2d2 fix-netwerk.patch
|
||||
666883189dba3f4c7ba6b5bc85026c85bcb84477c2d5ba00d6414ddd0f744368 fix-toolkit.patch
|
||||
60ed0870119480994c6c455034c52dd21b8482b7617c3a0032e3b2abf4467e4d fix-tools.patch
|
||||
6f5f5e4d2a17182b72b248e896450235ccdaf63252fdb89a8deb55da8adc9be3 mozilla-build-arm.patch
|
||||
960d82bbfdc88c95f5cb4f2e1c1bf23dae7519b3b7203914d7b3ddbff1ba4c28 stab.h
|
||||
bfc5a101a6a50490dc865b4b7cae94be5e4fad9ecd6b5bcccdd8380eeb1d1a71 mozconfig"
|
||||
sha512sums="e9422c92846bda9dfa4da914be1206c41a8edde7e8bb13d81211433fc2c9013bbaee9bded40f7acf031d675272b04d7902d5631d2932daa3a8a594f768c87974 firefox-32.0.source.tar.bz2
|
||||
9a6666a3b637549411ea562c9d0d6d617ed48327d0f9e4e64d27f43774c218e6c5cf5fa99d4b339a5a0f89b854a18079392eba0dafc3419adbd4cdd5d71d3f26 0002-Use-C99-math-isfinite.patch
|
||||
46caf196a9f68614c42b793befc7dc85438d30ce47c06ccc925aae14728d67b0d29192edba430c0a6237192e6d51db26dfc6e6190bc01937a828effd8136f37b 0003-xulrunner-jemalloc-aslr.patch
|
||||
18f0696bf4d032c83041110b83ae6531b48474a778fc1deade3b06ba2ae1bfcc9891059287bfb78317c2f5ddc88f5b7ce957312acdb63d4902a57e0b40eb6520 getchar.patch
|
||||
1a8754830dbbf5432a611504c957c4ff24fdc31dc1a5ee7cdd4240bc5c084baa26a24f18527ff398ec81e56a36aee31732138243cf22a6bab89703656ff463e7 stat.patch
|
||||
4311464ae52b6d2e2b02c789c6d5fca9b3c211888a983aa609a62c2f2554516fea735ea90673387c69b38a30aa8453ed79faa44b5163df4293880d40df676b2d fix-arm-atomics-grsec.patch
|
||||
3f360d4231355c268fc52e0fedbce5c4f73ad8d60d9424af8641733c0ae181e6226056e605f0d6653b729a9c8e4abe97a9fb2face25938651a7498d5753cea8b fix-ipc.patch
|
||||
f4d1b0814247cdfe1655a0f345def4f80bd66f37ae5b0edc2cd6b8358e39e9a1bcc0a4ed7d1c4074a1302fb027a2f8be549225c5f4f56caf2513c968ed05d666 fix-media.patch
|
||||
a5d00272fc9e2b3a786f5891bac11b04ffaf6dfcbd2b30cba42286b79d12fefb6cb9c81e6d75987ab3ee19d12af20a074c77edc655bd470be06f5025eb38e609 fix-media-webrtc.patch
|
||||
8a896ee4d1465a844351cec84217de1a28b9f27bfc1e34cc71368664b5b8804bd66bdcadc78c78ee365abd1d0cafed1e6c568045c93cb78ac94e2818f503d58c fix-netwerk.patch
|
||||
72459754016f254c58d56d9a8719897fa8da9cf969eaa498e1e755457942d3f0ac56e4abd3f6a66ef924c94aa034d0af18a1fb653926b2496f0c2615fdb24c5e fix-toolkit.patch
|
||||
426b57ce698de3eecd1b52f2998974c4e0b5922584b09b554d436c61fee039d1f86345e746fee067801ebbf50815c4d19b96266a2ed72a35ae5c3edbdb57bba1 fix-tools.patch
|
||||
e61664bc93eadce5016a06a4d0684b34a05074f1815e88ef2613380d7b369c6fd305fb34f83b5eb18b9e3138273ea8ddcfdcb1084fdcaa922a1e5b30146a3b18 mozilla-build-arm.patch
|
||||
0b3f1e4b9fdc868e4738b5c81fd6c6128ce8885b260affcb9a65ff9d164d7232626ce1291aaea70132b3e3124f5e13fef4d39326b8e7173e362a823722a85127 stab.h
|
||||
0cb16f394a3946a2bb31ef0084d8bbdc8e0e897d67c9224251d73fded07ab2fb193fcd8e5dd03109a3572a2455c44350b658cc64e2f981d047f45c8ade3afcf8 mozconfig"
|
||||
342
testing/xulrunner/fix-arm-atomics-grsec.patch
Normal file
342
testing/xulrunner/fix-arm-atomics-grsec.patch
Normal file
@ -0,0 +1,342 @@
|
||||
--- mozilla-release/ipc/chromium/src/base/atomicops_internals_arm_gcc.h.orig
|
||||
+++ mozilla-release/ipc/chromium/src/base/atomicops_internals_arm_gcc.h
|
||||
@@ -1,8 +1,31 @@
|
||||
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
||||
-// Use of this source code is governed by a BSD-style license that can be
|
||||
-// found in the LICENSE file.
|
||||
+// Copyright 2010 the V8 project authors. All rights reserved.
|
||||
+// Redistribution and use in source and binary forms, with or without
|
||||
+// modification, are permitted provided that the following conditions are
|
||||
+// met:
|
||||
+//
|
||||
+// * Redistributions of source code must retain the above copyright
|
||||
+// notice, this list of conditions and the following disclaimer.
|
||||
+// * Redistributions in binary form must reproduce the above
|
||||
+// copyright notice, this list of conditions and the following
|
||||
+// disclaimer in the documentation and/or other materials provided
|
||||
+// with the distribution.
|
||||
+// * Neither the name of Google Inc. nor the names of its
|
||||
+// contributors may be used to endorse or promote products derived
|
||||
+// from this software without specific prior written permission.
|
||||
+//
|
||||
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
-// This file is an internal atomic implementation, use base/atomicops.h instead.
|
||||
+// This file is an internal atomic implementation, use atomicops.h instead.
|
||||
//
|
||||
// LinuxKernelCmpxchg and Barrier_AtomicIncrement are from Google Gears.
|
||||
|
||||
@@ -12,43 +35,194 @@
|
||||
namespace base {
|
||||
namespace subtle {
|
||||
|
||||
-// 0xffff0fc0 is the hard coded address of a function provided by
|
||||
-// the kernel which implements an atomic compare-exchange. On older
|
||||
-// ARM architecture revisions (pre-v6) this may be implemented using
|
||||
-// a syscall. This address is stable, and in active use (hard coded)
|
||||
-// by at least glibc-2.7 and the Android C library.
|
||||
-typedef Atomic32 (*LinuxKernelCmpxchgFunc)(Atomic32 old_value,
|
||||
- Atomic32 new_value,
|
||||
- volatile Atomic32* ptr);
|
||||
-LinuxKernelCmpxchgFunc pLinuxKernelCmpxchg __attribute__((weak)) =
|
||||
- (LinuxKernelCmpxchgFunc) 0xffff0fc0;
|
||||
+// Memory barriers on ARM are funky, but the kernel is here to help:
|
||||
+//
|
||||
+// * ARMv5 didn't support SMP, there is no memory barrier instruction at
|
||||
+// all on this architecture, or when targeting its machine code.
|
||||
+//
|
||||
+// * Some ARMv6 CPUs support SMP. A full memory barrier can be produced by
|
||||
+// writing a random value to a very specific coprocessor register.
|
||||
+//
|
||||
+// * On ARMv7, the "dmb" instruction is used to perform a full memory
|
||||
+// barrier (though writing to the co-processor will still work).
|
||||
+// However, on single core devices (e.g. Nexus One, or Nexus S),
|
||||
+// this instruction will take up to 200 ns, which is huge, even though
|
||||
+// it's completely un-needed on these devices.
|
||||
+//
|
||||
+// * There is no easy way to determine at runtime if the device is
|
||||
+// single or multi-core. However, the kernel provides a useful helper
|
||||
+// function at a fixed memory address (0xffff0fa0), which will always
|
||||
+// perform a memory barrier in the most efficient way. I.e. on single
|
||||
+// core devices, this is an empty function that exits immediately.
|
||||
+// On multi-core devices, it implements a full memory barrier.
|
||||
+//
|
||||
+// * This source could be compiled to ARMv5 machine code that runs on a
|
||||
+// multi-core ARMv6 or ARMv7 device. In this case, memory barriers
|
||||
+// are needed for correct execution. Always call the kernel helper, even
|
||||
+// when targeting ARMv5TE.
|
||||
+//
|
||||
|
||||
-typedef void (*LinuxKernelMemoryBarrierFunc)(void);
|
||||
-LinuxKernelMemoryBarrierFunc pLinuxKernelMemoryBarrier __attribute__((weak)) =
|
||||
- (LinuxKernelMemoryBarrierFunc) 0xffff0fa0;
|
||||
+inline void MemoryBarrier() {
|
||||
+#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \
|
||||
+ defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__)
|
||||
+ __asm__ __volatile__("dmb ish" ::: "memory");
|
||||
+#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || \
|
||||
+ defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \
|
||||
+ defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__)
|
||||
+ __asm__ __volatile__("mcr p15,0,r0,c7,c10,5" ::: "memory");
|
||||
+#elif defined(__linux__) || defined(__ANDROID__)
|
||||
+ // Note: This is a function call, which is also an implicit compiler barrier.
|
||||
+ typedef void (*KernelMemoryBarrierFunc)();
|
||||
+ ((KernelMemoryBarrierFunc)0xffff0fa0)();
|
||||
+#error MemoryBarrier() is not implemented on this platform.
|
||||
+#endif
|
||||
+}
|
||||
|
||||
+// An ARM toolchain would only define one of these depending on which
|
||||
+// variant of the target architecture is being used. This tests against
|
||||
+// any known ARMv6 or ARMv7 variant, where it is possible to directly
|
||||
+// use ldrex/strex instructions to implement fast atomic operations.
|
||||
+#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \
|
||||
+ defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || \
|
||||
+ defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || \
|
||||
+ defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \
|
||||
+ defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__)
|
||||
|
||||
inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr,
|
||||
Atomic32 old_value,
|
||||
Atomic32 new_value) {
|
||||
- Atomic32 prev_value = *ptr;
|
||||
+ Atomic32 prev_value;
|
||||
+ int reloop;
|
||||
do {
|
||||
- if (!pLinuxKernelCmpxchg(old_value, new_value,
|
||||
- const_cast<Atomic32*>(ptr))) {
|
||||
- return old_value;
|
||||
- }
|
||||
- prev_value = *ptr;
|
||||
- } while (prev_value == old_value);
|
||||
+ // The following is equivalent to:
|
||||
+ //
|
||||
+ // prev_value = LDREX(ptr)
|
||||
+ // reloop = 0
|
||||
+ // if (prev_value != old_value)
|
||||
+ // reloop = STREX(ptr, new_value)
|
||||
+ __asm__ __volatile__(" ldrex %0, [%3]\n"
|
||||
+ " mov %1, #0\n"
|
||||
+ " cmp %0, %4\n"
|
||||
+#ifdef __thumb2__
|
||||
+ " it eq\n"
|
||||
+#endif
|
||||
+ " strexeq %1, %5, [%3]\n"
|
||||
+ : "=&r"(prev_value), "=&r"(reloop), "+m"(*ptr)
|
||||
+ : "r"(ptr), "r"(old_value), "r"(new_value)
|
||||
+ : "cc", "memory");
|
||||
+ } while (reloop != 0);
|
||||
return prev_value;
|
||||
}
|
||||
|
||||
+inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
|
||||
+ Atomic32 old_value,
|
||||
+ Atomic32 new_value) {
|
||||
+ Atomic32 result = NoBarrier_CompareAndSwap(ptr, old_value, new_value);
|
||||
+ MemoryBarrier();
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
+inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr,
|
||||
+ Atomic32 old_value,
|
||||
+ Atomic32 new_value) {
|
||||
+ MemoryBarrier();
|
||||
+ return NoBarrier_CompareAndSwap(ptr, old_value, new_value);
|
||||
+}
|
||||
+
|
||||
+inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr,
|
||||
+ Atomic32 increment) {
|
||||
+ Atomic32 value;
|
||||
+ int reloop;
|
||||
+ do {
|
||||
+ // Equivalent to:
|
||||
+ //
|
||||
+ // value = LDREX(ptr)
|
||||
+ // value += increment
|
||||
+ // reloop = STREX(ptr, value)
|
||||
+ //
|
||||
+ __asm__ __volatile__(" ldrex %0, [%3]\n"
|
||||
+ " add %0, %0, %4\n"
|
||||
+ " strex %1, %0, [%3]\n"
|
||||
+ : "=&r"(value), "=&r"(reloop), "+m"(*ptr)
|
||||
+ : "r"(ptr), "r"(increment)
|
||||
+ : "cc", "memory");
|
||||
+ } while (reloop);
|
||||
+ return value;
|
||||
+}
|
||||
+
|
||||
+inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr,
|
||||
+ Atomic32 increment) {
|
||||
+ // TODO(digit): Investigate if it's possible to implement this with
|
||||
+ // a single MemoryBarrier() operation between the LDREX and STREX.
|
||||
+ // See http://crbug.com/246514
|
||||
+ MemoryBarrier();
|
||||
+ Atomic32 result = NoBarrier_AtomicIncrement(ptr, increment);
|
||||
+ MemoryBarrier();
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr,
|
||||
Atomic32 new_value) {
|
||||
Atomic32 old_value;
|
||||
+ int reloop;
|
||||
do {
|
||||
+ // old_value = LDREX(ptr)
|
||||
+ // reloop = STREX(ptr, new_value)
|
||||
+ __asm__ __volatile__(" ldrex %0, [%3]\n"
|
||||
+ " strex %1, %4, [%3]\n"
|
||||
+ : "=&r"(old_value), "=&r"(reloop), "+m"(*ptr)
|
||||
+ : "r"(ptr), "r"(new_value)
|
||||
+ : "cc", "memory");
|
||||
+ } while (reloop != 0);
|
||||
+ return old_value;
|
||||
+}
|
||||
+
|
||||
+// This tests against any known ARMv5 variant.
|
||||
+#elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || \
|
||||
+ defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__)
|
||||
+
|
||||
+// The kernel also provides a helper function to perform an atomic
|
||||
+// compare-and-swap operation at the hard-wired address 0xffff0fc0.
|
||||
+// On ARMv5, this is implemented by a special code path that the kernel
|
||||
+// detects and treats specially when thread pre-emption happens.
|
||||
+// On ARMv6 and higher, it uses LDREX/STREX instructions instead.
|
||||
+//
|
||||
+// Note that this always perform a full memory barrier, there is no
|
||||
+// need to add calls MemoryBarrier() before or after it. It also
|
||||
+// returns 0 on success, and 1 on exit.
|
||||
+//
|
||||
+// Available and reliable since Linux 2.6.24. Both Android and ChromeOS
|
||||
+// use newer kernel revisions, so this should not be a concern.
|
||||
+namespace {
|
||||
+
|
||||
+inline int LinuxKernelCmpxchg(Atomic32 old_value,
|
||||
+ Atomic32 new_value,
|
||||
+ volatile Atomic32* ptr) {
|
||||
+ typedef int (*KernelCmpxchgFunc)(Atomic32, Atomic32, volatile Atomic32*);
|
||||
+ return ((KernelCmpxchgFunc)0xffff0fc0)(old_value, new_value, ptr);
|
||||
+}
|
||||
+
|
||||
+} // namespace
|
||||
+
|
||||
+inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr,
|
||||
+ Atomic32 old_value,
|
||||
+ Atomic32 new_value) {
|
||||
+ Atomic32 prev_value;
|
||||
+ for (;;) {
|
||||
+ prev_value = *ptr;
|
||||
+ if (prev_value != old_value)
|
||||
+ return prev_value;
|
||||
+ if (!LinuxKernelCmpxchg(old_value, new_value, ptr))
|
||||
+ return old_value;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr,
|
||||
+ Atomic32 new_value) {
|
||||
+ Atomic32 old_value;
|
||||
+ do {
|
||||
old_value = *ptr;
|
||||
- } while (pLinuxKernelCmpxchg(old_value, new_value,
|
||||
- const_cast<Atomic32*>(ptr)));
|
||||
+ } while (LinuxKernelCmpxchg(old_value, new_value, ptr));
|
||||
return old_value;
|
||||
}
|
||||
|
||||
@@ -63,36 +237,57 @@
|
||||
// Atomic exchange the old value with an incremented one.
|
||||
Atomic32 old_value = *ptr;
|
||||
Atomic32 new_value = old_value + increment;
|
||||
- if (pLinuxKernelCmpxchg(old_value, new_value,
|
||||
- const_cast<Atomic32*>(ptr)) == 0) {
|
||||
+ if (!LinuxKernelCmpxchg(old_value, new_value, ptr)) {
|
||||
// The exchange took place as expected.
|
||||
return new_value;
|
||||
}
|
||||
// Otherwise, *ptr changed mid-loop and we need to retry.
|
||||
}
|
||||
-
|
||||
}
|
||||
|
||||
inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
|
||||
Atomic32 old_value,
|
||||
Atomic32 new_value) {
|
||||
- return NoBarrier_CompareAndSwap(ptr, old_value, new_value);
|
||||
+ Atomic32 prev_value;
|
||||
+ for (;;) {
|
||||
+ prev_value = *ptr;
|
||||
+ if (prev_value != old_value) {
|
||||
+ // Always ensure acquire semantics.
|
||||
+ MemoryBarrier();
|
||||
+ return prev_value;
|
||||
+ }
|
||||
+ if (!LinuxKernelCmpxchg(old_value, new_value, ptr))
|
||||
+ return old_value;
|
||||
+ }
|
||||
}
|
||||
|
||||
inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr,
|
||||
Atomic32 old_value,
|
||||
Atomic32 new_value) {
|
||||
- return NoBarrier_CompareAndSwap(ptr, old_value, new_value);
|
||||
+ // This could be implemented as:
|
||||
+ // MemoryBarrier();
|
||||
+ // return NoBarrier_CompareAndSwap();
|
||||
+ //
|
||||
+ // But would use 3 barriers per succesful CAS. To save performance,
|
||||
+ // use Acquire_CompareAndSwap(). Its implementation guarantees that:
|
||||
+ // - A succesful swap uses only 2 barriers (in the kernel helper).
|
||||
+ // - An early return due to (prev_value != old_value) performs
|
||||
+ // a memory barrier with no store, which is equivalent to the
|
||||
+ // generic implementation above.
|
||||
+ return Acquire_CompareAndSwap(ptr, old_value, new_value);
|
||||
}
|
||||
|
||||
+#else
|
||||
+# error "Your CPU's ARM architecture is not supported yet"
|
||||
+#endif
|
||||
+
|
||||
+// NOTE: Atomicity of the following load and store operations is only
|
||||
+// guaranteed in case of 32-bit alignement of |ptr| values.
|
||||
+
|
||||
inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) {
|
||||
*ptr = value;
|
||||
}
|
||||
|
||||
-inline void MemoryBarrier() {
|
||||
- pLinuxKernelMemoryBarrier();
|
||||
-}
|
||||
-
|
||||
inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) {
|
||||
*ptr = value;
|
||||
MemoryBarrier();
|
||||
@@ -103,9 +298,7 @@
|
||||
*ptr = value;
|
||||
}
|
||||
|
||||
-inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) {
|
||||
- return *ptr;
|
||||
-}
|
||||
+inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) { return *ptr; }
|
||||
|
||||
inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) {
|
||||
Atomic32 value = *ptr;
|
||||
@@ -118,7 +311,6 @@
|
||||
return *ptr;
|
||||
}
|
||||
|
||||
-} // namespace base::subtle
|
||||
-} // namespace base
|
||||
+} } // namespace base::subtle
|
||||
|
||||
#endif // BASE_ATOMICOPS_INTERNALS_ARM_GCC_H_
|
||||
66
testing/xulrunner/fix-ipc.patch
Normal file
66
testing/xulrunner/fix-ipc.patch
Normal file
@ -0,0 +1,66 @@
|
||||
--- mozilla-release.orig/ipc/chromium/src/base/debug_util_posix.cc
|
||||
+++ mozilla-release/ipc/chromium/src/base/debug_util_posix.cc
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "build/build_config.h"
|
||||
#include "base/debug_util.h"
|
||||
|
||||
-#define MOZ_HAVE_EXECINFO_H (defined(OS_LINUX) && !defined(ANDROID))
|
||||
+#define MOZ_HAVE_EXECINFO_H (defined(OS_LINUX) && defined(__GLIBC__))
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
--- mozilla-release.orig/ipc/chromium/src/base/file_util.h
|
||||
+++ mozilla-release/ipc/chromium/src/base/file_util.h
|
||||
@@ -14,10 +14,15 @@
|
||||
#include <windows.h>
|
||||
#elif defined(ANDROID)
|
||||
#include <sys/stat.h>
|
||||
+#define NO_FTS
|
||||
#elif defined(OS_POSIX)
|
||||
#include <sys/types.h>
|
||||
-#include <fts.h>
|
||||
#include <sys/stat.h>
|
||||
+#ifdef __GLIBC__
|
||||
+#include <fts.h>
|
||||
+#else
|
||||
+#define NO_FTS
|
||||
+#endif
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
--- mozilla-release.orig/ipc/chromium/src/base/file_util_posix.cc
|
||||
+++ mozilla-release/ipc/chromium/src/base/file_util_posix.cc
|
||||
@@ -8,13 +8,13 @@
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <fnmatch.h>
|
||||
-#ifndef ANDROID
|
||||
+#ifndef NO_FTS
|
||||
#include <fts.h>
|
||||
#endif
|
||||
#include <libgen.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
-#include <sys/errno.h>
|
||||
+#include <errno.h>
|
||||
#include <sys/mman.h>
|
||||
#define _DARWIN_USE_64_BIT_INODE // Use 64-bit inode data structures
|
||||
#include <sys/stat.h>
|
||||
@@ -67,7 +67,7 @@
|
||||
if (!recursive)
|
||||
return (rmdir(path_str) == 0);
|
||||
|
||||
-#ifdef ANDROID
|
||||
+#ifdef NO_FTS
|
||||
// XXX Need ftsless impl for bionic
|
||||
return false;
|
||||
#else
|
||||
@@ -140,7 +140,7 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
-#ifdef ANDROID
|
||||
+#ifdef NO_FTS
|
||||
// XXX Need ftsless impl for bionic
|
||||
return false;
|
||||
#else
|
||||
14
testing/xulrunner/fix-media-webrtc.patch
Normal file
14
testing/xulrunner/fix-media-webrtc.patch
Normal file
@ -0,0 +1,14 @@
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1010194
|
||||
|
||||
diff -ru mozilla-release/media.orig/webrtc/signaling/src/sipcc/cpr/include/cpr_threads.h mozilla-release/media/webrtc/signaling/src/sipcc/cpr/include/cpr_threads.h
|
||||
--- mozilla-release/media.orig/webrtc/signaling/src/sipcc/cpr/include/cpr_threads.h 2014-05-07 01:56:10.000000000 -0300
|
||||
+++ mozilla-release/media/webrtc/signaling/src/sipcc/cpr/include/cpr_threads.h 2014-05-14 14:56:45.938648384 -0300
|
||||
@@ -30,7 +30,7 @@
|
||||
uint32_t threadId;
|
||||
union {
|
||||
void *handlePtr;
|
||||
- uint64_t handleInt;
|
||||
+ unsigned long handleInt;
|
||||
} u;
|
||||
} cpr_thread_t;
|
||||
|
||||
10
testing/xulrunner/fix-media.patch
Normal file
10
testing/xulrunner/fix-media.patch
Normal file
@ -0,0 +1,10 @@
|
||||
--- mozilla-release/media.orig/mtransport/third_party/nICEr/src/stun/addrs.c
|
||||
+++ mozilla-release/media/mtransport/third_party/nICEr/src/stun/addrs.c
|
||||
@@ -45,7 +45,6 @@
|
||||
#include <sys/param.h>
|
||||
#include <sys/socket.h>
|
||||
#ifndef ANDROID
|
||||
-#include <sys/sysctl.h>
|
||||
#include <sys/syslog.h>
|
||||
#else
|
||||
#include <syslog.h>
|
||||
37
testing/xulrunner/fix-netwerk.patch
Normal file
37
testing/xulrunner/fix-netwerk.patch
Normal file
@ -0,0 +1,37 @@
|
||||
--- ./netwerk.orig/sctp/src/netinet/sctp_os_userspace.h
|
||||
+++ ./netwerk/sctp/src/netinet/sctp_os_userspace.h
|
||||
@@ -400,11 +400,8 @@
|
||||
};
|
||||
|
||||
#else /* !defined(Userspace_os_Windows) */
|
||||
-#include <sys/cdefs.h> /* needed? added from old __FreeBSD__ */
|
||||
#include <sys/socket.h>
|
||||
-#if defined(__Userspace_os_DragonFly) || defined(__Userspace_os_FreeBSD) || defined(__Userspace_os_Linux) || defined(__Userspace_os_NetBSD) || defined(__Userspace_os_OpenBSD) || defined(ANDROID)
|
||||
#include <pthread.h>
|
||||
-#endif
|
||||
typedef pthread_mutex_t userland_mutex_t;
|
||||
typedef pthread_cond_t userland_cond_t;
|
||||
typedef pthread_t userland_thread_t;
|
||||
--- ./netwerk.orig/sctp/src/netinet/sctp_pcb.c
|
||||
+++ ./netwerk/sctp/src/netinet/sctp_pcb.c
|
||||
@@ -30,6 +30,9 @@
|
||||
* THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
+#define _BSD_SOURCE /* for IPPORT_RESERVED */
|
||||
+#include <netdb.h>
|
||||
+
|
||||
#ifdef __FreeBSD__
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/sys/netinet/sctp_pcb.c 258765 2013-11-30 12:51:19Z tuexen $");
|
||||
--- ./netwerk.orig/sctp/src/user_queue.h
|
||||
+++ ./netwerk/sctp/src/user_queue.h
|
||||
@@ -31,7 +31,7 @@
|
||||
#ifndef _USER_QUEUE_H_
|
||||
#define _USER_QUEUE_H_
|
||||
|
||||
-#if !defined (__Userspace_os_Windows)
|
||||
+#if defined(__Userspace_os_FreeBSD)
|
||||
#include <sys/cdefs.h>
|
||||
#endif
|
||||
/*
|
||||
151
testing/xulrunner/fix-toolkit.patch
Normal file
151
testing/xulrunner/fix-toolkit.patch
Normal file
@ -0,0 +1,151 @@
|
||||
diff -ru mozilla-release/toolkit.orig/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc mozilla-release/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc
|
||||
--- mozilla-release/toolkit.orig/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc 2014-03-15 05:19:36.000000000 +0000
|
||||
+++ mozilla-release/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc 2014-04-17 10:24:33.793431933 +0000
|
||||
@@ -45,6 +45,7 @@
|
||||
#include <sys/mman.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
+#include <libgen.h>
|
||||
|
||||
#include <iostream>
|
||||
#include <set>
|
||||
diff -ru mozilla-release/toolkit.orig/crashreporter/google-breakpad/src/common/stabs_reader.cc mozilla-release/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc
|
||||
--- mozilla-release/toolkit.orig/crashreporter/google-breakpad/src/common/stabs_reader.cc 2014-03-15 05:19:36.000000000 +0000
|
||||
+++ mozilla-release/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc 2014-04-17 10:24:33.793431933 +0000
|
||||
@@ -41,6 +41,10 @@
|
||||
|
||||
#include "common/using_std_string.h"
|
||||
|
||||
+#ifndef N_UNDF
|
||||
+#define N_UNDF 0
|
||||
+#endif
|
||||
+
|
||||
using std::vector;
|
||||
|
||||
namespace google_breakpad {
|
||||
diff -ru mozilla-release/toolkit.orig/crashreporter/google-breakpad/src/common/stabs_reader.h mozilla-release/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h
|
||||
--- mozilla-release/toolkit.orig/crashreporter/google-breakpad/src/common/stabs_reader.h 2014-03-15 05:19:36.000000000 +0000
|
||||
+++ mozilla-release/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h 2014-04-17 10:24:33.793431933 +0000
|
||||
@@ -53,9 +53,10 @@
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
-#ifdef HAVE_A_OUT_H
|
||||
+#if 0
|
||||
#include <a.out.h>
|
||||
#endif
|
||||
+
|
||||
#ifdef HAVE_MACH_O_NLIST_H
|
||||
#include <mach-o/nlist.h>
|
||||
#endif
|
||||
diff -ru mozilla-release/toolkit.orig/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h mozilla-release/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
|
||||
--- mozilla-release/toolkit.orig/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h 2014-03-15 05:19:37.000000000 +0000
|
||||
+++ mozilla-release/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h 2014-04-17 10:24:33.793431933 +0000
|
||||
@@ -2813,7 +2813,7 @@
|
||||
LSS_INLINE _syscall6(void*, mmap, void*, s,
|
||||
size_t, l, int, p,
|
||||
int, f, int, d,
|
||||
- __off64_t, o)
|
||||
+ off_t, o)
|
||||
|
||||
LSS_INLINE _syscall4(int, newfstatat, int, d,
|
||||
const char *, p,
|
||||
diff -ru mozilla-release/toolkit.orig/mozapps/update/common/updatedefines.h mozilla-release/toolkit/mozapps/update/common/updatedefines.h
|
||||
--- mozilla-release/toolkit.orig/mozapps/update/common/updatedefines.h 2014-03-15 05:19:37.000000000 +0000
|
||||
+++ mozilla-release/toolkit/mozapps/update/common/updatedefines.h 2014-04-17 10:24:33.793431933 +0000
|
||||
@@ -105,7 +105,7 @@
|
||||
|
||||
#ifdef SOLARIS
|
||||
# include <sys/stat.h>
|
||||
-#else
|
||||
+#elif !defined(__linux__) || defined(__GLIBC__)
|
||||
# include <fts.h>
|
||||
#endif
|
||||
# include <dirent.h>
|
||||
diff -ru mozilla-release/toolkit.orig/mozapps/update/updater/updater.cpp mozilla-release/toolkit/mozapps/update/updater/updater.cpp
|
||||
--- mozilla-release/toolkit.orig/mozapps/update/updater/updater.cpp 2014-03-15 05:19:37.000000000 +0000
|
||||
+++ mozilla-release/toolkit/mozapps/update/updater/updater.cpp 2014-04-17 10:24:33.796765327 +0000
|
||||
@@ -3432,6 +3432,7 @@
|
||||
int add_dir_entries(const NS_tchar *dirpath, ActionList *list)
|
||||
{
|
||||
int rv = OK;
|
||||
+#if !defined(__linux__) || defined(__GLIBC__)
|
||||
FTS *ftsdir;
|
||||
FTSENT *ftsdirEntry;
|
||||
NS_tchar searchpath[MAXPATHLEN];
|
||||
@@ -3534,6 +3535,7 @@
|
||||
}
|
||||
|
||||
fts_close(ftsdir);
|
||||
+#endif
|
||||
|
||||
return rv;
|
||||
}
|
||||
diff -ru mozilla-release/toolkit.orig/xre/nsSigHandlers.cpp mozilla-release/toolkit/xre/nsSigHandlers.cpp
|
||||
--- mozilla-release/toolkit.orig/xre/nsSigHandlers.cpp 2014-03-15 05:19:38.000000000 +0000
|
||||
+++ mozilla-release/toolkit/xre/nsSigHandlers.cpp 2014-04-17 10:24:33.796765327 +0000
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
+#include <sys/types.h>
|
||||
#include "prthread.h"
|
||||
#include "plstr.h"
|
||||
#include "prenv.h"
|
||||
@@ -152,7 +153,7 @@
|
||||
status->__invalid = status->__denorm = status->__zdiv = status->__ovrfl = status->__undfl =
|
||||
status->__precis = status->__stkflt = status->__errsumm = 0;
|
||||
|
||||
- __uint32_t *mxcsr = &uc->uc_mcontext->__fs.__fpu_mxcsr;
|
||||
+ u_int32_t *mxcsr = &uc->uc_mcontext->__fs.__fpu_mxcsr;
|
||||
*mxcsr |= SSE_EXCEPTION_MASK; /* disable all SSE exceptions */
|
||||
*mxcsr &= ~SSE_STATUS_FLAGS; /* clear all pending SSE exceptions */
|
||||
#endif
|
||||
@@ -172,13 +173,13 @@
|
||||
*sw &= ~FPU_STATUS_FLAGS;
|
||||
#endif
|
||||
#if defined(__amd64__)
|
||||
- __uint16_t *cw = &uc->uc_mcontext.fpregs->cwd;
|
||||
+ u_int16_t *cw = &uc->uc_mcontext.fpregs->cwd;
|
||||
*cw |= FPU_EXCEPTION_MASK;
|
||||
|
||||
- __uint16_t *sw = &uc->uc_mcontext.fpregs->swd;
|
||||
+ u_int16_t *sw = &uc->uc_mcontext.fpregs->swd;
|
||||
*sw &= ~FPU_STATUS_FLAGS;
|
||||
|
||||
- __uint32_t *mxcsr = &uc->uc_mcontext.fpregs->mxcsr;
|
||||
+ u_int32_t *mxcsr = &uc->uc_mcontext.fpregs->mxcsr;
|
||||
*mxcsr |= SSE_EXCEPTION_MASK; /* disable all SSE exceptions */
|
||||
*mxcsr &= ~SSE_STATUS_FLAGS; /* clear all pending SSE exceptions */
|
||||
#endif
|
||||
@@ -187,24 +188,24 @@
|
||||
ucontext_t *uc = (ucontext_t *)context;
|
||||
|
||||
#if defined(__i386)
|
||||
- uint32_t *cw = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.state[0];
|
||||
+ u_int32_t *cw = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.state[0];
|
||||
*cw |= FPU_EXCEPTION_MASK;
|
||||
|
||||
- uint32_t *sw = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.state[1];
|
||||
+ u_int32_t *sw = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.state[1];
|
||||
*sw &= ~FPU_STATUS_FLAGS;
|
||||
|
||||
/* address of the instruction that caused the exception */
|
||||
- uint32_t *ip = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.state[3];
|
||||
+ u_int32_t *ip = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.state[3];
|
||||
uc->uc_mcontext.gregs[REG_PC] = *ip;
|
||||
#endif
|
||||
#if defined(__amd64__)
|
||||
- uint16_t *cw = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.cw;
|
||||
+ u_int16_t *cw = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.cw;
|
||||
*cw |= FPU_EXCEPTION_MASK;
|
||||
|
||||
- uint16_t *sw = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.sw;
|
||||
+ u_int16_t *sw = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.sw;
|
||||
*sw &= ~FPU_STATUS_FLAGS;
|
||||
|
||||
- uint32_t *mxcsr = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.mxcsr;
|
||||
+ u_int32_t *mxcsr = &uc->uc_mcontext.fpregs.fp_reg_set.fpchip_state.mxcsr;
|
||||
*mxcsr |= SSE_EXCEPTION_MASK; /* disable all SSE exceptions */
|
||||
*mxcsr &= ~SSE_STATUS_FLAGS; /* clear all pending SSE exceptions */
|
||||
#endif
|
||||
49
testing/xulrunner/fix-tools.patch
Normal file
49
testing/xulrunner/fix-tools.patch
Normal file
@ -0,0 +1,49 @@
|
||||
--- mozilla-release.orig/tools/profiler/local_debug_info_symbolizer.cc
|
||||
+++ mozilla-release/tools/profiler/local_debug_info_symbolizer.cc
|
||||
@@ -3,6 +3,7 @@
|
||||
* 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/. */
|
||||
|
||||
+#include <sys/types.h>
|
||||
#include "PlatformMacros.h"
|
||||
#include "nsAutoPtr.h"
|
||||
|
||||
--- mozilla-release.orig/tools/profiler/platform-linux.cc
|
||||
+++ mozilla-release/tools/profiler/platform-linux.cc
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
#define SIGNAL_SAVE_PROFILE SIGUSR2
|
||||
|
||||
-#if defined(__GLIBC__)
|
||||
+#if 1
|
||||
// glibc doesn't implement gettid(2).
|
||||
#include <sys/syscall.h>
|
||||
pid_t gettid()
|
||||
--- mozilla-release.orig/tools/profiler/platform.h
|
||||
+++ mozilla-release/tools/profiler/platform.h
|
||||
@@ -29,6 +29,8 @@
|
||||
#ifndef TOOLS_PLATFORM_H_
|
||||
#define TOOLS_PLATFORM_H_
|
||||
|
||||
+#include <sys/types.h>
|
||||
+
|
||||
#ifdef ANDROID
|
||||
#include <android/log.h>
|
||||
#else
|
||||
--- mozilla-release.orig/tools/profiler/LulElf.cpp
|
||||
+++ mozilla-release/tools/profiler/LulElf.cpp
|
||||
@@ -579,10 +579,10 @@
|
||||
// Return the non-directory portion of FILENAME: the portion after the
|
||||
// last slash, or the whole filename if there are no slashes.
|
||||
string BaseFileName(const string &filename) {
|
||||
- // Lots of copies! basename's behavior is less than ideal.
|
||||
- char *c_filename = strdup(filename.c_str());
|
||||
- string base = basename(c_filename);
|
||||
- free(c_filename);
|
||||
+ // basename's behavior is less than ideal so avoid it
|
||||
+ const char *c_filename = filename.c_str();
|
||||
+ const char *p = strrchr(c_filename, '/');
|
||||
+ string base = p ? p+1 : c_filename;
|
||||
return base;
|
||||
}
|
||||
|
||||
14
testing/xulrunner/getchar.patch
Normal file
14
testing/xulrunner/getchar.patch
Normal file
@ -0,0 +1,14 @@
|
||||
--- ./media/webrtc/trunk/webrtc/system_wrappers/source/spreadsortlib/spreadsort.hpp.orig
|
||||
+++ ./media/webrtc/trunk/webrtc/system_wrappers/source/spreadsortlib/spreadsort.hpp
|
||||
@@ -21,6 +21,11 @@
|
||||
#include "constants.hpp"
|
||||
#include <cstring>
|
||||
|
||||
+/* prevent the getchar macro from stdio to take preference over the local var */
|
||||
+#if defined(__UCLIBC__)
|
||||
+#undef getchar
|
||||
+#endif
|
||||
+
|
||||
namespace boost {
|
||||
namespace detail {
|
||||
//This only works on unsigned data types
|
||||
46
testing/xulrunner/mozconfig
Normal file
46
testing/xulrunner/mozconfig
Normal file
@ -0,0 +1,46 @@
|
||||
. $topsrcdir/xulrunner/config/mozconfig
|
||||
|
||||
ac_add_options --prefix=/usr
|
||||
ac_add_options --libdir=/usr/lib
|
||||
ac_add_options --with-system-nspr
|
||||
ac_add_options --with-system-nss
|
||||
ac_add_options --with-system-jpeg
|
||||
ac_add_options --with-system-zlib
|
||||
ac_add_options --with-system-bz2
|
||||
ac_add_options --with-system-libevent
|
||||
ac_add_options --with-system-libvpx
|
||||
ac_add_options --with-system-pixman
|
||||
ac_add_options --with-system-png
|
||||
ac_add_options --enable-system-pixman
|
||||
ac_add_options --enable-system-hunspell
|
||||
ac_add_options --enable-system-sqlite
|
||||
ac_add_options --enable-system-cairo
|
||||
ac_add_options --enable-system-ffi
|
||||
ac_add_options --with-pthreads
|
||||
ac_add_options --enable-strip
|
||||
ac_add_options --disable-tests
|
||||
ac_add_options --disable-mochitest
|
||||
ac_add_options --disable-installer
|
||||
ac_add_options --disable-debug
|
||||
ac_add_options --enable-optimize
|
||||
ac_add_options --enable-default-toolkit=cairo-gtk2
|
||||
ac_add_options --enable-pango
|
||||
ac_add_options --enable-svg
|
||||
ac_add_options --enable-canvas
|
||||
ac_add_options --disable-javaxpcom
|
||||
ac_add_options --enable-safe-browsing
|
||||
ac_add_options --enable-startup-notification
|
||||
ac_add_options --enable-extensions=default
|
||||
ac_add_options --disable-elf-hack
|
||||
ac_add_options --enable-gio
|
||||
ac_add_options --enable-gstreamer=1.0
|
||||
ac_add_options --with-system-icu
|
||||
ac_add_options --disable-pulseaudio
|
||||
ac_add_options --disable-jemalloc
|
||||
ac_add_options --disable-crashreporter
|
||||
|
||||
export BUILD_OFFICIAL=1
|
||||
export MOZILLA_OFFICIAL=1
|
||||
|
||||
mk_add_options BUILD_OFFICIAL=1
|
||||
mk_add_options MOZILLA_OFFICIAL=1
|
||||
11
testing/xulrunner/mozilla-build-arm.patch
Normal file
11
testing/xulrunner/mozilla-build-arm.patch
Normal file
@ -0,0 +1,11 @@
|
||||
--- ./gfx/ycbcr/moz.build.orig 2014-04-03 13:50:38.990296661 +0000
|
||||
+++ ./gfx/ycbcr/moz.build 2014-04-03 13:52:26.878268547 +0000
|
||||
@@ -59,7 +59,7 @@
|
||||
'yuv_row_other.cpp',
|
||||
]
|
||||
|
||||
-if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['HAVE_ARM_NEON']:
|
||||
+if CONFIG['HAVE_ARM_NEON']:
|
||||
SOURCES += [
|
||||
'yuv_row_arm.s',
|
||||
]
|
||||
71
testing/xulrunner/stab.h
Normal file
71
testing/xulrunner/stab.h
Normal file
@ -0,0 +1,71 @@
|
||||
/* $OpenBSD: stab.h,v 1.3 2003/06/02 19:34:12 millert Exp $ */
|
||||
/* $NetBSD: stab.h,v 1.4 1994/10/26 00:56:25 cgd Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1991 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)stab.h 5.2 (Berkeley) 4/4/91
|
||||
*/
|
||||
|
||||
#ifndef _STAB_H_
|
||||
#define _STAB_H_
|
||||
|
||||
/*
|
||||
* The following are symbols used by various debuggers and by the Pascal
|
||||
* compiler. Each of them must have one (or more) of the bits defined by
|
||||
* the N_STAB mask set.
|
||||
*/
|
||||
|
||||
#define N_GSYM 0x20 /* global symbol */
|
||||
#define N_FNAME 0x22 /* F77 function name */
|
||||
#define N_FUN 0x24 /* procedure name */
|
||||
#define N_STSYM 0x26 /* data segment variable */
|
||||
#define N_LCSYM 0x28 /* bss segment variable */
|
||||
#define N_MAIN 0x2a /* main function name */
|
||||
#define N_PC 0x30 /* global Pascal symbol */
|
||||
#define N_RSYM 0x40 /* register variable */
|
||||
#define N_SLINE 0x44 /* text segment line number */
|
||||
#define N_DSLINE 0x46 /* data segment line number */
|
||||
#define N_BSLINE 0x48 /* bss segment line number */
|
||||
#define N_SSYM 0x60 /* structure/union element */
|
||||
#define N_SO 0x64 /* main source file name */
|
||||
#define N_LSYM 0x80 /* stack variable */
|
||||
#define N_BINCL 0x82 /* include file beginning */
|
||||
#define N_SOL 0x84 /* included source file name */
|
||||
#define N_PSYM 0xa0 /* parameter variable */
|
||||
#define N_EINCL 0xa2 /* include file end */
|
||||
#define N_ENTRY 0xa4 /* alternate entry point */
|
||||
#define N_LBRAC 0xc0 /* left bracket */
|
||||
#define N_EXCL 0xc2 /* deleted include file */
|
||||
#define N_RBRAC 0xe0 /* right bracket */
|
||||
#define N_BCOMM 0xe2 /* begin common */
|
||||
#define N_ECOMM 0xe4 /* end common */
|
||||
#define N_ECOML 0xe8 /* end common (local name) */
|
||||
#define N_LENG 0xfe /* length of preceding entry */
|
||||
|
||||
#endif /* !_STAB_H_ */
|
||||
25
testing/xulrunner/stat.patch
Normal file
25
testing/xulrunner/stat.patch
Normal file
@ -0,0 +1,25 @@
|
||||
--- ./dom/system/OSFileConstants.cpp.orig 2013-04-17 06:17:29.798371189 +0000
|
||||
+++ ./dom/system/OSFileConstants.cpp 2013-04-17 06:30:30.032285977 +0000
|
||||
@@ -509,6 +509,11 @@
|
||||
INT_CONSTANT(_STAT_VER),
|
||||
#endif // defined(_STAT_VER)
|
||||
|
||||
+ // glibc's stat/lstat/fstat are macros while uclibc's are not
|
||||
+#if defined(__GLIBC__) && !defined(__UCLIBC__)
|
||||
+ { "OSFILE_STAT_MACROS", INT_TO_JSVAL(1) },
|
||||
+#endif // defined(stat)
|
||||
+
|
||||
PROP_END
|
||||
};
|
||||
|
||||
--- ./toolkit/components/osfile/modules/osfile_unix_back.jsm.orig 2014-04-03 13:08:26.686409787 +0000
|
||||
+++ ./toolkit/components/osfile/modules/osfile_unix_back.jsm 2014-04-03 13:34:14.101716259 +0000
|
||||
@@ -512,7 +512,7 @@
|
||||
/*path*/ Type.fd,
|
||||
/*buf*/ Type.stat.out_ptr
|
||||
);
|
||||
- } else if (Const._STAT_VER != undefined) {
|
||||
+ } else if (Const.OSFILE_STAT_MACROS != undefined) {
|
||||
const ver = Const._STAT_VER;
|
||||
let xstat_name, lxstat_name, fxstat_name;
|
||||
if (OS.Constants.Sys.Name == "SunOS") {
|
||||
Loading…
x
Reference in New Issue
Block a user