[Bug 4464] RRECOMMEND for libgcc in glibc/eglibc
bugzilla-daemon at amethyst.openembedded.net
bugzilla-daemon at amethyst.openembedded.net
Fri Aug 1 03:37:54 UTC 2008
http://bugs.openembedded.net/show_bug.cgi?id=4464
--- Comment #1 from Khem Raj <raj.khem at gmail.com> 2008-08-01 05:37:54 ---
A solution that will solve both problems is that we figure out the package that
forces glibc to dlopen libgcc.
I figured out that its busybox/logger applet that causes this to happen first.
busybox/logger calls libc function openlog ()
if we look at the openlog implementation then we see
void
openlog (const char *ident, int logstat, int logfac)
{
/* Protect against multiple users and cancellation. */
__libc_cleanup_push (cancel_handler, NULL);
__libc_lock_lock (syslog_lock);
openlog_internal (ident, logstat, logfac);
__libc_cleanup_pop (1);
}
the call to __libc_cleanup_push tranlates to _Unwind_SjLj_Register in case we
use Old-ABI
and _Unwind_SjLj_Register () is defines as
void
_Unwind_SjLj_Register (struct SjLj_Function_Context *fc)
{
if (__builtin_expect (libgcc_s_sjlj_register == NULL, 0))
init ();
libgcc_s_sjlj_register (fc);
}
in ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c
and if we look into init ()
static void
init (void)
{
void *resume, *personality;
void *handle;
void *sjlj_register, *sjlj_unregister;
handle = __libc_dlopen ("libgcc_s.so.1");
if (handle == NULL
|| (sjlj_register = __libc_dlsym (handle, "_Unwind_SjLj_Register")) ==
NULL
|| (sjlj_unregister = __libc_dlsym (handle, "_Unwind_SjLj_Unregister"))
== NULL
|| (resume = __libc_dlsym (handle, "_Unwind_SjLj_Resume")) == NULL
|| (personality = __libc_dlsym (handle, "__gcc_personality_sj0")) ==
NULL)
__libc_fatal ("libgcc_s.so.1 must be installed for pthread_cancel to
work\n");
thats where the problem happens.
So my solution is to create a RDEPEND for libgcc in busybox.
If you do not use busybox for your image then you need to find out another
package that does the same stuff and create RDEPEND for libgcc for that package
too.
--
Configure bugmail: http://bugs.openembedded.net/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the Openembedded-issues
mailing list