Skip to content

Commit

Permalink
mozcoreconf-v6.eclass: don't force -mminimal-toc on ppc64
Browse files Browse the repository at this point in the history
This is a really old flag which was needed to compile with
GCC <4.6

I've traced down the existence of this flag here up to
commit 5980a31194da3376ea9dcf804139a2999199508c
Author: Raúl Porcel <[email protected]>
Date:   Sat Mar 15 18:09:25 2008 +0000
Add eclasses for mozilla-firefox-3 and xulrunner-1.9

probably it also was in earlier eclasses.
it was there to fix this kind of bugs: https://bugs.gentoo.org/241900

Problem WAS that on ppc64 .toc1 section could be at most 64KB in size
It's true on GCC versions prior to 4.6 or if mminimal-toc passed on modern gcc

However, since GCC4.6[1] they implemented 3 new TOC models

-mcmodel=small
  uses 16-bit toc offsets, ie. what we had before.

-mcmodel=medium [ the new default ]
  uses 32-bit toc offsets and addresses static data, string constants
  etc. relative to the toc pointer.  Limits data to around 2G.

-mcmodel=large
  uses 32-bit toc offsets, no limit on static data.

By passing  -mminimal-toc on modern GCC we force -mcmodel=small
it means The TOC is limited to 64k.

The default for gcc currently is -mcmodel=medium, with it TOC static
data may grow up to 4G

But here's the problem:
current mozilla builds (thunderbird and firefox) force -O3 optimization
by default, making it very easy to overflow TOC section

{standard input}:1344252: Error: operand out of range \
(0x00000000000178b8 is not between 0xffffffffffff8000 and 0x0000000000007ffc)

Passing -O3 is THE DEFAULT configuration, unless
USE=custom-optimization is set, which voids the warranty =)

So I propose removing this flag from eclass and building with default
model on modern toolchain. Quite unlikely someone tries to build FF/TB
using gcc-4.5, and if they do - they have other problems to solve.

[1] https://gcc.gnu.org/ml/gcc-patches/2010-06/msg00747.html

Acked-by: Jory Pratt <[email protected]>
Signed-off-by: Georgy Yakovlev <[email protected]>
  • Loading branch information
gyakovlev committed Sep 1, 2019
1 parent 5f3a101 commit 307f357
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion eclass/mozcoreconf-v6.eclass
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ mozconfig_init() {
append-flags -fPIC
;;
ppc64)
append-flags -fPIC -mminimal-toc
append-flags -fPIC
# Reduce the memory requirements for linking
if use clang ; then
# Nothing to do
Expand Down

0 comments on commit 307f357

Please sign in to comment.