Hi,

I'm pretty sure none of the binary components of your Perl can run on anything lower than 10.6 because of the -fstack-protector flag introduced with Perl 5.12.

As an experiment, try a MacPort of 5.10 and I think all will work.

Regards

Mark

On 13/03/2011 12:55, Philip Kime wrote:
[bbf-osx32][~]>  perl -V
Summary of my perl5 (revision 5 version 12 subversion 3) configuration:

   Platform:
     osname=darwin, osvers=10.6.0, archname=darwin-thread-multi-2level
     uname='darwin bbf-osx32.local 10.6.0 darwin kernel version 10.6.0: sun jan 
9 16:31:48 est 2011; legacy kernel v6 :xnu-1504.9.26buildobjrelease_i386 i386 '
     config_args='-D inc_version_list=5.12.2/darwin-thread-multi-2level 5.12.2 
5.12.1/darwin-thread-multi-2level 5.12.1 5.12.0/darwin-thread-multi-2level 
5.12.0 -Dusethreads -Duseshrplib -des -Dprefix=/opt/local 
-Dscriptdir=/opt/local/bin -Dcppflags=-I/opt/local/include -isysroot 
/Developer/SDKs/MacOSX10.5.sdk -Dccflags=-pipe -O2 -isysroot 
/Developer/SDKs/MacOSX10.5.sdk -arch i386 -Dldflags=-L/opt/local/lib 
-Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk -arch i386 
-Dvendorprefix=/opt/local -Dusemultiplicity=y -D cc=/usr/bin/gcc-4.0 -D 
ld=/usr/bin/gcc-4.0 -D man1ext=1pm -D man3ext=3pm -D 
man1dir=/opt/local/share/man/man1p -D man3dir=/opt/local/share/man/man3p -D 
siteman1dir=/opt/local/share/man/man1 -D siteman3dir=/opt/local/share/man/man3 
-D vendorman1dir=/opt/local/share/man/man1 -D 
vendorman3dir=/opt/local/share/man/man3 -D pager=/usr/bin/less -sR'
     hint=recommended, useposix=true, d_sigaction=define
     useithreads=define, usemultiplicity=define
     useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
     use64bitint=undef, use64bitall=undef, uselongdouble=undef
     usemymalloc=n, bincompat5005=undef
   Compiler:
     cc='/usr/bin/gcc-4.0', ccflags ='-pipe -O2 -isysroot 
/Developer/SDKs/MacOSX10.5.sdk -arch i386 -fno-common -DPERL_DARWIN 
-I/opt/local/include -isysroot /Developer/SDKs/MacOSX10.5.sdk -no-cpp-precomp 
-fno-strict-aliasing -fstack-protector -I/opt/local/include',
     optimize='-O3',
     cppflags='-I/opt/local/include -isysroot /Developer/SDKs/MacOSX10.5.sdk 
-no-cpp-precomp -pipe -O2 -isysroot /Developer/SDKs/MacOSX10.5.sdk -arch i386 
-fno-common -DPERL_DARWIN -I/opt/local/include -isysroot 
/Developer/SDKs/MacOSX10.5.sdk -no-cpp-precomp -fno-strict-aliasing 
-fstack-protector -I/opt/local/include'
     ccversion='', gccversion='4.0.1 (Apple Inc. build 5493)', gccosandvers=''
     intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
     d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
     ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', 
lseeksize=8
     alignbytes=8, prototype=define
   Linker and Libraries:
     ld='env MACOSX_DEPLOYMENT_TARGET=10.6 /usr/bin/gcc-4.0', ldflags 
='-L/opt/local/lib -Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk -arch i386 
-fstack-protector'
     libpth=/opt/local/lib /usr/lib
     libs=-lgdbm -ldbm -ldl -lm -lutil -lc
     perllibs=-ldl -lm -lutil -lc
     libc=/usr/lib/libc.dylib, so=dylib, useshrplib=true, libperl=libperl.dylib
     gnulibc_version=''
   Dynamic Linking:
     dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
     cccdlflags=' ', lddlflags='-L/opt/local/lib 
-Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk -arch i386 -bundle -undefined 
dynamic_lookup -fstack-protector'


Characteristics of this binary (from libperl):
   Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
                         PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_ITHREADS
                         USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
                         USE_REENTRANT_API
   Built under darwin
   Compiled at Mar 11 2011 22:30:02
   @INC:
     /opt/local/lib/perl5/site_perl/5.12.3/darwin-thread-multi-2level
     /opt/local/lib/perl5/site_perl/5.12.3
     /opt/local/lib/perl5/vendor_perl/5.12.3/darwin-thread-multi-2level
     /opt/local/lib/perl5/vendor_perl/5.12.3
     /opt/local/lib/perl5/5.12.3/darwin-thread-multi-2level
     /opt/local/lib/perl5/5.12.3
     /opt/local/lib/perl5/site_perl
     /opt/local/lib/perl5/vendor_perl




[bbf-osx32][~]>  otool -L /opt/local/bin/perl
/opt/local/bin/perl:
        
/opt/local/lib/perl5/5.12.3/darwin-thread-multi-2level/CORE/libperl.dylib 
(compatibility version 5.12.0, current version 5.12.3)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current 
version 111.1.4)
        /usr/lib/libutil.dylib (compatibility version 1.0.0, current version 
1.0.0)
        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 
1.0.0)



On 13 Mar 2011, at 1:53 PM, Mark Dootson wrote:

Hi,

What's your output from perl -V and  otool -L path/to/bin/perl



On 13/03/2011 12:46, Philip Kime wrote:
Greetings,
   I have to package an application for OSX 10.5 32-bit on a 64-bit OSX 10.6 
box. I am using macports for all of the software and have set this to use only 
the 10.5 SDK and 32-bit compilation which all works fine. This works as 
macports sets some compile flags to point to the 10.5 SDK for all compiles. 
perl is compiled like this and so all perl modules get the same flags and every 
piece of the stuff to package is 10.5 compliant. However, when I come to pack 
with pp, it doesn't seem to use the flags which perl was compiled with to 
create the binary and so the executable dies on 10.5 with the famous:

dyld: unknown required load command 0x80000022
        Trace/BPT trap

which is a known problem trying to run 10.6 compiled binaries on 10.5. This 
should work however if you compile for 32-bit only and also force the 10.5 SDK, 
which is what I have done. pp doesn't seem to understand this though and the 
resulting binary fails on 10.5. Since I'm not sure how pp prepares its binary, 
I am wondering if I can add flags to the compiler step or something similar to 
force it to use the 10.5 SDK so that the 10.6-specific features which cause 
this problem can be avoided?

PK

--
Dr Philip Kime



--
Dr Philip Kime


Reply via email to