Hi,

Yep. I just don't have the time to confirm its the case for 10.5 too. According to my reading, support for -fstack-protector code isn't in the system libraries until 10.6 but I could be wrong. Hence my advice to check it out for yourself.

On the wider point, PAR::Packer builds with the same flags as Perl is configured with - so it's unlikely to be something that can be fixed in PAR::Packer alone.

Regards

Mark

On 13/03/2011 13:40, Philip Kime wrote:
Hmm, that patch mentions that the stack pointer issue is on 10.4, not 10.5?

PK

On 13 Mar 2011, at 2:27 PM, Mark Dootson wrote:

Hi,

Don't take my word for it.

Attached are a patch for Perl 5.12.3 source and an sh file with appropriate 
config args.

You could build a Perl 5.12 on 10.6 and check out that this really is the issue.

Regards

Mark

<5.12.3-osx.patch>

<myconfig.sh>



On 13 Mar 2011, at 13:08, Philip Kime wrote:

Hmm, I have to use 5.12 unfortunately, I may need to see if I can get this 
working on a real 10.5 machine.

PK

On 13 Mar 2011, at 2:05 PM, Mark Dootson wrote:

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



--
Dr Philip Kime



--
Dr Philip Kime


Reply via email to