diff --git a/www/firefox/files/patch-bug753046 b/www/firefox/files/patch-bug753046
index d2d1a12..a1f0503 100644
--- a/www/firefox/files/patch-bug753046
+++ b/www/firefox/files/patch-bug753046
@@ -218,21 +218,23 @@ $NetBSD: patch-ipc_chromium_src_base_debug__util__posic.cc,v 1.3 2012/04/01 15:1
  
  #include <errno.h>
  #include <fcntl.h>
-@@ -17,8 +17,13 @@
+@@ -17,9 +17,16 @@
  #include <unistd.h>
  #if MOZ_HAVE_EXECINFO_H
  #include <execinfo.h>
--#include <sys/sysctl.h>
++#endif
++
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ #include <sys/sysctl.h>
  #endif
+ 
 +#if defined(OS_DRAGONFLY) || defined(OS_FREEBSD)
 +#include <sys/user.h>
-+#elif defined(OS_FREEBSD)
-+#include <sys/proc.h>
 +#endif
-+#include <sys/sysctl.h>
- 
++
  #include "base/basictypes.h"
  #include "base/eintr_wrapper.h"
+ #include "base/logging.h"
 @@ -32,7 +37,7 @@ bool DebugUtil::SpawnDebuggerOnProcess(u
    return false;
  }
@@ -531,18 +533,6 @@ $NetBSD: patch-ipc_chromium_src_base_message__loop.cc,v 1.1 2012/03/06 12:34:09
      pump_ = new base::MessagePumpForUI();
  #endif  // OS_LINUX
    } else if (type_ == TYPE_IO) {
-$NetBSD: patch-ipc_chromium_src_base_platform__file__posix.cc,v 1.1 2011/07/12 15:12:36 tnn Exp $
-
---- ipc/chromium/src/base/platform_file_posix.cc.orig	2011-06-15 21:57:27.000000000 +0000
-+++ ipc/chromium/src/base/platform_file_posix.cc
-@@ -9,6 +9,7 @@
- #ifdef ANDROID
- #include <linux/stat.h>
- #endif
-+#include <sys/stat.h> /* for S_IRUSR */
- 
- #include "base/logging.h"
- #include "base/string_util.h"
 $NetBSD: patch-ipc_chromium_src_base_platform__thread.h,v 1.1 2012/03/06 12:34:09 ryoon Exp $
 
 --- ipc/chromium/src/base/platform_thread.h.orig	2011-12-20 23:28:19.000000000 +0000
@@ -641,7 +631,7 @@ $NetBSD: patch-ipc_chromium_src_base_process__util__bsd.cc,v 1.4 2012/04/01 15:1
 
 --- ipc/chromium/src/base/process_util_bsd.cc.orig	2012-04-01 00:04:28.000000000 +0000
 +++ ipc/chromium/src/base/process_util_bsd.cc
-@@ -0,0 +1,326 @@
+@@ -0,0 +1,322 @@
 +// Copyright (c) 2008 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.
@@ -672,7 +662,6 @@ $NetBSD: patch-ipc_chromium_src_base_process__util__bsd.cc,v 1.4 2012/04/01 15:1
 +PRE_SYS_INCLUDE
 +#include <sys/user.h>
 +POST_SYS_INCLUDE
-+#define HAVE_POSIX_SPAWN	1
 +#endif
 +#if defined(OS_FREEBSD)
 +PRE_SYS_INCLUDE
@@ -687,18 +676,15 @@ $NetBSD: patch-ipc_chromium_src_base_process__util__bsd.cc,v 1.4 2012/04/01 15:1
 +#include "base/string_tokenizer.h"
 +#include "base/string_util.h"
 +
-+#if defined(OS_NETBSD)
-+#include <sys/param.h>
-+#if __NetBSD_Version__ >= 600000000
++#if defined(_POSIX_SPAWN) && _POSIX_SPAWN > 0
 +#define HAVE_POSIX_SPAWN	1
 +#endif
-+#endif
 +
 +#ifdef HAVE_POSIX_SPAWN
 +PRE_SYS_INCLUDE
 +#include <spawn.h>
++extern "C" char **environ;
 +POST_SYS_INCLUDE
-+extern "C" char **environ __dso_public;
 +#endif
 +
 +namespace {
@@ -1255,16 +1241,31 @@ $NetBSD: patch-ipc_glue_GeckoChildProcessHost.cpp,v 1.2 2012/03/15 08:30:06 ryoo
                    newEnvVars,
  #endif
                    false, &process, arch);
+diff --git ipc/glue/SharedMemorySysV.h ipc/glue/SharedMemorySysV.h
+index f37998d..b05dc7b 100644
+--- ipc/glue/SharedMemorySysV.h
++++ ipc/glue/SharedMemorySysV.h
+@@ -8,7 +8,7 @@
+ #ifndef mozilla_ipc_SharedMemorySysV_h
+ #define mozilla_ipc_SharedMemorySysV_h
+ 
+-#if defined(OS_LINUX) && !defined(ANDROID)
++#if defined(OS_LINUX) && !defined(ANDROID) || defined(OS_BSD)
+ 
+ // SysV shared memory isn't available on Windows, but we define the
+ // following macro so that #ifdefs are clearer (compared to #ifdef
 $NetBSD: patch-mm,v 1.13 2012/06/05 18:09:21 ryoon Exp $
 
 --- toolkit/library/Makefile.in.orig	2012-05-23 18:57:09.000000000 +0000
 +++ toolkit/library/Makefile.in
-@@ -534,6 +538,10 @@ EXTRA_DSO_LDOPTS += -lelf -ldemangle
+@@ -534,6 +538,12 @@ EXTRA_DSO_LDOPTS += -lelf -ldemangle
  endif
  endif
  
 +ifneq (,$(filter DragonFly FreeBSD NetBSD OpenBSD,$(OS_ARCH)))
 +OS_LIBS += $(call EXPAND_LIBNAME,kvm)
++#EXTRA_DSO_LDOPTS += -Wl,--ignore-unresolved-symbol,environ
++EXTRA_DSO_LDOPTS += -Wl,--warn-unresolved-symbols
 +endif
 +
  ifeq ($(OS_ARCH),WINNT)
diff --git a/www/firefox/files/patch-xpcom__threads__nsThreadManager.cpp b/www/firefox/files/patch-xpcom__threads__nsThreadManager.cpp
index 80e8322..73db2c3 100644
--- a/www/firefox/files/patch-xpcom__threads__nsThreadManager.cpp
+++ b/www/firefox/files/patch-xpcom__threads__nsThreadManager.cpp
@@ -4,7 +4,7 @@
  nsresult
  nsThreadManager::Init()
  {
-+#ifdef NS_TLS && (__FreeBSD_version < 802513 \
++#if defined(NS_TLS) && (__FreeBSD_version < 802513 \
 +  || (__FreeBSD_version >= 900000 && __FreeBSD_version < 900045))
 +  if (!gTLSThreadID)
 +    gTLSThreadID = mozilla::threads::Generic;