1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290
|
From: Carsten Schoenert <c.schoenert@t-online.de>
Date: Sat, 29 Mar 2014 20:58:55 +0100
Subject: FTBFS hurd: fixing unsupported platform Hurd
Hurd failed to build in mozilla/js/src/jit/AsmJSSignalHandlers.cpp:131
because of unsupported mode for reading / writing thead state with
following message.
# error "Don't know how to read/write to the thread state via the mcontext_t."
The original patch comes from Richard Brown <rbraun@sceen.net>
https://lists.alioth.debian.org/pipermail/pkg-mozilla-maintainers/2014-March/015565.html
After release of Thunderbird 44 there are additional changes made as the
various configuration files where splitted into more files.
---
mozilla/dom/plugins/ipc/PluginModuleChild.cpp | 6 +++---
mozilla/dom/plugins/ipc/PluginModuleChild.h | 2 +-
mozilla/ipc/chromium/chromium-config.mozbuild | 5 +++++
mozilla/ipc/chromium/moz.build | 23 ++++++++++++++++++++++
mozilla/ipc/chromium/src/base/message_loop.cc | 4 ++--
.../ipc/chromium/src/base/process_util_posix.cc | 2 +-
mozilla/ipc/chromium/src/build/build_config.h | 3 ++-
.../ipc/chromium/src/chrome/common/transport_dib.h | 6 +++---
.../src/third_party/libeventcommon.mozbuild | 5 +++++
mozilla/ipc/glue/GeckoChildProcessHost.cpp | 8 ++++----
mozilla/js/src/wasm/WasmSignalHandlers.cpp | 4 +++-
11 files changed, 52 insertions(+), 16 deletions(-)
diff --git a/mozilla/dom/plugins/ipc/PluginModuleChild.cpp b/mozilla/dom/plugins/ipc/PluginModuleChild.cpp
index 84dc7c7..97da42d 100644
--- a/mozilla/dom/plugins/ipc/PluginModuleChild.cpp
+++ b/mozilla/dom/plugins/ipc/PluginModuleChild.cpp
@@ -289,7 +289,7 @@ PluginModuleChild::InitForChrome(const std::string& aPluginFilename,
// TODO: use PluginPRLibrary here
-#if defined(OS_LINUX) || defined(OS_BSD)
+#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_HURD)
mShutdownFunc =
(NP_PLUGINSHUTDOWN) PR_FindFunctionSymbol(mLibrary, "NP_Shutdown");
@@ -1851,7 +1851,7 @@ PluginModuleChild::AnswerNP_GetEntryPoints(NPError* _retval)
AssertPluginThread();
MOZ_ASSERT(mIsChrome);
-#if defined(OS_LINUX) || defined(OS_BSD)
+#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_HURD)
return true;
#elif defined(OS_WIN) || defined(OS_MACOSX)
*_retval = mGetEntryPointsFunc(&mFunctions);
@@ -1896,7 +1896,7 @@ PluginModuleChild::DoNP_Initialize(const PluginSettings& aSettings)
#endif
NPError result;
-#if defined(OS_LINUX) || defined(OS_BSD)
+#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_HURD)
result = mInitializeFunc(&sBrowserFuncs, &mFunctions);
#elif defined(OS_WIN) || defined(OS_MACOSX)
result = mInitializeFunc(&sBrowserFuncs);
diff --git a/mozilla/dom/plugins/ipc/PluginModuleChild.h b/mozilla/dom/plugins/ipc/PluginModuleChild.h
index 233a953..8366126 100644
--- a/mozilla/dom/plugins/ipc/PluginModuleChild.h
+++ b/mozilla/dom/plugins/ipc/PluginModuleChild.h
@@ -277,7 +277,7 @@ private:
// we get this from the plugin
NP_PLUGINSHUTDOWN mShutdownFunc;
-#if defined(OS_LINUX) || defined(OS_BSD)
+#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_HURD)
NP_PLUGINUNIXINIT mInitializeFunc;
#elif defined(OS_WIN) || defined(OS_MACOSX)
NP_PLUGININIT mInitializeFunc;
diff --git a/mozilla/ipc/chromium/chromium-config.mozbuild b/mozilla/ipc/chromium/chromium-config.mozbuild
index 9df182c..afd1e16 100644
--- a/mozilla/ipc/chromium/chromium-config.mozbuild
+++ b/mozilla/ipc/chromium/chromium-config.mozbuild
@@ -65,5 +65,10 @@ else:
'OS_BSD': 1,
})
+ elif CONFIG['OS_ARCH'] == 'GNU':
+ DEFINES.update({
+ 'OS_HURD': 1,
+ })
+
else:
DEFINES['OS_LINUX'] = 1
diff --git a/mozilla/ipc/chromium/moz.build b/mozilla/ipc/chromium/moz.build
index aad46b5..4c2ccca 100644
--- a/mozilla/ipc/chromium/moz.build
+++ b/mozilla/ipc/chromium/moz.build
@@ -140,6 +140,29 @@ if os_bsd or os_linux:
'src/base/message_pump_glib.cc',
]
+if os_hurd:
+ SOURCES += [
+ 'src/base/atomicops_internals_x86_gcc.cc',
+ 'src/base/process_util_linux.cc',
+ 'src/base/time_posix.cc',
+ ]
+ if CONFIG['MOZ_WIDGET_GTK']:
+ SOURCES += [
+ 'src/base/message_pump_glib.cc',
+ ]
+ if CONFIG['MOZ_ENABLE_QT']:
+ SOURCES += [
+ 'src/base/message_pump_qt.cc',
+ ]
+ GENERATED_SOURCES += [
+ 'moc_message_pump_qt.cc',
+ ]
+
+if CONFIG['_MSC_VER']:
+ SOURCES += [
+ 'src/base/debug_on_start.cc',
+ ]
+
ost = CONFIG['OS_TEST']
if '86' not in ost and 'arm' not in ost and 'aarch64' != ost and 'mips' not in ost:
SOURCES += [
diff --git a/mozilla/ipc/chromium/src/base/message_loop.cc b/mozilla/ipc/chromium/src/base/message_loop.cc
index 3c794b2..c785b25 100644
--- a/mozilla/ipc/chromium/src/base/message_loop.cc
+++ b/mozilla/ipc/chromium/src/base/message_loop.cc
@@ -21,7 +21,7 @@
#if defined(OS_POSIX)
#include "base/message_pump_libevent.h"
#endif
-#if defined(OS_LINUX) || defined(OS_BSD)
+#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_HURD)
#if defined(MOZ_WIDGET_GTK)
#include "base/message_pump_glib.h"
#endif
@@ -149,7 +149,7 @@ MessageLoop::MessageLoop(Type type, nsIThread* aThread)
if (type_ == TYPE_UI) {
#if defined(OS_MACOSX)
pump_ = base::MessagePumpMac::Create();
-#elif defined(OS_LINUX) || defined(OS_BSD)
+#elif defined(OS_LINUX) || defined(OS_BSD) || defined(OS_HURD)
pump_ = new base::MessagePumpForUI();
#endif // OS_LINUX
} else if (type_ == TYPE_IO) {
diff --git a/mozilla/ipc/chromium/src/base/process_util_posix.cc b/mozilla/ipc/chromium/src/base/process_util_posix.cc
index ade3ebe..666a120 100644
--- a/mozilla/ipc/chromium/src/base/process_util_posix.cc
+++ b/mozilla/ipc/chromium/src/base/process_util_posix.cc
@@ -117,7 +117,7 @@ void CloseSuperfluousFds(const base::InjectiveMultimap& saved_mapping) {
#if defined(ANDROID)
static const rlim_t kSystemDefaultMaxFds = 1024;
static const char kFDDir[] = "/proc/self/fd";
-#elif defined(OS_LINUX)
+#elif defined(OS_LINUX) || defined(OS_HURD)
static const rlim_t kSystemDefaultMaxFds = 8192;
static const char kFDDir[] = "/proc/self/fd";
#elif defined(OS_MACOSX)
diff --git a/mozilla/ipc/chromium/src/build/build_config.h b/mozilla/ipc/chromium/src/build/build_config.h
index 5920e42..342bd56 100644
--- a/mozilla/ipc/chromium/src/build/build_config.h
+++ b/mozilla/ipc/chromium/src/build/build_config.h
@@ -23,6 +23,7 @@
#elif defined(__APPLE__)
#define OS_MACOSX 1
#elif defined(__linux__) || defined(__GLIBC__) || defined(__GNU__)
+#define OS_HURD 1
#define OS_LINUX 1
#elif defined(__DragonFly__)
#define OS_DRAGONFLY 1
@@ -47,7 +48,7 @@
// For access to standard POSIX features, use OS_POSIX instead of a more
// specific macro.
-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || defined(OS_HURD)
#define OS_POSIX 1
#endif
diff --git a/mozilla/ipc/chromium/src/chrome/common/transport_dib.h b/mozilla/ipc/chromium/src/chrome/common/transport_dib.h
index b1e5c0f..4349b97 100644
--- a/mozilla/ipc/chromium/src/chrome/common/transport_dib.h
+++ b/mozilla/ipc/chromium/src/chrome/common/transport_dib.h
@@ -9,7 +9,7 @@
#include "base/basictypes.h"
-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD)
+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || defined(OS_HURD)
#include "base/shared_memory.h"
#endif
@@ -64,7 +64,7 @@ class TransportDIB {
uint32_t sequence_num;
};
typedef HandleAndSequenceNum Id;
-#elif defined(OS_MACOSX) || defined(OS_BSD)
+#elif defined(OS_MACOSX) || defined(OS_BSD) || defined(OS_HURD)
typedef base::SharedMemoryHandle Handle;
// On Mac, the inode number of the backing file is used as an id.
typedef base::SharedMemoryId Id;
@@ -106,7 +106,7 @@ class TransportDIB {
private:
TransportDIB();
-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD)
+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || defined(OS_HURD)
explicit TransportDIB(base::SharedMemoryHandle dib);
base::SharedMemory shared_memory_;
#elif defined(OS_LINUX)
diff --git a/mozilla/ipc/chromium/src/third_party/libeventcommon.mozbuild b/mozilla/ipc/chromium/src/third_party/libeventcommon.mozbuild
index 7b0627e..4c621b9 100644
--- a/mozilla/ipc/chromium/src/third_party/libeventcommon.mozbuild
+++ b/mozilla/ipc/chromium/src/third_party/libeventcommon.mozbuild
@@ -8,6 +8,7 @@ os_win = 0
os_posix = 0
os_macosx = 0
os_bsd = 0
+os_hurd = 0
os_linux = 0
if CONFIG['OS_ARCH'] == 'WINNT':
@@ -21,6 +22,10 @@ else:
'NetBSD', 'OpenBSD']:
os_bsd = 1
libevent_include_suffix = 'bsd'
+ # attempt to get GNU hurd into the build again, further modification probably needed
+ elif CONFIG['OS_ARCH'] == 'GNU':
+ os_hurd = 1
+ libevent_include_suffix = 'gnu'
else:
os_linux = 1
if CONFIG['OS_TARGET'] == 'Android':
diff --git a/mozilla/ipc/glue/GeckoChildProcessHost.cpp b/mozilla/ipc/glue/GeckoChildProcessHost.cpp
index 4805147..5683aba 100644
--- a/mozilla/ipc/glue/GeckoChildProcessHost.cpp
+++ b/mozilla/ipc/glue/GeckoChildProcessHost.cpp
@@ -744,7 +744,7 @@ GeckoChildProcessHost::PerformAsyncLaunchInternal(std::vector<std::string>& aExt
// and passing wstrings from one config to the other is unsafe. So
// we split the logic here.
-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) || defined(OS_HURD)
base::environment_map newEnvVars;
ChildPrivileges privs = mPrivileges;
if (privs == base::PRIVILEGES_DEFAULT) {
@@ -766,7 +766,7 @@ GeckoChildProcessHost::PerformAsyncLaunchInternal(std::vector<std::string>& aExt
MOZ_ASSERT(gGREBinPath);
nsCString path;
NS_CopyUnicodeToNative(nsDependentString(gGREBinPath), path);
-# if defined(OS_LINUX) || defined(OS_BSD)
+# if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_HURD)
# if defined(MOZ_WIDGET_ANDROID)
path += "/lib";
# endif // MOZ_WIDGET_ANDROID
@@ -903,7 +903,7 @@ GeckoChildProcessHost::PerformAsyncLaunchInternal(std::vector<std::string>& aExt
childArgv.push_back(pidstring);
#if defined(MOZ_CRASHREPORTER)
-# if defined(OS_LINUX) || defined(OS_BSD)
+# if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_HURD)
int childCrashFd, childCrashRemapFd;
if (!CrashReporter::CreateNotificationPipeForChild(
&childCrashFd, &childCrashRemapFd))
@@ -936,7 +936,7 @@ GeckoChildProcessHost::PerformAsyncLaunchInternal(std::vector<std::string>& aExt
childArgv.push_back(childProcessType);
base::LaunchApp(childArgv, mFileMap,
-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) || defined(OS_HURD)
newEnvVars, privs,
#endif
false, &process, arch);
diff --git a/mozilla/js/src/wasm/WasmSignalHandlers.cpp b/mozilla/js/src/wasm/WasmSignalHandlers.cpp
index 78d2136..ac0aa45 100644
--- a/mozilla/js/src/wasm/WasmSignalHandlers.cpp
+++ b/mozilla/js/src/wasm/WasmSignalHandlers.cpp
@@ -130,10 +130,12 @@ class AutoSetHandlingSegFault
# define EPC_sig(p) ((p)->sc_pc)
# define RFP_sig(p) ((p)->sc_regs[30])
# endif
-#elif defined(__linux__) || defined(SOLARIS)
+#elif defined(__linux__) || defined(SOLARIS) || defined(__GNU__)
# if defined(__linux__)
# define XMM_sig(p,i) ((p)->uc_mcontext.fpregs->_xmm[i])
# define EIP_sig(p) ((p)->uc_mcontext.gregs[REG_EIP])
+# elif defined(__GNU__)
+# define EIP_sig(p) ((p)->uc_mcontext.gregs[REG_EIP])
# else
# define XMM_sig(p,i) ((p)->uc_mcontext.fpregs.fp_reg_set.fpchip_state.xmm[i])
# define EIP_sig(p) ((p)->uc_mcontext.gregs[REG_PC])
|