1 * Mon Feb 03 2003 Jakub Jelinek <jakub@redhat.com>
2 - never call semaphore routines in between
3 __libc_malloc_pthread_startup(true) and
4 __libc_malloc_pthread_startup(false) (#83111)
5 - only use semaphore locking if application or its dependencies
6 are linked against -lpthread, don't link libefence.so against
9 --- ElectricFence-2.2.2/efence.c.jj 1999-04-12 21:00:49.000000000 -0400
10 +++ ElectricFence-2.2.2/efence.c 2003-02-03 11:20:18.000000000 -0500
11 @@ -174,6 +174,15 @@ static int internalUse = 0;
12 static int noAllocationListProtection = 0;
18 +#pragma weak sem_init
19 +#pragma weak sem_post
20 +#pragma weak sem_wait
22 +static int pthread_initialization = 0;
25 * EF_sem is a semaphore used to allow one thread at a time into
27 @@ -274,7 +283,7 @@ initialize(void)
31 - if (sem_init(&EF_sem, 0, 1) >= 0) {
32 + if (sem_init != NULL && !pthread_initialization && sem_init(&EF_sem, 0, 1) >= 0) {
36 @@ -397,6 +406,21 @@ initialize(void)
42 +__libc_malloc_pthread_startup (bool first_time)
45 + pthread_initialization = 1;
48 + pthread_initialization = 0;
49 + if (!semEnabled && sem_init != NULL && sem_init(&EF_sem, 0, 1) >= 0)
56 * allocateMoreSlots is called when there are only enough slot structures
57 * left to support the allocation of a single malloc buffer.