+++ /dev/null
-From 35ea7549751d4f13a28c732e6ad68204f5e60a06 Mon Sep 17 00:00:00 2001
-From: "H.J. Lu" <hjl.tools@gmail.com>
-Date: Wed, 20 Dec 2023 16:31:43 -0800
-Subject: [PATCH 36/44] x86-64: Fix the dtv field load for x32 [BZ #31184]
-
-On x32, I got
-
-FAIL: elf/tst-tlsgap
-
-$ gdb elf/tst-tlsgap
-...
-open tst-tlsgap-mod1.so
-
-Thread 2 "tst-tlsgap" received signal SIGSEGV, Segmentation fault.
-[Switching to LWP 2268754]
-_dl_tlsdesc_dynamic () at ../sysdeps/x86_64/dl-tlsdesc.S:108
-108 movq (%rsi), %rax
-(gdb) p/x $rsi
-$4 = 0xf7dbf9005655fb18
-(gdb)
-
-This is caused by
-
-_dl_tlsdesc_dynamic:
- _CET_ENDBR
- /* Preserve call-clobbered registers that we modify.
- We need two scratch regs anyway. */
- movq %rsi, -16(%rsp)
- movq %fs:DTV_OFFSET, %rsi
-
-Since the dtv field in TCB is a pointer, %fs:DTV_OFFSET is a 32-bit
-location, not 64-bit. Load the dtv field to RSI_LP instead of rsi.
-This fixes BZ #31184.
-
-(cherry picked from commit 3502440397bbb840e2f7223734aa5cc2cc0e29b6)
----
- NEWS | 1 +
- sysdeps/x86_64/dl-tlsdesc.S | 2 +-
- 2 files changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/NEWS b/NEWS
-index 5ac488bf9b..71057e4793 100644
---- a/NEWS
-+++ b/NEWS
-@@ -37,6 +37,7 @@ The following bugs are resolved with this release:
- [30804] F_GETLK, F_SETLK, and F_SETLKW value change for powerpc64 with
- -D_FILE_OFFSET_BITS=64
- [30842] Stack read overflow in getaddrinfo in no-aaaa mode (CVE-2023-4527)
-+ [31184] FAIL: elf/tst-tlsgap
-
- \f
- Version 2.38
-diff --git a/sysdeps/x86_64/dl-tlsdesc.S b/sysdeps/x86_64/dl-tlsdesc.S
-index 5593897e29..c4823547d7 100644
---- a/sysdeps/x86_64/dl-tlsdesc.S
-+++ b/sysdeps/x86_64/dl-tlsdesc.S
-@@ -102,7 +102,7 @@ _dl_tlsdesc_dynamic:
- /* Preserve call-clobbered registers that we modify.
- We need two scratch regs anyway. */
- movq %rsi, -16(%rsp)
-- movq %fs:DTV_OFFSET, %rsi
-+ mov %fs:DTV_OFFSET, %RSI_LP
- movq %rdi, -8(%rsp)
- movq TLSDESC_ARG(%rax), %rdi
- movq (%rsi), %rax
---
-2.39.2
-