1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +03:00

* malloc/Makefile ($(objpfx)memusagestat.o: sysincludes): Define

file-specific variable override so it compiles properly when using
	--with-headers.

	* NEWS: Added item for powerpc64-linux port.

	* include/libc-symbols.h [HAVE_ASM_GLOBAL_DOT_NAME]
	(C_SYMBOL_DOT_NAME): Insure that C_SYMBOL_DOT_NAME works for
	various gcc versions.  Dot names required for powerpc64.
	[HAVE_ASM_GLOBAL_DOT_NAME] (_weak_extern): Add .weakext '.'ed symbol.
	[HAVE_ASM_GLOBAL_DOT_NAME] (strong_alias): Add .global
	C_SYMBOL_DOT_NAME(alias).
	[HAVE_ASM_GLOBAL_DOT_NAME] (strong_data_alias): New macro. Same as
	original strong_alias macro.
	[HAVE_ASM_GLOBAL_DOT_NAME] (weak_alias): Add .weakext/.weak
	C_SYMBOL_DOT_NAME(alias).
	[HAVE_ASM_GLOBAL_DOT_NAME] (_symbol_version): Add .symver '.'ed name.
	[HAVE_ASM_GLOBAL_DOT_NAME] (_default_symbol_version): Add .symver
	'.'ed name.
	Add comments on libc_hidden_data_def and libc_hidden_data_weak usage.
	[HAVE_ASM_GLOBAL_DOT_NAME] (hidden_dot_def1): New macro.  Generate
	.global C_SYMBOL_DOT_NAME(alias).  Otherwise an empty macro.
	(hidden_def): Append hidden_dot_def1 macro to definition.
	(hidden_ver): Append hidden_dot_def1 macro to definition.
	(hidden_data_def): New macro.  Same as original hidden_def macro.
	(hidden_data_ver): New macro.  Same as original hidden_ver macro.
	[HAVE_ASM_GLOBAL_DOT_NAME] (hidden_dot_weak1): New macro.  Generate
	.weakext C_SYMBOL_DOT_NAME(alias).  Otherwise an empty macro.
	(hidden_weak): Append hidden_dot_weak1 macro to definition.
	(hidden_data_weak): New macro.  Same as original hidden_weak macro.
	[HAVE_ASM_GLOBAL_DOT_NAME] (HIDDEN_JUMPTARGET): Define as .__GI_name.
	Otherwise defined as __GI_name.
	(libc_hidden_data_def): New macro.  Use hidden_data_def.
	(libc_hidden_data_weak): New macro.  Use hidden_data_weak.
	(libc_hidden_data_ver): New macro.  Use hidden_data_ver.
	(rtld_hidden_data_def): New macro.  Use hidden_data_def.
	(rtld_hidden_data_weak): New macro.  Use hidden_data_weak.
	(rtld_hidden_data_ver): New macro.  Use hidden_data_ver.
	(libm_hidden_data_def): New macro.  Use hidden_data_def.
	(libm_hidden_data_weak): New macro.  Use hidden_data_weak.
	(libm_hidden_data_ver): New macro.  Use hidden_data_ver.
	* inet/in6_addr.c: Replace libc_hidden_def with libc_hidden_data_def.
This commit is contained in:
Roland McGrath
2002-09-18 00:15:25 +00:00
parent c435d57c38
commit c843e065a1
5 changed files with 217 additions and 42 deletions

View File

