Module Name: src
Committed By: joerg
Date: Sat Apr 2 12:30:41 UTC 2011
Modified Files:
src/libexec/ld.elf_so: rtld.c
Log Message:
Unbreak HPPA
To generate a diff of this commit:
cvs rdiff -u -r1.148 -r1.149 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.148 src/libexec/ld.elf_so/rtld.c:1.149
--- src/libexec/ld.elf_so/rtld.c:1.148 Tue Mar 29 20:56:35 2011
+++ src/libexec/ld.elf_so/rtld.c Sat Apr 2 12:30:41 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: rtld.c,v 1.148 2011/03/29 20:56:35 joerg Exp $ */
+/* $NetBSD: rtld.c,v 1.149 2011/04/02 12:30:41 joerg Exp $ */
/*
* Copyright 1996 John D. Polstra.
@@ -40,7 +40,7 @@
#include <sys/cdefs.h>
#ifndef lint
-__RCSID("$NetBSD: rtld.c,v 1.148 2011/03/29 20:56:35 joerg Exp $");
+__RCSID("$NetBSD: rtld.c,v 1.149 2011/04/02 12:30:41 joerg Exp $");
#endif /* not lint */
#include <sys/param.h>
@@ -1147,6 +1147,9 @@
const Elf_Sym *def, *best_def;
void *symbol_addr;
unsigned long symoffset;
+#ifdef __HAVE_FUNCTION_DESCRIPTORS
+ sigset_t mask;
+#endif
dbg(("dladdr of %p", addr));
@@ -1405,6 +1408,24 @@
}
}
+void
+_rtld_lock(int arg, sigset_t *mask)
+{
+ switch (arg) {
+ default:
+ dbg(("%s: invalid argument: %d", __func__, arg));
+ break;
+ case RTLD_LOCK_PRE_FORK:
+ _rtld_exclusive_enter(mask);
+ _rtld_mutex_may_recurse = true;
+ break;
+ case RTLD_LOCK_POST_FORK:
+ _rtld_mutex_may_recurse = false;
+ _rtld_exclusive_exit(mask);
+ break;
+ }
+}
+
#define RTLD_EXCLUSIVE_MASK 0x80000000U
static volatile unsigned int _rtld_mutex;
static volatile unsigned int _rtld_waiter_exclusive;