On Tue, Sep 05, 2006 at 08:55:18AM +0200, Erik Niessen wrote:
> /helloworldmips(86)
> 00400000 (4 KB) r-xp (00:0a 33243002) linux/test/helloworldmips
> 10000000 (4 KB) rw-p (00:0a 33243002) linux/test/helloworldmips
> 10001000 (4 KB) rwxp (00:00 0) [heap]
> 2aaa8000 (20 KB) r-xp (00:07 1795853)
> /lib/ld-uClibc-0.9.27.so<http://uclibc-0.9.27.so/>
> 2aaad000 (4 KB) rw-p (00:00 0)
> 2aaed000 (4 KB) rw-p (00:07 1795853) /lib/ld-
> uClibc-0.9.27.so<http://uclibc-0.9.27.so/>
> 2aaee000 (48 KB) r-xp (00:07 1795861) /lib/libgcc_s.so.1
> 2aafa000 (252 KB) ---p (00:00 0)
> 2ab39000 (4 KB) rw-p (00:07 1795861) /lib/libgcc_s.so.1
> 2ab3a000 (368 KB) r-xp (00:07 1795855) /lib/libuClibc-0.9.27.so
> 2ab96000 (256 KB) ---p (00:00 0)
> 2abd6000 (8 KB) rw-p (00:07 1795855) /lib/libuClibc- 0.9.27.so
> 2abd8000 (16 KB) rw-p (00:00 0)
> 7fd49000 (84 KB) rwxp (00:00 0) [stack]
> mapped: 1076 KB writable/private: 128 KB shared: 0 KB
>
> It seems that the bss segments of the shared libs are protected and mapped
> to the zero page. I don't see this
> when I run this on a linux pc. I have the following questions:
> - Why is this segment protected? Accessing results in a seg fault.
Protecting a bss segment doesn't make sense.
The address and the "---p" flags make me suspect your executable might
actually be wrong, so I suggest you check the binary with something like
readelf -S.
> - Why is it so big (252k/256K)?
> - How much memory is physically allocated for this segment?
None at this stage - the actuall allocation would happen lazily when
a page is touched first which of course doesn't ever happen in your
case.
Ralf
|