diff --git a/.firefox.metadata b/.firefox.metadata
index fbce087..2812074 100644
--- a/.firefox.metadata
+++ b/.firefox.metadata
@@ -1,2 +1,2 @@
-38f8d70c2798c0ab3a1f6de2ca1ea628bbbd1efd SOURCES/firefox-langpacks-24.1.0esr-20131106.tar.bz2
-faeed7eb315e9e0a380ab5081b96800590eb6154 SOURCES/firefox-24.1.0esr.source.tar.bz2
+11e3e78482440628d3095d02821e714027665d33 SOURCES/firefox-24.4.0esr.source.tar.bz2
+017b57b235e6ae2a4353102518f12299ee02e865 SOURCES/firefox-langpacks-24.4.0esr-20140318.tar.bz2
diff --git a/SOURCES/camelia.patch b/SOURCES/camelia.patch
deleted file mode 100644
index 0700968..0000000
--- a/SOURCES/camelia.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-diff -up mozilla-release/netwerk/base/public/security-prefs.js.camelia mozilla-release/netwerk/base/public/security-prefs.js
---- mozilla-release/netwerk/base/public/security-prefs.js.camelia	2013-09-11 01:15:20.000000000 +0200
-+++ mozilla-release/netwerk/base/public/security-prefs.js	2013-10-10 14:25:45.524000007 +0200
-@@ -18,12 +18,6 @@ pref("security.ssl3.rsa_rc4_128_md5", tr
- pref("security.ssl3.rsa_rc4_128_sha", true);
- pref("security.ssl3.rsa_fips_des_ede3_sha", true);
- pref("security.ssl3.rsa_des_ede3_sha", true);
--pref("security.ssl3.dhe_rsa_camellia_256_sha", true);
--pref("security.ssl3.dhe_dss_camellia_256_sha", true);
--pref("security.ssl3.rsa_camellia_256_sha", true);
--pref("security.ssl3.dhe_rsa_camellia_128_sha", true);
--pref("security.ssl3.dhe_dss_camellia_128_sha", true);
--pref("security.ssl3.rsa_camellia_128_sha", true);
- pref("security.ssl3.dhe_rsa_aes_256_sha", true);
- pref("security.ssl3.dhe_dss_aes_256_sha", true);
- pref("security.ssl3.rsa_aes_256_sha", true);
-diff -up mozilla-release/security/manager/ssl/src/nsNSSComponent.cpp.camelia mozilla-release/security/manager/ssl/src/nsNSSComponent.cpp
---- mozilla-release/security/manager/ssl/src/nsNSSComponent.cpp.camelia	2013-09-11 01:15:21.000000000 +0200
-+++ mozilla-release/security/manager/ssl/src/nsNSSComponent.cpp	2013-10-10 14:27:04.388999975 +0200
-@@ -834,9 +834,6 @@ static CipherPref CipherPrefs[] = {
-  {"security.ssl3.rsa_fips_des_ede3_sha", SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA}, // 168-bit Triple DES with RSA and a SHA1 MAC (FIPS)
-  {"security.ssl3.rsa_des_ede3_sha", SSL_RSA_WITH_3DES_EDE_CBC_SHA}, // 168-bit Triple DES with RSA and a SHA1 MAC
-  /* Extra SSL3/TLS cipher suites */
-- {"security.ssl3.dhe_rsa_camellia_256_sha", TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA}, // 256-bit Camellia encryption with RSA, DHE, and a SHA1 MAC
-- {"security.ssl3.dhe_dss_camellia_256_sha", TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA}, // 256-bit Camellia encryption with DSA, DHE, and a SHA1 MAC
-- {"security.ssl3.rsa_camellia_256_sha", TLS_RSA_WITH_CAMELLIA_256_CBC_SHA}, // 256-bit Camellia encryption with RSA and a SHA1 MAC
-  {"security.ssl3.dhe_rsa_aes_256_sha", TLS_DHE_RSA_WITH_AES_256_CBC_SHA}, // 256-bit AES encryption with RSA, DHE, and a SHA1 MAC
-  {"security.ssl3.dhe_dss_aes_256_sha", TLS_DHE_DSS_WITH_AES_256_CBC_SHA}, // 256-bit AES encryption with DSA, DHE, and a SHA1 MAC
-  {"security.ssl3.rsa_aes_256_sha", TLS_RSA_WITH_AES_256_CBC_SHA}, // 256-bit AES encryption with RSA and a SHA1 MAC
-@@ -858,15 +855,11 @@ static CipherPref CipherPrefs[] = {
-  {"security.ssl3.ecdh_rsa_aes_128_sha", TLS_ECDH_RSA_WITH_AES_128_CBC_SHA}, // 128-bit AES encryption with ECDH-RSA and a SHA1 MAC
-  {"security.ssl3.ecdh_rsa_des_ede3_sha", TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA}, // 168-bit Triple DES with ECDH-RSA and a SHA1 MAC
-  {"security.ssl3.ecdh_rsa_rc4_128_sha", TLS_ECDH_RSA_WITH_RC4_128_SHA}, // 128-bit RC4 encryption with ECDH-RSA and a SHA1 MAC
-- {"security.ssl3.dhe_rsa_camellia_128_sha", TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA}, // 128-bit Camellia encryption with RSA, DHE, and a SHA1 MAC
-- {"security.ssl3.dhe_dss_camellia_128_sha", TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA}, // 128-bit Camellia encryption with DSA, DHE, and a SHA1 MAC
-- {"security.ssl3.rsa_camellia_128_sha", TLS_RSA_WITH_CAMELLIA_128_CBC_SHA}, // 128-bit Camellia encryption with RSA and a SHA1 MAC
-  {"security.ssl3.dhe_rsa_aes_128_sha", TLS_DHE_RSA_WITH_AES_128_CBC_SHA}, // 128-bit AES encryption with RSA, DHE, and a SHA1 MAC
-  {"security.ssl3.dhe_dss_aes_128_sha", TLS_DHE_DSS_WITH_AES_128_CBC_SHA}, // 128-bit AES encryption with DSA, DHE, and a SHA1 MAC
-  {"security.ssl3.rsa_aes_128_sha", TLS_RSA_WITH_AES_128_CBC_SHA}, // 128-bit AES encryption with RSA and a SHA1 MAC
-  {"security.ssl3.dhe_rsa_des_ede3_sha", SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA}, // 168-bit Triple DES with RSA, DHE, and a SHA1 MAC
-  {"security.ssl3.dhe_dss_des_ede3_sha", SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA}, // 168-bit Triple DES with DSA, DHE, and a SHA1 MAC
-- {"security.ssl3.rsa_seed_sha", TLS_RSA_WITH_SEED_CBC_SHA}, // SEED encryption with RSA and a SHA1 MAC
-  {nullptr, 0} /* end marker */
- };
- 
diff --git a/SOURCES/firefox.sh.in b/SOURCES/firefox.sh.in
index d42d7c1..5745250 100644
--- a/SOURCES/firefox.sh.in
+++ b/SOURCES/firefox.sh.in
@@ -163,9 +163,9 @@ FEDORA_LANGPACK_CONFIG="$MOZ_EXTENSIONS_PROFILE_DIR/.fedora-langpack-install"
 # MOZ_DISABLE_LANGPACKS disables language packs completely
 MOZILLA_DOWN=0
 if ! [ $MOZ_DISABLE_LANGPACKS ] || [ $MOZ_DISABLE_LANGPACKS -eq 0 ]; then
-    if [ -x $MOZ_LIB_DIR/mozilla-xremote-client ]; then
+    if [ -x $MOZ_DIST_BIN/mozilla-xremote-client ]; then
         # Is firefox running?
-        $MOZ_LIB_DIR/mozilla-xremote-client -a firefox 'ping()' > /dev/null 2>&1
+        $MOZ_DIST_BIN/mozilla-xremote-client -a firefox 'ping()' > /dev/null 2>&1
         MOZILLA_DOWN=$?
     fi
 fi
diff --git a/SOURCES/mozilla-906754.patch b/SOURCES/mozilla-906754.patch
new file mode 100644
index 0000000..baf13d7
--- /dev/null
+++ b/SOURCES/mozilla-906754.patch
@@ -0,0 +1,204 @@
+diff -up mozilla-esr24/xpcom/ds/TimeStamp.cpp.906754 mozilla-esr24/xpcom/ds/TimeStamp.cpp
+--- mozilla-esr24/xpcom/ds/TimeStamp.cpp.906754	2013-12-06 03:21:33.000000000 +0100
++++ mozilla-esr24/xpcom/ds/TimeStamp.cpp	2013-12-20 16:11:06.607243958 +0100
+@@ -13,15 +13,41 @@
+ 
+ namespace mozilla {
+ 
+-TimeStamp TimeStamp::sFirstTimeStamp;
+-TimeStamp TimeStamp::sProcessCreation;
++/**
++ * Wrapper class used to initialize static data used by the TimeStamp class
++ */
++struct TimeStampInitialization {
++  /**
++   * First timestamp taken when the class static initializers are run. This
++   * timestamp is used to sanitize timestamps coming from different sources.
++   */
++  TimeStamp mFirstTimeStamp;
++
++  /**
++   * Timestamp representing the time when the process was created. This field
++   * is populated lazily the first time this information is required and is
++   * replaced every time the process is restarted.
++   */
++  TimeStamp mProcessCreation;
++
++  TimeStampInitialization() {
++    TimeStamp::Startup();
++    mFirstTimeStamp = TimeStamp::Now();
++  };
++
++  ~TimeStampInitialization() {
++    TimeStamp::Shutdown();
++  };
++};
++
++static TimeStampInitialization sInitOnce;
+ 
+ TimeStamp
+ TimeStamp::ProcessCreation(bool& aIsInconsistent)
+ {
+   aIsInconsistent = false;
+ 
+-  if (sProcessCreation.IsNull()) {
++  if (sInitOnce.mProcessCreation.IsNull()) {
+     char *mozAppRestart = PR_GetEnv("MOZ_APP_RESTART");
+     TimeStamp ts;
+ 
+@@ -31,7 +57,7 @@ TimeStamp::ProcessCreation(bool& aIsInco
+     if (mozAppRestart && (strcmp(mozAppRestart, "") != 0)) {
+       /* Firefox was restarted, use the first time-stamp we've taken as the new
+        * process startup time and unset MOZ_APP_RESTART. */
+-      ts = sFirstTimeStamp;
++      ts = sInitOnce.mFirstTimeStamp;
+       PR_SetEnv("MOZ_APP_RESTART=");
+     } else {
+       TimeStamp now = Now();
+@@ -39,26 +65,26 @@ TimeStamp::ProcessCreation(bool& aIsInco
+ 
+       ts = now - TimeDuration::FromMicroseconds(uptime);
+ 
+-      if ((ts > sFirstTimeStamp) || (uptime == 0)) {
++      if ((ts > sInitOnce.mFirstTimeStamp) || (uptime == 0)) {
+         /* If the process creation timestamp was inconsistent replace it with
+          * the first one instead and notify that a telemetry error was
+          * detected. */
+         aIsInconsistent = true;
+-        ts = sFirstTimeStamp;
++        ts = sInitOnce.mFirstTimeStamp;
+       }
+     }
+ 
+-    sProcessCreation = ts;
++    sInitOnce.mProcessCreation = ts;
+   }
+ 
+-  return sProcessCreation;
++  return sInitOnce.mProcessCreation;
+ }
+ 
+ void
+ TimeStamp::RecordProcessRestart()
+ {
+   PR_SetEnv("MOZ_APP_RESTART=1");
+-  sProcessCreation = TimeStamp();
++  sInitOnce.mProcessCreation = TimeStamp();
+ }
+ 
+ } // namespace mozilla
+diff -up mozilla-esr24/xpcom/ds/TimeStamp_darwin.cpp.906754 mozilla-esr24/xpcom/ds/TimeStamp_darwin.cpp
+--- mozilla-esr24/xpcom/ds/TimeStamp_darwin.cpp.906754	2013-12-06 03:21:33.000000000 +0100
++++ mozilla-esr24/xpcom/ds/TimeStamp_darwin.cpp	2013-12-20 15:58:50.356993425 +0100
+@@ -114,18 +114,6 @@ TimeDuration::Resolution()
+   return TimeDuration::FromTicks(int64_t(sResolution));
+ }
+ 
+-struct TimeStampInitialization
+-{
+-  TimeStampInitialization() {
+-    TimeStamp::Startup();
+-  }
+-  ~TimeStampInitialization() {
+-    TimeStamp::Shutdown();
+-  }
+-};
+-
+-static TimeStampInitialization initOnce;
+-
+ nsresult
+ TimeStamp::Startup()
+ {
+@@ -152,8 +140,6 @@ TimeStamp::Startup()
+        sResolutionSigDigs *= 10);
+ 
+   gInitialized = true;
+-  sFirstTimeStamp = TimeStamp::Now();
+-  sProcessCreation = TimeStamp();
+ 
+   return NS_OK;
+ }
+diff -up mozilla-esr24/xpcom/ds/TimeStamp.h.906754 mozilla-esr24/xpcom/ds/TimeStamp.h
+--- mozilla-esr24/xpcom/ds/TimeStamp.h.906754	2013-12-06 03:21:33.000000000 +0100
++++ mozilla-esr24/xpcom/ds/TimeStamp.h	2013-12-20 15:58:50.356993425 +0100
+@@ -363,19 +363,6 @@ private:
+    * When using a system clock, a value is system dependent.
+    */
+   TimeStampValue mValue;
+-
+-  /**
+-   * First timestamp taken when the class static initializers are run. This
+-   * timestamp is used to sanitize timestamps coming from different sources.
+-   */
+-  static TimeStamp sFirstTimeStamp;
+-
+-  /**
+-   * Timestamp representing the time when the process was created. This field
+-   * is populated lazily the first time this information is required and is
+-   * replaced every time the process is restarted.
+-   */
+-  static TimeStamp sProcessCreation;
+ };
+ 
+ }
+diff -up mozilla-esr24/xpcom/ds/TimeStamp_posix.cpp.906754 mozilla-esr24/xpcom/ds/TimeStamp_posix.cpp
+--- mozilla-esr24/xpcom/ds/TimeStamp_posix.cpp.906754	2013-12-06 03:21:33.000000000 +0100
++++ mozilla-esr24/xpcom/ds/TimeStamp_posix.cpp	2013-12-20 15:58:50.356993425 +0100
+@@ -159,17 +159,6 @@ TimeDuration::Resolution()
+   return TimeDuration::FromTicks(int64_t(sResolution));
+ }
+ 
+-struct TimeStampInitialization
+-{
+-  TimeStampInitialization() {
+-    TimeStamp::Startup();
+-  }
+-  ~TimeStampInitialization() {
+-    TimeStamp::Shutdown();
+-  }
+-};
+-
+-static TimeStampInitialization initOnce;
+ static bool gInitialized = false;
+ 
+ nsresult
+@@ -192,8 +181,6 @@ TimeStamp::Startup()
+        sResolutionSigDigs *= 10);
+ 
+   gInitialized = true;
+-  sFirstTimeStamp = TimeStamp::Now();
+-  sProcessCreation = TimeStamp();
+ 
+   return NS_OK;
+ }
+diff -up mozilla-esr24/xpcom/ds/TimeStamp_windows.cpp.906754 mozilla-esr24/xpcom/ds/TimeStamp_windows.cpp
+--- mozilla-esr24/xpcom/ds/TimeStamp_windows.cpp.906754	2013-12-06 03:21:33.000000000 +0100
++++ mozilla-esr24/xpcom/ds/TimeStamp_windows.cpp	2013-12-20 15:58:50.357993430 +0100
+@@ -457,18 +457,6 @@ TimeDuration::Resolution()
+   return TimeDuration::FromTicks(int64_t(sResolution));
+ }
+ 
+-struct TimeStampInitialization
+-{
+-  TimeStampInitialization() {
+-    TimeStamp::Startup();
+-  }
+-  ~TimeStampInitialization() {
+-    TimeStamp::Shutdown();
+-  }
+-};
+-
+-static TimeStampInitialization initOnce;
+-
+ static bool
+ HasStableTSC()
+ {
+@@ -534,8 +522,6 @@ TimeStamp::Startup()
+ 
+   InitThresholds();
+   InitResolution();
+-  sFirstTimeStamp = TimeStamp::Now();
+-  sProcessCreation = TimeStamp();
+ 
+   return NS_OK;
+ }
diff --git a/SOURCES/mozilla-build.patch b/SOURCES/mozilla-build.patch
deleted file mode 100644
index 1dd29d0..0000000
--- a/SOURCES/mozilla-build.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- mozilla-release/security/build/Makefile.in.build	2013-06-18 13:01:39.000000000 +0200
-+++ mozilla-release/security/build/Makefile.in	2013-06-18 14:01:41.940378194 +0200
-@@ -133,7 +133,6 @@ DEFAULT_GMAKE_FLAGS += NSPR_INCLUDE_DIR=
- DEFAULT_GMAKE_FLAGS += NSPR_LIB_DIR=$(NSPR_LIB_DIR)
- DEFAULT_GMAKE_FLAGS += MOZILLA_CLIENT=1
- DEFAULT_GMAKE_FLAGS += NO_MDUPDATE=1
--DEFAULT_GMAKE_FLAGS += NSS_ENABLE_ECC=1
- DEFAULT_GMAKE_FLAGS += NSINSTALL="$(NSINSTALL)"
- ifeq ($(OS_ARCH),WINNT)
- DEFAULT_GMAKE_FLAGS += INSTALL="$(NSINSTALL) -t"
---- mozilla-release/security/manager/ssl/src/Makefile.in.build	2013-06-18 13:01:39.000000000 +0200
-+++ mozilla-release/security/manager/ssl/src/Makefile.in	2013-06-18 14:01:18.659377663 +0200
-@@ -86,7 +86,6 @@ endif
- CSRCS += md4.c
- 
- DEFINES += \
--  -DNSS_ENABLE_ECC \
-   -DDLL_PREFIX=\"$(DLL_PREFIX)\" \
-   -DDLL_SUFFIX=\"$(DLL_SUFFIX)\" \
-   $(NULL)
diff --git a/SOURCES/rhbz-1032770.patch b/SOURCES/rhbz-1032770.patch
new file mode 100644
index 0000000..f9f0895
--- /dev/null
+++ b/SOURCES/rhbz-1032770.patch
@@ -0,0 +1,25 @@
+diff -up mozilla-esr24/storage/src/Makefile.in.rhbz-1032770 mozilla-esr24/storage/src/Makefile.in
+--- mozilla-esr24/storage/src/Makefile.in.rhbz-1032770	2013-10-22 08:19:20.000000000 +0200
++++ mozilla-esr24/storage/src/Makefile.in	2013-12-02 14:33:43.524479615 +0100
+@@ -22,14 +22,21 @@ endif
+ # Don't use the jemalloc allocator on Android, because we can't guarantee
+ # that Gecko will configure sqlite before it is first used (bug 730495).
+ #
++# Don't use the jemalloc allocator when using system sqlite. Linked in libraries
++# (such as NSS) might trigger an initialization of sqlite and allocation
++# of memory using the default allocator, prior to the storage service
++# registering its allocator, causing memory management failures (bug 938730).
++#
+ # Note: On Windows our sqlite build assumes we use jemalloc.  If you disable
+ # MOZ_STORAGE_MEMORY on Windows, you will also need to change the "ifdef
+ # MOZ_MEMORY" options in db/sqlite3/src/Makefile.in.
+ ifdef MOZ_MEMORY
++ifndef MOZ_NATIVE_SQLITE
+ ifneq ($(OS_TARGET), Android)
+ DEFINES += -DMOZ_STORAGE_MEMORY
+ endif
+ endif
++endif
+ 
+ # For nsDependentJSString
+ LOCAL_INCLUDES = \
diff --git a/SPECS/firefox.spec b/SPECS/firefox.spec
index e814ad4..ab3eca2 100644
--- a/SPECS/firefox.spec
+++ b/SPECS/firefox.spec
@@ -1,5 +1,6 @@
 # Use system sqlite?
 %define system_sqlite           1
