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

[PATCH] 5.8.8 make sure we get the proper ldflags on libperl.so #8795

Closed
p5pRT opened this issue Feb 22, 2007 · 6 comments
Closed

[PATCH] 5.8.8 make sure we get the proper ldflags on libperl.so #8795

p5pRT opened this issue Feb 22, 2007 · 6 comments

Comments

@p5pRT
Copy link

p5pRT commented Feb 22, 2007

Migrated from rt.perl.org#41587 (status was 'rejected')

Searchable as RT41587$

@p5pRT
Copy link
Author

p5pRT commented Feb 22, 2007

From @spotrh

This is a bug report for perl from tcallawa@​redhat.com,
generated with the help of perlbug 1.35 running under perl v5.8.8.


As part of the review process for Perl, I'm opening bugs for the
long list of patches to perl that Fedora has been carrying around
(in some cases, for years), in the hopes that these fixes can be
applied upstream. Unfortunately, I am not the original author of
these patches, so please be patient with me as I attempt to
describe why Fedora uses them.

This patch is described as "make sure we get the proper ldflags on
libperl.so".
Presumably, without it, the shared object does not get the proper
ldflags.

Inline Patch
--- perl-5.8.0/Makefile.SH.sharedlinker Tue Jun 18 12:36:27 2002
+++ perl-5.8.0/Makefile.SH      Tue Jun 18 12:37:31 2002
@@ -61,6 +61,9 @@
        netbsd*|freebsd[234]*|openbsd*)
                linklibperl="-L. -lperl"
                ;;
+       linux*)
+               shrpldflags="$shrpldflags $ldflags $perllibs $cryptlib"
+               ;;
        aix*)
                shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp"
                case "$osvers" in

-----------------------------------------------------------------
---
Flags:   category=core   severity=medium

This perlbug was built using Perl v5.8.8 in the Red Hat build system.
It is being executed now by Perl v5.8.8 - Wed Jan 24 08​:06​:27 EST 2007.

Site configuration information for perl v5.8.8​:

Configured by Red Hat, Inc. at Wed Jan 24 08​:06​:27 EST 2007.

Summary of my perl5 (revision 5 version 8 subversion 8) configuration​:
  Platform​:
  osname=linux, osvers=2.6.9-42.elsmp,
archname=i386-linux-thread-multi
  uname='linux ls20-bc1-13.build.redhat.com 2.6.9-42.elsmp #1 smp wed
jul 12 23​:32​:02 edt 2006 i686 athlon i386 gnulinux '
  config_args='-des -Doptimize=-O2 -g -pipe -Wall
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
--param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic
-fasynchronous-unwind-tables -Dversion=5.8.8 -Dmyhostname=localhost
-Dperladmin=root@​localhost -Dcc=gcc -Dcf_by=Red Hat, Inc.
-Dinstallprefix=/usr -Dprefix=/usr -Darchname=i386-linux
-Dvendorprefix=/usr -Dsiteprefix=/usr -Duseshrplib -Dusethreads
-Duseithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db
-Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio
-Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly
-Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto
-Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto
-Ud_endservent_r_proto -Ud_setservent_r_proto -Dinc_version_list=5.8.7
5.8.6 5.8.5 -Dscriptdir=/usr/bin'
  hint=recommended, useposix=true, d_sigaction=define
  usethreads=define use5005threads=undef 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='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing
-pipe -Wdeclaration-after-statement -I/usr/local/include
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
  optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
-fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386
-mtune=generic -fasynchronous-unwind-tables',
  cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe
-Wdeclaration-after-statement -I/usr/local/include -I/usr/include/gdbm'
  ccversion='', gccversion='4.1.1 20070123 (Red Hat 4.1.1-54)',
gccosandvers=''
  intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
  d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
  ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
  alignbytes=4, prototype=define
  Linker and Libraries​:
  ld='gcc', ldflags =' -L/usr/local/lib'
  libpth=/usr/local/lib /lib /usr/lib
  libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread
