Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.91k stars 542 forks source link

Building Perl 5.10.0 in AIX 5.3 using "-Duseshrplib" option --> "ERROR: Undefined symbol: boot_DynaLoader" #9478

Closed p5pRT closed 14 years ago

p5pRT commented 16 years ago

Migrated from rt.perl.org#58858 (status was 'resolved')

Searchable as RT58858$

p5pRT commented 16 years ago

From tippa123@gmail.com

INTRODUCTION


When building Perl 5.10.0 in AIX 5.3 using "-Duseshrplib" option we get ERROR message ("ERROR​: Undefined symbol​: boot_DynaLoader") in perl binary linking phase. It could be however solved by adding ("Makefile.SH"\, see patch below) "boot_DynaLoader" symbol to the "perl.exp" file (line 6). This is just quick fix - unfortunately I did not have enough time to check which would be the most correct place to change.

You can also notice the WARNING message ("WARNING​: Exported symbol not defined​: Perl_signbit") but this is another case.

ENVIRONMENT


aix53> aix53> uname -rsvp AIX 3 5 powerpc aix53> cc_r -qversion IBM XL C/C++ Enterprise Edition V8.0 for AIX Version​: 08.00.0000.0000 aix53>

ERROR MESSAGE


01 make[3]​: Leaving directory `/temp/packages/AIX/perl-5.10.0/ext/DynaLoader' 02 rm -f libperl_nonshr.a 03 ar -X64 rcu libperl_nonshr.a gv.o toke.o perly.o op.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o perl.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o xsutils.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o 04 cc_r -q64 -brtl -bdynamic -b64 -o miniperl_nonshr miniperlmain.o \ 05 opmini.o libperl_nonshr.a -lbind -lnsl -ldl -lld -lm -lcrypt -lpthreads -lc -lbsd 06 ./miniperl_nonshr makedef.pl PLATFORM=aix CC_FLAGS="-O" | sort -u | sort -f > perl.exp 07 Options​: (MULTIPLICITY PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API) 08 Defines​: (MULTIPLICITY NEED_PTHREAD_INIT PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP PERL_PRIeldbl PERL_PRIfldbl PERL_PRIgldbl PERL_RELOCATABLE_INC PERL_SCNfldbl PERL_TARGETARCH USE_64_BIT_ALL USE_64_BIT_INT USE_DYNAMIC_LOADING USE_ITHREADS USE_LARGE_FILES USE_NATIVE_DLOPEN USE_PERLIO USE_REENTRANT_API USE_SEMCTL_SEMID_DS USE_SEMCTL_SEMUN USE_STAT_BLOCKS USE_STDIO_BASE USE_STDIO_PTR USE_STRUCT_COPY USE_THREADS _ALL_SOURCE _ANSI_C_SOURCE _POSIX_SOURCE d_mmap d_sigaction) 09 rm -f libperl.a 10 ld -o libperl.a -H512 -T512 -bhalt​:4 -bM​:SRE -bE​:perl.exp -bnoentry -brtl -bdynamic -b64 -lbind -lnsl -ldl -lld -lm -lcrypt -lpthreads -lc -lbsd gv.o toke.o perly.o op.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o perl.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o xsutils.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o DynaLoader.o -lbind -lnsl -ldl -lld -lm -lcrypt -lpthreads -lc -lbsd 11 ld​: 0711-319 WARNING​: Exported symbol not defined​: Perl_signbit 12 rm -f libperl.o 13 mv libperl.a libperl.o 14 ar -X64 qv libperl.a libperl.o 15 ar​: creating an archive file libperl.a 16 q - libperl.o 17 LIBPATH=/temp/packages/AIX/perl-5.10.0​:/usr/lib​:/temp/packages/AIX/perl-5.10.0​:/usr/lib cc_r -q64 -o perl -brtl -bdynamic -b64 -bE​:perl.exp perlmain.o -L /temp/packages/install/AIX/perl/lib/5.10.0/aix-thread-multi-64all/CORE -L /temp/packages/AIX/perl-5.10.0 -lperl `cat ext.libs` -lbind -lnsl -ldl -lld -lm -lcrypt -lpthreads -lc -lbsd 18 ld​: 0711-319 WARNING​: Exported symbol not defined​: Perl_signbit 19 ld​: 0711-317 ERROR​: Undefined symbol​: boot_DynaLoader 20 ld​: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. 21 make[2]​: *** [perl] Error 8 22 make[2]​: Leaving directory `/temp/packages/AIX/perl-5.10.0' 23 make[1]​: *** [perl_build] Error 2 24 make[1]​: Leaving directory `/temp/create' 25 make​: *** [/temp/packages/AIX/perl-5.10.0/.build_mark] Error 2 26 aix53>

