小编use*_*407的帖子

交叉编译的Valgrind没有检测到明显的泄漏

我将Valgrind编译成openwrt x86平台.在目标上运行时,它不会检测到任何泄漏.在Ubuntu上,它工作正常.

我的测试程序很简单

main()
{
   char *p = malloc(10000);

   *(p-1) = 1;
}
Run Code Online (Sandbox Code Playgroud)

相关的编译步骤

i486-openwrt-linux-uclibc-gcc -c -o leak.o -pipe -march=i486 -fhonour-copts  -I/home/r2/external/openwrt/staging_dir/target-i386_uClibc-0.9.30.1/usr/include -I/home/r2/external/openwrt/staging_dir/target-i386_uClibc-0.9.30.1/include -I/home/r2/external/openwrt/staging_dir/toolchain-i386_gcc-4.1.2_uClibc-0.9.30.1/include  -O0 -g -I. -Idbus -I/home/r2/external/openwrt/staging_dir/target-i386_uClibc-0.9.30.1/usr/include leak.c
leak.c: In function 'main':
leak.c:3: warning: incompatible implicit declaration of built-in function 'malloc'
  CC  leak.c
i486-openwrt-linux-uclibc-gcc leak.o  -L/hom e/r2/external/openwrt/staging_dir/target-i386_uClibc-0.9.30.1/usr/lib -L/home/r2/external/openwrt/staging_dir/target-i386_uClibc-0.9.30.1/lib -L/home/r2/external/openwrt/staging_dir/toolchain-i386_gcc-4.1.2_uClibc-0.9.30.1/lib  -o leak
  LD  leak
Run Code Online (Sandbox Code Playgroud)

它没有静态链接.objdump证实了这一点

objdump -x build_dir/target-i386_uClibc-0.9.30.1/test/leak  

build_dir/target-i386_uClibc-0.9.30.1/test/leak:     file format elf32-i386
build_dir/target-i386_uClibc-0.9.30.1/test/leak
architecture: i386, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x08048340

Program Header:
    PHDR off    0x00000034 vaddr …
Run Code Online (Sandbox Code Playgroud)

x86 valgrind openwrt uclibc

4
推荐指数
1
解决办法
1407
查看次数

标签 统计

openwrt ×1

uclibc ×1

valgrind ×1

x86 ×1