diff options
author | Florian Weimer <fweimer@redhat.com> | 2017-08-14 12:29:21 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2017-08-14 15:08:48 +0200 |
commit | 630bf4916f10bdba28a99480ef32170b977ea5fc (patch) | |
tree | 7712de6ab55a8351a22253d6ee234092297afbab | |
parent | 9fa7449b35244645acaa450046b37678f46fe0f1 (diff) | |
download | glibc-630bf4916f10bdba28a99480ef32170b977ea5fc.tar.gz glibc-630bf4916f10bdba28a99480ef32170b977ea5fc.tar.xz glibc-630bf4916f10bdba28a99480ef32170b977ea5fc.zip |
_dl_start: Remove internal_function attribute
The i386 startup code needs adjusting because it calls the function and the ABI has changed.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | elf/rtld.c | 2 | ||||
-rw-r--r-- | sysdeps/i386/dl-machine.h | 4 |
3 files changed, 10 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog index bf655ed0b4..74ad96d800 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2017-08-14 Florian Weimer <fweimer@redhat.com> + * elf/rtld.c (_dl_start): Remove internal_function. + * sysdeps/i386/dl-machine.h (RTLD_START): Adjust call to + _dl_start. + +2017-08-14 Florian Weimer <fweimer@redhat.com> + * elf/dl-fini.c (_dl_fini): Remove internal_function * sysdeps/generic/ldsodefs.h (_dl_fini): Likewise. diff --git a/elf/rtld.c b/elf/rtld.c index 1772f89ea8..d8e75c02e6 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -439,7 +439,7 @@ _dl_start_final (void *arg, struct dl_start_final_info *info) return start_addr; } -static ElfW(Addr) __attribute_used__ internal_function +static ElfW(Addr) __attribute_used__ _dl_start (void *arg) { #ifdef DONT_USE_BOOTSTRAP_MAP diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h index 9ee9d02c36..924de953b7 100644 --- a/sysdeps/i386/dl-machine.h +++ b/sysdeps/i386/dl-machine.h @@ -150,9 +150,11 @@ extern ElfW(Addr) _dl_profile_fixup (struct link_map *l, .globl _start\n\ .globl _dl_start_user\n\ _start:\n\ - # Note that _dl_start gets the parameter in %eax.\n\ movl %esp, %eax\n\ + subl $12, %esp\n\ + pushl %eax\n\ call _dl_start\n\ + addl $16, %esp\n\ _dl_start_user:\n\ # Save the user entry point address in %edi.\n\ movl %eax, %edi\n\ |