-lc
  perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
  libc=/lib/libc-2.5.90.so, so=so, useshrplib=true, libperl=libperl.so
  gnulibc_version='2.5.90'
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E
-Wl,-rpath,/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE'
  cccdlflags='-fPIC', lddlflags='-shared -O2 -g -pipe -Wall
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
--param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic
-fasynchronous-unwind-tables -L/usr/local/lib'

Locally applied patches​:
 


@​INC for perl v5.8.8​:
  /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
  /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi
  /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi
  /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi
  /usr/lib/perl5/site_perl/5.8.8
  /usr/lib/perl5/site_perl/5.8.7
  /usr/lib/perl5/site_perl/5.8.6
  /usr/lib/perl5/site_perl/5.8.5
  /usr/lib/perl5/site_perl
  /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi
  /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi
  /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi
  /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi
  /usr/lib/perl5/vendor_perl/5.8.8
  /usr/lib/perl5/vendor_perl/5.8.7
  /usr/lib/perl5/vendor_perl/5.8.6
  /usr/lib/perl5/vendor_perl/5.8.5
  /usr/lib/perl5/vendor_perl
  /usr/lib/perl5/5.8.8/i386-linux-thread-multi
  /usr/lib/perl5/5.8.8
  .


Environment for perl v5.8.8​:
  HOME=/home/spot
  LANG=en_US.UTF-8
  LANGUAGE (unset)
  LD_LIBRARY_PATH (unset)
  LOGDIR (unset)

PATH=/usr/lib/qt-3.3/bin​:/usr/kerberos/bin​:/usr/local/bin​:/usr/bin​:/bin​:/usr/X11R6/bin​:/home/spot/bin​:/usr/java/j2re1.4.2_02/javaws/
  PERL_BADLANG (unset)
  SHELL=/bin/bash

@p5pRT
Copy link
Author

p5pRT commented Mar 9, 2007

From @Tux

On Thu, 22 Feb 2007 14​:39​:02 -0800, Tom Callaway (via RT)
<perlbug-followup@​perl.org> wrote​:

As part of the review process for Perl, I'm opening bugs for the
long list of patches to perl that Fedora has been carrying around
(in some cases, for years), in the hopes that these fixes can be
applied upstream. Unfortunately, I am not the original author of
these patches, so please be patient with me as I attempt to
describe why Fedora uses them.

Thanks, applied in change #30530
I hope there is someone out there in the wild that uses this in smokes
as I don't think the smokes pick up share libperl's

This patch is described as "make sure we get the proper ldflags on
libperl.so".
Presumably, without it, the shared object does not get the proper
ldflags.

--- perl-5.8.0/Makefile.SH.sharedlinker Tue Jun 18 12​:36​:27 2002
+++ perl-5.8.0/Makefile.SH Tue Jun 18 12​:37​:31 2002
@​@​ -61,6 +61,9 @​@​
netbsd*|freebsd[234]*|openbsd*)
linklibperl="-L. -lperl"
;;
+ linux*)
+ shrpldflags="$shrpldflags $ldflags $perllibs $cryptlib"
+ ;;
aix*)
shrpldflags="-H512 -T512 -bhalt​:4 -bM​:SRE -bE​:perl.exp"
case "$osvers" in

