1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

* include/libc-symbols.h (hidden_weak): Define it for [__ASSEMBLER__].

* sysdeps/unix/make-syscalls.sh: Generate libc_hidden_def or
	libc_hidden_weak for every system call symbol defined.

	* include/time.h: Use libc_hidden_proto for time, asctime, mktime,
	timelocal, localtime, strftime.
	* time/asctime.c: Add libc_hidden_def.
	* time/mktime.c: Likewise.
	* time/localtime.c: Likewise.
	* time/strftime.c: Likewise.
	* time/strptime.c: Likewise.
	* sysdeps/generic/time.c: Likewise.
	* sysdeps/unix/time.c: Likewise.
	* sysdeps/unix/sysv/i386/time.S: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/time.S: Likewise.

	* include/arpa/inet.h: Use libc_hidden_proto for inet_ntop, inet_pton.
	inet_makeaddr, inet_netof, inet_addr, __inet_addr.
	* resolv/inet_ntop.c: Likewise.
	* resolv/inet_pton.c: Likewise.
	* inet/inet_mkadr.c: Add libc_hidden_def.
	* inet/inet_netof.c: Likewise.
	* resolv/inet_addr.c: Likewise.

	* include/libc-symbols.h: Remove `defined HAVE_BROKEN_ALIAS_ATTRIBUTE'
	clauses from conditionals for now.  Will have to be fixed later
	for older compilers.
This commit is contained in:
Roland McGrath
2002-08-03 12:09:37 +00:00
parent bc13934719
commit c5598d4721
19 changed files with 91 additions and 21 deletions

View File

@ -1,5 +1,34 @@
2002-08-03 Roland McGrath <roland@redhat.com> 2002-08-03 Roland McGrath <roland@redhat.com>
* include/libc-symbols.h (hidden_weak): Define it for [__ASSEMBLER__].
* sysdeps/unix/make-syscalls.sh: Generate libc_hidden_def or
libc_hidden_weak for every system call symbol defined.
* include/time.h: Use libc_hidden_proto for time, asctime, mktime,
timelocal, localtime, strftime.
* time/asctime.c: Add libc_hidden_def.
* time/mktime.c: Likewise.
* time/localtime.c: Likewise.
* time/strftime.c: Likewise.
* time/strptime.c: Likewise.
* sysdeps/generic/time.c: Likewise.
* sysdeps/unix/time.c: Likewise.
* sysdeps/unix/sysv/i386/time.S: Likewise.
* sysdeps/unix/sysv/linux/x86_64/time.S: Likewise.
* include/arpa/inet.h: Use libc_hidden_proto for inet_ntop, inet_pton.
inet_makeaddr, inet_netof, inet_addr, __inet_addr.
* resolv/inet_ntop.c: Likewise.
* resolv/inet_pton.c: Likewise.
* inet/inet_mkadr.c: Add libc_hidden_def.
* inet/inet_netof.c: Likewise.
* resolv/inet_addr.c: Likewise.
* include/libc-symbols.h: Remove `defined HAVE_BROKEN_ALIAS_ATTRIBUTE'
clauses from conditionals for now. Will have to be fixed later
for older compilers.
* sysdeps/generic/mempcpy.c (__mempcpy): #undef it before defn. * sysdeps/generic/mempcpy.c (__mempcpy): #undef it before defn.
2002-08-02 Ulrich Drepper <drepper@redhat.com> 2002-08-02 Ulrich Drepper <drepper@redhat.com>

View File

@ -1,3 +1,10 @@
#include <inet/arpa/inet.h> #include <inet/arpa/inet.h>
extern in_addr_t __inet_aton (__const char *__cp, struct in_addr *__inp); extern in_addr_t __inet_aton (__const char *__cp, struct in_addr *__inp);
libc_hidden_proto (__inet_aton)
libc_hidden_proto (inet_aton)
libc_hidden_proto (inet_ntop)
libc_hidden_proto (inet_pton)
libc_hidden_proto (inet_makeaddr)
libc_hidden_proto (inet_netof)

View File