+%define system_ffi              0
 
 # Use system nss/nspr?
 %define system_nss              1
@@ -11,6 +12,9 @@
 %define enable_webm             0
 %endif
 
+# Use system cairo?
+%define system_cairo            0
+
 # Build as a debug package?
 %define debug_build             0
 
@@ -49,15 +53,15 @@
 
 Summary:        Mozilla Firefox Web browser
 Name:           firefox
-Version:        24.1.0
-Release:        3%{?prever}%{?dist}
+Version:        24.4.0
+Release:        1%{?prever}%{?dist}
 URL:            http://www.mozilla.org/projects/firefox/
 License:        MPLv1.1 or GPLv2+ or LGPLv2+
 Group:          Applications/Internet
 # From ftp://ftp.mozilla.org/pub/firefox/releases/%{version}%{?pretag}/source
 Source0:        firefox-%{version}%{?prever}%{?ext_version}.source.tar.bz2
 %if %{build_langpacks}
-Source1:        firefox-langpacks-%{version}%{?ext_version}-20131106.tar.bz2
+Source1:        firefox-langpacks-%{version}%{?ext_version}-20140318.tar.bz2
 %endif
 Source10:       firefox-mozconfig
 Source11:       firefox-mozconfig-branded
@@ -69,8 +73,6 @@ Source100:      find-external-requires
 
 # Build patches
 Patch0:         firefox-install-dir.patch
