public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "thiago at kde dot org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/65886] [5/6 Regression] Copy reloc in PIE incompatible with DSO created by -Wl,-Bsymbolic
Date: Sat, 25 Apr 2015 17:30:00 -0000	[thread overview]
Message-ID: <bug-65886-4-xZARkEsTXE@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-65886-4@http.gcc.gnu.org/bugzilla/>

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65886

--- Comment #7 from Thiago Macieira <thiago at kde dot org> ---
(In reply to H.J. Lu from comment #4)
> (In reply to Thiago Macieira from comment #3)
> > Thanks H.J.!
> > 
> > Can I ask that -fsymbolic be the default? Otherwise, code with -fPIE MUST
> > add -fsymbolic in GCC 5+, but can't add it prior because the option didn't
> > exist. Please leave that for a release or two so that we can adapt
> 
> Linux kernel has things like
> 
> M16_CFLAGS	 := $(call cc-option, -m16, $(CODE16GCC_CFLAGS))
> 
> It adds -m16 only if it exits. Why can't KDE do something like this?
> There are many ways to achieve it and it works with all compilers.

We can. The problem is not the ability, it's the need to do it.

No buildsystem currently has support for -fsymbolic, since it doesn't exist
yet. However, the lack of such option will produce subtle bugs. I'm asking for
a grace period until the changes propagate.

I can add a runtime check to QtCore, though.

> By default, GCC should be psABI compliant.  -Bsymbolic isn't psABI compliant
> since the resulting shared library doesn't work with normal executable.  I
> don't believe -fsymbolic should be the default, just like that -Bsymbolic
> shouldn't be the default for linker either.

I would argue that those should be the default and that we're optimising for
the wrong thing. For example, in your email with the patch, you said:

> Some experiments on google and SPEC CPU benchmarks show that the extra
> instruction affects performance by 1% to 5%.

You're not accounting for loss of performance in the shared libraries that
can't use -Bsymbolic due to the copy relocations, both at load-time
(relocations by name) and at runtime (indirect addressing to local symbols).
Maybe our experiences with shared libraries isn't the same: mine is that
libraries are 10x bigger and more complex than the applications using them. 

So I submit that your benchmarks are incomplete.
>From gcc-bugs-return-484640-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sat Apr 25 17:31:18 2015
Return-Path: <gcc-bugs-return-484640-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 55911 invoked by alias); 25 Apr 2015 17:31:18 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 55597 invoked by uid 48); 25 Apr 2015 17:31:15 -0000
From: "LpSolit at netscape dot net" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug web/64968] Upgrade GCC Bugzilla to 5.0
Date: Sat, 25 Apr 2015 17:31:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: web
X-Bugzilla-Version: unknown
X-Bugzilla-Keywords:
X-Bugzilla-Severity: enhancement
X-Bugzilla-Who: LpSolit at netscape dot net
X-Bugzilla-Status: RESOLVED
X-Bugzilla-Resolution: FIXED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: LpSolit at netscape dot net
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_status resolution
Message-ID: <bug-64968-4-nSxnPq1nRq@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-64968-4@http.gcc.gnu.org/bugzilla/>
References: <bug-64968-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2015-04/txt/msg02192.txt.bz2
Content-length: 466

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64968

Frédéric Buclin <LpSolit at netscape dot net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #11 from Frédéric Buclin <LpSolit at netscape dot net> ---
Upgrade done. :)
>From gcc-bugs-return-484641-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sat Apr 25 17:33:08 2015
Return-Path: <gcc-bugs-return-484641-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 58215 invoked by alias); 25 Apr 2015 17:33:08 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 58184 invoked by uid 48); 25 Apr 2015 17:33:04 -0000
From: "thiago at kde dot org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/65886] [5/6 Regression] Copy reloc in PIE incompatible with DSO created by -Wl,-Bsymbolic
Date: Sat, 25 Apr 2015 17:33:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: target
X-Bugzilla-Version: 5.1.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: thiago at kde dot org
X-Bugzilla-Status: NEW
X-Bugzilla-Resolution:
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-65886-4-xKT6HyOuOk@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-65886-4@http.gcc.gnu.org/bugzilla/>
References: <bug-65886-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2015-04/txt/msg02193.txt.bz2
Content-length: 996

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65886

