Errors due to symbol visibility attribute when building with development GCC builds

RESOLVED FIXED

Status

()

Firefox
Build Config
RESOLVED FIXED
12 years ago
12 years ago

People

(Reporter: Art Haas, Assigned: Benjamin Smedberg)

Tracking

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment)

(Reporter)

Description

12 years ago
User-Agent:       Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20060706 SeaMonkey/1.5a
Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20060706 SeaMonkey/1.5a

Hi.

A large number of symbol visibility patches landed into the GCC development tree at the end of June and beginning of July. The changes rework how GCC determines symbol visibility in C/C++ code, and according to the changelogs fix numerous bugs within GCC. However, the Mozilla/Firefox code now will no longer compile when being built with the current GCC development builds containing these fixes.

As the development version of the compiler will branch at some point and become what will be GCC-4.2, it would be advantageous to try and resolve the symbol visibility problems before the official release of that version of GCC.

Reproducible: Always

Steps to Reproduce:
1. Download, build, and install GCC development compiler
2. Configure a Mozilla/Firefox build using the development GCC compiler
3. Try to build while saving the build log for the warning/error messages. 

Actual Results:  
Builds fail with numerous warnings/errors regarding symbol visibility.

Expected Results:  
A successful build.

The big patch regarding C++ visibility landed on June 29, and there have been various subsequent patches since then addressing other visiblity issues. Prior to the patch(es) landing, Firefox would build without problem; Mozilla/SeaMonkey
builds would work mostly but there was an error in the mail/news code.
(Assignee)

Comment 1

12 years ago
We have had lots of workaround for broken visibility handling in GCC... I'll look into the gcc-trunk issues.

Could you perhaps post a build log of what's failing?
Assignee: nobody → benjamin
(Reporter)

Comment 2

12 years ago
Created attachment 228468 [details]
Compressed build log showing warnings/errors

Hi.

Here's a snippet of the build log. Uncompressed the log is about 6.8M, compressed it was about 400K, so my first attempt at uploading failed. After removing lots of essentially duplicated warnings during the build I've sent up a compressed file around 200K but it shows the warnings.

The end of the log shows the link error that caused this build to fail.
(Assignee)

Comment 3

12 years ago
c++ -o nsDependentString.o -c -I../../../dist/include/system_wrappers -include /home/arth/mozilla/config/gcc_hidden.h -DMOZILLA_INTERNAL_API -DOSTYPE=\"Linux2.6.17-1.2356\" -DOSARCH=\"Linux\" -DBUILD_ID=0000000000 -D_IMPL_NS_COM  -I../../../dist/include/xpcom -I../../../dist/include   -I../../../dist/include/string -I../../../dist/include/nspr       -fPIC   -fno-rtti -fno-exceptions -fno-check-new -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 -O2 -march=pentium3   -DMOZILLA_CLIENT -include ../../../mozilla-config.h -Wp,-MD,.deps/nsDependentString.pp /home/arth/mozilla/xpcom/string/src/nsDependentString.cpp
../../../dist/include/xpcom/nsXPCOM.h:140: warning: ‘nsresult NS_InitXPCOM2_P(nsIServiceManager**, nsIFile*, nsIDirectoryServiceProvider*)’: visibility attribute requests greater visibility than its type allows

Does anyone know what this warning actually means?
Status: UNCONFIRMED → NEW
Ever confirmed: true
(Reporter)

Comment 4

12 years ago
Hi.

As of July 20, a number of visibility patches landed in the GCC development tree which address/correct the build problems I reported initially. There was a long thread on the GCC development mailing list regarding Mozilla's use of symbol visibility and how GCC handles symbol visibility in code and with the various command line options. The result of the thread was the application of changes to the C/C++ visibility handling in GCC which permit Mozilla/SeaMonkey/Firefox to build again.

I suggest marking this bug as closed. 
(Assignee)

Comment 5

12 years ago
Yes, I discussed with Jason Merrill and this has all been resolved. Thanks all.
Status: NEW → RESOLVED
Last Resolved: 12 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.