-Patch1:         camelia.patch
-Patch2:         mozilla-build.patch
 Patch3:         xulrunner-2.0-chromium-types.patch
 Patch4:         xulrunner-24.0-gcc47.patch
 Patch5:         xulrunner-24.0-jemalloc-ppc.patch
@@ -80,10 +82,12 @@ Patch7:         xulrunner-webrtc-secondarch.patch
 Patch11:        firefox-24.0-default.patch
 Patch12:        firefox-17.0-enable-addons.patch
 Patch13:        rhbz-966424.patch
+Patch14:        rhbz-1032770.patch
 
 # Upstream patches
 Patch100:       firefox-5.0-asciidel.patch
 Patch200:       firefox-duckduckgo.patch
+Patch300:       mozilla-906754.patch
 
 %if %{official_branding}
 # Required by Mozilla Corporation
@@ -120,7 +124,10 @@ Requires:       nspr >= %{nspr_version}
 Requires:       nss >= %{nss_version}
 %endif
 
+%if %{?system_cairo}
 BuildRequires:  cairo-devel >= %{cairo_version}
+%endif
+
 BuildRequires:  hunspell-devel
 Requires:       mozilla-filesystem
 %if %{?system_sqlite}
@@ -175,8 +182,6 @@ cd %{tarballdir}
 # Build patches
 # We have to keep original patch backup extension to go thru configure without problems with tests
 %patch0 -p1 -b .orig
