public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Jeff Law <jeffreyalaw@gmail.com>
To: libc-alpha@sourceware.org
Subject: Re: global pointer gets overwritten with dlopen(3) on RISC-V
Date: Fri, 12 May 2023 14:35:48 -0600	[thread overview]
Message-ID: <dd25b9e8-e5ff-d104-d142-144841011e65@gmail.com> (raw)
In-Reply-To: <877ctdpaww.fsf@oldenburg3.str.redhat.com>



On 5/12/23 14:11, Florian Weimer via Libc-alpha wrote:
> * Fangrui Song:
> 
>>> 1. Make -mno-relax the default for ld(1) (on Linux?). We have no
>>> benchmarks whatsoever, but global variables aren't very popular in
>>> application code these days and the gp register allows access to a
>>> single memory page (4kB) only. No big deal really.
>>
>> I do agree that --no-relax-gp is a sensible default choice for GNU ld.
>> https://maskray.me/blog/2021-03-14-the-dark-side-of-riscv-linker-relaxation#global-pointer-relaxation
>>
>> Perhaps you can start a separate topic on binutils? :)
>>
>> According to a doc from SiFive about -static -mcpu=sifive-u74 builds,
>> https://docs.google.com/spreadsheets/d/14V7cPbyc80AcGHzsMaw9hYb232dzRbGCmTApnxj-SpU/edit#gid=0
>> global pointer relaxation saves at best 0.5% size (I guess that refers
>> to .text. If we count all allocable sections, the percentage is likely
>> even smaller.)
> 
> For a mature toolchain, 0.5% in code size reduction would be *a lot*,
> so I wouldn't dismiss that.
However, that value is probably a little low.

There is a really interesting little bug in the interaction between how 
we place gp and how we determine if an address computation is relaxable. 
  The net result is for relatively small data segments we can fail to 
relax address computations that we should be able to trivially cover 
with gp based addressing.

This showed up as a clearly measurable runtime performance regression in 
spec2017.  leela or deepsjeng, I can't remember which offhand.  It would 
also likely be a size issue, though I rarely look at those size issues.

Knowing that I still question if it is worth the effort to relax. 
Others have much more strongly held positions.

Jeff




> 
> Do we have a reproducer?  Is the issue actually about gp relaxation for
> the main executable?
> 
> Thanks,
> Florian
> 

      parent reply	other threads:[~2023-05-12 20:35 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20230512142114eucas1p112d969a89ad2480a0c10a532bd6d8440@eucas1p1.samsung.com>
2023-05-12 14:21 ` Lukasz Stelmach
2023-05-12 15:13   ` Florian Weimer
2023-05-15 13:47     ` Palmer Dabbelt
     [not found]       ` <CGME20230516065316eucas1p17bffcd25209bb441b9a9f4d263aa8b3c@eucas1p1.samsung.com>
2023-05-16  6:53         ` Lukasz Stelmach
2023-05-16  7:59           ` Szabolcs Nagy
2023-05-17  0:11             ` Palmer Dabbelt
2023-05-12 19:50   ` Fangrui Song
2023-05-12 20:11     ` Florian Weimer
2023-05-12 20:33       ` Palmer Dabbelt
2023-05-12 21:09         ` Fangrui Song
2023-05-12 21:57           ` Palmer Dabbelt
2023-05-12 22:34             ` Fangrui Song
2023-05-12 22:47               ` Palmer Dabbelt
2023-05-13  0:05                 ` Fangrui Song
2023-05-13  0:35                   ` Palmer Dabbelt
2023-05-16  3:56                     ` Fangrui Song
2023-05-16 22:51                       ` Palmer Dabbelt
2023-05-16 23:21                         ` Palmer Dabbelt
2023-05-12 20:35       ` Jeff Law [this message]

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=dd25b9e8-e5ff-d104-d142-144841011e65@gmail.com \
    --to=jeffreyalaw@gmail.com \
    --cc=libc-alpha@sourceware.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).