This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: x86-64 and large code model questions/bugs


On Tue, Jan 27, 2009 at 09:33:17AM -0800, Steve Ellcey wrote:
> On Tue, 2009-01-27 at 12:31 +0100, Andi Kleen wrote:
> > Steve Ellcey <sje@cup.hp.com> writes:
> >
> > > because the crt files can't handle the large code model if they aren't
> > > compiled with this option.
> > 
> > My understanding is that this would likely break old linkers which
> > didn't do all large model relocations correctly. Right now they
> > work as long as you don't need the large model.
> 
> Are these old GNU linkers or old system/non-GNU linkers?  We often

(not that old actually) GNU linkers.

> require a certain minimum version of binutils for GCC to work.

That would be pretty extreme for something as obscure as large model.

> 
> > BTW the standard way to work around large model issues if your
> > code isn't really that large but you just want to move it is to move 
> > parts of the programs into a .so and compile -fPIC. large is only
> > really needed if you really have gigantic programs (but then gcc
> > tends to be also quite slow on them)
> 
> It's not really a gigantic program, it is a program where he wants to
> put all his text in the upper address range (using the --section-start
> option of the GNU linker).

He'll get much better code by putting the program into a -fPIC .so,
loading it from a small stub and then unmap the stub.
large model generates really very bad code because all jumps
will be indirect.

-Andi
-- 
ak@linux.intel.com -- Speaking for myself only.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]