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] |