Module Name: src Committed By: joerg Date: Sun May 30 02:26:08 UTC 2021
Modified Files: src/libexec/ld.elf_so: rtld.c Log Message: Don't use the return address hack with clang. To generate a diff of this commit: cvs rdiff -u -r1.207 -r1.208 src/libexec/ld.elf_so/rtld.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/rtld.c diff -u src/libexec/ld.elf_so/rtld.c:1.207 src/libexec/ld.elf_so/rtld.c:1.208 --- src/libexec/ld.elf_so/rtld.c:1.207 Tue Sep 22 00:41:27 2020 +++ src/libexec/ld.elf_so/rtld.c Sun May 30 02:26:08 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: rtld.c,v 1.207 2020/09/22 00:41:27 kamil Exp $ */ +/* $NetBSD: rtld.c,v 1.208 2021/05/30 02:26:08 joerg Exp $ */ /* * Copyright 1996 John D. Polstra. @@ -40,7 +40,7 @@ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: rtld.c,v 1.207 2020/09/22 00:41:27 kamil Exp $"); +__RCSID("$NetBSD: rtld.c,v 1.208 2021/05/30 02:26:08 joerg Exp $"); #endif /* not lint */ #include <sys/param.h> @@ -1118,7 +1118,7 @@ _rtld_objmain_sym(const char *name) return NULL; } -#ifdef __powerpc__ +#if defined(__powerpc__) && !defined(__clang__) static __noinline void * hackish_return_address(void) { @@ -1284,7 +1284,7 @@ dlsym(void *handle, const char *name) dbg(("dlsym of %s in %p", name, handle)); -#ifdef __powerpc__ +#if defined(__powerpc__) && !defined(__clang__) retaddr = hackish_return_address(); #else retaddr = __builtin_return_address(0); @@ -1309,7 +1309,7 @@ dlvsym(void *handle, const char *name, c ver_entry.flags = 0; ventry = &ver_entry; } -#ifdef __powerpc__ +#if defined(__powerpc__) && !defined(__clang__) retaddr = hackish_return_address(); #else retaddr = __builtin_return_address(0); @@ -1407,7 +1407,7 @@ dlinfo(void *handle, int req, void *v) _rtld_shared_enter(); if (handle == RTLD_SELF) { -#ifdef __powerpc__ +#if defined(__powerpc__) && !defined(__clang__) retaddr = hackish_return_address(); #else retaddr = __builtin_return_address(0);