--
H.Merijn Brand Amsterdam Perl Mongers (http​://amsterdam.pm.org/)
using & porting perl 5.6.2, 5.8.x, 5.9.x on HP-UX 10.20, 11.00, 11.11,
& 11.23, SuSE 10.0 & 10.2, AIX 4.3 & 5.2, and Cygwin. http​://qa.perl.org
http​://mirrors.develooper.com/hpux/ http​://www.test-smoke.org
  http​://www.goldmark.org/jeff/stupid-disclaimers/

@p5pRT
Copy link
Author

p5pRT commented Mar 9, 2007

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

@p5pRT
Copy link
Author

p5pRT commented May 28, 2007

From @jandubois

On Fri, 09 Mar 2007, H.Merijn Brand wrote​:

On Thu, 22 Feb 2007 14​:39​:02 -0800, Tom Callaway (via RT)
<perlbug-followup@​perl.org> wrote​:

As part of the review process for Perl, I'm opening bugs for the
long list of patches to perl that Fedora has been carrying around
(in some cases, for years), in the hopes that these fixes can be
applied upstream. Unfortunately, I am not the original author of
these patches, so please be patient with me as I attempt to describe
why Fedora uses them.

Thanks, applied in change #30530 I hope there is someone out there in
the wild that uses this in smokes as I don't think the smokes pick up
share libperl's

This patch breaks building libperl.so for both maint and blead on at least
Redhat 7 and 9 (it builds fine on non-legacy distros)​:

`uname -a` for both machines​:
  Linux redhat-70-i386 2.2.24-7.0.3 #1 Fri Mar 14 08​:28​:25 EST 2003 i686 unknown
  Linux redhat-9-i386 2.4.20-46.9.legacy #1 Thu Mar 2 16​:11​:28 EST 2006 i686 i686 i386 GNU/Linux

Both machines have all available patches applied to them.

The failure is identical on both and looks like this​:

gcc -o libperl.so -shared -O2 -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc gv.o toke.o perly.o op.o pad.o regcomp.o dump.o util.o
mg.o reentr.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 activeperl.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o DynaLoader.o -lnsl
-ldl -lm -lcrypt -lutil -lpthread -lc
/usr/bin/ld​: libperl.so​: undefined versioned symbol name _LIB_VERSION@​@​GLIBC_2.0
/usr/bin/ld​: failed to set dynamic section sizes​: Bad value
collect2​: ld returned 1 exit status

It is some kind of weird interaction with this change​:

  http​://public.activestate.com/cgi-bin/perlbrowse/p/24371

Change 24371 could be made more specific to apply only on BSD and Cygwin, but
I think the patch in this bug report (30530) is actually not needed at all.

This patch is described as "make sure we get the proper ldflags on
libperl.so". Presumably, without it, the shared object does not get
the proper ldflags.

This patch doesn't add anything to the gcc commandline to build libperl.so
that isn't already there (see above). Therefore I think the presumption is
wrong and the patch should be reverted.

Note that this will still only be treating the symptoms. Gozer came up with
the following simple test program that fails to link on Redhat 7 and 9, even
without the duplicate -lm option​:

  /* cc -o libfoo.so -shared -lm foo.c */
  #include <math.h>
  _LIB_VERSION_TYPE _LIB_VERSION = _IEEE_;

This is just for reference, in case the problem with LIB_VERSION shows
up again; libperl.so seems to build fine again for now...

Cheers,
-Jan

--- perl-5.8.0/Makefile.SH.sharedlinker Tue Jun 18 12​:36​:27 2002
+++ perl-5.8.0/Makefile.SH Tue Jun 18 12​:37​:31 2002
@​@​ -61,6 +61,9 @​@​
netbsd*|freebsd[234]*|openbsd*)
linklibperl="-L. -lperl"
;;
+ linux*)
+ shrpldflags="$shrpldflags $ldflags $perllibs $cryptlib"
+ ;;
aix*)
shrpldflags="-H512 -T512 -bhalt​:4 -bM​:SRE -bE​:perl.exp"
case "$osvers" in

@p5pRT
Copy link
Author

p5pRT commented May 29, 2007

From @rgs

On 29/05/07, Jan Dubois <jand@​activestate.com> wrote​:

Change 24371 could be made more specific to apply only on BSD and Cygwin, but
I think the patch in this bug report (30530) is actually not needed at all.

OK, I reverted it now.

@p5pRT
Copy link
Author

p5pRT commented Apr 30, 2008

p5p@spam.wizbit.be - Status changed from 'open' to 'rejected'

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

No branches or pull requests

1 participant