@ -440,8 +440,7 @@
versioned_symbol (libc, __real_foo, foo, GLIBC_2_1); versioned_symbol (libc, __real_foo, foo, GLIBC_2_1);
libc_hidden_ver (__real_foo, foo) */ libc_hidden_ver (__real_foo, foo) */
#if defined SHARED && defined DO_VERSIONING \ #if defined SHARED && defined DO_VERSIONING
&& defined HAVE_BROKEN_ALIAS_ATTRIBUTE
# ifndef __ASSEMBLER__ # ifndef __ASSEMBLER__
# ifdef HAVE_BROKEN_VISIBILITY_ATTRIBUTE # ifdef HAVE_BROKEN_VISIBILITY_ATTRIBUTE
# define __hidden_proto_hiddenattr # define __hidden_proto_hiddenattr
@ -514,6 +513,7 @@
to use __GI_* name and we need to add alias to the real name. 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. */ hidden_proto and hidden_weak don't make sense for assembly. */
# define hidden_def(name) strong_alias (name, __GI_##name) # define hidden_def(name) strong_alias (name, __GI_##name)
# define hidden_weak(name) weak_alias (name, __GI_##name)
# define hidden_ver(local, name) strong_alias (local, __GI_##name) # define hidden_ver(local, name) strong_alias (local, __GI_##name)
# endif # endif
#else #else
@ -525,7 +525,7 @@
# define hidden_ver(local, name) # define hidden_ver(local, name)
#endif #endif
#if !defined NOT_IN_libc && !defined HAVE_BROKEN_ALIAS_ATTRIBUTE #if !defined NOT_IN_libc
# define libc_hidden_proto(name) hidden_proto (name) # define libc_hidden_proto(name) hidden_proto (name)
# define libc_hidden_def(name) hidden_def (name) # define libc_hidden_def(name) hidden_def (name)
# define libc_hidden_weak(name) hidden_weak (name) # define libc_hidden_weak(name) hidden_weak (name)
@ -537,8 +537,7 @@
# define libc_hidden_ver(local, name) # define libc_hidden_ver(local, name)
#endif #endif
#if defined NOT_IN_libc && defined IS_IN_rtld \ #if defined NOT_IN_libc && defined IS_IN_rtld
&& !defined HAVE_BROKEN_ALIAS_ATTRIBUTE
# define rtld_hidden_proto(name) hidden_proto (name) # define rtld_hidden_proto(name) hidden_proto (name)
# define rtld_hidden_def(name) hidden_def (name) # define rtld_hidden_def(name) hidden_def (name)
# define rtld_hidden_weak(name) hidden_weak (name) # define rtld_hidden_weak(name) hidden_weak (name)
@ -550,8 +549,7 @@
# define rtld_hidden_ver(local, name) # define rtld_hidden_ver(local, name)
#endif #endif
#if defined NOT_IN_libc && defined IS_IN_libm \ #if defined NOT_IN_libc && defined IS_IN_libm
&& !defined HAVE_BROKEN_ALIAS_ATTRIBUTE
# define libm_hidden_proto(name) hidden_proto (name) # define libm_hidden_proto(name) hidden_proto (name)
# define libm_hidden_def(name) hidden_def (name) # define libm_hidden_def(name) hidden_def (name)
# define libm_hidden_weak(name) hidden_weak (name) # define libm_hidden_weak(name) hidden_weak (name)

View File

@ -4,6 +4,14 @@
#else #else
# include <time/time.h> # include <time/time.h>
libc_hidden_proto (time)
libc_hidden_proto (asctime)
libc_hidden_proto (mktime)
libc_hidden_proto (timelocal)
libc_hidden_proto (localtime)
libc_hidden_proto (strftime)
libc_hidden_proto (strptime)
/* Now define the internal interfaces. */ /* Now define the internal interfaces. */
struct tm; struct tm;

View File

@ -56,3 +56,4 @@ inet_makeaddr(net, host)
addr = htonl(addr); addr = htonl(addr);
return (*(struct in_addr *)&addr); return (*(struct in_addr *)&addr);
} }
libc_hidden_def (inet_makeaddr)

View File

@ -52,3 +52,4 @@ inet_netof(in)
else else
return (((i)&IN_CLASSC_NET) >> IN_CLASSC_NSHIFT); return (((i)&IN_CLASSC_NET) >> IN_CLASSC_NSHIFT);
} }
libc_hidden_def (inet_netof)

View File

@ -1,7 +1,7 @@
/* /*
* Copyright (c) 1983, 1990, 1993 * Copyright (c) 1983, 1990, 1993
* The Regents of the University of California. All rights reserved. * The Regents of the University of California. All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
* are met: * are met:
@ -13,7 +13,7 @@
* 4. Neither the name of the University nor the names of its contributors * 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software * may be used to endorse or promote products derived from this software
* without specific prior written permission. * without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@ -29,14 +29,14 @@
/* /*
* Portions Copyright (c) 1993 by Digital Equipment Corporation. * Portions Copyright (c) 1993 by Digital Equipment Corporation.
* *
* Permission to use, copy, modify, and distribute this software for any * Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above * purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies, and that * copyright notice and this permission notice appear in all copies, and that
* the name of Digital Equipment Corporation not be used in advertising or * the name of Digital Equipment Corporation not be used in advertising or
* publicity pertaining to distribution of the document or software without * publicity pertaining to distribution of the document or software without
* specific, written prior permission. * specific, written prior permission.
* *
* THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
@ -98,7 +98,7 @@ inet_addr(const char *cp) {
return (INADDR_NONE); return (INADDR_NONE);
} }
/* /*
* Check whether "cp" is a valid ascii representation * Check whether "cp" is a valid ascii representation
* of an Internet address and convert to a binary address. * of an Internet address and convert to a binary address.
* Returns 1 if the address is valid, 0 if not. * Returns 1 if the address is valid, 0 if not.
@ -106,7 +106,8 @@ inet_addr(const char *cp) {
* cannot distinguish between failure and a local broadcast address. * cannot distinguish between failure and a local broadcast address.
*/ */
in_addr_t in_addr_t
__inet_aton(const char *cp, struct in_addr *addr) { __inet_aton(const char *cp, struct in_addr *addr)
{
static const in_addr_t max[4] = { 0xffffffff, 0xffffff, 0xffff, 0xff }; static const in_addr_t max[4] = { 0xffffffff, 0xffffff, 0xffff, 0xff };
in_addr_t val; in_addr_t val;
#ifndef _LIBC #ifndef _LIBC
@ -221,3 +222,5 @@ ret_0:
return (0); return (0);
} }
weak_alias (__inet_aton, inet_aton) weak_alias (__inet_aton, inet_aton)
libc_hidden_def (__inet_aton)
libc_hidden_weak (inet_aton)

View File

@ -73,6 +73,7 @@ inet_ntop(af, src, dst, size)
} }
/* NOTREACHED */ /* NOTREACHED */
} }
libc_hidden_def (inet_ntop)
/* const char * /* const char *
* inet_ntop4(src, dst, size) * inet_ntop4(src, dst, size)
@ -184,7 +185,7 @@ inet_ntop6(src, dst, size)
tp += SPRINTF((tp, "%x", words[i])); tp += SPRINTF((tp, "%x", words[i]));
} }
/* Was it a trailing run of 0x00's? */ /* Was it a trailing run of 0x00's? */
if (best.base != -1 && (best.base + best.len) == if (best.base != -1 && (best.base + best.len) ==
(NS_IN6ADDRSZ / NS_INT16SZ)) (NS_IN6ADDRSZ / NS_INT16SZ))
*tp++ = ':'; *tp++ = ':';
*tp++ = '\0'; *tp++ = '\0';

View File

