This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Wed, Jul 31, 2002 at 01:26:15PM -0700, Ulrich Drepper wrote: > Roland McGrath wrote: > > I definitely like the typeof version. It would be nice to get rid of all > > those repeated prototypes, which are just typos waiting to happen. > > I haven't done real heavy cogitation to find anything wrong with this plan, > > or to think up anything it fails to cover. But it looks good to me. > > Yes, let's just give it a try. Here it is (I just did a few, some new ones, some converted, etc., tried to cover the various usages). I've verified that {libc|libm|ld}.so dynsym contains the same symbols and symbol types before and after the patch and of course the number of plt slots in libc.so went down. There is one problem though - due to a bug in gcc attribute visibility handling it works only with CVS gcc as of half an hour ago or the 3.2 backport of it if HAVE_VISIBILITY_ATTRIBUTE (otherwise it should work too). I'll add HAVE_BROKEN_VISIBILITY_ATTRIBUTE check tomorrow (attribute_hidden can be defined just if HAVE_VISIBILITY_ATTRIBUTE is defined, but hidden_proto can use it only if HAVE_BROKEN_VISIBILITY_ATTRIBUTE will not be defined). Shall I continue tomorrow (well, today europe time) with other symbols? 2002-08-02 Jakub Jelinek <jakub@redhat.com> * assert/assert.c (__assert_fail): Remove undef. Replace INTDEF with libc_hidden_def. * assert/__assert.c (__assert): Remove INTUSE. * elf/dl-minimal.c (__assert_fail): Replace INTDEF with libc_hidden_weak. * include/libc-symbols.h (hidden_proto, hidden_def, hidden_weak, libc_hidden_proto, libc_hidden_def, libc_hidden_weak, rtld_hidden_proto, rtld_hidden_def, rtld_hidden_weak, libm_hidden_proto, libm_hidden_def, libm_hidden_weak): Define. * include/assert.h (__assert_fail_internal): Remove. (__assert_fail): Add prototype. Add hidden_proto. * include/libc-internal.h (__libc_freeres): Add libc_hidden_proto. * include/wchar.h (__mbrtowc_internal, __mbrlen_internal): Remove. (__mbrtowc, __mbrlen): Use libc_hidden_proto. Remove macros. * include/string.h (__mempcpy): Add libc_hidden_proto. * include/fcntl.h (__open64, __libc_open, __libc_fcntl, __fcntl): Add libc_hidden_proto. Remove macros. (__open_internal, __fcntl_internal): Remove. * libio/iofdopen.c (_IO_fcntl): Remove INTUSE from __fcntl. * malloc/set-freeres.c (__libc_freeres): Add libc_hidden_def. * nss/nsswitch.h (__nss_database_lookup, __nss_next): Add libc_hiden_proto. * nss/nsswitch.c (__nss_database_lookup, __nss_next): Add libc_hidden_def. * sysdeps/generic/mempcpy.c (__mempcpy): Remove undef. Add libc_hidden_def. * sysdeps/generic/open64.c (__open64): Add libc_hidden_def. * sysdeps/generic/open.c (__open): Remove undef. Add libc_hidden_def. Remove INTDEF. * sysdeps/generic/fcntl.c (__fcntl): Remove undef. Add libc_hidden_def. * sysdeps/i386/i586/mempcpy.S (__mempcpy): Add libc_hidden_def. * sysdeps/i386/i686/mempcpy.S (__mempcpy): Likewise. * sysdeps/mach/hurd/fcntl.c (__libc_fcntl, __fcntl): Remove undef. (__fcntl): Remove INTDEF2. Add libc_hidden_weak. (__libc_fcntl): Add libc_hidden_def. * sysdeps/mach/hurd/open.c (__libc_open, __open): Remove undef. (__open): Remove INTDEF2. Add libc_hidden_weak. (__libc_open): Add libc_hidden_def. * sysdeps/posix/open64.c (__open64): Add libc_hidden_weak. * sysdeps/standalone/open.c (__open): Add libc_hidden_def. * sysdeps/unix/sysv/aix/fcntl.c (__libc_fcntl, __fcntl): Remove undef. Add libc_hidden_def. * sysdeps/unix/sysv/aix/open.c (__libc_open, __open): Remove undef. Add libc_hidden_def. * sysdeps/unix/sysv/linux/i386/fcntl.c (__libc_fcntl, __fcntl): Remove undef. (__fcntl): Remove INTDEF2. Add libc_hidden_weak. (__libc_fcntl): Add libc_hidden_def. * sysdeps/unix/sysv/linux/syscalls.list (__fcntl_internal): Remove. (__GI___fcntl, __GI___libc_fcntl): Add. * sysdeps/unix/syscalls.list (__GI___fcntl, __GI___libc_fcntl, __GI___open, __GI___libc_open): Add. * wcsmbs/mbrlen.c (__mbrlen): Remove undef. Replace INTDEF with libc_hidden_def. * wcsmbs/mbrtowc.c (__mbrtowc): Likewise. --- libc/assert/assert.c.jj 2002-07-29 15:14:49.000000000 +0200 +++ libc/assert/assert.c 2002-08-01 15:26:40.000000000 +0200 @@ -42,7 +42,6 @@ extern const char *__progname; # include FATAL_PREPARE_INCLUDE #endif -#undef __assert_fail void __assert_fail (const char *assertion, const char *file, unsigned int line, const char *function) @@ -82,4 +81,4 @@ __assert_fail (const char *assertion, co abort (); } -INTDEF(__assert_fail) +libc_hidden_def(__assert_fail) --- libc/assert/__assert.c.jj 2002-04-30 12:51:29.000000000 +0200 +++ libc/assert/__assert.c 2002-08-01 15:28:26.000000000 +0200 @@ -23,5 +23,5 @@ void __assert (const char *assertion, const char *file, int line) { - INTUSE(__assert_fail) (assertion, file, line, (const char *) 0); + __assert_fail (assertion, file, line, (const char *) 0); } --- libc/elf/dl-minimal.c.jj 2002-07-29 15:14:50.000000000 +0200 +++ libc/elf/dl-minimal.c 2002-08-01 15:41:39.000000000 +0200 @@ -209,7 +209,7 @@ Inconsistency detected by ld.so: %s: %u: assertion); } -INTDEF(__assert_fail) +rtld_hidden_weak(__assert_fail) #endif --- libc/include/libc-symbols.h.jj 2002-04-30 12:52:49.000000000 +0200 +++ libc/include/libc-symbols.h 2002-08-01 19:08:07.000000000 +0200 @@ -381,4 +381,154 @@ # define INTVARDEF2(name, newname) #endif +/* The following macros are used for PLT bypassing within libc.so + (and if needed other libraries similarly). + First of all, you need to have the function prototyped somewhere, + say in foo/foo.h: + + int foo (int __bar); + + If calls to foo within libc.so should always go to foo defined in libc.so, + then in include/foo.h you add: + + libc_hidden_proto (foo) + + line and after the foo function definition: + + int foo (int __bar) + { + return __bar; + } + libc_hidden_def (foo) + + or + + int foo (int __bar) + { + return __bar; + } + libc_hidden_weak (foo) + + If foo is normally just an alias (strong or weak) of some other function, + you should use the normal strong_alias first, then add libc_hidden_def + or libc_hidden_weak: + + int baz (int __bar) + { + return __bar; + } + strong_alias (baz, foo) + libc_hidden_weak (foo) + + If the function should be internal to multiple objects, say ld.so and + libc.so, the best way is to use: + + #if !defined NOT_IN_libc || defined IS_IN_rtld + hidden_proto (foo) + #endif + + in include/foo.h and the normal macros at all function definitions + depending on what DSO they belong to. */ + +#if defined SHARED && defined DO_VERSIONING +# ifndef __ASSEMBLER__ +# define hidden_proto(name) __hidden_proto (name, __GI_##name) +# define __hidden_proto(name, internal) \ + __typeof (name) internal; \ + __typeof (name) name __asm__ (__hidden_asmname (#internal)) \ + attribute_hidden; +# define __hidden_asmname(name) \ + __hidden_asmname1 (__USER_LABEL_PREFIX__, name) +# define __hidden_asmname1(prefix, name) __hidden_asmname2(prefix, name) +# define __hidden_asmname2(prefix, name) #prefix name +# ifdef HAVE_ASM_SET_DIRECTIVE +# define __hidden_def1(original, alias) \ + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ + .set C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) +# else +# ifdef HAVE_ASM_GLOBAL_DOT_NAME +# define __hidden_def1(original, alias) \ + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ + C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) ASM_LINE_SEP \ + ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ + C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) +# else +# define __hidden_def1(original, alias) \ + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ + C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) +# endif +# endif +# define __hidden_def2(...) #__VA_ARGS__ +# define __hidden_def3(...) __hidden_def2 (__VA_ARGS__) +# define hidden_def(name) \ + __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name))); +# ifdef HAVE_WEAK_SYMBOLS +# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE +# define __hidden_weak1(original, alias) \ + .weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) +# else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */ +# ifdef HAVE_ASM_GLOBAL_DOT_NAME +# define __hidden_weak1(original, alias) \ + .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \ + C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) ASM_LINE_SEP \ + ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ + C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) +# else +# define __hidden_weak1(original, alias) \ + .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \ + C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) +# endif +# endif +# define hidden_weak(name) \ + __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name))); +# else +# define hidden_weak(name) hidden_def (name) +# endif +# else +/* For assembly, we need to do the opposite of what we do in C: + in assembly gcc __REDIRECT stuff is not in place, so functions + are defined by its normal name and we need to create the + __GI_* alias to it, in C __REDIRECT causes the function definition + to use __GI_* name and we need to add alias to the real name. + hidden_proto and hidden_weak don't make sense for assembly. */ +# define hidden_def(name) strong_alias (name, __GI_##name) +# endif +#else +# ifndef __ASSEMBLY__ +# define hidden_proto(name) +# define hidden_weak(name) +# endif +# define hidden_def(name) +#endif + +#if !defined NOT_IN_libc +# define libc_hidden_proto(name) hidden_proto (name) +# define libc_hidden_def(name) hidden_def (name) +# define libc_hidden_weak(name) hidden_weak (name) +#else +# define libc_hidden_proto(name) +# define libc_hidden_def(name) +# define libc_hidden_weak(name) +#endif + +#if defined NOT_IN_libc && defined IS_IN_rtld +# define rtld_hidden_proto(name) hidden_proto (name) +# define rtld_hidden_def(name) hidden_def (name) +# define rtld_hidden_weak(name) hidden_weak (name) +#else +# define rtld_hidden_proto(name) +# define rtld_hidden_def(name) +# define rtld_hidden_weak(name) +#endif + +#if defined NOT_IN_libc && defined IS_IN_libm +# define libm_hidden_proto(name) hidden_proto (name) +# define libm_hidden_def(name) hidden_def (name) +# define libm_hidden_weak(name) hidden_weak (name) +#else +# define libm_hidden_proto(name) +# define libm_hidden_def(name) +# define libm_hidden_weak(name) +#endif + #endif /* libc-symbols.h */ --- libc/include/assert.h.jj 2002-07-29 15:14:50.000000000 +0200 +++ libc/include/assert.h 2002-08-01 18:25:41.000000000 +0200 @@ -1,10 +1,12 @@ #include <assert/assert.h> -extern void __assert_fail_internal (__const char *__assertion, - __const char *__file, - unsigned int __line, - __const char *__function) - __attribute__ ((__noreturn__)) attribute_hidden; -#if defined SHARED && !defined NOT_IN_libc -# define __assert_fail __assert_fail_internal +/* This prints an "Assertion failed" message and aborts. + In installed assert.h this is only conditionally declared, + so it has to be repeated here. */ +extern void __assert_fail (__const char *__assertion, __const char *__file, + unsigned int __line, __const char *__function) + __THROW __attribute__ ((__noreturn__)); + +#if !defined NOT_IN_libc || defined IS_IN_rtld +hidden_proto (__assert_fail) #endif --- libc/include/libc-internal.h.jj 2002-03-23 11:50:27.000000000 +0100 +++ libc/include/libc-internal.h 2002-08-01 15:44:51.000000000 +0200 @@ -25,6 +25,7 @@ extern hp_timing_t __get_clockfreq (void /* Free all allocated resources. */ extern void __libc_freeres (void); +libc_hidden_proto (__libc_freeres) /* Define and initialize `__progname' et. al. */ extern void __init_misc (int, char **, char **); --- libc/include/wchar.h.jj 2002-04-30 12:52:49.000000000 +0200 +++ libc/include/wchar.h 2002-08-01 15:50:52.000000000 +0200 @@ -18,12 +18,8 @@ extern int __mbsinit (__const __mbstate_ extern size_t __mbrtowc (wchar_t *__restrict __pwc, __const char *__restrict __s, size_t __n, __mbstate_t *__restrict __p); -extern size_t __mbrtowc_internal (wchar_t *__restrict __pwc, - __const char *__restrict __s, size_t __n, - __mbstate_t *__restrict __p) - attribute_hidden; -extern size_t __mbrlen_internal (__const char *__restrict __s, size_t __n, - mbstate_t *__restrict __ps) attribute_hidden; +libc_hidden_proto (__mbrtowc) +libc_hidden_proto (__mbrlen) extern size_t __wcrtomb (char *__restrict __s, wchar_t __wc, __mbstate_t *__restrict __ps); extern size_t __mbsrtowcs (wchar_t *__restrict __dst, @@ -68,10 +64,5 @@ extern int __vfwprintf (__FILE *__restri __gnuc_va_list __arg) /* __attribute__ ((__format__ (__wprintf__, 3, 0))) */; -# ifndef NOT_IN_libc -# define __mbrlen(s, n, ps) INTUSE(__mbrlen) (s, n, ps) -# define __mbrtowc(pwc, s, n, p) INTUSE(__mbrtowc) (pwc, s, n, p) -# endif - # endif #endif --- libc/include/string.h.jj 2001-09-12 09:56:44.000000000 +0200 +++ libc/include/string.h 2002-08-01 15:59:50.000000000 +0200 @@ -60,3 +60,5 @@ extern char *__strerror_r (int __errnum, (char *) memcpy (__new, __old, __len); \ })) #endif + +libc_hidden_proto (__mempcpy) --- libc/include/fcntl.h.jj 2002-04-30 12:52:49.000000000 +0200 +++ libc/include/fcntl.h 2002-08-01 18:11:11.000000000 +0200 @@ -3,23 +3,15 @@ /* Now define the internal interfaces. */ extern int __open64 (__const char *__file, int __oflag, ...); +libc_hidden_proto (__open64) extern int __libc_open64 (const char *file, int oflag, ...); extern int __libc_open (const char *file, int oflag, ...); +libc_hidden_proto (__libc_open) extern int __libc_fcntl (int fd, int cmd, ...); +libc_hidden_proto (__libc_fcntl) extern int __open (__const char *__file, int __oflag, ...); -extern int __open_internal (__const char *__file, int __oflag, ...) - attribute_hidden; +libc_hidden_proto (__open) extern int __fcntl (int __fd, int __cmd, ...); -extern int __fcntl_internal (int __fd, int __cmd, ...) attribute_hidden; - -#ifndef NOT_IN_libc -# define __fcntl(fd, cmd, args...) INTUSE(__fcntl) (fd, cmd, ##args) -# define __open(file, oflag, args...) INTUSE(__open) (file, oflag, ##args) -# ifdef SHARED -# define __libc_fcntl(fd, cmd, args...) __fcntl_internal (fd, cmd, ##args) -# define __libc_open(file, oflag, args...) \ - __open_internal (file, oflag, ##args) -# endif -#endif +libc_hidden_proto (__fcntl) #endif --- libc/libio/iofdopen.c.jj 2002-04-30 12:52:49.000000000 +0200 +++ libc/libio/iofdopen.c 2002-08-01 18:03:29.000000000 +0200 @@ -37,7 +37,7 @@ #ifndef _IO_fcntl #ifdef _LIBC -#define _IO_fcntl INTUSE(__fcntl) +#define _IO_fcntl __fcntl #else #define _IO_fcntl fcntl #endif --- libc/malloc/set-freeres.c.jj 2001-08-23 18:48:21.000000000 +0200 +++ libc/malloc/set-freeres.c 2002-08-01 15:45:22.000000000 +0200 @@ -43,3 +43,4 @@ __libc_freeres (void) RUN_HOOK (__libc_subfreeres, ()); } } +libc_hidden_def (__libc_freeres) --- libc/nss/nsswitch.h.jj 2002-03-23 11:50:55.000000000 +0100 +++ libc/nss/nsswitch.h 2002-08-01 17:47:05.000000000 +0200 @@ -103,7 +103,7 @@ typedef struct name_database than one function can use the database. */ int __nss_database_lookup (const char *database, const char *alternative_name, const char *defconfig, service_user **ni); - +libc_hidden_proto (__nss_database_lookup) /* Put first function with name FCT_NAME for SERVICE in FCTP. The position is remembered in NI. The function returns a value < 0 if @@ -125,6 +125,7 @@ int __nss_lookup (service_user **ni, con natural end. */ int __nss_next (service_user **ni, const char *fct_name, void **fctp, int status, int all_values); +libc_hidden_proto (__nss_next) /* Search for the service described in NI for a function named FCT_NAME and return a pointer to this function if successful. */ --- libc/nss/nsswitch.c.jj 2002-03-23 11:50:55.000000000 +0100 +++ libc/nss/nsswitch.c 2002-08-01 17:47:51.000000000 +0200 @@ -136,6 +136,7 @@ __nss_database_lookup (const char *datab return 0; } +libc_hidden_def (__nss_database_lookup) /* -1 == not found @@ -199,6 +200,7 @@ __nss_next (service_user **ni, const cha return *fctp != NULL ? 0 : -1; } +libc_hidden_def (__nss_next) int --- libc/sysdeps/generic/mempcpy.c.jj 2001-08-23 18:49:33.000000000 +0200 +++ libc/sysdeps/generic/mempcpy.c 2002-08-01 16:01:11.000000000 +0200 @@ -25,7 +25,6 @@ #include <pagecopy.h> #undef mempcpy -#undef __mempcpy void * __mempcpy (dstpp, srcpp, len) @@ -64,4 +63,5 @@ __mempcpy (dstpp, srcpp, len) return (void *) dstp; } +libc_hidden_def (__mempcpy) weak_alias (__mempcpy, mempcpy) --- libc/sysdeps/generic/open64.c.jj 2001-08-23 18:49:33.000000000 +0200 +++ libc/sysdeps/generic/open64.c 2002-08-01 17:56:47.000000000 +0200 @@ -49,6 +49,7 @@ __libc_open64 (file, oflag) return -1; } strong_alias (__libc_open64, __open64) +libc_hidden_def (__open64) weak_alias (__libc_open64, BP_SYM (open64)) stub_warning (open64) --- libc/sysdeps/generic/open.c.jj 2002-04-30 12:53:42.000000000 +0200 +++ libc/sysdeps/generic/open.c 2002-08-01 17:57:32.000000000 +0200 @@ -21,8 +21,6 @@ #include <stdarg.h> #include <stddef.h> -#undef __open - /* Open FILE with access OFLAG. If OFLAG includes O_CREAT, a third argument is the file protection. */ int @@ -49,8 +47,8 @@ __open (file, oflag) __set_errno (ENOSYS); return -1; } +libc_hidden_def (__open) stub_warning (open) -INTDEF(__open) weak_alias (__open, open) #include <stub-tag.h> --- libc/sysdeps/generic/fcntl.c.jj 2002-04-30 12:53:42.000000000 +0200 +++ libc/sysdeps/generic/fcntl.c 2002-08-01 17:57:48.000000000 +0200 @@ -19,8 +19,6 @@ #include <errno.h> #include <fcntl.h> -#undef __fcntl - /* Perform file control operations on FD. */ int __fcntl (fd, cmd) @@ -36,6 +34,7 @@ __fcntl (fd, cmd) __set_errno (ENOSYS); return -1; } +libc_hidden_def (__fcntl) stub_warning (fcntl) weak_alias (__fcntl, fcntl) --- libc/sysdeps/i386/i586/mempcpy.S.jj 2000-07-27 15:59:51.000000000 +0200 +++ libc/sysdeps/i386/i586/mempcpy.S 2002-08-01 16:37:13.000000000 +0200 @@ -1,4 +1,5 @@ #define memcpy __mempcpy #include <sysdeps/i386/i586/memcpy.S> +libc_hidden_def (BP_SYM (__mempcpy)) weak_alias (BP_SYM (__mempcpy), BP_SYM (mempcpy)) --- libc/sysdeps/i386/i686/mempcpy.S.jj 2001-08-23 18:49:52.000000000 +0200 +++ libc/sysdeps/i386/i686/mempcpy.S 2002-08-01 16:37:54.000000000 +0200 @@ -57,4 +57,5 @@ ENTRY (BP_SYM (__mempcpy)) LEAVE RET_PTR END (BP_SYM (__mempcpy)) +libc_hidden_def (BP_SYM (__mempcpy)) weak_alias (BP_SYM (__mempcpy), BP_SYM (mempcpy)) --- libc/sysdeps/mach/hurd/fcntl.c.jj 2002-06-05 10:27:45.000000000 +0200 +++ libc/sysdeps/mach/hurd/fcntl.c 2002-08-01 18:11:31.000000000 +0200 @@ -23,10 +23,6 @@ #include <stdarg.h> #include <sys/file.h> /* XXX for LOCK_* */ -#undef __libc_fcntl -#undef __fcntl - - /* Perform file control operations on FD. */ int __libc_fcntl (int fd, int cmd, ...) @@ -200,7 +196,7 @@ __libc_fcntl (int fd, int cmd, ...) return result; } - -INTDEF2 (__libc_fcntl, __fcntl) +libc_hidden_def (__libc_fcntl) weak_alias (__libc_fcntl, __fcntl) +libc_hidden_weak (__fcntl) weak_alias (__libc_fcntl, fcntl) --- libc/sysdeps/mach/hurd/open.c.jj 2002-04-30 12:55:01.000000000 +0200 +++ libc/sysdeps/mach/hurd/open.c 2002-08-01 18:12:47.000000000 +0200 @@ -22,9 +22,6 @@ #include <hurd.h> #include <hurd/fd.h> -#undef __libc_open -#undef __open - /* Open FILE with access OFLAG. If OFLAG includes O_CREAT, a third argument is the file protection. */ int @@ -50,6 +47,7 @@ __libc_open (const char *file, int oflag return _hurd_intern_fd (port, oflag, 1); } -INTDEF2(__libc_open, __open) +libc_hidden_def (__libc_open) weak_alias (__libc_open, __open) +libc_hidden_weak (__open) weak_alias (__libc_open, open) --- libc/sysdeps/posix/open64.c.jj 2001-08-23 18:50:11.000000000 +0200 +++ libc/sysdeps/posix/open64.c 2002-08-01 18:00:52.000000000 +0200 @@ -38,4 +38,5 @@ __libc_open64 (const char *file, int ofl return __libc_open (file, oflag | O_LARGEFILE, mode); } weak_alias (__libc_open64, BP_SYM (__open64)) +libc_hidden_weak (BP_SYM (__open64)) weak_alias (__libc_open64, BP_SYM (open64)) --- libc/sysdeps/standalone/open.c.jj 2001-08-23 18:50:27.000000000 +0200 +++ libc/sysdeps/standalone/open.c 2002-08-01 18:20:31.000000000 +0200 @@ -82,6 +82,7 @@ __open (file, oflag) return newfd; } +libc_hidden_def (__open) /* Initialization Code for Console I/O */ --- libc/sysdeps/unix/sysv/aix/fcntl.c.jj 2002-04-30 12:56:36.000000000 +0200 +++ libc/sysdeps/unix/sysv/aix/fcntl.c 2002-08-01 18:13:52.000000000 +0200 @@ -19,9 +19,6 @@ #include <fcntl.h> #include <stdarg.h> -#undef __libc_fcntl -#undef __fcntl - extern int kfcntl (int fdes, int cmd, unsigned long int arg); int @@ -40,5 +37,7 @@ __fcntl (int fdes, int cmd, ...) return res; } +libc_hidden_def (__fcntl) strong_alias (__fcntl, fcntl) strong_alias (__fcntl, __libc_fcntl) +libc_hidden_def (__libc_fcntl) --- libc/sysdeps/unix/sysv/aix/open.c.jj 2002-04-30 12:56:37.000000000 +0200 +++ libc/sysdeps/unix/sysv/aix/open.c 2002-08-01 18:14:42.000000000 +0200 @@ -20,9 +20,6 @@ #include <stdarg.h> #include <unistd.h> -#undef __libc_open -#undef __open - int __open (const char *file, int oflag, ...) { @@ -38,5 +35,6 @@ __open (const char *file, int oflag, ... return open (file, oflag, mode); } +libc_hidden_def (__open) strong_alias (__open, __libc_open) -INTDEF(__open) +libc_hidden_def (__libc_open) --- libc/sysdeps/unix/sysv/linux/i386/fcntl.c.jj 2002-04-25 22:02:23.000000000 +0200 +++ libc/sysdeps/unix/sysv/linux/i386/fcntl.c 2002-08-01 18:15:34.000000000 +0200 @@ -25,9 +25,6 @@ #include <sys/syscall.h> #include "../kernel-features.h" -#undef __libc_fcntl -#undef __fcntl - extern int __syscall_fcntl (int __fd, int __cmd, ...); #ifdef __NR_fcntl64 extern int __syscall_fcntl64 (int __fd, int __cmd, ...); @@ -133,7 +130,8 @@ __libc_fcntl (int fd, int cmd, ...) return -1; #endif /* __ASSUME_FCNTL64 */ } -INTDEF2(__libc_fcntl, __fcntl); +libc_hidden_def (__libc_fcntl) weak_alias (__libc_fcntl, __fcntl) +libc_hidden_weak (__fcntl) weak_alias (__libc_fcntl, fcntl) --- libc/sysdeps/unix/sysv/linux/syscalls.list.jj 2002-07-25 14:59:41.000000000 +0200 +++ libc/sysdeps/unix/sysv/linux/syscalls.list 2002-08-01 18:18:41.000000000 +0200 @@ -63,4 +63,4 @@ uselib EXTRA uselib i:s uselib wait4 - wait4 i:iWiP __wait4 wait4 chown - chown i:sii __chown_internal __chown chown -fcntl - fcntl i:iiF __libc_fcntl __fcntl_internal __fcntl fcntl +fcntl - fcntl i:iiF __libc_fcntl __GI___libc_fcntl __fcntl __GI___fcntl fcntl --- libc/sysdeps/unix/syscalls.list.jj 2002-04-30 12:56:18.000000000 +0200 +++ libc/sysdeps/unix/syscalls.list 2002-08-01 18:17:36.000000000 +0200 @@ -10,7 +10,7 @@ close - close i:i __libc_close __close dup - dup i:i __dup dup dup2 - dup2 i:ii __dup2 dup2 __dup2_internal fchdir - fchdir i:i __fchdir fchdir -fcntl - fcntl i:iiF __libc_fcntl __fcntl fcntl +fcntl - fcntl i:iiF __libc_fcntl __GI___libc_fcntl __fcntl __GI___fcntl fcntl fstatfs - fstatfs i:ip __fstatfs fstatfs fsync - fsync i:i __libc_fsync fsync getdomain - getdomainname i:si getdomainname @@ -26,7 +26,7 @@ kill - kill i:ii __kill kill link - link i:ss __link link lseek - lseek i:iii __libc_lseek __lseek lseek mkdir - mkdir i:si __mkdir mkdir -open - open i:siv __libc_open __open open __open_internal +open - open i:siv __libc_open __GI___libc_open __open open __GI___open profil - profil i:piii profil ptrace - ptrace i:iiii ptrace read - read i:ibn __libc_read __read read --- libc/wcsmbs/mbrlen.c.jj 2002-04-30 12:57:38.000000000 +0200 +++ libc/wcsmbs/mbrlen.c 2002-08-01 15:54:45.000000000 +0200 @@ -19,8 +19,6 @@ #include <wchar.h> -#undef __mbrlen - /* The mbrlen function has an internal shift state which gets used if the PS parameter is NULL. */ static mbstate_t internal; @@ -34,5 +32,5 @@ __mbrlen (s, n, ps) { return __mbrtowc (NULL, s, n, ps ?: &internal); } -INTDEF(__mbrlen) +libc_hidden_def (__mbrlen) weak_alias (__mbrlen, mbrlen) --- libc/wcsmbs/mbrtowc.c.jj 2002-04-30 12:57:39.000000000 +0200 +++ libc/wcsmbs/mbrtowc.c 2002-08-01 15:55:52.000000000 +0200 @@ -29,8 +29,6 @@ # define EILSEQ EINVAL #endif -#undef __mbrtowc - /* This is the private state used if PS is NULL. */ static mbstate_t state; @@ -106,5 +104,5 @@ __mbrtowc (wchar_t *pwc, const char *s, return result; } -INTDEF(__mbrtowc) +libc_hidden_def (__mbrtowc) weak_alias (__mbrtowc, mbrtowc) Jakub
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |