PPC85xxアーキテクチャ用にクロスコンパイルされたvalgridが正常に終了しました。私は私がターゲットフォルダに/home/valg11
フォルダにこれらのファイルを入れて、私はvalgrindのを実行すると、このエラーを取得していますpowerpcのvalgrindを実行中にエラーが発生しました
export VALGRIND_LIB=/home/valg11
としてライブラリをエクスポートしなかった
./coregrind/valgrind
./coregrind/vgpreload_core-ppc32-linux.so
./memcheck/memcheck-ppc32-linux
./memcheck/vgpreload_memcheck-ppc32-linux.so
./default.supp
ファイル次ています。
どこか提案私はvalgrindのは、メモリリークを検出し、不当命令エラーを与えていないvgdbずにvalgrindのを実行しますが、なかったので[[email protected] valg11]# ./valgrind -v /home/val
==988== Memcheck, a memory error detector
==988== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==988== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==988== Command: /home/val
==988==
--988-- Valgrind options:
--988-- -v
--988-- Contents of /proc/version:
--988-- Linux version 2.6.32 ([email protected]) (gcc version 4.2.2) #230 Mon Oct 12 14:02:51 IST 2015
--988--
--988-- Arch and hwcaps: PPC32, BigEndian, ppc32-int-flt-FX-GX
--988-- Page sizes: currently 4096, max supported 65536
--988-- Valgrind library directory: /home/valg11
--988-- Reading syms from /lib/ld-2.8.so
--988-- Reading syms from /home/val
--988-- Reading syms from /home/valg11/memcheck-ppc32-linux
--988-- object doesn't have a dynamic symbol table
--988-- Scheduler: using generic scheduler lock implementation.
--988-- Reading suppressions file: /home/valg11/default.supp
==988== embedded gdbserver: reading from /tmp/vgdb-pipe-from-vgdb-to-988-by-root-on-???
==988== embedded gdbserver: writing to /tmp/vgdb-pipe-to-vgdb-from-988-by-root-on-???
==988== embedded gdbserver: shared mem /tmp/vgdb-pipe-shared-mem-vgdb-988-by-root-on-???
==988==
==988== TO CONTROL THIS PROCESS USING vgdb (which you probably
==988== don't want to do, unless you know exactly what you're doing,
==988== or are doing some strange experiment):
==988== /home/valg11/../../bin/vgdb --pid=988 ...command...
==988==
==988== TO DEBUG THIS PROCESS USING GDB: start GDB like this
==988== /path/to/gdb /home/val
==988== and then give GDB the following command
==988== target remote | /home/valg11/../../bin/vgdb --pid=988
==988== --pid is optional if only one valgrind process is running
==988==
==988== error 22 Invalid argument
==988== error VG_(am_shared_mmap_file_float_valgrind) /tmp/vgdb-pipe-shared-mem-vgdb-988-by-root-on-???
。
[[email protected] valg11]# ./valgrind -v --vgdb=no /home/val
==995== Memcheck, a memory error detector
==995== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==995== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==995== Command: /home/val
==995==
--995-- Valgrind options:
--995-- -v
--995-- --vgdb=no
--995-- Contents of /proc/version:
--995-- Linux version 2.6.32 ([email protected]) (gcc version 4.2.2) #230 Mon Oct 12 14:02:51 IST 2015
--995--
--995-- Arch and hwcaps: PPC32, BigEndian, ppc32-int-flt-FX-GX
--995-- Page sizes: currently 4096, max supported 65536
--995-- Valgrind library directory: /home/valg11
--995-- Reading syms from /lib/ld-2.8.so
--995-- Reading syms from /home/val
--995-- Reading syms from /home/valg11/memcheck-ppc32-linux
--995-- object doesn't have a dynamic symbol table
--995-- Scheduler: using generic scheduler lock implementation.
--995-- Reading suppressions file: /home/valg11/default.supp
disInstr(ppc): unhandled instruction: 0x10E40301
primary 4(0x4), secondary 769(0x301)
==995== valgrind: Unrecognised instruction at address 0x4018ff0.
==995== at 0x4018FF0: memcpy (in /lib/ld-2.8.so)
==995== by 0x40021C3: _dl_start_final (in /lib/ld-2.8.so)
==995== by 0x4015F8B: _start (in /lib/ld-2.8.so)
==995== Your program just tried to execute an instruction that Valgrind
==995== did not recognise. There are two possible reasons for this.
==995== 1. Your program has a bug and erroneously jumped to a non-code
==995== location. If you are running Memcheck and you just saw a
==995== warning about a bad jump, it's probably your program's fault.
==995== 2. The instruction is legitimate but Valgrind doesn't handle it,
==995== i.e. it's Valgrind's fault. If you think this is the case or
==995== you are not sure, please let us know and we'll try to fix it.
==995== Either way, Valgrind will now raise a SIGILL signal which will
==995== probably kill your program.
==995==
==995== Process terminating with default action of signal 4 (SIGILL)
==995== Illegal opcode at address 0x4018FF0
==995== at 0x4018FF0: memcpy (in /lib/ld-2.8.so)
==995== by 0x40021C3: _dl_start_final (in /lib/ld-2.8.so)
==995== by 0x4015F8B: _start (in /lib/ld-2.8.so)
==995==
==995== HEAP SUMMARY:
==995== in use at exit: 0 bytes in 0 blocks
==995== total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==995==
==995== All heap blocks were freed -- no leaks are possible
==995==
==995== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 2)
--995--
--995-- used_suppression: 4 dl-hack1 /home/valg11/default.supp:1205
==995==
==995== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 2)
Illegal instruction
問題の内容がわかりません。誰かがpowerpcアーキテクチャでvalgrindを実行していますか?どのような手順に従うべきですか?
The instruction is legitimate but Valgrind doesn't handle it, i.e. it's Valgrind's fault. If you think this is the case or you are not sure, please let us know and we'll try to fix it.
あなたの実行ファイルが完全に使用しているvalgrindののバージョンでサポートされていないターゲット命令セットでコンパイルされたと思わ:
最新のvalgrindバージョンvalgrind-3.11.0を使用しています。これは私のコンパイラのバージョン情報です ELDKバージョン4.2 ppc_85xx:Build 2008-04-01 –
テストアプリケーションをコンパイルするには、toolchain /opt/eldk-4.2-85xx/usr/binのパスをエクスポートして、ppc-linx- gcc test_app.c -o valコマンドを使用してテストアプリケーションをクロスコンパイルします。 –
コンパイラには、GCCの '-march'オプションでターゲットISAを設定するオプションがありますか? –