Closed Bug 409640 Opened 17 years ago Closed 16 years ago

Enable hidden-visibility support in Camino build's Development configuration

Categories

(Camino Graveyard :: General, defect)

All
macOS
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: mark, Assigned: mark)

Details

Attachments

(3 files, 5 obsolete files)

Spinoff from bug 408959. See bug 408959 comment 6 and bug 408959 attachment 294404 [details]. Following bug 408959 comment 8: I don't see any more visibility warnings at all during a 1.8 branch nonstatic build, i386 10.5.1 Xc3.0 gcc4.0 using 10.4u. mark@crack bash$ grep "has different visibility" ../build/camino/make.out mark@crack bash$ I'm doing a non-debug build. Looks like your log snippet is from a debug build. That's what's happening. The core always enables hidden visibility support, but the Xcode project only turns it on in the Deployment configuration. See how the warnings are reversed compared to comment 0? Your snippet's warnings say that there's a mismatch between core visibility (1) and Camino (2). We should turn on the visibility stuff in the project file (trunk and branch both) for the Development configuration too, to match the core.
Attached patch Patch (obsolete) — Splinter Review
This enables -fvisibility=hidden in Debug.xcconfig for the core development configuration, and in the project file for each of the preference panes' development configurations. (We don't have separate PrefPaneDebug.xcconfig and PrefPaneRelease.xcconfig files.) Before checking this in on the branch, we should verify that explicitly specifying this doesn't do evil things to the gcc 3.3 build. gcc 3.3 doesn't support hidden visibility.
Assignee: nobody → mark
Status: NEW → ASSIGNED
Attachment #294438 - Flags: review?(alqahira)
Comment on attachment 294438 [details] [diff] [review] Patch This works great on trunk. Well, it spews some new errors because of your use of # instead of // for the comments in the .xcconfig ;) However, either it does not work on branch, or I screwed up backporting it to branch, or my branch debug build (Intel) is horked. I'm not really sure which :-(
Attached patch Trunk patch (obsolete) — Splinter Review
Comment fix!
Attachment #294438 - Attachment is obsolete: true
Attachment #294442 - Flags: review?(alqahira)
Attachment #294438 - Flags: review?(alqahira)
Attached patch 1.8 branch patch (obsolete) — Splinter Review
This backport works for me.
Attachment #294443 - Flags: review?(alqahira)
Attached patch Trunk patch (obsolete) — Splinter Review
Attachment #294442 - Attachment is obsolete: true
Attachment #294444 - Flags: review?(alqahira)
Attachment #294442 - Flags: review?(alqahira)
Attached patch 1.8 branch patch (obsolete) — Splinter Review
Attachment #294443 - Attachment is obsolete: true
Attachment #294445 - Flags: review?(alqahira)
Attachment #294443 - Flags: review?(alqahira)
Attachment #294444 - Attachment is obsolete: true
Attachment #294444 - Flags: review?(alqahira)
Attachment #294445 - Attachment is obsolete: true
Attachment #294445 - Flags: review?(alqahira)
Xcode automatically turns off hidden visibility when fix-and-continue is enabled. If both are enabled, fix-and-continue takes precedence. The original patch fixed this by chance because the syntax error in the xcconfig caused the entire xcconfig to be rejected, which turned off fix-and-continue. If we want to resolve this by turning off fix-and-continue, the correct solution is to remove GCC_ENABLE_FIX_AND_CONTINUE (or set it to NO). In that case, we wouldn't need an explicit setting for GCC_SYMBOLS_PRIVATE_EXTERN. This is true as of Xcode 3.0. It's possible that 2.5/2.4.1 behave differently, test attachment 294444 [details] [diff] [review] or 294445 to verify. Neither has the desired effect with Xcode 3.0, as they leave GCC_ENABLE_FIX_AND_CONTINUE on.
Fix-and-continue is garbage; we should disable it everywhere.
So, turning off fix-and-continue (and Xcode automatically turning on hidden visibility) is not sufficient to eliminate all visibility warnings with Xcode 3. I verified that each of the object files in Camino is built with -fvisibility=hidden and that GCC_SYMBOLS_PRIVATE_EXTERN is YES when we export all those variables for script phases :P It does, however, cut the number of warnings by about 2/3 (compare this log and subsequent log). Beyond that, the warnings we're left with have switched directions again; the mismatches are between "core (2) and Camino (1)".
This basically updates mento's patch to the current state of things; it's possible to just modify the xcconfig and have all the targets inherit these settings. While this patch doesn't eliminate all of the warnings, it does reduce them significantly and fix this bug "as summarized" (as well as turn off the "garbage" in our own targets).
Attachment #379511 - Flags: superreview?(stuart.morgan+bugzilla)
Attachment #379511 - Flags: superreview?(stuart.morgan+bugzilla) → superreview+
Comment on attachment 379511 [details] [diff] [review] Trunk patch, circa 2009 sr=smorgan
Landed the latest patch. This bug as summarized is fixed (hidden-visibility support is now on, and fix-and-continue is now off), though there are some remaining visibility warnings from ld; I think they should get their own bug, and let's call this one FIXED, 1.5 years later ;)
Status: ASSIGNED → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: