Hi,
I have a very simple test script (ptest.pl):
print "Hello world (#2)\n";
When I pack it with PAR, it works fine (using /usr/opt/perl5_64/bin/pp -o ptest1 ptest.pl).
However, on a second machine, which has no gcc packages installed, I get error:
exec(): 0509-036 Cannot load program ./ptest1 because of the following errors:
0509-022 Cannot load module /tmp//par-oracle/cache-f907e3fd3cbac34f30bfbd367c5b7fdded738de0
+/libperl.a(libperl.o).
0509-150 Dependent module libgcc_s.a(shr.o) could not be loaded.
0509-022 Cannot load module libgcc_s.a(shr.o).
0509-026 System error: A file or directory in the path name does not exist.
0509-022 Cannot load module ptest1.
0509-150 Dependent module /tmp//par-oracle/cache-f907e3fd3cbac34f30bfbd367c5b7fdded738de0
+/libperl.a(libperl.o) could not be loaded.
0509-022 Cannot load module .
If I use -l to include the libgcc_s.a, it gets included; however, the issue seems to be a bit different: the /tmp/par-oracle directory contains only ptest1 and libperl.a, no other files are extracted.
I ran truss on the original machine (where it works) and on the "broken" (actually I don't have direct access to that, so I just rename the /opt/freeware directory to simulate the non-installation of gcc and all other non-IBM stuff). The difference in truss starts after the libperl.a and ptest1 are unpacked to /tmp/par-oracle/*:
***************
*** 527,538 ****
kwrite(4, " i s _ u t f 8 _ X _ b e".., 30000) = 30000
kwrite(4, " e r\0 . X S _ D y n a L".., 2712) = 2712
close(4) = 0
! chmod("/tmp//par-oracle/cache-ec39fc067e01ea6ea74329cd768e098ad676595b/libperl.a", 0755) = 0
! execve("/tmp//par-oracle/cache-ec39fc067e01ea6ea74329cd768e098ad676595b/ptest1", 0x0FFFFFFFFFFFFB
+F8, 0x000000011027B110) argc: 9
! sbrk(0x00000000) = 0x30087DF0
! vmgetinfo(0x2FF21AF0, 7, 16) = 0
! sbrk(0x00000000) = 0x30087DF0
! __libc_sbrk(0x00000000) = 0x30087DF0
getuidx(4) = 202
getuidx(2) = 202
getuidx(1) = 202
--- 527,837 ----
kwrite(4, " i s _ u t f 8 _ X _ b e".., 30000) = 30000
kwrite(4, " e r\0 . X S _ D y n a L".., 2712) = 2712
close(4) = 0
! chmod("/tmp//par-oracle/cache-93f2179aab22275367a860fccbfe15ea150a5934/libperl.a", 0755) = 0
! execve("/tmp//par-oracle/cache-93f2179aab22275367a860fccbfe15ea150a5934/ptest1", 0x0FFFFFFFFFFFFB
+F8, 0x000000011027B110) argc: 1
! kusla(2, 0x09FFFFFFF000BA38) Err#1 EPERM
! thread_init(0x09000000004FBF80, 0x09001000A015D1A8) =
! sbrk(0x0000000000000000) = 0x0000000010007798
! vmgetinfo(0x0FFFFFFFFFFFF690, 7, 16) = 0
! sbrk(0x0000000000000000) = 0x0000000010007798
! vmgetinfo(0x0FFFFFFFFFFFF060, 7, 16) = 0
! sbrk(0x0000000000000000) = 0x0000000010007798
! sbrk(0x0000000000000008) = 0x0000000010007798
! __libc_sbrk(0x0000000000010020) = 0x00000000100077A0
....and long long list of reading the PAR archive and writing the .pm and .so files.
Thanks for any ideas...
Vit