mirror of
https://sourceware.org/git/glibc.git
synced 2025-09-02 16:01:20 +03:00
* 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. * 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.
This commit is contained in:
@@ -27,6 +27,10 @@
|
|||||||
_IO_file_attach.
|
_IO_file_attach.
|
||||||
* libio/iovdprintf.c (_IO_vdprintf): Likewise.
|
* 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>
|
2000-07-17 Bruno Haible <haible@clisp.cons.org>
|
||||||
|
|
||||||
* iconv/gconv_open.c (__gconv_open): Initialize the __data
|
* iconv/gconv_open.c (__gconv_open): Initialize the __data
|
||||||
|
@@ -242,8 +242,8 @@
|
|||||||
|
|
||||||
/* Declare SET for use in this module, if defined in another module. */
|
/* Declare SET for use in this module, if defined in another module. */
|
||||||
# define symbol_set_declare(set) \
|
# define symbol_set_declare(set) \
|
||||||
extern void (*const __start_##set) (void) __attribute__ ((__weak__)); \
|
extern void *const __start_##set __attribute__ ((__weak__)); \
|
||||||
extern void (*const __stop_##set) (void) __attribute__ ((__weak__)); \
|
extern void *const __stop_##set __attribute__ ((__weak__)); \
|
||||||
weak_extern (__start_##set) weak_extern (__stop_##set)
|
weak_extern (__start_##set) weak_extern (__stop_##set)
|
||||||
|
|
||||||
/* Return a pointer (void *const *) to the first element of 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)
|
asm(".stabs \"" __SYMBOL_PREFIX #set "\",25,0,0," __SYMBOL_PREFIX #symbol)
|
||||||
# define bss_set_element(set, symbol) ?error Must use initialized data.
|
# define bss_set_element(set, symbol) ?error Must use initialized data.
|
||||||
# define symbol_set_define(set) void *const (set)[1];
|
# 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_first_element(set) &(set)[1]
|
||||||
# define symbol_set_end_p(set, ptr) (*(ptr) == 0)
|
# define symbol_set_end_p(set, ptr) (*(ptr) == 0)
|
||||||
|
@@ -40,12 +40,12 @@
|
|||||||
/* Run all the functions hooked on the set called NAME.
|
/* Run all the functions hooked on the set called NAME.
|
||||||
Each function is called like this: `function ARGS'. */
|
Each function is called like this: `function ARGS'. */
|
||||||
|
|
||||||
# define RUN_HOOK(NAME, ARGS) \
|
# define RUN_HOOK(NAME, ARGS) \
|
||||||
do { \
|
do { \
|
||||||
void (*const *ptr) (void); \
|
void *const *__unbounded ptr; \
|
||||||
for (ptr = symbol_set_first_element (NAME); \
|
for (ptr = symbol_set_first_element (NAME); \
|
||||||
! symbol_set_end_p (NAME, ptr); ++ptr) \
|
! symbol_set_end_p (NAME, ptr); ++ptr) \
|
||||||
(*(__##NAME##_hook_function_t *) *ptr) ARGS; \
|
(*(__##NAME##_hook_function_t *) *ptr) ARGS; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
/* Define a hook variable with NAME and PROTO, and a function called RUNNER
|
/* Define a hook variable with NAME and PROTO, and a function called RUNNER
|
||||||
|
Reference in New Issue
Block a user