Use _CALL_DL_FCT to call function from dynamically loaded object.
authordrepper <drepper>
Thu, 18 Jun 1998 16:50:55 +0000 (16:50 +0000)
committerdrepper <drepper>
Thu, 18 Jun 1998 16:50:55 +0000 (16:50 +0000)
nss/getXXbyYY_r.c
nss/getXXent_r.c
nss/nsswitch.h

index 2e5cc81..c8d6b08 100644 (file)
@@ -161,8 +161,8 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
 
   while (no_more == 0)
     {
-      status = (*fct) (ADD_VARIABLES, resbuf, buffer, buflen,
-                      &errno H_ERRNO_VAR);
+      status = _CALL_DL_FCT (fct, (ADD_VARIABLES, resbuf, buffer, buflen,
+                                  &errno H_ERRNO_VAR));
 
       /* The status is NSS_STATUS_TRYAGAIN and errno is ERANGE the
         provided buffer is too small.  In this case we should give
index 4906461..02a723d 100644 (file)
@@ -164,7 +164,7 @@ SETFUNC_NAME (STAYOPEN)
   while (! no_more)
     {
       int is_last_nip = nip == last_nip;
-      enum nss_status status = (*fct) (STAYOPEN_VAR);
+      enum nss_status status = _CALL_DL_FCT (fct, (STAYOPEN_VAR));
 
       no_more = __nss_next (&nip, SETFUNC_NAME_STRING, (void **) &fct,
                            status, 0);
@@ -201,7 +201,7 @@ ENDFUNC_NAME (void)
   while (! no_more)
     {
       /* Ignore status, we force check in __NSS_NEXT.  */
-      (void) (*fct) ();
+      _CALL_DL_FCT (fct, ());
 
       if (nip == last_nip)
        /* We have processed all services which were used.  */
@@ -245,7 +245,8 @@ INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer, size_t buflen,
     {
       int is_last_nip = nip == last_nip;
 
-      status = (*fct) (resbuf, buffer, buflen, &errno H_ERRNO_VAR);
+      status = _CALL_DL_FCT (fct,
+                            (resbuf, buffer, buflen, &errno H_ERRNO_VAR));
 
       /* The the status is NSS_STATUS_TRYAGAIN and errno is ERANGE the
         provided buffer is too small.  In this case we should give
@@ -276,7 +277,7 @@ INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer, size_t buflen,
                                      (void **) &sfct);
 
              if (! no_more)
-               status = (*sfct) (STAYOPEN_TMPVAR);
+               status = _CALL_DL_FCT (sfct, (STAYOPEN_TMPVAR));
              else
                status = NSS_STATUS_NOTFOUND;
            }
index 8ba0294..4129369 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -26,6 +26,7 @@
 #include <nss.h>
 #include <resolv.h>
 #include <search.h>
+#include <elf/ldsodefs.h>
 
 
 /* Actions performed after lookup finished.  */