source: npl/system/nss_ldap/patches/glibc-2.16.patch

Last change on this file was c5c522c, checked in by Edwin Eefting <edwin@datux.nl>, 8 years ago

initial commit, transferred from cleaned syn3 svn tree

  • Property mode set to 100644
File size: 5.1 KB
  • ldap-nss.c

    Description: Handle removal of __libc_lock_lock and similar symbols from libc
    Bug: http://bugzilla.padl.com/show_bug.cgi?id=445
    Bug-Debian: http://bugs.debian.org/727177
    Bug-Arch-Linux-ARM: https://github.com/archlinuxarm/PKGBUILDs/issues/296
    Bug-Gentoo: https://bugs.gentoo.org/show_bug.cgi?id=438692
    Author: Dennis Schridde <devurandom@gmx.net>
    
    a b static void (*__sigpipe_handler) (int) = 
    142142 */
    143143static ldap_session_t __session = { NULL, NULL, 0, LS_UNINITIALIZED };
    144144
    145 #if defined(HAVE_PTHREAD_ATFORK) || defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
     145#if defined(HAVE_PTHREAD_ATFORK) || defined(HAVE___LIBC_ONCE)
    146146static pthread_once_t __once = PTHREAD_ONCE_INIT;
    147147#endif
    148148
    static pthread_once_t __once = PTHREAD_O 
    150150static FILE *__debugfile;
    151151#endif /* LBER_OPT_LOG_PRINT_FILE */
    152152
    153 #ifndef HAVE_PTHREAD_ATFORK
     153#if !defined(HAVE_PTHREAD_ATFORK) || !defined(HAVE___LIBC_ONCE)
    154154/*
    155155 * Process ID that opened the session.
    156156 */
    static uid_t __euid = -1; 
    162162static int __ssl_initialized = 0;
    163163#endif /* HAVE_LDAPSSL_CLIENT_INIT */
    164164
    165 #if defined(HAVE_PTHREAD_ATFORK) || defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
     165#if defined(HAVE_PTHREAD_ATFORK) || defined(HAVE___LIBC_ONCE)
    166166/*
    167167 * Prepare for fork(); lock mutex.
    168168 */
    _nss_ldap_default_constr (nss_ldap_backe 
    514514}
    515515#endif /* HAVE_NSSWITCH_H */
    516516
    517 #if defined(HAVE_PTHREAD_ATFORK) || defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
     517#if defined(HAVE_PTHREAD_ATFORK) || defined(HAVE___LIBC_ONCE)
    518518static void
    519519do_atfork_prepare (void)
    520520{
    do_atfork_setup (void) 
    548548#ifdef HAVE_PTHREAD_ATFORK
    549549  (void) pthread_atfork (do_atfork_prepare, do_atfork_parent,
    550550                         do_atfork_child);
    551 #elif defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
     551#elif defined(HAVE___LIBC_ATFORK)
    552552  (void) __libc_atfork (do_atfork_prepare, do_atfork_parent, do_atfork_child);
    553553#endif
    554554
    static NSS_STATUS 
    11111111do_init (void)
    11121112{
    11131113  ldap_config_t *cfg;
    1114 #ifndef HAVE_PTHREAD_ATFORK
     1114#if !defined(HAVE_PTHREAD_ATFORK) || !defined(HAVE___LIBC_ONCE)
    11151115  pid_t pid;
    11161116#endif
    11171117  uid_t euid;
    do_init (void) 
    11281128    }
    11291129
    11301130#ifndef HAVE_PTHREAD_ATFORK
    1131 #if defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
     1131#if defined(HAVE___LIBC_ONCE)
    11321132  /*
    11331133   * This bogosity is necessary because Linux uses different
    11341134   * PIDs for different threads (like IRIX, which we don't
    do_init (void) 
    11601160    pid = -1;                   /* linked against libpthreads, don't care */
    11611161#else
    11621162  pid = getpid ();
    1163 #endif /* HAVE_LIBC_LOCK_H || HAVE_BITS_LIBC_LOCK_H */
     1163#endif /* HAVE___LIBC_ONCE */
    11641164#endif /* HAVE_PTHREAD_ATFORK */
    11651165
    11661166  euid = geteuid ();
    do_init (void) 
    11701170  syslog (LOG_AUTHPRIV | LOG_DEBUG,
    11711171          "nss_ldap: __session.ls_state=%d, __session.ls_conn=%p, __euid=%i, euid=%i",
    11721172          __session.ls_state, __session.ls_conn, __euid, euid);
    1173 #elif defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
     1173#elif defined(HAVE___LIBC_ONCE)
    11741174  syslog (LOG_AUTHPRIV | LOG_DEBUG,
    11751175          "nss_ldap: libpthreads=%s, __session.ls_state=%d, __session.ls_conn=%p, __pid=%i, pid=%i, __euid=%i, euid=%i",
    11761176          ((__pthread_once == NULL || __pthread_atfork == NULL) ? "FALSE" : "TRUE"),
    do_init (void) 
    11941194    }
    11951195  else
    11961196#ifndef HAVE_PTHREAD_ATFORK
    1197 #if defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
     1197#if defined(HAVE___LIBC_ONCE)
    11981198  if ((__pthread_once == NULL || __pthread_atfork == NULL) && __pid != pid)
    11991199#else
    12001200  if (__pid != pid)
    1201 #endif /* HAVE_LIBC_LOCK_H || HAVE_BITS_LIBC_LOCK_H */
     1201#endif /* HAVE___LIBC_ONCE */
    12021202    {
    12031203      do_close_no_unbind ();
    12041204    }
    do_init (void) 
    12591259      debug ("<== do_init (pthread_once failed)");
    12601260      return NSS_UNAVAIL;
    12611261    }
    1262 #elif defined(HAVE_PTHREAD_ATFORK) && ( defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H) )
     1262#elif defined(HAVE_PTHREAD_ATFORK) && defined(HAVE___LIBC_ONCE)
    12631263  __libc_once (__once, do_atfork_setup);
    1264 #elif defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
     1264#elif defined(HAVE___LIBC_ONCE)
    12651265  /*
    12661266   * Only install the pthread_atfork() handlers i
    12671267   * we are linked against libpthreads. Otherwise,
  • ldap-nss.h

    a b extern int __multi_threaded; 
    670670#define NSS_LDAP_LOCK(m)                mutex_lock(&m)
    671671#define NSS_LDAP_UNLOCK(m)              mutex_unlock(&m)
    672672#define NSS_LDAP_DEFINE_LOCK(m)         static mutex_t m = DEFAULTMUTEX
    673 #elif defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
     673#elif defined(HAVE___LIBC_LOCK_LOCK) && defined(HAVE___LIBC_LOCK_UNLOCK)
    674674#define NSS_LDAP_LOCK(m)                __libc_lock_lock(m)
    675675#define NSS_LDAP_UNLOCK(m)              __libc_lock_unlock(m)
    676676#define NSS_LDAP_DEFINE_LOCK(m)         static pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER
  • configure.in

    a b AC_CHECK_FUNCS(pthread_atfork) 
    234234AC_CHECK_FUNCS(pthread_once)
    235235AC_CHECK_FUNCS(ether_aton)
    236236AC_CHECK_FUNCS(ether_ntoa)
     237AC_CHECK_FUNCS(__libc_once __libc_atfork __libc_lock_lock __libc_lock_unlock)
    237238
    238239AC_MSG_CHECKING(for struct ether_addr)
    239240AC_TRY_COMPILE([#include <sys/types.h>
Note: See TracBrowser for help on using the repository browser.