aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--include/libc-symbols.h6
-rw-r--r--include/set-hooks.h12
3 files changed, 13 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 2fd62afb90..9b5e90da9b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -27,6 +27,10 @@
_IO_file_attach.
* libio/iovdprintf.c (_IO_vdprintf): Likewise.
+ * include/libc-symbols.h (symbol_set_declare): Revert 2000-06-26 mods.
+ * include/set-hooks.h (RUN_HOOK): Revert 2000-06-26 mods. Qualify
+ ptr as __unbouned.
+
2000-07-17 Bruno Haible <haible@clisp.cons.org>
* iconv/gconv_open.c (__gconv_open): Initialize the __data
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index 30a27c803b..147dca3542 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -242,8 +242,8 @@
/* Declare SET for use in this module, if defined in another module. */
# define symbol_set_declare(set) \
- extern void (*const __start_##set) (void) __attribute__ ((__weak__)); \
- extern void (*const __stop_##set) (void) __attribute__ ((__weak__)); \
+ extern void *const __start_##set __attribute__ ((__weak__)); \
+ extern void *const __stop_##set __attribute__ ((__weak__)); \
weak_extern (__start_##set) weak_extern (__stop_##set)
/* Return a pointer (void *const *) to the first element of SET. */
@@ -261,7 +261,7 @@
asm(".stabs \"" __SYMBOL_PREFIX #set "\",25,0,0," __SYMBOL_PREFIX #symbol)
# define bss_set_element(set, symbol) ?error Must use initialized data.
# define symbol_set_define(set) void *const (set)[1];
-# define symbol_set_declare(set) extern void (*const (set)[1]) (void);
+# define symbol_set_declare(set) extern void *const (set)[1];
# define symbol_set_first_element(set) &(set)[1]
# define symbol_set_end_p(set, ptr) (*(ptr) == 0)
diff --git a/include/set-hooks.h b/include/set-hooks.h
index f4d7246567..709f4c0a61 100644
--- a/include/set-hooks.h
+++ b/include/set-hooks.h
@@ -40,12 +40,12 @@
/* Run all the functions hooked on the set called NAME.
Each function is called like this: `function ARGS'. */
-# define RUN_HOOK(NAME, ARGS) \
-do { \
- void (*const *ptr) (void); \
- for (ptr = symbol_set_first_element (NAME); \
- ! symbol_set_end_p (NAME, ptr); ++ptr) \
- (*(__##NAME##_hook_function_t *) *ptr) ARGS; \
+# define RUN_HOOK(NAME, ARGS) \
+do { \
+ void *const *__unbounded ptr; \
+ for (ptr = symbol_set_first_element (NAME); \
+ ! symbol_set_end_p (NAME, ptr); ++ptr) \
+ (*(__##NAME##_hook_function_t *) *ptr) ARGS; \
} while (0)
/* Define a hook variable with NAME and PROTO, and a function called RUNNER