path: root/cfg/vmware-guest.scc
diff options
authorBruce Ashfield <>2020-02-01 17:52:38 -0500
committerBruce Ashfield <>2020-02-02 02:14:53 -0500
commit6ceaed1d1fcfd3a53a5c221af7cb13c710debc7f (patch)
tree8d6aee8e744d0e2e15643e638efffcac2f08bbe6 /cfg/vmware-guest.scc
parentbb9a06cff974c3d22868e47f46ae425006f79499 (diff)
mips: vdso: fix 'jalr $t9' crash in vdso code
1/1 [ Author: Victor Kamensky Email: Subject: mips: vdso: fix 'jalr $t9' crash in vdso code Date: Fri, 31 Jan 2020 09:39:44 -0800 Observed that when kernel is built with Yocto mips64-poky-linux-gcc, and mips64-poky-linux-gnun32-gcc toolchain, resuling vdso contains 'jalr $t9' instructions in its code and since in vdso case nobody sets GOT table code crashes when instruction reached. On other hand observed that when kernel is built mips-poky-linux-gcc toolchain, the same 'jalr $t9' instruction are replaced with PC relative function calls using 'bal' instructions. The difference boils down to -mrelax-pic-calls and -mexplicit-relocs gcc options that gets different default values depending on gcc target triplets and corresponding binutils. -mrelax-pic-calls got enabled by default only in mips-poky-linux-gcc case. MIPS binuitls ld relies on R_MIPS_JALR relocation to convert 'jalr $t9' into 'bal' and such relocation is generated only if -mrelax-pic-calls option is on. Solution call out -mrelax-pic-calls and -mexplicit-relocs options explicitely while compiling MIPS vdso code. That would get correct and consitent between different toolchains behavior. Reported-by: Bruce Ashfield <> Signed-off-by: Victor Kamensky <> Signed-off-by: Bruce Ashfield <> ] Signed-off-by: Bruce Ashfield <>
Diffstat (limited to 'cfg/vmware-guest.scc')
0 files changed, 0 insertions, 0 deletions