* solib-svr4.c (LM_ADDR_CHECK): New comment on PPC-aware condition.
This commit is contained in:
Jan Kratochvil 2010-02-11 23:07:23 +00:00
parent 5d5b640e00
commit 5c0d192f85
2 changed files with 18 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2010-02-11 Jan Kratochvil <jan.kratochvil@redhat.com>
Ulrich Weigand <uweigand@de.ibm.com>
* solib-svr4.c (LM_ADDR_CHECK): New comment on PPC-aware condition.
2010-02-11 Pedro Alves <pedro@codesourcery.com>
* ax-gdb.c (gen_exp_binop_rest) [BINOP_SUBSCRIPT]: Error out if

View File

@ -217,7 +217,19 @@ LM_ADDR_CHECK (struct so_list *so, bfd *abfd)
location, or anything, really. To avoid regressions,
don't adjust the base offset in the latter case, although
odds are that, if things really changed, debugging won't
quite work. */
quite work.
One could expect more the condition
((l_addr & align) == 0 && ((l_dynaddr - dynaddr) & align) == 0)
but the one below is relaxed for PPC. The PPC kernel supports
either 4k or 64k page sizes. To be prepared for 64k pages,
PPC ELF files are built using an alignment requirement of 64k.
However, when running on a kernel supporting 4k pages, the memory
mapping of the library may not actually happen on a 64k boundary!
(In the usual case where (l_addr & align) == 0, this check is
equivalent to the possibly expected check above.) */
if ((l_addr & align) == ((l_dynaddr - dynaddr) & align))
{
l_addr = l_dynaddr - dynaddr;