--- Comment #8 from Thiago Macieira <thiago at kde dot org> ---
(In reply to H.J. Lu from comment #6)
> (In reply to H.J. Lu from comment #5)
> >
> > BTW, you should add -fsymbolic to -fPIC if the shared library will be
> > created by -Bsymbolic.  It will improve shared library performance.

Will do.

> /export/build/gnu/gcc-5/build-x86_64-linux/gcc/xgcc
> -B/export/build/gnu/gcc-5/build-x86_64-linux/gcc/ -flto -Wl,-Bsymbolic -g
> -O2 -fsymbolic -shared -o libb.so b.o a.o

Will the LTO be required here? Or will it work without LTO too?

> Dump of assembler code for function bar:
>    0x00000000000005e0 <+0>:	movl   $0x1e,0x2002be(%rip)        # 0x2008a8 <a>
>    0x00000000000005ea <+10>:	retq   
> End of assembler dump.

I've been accomplishing the same with protected visibility, but I keep running
into linker bugs, so I haven't been able to enable it by default. Looks like
the option here will be the proper solution.
>From gcc-bugs-return-484642-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sat Apr 25 17:34:28 2015
Return-Path: <gcc-bugs-return-484642-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 59290 invoked by alias); 25 Apr 2015 17:34:28 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 59249 invoked by uid 48); 25 Apr 2015 17:34:24 -0000
From: "hjl.tools at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/65886] [5/6 Regression] Copy reloc in PIE incompatible with DSO created by -Wl,-Bsymbolic
Date: Sat, 25 Apr 2015 17:34:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: target
X-Bugzilla-Version: 5.1.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: hjl.tools at gmail dot com
X-Bugzilla-Status: NEW
X-Bugzilla-Resolution:
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-65886-4-vX8NDEqaJO@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-65886-4@http.gcc.gnu.org/bugzilla/>
References: <bug-65886-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2015-04/txt/msg02194.txt.bz2
Content-length: 700

https://gcc.gnu.org/bugzilla/show_bug.cgi?ide886

--- Comment #9 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Thiago Macieira from comment #7)

> You're not accounting for loss of performance in the shared libraries that
> can't use -Bsymbolic due to the copy relocations, both at load-time
> (relocations by name) and at runtime (indirect addressing to local symbols).
> Maybe our experiences with shared libraries isn't the same: mine is that
> libraries are 10x bigger and more complex than the applications using them.
>
> So I submit that your benchmarks are incomplete.

The keyword here is psABI compliant.  Since your shared library isn't
psABI compliant, all bets are off.


  parent reply	other threads:[~2015-04-25 17:30 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-25 13:45 [Bug target/65886] New: [5/6 Regression] External reference in PIE to DSO created with -Wl,-Bsymbolic hjl.tools at gmail dot com
2015-04-25 13:46 ` [Bug target/65886] " hjl.tools at gmail dot com
2015-04-25 15:47 ` [Bug target/65886] [5/6 Regression] External reference in PIE incompatible with DSO created by -Wl,-Bsymbolic hjl.tools at gmail dot com
2015-04-25 16:33 ` hjl.tools at gmail dot com
2015-04-25 16:51 ` [Bug target/65886] [5/6 Regression] Copy reloc " thiago at kde dot org
2015-04-25 17:06 ` hjl.tools at gmail dot com
2015-04-25 17:08 ` hjl.tools at gmail dot com
2015-04-25 17:25 ` hjl.tools at gmail dot com
2015-04-25 17:30 ` thiago at kde dot org [this message]
2015-04-25 17:37 ` hjl.tools at gmail dot com
2015-04-25 17:42 ` hjl.tools at gmail dot com
2015-04-27  9:05 ` rguenth at gcc dot gnu.org
2015-04-27 12:14 ` jakub at gcc dot gnu.org
2015-04-27 12:22 ` hjl.tools at gmail dot com
2015-04-27 12:37 ` jakub at gcc dot gnu.org
2015-04-27 12:44 ` hjl.tools at gmail dot com
2015-04-27 13:14 ` hjl.tools at gmail dot com
2015-04-27 13:51 ` jakub at gcc dot gnu.org
2015-04-27 19:18 ` thiago at kde dot org
2015-04-29 19:05 ` hjl.tools at gmail dot com
2015-04-29 19:06 ` hjl.tools at gmail dot com
2015-05-05 15:03 ` thiago at kde dot org
2015-05-05 15:09 ` hjl.tools at gmail dot com
2015-05-05 15:12 ` jakub at gcc dot gnu.org
2015-05-05 15:14 ` jakub at gcc dot gnu.org
2015-05-05 15:38 ` hjl.tools at gmail dot com
2015-05-05 15:47 ` jakub at gcc dot gnu.org
2015-05-05 15:48 ` thiago at kde dot org
2015-05-05 15:54 ` thiago at kde dot org
2015-06-30 10:32 ` rguenth at gcc dot gnu.org
2015-07-16  9:17 ` rguenth at gcc dot gnu.org
2015-08-06 18:06 ` thiago at kde dot org
2015-08-06 18:24 ` hjl.tools at gmail dot com
2015-08-06 18:27 ` thiago at kde dot org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-65886-4-xZARkEsTXE@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).