-%patch1 -p1 -b .camelia
-%patch2 -p1 -b .mozilla-build
 %patch3 -p2 -b .chromium-types.patch
 %patch4 -p2 -b .gcc47.patch
 %patch5 -p2 -b .jemalloc-ppc.patch
@@ -186,11 +191,15 @@ cd %{tarballdir}
 %patch11 -p2 -b .default
 %patch12 -p1 -b .addons
 %patch13 -p1 -b .rhbz-966424
+%patch14 -p1 -b .rhbz-1032770
 
 # For branding specific patches.
 %patch100 -p1 -b .asciidel
 %patch200 -p1 -b .duckduckgo
 
+# Upstream patches
+%patch300 -p1 -b .906754
+
 %if %{official_branding}
 # Required by Mozilla Corporation
 
@@ -225,6 +234,16 @@ echo "ac_add_options --disable-webrtc" >> .mozconfig
 echo "ac_add_options --disable-ogg" >> .mozconfig
 %endif
 
+%if %{?system_cairo}
+echo "ac_add_options --enable-system-cairo" >> .mozconfig
+%else
+echo "ac_add_options --disable-system-cairo" >> .mozconfig
+%endif
+
+%if %{?system_ffi}
+echo "ac_add_options --enable-system-ffi" >> .mozconfig
+%endif
+
 %if %{?system_nss}
 echo "ac_add_options --with-system-nspr" >> .mozconfig
 echo "ac_add_options --with-system-nss" >> .mozconfig
