mirror of git://sourceware.org/git/glibc.git
_dl_fini: Remove internal_function attribute
Assembler code passes the address of _dl_fini to __libc_start_main, whose function pointer argument lacks the attribute. This means that calls could use the wrong ABI. Fortunately, for zero-parameter void-returning functions, internal_function does not change ABI on i386 (the only architecture which uses internal_function), so this inconsistency was harmless (which is why it had not been noticed so far).
This commit is contained in:
parent
73322d5ff6
commit
9fa7449b35
|
@ -1,3 +1,8 @@
|
|||
2017-08-14 Florian Weimer <fweimer@redhat.com>
|
||||
|
||||
* elf/dl-fini.c (_dl_fini): Remove internal_function
|
||||
* sysdeps/generic/ldsodefs.h (_dl_fini): Likewise.
|
||||
|
||||
2017-08-14 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* sysdeps/x86/cpu-features.h (bit_cpu_BIT): New.
|
||||
|
|
|
@ -125,7 +125,6 @@ _dl_sort_fini (struct link_map **maps, size_t nmaps, char *used, Lmid_t ns)
|
|||
|
||||
|
||||
void
|
||||
internal_function
|
||||
_dl_fini (void)
|
||||
{
|
||||
/* Lots of fun ahead. We have to call the destructors for all still
|
||||
|
|
|
@ -968,7 +968,7 @@ extern void _dl_init (struct link_map *main_map, int argc, char **argv,
|
|||
|
||||
/* Call the finalizer functions of all shared objects whose
|
||||
initializer functions have completed. */
|
||||
extern void _dl_fini (void) internal_function;
|
||||
extern void _dl_fini (void);
|
||||
|
||||
/* Sort array MAPS according to dependencies of the contained objects. */
|
||||
extern void _dl_sort_fini (struct link_map **maps, size_t nmaps, char *used,
|
||||
|
|
Loading…
Reference in New Issue