On Apr 26, 2006, at 6:26 PM, Jack Howarth wrote:
readelf -d foo.so | grep TEXTREL
Does anyone know if some mechanism like this is possible for Darwin
shared libraries?
A man page is a terrible thing to waste:
-segprot name max init (32-bit only)
Specifies the maximum and initial virtual memory
protection of
the named segment, name, to be max and
init ,respectively. The
values for max and init are any combination of the
characters
`r' (for read), `w' (for write), `x' (for execute)
and '-' (no
access). The default is `rwx' for the maximum
protection for
all segments for PowerPC architecures and `rw` for the
all Intel
architecures. The default for the initial
protection for all
segments is `rw' unless the segment contains a
section which
contains some machine instructions, in which case
the default
for the initial protection is `rwx' (and for Intel
architecures
it also sets the maximum protection to `rwx' in this
case). The
default for the initial protection for the ``__TEXT''
segment is
`rx' (not writable).
so, just add -segprot __TEXT rw rw to the -dynamiclib invocation.
I ask because we just discovered that the gmp developers
have been building non-PIC code (due to the usage of -fast without -
fPIC)
in the MacOS X builds. It would be nice to be able to check for the
non-PIC
code in all the shared libs on MacOS X. Thanks in advance for any
info.
One cannot usually create a dynamic library with those relocations
without this flag and will get a failed link. I'd anticipate that if
something doesn't so warn, that is a bug.