PATCH


*** Makefile.SH~ 2007-12-18 12​:47​:07.000000000 +0200 --- Makefile.SH 2008-09-14 02​:32​:26.000000000 +0300 *************** *** 565\,570 **** --- 565\,571 ----   $spitshell >>Makefile \<\<'!NO!SUBS!'   perl.exp​: $(MINIPERLEXP) makedef.pl config.sh $(SYM) $(SYMH)   ./$(MINIPERLEXP) makedef.pl PLATFORM=aix CC_FLAGS="$(OPTIMIZE)" | sort -u | sort -f > perl.exp + echo "boot_DynaLoader" >> perl.exp

  !NO!SUBS!   ;;

CONFIGURE


./Configure -de -Dprefix=$(INSTALL_DIR)/perl -Duseshrplib -Dusethreads -Duselargefiles -Duse64bitall -Dinc_version_list=none

\<end-of-message>

p5pRT commented 16 years ago

From @jandubois

On Sun\, 14 Sep 2008\, Tippa (via RT) wrote​:

# \<URL​: http​://rt.perl.org/rt3/Ticket/Display.html?id=58858 >

INTRODUCTION ------------

When building Perl 5.10.0 in AIX 5.3 using "-Duseshrplib" option we get ERROR message ("ERROR​: Undefined symbol​: boot_DynaLoader") in perl binary linking phase. It could be however solved by adding ("Makefile.SH"\, see patch below) "boot_DynaLoader" symbol to the "perl.exp" file (line 6). This is just quick fix - unfortunately I did not have enough time to check which would be the most correct place to change.

This should be fixed in makedef.pl instead.

Attached patch is against 5.10\, but should apply to blead with some fuzz as well.

Cheers\, -Jan

Inline Patch ```diff --- makedef.pl.orig 2007-12-18 02:47:08.000000000 -0800 +++ makedef.pl 2008-09-15 17:36:15.636585600 -0700 @@ -404,6 +404,9 @@ PL_statusvalue_vms PL_sys_intern )]); + emit_symbols([qw( + boot_DynaLoader + )]); } elsif ($PLATFORM eq 'os2') { emit_symbols([qw( End of Patch. ```
p5pRT commented 16 years ago

From @jandubois

makedef.pl.diff

p5pRT commented 16 years ago

The RT System itself - Status changed from 'new' to 'open'

p5pRT commented 16 years ago

From tippa123@gmail.com

Hi Jan!

I tested with the patch below and everything seems to be ok. Thanks!

-Tippa

--- makedef.pl.orig 2007-12-18 02​:47​:08.000000000 -0800 +++ makedef.pl 2008-09-15 17​:36​:15.636585600 -0700 @​@​ -404\,6 +404\,9 @​@​ PL_statusvalue_vms PL_sys_intern )]); + emit_symbols([qw( + boot_DynaLoader + )]); } elsif ($PLATFORM eq 'os2') { emit_symbols([qw( End of Patch.

p5pRT commented 16 years ago

From @nwc10

On Mon\, Sep 15\, 2008 at 05​:43​:34PM -0700\, Jan Dubois wrote​:

Attached patch is against 5.10\, but should apply to blead with some fuzz as well.

Merijn verified the problem\, and applied the change as 34379\, but doesn't have the original e-mail to reply to.

Nicholas Clark

p5pRT commented 14 years ago

From tammer@tammer.net

Hello\, this problem is solved by 5.10.1. I think this ticket could be closed.

Bye   Rainer

p5pRT commented 14 years ago

tippa123@gmail.com - Status changed from 'open' to 'resolved'