Module Name: src Committed By: skrll Date: Mon Mar 14 08:21:54 UTC 2011
Modified Files: src/libexec/ld.elf_so/arch/hppa: hppa_reloc.c Log Message: Handle some TLS relocs. To generate a diff of this commit: cvs rdiff -u -r1.35 -r1.36 src/libexec/ld.elf_so/arch/hppa/hppa_reloc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/libexec/ld.elf_so/arch/hppa/hppa_reloc.c diff -u src/libexec/ld.elf_so/arch/hppa/hppa_reloc.c:1.35 src/libexec/ld.elf_so/arch/hppa/hppa_reloc.c:1.36 --- src/libexec/ld.elf_so/arch/hppa/hppa_reloc.c:1.35 Thu Mar 10 12:53:42 2011 +++ src/libexec/ld.elf_so/arch/hppa/hppa_reloc.c Mon Mar 14 08:21:54 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: hppa_reloc.c,v 1.35 2011/03/10 12:53:42 skrll Exp $ */ +/* $NetBSD: hppa_reloc.c,v 1.36 2011/03/14 08:21:54 skrll Exp $ */ /*- * Copyright (c) 2002, 2004 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: hppa_reloc.c,v 1.35 2011/03/10 12:53:42 skrll Exp $"); +__RCSID("$NetBSD: hppa_reloc.c,v 1.36 2011/03/14 08:21:54 skrll Exp $"); #endif /* not lint */ #include <stdlib.h> @@ -473,6 +473,32 @@ rdbg(("COPY (avoid in main)")); break; + case R_TYPE(TLS_DTPMOD32): + def = _rtld_find_symdef(symnum, obj, &defobj, false); + if (def == NULL) + return -1; + + *where = (Elf_Addr)(defobj->tlsindex); + + rdbg(("TLS_DTPMOD32 %s in %s --> %p", + obj->strtab + obj->symtab[symnum].st_name, + obj->path, (void *)*where)); + + break; + + case R_TYPE(TLS_DTPOFF32): + def = _rtld_find_symdef(symnum, obj, &defobj, false); + if (def == NULL) + return -1; + + *where = (Elf_Addr)(def->st_value); + + rdbg(("TLS_DTPOFF32 %s in %s --> %p", + obj->strtab + obj->symtab[symnum].st_name, + obj->path, (void *)*where)); + + break; + default: rdbg(("sym = %lu, type = %lu, offset = %p, " "addend = %p, contents = %p, symbol = %s",