The assertion fails only if both l_libname and l_name are NULL.
Thanks Andreas, you're right.
Now I have resolved this issue: I need set the value to %rambar1
register in the head.S file.
This register is the configure register for SRAM. Although I not use
SRAM memory, but it
seems I need configure this register, otherwise I will meet the issue
before.
I'm not sure why this fix will affect run time loader. I guess the
toolchain may do some registers' check.
Best Regards,
Lanttor
------------------------------------------------------------------------
*From:* Andreas Schwab <schwab@xxxxxxxxxxxxxx>
*Sent:* 02/23/2010 3:23:28 AM +0800
*To:* Lanttor <lanttor.guo@xxxxxxxxxxxxx>
*CC:* Maxim Kuvyrkov <maxim@xxxxxxxxxxxxxxxx>, Greg Ungerer
<gerg@xxxxxxxxxxxx>, linux-m68k@xxxxxxxxxxxxxxx
*Subject:* One issue during kernel porting on coldfire m5441x: dl_main:
Assertion `_rtld_local._dl_rtld_map.l_libname' failed!
Lanttor <lanttor.guo@xxxxxxxxxxxxx> writes:
1206 if (! GL(dl_rtld_map).l_libname && GL(dl_rtld_map).l_name)
1207 {
1208 /* We were invoked directly, so the program might not have a
1209 PT_INTERP. */
1210 _dl_rtld_libname.name = GL(dl_rtld_map).l_name;
1211 /* _dl_rtld_libname.next = NULL; Already zero. */
1212 GL(dl_rtld_map).l_libname = &_dl_rtld_libname;
1213 }
1214 else
1215 assert (GL(dl_rtld_map).l_libname); /* How else did we get
here? */
So I guess GL(dl_rtld_map).l_libname is not NUL and throws an
exception. The reason is still tracing...
The assertion fails only if both l_libname and l_name are NULL.
Andreas.
--
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html