Building Mozilla applications (Firefox, Thunderbird, SeaMonkey, etc.) on modern Linux distributions is generally relatively trouble-free, although each new distribution tends to introduce a few new issues that need to be fixed in the source. Fedora Core 5 introduces a few of these issues:
SELinux execmod denials
For those with SELinux in enforcing mode, you are likely to run into problems both with the shlibsign during the build process and with the running the final build related to SELinux denying execmod permission due at least primarily (if not completely) to a compiler bug.
This problem can be worked around in one of the following two ways
Workaround #1 (sacrifice performance)
Disable the visibility optimizations by adding the following line to your mozconfig:
(Don’t prefix this with ac_add_options!)
Workaround #2 (sacrifice security; have to use workaround more often)
Use a command like (using bash syntax):
chcon -t texrel_shlib_t $(find . -name "*.so")
within dist/bin to give the shared libraries a security context type that allows execmod (i.e., making previously-writable memory executable).
Debugging tools involving stack traces
Compilation errors relating to JB_BP
Depending on the version of your source and configuration options, you may see compilation errors related to the removal of JB_BP, which was a constant used in code that took stack traces for debugging purposes by getting the frame address by calling setjmp. Patches to fix these problems are in bug 323853.
The patch that affects the default build options has been checked in to the trunk, the MOZILLA_1_8_BRANCH, and the MOZILLA_1_8_0_BRANCH. However, if you are using other debugging tools, particularly on older branches, or building from older branches or release tags, you may need to apply some of these patches yourself.
No stack traces due to __builtin_frame_address(0) malfunction
Because of changes in the meaning of __builtin_frame_address(0), patches from bug 331436 are needed; they should be checked in to the trunk reasonably soon.
With gcc 4.1, some optimization levels (e.g., -O, -Os, -O2) have started to imply -fomit-frame-pointer. (Verify this? Which levels?) If you want to use jprof or any of the other stack walking tools, you probably need to use
ac_add_options --enable-optimize="-O2 -fno-omit-frame-pointer"
when enabling optimization. (Perhaps retest this once patches from bug 331436 are landed.)