Wed Aug 2 07:12:04 2023 UTC ()
Fix member name in patch for  ticket #297 (fix dlopen with static thread-local
storage)


(martin)
diff -r1.7.2.1 -r1.7.2.2 src/libexec/ld.elf_so/arch/riscv/mdreloc.c

cvs diff -r1.7.2.1 -r1.7.2.2 src/libexec/ld.elf_so/arch/riscv/mdreloc.c (expand / switch to unified diff)

--- src/libexec/ld.elf_so/arch/riscv/mdreloc.c 2023/08/01 16:34:59 1.7.2.1
+++ src/libexec/ld.elf_so/arch/riscv/mdreloc.c 2023/08/02 07:12:04 1.7.2.2
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: mdreloc.c,v 1.7.2.1 2023/08/01 16:34:59 martin Exp $ */ 1/* $NetBSD: mdreloc.c,v 1.7.2.2 2023/08/02 07:12:04 martin Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 2014 The NetBSD Foundation, Inc. 4 * Copyright (c) 2014 The NetBSD Foundation, Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * This code is derived from software contributed to The NetBSD Foundation 7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Matt Thomas of 3am Software Foundry. 8 * by Matt Thomas of 3am Software Foundry.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
@@ -21,27 +21,27 @@ @@ -21,27 +21,27 @@
21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE. 29 * POSSIBILITY OF SUCH DAMAGE.
30 */ 30 */
31 31
32#include <sys/cdefs.h> 32#include <sys/cdefs.h>
33#ifndef lint 33#ifndef lint
34__RCSID("$NetBSD: mdreloc.c,v 1.7.2.1 2023/08/01 16:34:59 martin Exp $"); 34__RCSID("$NetBSD: mdreloc.c,v 1.7.2.2 2023/08/02 07:12:04 martin Exp $");
35#endif /* not lint */ 35#endif /* not lint */
36 36
37#include <sys/types.h> 37#include <sys/types.h>
38#include <sys/endian.h> 38#include <sys/endian.h>
39#include <sys/tls.h> 39#include <sys/tls.h>
40 40
41#include <stdlib.h> 41#include <stdlib.h>
42#include <string.h> 42#include <string.h>
43 43
44#include "debug.h" 44#include "debug.h"
45#include "rtld.h" 45#include "rtld.h"
46 46
47void _rtld_bind_start(void); 47void _rtld_bind_start(void);
@@ -158,27 +158,27 @@ _rtld_relocate_nonplt_objects(Obj_Entry  @@ -158,27 +158,27 @@ _rtld_relocate_nonplt_objects(Obj_Entry
158 Elf_Addr val = (Elf_Addr)defobj->tlsindex + rela->r_addend; 158 Elf_Addr val = (Elf_Addr)defobj->tlsindex + rela->r_addend;
159 159
160 *where = val; 160 *where = val;
161 rdbg(("DTPMOD %s in %s --> %p in %s", 161 rdbg(("DTPMOD %s in %s --> %p in %s",
162 obj->strtab + obj->symtab[r_symndx].st_name, 162 obj->strtab + obj->symtab[r_symndx].st_name,
163 obj->path, (void *)val, defobj->path)); 163 obj->path, (void *)val, defobj->path));
164 break; 164 break;
165 } 165 }
166 166
167 case R_TYPESZ(TLS_DTPREL): { 167 case R_TYPESZ(TLS_DTPREL): {
168 Elf_Addr old = *where; 168 Elf_Addr old = *where;
169 Elf_Addr val = old; 169 Elf_Addr val = old;
170 170
171 if (!defobj->tls_done && 171 if (!defobj->tls_static &&
172 _rtld_tls_offset_allocate(__UNCONST(defobj))) 172 _rtld_tls_offset_allocate(__UNCONST(defobj)))
173 return -1; 173 return -1;
174 174
175 val = (Elf_Addr)def->st_value - TLS_DTV_OFFSET; 175 val = (Elf_Addr)def->st_value - TLS_DTV_OFFSET;
176 *where = val; 176 *where = val;
177 177
178 rdbg(("DTPREL %s in %s --> %p in %s", 178 rdbg(("DTPREL %s in %s --> %p in %s",
179 obj->strtab + obj->symtab[r_symndx].st_name, 179 obj->strtab + obj->symtab[r_symndx].st_name,
180 obj->path, (void *)val, defobj->path)); 180 obj->path, (void *)val, defobj->path));
181 break; 181 break;
182 } 182 }
183 183
184 default: 184 default: