NetBSD Problem Report #46329

From www@NetBSD.org  Fri Apr 13 07:31:44 2012
Return-Path: <www@NetBSD.org>
Received: from mail.netbsd.org (mail.netbsd.org [149.20.53.66])
	by www.NetBSD.org (Postfix) with ESMTP id 9E42F63BEE1
	for <gnats-bugs@gnats.NetBSD.org>; Fri, 13 Apr 2012 07:31:44 +0000 (UTC)
Message-Id: <20120413073143.BD1BB63BBEC@www.NetBSD.org>
Date: Fri, 13 Apr 2012 07:31:43 +0000 (UTC)
From: joern.clausen@uni-bielefeld.de
Reply-To: joern.clausen@uni-bielefeld.de
To: gnats-bugs@NetBSD.org
Subject: graphics/ImageMagick: visibility on Solaris with GCC4 still broken if using native ld
X-Send-Pr-Version: www-1.0

>Number:         46329
>Category:       pkg
>Synopsis:       graphics/ImageMagick: visibility on Solaris with GCC4 still broken if using native ld
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    solaris-pkg-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Apr 13 07:35:00 +0000 2012
>Last-Modified:  Fri Apr 13 14:20:02 +0000 2012
>Originator:     Jörn Clausen
>Release:        
>Organization:
University of Bielefeld
>Environment:
>Description:
The assumption that the visibility attribute can be used when using GCC 4 is wrong. It still does not work on Solaris (only i86, maybe) when using the native linker. This breaks graphics/ImageMagick and some other packages, that base their decision to use visibility solely on the type and version of the compiler:

  CCLD   magick/libMagickCore.la
Text relocation remains                         referenced
    against symbol                  offset      in file
ResetQuantumState                   0x818       magick/.libs/magick_libMagickCore_la-quantum.o
ResetQuantumState                   0xf75b      magick/.libs/magick_libMagickCore_la-quantum-export.o
ResetQuantumState                   0xc8a1      magick/.libs/magick_libMagickCore_la-quantum-import.o
SyncImagePixelCache                 0x4435      magick/.libs/magick_libMagickCore_la-colorspace.o
SyncImagePixelCache                 0x3645      magick/.libs/magick_libMagickCore_la-image.o
SyncImagePixelCache                 0x3c42      magick/.libs/magick_libMagickCore_la-image.o
SyncImagePixelCache                 0x4c58      magick/.libs/magick_libMagickCore_la-image.o
ld: fatal: relocations remain against allocatable but non-writable sections

This error was generated by using a stand-alone GCC 4.7.0 that uses native assembler and linker.
>How-To-Repeat:

>Fix:
--- magick/method-attribute.h.orig      2012-02-19 18:15:53.000000000 +0000
+++ magick/method-attribute.h
@@ -92,7 +92,7 @@ extern "C" {
 #  pragma warning(disable : 4996)
 # endif
 #else
-# if __GNUC__ >= 4
+# if __GNUC__ >= 4 && !defined(__sun__)
 #  define MagickExport __attribute__ ((visibility ("default")))
 #  define MagickPrivate  __attribute__ ((visibility ("hidden")))
 # else

>Release-Note:

>Audit-Trail:

Responsible-Changed-From-To: pkg-manager->solaris-pkg-people
Responsible-Changed-By: hauke@NetBSD.org
Responsible-Changed-When: Fri, 13 Apr 2012 07:48:26 +0000
Responsible-Changed-Why:
A Solaris issue.


From: Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: pkg/46329 (graphics/ImageMagick: visibility on Solaris with GCC4 still broken if using native ld)
Date: Fri, 13 Apr 2012 11:44:08 +0200

 graphics/ImageMagick built without problems in my SunOS 5.11 bulk build
 using lang/gcc46. Could it be that your gcc 4.7 is not configured
 correctly? I can't believe that a newer gcc4 suddenly lost support for
 the visibility attribute.

 Gcc 4.x needs some variant of objdump to be able to detect whether the
 visibility attribute can be supported. This is why lang/gcc44 and
 lang/gcc46 set this on SunOS:
 CONFIGURE_ENV+=		OBJDUMP=/usr/sfw/bin/gobjdump

 (Admittedly, this may not work on SunOS variants that don't have sfw or
 don't have objdump installed.)

From: =?ISO-8859-1?Q?J=F6rn_Clausen?= <joern.clausen@uni-bielefeld.de>
To: gnats-bugs@NetBSD.org
Cc: Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>,
 solaris-pkg-people@NetBSD.org, gnats-admin@NetBSD.org, pkgsrc-bugs@NetBSD.org
Subject: Re: pkg/46329 (graphics/ImageMagick: visibility on Solaris with GCC4
 still broken if using native ld)
Date: Fri, 13 Apr 2012 11:52:38 +0200

 On 13.04.12 11:45, Hans Rosenfeld wrote:
 >   graphics/ImageMagick built without problems in my SunOS 5.11 bulk build
 >   using lang/gcc46. Could it be that your gcc 4.7 is not configured
 >   correctly? I can't believe that a newer gcc4 suddenly lost support for
 >   the visibility attribute.

 It's the linker that does not support the code generated by GCC. As 
 mentioned, I use /usr/ccs/bin/ld, not binutils.

 I admit the patch "fixes" cases that are not broken, but as long as 
 autoconf provides no method for determining the linker in use, this is 
 the only workaround.

 -- 
   Jörn Clausen                             joern.clausen@uni-bielefeld.de
   Hochschulrechenzentrum                 http://www.uni-bielefeld.de/hrz/
   Universität Bielefeld

From: Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: pkg/46329 (graphics/ImageMagick: visibility on Solaris with GCC4 still broken if using native ld)
Date: Fri, 13 Apr 2012 12:10:44 +0200

 On Fri, Apr 13, 2012 at 09:55:02AM +0000, Jörn Clausen wrote:
 >  On 13.04.12 11:45, Hans Rosenfeld wrote:
 >  >   graphics/ImageMagick built without problems in my SunOS 5.11 bulk build
 >  >   using lang/gcc46. Could it be that your gcc 4.7 is not configured
 >  >   correctly? I can't believe that a newer gcc4 suddenly lost support for
 >  >   the visibility attribute.
 >  
 >  It's the linker that does not support the code generated by GCC. As 
 >  mentioned, I use /usr/ccs/bin/ld, not binutils.

 So do I, it's the default in lang/gcc46 and lang/gcc44. And it works on
 Solaris 10, too.

From: =?ISO-8859-1?Q?J=F6rn_Clausen?= <joern.clausen@uni-bielefeld.de>
To: gnats-bugs@NetBSD.org
Cc: Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>,
 solaris-pkg-people@NetBSD.org, gnats-admin@NetBSD.org, pkgsrc-bugs@NetBSD.org
Subject: Re: pkg/46329 (graphics/ImageMagick: visibility on Solaris with GCC4
 still broken if using native ld)
Date: Fri, 13 Apr 2012 15:54:23 +0200

 >   Gcc 4.x needs some variant of objdump to be able to detect whether the
 >   visibility attribute can be supported. This is why lang/gcc44 and
 >   lang/gcc46 set this on SunOS:
 >   CONFIGURE_ENV+=		OBJDUMP=/usr/sfw/bin/gobjdump

 I don't have that configured into my GCC. And as mentioned several time, 
 using /usr/sfw/bin is not an option for me.

 If you feel there is nothing to fix, please close this PR. I'll keep my 
 changes as a local patch.

 -- 
   Jörn Clausen                             joern.clausen@uni-bielefeld.de
   Hochschulrechenzentrum                 http://www.uni-bielefeld.de/hrz/
   Universität Bielefeld

From: Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: pkg/46329 (graphics/ImageMagick: visibility on Solaris with GCC4 still broken if using native ld)
Date: Fri, 13 Apr 2012 16:15:16 +0200

 On Fri, Apr 13, 2012 at 03:54:23PM +0200, Jörn Clausen wrote:
 > >  Gcc 4.x needs some variant of objdump to be able to detect whether the
 > >  visibility attribute can be supported. This is why lang/gcc44 and
 > >  lang/gcc46 set this on SunOS:
 > >  CONFIGURE_ENV+=		OBJDUMP=/usr/sfw/bin/gobjdump
 > 
 > I don't have that configured into my GCC. And as mentioned several time, 
 > using /usr/sfw/bin is not an option for me.

 Well, you could point to any other objdump if you like to do so. It is
 completely irrelevant how old it is or where it comes from. It is also
 _only_ ever used during the configure check that tries to determine
 whether visibility attributes can be supported. It is not built into
 the gcc package and not used in any way after the configure check.

 > If you feel there is nothing to fix, please close this PR. I'll keep my 
 > changes as a local patch.

 Honestly, I don't see why we should patch lots of packages to always
 disable the visibility attributes when it is actually supported by both
 the linker and the compiler. Also, I can't think of any reason why
 anyone would actively refuse to build gcc in a way that enables support
 for this.

>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.