This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch hjl/pr21598 created. glibc-2.25-495-gc829d13
- From: hjl at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 16 Jun 2017 13:47:01 -0000
- Subject: GNU C Library master sources branch hjl/pr21598 created. glibc-2.25-495-gc829d13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, hjl/pr21598 has been created
at c829d137bb8f9b0ea9a09895058690485f044067 (commit)
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=c829d137bb8f9b0ea9a09895058690485f044067
commit c829d137bb8f9b0ea9a09895058690485f044067
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Fri Jun 16 06:46:19 2017 -0700
Remove internal_function on exported symbols from ld.so
diff --git a/elf/dl-error-skeleton.c b/elf/dl-error-skeleton.c
index 8e5888d..5cfb568 100644
--- a/elf/dl-error-skeleton.c
+++ b/elf/dl-error-skeleton.c
@@ -77,7 +77,6 @@ static receiver_fct receiver;
#endif /* DL_ERROR_BOOTSTRAP */
void
-internal_function
_dl_signal_error (int errcode, const char *objname, const char *occation,
const char *errstring)
{
@@ -169,7 +168,6 @@ _dl_signal_cerror (int errcode, const char *objname, const char *occation,
int
-internal_function
_dl_catch_error (const char **objname, const char **errstring,
bool *mallocedp, void (*operate) (void *), void *args)
{
diff --git a/elf/dl-execstack.c b/elf/dl-execstack.c
index 875338b..a266c07 100644
--- a/elf/dl-execstack.c
+++ b/elf/dl-execstack.c
@@ -23,7 +23,6 @@
so as to mprotect it. */
int
-internal_function
_dl_make_stack_executable (void **stack_endp)
{
return ENOSYS;
diff --git a/elf/dl-load.c b/elf/dl-load.c
index c1b6d4b..d5f45a5 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -2241,7 +2241,6 @@ add_path (struct add_path_state *p, const struct r_search_path_struct *sps,
}
void
-internal_function
_dl_rtld_di_serinfo (struct link_map *loader, Dl_serinfo *si, bool counting)
{
if (counting)
diff --git a/elf/dl-open.c b/elf/dl-open.c
index cec54db..4265eea 100644
--- a/elf/dl-open.c
+++ b/elf/dl-open.c
@@ -162,7 +162,6 @@ add_to_global (struct link_map *new)
address ADDR. Returns the pointer to the link map of the matching DSO, or
NULL if a match is not found. */
struct link_map *
-internal_function
_dl_find_dso_for_object (const ElfW(Addr) addr)
{
struct link_map *l;
diff --git a/elf/dl-support.c b/elf/dl-support.c
index c22be85..b8e72c4 100644
--- a/elf/dl-support.c
+++ b/elf/dl-support.c
@@ -181,7 +181,7 @@ ElfW(Word) _dl_stack_flags = DEFAULT_STACK_PERMS;
/* If loading a shared object requires that we make the stack executable
when it was not, we do it by calling this function.
It returns an errno code or zero on success. */
-int (*_dl_make_stack_executable_hook) (void **) internal_function
+int (*_dl_make_stack_executable_hook) (void **)
= _dl_make_stack_executable;
diff --git a/elf/dl-tls.c b/elf/dl-tls.c
index 5aba33b..6a0722c 100644
--- a/elf/dl-tls.c
+++ b/elf/dl-tls.c
@@ -308,7 +308,6 @@ allocate_dtv (void *result)
/* Get size and alignment requirements of the static TLS block. */
void
-internal_function
_dl_get_tls_static_info (size_t *sizep, size_t *alignp)
{
*sizep = GL(dl_tls_static_size);
@@ -439,7 +438,6 @@ _dl_resize_dtv (dtv_t *dtv)
void *
-internal_function
_dl_allocate_tls_init (void *result)
{
if (result == NULL)
@@ -532,7 +530,6 @@ _dl_allocate_tls_init (void *result)
rtld_hidden_def (_dl_allocate_tls_init)
void *
-internal_function
_dl_allocate_tls (void *mem)
{
return _dl_allocate_tls_init (mem == NULL
@@ -543,7 +540,6 @@ rtld_hidden_def (_dl_allocate_tls)
void
-internal_function
_dl_deallocate_tls (void *tcb, bool dealloc_tcb)
{
dtv_t *dtv = GET_DTV (tcb);
diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
index 8364406..067675c 100644
--- a/nptl/allocatestack.c
+++ b/nptl/allocatestack.c
@@ -778,7 +778,6 @@ __deallocate_stack (struct pthread *pd)
int
-internal_function
__make_stacks_executable (void **stack_endp)
{
/* First the main thread's stack. */
diff --git a/nptl/libc_pthread_init.c b/nptl/libc_pthread_init.c
index 0db7a10..875b27e 100644
--- a/nptl/libc_pthread_init.c
+++ b/nptl/libc_pthread_init.c
@@ -38,7 +38,6 @@ extern int __libc_multiple_threads attribute_hidden;
int *
#endif
-internal_function
__libc_pthread_init (unsigned long int *ptr, void (*reclaim) (void),
const struct pthread_functions *functions)
{
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index 7fc1e50..4b9560d 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -357,7 +357,7 @@ extern void __reclaim_stacks (void) attribute_hidden;
/* Make all threads's stacks executable. */
extern int __make_stacks_executable (void **stack_endp)
- internal_function attribute_hidden;
+ attribute_hidden;
/* longjmp handling. */
extern void __pthread_cleanup_upto (__jmp_buf target, char *targetframe);
@@ -387,13 +387,11 @@ hidden_proto (__nptl_death_event)
#ifdef TLS_MULTIPLE_THREADS_IN_TCB
extern void __libc_pthread_init (unsigned long int *ptr,
void (*reclaim) (void),
- const struct pthread_functions *functions)
- internal_function;
+ const struct pthread_functions *functions);
#else
extern int *__libc_pthread_init (unsigned long int *ptr,
void (*reclaim) (void),
- const struct pthread_functions *functions)
- internal_function;
+ const struct pthread_functions *functions);
/* Variable set to a nonzero value either if more than one thread runs or ran,
or if a single-threaded process is trying to cancel itself. See
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index 4508365..b6fea36 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -377,7 +377,7 @@ struct rtld_global
/* If loading a shared object requires that we make the stack executable
when it was not, we do it by calling this function.
It returns an errno code or zero on success. */
- EXTERN int (*_dl_make_stack_executable_hook) (void **) internal_function;
+ EXTERN int (*_dl_make_stack_executable_hook) (void **);
/* Prevailing state of the stack, PF_X indicating it's executable. */
EXTERN ElfW(Word) _dl_stack_flags;
@@ -632,7 +632,7 @@ extern size_t _dl_phnum;
/* This is the initial value of GL(dl_make_stack_executable_hook).
A threads library can change it. */
-extern int _dl_make_stack_executable (void **stack_endp) internal_function;
+extern int _dl_make_stack_executable (void **stack_endp);
rtld_hidden_proto (_dl_make_stack_executable)
/* Variable pointing to the end of the stack (or close to it). This value
@@ -739,7 +739,7 @@ _dl_dprintf (int fd, const char *fmt, ...)
problem. */
extern void _dl_signal_error (int errcode, const char *object,
const char *occurred, const char *errstring)
- internal_function __attribute__ ((__noreturn__));
+ __attribute__ ((__noreturn__));
libc_hidden_proto (_dl_signal_error)
/* Like _dl_signal_error, but may return when called in the context of
@@ -778,8 +778,7 @@ extern void _dl_receive_error (receiver_fct fct, void (*operate) (void *),
if the returned string is allocated using the libc's malloc. */
extern int _dl_catch_error (const char **objname, const char **errstring,
bool *mallocedp, void (*operate) (void *),
- void *args)
- internal_function;
+ void *args);
libc_hidden_proto (_dl_catch_error)
/* Open the shared object NAME and map in its segments.
@@ -812,8 +811,7 @@ extern void _dl_setup_hash (struct link_map *map)
by a previous call with COUNTING set, and SI must point to SI->dls_size
bytes to be used in filling in the result. */
extern void _dl_rtld_di_serinfo (struct link_map *loader,
- Dl_serinfo *si, bool counting)
- internal_function;
+ Dl_serinfo *si, bool counting);
/* Search loaded objects' symbol tables for a definition of the symbol
@@ -1012,12 +1010,11 @@ void __pthread_initialize_minimal (void) weak_function;
#endif
/* Allocate memory for static TLS block (unless MEM is nonzero) and dtv. */
-extern void *_dl_allocate_tls (void *mem) internal_function;
+extern void *_dl_allocate_tls (void *mem);
rtld_hidden_proto (_dl_allocate_tls)
/* Get size and alignment requirements of the static TLS block. */
-extern void _dl_get_tls_static_info (size_t *sizep, size_t *alignp)
- internal_function;
+extern void _dl_get_tls_static_info (size_t *sizep, size_t *alignp);
extern void _dl_allocate_static_tls (struct link_map *map)
internal_function attribute_hidden;
@@ -1026,11 +1023,11 @@ extern void _dl_allocate_static_tls (struct link_map *map)
only used within rtld.c itself at startup time. */
extern void *_dl_allocate_tls_storage (void)
internal_function attribute_hidden;
-extern void *_dl_allocate_tls_init (void *) internal_function;
+extern void *_dl_allocate_tls_init (void *);
rtld_hidden_proto (_dl_allocate_tls_init)
/* Deallocate memory allocated with _dl_allocate_tls. */
-extern void _dl_deallocate_tls (void *tcb, bool dealloc_tcb) internal_function;
+extern void _dl_deallocate_tls (void *tcb, bool dealloc_tcb);
rtld_hidden_proto (_dl_deallocate_tls)
extern void _dl_nothread_init_static_tls (struct link_map *) attribute_hidden;
@@ -1080,8 +1077,7 @@ extern int _dl_addr_inside_object (struct link_map *l, const ElfW(Addr) addr)
extern void _dl_show_scope (struct link_map *new, int from)
attribute_hidden;
-extern struct link_map *_dl_find_dso_for_object (const ElfW(Addr) addr)
- internal_function;
+extern struct link_map *_dl_find_dso_for_object (const ElfW(Addr) addr);
rtld_hidden_proto (_dl_find_dso_for_object)
/* Initialization which is normally done by the dynamic linker. */
diff --git a/sysdeps/i386/dl-trampoline.S b/sysdeps/i386/dl-trampoline.S
index 6e7f3ae..e30bde5 100644
--- a/sysdeps/i386/dl-trampoline.S
+++ b/sysdeps/i386/dl-trampoline.S
@@ -31,22 +31,17 @@
cfi_startproc
.align 16
_dl_runtime_resolve:
+ # Incorporate PLT
cfi_adjust_cfa_offset (8)
- pushl %eax # Preserve registers otherwise clobbered.
- cfi_adjust_cfa_offset (4)
- pushl %ecx
- cfi_adjust_cfa_offset (4)
- pushl %edx
- cfi_adjust_cfa_offset (4)
- movl 16(%esp), %edx # Copy args pushed by PLT in register. Note
- movl 12(%esp), %eax # that `fixup' takes its parameters in regs.
+ # Don't preserve %eax, %ecx nor %edx so that %eax can be used
+ # for indirect jump to be compatible with shadow stack from CET.
+ movl 4(%esp), %edx # Copy args pushed by PLT in register. Note
+ movl 0(%esp), %eax # that `fixup' takes its parameters in regs.
call _dl_fixup # Call resolver.
- popl %edx # Get register content back.
- cfi_adjust_cfa_offset (-4)
- movl (%esp), %ecx
- movl %eax, (%esp) # Store the function address.
- movl 4(%esp), %eax
- ret $12 # Jump to function address.
+ # Adjust stack(PLT did 2 pushes)
+ addl $8, %esp
+ cfi_adjust_cfa_offset (-8)
+ jmp *%eax # Jump to function address.
cfi_endproc
.size _dl_runtime_resolve, .-_dl_runtime_resolve
diff --git a/sysdeps/unix/sysv/linux/dl-execstack.c b/sysdeps/unix/sysv/linux/dl-execstack.c
index 3c4de1c..4fe8152 100644
--- a/sysdeps/unix/sysv/linux/dl-execstack.c
+++ b/sysdeps/unix/sysv/linux/dl-execstack.c
@@ -30,7 +30,6 @@ extern int __stack_prot attribute_relro attribute_hidden;
int
-internal_function
_dl_make_stack_executable (void **stack_endp)
{
/* This gives us the highest/lowest page that needs to be changed. */
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=4dbd606b6bda0a2081399906fafdc3f661d97a15
commit 4dbd606b6bda0a2081399906fafdc3f661d97a15
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Fri Jun 16 06:45:55 2017 -0700
Remove _dl_out_of_memory from elf/Versions
diff --git a/elf/Versions b/elf/Versions
index c59facd..e65f2fa 100644
--- a/elf/Versions
+++ b/elf/Versions
@@ -58,7 +58,7 @@ ld {
__libc_enable_secure;
_dl_allocate_tls; _dl_allocate_tls_init;
_dl_argv; _dl_find_dso_for_object; _dl_get_tls_static_info;
- _dl_deallocate_tls; _dl_make_stack_executable; _dl_out_of_memory;
+ _dl_deallocate_tls; _dl_make_stack_executable;
_dl_rtld_di_serinfo; _dl_starting_up;
_rtld_global; _rtld_global_ro;
-----------------------------------------------------------------------
hooks/post-receive
--
GNU C Library master sources