Home | History | Annotate | Download | only in ppc64

Lines Matching refs:glink

70 	//    dynamic function).  This is solely a branch to the glink
73 // 5) We generate the glink resolver stub (only once). This
83 // platforms and ppc64's .glink is like .plt on other
816 // Create the glink resolver if necessary
817 glink := ensureglinkresolver(ctxt)
820 // glink resolver stub)
821 r := glink.AddRel()
823 r.Sym = glink
824 r.Off = int32(glink.Size)
827 glink.AddUint32(ctxt.Arch, 0x48000000) // b .glink
847 // Generate the glink resolver stub if necessary and return the .glink section
849 glink := ctxt.Syms.Lookup(".glink", 0)
850 if glink.Size != 0 {
851 return glink
861 glink.AddUint32(ctxt.Arch, 0x7c0802a6) // mflr r0
862 glink.AddUint32(ctxt.Arch, 0x429f0005) // bcl 20,31,1f
863 glink.AddUint32(ctxt.Arch, 0x7d6802a6) // 1: mflr r11
864 glink.AddUint32(ctxt.Arch, 0x7c0803a6) // mtlf r0
870 glink.AddUint32(ctxt.Arch, 0x3800ffd0) // li r0,-(res_0-1b)=-48
871 glink.AddUint32(ctxt.Arch, 0x7c006214) // add r0,r0,r12
872 glink.AddUint32(ctxt.Arch, 0x7c0b0050) // sub r0,r0,r11
873 glink.AddUint32(ctxt.Arch, 0x7800f082) // srdi r0,r0,2
876 r := glink.AddRel()
878 r.Off = int32(glink.Size)
883 glink.AddUint32(ctxt.Arch, 0x3d600000) // addis r11,0,.plt@ha
884 glink.AddUint32(ctxt.Arch, 0x396b0000) // addi r11,r11,.plt@l
888 glink.AddUint32(ctxt.Arch, 0xe98b0000) // ld r12,0(r11)
889 glink.AddUint32(ctxt.Arch, 0xe96b0008) // ld r11,8(r11)
892 glink.AddUint32(ctxt.Arch, 0x7d8903a6) // mtctr r12
893 glink.AddUint32(ctxt.Arch, 0x4e800420) // bctr
902 ld.Elfwritedynentsymplus(ctxt, s, ld.DT_PPC64_GLINK, glink, glink.Size-32)
904 return glink