@ -1,3 +1,11 @@
2002-09-17 Roland McGrath <roland@redhat.com>
* malloc/Makefile ($(objpfx)memusagestat.o: sysincludes): Define
file-specific variable override so it compiles properly when using
--with-headers.
* NEWS: Added item for powerpc64-linux port.
2002-09-17 Steven Munroe <sjmunroe@us.ibm.com> 2002-09-17 Steven Munroe <sjmunroe@us.ibm.com>
Ported to PowerPC64 running Linux. Ported to PowerPC64 running Linux.
@ -35,6 +43,43 @@
* sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list: New file. * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: New file. * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: New file.
* include/libc-symbols.h [HAVE_ASM_GLOBAL_DOT_NAME]
(C_SYMBOL_DOT_NAME): Insure that C_SYMBOL_DOT_NAME works for
various gcc versions. Dot names required for powerpc64.
[HAVE_ASM_GLOBAL_DOT_NAME] (_weak_extern): Add .weakext '.'ed symbol.
[HAVE_ASM_GLOBAL_DOT_NAME] (strong_alias): Add .global
C_SYMBOL_DOT_NAME(alias).
[HAVE_ASM_GLOBAL_DOT_NAME] (strong_data_alias): New macro. Same as
original strong_alias macro.
[HAVE_ASM_GLOBAL_DOT_NAME] (weak_alias): Add .weakext/.weak
C_SYMBOL_DOT_NAME(alias).
[HAVE_ASM_GLOBAL_DOT_NAME] (_symbol_version): Add .symver '.'ed name.
[HAVE_ASM_GLOBAL_DOT_NAME] (_default_symbol_version): Add .symver
'.'ed name.
Add comments on libc_hidden_data_def and libc_hidden_data_weak usage.
[HAVE_ASM_GLOBAL_DOT_NAME] (hidden_dot_def1): New macro. Generate
.global C_SYMBOL_DOT_NAME(alias). Otherwise an empty macro.
(hidden_def): Append hidden_dot_def1 macro to definition.
(hidden_ver): Append hidden_dot_def1 macro to definition.
(hidden_data_def): New macro. Same as original hidden_def macro.
(hidden_data_ver): New macro. Same as original hidden_ver macro.
[HAVE_ASM_GLOBAL_DOT_NAME] (hidden_dot_weak1): New macro. Generate
.weakext C_SYMBOL_DOT_NAME(alias). Otherwise an empty macro.
(hidden_weak): Append hidden_dot_weak1 macro to definition.
(hidden_data_weak): New macro. Same as original hidden_weak macro.
[HAVE_ASM_GLOBAL_DOT_NAME] (HIDDEN_JUMPTARGET): Define as .__GI_name.
Otherwise defined as __GI_name.
(libc_hidden_data_def): New macro. Use hidden_data_def.
(libc_hidden_data_weak): New macro. Use hidden_data_weak.
(libc_hidden_data_ver): New macro. Use hidden_data_ver.
(rtld_hidden_data_def): New macro. Use hidden_data_def.
(rtld_hidden_data_weak): New macro. Use hidden_data_weak.
(rtld_hidden_data_ver): New macro. Use hidden_data_ver.
(libm_hidden_data_def): New macro. Use hidden_data_def.
(libm_hidden_data_weak): New macro. Use hidden_data_weak.
(libm_hidden_data_ver): New macro. Use hidden_data_ver.
* inet/in6_addr.c: Replace libc_hidden_def with libc_hidden_data_def.
2002-09-17 Ulrich Drepper <drepper@redhat.com> 2002-09-17 Ulrich Drepper <drepper@redhat.com>
* include/libc-symbols.h: Change *hidden_proto macros to accept * include/libc-symbols.h: Change *hidden_proto macros to accept

4
NEWS
View File

@ -52,7 +52,9 @@ Version 2.3
* Startup times are significantly reduced by not using exported functions * Startup times are significantly reduced by not using exported functions
inside the library itself. Changes by Jakub Jelinek, Roland McGrath, inside the library itself. Changes by Jakub Jelinek, Roland McGrath,
and Ulrich Drepper. and Ulrich Drepper.
o
* Steven Munroe contributed a port to PowerPC64/Linux.
Version 2.2.6 Version 2.2.6
* The Hurd now uses the GNU libio implementation of stdio rather than the * The Hurd now uses the GNU libio implementation of stdio rather than the

View File

