mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-01 10:06:57 +03:00
support: Link links-dso-program-c against libgcc_s
If C++ support is not available, links-dso-program-c is used instead of the C++ version. The C version was not linked against libgcc_s, which meant that thread cancellation and the backtrace function did not work in containers tests in that situation. Reviewed-by: Sam James <sam@gentoo.org>
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
#include <stdio.h>
|
||||
#include <dlfcn.h>
|
||||
|
||||
/* makedb needs selinux dso's. */
|
||||
#ifdef HAVE_SELINUX
|
||||
@ -13,6 +14,20 @@
|
||||
such dependencies.
|
||||
*/
|
||||
|
||||
/* Use attribute cleanup to force linking against libgcc_s. */
|
||||
static void
|
||||
cleanup_function (int *ignored)
|
||||
{
|
||||
puts ("cleanup performed");
|
||||
}
|
||||
|
||||
void
|
||||
invoke_callback (void (*callback) (int *))
|
||||
{
|
||||
__attribute__ ((cleanup (cleanup_function))) int i = 0;
|
||||
callback (&i);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
@ -22,5 +37,10 @@ main (int argc, char **argv)
|
||||
/* This exists to force libselinux.so to be required. */
|
||||
printf ("selinux %d\n", is_selinux_enabled ());
|
||||
#endif
|
||||
/* Prevent invoke_callback from being optimized away. */
|
||||
{
|
||||
Dl_info dli;
|
||||
dladdr (invoke_callback, &dli);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user