소스 검색

libc: add hidden calls to pthread cleanup funcs

A lot of libc code calls the pthread cleanup funcs implicitly (for stdio)
which currently goes through the PLT.  Since we already have forwarding
symbols for these funcs, it's safe to declare the internal libc usage
hidden as a loaded libpthread will have the real symbols found.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
Mike Frysinger 16 년 전
부모
커밋
c7e4f11335
2개의 변경된 파일4개의 추가작업 그리고 0개의 파일을 삭제
  1. 2 0
      libpthread/linuxthreads.old/forward.c
  2. 2 0
      libpthread/linuxthreads.old/sysdeps/pthread/pthread.h

+ 2 - 0
libpthread/linuxthreads.old/forward.c

@@ -165,6 +165,8 @@ FORWARD (pthread_setcanceltype, (int type, int *oldtype), (type, oldtype), 0)
 
 FORWARD2 (_pthread_cleanup_push, void, (struct _pthread_cleanup_buffer * buffer, void (*routine)(void *), void * arg), (buffer, routine, arg), return)
 FORWARD2 (_pthread_cleanup_push_defer, void, (struct _pthread_cleanup_buffer * buffer, void (*routine)(void *), void * arg), (buffer, routine, arg), return)
+libc_hidden_def(_pthread_cleanup_push_defer)
 
 FORWARD2 (_pthread_cleanup_pop, void, (struct _pthread_cleanup_buffer * buffer, int execute), (buffer, execute), return)
 FORWARD2 (_pthread_cleanup_pop_restore, void, (struct _pthread_cleanup_buffer * buffer, int execute), (buffer, execute), return)
+libc_hidden_def(_pthread_cleanup_pop_restore)

+ 2 - 0
libpthread/linuxthreads.old/sysdeps/pthread/pthread.h

@@ -642,6 +642,7 @@ extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *__buffer,
 extern void _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *__buffer,
 					 void (*__routine) (void *),
 					 void *__arg) __THROW;
+libc_hidden_proto(_pthread_cleanup_push_defer)
 extern void __pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *__buffer,
 					  void (*__routine) (void *),
 					  void *__arg) __THROW;
@@ -655,6 +656,7 @@ extern void __pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *__buff
 
 extern void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *__buffer,
 					  int __execute) __THROW;
+libc_hidden_proto(_pthread_cleanup_pop_restore)
 extern void __pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *__buffer,
 					   int __execute) __THROW;
 #endif