Re: What exactly does "info sharedlibrary" command show?

Mark Kettenis
2006-08-29T21:08:34Z

> Date: Tue, 29 Aug 2006 16:12:06 -0400
> From: Daniel Jacobowitz <drow@false.org>
>
> Right. As I said, I knew that there were systems where you were
> limited to the first segment for this purpose, though I didn't know W^X
> used this.

We play tricks we the i386's segment registers to accomplish this. We
set up a segment descriptor for %cs that doesn't map the complete
virtual address space. Then we have to make sure that all executable
segments fall into the region covered by that segment descriptor and
all writable sections are outside that region.

> > > Right now we say it occupies 0x00002aaaaabdf2d0 to 0x00002aaaaacc1a10.
> >
> > I like this though, since I mostly search the list for code addresses.
>
> Really? Even if I'm searching for code addresses, I dislike this,
> because it has more noise and fewer significant bits.
>
> Given this I have a hard time finding anything visually:
>
> 0x00002aaaaabd6910 0x00002aaaaabf1e58 Yes /lib/libreadline.so.5
> 0x00002aaaaad20ef0 0x00002aaaaad43cc8 Yes /usr/lib/libncurses.so.5
> 0x00002aaaaae61dd0 0x00002aaaaaea22b8 Yes /lib/libm.so.6
> 0x00002aaaaafe2000 0x00002aaaaafe2978 Yes /lib/libdl.so.2
> 0x00002aaaab1002d0 0x00002aaaab1e2a10 Yes /lib/libc.so.6
> 0x00002aaaaaaaba80 0x00002aaaaaabc857 Yes /lib64/ld-linux-x86-64.so.2
> 0x00002aaaab50a8e0 0x00002aaaab50dce8 Yes /lib/libthread_db.so.1
>
> I find this much easier:
>
> 0x00002aaaaabd6000 0x00002aaaaabf2000 Yes /lib/libreadline.so.5
> 0x00002aaaaad20000 0x00002aaaaad44000 Yes /usr/lib/libncurses.so.5
> 0x00002aaaaae61000 0x00002aaaaaea3000 Yes /lib/libm.so.6
> 0x00002aaaaafe2000 0x00002aaaaafe3000 Yes /lib/libdl.so.2
> 0x00002aaaab100000 0x00002aaaab1e3000 Yes /lib/libc.so.6
> 0x00002aaaaaaab000 0x00002aaaaaabd000 Yes /lib64/ld-linux-x86-64.so.2
> 0x00002aaaab50a000 0x00002aaaab50e000 Yes /lib/libthread_db.so.1

Yup, if you can guarantee that the first segment indeed includes all
the .text code, the latter is much better.

> But, it's not a big deal. If you actually prefer the way it is now,
> I guess I'll leave it alone after all.
>
> > True. Somehow we should make the load address of a shared library
> > available.
>
> Should we use segments in "info files" when available?

Not sure. For me, the sections are much more useful, and the segments
wouldn't really add much information.