From: Jan Beulich <jbeulich@suse.com>
To: "H.J. Lu" <hjl.tools@gmail.com>
Cc: binutils@sourceware.org, Fangrui Song <maskray@google.com>
Subject: Re: [PATCH] ld: Allow R_X86_64_GOTPCREL for call *__tls_get_addr@GOTPCREL(%rip)
Date: Mon, 9 Jan 2023 09:15:51 +0100 [thread overview]
Message-ID: <beb7378b-4306-2be7-5c16-6a7d472580cc@suse.com> (raw)
In-Reply-To: <CAMe9rOo-x+d5ZZtSk7rA76HpoJGuZ0JLNAqNGfM2rRVExjZjHw@mail.gmail.com>
On 06.01.2023 18:03, H.J. Lu via Binutils wrote:
> On Thu, Jan 5, 2023 at 1:06 PM Fangrui Song via Binutils
> <binutils@sourceware.org> wrote:
>>
>> _Thread_local int a;
>> int main() { return a; }
>>
>> % gcc -fno-plt -fpic a.c -fuse-ld=bfd -Wa,-mrelax-relocations=no
>> /usr/bin/ld.bfd: /tmp/ccSSBgrg.o: TLS transition from R_X86_64_TLSGD to R_X86_64_GOTTPOFF against `a' at 0xd in section `.text' failed
>> /usr/bin/ld.bfd: failed to set dynamic section sizes: bad value
>> collect2: error: ld returned 1 exit status
>>
>> This commit fixes the issue.
>>
>> PR ld/24784
>> * bfd/elf64-x86-64.c (elf_x86_64_check_tls_transition): Allow
>> R_X86_64_GOTPCREL.
>> ---
>> bfd/elf64-x86-64.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
>> index 914f82d0151..095fe2e0fe6 100644
>> --- a/bfd/elf64-x86-64.c
>> +++ b/bfd/elf64-x86-64.c
>> @@ -1241,7 +1241,7 @@ elf_x86_64_check_tls_transition (bfd *abfd,
>> if (largepic)
>> return r_type == R_X86_64_PLTOFF64;
>> else if (indirect_call)
>> - return r_type == R_X86_64_GOTPCRELX;
>> + return (r_type == R_X86_64_GOTPCRELX || r_type == R_X86_64_GOTPCREL);
>> else
>> return (r_type == R_X86_64_PC32 || r_type == R_X86_64_PLT32);
>> }
>> --
>> 2.39.0.314.g84b9a713c41-goog
>>
>
> Since the new TLS sequence was added after R_X86_64_GOTPCRELX was
> required for call, R_X86_64_GOTPCREL should be invalid in this TLS sequence.
While this may well be, would you mind pointing out (more to Fangrui than to
me) what bad his proposed change would do?
Jan
next prev parent reply other threads:[~2023-01-09 8:15 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-05 21:05 Fangrui Song
2023-01-06 17:03 ` H.J. Lu
2023-01-06 18:48 ` Fangrui Song
2023-01-06 21:13 ` H.J. Lu
2023-01-06 21:25 ` Fangrui Song
2023-01-06 21:26 ` H.J. Lu
2023-01-06 21:44 ` Fangrui Song
2023-01-06 22:41 ` H.J. Lu
2023-01-06 23:02 ` Fangrui Song
2023-01-06 23:20 ` H.J. Lu
2023-01-06 23:52 ` Fangrui Song
2023-01-07 0:01 ` H.J. Lu
2023-01-09 8:15 ` Jan Beulich [this message]
2023-01-09 21:14 ` H.J. Lu
2023-01-10 9:16 ` Jan Beulich
2023-01-10 20:39 ` H.J. Lu
2023-01-10 21:02 ` Fangrui Song
2023-01-11 9:01 ` Jan Beulich
2023-01-11 8:10 ` Jan Beulich
2023-03-02 11:37 ` Jan Beulich
2023-03-02 20:10 ` [PATCH v2] " Fangrui Song
2023-03-10 9:10 ` Jan Beulich
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=beb7378b-4306-2be7-5c16-6a7d472580cc@suse.com \
--to=jbeulich@suse.com \
--cc=binutils@sourceware.org \
--cc=hjl.tools@gmail.com \
--cc=maskray@google.com \
/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).