public inbox for binutils-cvs@sourceware.org
 help / color / mirror / Atom feed
* [binutils-gdb] LoongArch: The symbol got type can only be obtained after initialization
@ 2024-04-25  1:25 liu & zhensong
  0 siblings, 0 replies; only message in thread
From: liu & zhensong @ 2024-04-25  1:25 UTC (permalink / raw)
  To: binutils-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b221bff7c7ca20d961a7e6b663a545384054a5be

commit b221bff7c7ca20d961a7e6b663a545384054a5be
Author: Lulu Cai <cailulu@loongson.cn>
Date:   Fri Apr 19 10:24:52 2024 +0800

    LoongArch: The symbol got type can only be obtained after initialization
    
    When scanning relocations and determining whether TLS type transition is
    possible, it will try to obtain the symbol got type. If the symbol got
    type record has not yet been allocated space and initialized, it will
    cause ld to crash. So when uninitialized, the symbol is set to GOT_UNKNOWN.

Diff:
---
 bfd/elfnn-loongarch.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c
index 7b493f6f05b..fe780e39610 100644
--- a/bfd/elfnn-loongarch.c
+++ b/bfd/elfnn-loongarch.c
@@ -683,7 +683,14 @@ loongarch_can_trans_tls (bfd *input_bfd,
   if (! IS_LOONGARCH_TLS_TRANS_RELOC (r_type))
     return false;
 
-  symbol_tls_type = _bfd_loongarch_elf_tls_type (input_bfd, h, r_symndx);
+  /* Obtaining tls got type here may occur before
+     loongarch_elf_record_tls_and_got_reference, so it is necessary
+     to ensure that tls got type has been initialized, otherwise it
+     is set to GOT_UNKNOWN.  */
+  symbol_tls_type = GOT_UNKNOWN;
+  if (_bfd_loongarch_elf_local_got_tls_type (input_bfd) || h)
+    symbol_tls_type = _bfd_loongarch_elf_tls_type (input_bfd, h, r_symndx);
+
   reloc_got_type = loongarch_reloc_got_type (r_type);
 
   if (symbol_tls_type == GOT_TLS_IE && GOT_TLS_GD_ANY_P (reloc_got_type))

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-04-25  1:25 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-25  1:25 [binutils-gdb] LoongArch: The symbol got type can only be obtained after initialization liu & zhensong

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).