From: David Gibson <david@gibson.dropbear.id.au>
To: Chris Friesen <chris.friesen@genband.com>
Cc: linuxppc-dev@lists.ozlabs.org, Paul Mackerras <paulus@samba.org>
Subject: Re: powerpc userspace address space layout information
Date: Sun, 7 Apr 2013 15:58:44 +1000 [thread overview]
Message-ID: <20130407055844.GB17787@truffula.fritz.box> (raw)
In-Reply-To: <515E58E6.9030802@genband.com>
[-- Attachment #1: Type: text/plain, Size: 4084 bytes --]
On Thu, Apr 04, 2013 at 10:53:58PM -0600, Chris Friesen wrote:
>
> Hi,
>
> I'm running with glibc 2.11 on a 2.6.34 kernel. 32-bit userspace on 64-bit kernel.
>
> On a complicated process the memory map looks something like this:
>
> <vdso, executable, heap, etc.>
> 5b2c000-f5b38000 r-xp 00000000 00:0f 3636 /lib/libnss_files-2.11.1.so
> <lots of libraries snipped>
> f6026000-f6035000 ---p 00096000 00:0f 3628 /lib/libkrb5.so.3.3
> <lots of libraries snipped>
> f7902000-f7905000 r-xp 00000000 00:0f 3607 /lib/libdl-2.11.1.so
> f7905000-f7914000 ---p 00003000 00:0f 3607 /lib/libdl-2.11.1.so
> f7914000-f7915000 r--p 00002000 00:0f 3607 /lib/libdl-2.11.1.so
> f7915000-f7916000 rw-p 00003000 00:0f 3607 /lib/libdl-2.11.1.so
> f7918000-f7919000 rw-p 00000000 00:00 0
> f7919000-f791a000 r--p 0001a000 00:0f 3646 /lib/libpthread-2.11.1.so
> f791a000-f791b000 r--p 00001000 00:0f 2306001 /path/to/binary
> f791b000-f791c000 r--p 00001000 00:0f 2306001 /path/to/binary
> f791c000-f791d000 r--p 00001000 00:0f 2306001 /path/to/binary
> f791d000-f7923000 rw-p 00000000 00:00 0
> f7923000-f7943000 r-xp 00000000 00:0f 13323 /lib/ld-2.11.1.so
> f7943000-f7944000 r--p 00020000 00:0f 13323 /lib/ld-2.11.1.so
> f7944000-f7945000 rw-p 00021000 00:0f 13323 /lib/ld-2.11.1.so
> f9000000-fac01000 rw-p 00000000 00:00 0
> fac06000-fac07000 rw-s 00000000 00:04 327690 /SYSV41050355 (deleted)
> fad00000-fae00000 rw-s 00000000 00:04 98307 /SYSVee113d3f (deleted)
> fae00000-fb000000 rw-s 00000000 00:04 7503872 /SYSVc5050355 (deleted)
> fb000000-fb200000 rw-s 00000000 00:04 7536641 /SYSV5c050355 (deleted)
> fb200000-fb600000 rw-s 00000000 00:0d 30647 /var/log/blah
> ffa8e000-ffab0000 rwxp 00000000 00:00 0 [stack]
>
>
> I have a few questions I'm hoping someone can help me with.
>
> First, what determines where /lib/ld-2.11.1.so gets mapped? It seems like
> it never goes above 0xf8000000 or so.
I think the mapping in of the ELF interpreter just calls the mmap()
code without hint address, so it goes where get_unmapped_area() puts
things by default, which can depend on a number of configuration settings.
> Second, what is the mapping at 0xf9000000-0xfac01000? Is this just empty
> space or is it reserved for something in particular?
Looks like anonymous memory, which could have been mapped by your
program or any of the libraries.
> Third, what's the most reliable way to ensure a block of addresses around
> 0xf6000000 don't get used for shared libraries? (We want to preserve
> those addresses for emulating hardware in a virtual machine.) We have
> this working on an older system but after upgrading to new software the
> libraries now extend further down the address space.
The only reliable method I can think of would be to use a custom
linker script to give your binary an extra program header specifying
that virtual region to map. In theory it can have zero size, and
whatever mem size you need to avoid adding any data to the binary
itself. In practice you may need to set a (small) non-zero filesize,
since some kernel versions had bugs handling segments with zero
filesize.
That would bring your program up with anonymous memory mapped across
the "reserved" region. You could then remap over it using MAP_FIXED
for the stuff you really want.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
next prev parent reply other threads:[~2013-04-07 5:58 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-05 4:53 powerpc userspace address space layout information Chris Friesen
2013-04-07 5:58 ` David Gibson [this message]
2013-04-09 14:30 ` Chris Friesen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130407055844.GB17787@truffula.fritz.box \
--to=david@gibson.dropbear.id.au \
--cc=chris.friesen@genband.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).