Closed
Bug 416463
Opened 16 years ago
Closed 16 years ago
Mozilla 1.8 fails to compile with gcc 4.3
Categories
(Core :: XPCOM, defect)
Tracking
()
VERIFIED
FIXED
mozilla1.9beta4
People
(Reporter: KaiE, Assigned: benjamin)
References
Details
(Keywords: fixed1.8.1.13)
Attachments
(1 file)
61.48 KB,
patch
|
ted
:
review+
dveditz
:
approval1.8.1.13+
|
Details | Diff | Splinter Review |
The latest nightly development version of Fedora (called Rawhide) fails to build the Mozilla 1.8 branch. I noticed this when trying to build SeaMonkey 1.1.8 The system uses gcc-Version 4.3.0 20080130 (Red Hat 4.3.0-0.7) (GCC) rm -f libxpcom_compat_c.so c++ -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wno-long-long -pedantic -g -fshort-wchar -pthread -pipe -DNDEBUG -DTRIMMED -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -fPIC -shared -Wl,-z,defs -Wl,-h,libxpcom_compat_c.so -o libxpcom_compat_c.so nsXPCOMObsolete.o nsRegistry.o -L../../../dist/bin -lxpcom -lxpcom_core -L../../../dist/bin -L/lib -lplds4 -lplc4 -lnspr4 -lpthread -ldl -L../../../dist/lib -lxpcom_compat -Wl,--version-script -Wl,../../../build/unix/gnu-ld-scripts/components-version-script -Wl,-Bsymbolic -ldl -lm nsXPCOMObsolete.o:(.data.rel.ro+0x18): undefined reference to `nsFileSpecImpl::Create(nsISupports*, nsID const&, void**)' nsXPCOMObsolete.o:(.data.rel.ro+0x50): undefined reference to `nsDirectoryIteratorImpl::Create(nsISupports*, nsID const&, void**)' /usr/bin/ld: libxpcom_compat_c.so: hidden symbol `nsFileSpecImpl::Create(nsISupports*, nsID const&, void**)' isn't defined /usr/bin/ld: final link failed: Nonrepresentable section on output collect2: ld returned 1 exit status gmake[2]: *** [libxpcom_compat_c.so] Error 1 gmake[2]: Leaving directory `/builddir/build/BUILD/mozilla/xpcom/obsolete/component' gmake[1]: *** [libs] Error 2 gmake[1]: Leaving directory `/builddir/build/BUILD/mozilla/xpcom/obsolete' make: *** [libs] Error 2
Reporter | ||
Comment 1•16 years ago
|
||
For testing purposes I have downgraded to gcc 4.1.2, then it builds just fine.
Reporter | ||
Comment 2•16 years ago
|
||
I filed bugs against fedora rawhide and gcc: https://bugzilla.redhat.com/show_bug.cgi?id=432138 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35145
Reporter | ||
Comment 3•16 years ago
|
||
FWIW, there are other moz bugs that are related to gcc 4.3, although they are about different failures: bug 409384, bug 411442
Reporter | ||
Comment 4•16 years ago
|
||
It appears that some sort of visibility problem has reappeared with gcc 4.3. When I add ac_cv_visibility_pragma=no to mozconfig, the build succeeds (at least it passes the reported failure, build still running).
Assignee | ||
Comment 5•16 years ago
|
||
Did this work with gcc 4.2, which added proper support for visibility pragmas? Can I get you to (cd xpcom/obsolete && make nsFileSpecImpl.i) (cd xpcom/obsolete/component && make nsXPCOMObsolete.i) and attach the two .i files? The NS_COM_OBSOLETE declaration on nsFileSpecImpl should cause the class member methods to be declared with external visibility, unless there is an overriding attribute on the method, which there shouldn't be for nsFileSpecImpl.
Comment 6•16 years ago
|
||
I think this was also broken in gcc 4.2, see Bug 410187. I duped this bug at that time to a invalid one, maybe that bug should then be re-duped to that one here (was the resolution invalid of Bug 386362 actually correct?).
Reporter | ||
Comment 9•16 years ago
|
||
(In reply to comment #5) > Did this work with gcc 4.2, which added proper support for visibility pragmas? Based on the dupes, no. > Can I get you to ... attach the two .i files? The files are big and bugzilla refused to attach the combined archive. I've uploaded it here: http://kuix.de/mozilla/416463i.tar.bz2
Comment 10•16 years ago
|
||
I still can't compile also 1.1.8 version with all gcc version I have installed (Debian testing) cijoml@notas:~$ dpkg -l|grep gcc ii gcc 4:4.2.2-2 The GNU C compiler ii gcc-3.3 1:3.3.6-15 The GNU C compiler ii gcc-3.3-base 1:3.3.6-15 The GNU Compiler Collection (base package) ii gcc-3.4 3.4.6-6 The GNU C compiler ii gcc-3.4-base 3.4.6-6 The GNU Compiler Collection (base package) ii gcc-4.1 4.1.2-18 The GNU C compiler ii gcc-4.1-base 4.1.2-18 The GNU Compiler Collection (base package) ii gcc-4.2 4.2.2-7 The GNU C compiler ii gcc-4.2-base 4.2.2-7 The GNU Compiler Collection (base package) ii gcc-4.3-base 4.3-20080116-1 The GNU Compiler Collection (base package) ii libgcc1 1:4.3-20080116-1 GCC support library make[4]: Entering directory `/usr/src/seamonkey-1.1.8/content/canvas/src' nsCanvasRenderingContext2D.cpp c++ -o nsCanvasRenderingContext2D.o -c -DMOZILLA_INTERNAL_API -DOSTYPE=\"Linux2.6\" -DOSARCH=\"Linux\" -DBUILD_ID=0000000000 -D_IMPL_NS_LAYOUT -I../../../dist/include/xpcom -I../../../dist/include/string -I../../../dist/include/gfx -I../../../dist/include/layout -I../../../dist/include/widget -I../../../dist/include/dom -I../../../dist/include/js -I../../../dist/include/locale -I../../../dist/include/unicharutil -I../../../dist/include/webshell -I../../../dist/include/uriloader -I../../../dist/include/htmlparser -I../../../dist/include/necko -I../../../dist/include/view -I../../../dist/include/pref -I../../../dist/include/docshell -I../../../dist/include/xpconnect -I../../../dist/include/xuldoc -I../../../dist/include/caps -I../../../dist/include/editor -I../../../dist/include/imglib2 -I../../../dist/include/mimetype -I../../../dist/include/exthandler -I../../../dist/include/uconv -I../../../dist/include/intl -I../../../dist/include/plugin -I../../../dist/include/cairo -I../../../dist/include/libpixman -I../../../dist/include/content -I../../../dist/include -I../../../dist/include/nspr -I../../../dist/sdk/include -fPIC -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wno-long-long -fshort-wchar -pthread -pipe -DNDEBUG -DTRIMMED -ffunction-sections -march=pentium4 -mfpmath=sse -O2 -I../../../dist/include/cairo -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -DMOZILLA_CLIENT -include ../../../mozilla-config.h -Wp,-MD,.deps/nsCanvasRenderingContext2D.pp nsCanvasRenderingContext2D.cpp make[4]: c++: Command not found make[4]: *** [nsCanvasRenderingContext2D.o] Error 127 make[4]: Leaving directory `/usr/src/seamonkey-1.1.8/content/canvas/src' make[3]: *** [libs] Error 2 make[3]: Leaving directory `/usr/src/seamonkey-1.1.8/content/canvas' make[2]: *** [libs] Error 2 make[2]: Leaving directory `/usr/src/seamonkey-1.1.8/content' make[1]: *** [tier_9] Error 2 make[1]: Leaving directory `/usr/src/seamonkey-1.1.8' make: *** [default] Error 2
Comment 11•16 years ago
|
||
Sorry wrong output because I was playing with all those compilers: make[4]: Entering directory `/usr/src/seamonkey-1.1.8/content/canvas/src' nsCanvasRenderingContext2D.cpp c++ -o nsCanvasRenderingContext2D.o -c -DMOZILLA_INTERNAL_API -DOSTYPE=\"Linux2.6\" -DOSARCH=\"Linux\" -DBUILD_ID=0000000000 -D_IMPL_NS_LAYOUT -I../../../dist/include/xpcom -I../../../dist/include/string -I../../../dist/include/gfx -I../../../dist/include/layout -I../../../dist/include/widget -I../../../dist/include/dom -I../../../dist/include/js -I../../../dist/include/locale -I../../../dist/include/unicharutil -I../../../dist/include/webshell -I../../../dist/include/uriloader -I../../../dist/include/htmlparser -I../../../dist/include/necko -I../../../dist/include/view -I../../../dist/include/pref -I../../../dist/include/docshell -I../../../dist/include/xpconnect -I../../../dist/include/xuldoc -I../../../dist/include/caps -I../../../dist/include/editor -I../../../dist/include/imglib2 -I../../../dist/include/mimetype -I../../../dist/include/exthandler -I../../../dist/include/uconv -I../../../dist/include/intl -I../../../dist/include/plugin -I../../../dist/include/cairo -I../../../dist/include/libpixman -I../../../dist/include/content -I../../../dist/include -I../../../dist/include/nspr -I../../../dist/sdk/include -fPIC -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wno-long-long -fshort-wchar -pthread -pipe -DNDEBUG -DTRIMMED -ffunction-sections -march=pentium4 -mfpmath=sse -O2 -I../../../dist/include/cairo -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -DMOZILLA_CLIENT -include ../../../mozilla-config.h -Wp,-MD,.deps/nsCanvasRenderingContext2D.pp nsCanvasRenderingContext2D.cpp In file included from ../../../dist/include/xpconnect/nsIXPConnect.h:54, from ../../../dist/include/xpconnect/nsIXPCScriptable.h:14, from ../../../dist/include/dom/nsIDOMClassInfo.h:376, from ../../../dist/include/dom/nsIDOMScriptObjectFactory.h:42, from ../../../dist/include/content/nsContentUtils.h:47, from nsCanvasRenderingContext2D.cpp:47: ../../../dist/include/xpcom/xptinfo.h: In member function 'const nsXPTCMiniVariant* nsXPTConstant::GetValue() const': ../../../dist/include/xpcom/xptinfo.h:258: warning: type-punning to incomplete type might break strict-aliasing rules In file included from ../../../dist/include/layout/nsStyleStruct.h:42, from ../../../dist/include/layout/nsIFrame.h:49, from ../../../dist/include/content/nsICanvasElement.h:42, from ../../../dist/include/content/nsICanvasRenderingContextInternal.h:42, from nsCanvasRenderingContext2D.cpp:52: ../../../dist/include/gfx/nsCoord.h: In function 'float NS_IEEEPositiveInfinity()': ../../../dist/include/gfx/nsCoord.h:65: warning: dereferencing type-punned pointer will break strict-aliasing rules ../../../dist/include/gfx/nsCoord.h: In function 'PRBool NS_IEEEIsNan(float)': ../../../dist/include/gfx/nsCoord.h:69: warning: dereferencing type-punned pointer will break strict-aliasing rules In file included from ../../../dist/include/layout/nsPresContext.h:46, from ../../../dist/include/layout/nsStyleStruct.h:50, from ../../../dist/include/layout/nsIFrame.h:49, from ../../../dist/include/content/nsICanvasElement.h:42, from ../../../dist/include/content/nsICanvasRenderingContextInternal.h:42, from nsCanvasRenderingContext2D.cpp:52: ../../../dist/include/layout/nsIPresShell.h: In member function 'nsFrameManager* nsIPresShell::FrameManager() const': ../../../dist/include/layout/nsIPresShell.h:190: warning: type-punning to incomplete type might break strict-aliasing rules In file included from ../../../dist/include/layout/nsStyleContext.h:43, from ../../../dist/include/layout/nsIFrame.h:50, from ../../../dist/include/content/nsICanvasElement.h:42, from ../../../dist/include/content/nsICanvasRenderingContextInternal.h:42, from nsCanvasRenderingContext2D.cpp:52: ../../../dist/include/layout/nsRuleNode.h: In member function 'nsRuleList** nsRuleNode::ChildrenListPtr()': ../../../dist/include/layout/nsRuleNode.h:356: warning: dereferencing type-punned pointer will break strict-aliasing rules In file included from /usr/include/gtk-2.0/gdk/gdkcairo.h:25, from /usr/include/gtk-2.0/gdk/gdk.h:30, from nsCanvasRenderingContext2D.cpp:147: /usr/include/pango-1.0/pango/pangocairo.h: At global scope: /usr/include/pango-1.0/pango/pangocairo.h:71: error: 'cairo_font_type_t' was not declared in this scope /usr/include/pango-1.0/pango/pangocairo.h:73: error: 'cairo_font_type_t' does not name a type nsCanvasRenderingContext2D.cpp: In member function 'virtual nsresult nsCanvasRenderingContext2D::Render(nsIRenderingContext*)': nsCanvasRenderingContext2D.cpp:951: warning: dereferencing type-punned pointer will break strict-aliasing rules nsCanvasRenderingContext2D.cpp: In member function 'nsresult nsCanvasRenderingContext2D::DrawNativeSurfaces(nsIDrawingSurface*, nsIDrawingSurface*, const nsIntSize&, nsIRenderingContext*)': nsCanvasRenderingContext2D.cpp:2804: warning: dereferencing type-punned pointer will break strict-aliasing rules ../../../dist/include/xpcom/nsAutoPtr.h: In member function 'void** nsAutoArrayPtr<T>::begin_assignment() [with T = unsigned char]': ../../../dist/include/xpcom/nsAutoPtr.h:650: instantiated from 'T** nsAutoArrayPtr<T>::StartAssignment() [with T = unsigned char]' ../../../dist/include/xpcom/nsAutoPtr.h:725: instantiated from 'nsAutoArrayPtrGetterTransfers<T>::operator T**() [with T = unsigned char]' nsCanvasRenderingContext2D.cpp:2796: instantiated from here ../../../dist/include/xpcom/nsAutoPtr.h:505: warning: dereferencing type-punned pointer will break strict-aliasing rules nsCanvasRenderingContext2D.cpp: At global scope: nsCanvasRenderingContext2D.cpp:198: warning: 'PRBool FloatValidate(double, double, double)' defined but not used make[4]: *** [nsCanvasRenderingContext2D.o] Error 1 make[4]: Leaving directory `/usr/src/seamonkey-1.1.8/content/canvas/src' make[3]: *** [libs] Error 2 make[3]: Leaving directory `/usr/src/seamonkey-1.1.8/content/canvas' make[2]: *** [libs] Error 2 make[2]: Leaving directory `/usr/src/seamonkey-1.1.8/content' make[1]: *** [tier_9] Error 2 make[1]: Leaving directory `/usr/src/seamonkey-1.1.8' make: *** [default] Error 2
Reporter | ||
Comment 12•16 years ago
|
||
Misan, you did not say which compiler you used for comment 11, but I think it is something else. The error is: /usr/include/pango-1.0/pango/pangocairo.h:71: error: 'cairo_font_type_t' was not declared in this scope /usr/include/pango-1.0/pango/pangocairo.h:73: error: 'cairo_font_type_t' does not name a type I ran into that failure, too, and I fixed it for me by using --enable-system-cairo. Can you please use attachments for big blocks of text? Thanks :-)
Comment 13•16 years ago
|
||
This is my configure: ./configure --with-x --disable-tests --enable-safe-browsing --enable-storage --enable-url-classifier --enable-svg --enable- xft --enable-crypto --enable-xinerama --disable-debug --enable-optimize="-march=pentium4 -mfpmath=sse -O2" --disable-loggin g --enable-reorder --enable-strip --enable-timeline --enable-xterm-updates --disable-pedantic --enable-application=suite
Reporter | ||
Comment 14•16 years ago
|
||
(In reply to comment #13) > This is my configure: > > ./configure --with-x --disable-tests --enable-safe-browsing --enable-storage > --enable-url-classifier --enable-svg --enable- > xft --enable-crypto --enable-xinerama --disable-debug > --enable-optimize="-march=pentium4 -mfpmath=sse -O2" --disable-loggin > g --enable-reorder --enable-strip --enable-timeline --enable-xterm-updates > --disable-pedantic --enable-application=suite ... which does not contain the --enable-system-cairo that I propose in comment 12 ... The error listed in comment 11 and comment 12 is something else. It's a msising symbol. This is a configuration problem of library versions. It's NOT a compiler bug. If you disagree, please file a separate bug.
Assignee | ||
Comment 15•16 years ago
|
||
I believe this bug is being caused by an extra copy of nsFileSpecImpl.{h,cpp} Kai, could I get you to remove xpcom/obsolete/component/nsFileSpecImpl.{h,cpp} from your source directory and rebuild?
Reporter | ||
Comment 16•16 years ago
|
||
(In reply to comment #15) > I believe this bug is being caused by an extra copy of nsFileSpecImpl.{h,cpp} > > Kai, could I get you to remove xpcom/obsolete/component/nsFileSpecImpl.{h,cpp} > from your source directory and rebuild? You found the bug. After I removed those files the build completes fine.
Assignee | ||
Comment 17•16 years ago
|
||
This patch merely removes the following files: xpcom/obsolete/component/nsFileSpecImpl.h xpcom/obsolete/component/nsIRegistry.idl xpcom/obsolete/component/nsIRegistryUtils.h xpcom/obsolete/component/regExport.cpp
Assignee: nobody → benjamin
Status: NEW → ASSIGNED
Attachment #303263 -
Flags: review?(ted.mielczarek)
Attachment #303263 -
Flags: approval1.8.1.13?
Updated•16 years ago
|
Attachment #303263 -
Flags: review?(ted.mielczarek) → review+
Assignee | ||
Comment 18•16 years ago
|
||
I landed this on trunk, because even though Firefox doesn't build xpcom-obsolete any more I think seamonkey/thunderbird still do. So marking FIXED, and we'll track the branch resolution with keywords.
Status: ASSIGNED → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
Comment 19•16 years ago
|
||
Comment on attachment 303263 [details] [diff] [review] Remove duplicated or unnecessary files, rev. 1 How can you remove these files without taking references out of a makefile somewhere, or, if they're not mentioned in the makefile how are they getting mixed up in a build?
Assignee | ||
Comment 20•16 years ago
|
||
nsFileSpecImpl.h is contained in both xpcom/obsolete and xpcom/obsolete/component. The xpcom/obsolete version is the "correct" one that is being sent to dist/include and so forth. the xpcom/obsolete/component one is only being picked up by nsXPCOMObsolete.cpp because it uses #include "nsFileSpecImpl.h" which prefers the source directory over -I flags. Otherwise these files were unused and should never have existed.
Comment 21•16 years ago
|
||
Comment on attachment 303263 [details] [diff] [review] Remove duplicated or unnecessary files, rev. 1 approved for 1.8.1.13, a=dveditz for release-drivers
Attachment #303263 -
Flags: approval1.8.1.13? → approval1.8.1.13+
Assignee | ||
Updated•16 years ago
|
Keywords: checkin-needed
Comment 22•16 years ago
|
||
Removing xpcom/obsolete/component/nsFileSpecImpl.cpp; /cvsroot/mozilla/xpcom/obsolete/component/Attic/nsFileSpecImpl.cpp,v <-- nsFileSpecImpl.cpp new revision: delete; previous revision: 1.2 done Removing xpcom/obsolete/component/nsFileSpecImpl.h; /cvsroot/mozilla/xpcom/obsolete/component/Attic/nsFileSpecImpl.h,v <-- nsFileSpecImpl.h new revision: delete; previous revision: 1.3 done Removing xpcom/obsolete/component/nsIRegistry.idl; /cvsroot/mozilla/xpcom/obsolete/component/Attic/nsIRegistry.idl,v <-- nsIRegistry.idl new revision: delete; previous revision: 1.2 done Removing xpcom/obsolete/component/nsIRegistryUtils.h; /cvsroot/mozilla/xpcom/obsolete/component/Attic/nsIRegistryUtils.h,v <-- nsIRegistryUtils.h new revision: delete; previous revision: 1.2 done Removing xpcom/obsolete/component/regExport.cpp; /cvsroot/mozilla/xpcom/obsolete/component/Attic/regExport.cpp,v <-- regExport.cpp new revision: delete; previous revision: 1.2 done
Keywords: checkin-needed → fixed1.8.1.13
Target Milestone: --- → mozilla1.9beta4
Comment 23•16 years ago
|
||
Thanks! I can build Thunderbird 2.0.0.12 now!
Comment 24•16 years ago
|
||
Mark, have you done a test compilation to make sure it all works now with gcc 4.3?
Comment 25•16 years ago
|
||
Is this fix likely to make it into a tarball anytime soon?
Assignee | ||
Comment 26•16 years ago
|
||
There are tarballs for each release, so any of the 2.0.0.13 tarballs would have it.
Status: RESOLVED → VERIFIED
Comment 27•16 years ago
|
||
Ah, so maybe it's a new bug or a return of this bug that I'm experiencing. I am using the latest 2.0.0.13 tarball (in GNOME's jhbuild on Ubuntu Hardy). The patch seemed to help but still left "undefined reference to `inflateInit_" build errors. Nevermind.
You need to log in
before you can comment on or make changes to this bug.
Description
•