[parisc-linux] Re: linux-2.6 deller (ioremap-changes) and more

John David Anglin dave at hiauly1.hia.nrc.ca
Sun Mar 26 12:29:59 MST 2006


> I'm not sure about the debian status.  I believe that Matthias integrated
> the change but there was a regression due to a missing glibc patch
> needed to prevent a SIGSEGV in the unwind code.  Matthias said this
> problem was fixed on March 20.

2.3.6-3 does't have the fix:

dave at hiauly6:~$ objdump -d /lib/libpthread.so.0
/lib/libpthread.so.0:     file format elf32-hppa-linux

Disassembly of section .init:

000041ac <_init>:
    41ac:       6b c2 3f d9     stw rp,-14(sp)
    41b0:       6f c4 00 80     stw,ma r4,40(sp)
    41b4:       6b d3 3f c1     stw r19,-20(sp)
    41b8:       e8 42 02 a0     b,l 8310 <__pthread_initialize_minimal>,rp
    41bc:       08 13 02 44     copy r19,r4
    41c0:       08 04 02 53     copy r4,r19
    41c4:       e8 40 0c 70     b,l 4804 <frame_dummy>,rp
    41c8:       08 00 02 40     nop
    41cc:       e8 44 1d 2c     b,l e068 <__do_global_ctors_aux>,rp
    41d0:       08 00 02 40     nop
    41d4:       4b c2 3f 59     ldw -54(sp),rp
    41d8:       08 04 02 53     copy r4,r19
    41dc:       e8 40 c0 00     bv r0(rp)

000041e0 <_end_init>:
    41e0:       4f c4 3f 81     ldw,mb -40(sp),r4

This .init section isn't built correctly in shared libraries.  The
PIC register r19 needs to be retored after every call if it is
subsequently used.  As can be seen above, there is no restore after
the call to frame_dummy and r19 is needed for the call to
__do_global_ctors_aux.

Dave
-- 
J. David Anglin                                  dave.anglin at nrc-cnrc.gc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)



More information about the parisc-linux mailing list