This is the mail archive of the gdb@sourceware.org mailing list for the GDB 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: What exactly does "info sharedlibrary" command show?


> 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.


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