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 Use CFLAGS for all compiler invocations #8802

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

[PATCH] 5.8.8 Use CFLAGS for all compiler invocations #8802

p5pRT opened this issue Feb 23, 2007 · 6 comments

Comments

@p5pRT
Copy link

p5pRT commented Feb 23, 2007

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

Searchable as RT41595$

@p5pRT
Copy link
Author

p5pRT commented Feb 23, 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. In this specific case, I actually _AM_ the
original author of this patch, so I can explain exactly why it is
relevant. :)

sparc64 is a special Linux architecture. The userland, by default,
is 32bit (sparc), but since we want to support 64bit binaries
(sparc64) as well, we compile some packages (mostly dependencies
of glibc and gcc) as both 32bit and 64bit optimized (two packages,
hooray multilib).
Unfortunately, when we run gcc -shared, without passing -m64 while
trying to build perl (or anything else, for that matter), libtool
tries to link it as a 32bit binary, from 64bit pieces, and massive
explosions occur. The obvious fix for perl is to ensure that we're
using our $optimize flags at every gcc invocation, -shared or
otherwise. This one line patch achieves that. Most of these flags
get dropped on the floor, but when gcc sees -m64, it passes the
right bits to libtool, which links it as a 64bit binary object.

This is filed in Red Hat's bugzilla as​:
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=199372

Inline Patch
--- perl-5.8.8/Configure.BAD    2006-07-17 12:43:58.000000000 -0400
+++ perl-5.8.8/Configure        2006-07-17 12:44:04.000000000 -0400
@@ -7659,7 +7659,7 @@
                              '') dflt="$dflt +vnocompatwarnings" ;;
                              esac
                              ;;
-                       linux|irix*|gnu*)       dflt='-shared' ;;
+                       linux|irix*|gnu*)       dflt="-shared
$optimize" ;;   next\) dflt='none' ;;   solaris\) dflt='\-G' ;;   sunos\) dflt='\-assert nodefinitions' ;;

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 Feb 24, 2007

From @pjcj

On Thu, Feb 22, 2007 at 07​:33​:45PM -0800, Tom Callaway 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.

Thanks very much for doing this.

- linux|irix*|gnu*) dflt='-shared' ;;
+ linux|irix*|gnu*) dflt="-shared
$optimize" ;;

I've noticed that a couple of your patches have been badly wrapped like
this. I'd guess that it's your editor doing this, but I'm not
absolutely sure.

For tiny patches like this it's not a great problem, but if you have any
more to send, could you try to ensure that the patch doesn't get
mangled?

Thanks again for looking at all these patches.

--
Paul Johnson - paul@​pjcj.net
http​://www.pjcj.net

@p5pRT
Copy link
Author

p5pRT commented Feb 24, 2007

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

@p5pRT
Copy link
Author

p5pRT commented Feb 25, 2007

From @spotrh

On Sat, 2007-02-24 at 03​:46 -0800, Paul Johnson via RT wrote​:

On Thu, Feb 22, 2007 at 07​:33​:45PM -0800, Tom Callaway 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.

Thanks very much for doing this.

- linux|irix*|gnu*) dflt='-shared' ;;
+ linux|irix*|gnu*) dflt="-shared
$optimize" ;;

I've noticed that a couple of your patches have been badly wrapped like
this. I'd guess that it's your editor doing this, but I'm not
absolutely sure.

It's probably evolution mangling the emails. Sorry. :/

~spot

@p5pRT
Copy link
Author

p5pRT commented Mar 9, 2007

From @Tux

On Thu, 22 Feb 2007 19​:33​:45 -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. In this specific case, I actually _AM_ the
original author of this patch, so I can explain exactly why it is
relevant. :)

Thanks, applied in change #30528

sparc64 is a special Linux architecture. The userland, by default,
is 32bit (sparc), but since we want to support 64bit binaries
(sparc64) as well, we compile some packages (mostly dependencies
of glibc and gcc) as both 32bit and 64bit optimized (two packages,
hooray multilib).
Unfortunately, when we run gcc -shared, without passing -m64 while
trying to build perl (or anything else, for that matter), libtool
tries to link it as a 32bit binary, from 64bit pieces, and massive
explosions occur. The obvious fix for perl is to ensure that we're
using our $optimize flags at every gcc invocation, -shared or
otherwise. This one line patch achieves that. Most of these flags
get dropped on the floor, but when gcc sees -m64, it passes the
right bits to libtool, which links it as a 64bit binary object.

This is filed in Red Hat's bugzilla as​:
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=199372

--- perl-5.8.8/Configure.BAD 2006-07-17 12​:43​:58.000000000 -0400
+++ perl-5.8.8/Configure 2006-07-17 12​:44​:04.000000000 -0400
@​@​ -7659,7 +7659,7 @​@​
'') dflt="$dflt +vnocompatwarnings" ;;
esac
;;
- linux|irix*|gnu*) dflt='-shared' ;;
+ linux|irix*|gnu*) dflt="-shared
$optimize" ;;
next) dflt='none' ;;
solaris) dflt='-G' ;;
sunos) dflt='-assert nodefinitions' ;;

--
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 Apr 30, 2008

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

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