Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 07 Jun 1999 16:35:33 -0700 (PDT)
From:      John Polstra <jdp@polstra.com>
To:        Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>
Cc:        freebsd-alpha@FreeBSD.org
Subject:   Re: cvs commit: src/lib/csu/alpha crtbegin.c
Message-ID:  <XFMail.990607163533.jdp@polstra.com>
In-Reply-To: <14171.60400.466517.68187Y@ett.sat.t.u-tokyo.ac.jp>

next in thread | previous in thread | raw e-mail | index | archive | help
Hidetoshi Shimokawa wrote:
> I noticed that some large dynamic linked program is slow on alpha.

I couldn't resist investigating this.  The problem only occurs with
large programs, as you mentioned.  It doesn't happen with "normal"
sized programs.  That provides some comfort. :-)

I believe the problem occurs when the size of the GOT table
exceeds its maximum of 64K bytes.  In that case the linker
has to construct multiple GOT tables.  If you link gdb using
"LDFLAGS=Wl,-warn-multiple-gp" you can see the warning about this:

    gdb: using multiple gp values

As you know, the dynamic linker normally patches the GOT table entry
on the first call to a function.  When there are multiple GOT tables
it must be patching the wrong one.  This could probably cause worse
problems than just slow performance, as you can imagine.

That's all I know about it so far.  I don't have a fix yet.

John
---
  John Polstra                                               jdp@polstra.com
  John D. Polstra & Co., Inc.                        Seattle, Washington USA
  "Self-interest is the aphrodisiac of belief."           -- James V. DeLong



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-alpha" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.990607163533.jdp>