linux: Make profil_counter a compat_symbol (BZ#17726)

As indicated by Joseph's comment on BZ#17726, this symbol is most
likely a historical ABI accident.  This patch make it on both arm
and sparc ABIs a compat_symbol.

Checked against a build arm-linux-gnueabihf, sparcv9-linux-gnu, adn
sparc64-linux-gnu to see if the symbol is still present.

	* gmon/Versions (libc) [GLIBC_2.31]: New entry.
	* sysdeps/unix/sysv/linux/arm/profil-counter.h (profil_counter):
	Make a compat_symbol.
	* sysdeps/unix/sysv/linux/sparc/profil-counter.h
	(__profil_counter_global): Likewise.
This commit is contained in:
Adhemerval Zanella 2019-08-01 18:01:22 +00:00
parent a43565ac44
commit 08d57105bb
4 changed files with 16 additions and 2 deletions

View File

@ -1,6 +1,12 @@
2019-08-23 Adhemerval Zanella <adhemerval.zanella@linaro.org> 2019-08-23 Adhemerval Zanella <adhemerval.zanella@linaro.org>
Florian Weimer <fweimer@redhat.com> Florian Weimer <fweimer@redhat.com>
* gmon/Versions (libc) [GLIBC_2.31]: New entry.
* sysdeps/unix/sysv/linux/arm/profil-counter.h (profil_counter):
Make a compat_symbol.
* sysdeps/unix/sysv/linux/sparc/profil-counter.h
(__profil_counter_global): Likewise.
* debug/segfault.c (install_handler): Use SA_SIGINFO if defined. * debug/segfault.c (install_handler): Use SA_SIGINFO if defined.
* sysdeps/generic/profil-counter.h (__profil_counter): Cast to * sysdeps/generic/profil-counter.h (__profil_counter): Cast to
uintptr_t. uintptr_t.

View File

@ -19,4 +19,6 @@ libc {
GLIBC_2.2.3 { GLIBC_2.2.3 {
sprofil; sprofil;
} }
GLIBC_2.31 {
}
} }

View File

@ -30,5 +30,8 @@ __profil_counter (int signo, siginfo_t *_si, void *scp)
asm volatile (""); asm volatile ("");
} }
#ifndef __profil_counter #ifndef __profil_counter
weak_alias (__profil_counter, profil_counter) # include <shlib-compat.h>
# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_31)
compat_symbol (libc, __profil_counter, profil_counter, GLIBC_2_0);
# endif
#endif #endif

View File

@ -21,6 +21,8 @@
#include <sysdeps/unix/sysv/linux/profil-counter.h> #include <sysdeps/unix/sysv/linux/profil-counter.h>
#ifndef __profil_counter #ifndef __profil_counter
# include <shlib-compat.h>
# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_31)
void void
__profil_counter_global (int signo, struct sigcontext *si) __profil_counter_global (int signo, struct sigcontext *si)
{ {
@ -30,5 +32,6 @@ __profil_counter_global (int signo, struct sigcontext *si)
profil_count (si->si_regs.pc); profil_count (si->si_regs.pc);
#endif #endif
} }
weak_alias (__profil_counter_global, profil_counter) compat_symbol (libc, __profil_counter_global, profil_counter, GLIBC_2_0);
# endif
#endif #endif