Linux MIPS目标的Valgrind链接失败:重定位被截断,以适应针对“\u gp\u disp”的R\u MIPS\u HI16

Linux MIPS目标的Valgrind链接失败:重定位被截断,以适应针对“\u gp\u disp”的R\u MIPS\u HI16,linux,debugging,valgrind,embedded-linux,Linux,Debugging,Valgrind,Embedded Linux,我使用的是基于gcc版本4.2.0的mips编译器。当我为mips编译valgrind 3.9.0时,我得到了链接器错误,因为重新定位被截断以适应:R_mips_HI16与`_gp_disp ` 查看下面的详细日志 进入目录valgrind-3.9.0/memcheck' ../corefrind/link_tool_exe_linux 0x38000000 MIPSel/bin/MIPSel percello linux gnu gcc-Wno long-Ikernel5/-Ikernel5/

我使用的是基于gcc版本4.2.0的mips编译器。当我为mips编译valgrind 3.9.0时,我得到了链接器错误,因为重新定位被截断以适应:R_mips_HI16与`_gp_disp `

查看下面的详细日志

进入目录valgrind-3.9.0/memcheck' ../corefrind/link_tool_exe_linux 0x38000000 MIPSel/bin/MIPSel percello linux gnu gcc-Wno long-Ikernel5/-Ikernel5/include-D_ustruct_EXEC_uoverride-Wwrite strings-fno堆栈保护器-o memcheck-mips32-linux-O2-g-Wall-Wmissing原型-Wshadow-Wpointer arith-Wstrict原型-Wmissing声明-Wno格式零长度-f没有严格的别名-fno内置-mips32-O2-静态-nodefaultlibs-nostartfiles-u启动memcheck\u mips32\u linux-mc\u leakcheck.o memcheck\u mips32\u linux-mc\u malloc\u wrappers.o memcheck\u mips32\u linux-mc\u main.o memcheck\u mips32\u linux-mc\u translate.o memcheck\u mips32\u linux-mc\u machine.o memcheck\u mips32\u linux-mc\u-mc\u wrappers.o memcheck\u mips32\linux-cores32\mc.a../VEX/libvex-mips32-linux.a-lgcc memcheck\u mips32\u linux-mc\u leakcheck.o:在函数pp\u heuristic'中: valgrind-3.9.0/memcheck/mc_leakcheck.c:593:重新定位被截断以适合:R_MIPS_HI16针对_gp_disp' memcheck\u mips32\u linux-mc\u leakcheck.o:在函数中搜索\u地址\u在\u GP\u reg'中: valgrind-3.9.0/memcheck/mc_leakcheck.c:1841:重新定位被截断以适应:R_MIPS_HI16反对_gp_disp' memcheck\u mips32\u linux-mc\u leakcheck.o:在函数get\u printing\u rules'中: valgrind-3.9.0/memcheck/mc_leakcheck.c:1178:重新定位被截断以适合:R_MIPS_HI16针对_gp_disp' memcheck\u mips32\u linux-mc\u leakcheck.o:在函数lc\u push'中: valgrind-3.9.0/memcheck/mc_leakcheck.c:563:重新定位被截断以适合:R_MIPS_HI16针对_gp_disp' memcheck\u mips32\u linux-mc\u leakcheck.o:在函数find\u active\u chunks'中: valgrind-3.9.0/memcheck/mc_leakcheck.c:333:重新定位被截断以适合:R_MIPS_HI16针对_gp_disp' memcheck\u mips32\u linux-mc\u leakcheck.o:在上面的功能化\u ptr\u页面0中\u是\u vtable\u addr': valgrind-3.9.0/memcheck/mc_leakcheck.c:612:根据gp_disp' memcheck\u mips32\u linux-mc\u leakcheck.o:在函数lc\u中是\u块\u ptr': valgrind-3.9.0/memcheck/mc_leakcheck.c:523:重新定位被截断以适应:R_MIPS_HI16针对_gp_disp' memcheck\u mips32\u linux-mc\u leakcheck.o:函数中的启发式\u可达性': valgrind-3.9.0/memcheck/mc_leakcheck.c:687:重新定位被截断以适合:R_MIPS_HI16针对_gp_disp' memcheck\u mips32\u linux-mc\u leakcheck.o:在函数lc\u push\u中,如果有块,则不带团: valgrind-3.9.0/memcheck/mc_leakcheck.c:781:重新定位被截断以适合:R_MIPS_HI16针对_gp_disp' memcheck\u mips32\u linux-mc\u leakcheck.o:在函数lc\u push\u if\u chunk\u ptr\u register': valgrind-3.9.0/memcheck/mc_leakcheck.c:839:重新定位被截断以适应:R_MIPS_HI16针对_gp_disp' memcheck\u mips32\u linux-mc\u leakcheck.o:在函数lc\u scan\u memory'中: valgrind-3.9.0/memcheck/mc_leakcheck.c:946:输出中省略了额外的重新定位溢出 collect2:ld返回了1个退出状态 生成[3]:*[memcheck-mips32-linux]错误1 make[3]:离开目录valgrind-3.9.0/memcheck' 生成[2]:***[all recursive]错误1 make[2]:离开directoryvalgrind-3.9.0/memcheck' 生成[1]:*[all recursive]错误1 make[1]:离开目录“valgrind-3.9.0” make:[全部]错误2

如需更多信息,请告知。 当做
eswar

是否设置了CFLAGS??如果您使用比gcc 4.5.1更旧的gcc版本编译Valgrind,则必须指定CFLAGS EX:CFLAGS=-mips32r2-mplt