Closed Bug 386362 Opened 17 years ago Closed 17 years ago

Fails to build with gcc 4.2

Categories

(Firefox Build System :: General, defect)

2.0 Branch
x86
Linux
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED DUPLICATE of bug 416463

People

(Reporter: glandium, Unassigned)

References

Details

Just so that there is no doubt, I did check that also happens when building a pristine firefox 2.0.0.4 source tarball, with configure arguments taken from an official build's buildconfig.html file, only removing the -gstabs+ cflag because of disk space issues.

Building with gcc 4.2 leads to the following error:
c++ -o firefox-bin  -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 -fshort-wchar -pthread -pipe  -DNDEBUG -DTRIMMED -Os -freorder-blocks -fno-reorder-functions  nsBrowserApp.o nsStaticComponents.o      -L../../dist/bin -L../../dist/lib -L../../dist/lib/components  ../../dist/lib/libxulapp_s.a -L../../dist/bin -lmozjs -L../../dist/bin -lxpcom -lxpcom_core  -L../../dist/lib -lplds4 -lplc4 -lnspr4 -lpthread -ldl -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXfixes -lpango-1.0 -lcairo -lX11 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0     -lX11  -ldl -lm  ../../dist/lib/components/libxpcom_compat_c.a ../../dist/lib/components/libxpconnect.a ../../dist/lib/components/libuconv.a ../../dist/lib/components/libucvmath.a ../../dist/lib/components/libi18n.a ../../dist/lib/components/libmork.a ../../dist/lib/components/libstoragecomps.a ../../dist/lib/components/libnecko.a ../../dist/lib/components/libnecko2.a ../../dist/lib/components/libpref.a ../../dist/lib/components/libcaps.a ../../dist/lib/components/librdf.a ../../dist/lib/components/libhtmlpars.a ../../dist/lib/components/libgfxps.a ../../dist/lib/components/libgfx_gtk.a ../../dist/lib/components/libimglib2.a ../../dist/lib/components/libgkplugin.a ../../dist/lib/components/libwidget_gtk2.a ../../dist/lib/components/libgklayout.a ../../dist/lib/components/libdocshell.a ../../dist/lib/components/libembedcomponents.a ../../dist/lib/components/libwebbrwsr.a ../../dist/lib/components/libeditor.a ../../dist/lib/components/libtxmgr.a ../../dist/lib/components/libcomposer.a ../../dist/lib/components/libnsappshell.a ../../dist/lib/components/liboji.a ../../dist/lib/components/libaccessibility.a ../../dist/lib/components/libchrome.a ../../dist/lib/components/libmozfind.a ../../dist/lib/components/libappcomps.a ../../dist/lib/components/libfileview.a ../../dist/lib/components/libremoteservice.a ../../dist/lib/components/libcommandlines.a ../../dist/lib/components/libtoolkitcomps.a ../../dist/lib/components/libpipboot.a ../../dist/lib/components/libpipnss.a ../../dist/lib/components/libpippki.a ../../dist/lib/components/libcookie.a ../../dist/lib/components/libxmlextras.a ../../dist/lib/components/libautoconfig.a ../../dist/lib/components/libsystem-pref.a ../../dist/lib/components/libtransformiix.a ../../dist/lib/components/libuniversalchardet.a ../../dist/lib/components/libwebsrvcs.a ../../dist/lib/components/libauth.a ../../dist/lib/components/libpermissions.a ../../dist/lib/components/libsearchservice.a ../../dist/lib/components/libbrowserdirprovider.a ../../dist/lib/components/libbrowsercomps.a ../../dist/lib/libunicharutil_s.a ../../dist/lib/libucvutil_s.a ../../dist/lib/libgtkxtbin.a ../../dist/lib/libgfxshared_s.a ../../dist/lib/libgfxpsshar.a ../../dist/lib/libgkgfx.a ../../dist/lib/libjsj.a ../../dist/lib/libxulapp_s.a  -L../../dist/lib -lmozpng -L../../dist/lib -lmozjpeg -L../../dist/lib -lmozz  -L-L../../dist/bin -L../../dist/lib -lcrmf -lsmime3 -lssl3 -lnss3 -lsoftokn3   -lmozcairo -lmozlibpixman   -lXrender -lX11  -lfontconfig -lfreetype  -lXt -lXft -lfontconfig   -L../../dist/lib -lxpcom_compat    
../../dist/lib/components/libxpcom_compat_c.a(nsXPCOMObsolete.o):(.rodata+0x30): undefined reference to `nsFileSpecImpl::Create(nsISupports*, nsID const&, void**)'
../../dist/lib/components/libxpcom_compat_c.a(nsXPCOMObsolete.o):(.rodata+0x68): undefined reference to `nsDirectoryIteratorImpl::Create(nsISupports*, nsID const&, void**)'
/usr/bin/ld: firefox-bin: 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
make[3]: *** [firefox-bin] Error 1
make[3]: Leaving directory `/tmp/mozilla/browser/app'

Note that this release of gcc fixed the bugs that are checked in the configure script, so that the build now uses the system-wrappers instead of the -fvisibility=hidden argument that used to be used in gcc 4.x builds, which explains why it does only show up now.
changing nsFileSpecImpl.h in xpcom/obsolete/component so that both nsFileSpecImpl and nsDirectoryIteratorImpl are declared class NS_COM instead of class solves the problem, but I'm not sure this is the right macro to use.
I also wonder if this is not a bug in gcc, actually, because with -fvisibility=hidden, pristine source builds fine...
Hello ?
I guess attaching the patch and requesting review with questions/comments you still have might be more suitable to get timely feedback.
That was obviously a bug in gcc, since it now builds fine.
Status: NEW → RESOLVED
Closed: 17 years ago
Resolution: --- → INVALID
Forget my last message, it still occurs (just got it building seamonkey 1.1.5).
Status: RESOLVED → REOPENED
Resolution: INVALID → ---
last time i tried, the trunk builds fine at least.
The trunk builds a libxul, doesn't it ?
for me xulrunner 1.9 builds fine, while the 1.8 branch still fails with the fixed gcc.

For 1.8 we have the workaround to use -fvisibilty=hidden instead of including gcc_hidden.h. So I think its safe to say that this is fixed.
Status: REOPENED → RESOLVED
Closed: 17 years ago17 years ago
Resolution: --- → FIXED
Per comment 7 appears to have been a bug in gcc not Firefox
Resolution: FIXED → INVALID
This bug is not invalid.

While trunk builds fine, the stable 1.8 branch fails to build.
As I understand it, both Mike and Alendar have confirmed that.

I'm going to reopen this bug and dupe to it another bug which has more recent info, and which has cross links to other bugzillas.
Status: RESOLVED → REOPENED
Resolution: INVALID → ---
Status: REOPENED → RESOLVED
Closed: 17 years ago17 years ago
Resolution: --- → DUPLICATE
Component: Build Config → General
Product: Firefox → Firefox Build System
You need to log in before you can comment on or make changes to this bug.