@@ -251,6 +270,16 @@ echo "ac_add_options --enable-jemalloc" >> .mozconfig
 echo "ac_add_options --disable-jemalloc" >> .mozconfig
 %endif
 
+# Debug build flags
+%if %{?debug_build}
+echo "ac_add_options --enable-debug" >> .mozconfig
+echo "ac_add_options --disable-optimize" >> .mozconfig
+echo "ac_add_options --enable-dtrace" >> .mozconfig
+%else
+echo "ac_add_options --disable-debug" >> .mozconfig
+echo "ac_add_options --enable-optimize" >> .mozconfig
+%endif
+
 #---------------------------------------------------------------------
 
 %build
@@ -477,6 +506,32 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 #---------------------------------------------------------------------
 
 %changelog
+* Tue Mar 18 2014 Jan Horak <jhorak@redhat.com> - 24.4.0-1
+- Update to 24.4.0 ESR
+
+* Thu Feb 27 2014 Martin Stransky <stransky@redhat.com> - 24.3.0-3
+- fixed rhbz#1054832 - Firefox does not support Camellia cipher
+
+* Mon Feb  3 2014 Jan Horak <jhorak@redhat.com> - 24.3.0-1
+- Update to 24.3.0 ESR
+
+* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 24.2.0-3
+- Mass rebuild 2014-01-24
+
+* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 24.2.0-2
+- Mass rebuild 2013-12-27
+
+* Mon Dec 9 2013 Martin Stransky <stransky@redhat.com> - 24.2.0-1
+- Update to 24.2.0 ESR
+
+* Mon Dec 2 2013 Martin Stransky <stransky@redhat.com> - 24.1.0-5
+- Fixed mozbz#938730 - avoid mix of memory allocators (crashes)
+  when using system sqlite
+
+* Tue Nov 26 2013 Martin Stransky <stransky@redhat.com> - 24.1.0-4
+- Fixed rhbz#1034541 - No translation being picked up 
+  from langpacks for firefox
+
 * Fri Nov 8 2013 Martin Stransky <stransky@redhat.com> - 24.1.0-3
 - Conflicts with old, xulrunner based firefox