Hi All,

We have the situation ,where the R12 is pointing to Thunk GEP ,not the
current function  like

       .size   _ZN12Intermediate1vEv,.-_ZN12Intermediate1vEv
        .set    .LTHUNK0,_ZN12Intermediate1vEv
        .align 2
        .globl _ZThn8_N12Intermediate1vEv
        .type   _ZThn8_N12Intermediate1vEv, @function
_ZThn8_N12Intermediate1vEv:
.LFB27:
        .file 2 "/home/vkumar1/tmp/64_bit/qsp_ppc/gnu/dkmcxx/lib.h"
        .loc 2 13 16
        .cfi_startproc
.LCF2:
0:      addis 2,12,.TOC.-.LCF2@ha
        addi 2,2,.TOC.-.LCF2@l
        .localentry     _ZThn8_N12Intermediate1vEv,.-_ZThn8_N12Intermediate1vEv
        addi 3,3,-8
        b .LTHUNK0
        .cfi_endproc
.LFE27:
        .size   _ZThn8_N12Intermediate1vEv,.-_ZThn8_N12Intermediate1vEv
        .section        ".toc","aw"
        .set .LC1,.LC0

.section        ".text"
        .align 2
        .globl _ZN12Intermediate1vEv
        .type   _ZN12Intermediate1vEv, @function
_ZN12Intermediate1vEv:
.LFB25:
        .loc 1 7 23
        .cfi_startproc
.LCF1:
0:      addis 2,12,.TOC.-.LCF1@ha
        addi 2,2,.TOC.-.LCF1@l
        .localentry     _ZN12Intermediate1vEv,.-_ZN12Intermediate1vEv
        mflr 0
        std 0,16(1)
        std 31,-8(1)
        stdu 1,-64(1)

like above the control  from "_ZThn8_N12Intermediate1vEv" (support
function for this pointer update)  is transferred
"_ZN12Intermediate1vEv" by b  inst (where its not updating the r12)
and in the beginning  of   "_ZN12Intermediate1vEv" we are loading the
toc base from r12 (which is incorrect ) ,we are investigating the
issue and one way to fix the issue is that make THUNK to update the
r12 ,the cal like bctrl  or  load the r12 with the function address in
the _ZN12Intermediate1vEv prologue code .

But before we go ahead ,please share your thoughts or shed some lights
on the same .

Thank you
~Umesh

Reply via email to