Subject: GDB 5 for mips-linux/Shared library loading with new binutils/glibc

From: Justin Carlson <[email-masked]>
Date: Fri, 26 Jan 2001 17:40:07 -0800

Working with some pretty bleeding edge GNU tools, here, and there doesn't seem
to be any support for mips-linux in GDB 5.  Has anyone else run across this,
and, if so, are there patches available somewhere?

Also, I've run into a problem with ld.so from glibc-2.2 on mips32-linux.  After
some hunting, I found that the templates in elf32bsmip.sh for gnu ld have
recently changed to support SHLIB_TEXT_START_ADDR as a (non-zero) base address
for shared library loading.  SHLIB_TEXT_START_ADDR defaults to 0x5ffe0000 in
the current sources.

I'm curious if anyone knows the rationale for these changes.  Best conjecture
I've heard is that it allows ld.so to not have to relocate itself, as it will
load by default to the high address.  

However, ld.so seems to know nothing about relocating shared library with a
non-zero shared library base address, which causes dynamically linked stuff to
crash spectacularly.  

I think fixing ld.so won't be too difficult, but I'm really wanting to find out
why these changes were made.  And whether I'm reinventing some wheels by fixing
ld.so to cope with the new binutils stuff.

Anyone tread the ground before?

binutils we're using is from CVS as of about Dec 17th.  Glibc is also a
snapshot from about the same time.

-Justin

---

From: "Maciej W. Rozycki" <[email-masked]>
Date: Sat, 27 Jan 2001 09:01:47 +0100 (MET)

> and, if so, are there patches available somewhere?

 Get gdb 5.0 from my site, at 'ftp://ftp.ds2.pg.gda.pl/pub/macro/'.

 I've contributed all patches I've written myself.  Unfortunately, most of
the code needed for gdb 5.0 to run on MIPS was taken from the 4.x CVS at
oss.sgi.com.  As such it is required all authors of patches have to have
their copyright assigned to FSF before committing them to the gdb CVS.

 I've asked people to resolve ownership of the code here some time ago,
but it seems nobody is really interested in getting this code into
official gdb, sigh... 

> for shared library loading.  SHLIB_TEXT_START_ADDR defaults to 0x5ffe0000 in

 It's not that recent, actually.  What's the problem with this?  I can't
see any on mipsel-linux here.

> load by default to the high address.  

 Not sure about this -- there are comments on it in glibc in
sysdeps/mips/dl-machine.h.

> non-zero shared library base address, which causes dynamically linked stuff to

 Does it?  Please provide more details.  All of my system (linux 2.4.0,
glibc 2.2.1) is dynamically linked and it works fine.

> snapshot from about the same time.

 Glibc should be fine as is although you might consider getting the 2.2.1
release.  You may try to check if patches from my binutils package (also
available at the mentioned site) solve certain or all of your problems. 
The patches have been proposed for an inclusion in the upcoming binutils
2.11 release -- I hope they will finally get there.

  Maciej

-- 
+  Maciej W. Rozycki, Technical University of Gdansk, Poland   +
+--------------------------------------------------------------+
+        e-mail: [email-masked], PGP key available        +

---

From: Ralf Baechle <[email-masked]>
Date: Sat, 27 Jan 2001 11:01:06 -0800

> but it seems nobody is really interested in getting this code into

The only people who have contributed amounts of code large enough for the
FSF to requires an assignment are David Miller ([email-masked]) and
myself.  I've already signed an assignment with the FSF and I'm also sure
David has.  I btw. cannot remember having seen any mail from you regarding
copyright assignments of GDB.

> > non-zero shared library base address, which causes dynamically linked
> > stuff to crash spectacularly.  
> 

I don't know what you look at - ld.so fails to handle libraries which are
not linked to 0x5fffe000 ...

> 2.11 release -- I hope they will finally get there.

Ulf?

  Ralf

---

From: Ralf Baechle <[email-masked]>
Date: Sat, 27 Jan 2001 11:11:46 -0800

On Fri, Jan 26, 2001 at 05:40:07PM -0800, Justin Carlson wrote:

> Also, I've run into a problem with ld.so from glibc-2.2 on mips32-linux.
> After some hunting, I found that the templates in elf32bsmip.sh for gnu
> ld have recently changed to support SHLIB_TEXT_START_ADDR as a (non-zero)
> base address for shared library loading.  SHLIB_TEXT_START_ADDR defaults
> to 0x5ffe0000 in the current sources.

For obscure reasons which probably spell IRIX 5.x ELF compatibility ELF
shared objects except the dynamic linker itself are linked to this base
address.

> load by default to the high address.  

By default ld.so get loaded to 0xfb60000.  Again this is an obscure IRIXism.

> non-zero shared library base address, which causes dynamically linked stuff
> to crash spectacularly.  
> 
> I think fixing ld.so won't be too difficult, but I'm really wanting to
> find out why these changes were made.  And whether I'm reinventing some
> wheels by fixing ld.so to cope with the new binutils stuff.

Glibc 2.0 as of '96 already does this just as glibc 2.2 is supposed to.
You may look at the source in the srpm package of glibc 2.1.95 on oss which
definately handles this right.

  Ralf

---

From: Andreas Jaeger <[email-masked]>
Date: 28 Jan 2001 12:55:27 +0100

> copyright assignments of GDB.

David has only disclaimers for Binutils and GCC but not for GDB in the
FSF list.

Andreas
-- 
 Andreas Jaeger
  SuSE Labs [email-masked]
   private [email-masked]
    http://www.suse.de/~aj

---

From: "Maciej W. Rozycki" <[email-masked]>
Date: Mon, 29 Jan 2001 16:34:52 +0100 (MET)

> myself.  I've already signed an assignment with the FSF and I'm also sure

 Ok, I'll dig out the patch and contact all interested parties again.

> copyright assignments of GDB.

 It was back in July, 2000, so it a long time ago...

> not linked to 0x5fffe000 ...

 Does it?  I admit I haven't checked it specifically.  It needs to be
fixed if so.