@ -65,6 +65,7 @@ inet_pton(af, src, dst)
} }
/* NOTREACHED */ /* NOTREACHED */
} }
libc_hidden_def (inet_pton)
/* int /* int
* inet_pton4(src, dst) * inet_pton4(src, dst)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc. /* Copyright (C) 1991,96,97,2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -30,6 +30,7 @@ time (timer)
*timer = (time_t) -1; *timer = (time_t) -1;
return (time_t) -1; return (time_t) -1;
} }
libc_hidden_def (time)
stub_warning (time) stub_warning (time)
#include <stub-tag.h> #include <stub-tag.h>

View File

@ -130,7 +130,8 @@ shared-only-routines += $file
(echo '#include <sysdep.h>'; \\ (echo '#include <sysdep.h>'; \\
echo 'PSEUDO ($strong, $syscall, $nargs)'; \\ echo 'PSEUDO ($strong, $syscall, $nargs)'; \\
echo ' ret'; \\ echo ' ret'; \\
echo 'PSEUDO_END($strong)'; \\" echo 'PSEUDO_END($strong)'; \\
echo 'libc_hidden_def ($strong)'; \\"
# Append any weak aliases or versions defined for this syscall function. # Append any weak aliases or versions defined for this syscall function.
@ -168,6 +169,7 @@ shared-only-routines += $file
;; ;;
*) *)
echo " echo 'weak_alias ($strong, $name)'; \\" echo " echo 'weak_alias ($strong, $name)'; \\"
echo " echo 'libc_hidden_weak ($name)'; \\"
;; ;;
esac esac
done done
@ -275,9 +277,12 @@ shared-only-routines += $file
echo " echo '} \\'; \\" echo " echo '} \\'; \\"
echo " echo 'libc_hidden_def (BP_SYM ($strong)) \\'; \\"
# generate thunk aliases # generate thunk aliases
for name in $nv_weak; do for name in $nv_weak; do
echo " echo 'weak_alias (BP_SYM ($strong), BP_SYM ($name)) \\'; \\" echo " echo 'weak_alias (BP_SYM ($strong), BP_SYM ($name)) \\'; \\"
echo " echo 'libc_hidden_weak (BP_SYM ($name)) \\'; \\"
done done
# wrap up # wrap up

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1992, 1996, 1997 Free Software Foundation, Inc. /* Copyright (C) 1991,92,96,97,2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -27,3 +27,4 @@ SYSCALL (time, 1)
L(null): L(null):
ret ret
PSEUDO_END (time) PSEUDO_END (time)
libc_hidden_def (time)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2001, 2002 Free Software Foundation, Inc. /* Copyright (C) 2001,02 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -40,3 +40,4 @@ L(pseudo_end):
add $0x8, %rsp add $0x8, %rsp
ret ret
PSEUDO_END(time) PSEUDO_END(time)
libc_hidden_def (time)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1992, 1997, 2001 Free Software Foundation, Inc. /* Copyright (C) 1991,92,97,2001,02 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -39,3 +39,4 @@ time (t)
*t = result; *t = result;
return result; return result;
} }
libc_hidden_def (time)

View File

@ -36,7 +36,7 @@ asctime (const struct tm *tp)
{ {
return __asctime_r (tp, result); return __asctime_r (tp, result);
} }
libc_hidden_def (asctime)
char * char *
__asctime_r (const struct tm *tp, char *buf) __asctime_r (const struct tm *tp, char *buf)

View File

@ -1,5 +1,5 @@
/* Convert `time_t' to `struct tm' in local time zone. /* Convert `time_t' to `struct tm' in local time zone.
Copyright (C) 1991, 92, 93, 95, 96, 97, 98 Free Software Foundation, Inc. Copyright (C) 1991,92,93,95,96,97,98,2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -42,3 +42,4 @@ localtime (t)
{ {
return __tz_convert (t, 1, &_tmbuf); return __tz_convert (t, 1, &_tmbuf);
} }
libc_hidden_def (localtime)

View File

@ -405,6 +405,11 @@ mktime (tp)
#ifdef weak_alias #ifdef weak_alias
weak_alias (mktime, timelocal) weak_alias (mktime, timelocal)
#endif #endif
#ifdef _LIBC
libc_hidden_def (mktime)
libc_hidden_weak (timelocal)
#endif
#if DEBUG #if DEBUG

View File

@ -1361,6 +1361,9 @@ my_strftime (s, maxsize, format, tp ut_argument)
*p = L_('\0'); *p = L_('\0');
return i; return i;
} }
#ifdef _LIBC
libc_hidden_def (strftime)
#endif
#ifdef emacs #ifdef emacs

View File

@ -1037,3 +1037,6 @@ strptime (buf, format, tm)
#endif #endif
return strptime_internal (buf, format, tm, &decided, -1); return strptime_internal (buf, format, tm, &decided, -1);
} }
#ifdef _LIBC
libc_hidden_def (strptime)
#endif