@ -82,8 +82,15 @@
# define ASM_LINE_SEP ; # define ASM_LINE_SEP ;
#endif #endif
#ifndef C_SYMBOL_DOT_NAME #ifdef HAVE_ASM_GLOBAL_DOT_NAME
# ifndef C_SYMBOL_DOT_NAME
# if defined __GNUC__ && defined __GNUC_MINOR__ \
&& (__GNUC__ << 16) + __GNUC_MINOR__ >= (3 << 16) + 1
# define C_SYMBOL_DOT_NAME(name) .name
# else
# define C_SYMBOL_DOT_NAME(name) .##name # define C_SYMBOL_DOT_NAME(name) .##name
# endif
# endif
#endif #endif
#ifndef __ASSEMBLER__ #ifndef __ASSEMBLER__
@ -111,10 +118,22 @@
/* Declare SYMBOL as weak undefined symbol (resolved to 0 if not defined). */ /* Declare SYMBOL as weak undefined symbol (resolved to 0 if not defined). */
# define weak_extern(symbol) _weak_extern (symbol) # define weak_extern(symbol) _weak_extern (symbol)
# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE # ifdef HAVE_ASM_WEAKEXT_DIRECTIVE
# ifdef HAVE_ASM_GLOBAL_DOT_NAME
# define _weak_extern(symbol) \
asm (".weakext " __SYMBOL_PREFIX #symbol "\n\t" \
".weakext ." __SYMBOL_PREFIX #symbol);
# else
# define _weak_extern(symbol) asm (".weakext " __SYMBOL_PREFIX #symbol); # define _weak_extern(symbol) asm (".weakext " __SYMBOL_PREFIX #symbol);
# endif
# else
# ifdef HAVE_ASM_GLOBAL_DOT_NAME
# define _weak_extern(symbol) \
asm (".weak " __SYMBOL_PREFIX #symbol "\n\t" \
".weak ." __SYMBOL_PREFIX #symbol);
# else # else
# define _weak_extern(symbol) asm (".weak " __SYMBOL_PREFIX #symbol); # define _weak_extern(symbol) asm (".weak " __SYMBOL_PREFIX #symbol);
# endif # endif
# endif
# else # else
@ -126,9 +145,21 @@
#else /* __ASSEMBLER__ */ #else /* __ASSEMBLER__ */
# ifdef HAVE_ASM_SET_DIRECTIVE # ifdef HAVE_ASM_SET_DIRECTIVE
# ifdef HAVE_ASM_GLOBAL_DOT_NAME
# define strong_alias(original, alias) \
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \
.set C_SYMBOL_NAME (alias),C_SYMBOL_NAME (original) ASM_LINE_SEP \
ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \
.set C_SYMBOL_DOT_NAME (alias),C_SYMBOL_DOT_NAME (original)
# define strong_data_alias(original, alias) \
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \
.set C_SYMBOL_NAME (alias),C_SYMBOL_NAME (original)
# else
# define strong_alias(original, alias) \ # define strong_alias(original, alias) \
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \
.set C_SYMBOL_NAME (alias),C_SYMBOL_NAME (original) .set C_SYMBOL_NAME (alias),C_SYMBOL_NAME (original)
# define strong_data_alias(original, alias) strong_alias(original, alias)
# endif
# else # else
# ifdef HAVE_ASM_GLOBAL_DOT_NAME # ifdef HAVE_ASM_GLOBAL_DOT_NAME
# define strong_alias(original, alias) \ # define strong_alias(original, alias) \
@ -136,17 +167,27 @@
C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) 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 \ ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \
C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original)
# define strong_data_alias(original, alias) \
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \
C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original)
# else # else
# define strong_alias(original, alias) \ # define strong_alias(original, alias) \
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \
C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original)
# define strong_data_alias(original, alias) strong_alias(original, alias)
# endif # endif
# endif # endif
# ifdef HAVE_WEAK_SYMBOLS # ifdef HAVE_WEAK_SYMBOLS
# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE # ifdef HAVE_ASM_WEAKEXT_DIRECTIVE
# ifdef HAVE_ASM_GLOBAL_DOT_NAME
# define weak_alias(original, alias) \
.weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) ASM_LINE_SEP \
.weakext C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original)
# else
# define weak_alias(original, alias) \ # define weak_alias(original, alias) \
.weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) .weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original)
# endif
# define weak_extern(symbol) \ # define weak_extern(symbol) \
.weakext C_SYMBOL_NAME (symbol) .weakext C_SYMBOL_NAME (symbol)
@ -156,7 +197,7 @@
# define weak_alias(original, alias) \ # define weak_alias(original, alias) \
.weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \ .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \
C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) 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 \ .weak C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \
C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original)
# else # else
# define weak_alias(original, alias) \ # define weak_alias(original, alias) \
@ -364,16 +405,34 @@
# define default_symbol_version(real, name, version) \ # define default_symbol_version(real, name, version) \
_default_symbol_version(real, name, version) _default_symbol_version(real, name, version)
# ifdef __ASSEMBLER__ # ifdef __ASSEMBLER__
# ifdef HAVE_ASM_GLOBAL_DOT_NAME
# define _symbol_version(real, name, version) \
.symver real, name##@##version ASM_LINE_SEP \
.symver .##real, .##name##@##version
# define _default_symbol_version(real, name, version) \
.symver real, name##@##@##version ASM_LINE_SEP \
.symver .##real, .##name##@##@##version
# else
# define _symbol_version(real, name, version) \ # define _symbol_version(real, name, version) \
.symver real, name##@##version .symver real, name##@##version
# define _default_symbol_version(real, name, version) \ # define _default_symbol_version(real, name, version) \
.symver real, name##@##@##version .symver real, name##@##@##version
# endif
# else
# ifdef HAVE_ASM_GLOBAL_DOT_NAME
# define _symbol_version(real, name, version) \
__asm__ (".symver " #real "," #name "@" #version "\n\t" \
".symver ." #real ",." #name "@" #version)
# define _default_symbol_version(real, name, version) \
__asm__ (".symver " #real "," #name "@@" #version "\n\t" \
".symver ." #real ",." #name "@@" #version)
# else # else
# define _symbol_version(real, name, version) \ # define _symbol_version(real, name, version) \
__asm__ (".symver " #real "," #name "@" #version) __asm__ (".symver " #real "," #name "@" #version)
# define _default_symbol_version(real, name, version) \ # define _default_symbol_version(real, name, version) \
__asm__ (".symver " #real "," #name "@@" #version) __asm__ (".symver " #real "," #name "@@" #version)
# endif # endif
# endif
#else #else
# define symbol_version(real, name, version) # define symbol_version(real, name, version)
# define default_symbol_version(real, name, version) \ # define default_symbol_version(real, name, version) \
@ -439,6 +498,21 @@
} }
libc_hidden_weak (foo) libc_hidden_weak (foo)
Simularly for global data. If references 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 foo's definition:
int foo = INITIAL_FOO_VALUE;
libc_hidden_data_def (foo)
or
int foo = INITIAL_FOO_VALUE;
libc_hidden_data_weak (foo)
If foo is normally just an alias (strong or weak) of some other function, 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 you should use the normal strong_alias first, then add libc_hidden_def
or libc_hidden_weak: or libc_hidden_weak:
@ -494,43 +568,63 @@
# define __hidden_def1(original, alias) \ # define __hidden_def1(original, alias) \
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \
.set C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) .set C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original)
# else
# ifdef HAVE_ASM_GLOBAL_DOT_NAME # ifdef HAVE_ASM_GLOBAL_DOT_NAME
# define __hidden_def1(original, alias) \ # define __hidden_dot_def1(original, alias) ASM_LINE_SEP \
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 \ ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \
C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) .set C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original)
# else
# define __hidden_dot_def1(original, alias)
# endif
# else # else
# define __hidden_def1(original, alias) \ # define __hidden_def1(original, alias) \
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \
C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original)
# ifdef HAVE_ASM_GLOBAL_DOT_NAME
# define __hidden_dot_def1(original, alias) 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)
# endif # endif
# endif # endif
# define __hidden_def2(...) #__VA_ARGS__ # define __hidden_def2(...) #__VA_ARGS__
# define __hidden_def3(...) __hidden_def2 (__VA_ARGS__) # define __hidden_def3(...) __hidden_def2 (__VA_ARGS__)
# define hidden_def(name) \ # define hidden_def(name) \
__asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name) \
__hidden_dot_def1 (__GI_##name, name)));
# define hidden_data_def(name) \
__asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name))); __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name)));
# define hidden_ver(local, name) \ # define hidden_ver(local, name) \
__asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name) \
__hidden_dot_def1 (local, __GI_##name)));
# define hidden_data_ver(local, name) \
__asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name))); __asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name)));
# ifdef HAVE_WEAK_SYMBOLS # ifdef HAVE_WEAK_SYMBOLS
# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE # ifdef HAVE_ASM_WEAKEXT_DIRECTIVE
# define __hidden_weak1(original, alias) \ # define __hidden_weak1(original, alias) \
.weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) .weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original)
# else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */
# ifdef HAVE_ASM_GLOBAL_DOT_NAME # ifdef HAVE_ASM_GLOBAL_DOT_NAME
# define __hidden_weak1(original, alias) \ # define __hidden_dot_weak1(original, alias) ASM_LINE_SEP \
.weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \ .weakext C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original)
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 # else
# define __hidden_dot_weak1(original, alias)
# endif
# else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */
# define __hidden_weak1(original, alias) \ # define __hidden_weak1(original, alias) \
.weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \ .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \
C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original)
# ifdef HAVE_ASM_GLOBAL_DOT_NAME
# define __hidden_dot_weak1(original, alias) 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_dot_weak1(original, alias)
# endif # endif
# endif # endif
# define hidden_weak(name) \ # define hidden_weak(name) \
__asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name) \
__hidden_dot_weak1 (__GI_##name, name)));
# define hidden_data_weak(name) \
__asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name))); __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name)));
# else # else
# define hidden_weak(name) hidden_def (name) # define hidden_weak(name) hidden_def (name)
@ -548,8 +642,15 @@
# define hidden_def(name) strong_alias (name, __GI_##name) # define hidden_def(name) strong_alias (name, __GI_##name)
# define hidden_weak(name) hidden_def (name) # define hidden_weak(name) hidden_def (name)
# define hidden_ver(local, name) strong_alias (local, __GI_##name) # define hidden_ver(local, name) strong_alias (local, __GI_##name)
# define hidden_data_def(name) strong_data_alias (name, __GI_##name)
# define hidden_data_weak(name) hidden_data_def (name)
# define hidden_data_ver(local, name) strong_data_alias (local, __GI_##name)
# ifdef HAVE_ASM_GLOBAL_DOT_NAME
# define HIDDEN_JUMPTARGET(name) .__GI_##name
# else
# define HIDDEN_JUMPTARGET(name) __GI_##name # define HIDDEN_JUMPTARGET(name) __GI_##name
# endif # endif
# endif
#else #else
# ifndef __ASSEMBLER__ # ifndef __ASSEMBLER__
# define hidden_proto(name, attrs...) # define hidden_proto(name, attrs...)
@ -559,6 +660,9 @@
# define hidden_weak(name) # define hidden_weak(name)
# define hidden_def(name) # define hidden_def(name)
# define hidden_ver(local, name) # define hidden_ver(local, name)
# define hidden_data_weak(name)
# define hidden_data_def(name)
# define hidden_data_ver(local, name)
#endif #endif
#if !defined NOT_IN_libc #if !defined NOT_IN_libc
@ -566,11 +670,17 @@
# 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)
# define libc_hidden_ver(local, name) hidden_ver (local, name) # define libc_hidden_ver(local, name) hidden_ver (local, name)
# define libc_hidden_data_def(name) hidden_data_def (name)
# define libc_hidden_data_weak(name) hidden_data_weak (name)
# define libc_hidden_data_ver(local, name) hidden_data_ver (local, name)
#else #else
# define libc_hidden_proto(name, attrs...) # define libc_hidden_proto(name, attrs...)
# define libc_hidden_def(name) # define libc_hidden_def(name)
# define libc_hidden_weak(name) # define libc_hidden_weak(name)
# define libc_hidden_ver(local, name) # define libc_hidden_ver(local, name)
# define libc_hidden_data_def(name)
# define libc_hidden_data_weak(name)
# define libc_hidden_data_ver(local, name)
#endif #endif
#if defined NOT_IN_libc && defined IS_IN_rtld #if defined NOT_IN_libc && defined IS_IN_rtld
@ -578,11 +688,17 @@
# 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)
# define rtld_hidden_ver(local, name) hidden_ver (local, name) # define rtld_hidden_ver(local, name) hidden_ver (local, name)
# define rtld_hidden_data_def(name) hidden_data_def (name)
# define rtld_hidden_data_weak(name) hidden_data_weak (name)
# define rtld_hidden_data_ver(local, name) hidden_data_ver (local, name)
#else #else
# define rtld_hidden_proto(name, attrs...) # define rtld_hidden_proto(name, attrs...)
# define rtld_hidden_def(name) # define rtld_hidden_def(name)
# define rtld_hidden_weak(name) # define rtld_hidden_weak(name)
# define rtld_hidden_ver(local, name) # define rtld_hidden_ver(local, name)
# define rtld_hidden_data_def(name)
# define rtld_hidden_data_weak(name)
# define rtld_hidden_data_ver(local, name)
#endif #endif
#if defined NOT_IN_libc && defined IS_IN_libm #if defined NOT_IN_libc && defined IS_IN_libm
@ -590,11 +706,17 @@
# 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)
# define libm_hidden_ver(local, name) hidden_ver (local, name) # define libm_hidden_ver(local, name) hidden_ver (local, name)
# define libm_hidden_data_def(name) hidden_data_def (name)
# define libm_hidden_data_weak(name) hidden_data_weak (name)
# define libm_hidden_data_ver(local, name) hidden_data_ver (local, name)
#else #else
# define libm_hidden_proto(name, attrs...) # define libm_hidden_proto(name, attrs...)
# define libm_hidden_def(name) # define libm_hidden_def(name)
# define libm_hidden_weak(name) # define libm_hidden_weak(name)
# define libm_hidden_ver(local, name) # define libm_hidden_ver(local, name)
# define libm_hidden_data_def(name)
# define libm_hidden_data_weak(name)
# define libm_hidden_data_ver(local, name)
#endif #endif
#endif /* libc-symbols.h */ #endif /* libc-symbols.h */

View File

@ -21,7 +21,7 @@
const struct in6_addr in6addr_any = const struct in6_addr in6addr_any =
{ { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } }; { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } };
libc_hidden_def (in6addr_any) libc_hidden_data_def (in6addr_any)
const struct in6_addr in6addr_loopback = const struct in6_addr in6addr_loopback =
{ { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } }; { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } };
libc_hidden_def (in6addr_loopback) libc_hidden_data_def (in6addr_loopback)

View File

@ -81,6 +81,12 @@ ifneq ($(LIBGD),no)
install-bin = memusagestat memusage install-bin = memusagestat memusage
generated += memusagestat memusage generated += memusagestat memusage
extra-objs += memusagestat.o extra-objs += memusagestat.o
# The configure.in check for libgd and its headers did not use $SYSINCLUDES.
# The directory specified by --with-headers usually contains only the basic
# kernel interface headers, not something like libgd. So the simplest thing
# is to presume that the standard system headers will be ok for this file.
$(objpfx)memusagestat.o: sysincludes = # nothing
endif endif
endif endif