diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-06-18 16:51:12 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-06-18 16:51:12 +0000 |
commit | 5ad49c070734c57f35cfe045572fb22158870c78 (patch) | |
tree | d17a62167c0996bbe744522fcb819446817cdc04 /iconv | |
parent | Update. (diff) | |
download | glibc-5ad49c070734c57f35cfe045572fb22158870c78.tar.gz glibc-5ad49c070734c57f35cfe045572fb22158870c78.tar.bz2 glibc-5ad49c070734c57f35cfe045572fb22158870c78.zip |
Update.
1998-06-18 16:40 Ulrich Drepper <drepper@cygnus.com>
* libc.map: Add _dl_profile_map, _dl_profile_output, _dl_start_profile,
_dl_mcount, _dl_mcount_wrapper.
* elf/Makefile (routines): Add dl-profstub.
* elf/dl-profstub.c: New file.
* elf/dl-support.c: Don't define _dl_profile_map.
* elf/rtld.c: Likewise.
* elf/dlfcn.h: Define DL_CALL_FCT macro.
* elf/ldsodefs.h: Declare _dl_profile_output, _dl_mcount_wrapper.
Define _CALL_DL_FCT.
* iconv/gconv.c: Use _CALL_DL_FCT to call function from dynamically
loaded object.
* iconv/gconv_db.c: Likewise.
* iconv/skeleton.c: Likewise.
* nss/getXXbyYY_r.c: Likewise.
* nss/getXXent_r.c: Likewise.
* nss/nsswitch.c: Likewise.
Diffstat (limited to 'iconv')
-rw-r--r-- | iconv/gconv.c | 9 | ||||
-rw-r--r-- | iconv/gconv_db.c | 7 | ||||
-rw-r--r-- | iconv/skeleton.c | 8 |
3 files changed, 15 insertions, 9 deletions
diff --git a/iconv/gconv.c b/iconv/gconv.c index 24dc21e2c2..9484fc8881 100644 --- a/iconv/gconv.c +++ b/iconv/gconv.c @@ -22,6 +22,7 @@ #include <assert.h> #include <gconv.h> #include <sys/param.h> +#include <elf/ldsodefs.h> int @@ -40,7 +41,8 @@ __gconv (gconv_t cd, const char **inbuf, const char *inbufend, char **outbuf, if (inbuf == NULL || *inbuf == NULL) /* We just flush. */ - result = (*cd->steps->fct) (cd->steps, cd->data, NULL, NULL, converted, 1); + result = _CALL_DL_FCT (cd->steps->fct, + (cd->steps, cd->data, NULL, NULL, converted, 1)); else { const char *last_start; @@ -52,8 +54,9 @@ __gconv (gconv_t cd, const char **inbuf, const char *inbufend, char **outbuf, do { last_start = *inbuf; - result = (*cd->steps->fct) (cd->steps, cd->data, inbuf, inbufend, - converted, 0); + result = _CALL_DL_FCT (cd->steps->fct, + (cd->steps, cd->data, inbuf, inbufend, + converted, 0)); } while (result == GCONV_EMPTY_INPUT && last_start != *inbuf && *inbuf + cd->steps->min_needed_from <= inbufend); diff --git a/iconv/gconv_db.c b/iconv/gconv_db.c index b98cc8f4f2..2c66249cc5 100644 --- a/iconv/gconv_db.c +++ b/iconv/gconv_db.c @@ -22,6 +22,7 @@ #include <stdlib.h> #include <string.h> #include <bits/libc-lock.h> +#include <elf/ldsodefs.h> #include <gconv_int.h> @@ -154,7 +155,7 @@ free_derivation (void *p) for (cnt = 0; cnt < deriv->nsteps; ++cnt) if (deriv->steps[cnt].end_fct) - (*deriv->steps[cnt].end_fct) (&deriv->steps[cnt]); + _CALL_DL_FCT (deriv->steps[cnt].end_fct, (&deriv->steps[cnt])); free ((struct gconv_step *) deriv->steps); free (deriv); @@ -220,7 +221,7 @@ gen_steps (struct derivation_step *best, const char *toset, /* Call the init function. */ if (result[step_cnt].init_fct != NULL) - (*result[step_cnt].init_fct) (&result[step_cnt]); + _CALL_DL_FCT (result[step_cnt].init_fct, (&result[step_cnt])); current = current->last; } @@ -231,7 +232,7 @@ gen_steps (struct derivation_step *best, const char *toset, while (++step_cnt < *nsteps) { if (result[step_cnt].end_fct != NULL) - (*result[step_cnt].end_fct) (&result[step_cnt]); + _CALL_DL_FCT (result[step_cnt].end_fct, (&result[step_cnt])); #ifndef STATIC_GCONV __gconv_release_shlib (result[step_cnt].shlib_handle); #endif diff --git a/iconv/skeleton.c b/iconv/skeleton.c index 418247f769..19e737ac3e 100644 --- a/iconv/skeleton.c +++ b/iconv/skeleton.c @@ -82,6 +82,7 @@ #define __need_size_t #define __need_NULL #include <stddef.h> +#include <elf/ldsodefs.h> /* The direction objects. */ @@ -218,7 +219,8 @@ FUNCTION_NAME (struct gconv_step *step, struct gconv_step_data *data, if (status == GCONV_OK) #endif /* Give the modules below the same chance. */ - status = (*fct) (next_step, next_data, NULL, NULL, written, 1); + status = _CALL_DL_FCT (fct, (next_step, next_data, NULL, NULL, + written, 1)); } } else @@ -284,8 +286,8 @@ FUNCTION_NAME (struct gconv_step *step, struct gconv_step_data *data, const char *outerr = data->outbuf; int result; - result = (*fct) (next_step, next_data, &outerr, outbuf, - written, 0); + result = _CALL_DL_FCT (fct, (next_step, next_data, &outerr, + outbuf, written, 0)); if (result != GCONV_EMPTY_INPUT) { |