Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 26 Jan 2013 18:10:20 +0100
From:      Dimitry Andric <dim@FreeBSD.org>
To:        gecko@FreeBSD.org
Cc:        Koop Mast <kwm@FreeBSD.org>, Mark Linimon <linimon@FreeBSD.org>, Niclas Zeising <zeising@FreeBSD.org>
Subject:   Getting www/libxul19 building with clang
Message-ID:  <51040DFC.7090008@FreeBSD.org>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------040708090305020707050703
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

I got several reports about www/libxul19 not building with clang.  I had
a look, and gathered a bunch of upstream patches which make it build
correctly.  I am not sure how to run the test suite though, so if
somebody could please verify it behaves correctly at runtime, that would
be great.

-Dimitry

--------------040708090305020707050703
Content-Type: text/x-diff;
 name="www__libxul19-1.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="www__libxul19-1.diff"

Index: www/libxul19/files/patch-bug573210
===================================================================
--- www/libxul19/files/patch-bug573210	(revision 0)
+++ www/libxul19/files/patch-bug573210	(working copy)
@@ -0,0 +1,223 @@
+changeset:   46457:2c778979f15a
+user:        Eli Friedman <sharparrow1@yahoo.com>
+date:        Wed Jun 30 23:11:43 2010 +0200
+summary:     Bug 573210 - Consistently qualify accesses to dependent base classes in xpcom C++ code. r=dbaron
+
+diff -r 93fabb73299b -r 2c778979f15a xpcom/base/nsAutoRef.h
+--- xpcom/base/nsAutoRef.h	Wed Jun 30 23:11:41 2010 +0200
++++ xpcom/base/nsAutoRef.h	Wed Jun 30 23:11:43 2010 +0200
+@@ -301,7 +301,7 @@
+     }
+     ThisClass& operator=(RawRef aRefToCopy)
+     {
+-        own(aRefToCopy);
++        this->own(aRefToCopy);
+         SafeAddRef();
+         return *this;
+     }
+@@ -323,7 +323,7 @@
+     void SafeAddRef()
+     {
+         if (this->HaveResource())
+-            AddRef(this->get());
++            this->AddRef(this->get());
+     }
+ };
+ 
+@@ -690,7 +690,7 @@
+     void SafeRelease()
+     {
+         if (this->HaveResource())
+-            Release(this->get());
++            this->Release(this->get());
+     }
+ };
+ 
+diff -r 93fabb73299b -r 2c778979f15a xpcom/glue/nsBaseHashtable.h
+--- xpcom/glue/nsBaseHashtable.h	Wed Jun 30 23:11:41 2010 +0200
++++ xpcom/glue/nsBaseHashtable.h	Wed Jun 30 23:11:43 2010 +0200
+@@ -123,7 +123,7 @@
+    */
+   PRBool Get(KeyType aKey, UserDataType* pData NS_OUTPARAM) const
+   {
+-    EntryType* ent = GetEntry(aKey);
++    EntryType* ent = this->GetEntry(aKey);
+ 
+     if (!ent)
+       return PR_FALSE;
+@@ -160,7 +160,7 @@
+    */
+   PRBool Put(KeyType aKey, UserDataType aData)
+   {
+-    EntryType* ent = PutEntry(aKey);
++    EntryType* ent = this->PutEntry(aKey);
+ 
+     if (!ent)
+       return PR_FALSE;
+@@ -174,7 +174,7 @@
+    * remove the data for the associated key
+    * @param aKey the key to remove from the hashtable
+    */
+-  void Remove(KeyType aKey) { RemoveEntry(aKey); }
++  void Remove(KeyType aKey) { this->RemoveEntry(aKey); }
+ 
+   /**
+    * function type provided by the application for enumeration.
+diff -r 93fabb73299b -r 2c778979f15a xpcom/glue/nsClassHashtable.h
+--- xpcom/glue/nsClassHashtable.h	Wed Jun 30 23:11:41 2010 +0200
++++ xpcom/glue/nsClassHashtable.h	Wed Jun 30 23:11:43 2010 +0200
+@@ -57,6 +57,7 @@
+ public:
+   typedef typename KeyClass::KeyType KeyType;
+   typedef T* UserDataType;
++  typedef nsBaseHashtable< KeyClass, nsAutoPtr<T>, T* > base_type;
+ 
+   /**
+    * @copydoc nsBaseHashtable::Get
+@@ -80,6 +81,7 @@
+ public:
+   typedef typename KeyClass::KeyType KeyType;
+   typedef T* UserDataType;
++  typedef nsBaseHashtableMT< KeyClass, nsAutoPtr<T>, T* > base_type;
+ 
+   /**
+    * @copydoc nsBaseHashtable::Get
+@@ -97,8 +99,7 @@
+ PRBool
+ nsClassHashtable<KeyClass,T>::Get(KeyType aKey, T** retVal) const
+ {
+-  typename nsBaseHashtable<KeyClass,nsAutoPtr<T>,T*>::EntryType* ent =
+-    GetEntry(aKey);
++  typename base_type::EntryType* ent = this->GetEntry(aKey);
+ 
+   if (ent)
+   {
+@@ -125,8 +126,7 @@
+ {
+   PR_Lock(this->mLock);
+ 
+-  typename nsBaseHashtableMT<KeyClass,nsAutoPtr<T>,T*>::EntryType* ent =
+-    GetEntry(aKey);
++  typename base_type::EntryType* ent = this->GetEntry(aKey);
+ 
+   if (ent)
+   {
+diff -r 93fabb73299b -r 2c778979f15a xpcom/glue/nsInterfaceHashtable.h
+--- xpcom/glue/nsInterfaceHashtable.h	Wed Jun 30 23:11:41 2010 +0200
++++ xpcom/glue/nsInterfaceHashtable.h	Wed Jun 30 23:11:43 2010 +0200
+@@ -57,6 +57,8 @@
+ public:
+   typedef typename KeyClass::KeyType KeyType;
+   typedef Interface* UserDataType;
++  typedef nsBaseHashtable< KeyClass, nsCOMPtr<Interface> , Interface* >
++          base_type;
+ 
+   /**
+    * @copydoc nsBaseHashtable::Get
+@@ -87,6 +89,8 @@
+ public:
+   typedef typename KeyClass::KeyType KeyType;
+   typedef Interface* UserDataType;
++  typedef nsBaseHashtableMT< KeyClass, nsCOMPtr<Interface> , Interface* >
++          base_type;
+ 
+   /**
+    * @copydoc nsBaseHashtable::Get
+@@ -110,8 +114,7 @@
+ nsInterfaceHashtable<KeyClass,Interface>::Get
+   (KeyType aKey, UserDataType* pInterface) const
+ {
+-  typename nsBaseHashtable<KeyClass, nsCOMPtr<Interface>, Interface*>::EntryType* ent =
+-    GetEntry(aKey);
++  typename base_type::EntryType* ent = this->GetEntry(aKey);
+ 
+   if (ent)
+   {
+@@ -138,8 +141,7 @@
+ nsInterfaceHashtable<KeyClass,Interface>::GetWeak
+   (KeyType aKey, PRBool* aFound) const
+ {
+-  typename nsBaseHashtable<KeyClass, nsCOMPtr<Interface>, Interface*>::EntryType* ent =
+-    GetEntry(aKey);
++  typename base_type::EntryType* ent = this->GetEntry(aKey);
+ 
+   if (ent)
+   {
+@@ -166,8 +168,7 @@
+ {
+   PR_Lock(this->mLock);
+ 
+-  typename nsBaseHashtableMT<KeyClass, nsCOMPtr<Interface>, Interface*>::EntryType* ent =
+-    GetEntry(aKey);
++  typename base_type::EntryType* ent = this->GetEntry(aKey);
+ 
+   if (ent)
+   {
+diff -r 93fabb73299b -r 2c778979f15a xpcom/glue/nsRefPtrHashtable.h
+--- xpcom/glue/nsRefPtrHashtable.h	Wed Jun 30 23:11:41 2010 +0200
++++ xpcom/glue/nsRefPtrHashtable.h	Wed Jun 30 23:11:43 2010 +0200
+@@ -58,6 +58,7 @@
+ public:
+   typedef typename KeyClass::KeyType KeyType;
+   typedef RefPtr* UserDataType;
++  typedef nsBaseHashtable< KeyClass, nsRefPtr<RefPtr> , RefPtr* > base_type;
+ 
+   /**
+    * @copydoc nsBaseHashtable::Get
+@@ -88,6 +89,7 @@
+ public:
+   typedef typename KeyClass::KeyType KeyType;
+   typedef RefPtr* UserDataType;
++  typedef nsBaseHashtableMT< KeyClass, nsRefPtr<RefPtr> , RefPtr* > base_type;
+ 
+   /**
+    * @copydoc nsBaseHashtable::Get
+@@ -111,8 +113,7 @@
+ nsRefPtrHashtable<KeyClass,RefPtr>::Get
+   (KeyType aKey, UserDataType* pRefPtr) const
+ {
+-  typename nsBaseHashtable<KeyClass, nsRefPtr<RefPtr>, RefPtr*>::EntryType* ent =
+-    GetEntry(aKey);
++  typename base_type::EntryType* ent = this->GetEntry(aKey);
+ 
+   if (ent)
+   {
+@@ -139,8 +140,7 @@
+ nsRefPtrHashtable<KeyClass,RefPtr>::GetWeak
+   (KeyType aKey, PRBool* aFound) const
+ {
+-  typename nsBaseHashtable<KeyClass, nsRefPtr<RefPtr>, RefPtr*>::EntryType* ent =
+-    GetEntry(aKey);
++  typename base_type::EntryType* ent = this->GetEntry(aKey);
+ 
+   if (ent)
+   {
+@@ -167,8 +167,7 @@
+ {
+   PR_Lock(this->mLock);
+ 
+-  typename nsBaseHashtableMT<KeyClass, nsRefPtr<RefPtr>, RefPtr*>::EntryType* ent =
+-    GetEntry(aKey);
++  typename base_type::EntryType* ent = this->GetEntry(aKey);
+ 
+   if (ent)
+   {
+diff -r 93fabb73299b -r 2c778979f15a xpcom/glue/nsTPtrArray.h
+--- xpcom/glue/nsTPtrArray.h	Wed Jun 30 23:11:41 2010 +0200
++++ xpcom/glue/nsTPtrArray.h	Wed Jun 30 23:11:43 2010 +0200
+@@ -64,13 +64,13 @@
+ 
+     // Initialize this array and pre-allocate some number of elements.
+     explicit nsTPtrArray(size_type capacity) {
+-      SetCapacity(capacity);
++      this->SetCapacity(capacity);
+     }
+     
+     // The array's copy-constructor performs a 'deep' copy of the given array.
+     // @param other  The array object to copy.
+     nsTPtrArray(const self_type& other) {
+-      AppendElements(other);
++      this->AppendElements(other);
+     }
+ 
+     //
Index: www/libxul19/files/patch-bug579689
===================================================================
--- www/libxul19/files/patch-bug579689	(revision 0)
+++ www/libxul19/files/patch-bug579689	(working copy)
@@ -0,0 +1,66 @@
+changeset:   47875:d9d236a8d274
+user:        Eli Friedman <sharparrow1@yahoo.com>
+date:        Sun Jul 18 11:19:48 2010 +0200
+summary:     Bug 579689 - Fix cases of return without expression in a function returning "int". r=khuey
+
+diff -r d9555a5522cf -r d9d236a8d274 build/autoconf/moznbytetype.m4
+--- build/autoconf/moznbytetype.m4	Sun Jul 18 11:17:14 2010 +0200
++++ build/autoconf/moznbytetype.m4	Sun Jul 18 11:19:48 2010 +0200
+@@ -60,7 +60,7 @@
+     AC_TRY_COMPILE([],
+                    [
+                      int a[sizeof ($type) == $2 ? 1 : -1];
+-                     return;
++                     return 0;
+                    ],
+                    [moz_cv_n_byte_type_$1=$type; break], [])
+   done
+@@ -91,7 +91,7 @@
+     AC_TRY_COMPILE([],
+                    [
+                      int a[sizeof ($2) == $size ? 1 : -1];
+-                     return;
++                     return 0;
+                    ],
+                    [moz_cv_size_of_$1=$size; break], [])
+   done
+@@ -124,7 +124,7 @@
+                    ],
+                    [
+                      int a[offsetof(struct aligner, a) == $align ? 1 : -1];
+-                     return;
++                     return 0;
+                    ],
+                    [moz_cv_align_of_$1=$align; break], [])
+   done
+diff -r d9555a5522cf -r d9d236a8d274 js/src/build/autoconf/moznbytetype.m4
+--- js/src/build/autoconf/moznbytetype.m4	Sun Jul 18 11:17:14 2010 +0200
++++ js/src/build/autoconf/moznbytetype.m4	Sun Jul 18 11:19:48 2010 +0200
+@@ -60,7 +60,7 @@
+     AC_TRY_COMPILE([],
+                    [
+                      int a[sizeof ($type) == $2 ? 1 : -1];
+-                     return;
++                     return 0;
+                    ],
+                    [moz_cv_n_byte_type_$1=$type; break], [])
+   done
+@@ -91,7 +91,7 @@
+     AC_TRY_COMPILE([],
+                    [
+                      int a[sizeof ($2) == $size ? 1 : -1];
+-                     return;
++                     return 0;
+                    ],
+                    [moz_cv_size_of_$1=$size; break], [])
+   done
+@@ -124,7 +124,7 @@
+                    ],
+                    [
+                      int a[offsetof(struct aligner, a) == $align ? 1 : -1];
+-                     return;
++                     return 0;
+                    ],
+                    [moz_cv_align_of_$1=$align; break], [])
+   done
+
Index: www/libxul19/files/patch-bug623126
===================================================================
--- www/libxul19/files/patch-bug623126	(revision 0)
+++ www/libxul19/files/patch-bug623126	(working copy)
@@ -0,0 +1,49 @@
+changeset:   63904:ca41c5663999
+user:        Rafael ?vila de Esp?ndola <respindola@mozilla.com>
+date:        Thu Mar 24 19:26:55 2011 -0400
+summary:     Bug 623126 - Add constructor for nsDebugImpl, nsTraceRefcntImpl, EmptyEnumeratorImpl, and nsSimpleUnicharStreamFactory to placate CLang; r=bsmedberg
+
+diff -r 92b43aa07b7d -r ca41c5663999 xpcom/base/nsDebugImpl.h
+--- xpcom/base/nsDebugImpl.h	Thu Mar 24 16:45:07 2011 -0400
++++ xpcom/base/nsDebugImpl.h	Thu Mar 24 19:26:55 2011 -0400
+@@ -40,6 +40,7 @@
+ class nsDebugImpl : public nsIDebug2
+ {
+ public:
++    nsDebugImpl() {}
+     NS_DECL_ISUPPORTS
+     NS_DECL_NSIDEBUG
+     NS_DECL_NSIDEBUG2
+diff -r 92b43aa07b7d -r ca41c5663999 xpcom/base/nsTraceRefcntImpl.h
+--- xpcom/base/nsTraceRefcntImpl.h	Thu Mar 24 16:45:07 2011 -0400
++++ xpcom/base/nsTraceRefcntImpl.h	Thu Mar 24 19:26:55 2011 -0400
+@@ -44,6 +44,7 @@
+ class nsTraceRefcntImpl : public nsITraceRefcnt
+ {
+ public:
++  nsTraceRefcntImpl() {}
+   NS_DECL_ISUPPORTS
+   NS_DECL_NSITRACEREFCNT
+ 
+diff -r 92b43aa07b7d -r ca41c5663999 xpcom/glue/nsEnumeratorUtils.cpp
+--- xpcom/glue/nsEnumeratorUtils.cpp	Thu Mar 24 16:45:07 2011 -0400
++++ xpcom/glue/nsEnumeratorUtils.cpp	Thu Mar 24 19:26:55 2011 -0400
+@@ -52,6 +52,7 @@
+                             public nsIStringEnumerator
+ {
+ public:
++    EmptyEnumeratorImpl() {}
+     // nsISupports interface
+     NS_DECL_ISUPPORTS_INHERITED  // not really inherited, but no mRefCnt
+ 
+diff -r 92b43aa07b7d -r ca41c5663999 xpcom/io/nsUnicharInputStream.h
+--- xpcom/io/nsUnicharInputStream.h	Thu Mar 24 16:45:07 2011 -0400
++++ xpcom/io/nsUnicharInputStream.h	Thu Mar 24 19:26:55 2011 -0400
+@@ -51,6 +51,7 @@
+   private nsISimpleUnicharStreamFactory
+ {
+ public:
++  nsSimpleUnicharStreamFactory() {}
+   NS_DECL_ISUPPORTS_INHERITED
+   NS_DECL_NSIFACTORY
+   NS_DECL_NSISIMPLEUNICHARSTREAMFACTORY
Index: www/libxul19/files/patch-bug778078
===================================================================
--- www/libxul19/files/patch-bug778078	(revision 310976)
+++ www/libxul19/files/patch-bug778078	(working copy)
@@ -1,6 +1,14 @@
 --- toolkit/xre/nsAppRunner.cpp~
 +++ toolkit/xre/nsAppRunner.cpp
-@@ -3046,7 +3046,7 @@ XRE_main(int argc, char* argv[], const n
+@@ -640,6 +640,7 @@ class nsXULAppInfo : public nsIXULAppInf
+ 
+ {
+ public:
++  nsXULAppInfo() {}
+   NS_DECL_ISUPPORTS_INHERITED
+   NS_DECL_NSIXULAPPINFO
+   NS_DECL_NSIXULRUNTIME
+@@ -3046,7 +3047,7 @@ XRE_main(int argc, char* argv[], const n
      QApplication app(gArgc, gArgv);
  #endif
  #if defined(MOZ_WIDGET_GTK2)
Index: www/libxul19/files/patch-dom-src-threads-nsDOMWorker.h
===================================================================
--- www/libxul19/files/patch-dom-src-threads-nsDOMWorker.h	(revision 0)
+++ www/libxul19/files/patch-dom-src-threads-nsDOMWorker.h	(working copy)
@@ -0,0 +1,11 @@
+--- dom/src/threads/nsDOMWorker.h.orig	2012-03-06 15:45:25.000000000 +0100
++++ dom/src/threads/nsDOMWorker.h	2012-10-28 01:42:16.000000000 +0200
+@@ -74,7 +74,7 @@ class nsDOMWorkerScope : public nsDOMWor
+ {
+   friend class nsDOMWorker;
+ 
+-  typedef nsresult (NS_STDCALL nsDOMWorkerScope::*SetListenerFunc)
++  typedef nsresult (NS_DEFCALL nsDOMWorkerScope::*SetListenerFunc)
+     (nsIDOMEventListener*);
+ 
+ public:
Index: www/libxul19/files/patch-dom-src-threads-nsDOMWorkerXHRProxy.h
===================================================================
--- www/libxul19/files/patch-dom-src-threads-nsDOMWorkerXHRProxy.h	(revision 0)
+++ www/libxul19/files/patch-dom-src-threads-nsDOMWorkerXHRProxy.h	(working copy)
@@ -0,0 +1,11 @@
+--- dom/src/threads/nsDOMWorkerXHRProxy.h.orig	2012-10-28 01:49:37.000000000 +0200
++++ dom/src/threads/nsDOMWorkerXHRProxy.h	2012-10-28 01:49:45.000000000 +0200
+@@ -74,7 +74,7 @@ class nsDOMWorkerXHRProxy : public nsIRu
+   friend class nsDOMWorkerXHR;
+   friend class nsDOMWorkerXHRUpload;
+ 
+-  typedef nsresult (NS_STDCALL nsIDOMEventTarget::*EventListenerFunction)
++  typedef nsresult (NS_DEFCALL nsIDOMEventTarget::*EventListenerFunction)
+     (const nsAString&, nsIDOMEventListener*, PRBool);
+ 
+ public:
Index: www/libxul19/files/patch-embedding-browser-gtk-src-EmbedPrivate.cpp
===================================================================
--- www/libxul19/files/patch-embedding-browser-gtk-src-EmbedPrivate.cpp	(revision 0)
+++ www/libxul19/files/patch-embedding-browser-gtk-src-EmbedPrivate.cpp	(working copy)
@@ -0,0 +1,10 @@
+--- embedding/browser/gtk/src/EmbedPrivate.cpp.orig	2012-03-06 15:45:28.000000000 +0100
++++ embedding/browser/gtk/src/EmbedPrivate.cpp	2012-10-28 12:09:45.000000000 +0100
+@@ -104,6 +104,7 @@ nsIDirectoryServiceProvider *EmbedPrivat
+ class GTKEmbedDirectoryProvider : public nsIDirectoryServiceProvider2
+ {
+ public:
++  GTKEmbedDirectoryProvider() {}
+   NS_DECL_ISUPPORTS_INHERITED
+   NS_DECL_NSIDIRECTORYSERVICEPROVIDER
+   NS_DECL_NSIDIRECTORYSERVICEPROVIDER2
Index: www/libxul19/files/patch-intl-unicharutil-util-nsUnicharUtils.h
===================================================================
--- www/libxul19/files/patch-intl-unicharutil-util-nsUnicharUtils.h	(revision 0)
+++ www/libxul19/files/patch-intl-unicharutil-util-nsUnicharUtils.h	(working copy)
@@ -0,0 +1,11 @@
+--- intl/unicharutil/util/nsUnicharUtils.h.orig	2012-10-28 10:53:41.000000000 +0100
++++ intl/unicharutil/util/nsUnicharUtils.h	2012-10-28 10:54:01.000000000 +0100
+@@ -72,6 +72,8 @@ inline PRBool IsLowerCase(PRUnichar c) {
+ class nsCaseInsensitiveStringComparator : public nsStringComparator
+ {
+ public:
++  nsCaseInsensitiveStringComparator() {}
++
+   virtual int operator() (const PRUnichar*,
+                           const PRUnichar*,
+                           PRUint32 aLength) const;

--------------040708090305020707050703--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?51040DFC.7090008>