Hi Umesh, Please spell out "global entry point", almost everything and everyone does.
On Wed, May 15, 2019 at 08:57:29PM +0530, Umesh Kalappa wrote: > .set .LTHUNK0,_ZN12Intermediate1vEv > _ZThn8_N12Intermediate1vEv: > .LCF2: > 0: addis 2,12,.TOC.-.LCF2@ha > addi 2,2,.TOC.-.LCF2@l > .localentry > _ZThn8_N12Intermediate1vEv,.-_ZThn8_N12Intermediate1vEv > b .LTHUNK0 > _ZN12Intermediate1vEv: > .LCF1: > 0: addis 2,12,.TOC.-.LCF1@ha > addi 2,2,.TOC.-.LCF1@l > 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 . The thunk should point to the local entry point instead, I guess? Please open a PR, with compilable testcase, and other relevant info (if you need some specific -mcpu= for example, or other flags, do mention that!) See https://gcc.gnu.org/bugs.html for more info. Thanks! Segher