Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
p5pRT opened this issue Sep 14, 2008 · 8 comments

Comments

@p5pRT
Copy link

p5pRT commented Sep 14, 2008

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

Searchable as RT58858$

@p5pRT
Copy link
Author

p5pRT commented Sep 14, 2008

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
Copy link
Author

p5pRT commented Sep 16, 2008

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
--- 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
Copy link
Author

p5pRT commented Sep 16, 2008

From @jandubois

makedef.pl.diff

@p5pRT
Copy link
Author

p5pRT commented Sep 16, 2008

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

@p5pRT
Copy link
Author

p5pRT commented Sep 16, 2008

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
Copy link
Author

p5pRT commented Sep 17, 2008

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
Copy link
Author

p5pRT commented Apr 12, 2010

From tammer@tammer.net

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

Bye
  Rainer

@p5pRT
Copy link
Author

p5pRT commented Apr 12, 2010

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant