2017-11-22 3 views
0

Google에 비슷한 질문이 많이 있습니다. 모두 시도했지만 아무도 작동하지 않아이 질문을 게시해야합니다.ARM 용 Valgrind를 교차 컴파일 할 수 없습니다.

내 장치 용으로 컴파일 된 일부 이진 파일에서 Valgrind를 사용하여 메모리 누수를 감지하려고합니다 (프로세서 : ARM926EJ-Rev5 (v5l) 사용).

따라서, 내 장치 용 특정 도구 체인을 사용하여 Valgrind를 컴파일하려고합니다.

여기 내 프로세스입니다 를 (이 지원되지 않는 건축가에 대해 불평하지 않도록) 나는 Valgrind의의 3.13.0 및

2/sed "s/armv7/arm/g" configure

1/cd Valgrind-3.13.0 우분투 16

을 사용하고 있습니다.

error: bad value (cortex-a8) for -mcpu= switch 

=> 내 장치 때문에 :

3/./configure --host=arm-none-linux-gnueabi

4/make

다음 오류가 팝업 (리눅스의 기본 대신 내 특정 크로스 컴파일러를 사용) ARM926EJ-S 프로세서를 사용하여 cortex-a8을 Valgrin-3.13.0 폴더의 모든 파일 중 arm926ej-s으로 바꿉니다.

다시 위의 단계를 실행하고 다른 오류가 나옵니다 : 내가 잘못 뭐하는 거지

m_dispatch/dispatch-arm-linux.S: Assembler messages: 
m_dispatch/dispatch-arm-linux.S:104: Error: selected processor does not support `movw r1,#47' 
m_dispatch/dispatch-arm-linux.S:105: Error: selected processor does not support `movw r2,#0' 
m_dispatch/dispatch-arm-linux.S:157: Error: selected processor does not support `movw r1,#:lower16:vgPlain_stats__n_xindirs_32' 
m_dispatch/dispatch-arm-linux.S:158: Error: selected processor does not support `movt r1,#:upper16:vgPlain_stats__n_xindirs_32' 
m_dispatch/dispatch-arm-linux.S:165: Error: selected processor does not support `movw r1,#(((1<<15))-1)' 
m_dispatch/dispatch-arm-linux.S:166: Error: selected processor does not support `movw r4,#:lower16:vgPlain_tt_fast' 
m_dispatch/dispatch-arm-linux.S:169: Error: selected processor does not support `movt r4,#:upper16:vgPlain_tt_fast' 
m_dispatch/dispatch-arm-linux.S:182: Error: selected processor does not support `movw r1,#:lower16:vgPlain_stats__n_xindir_misses_32' 
m_dispatch/dispatch-arm-linux.S:183: Error: selected processor does not support `movt r1,#:upper16:vgPlain_stats__n_xindir_misses_32' 
Makefile:3224: recipe for target 'm_dispatch/libcoregrind_arm_linux_a-dispatch-arm-linux.o' failed 

?

+1

또한 Valgrind를 교차 컴파일해야합니다. 나는이 흐름에 익숙하지 않다. –

답변

1

ARM9는 이전 ARMv5 명령어 세트를 사용합니다. 오류 메시지에서 Valgrind의 어셈블리 코드는 프로세서가 가지고있는 것보다 새로운 ARM (ARMv7) 명령어 세트를 기대합니다.

따라서 valgrind가 작동하려면 위의 어셈블러를 ARMv4로 이식해야합니다.

+0

불행히도, 포팅 어셈블러는 제 지식이 부족하여 시간이 너무 오래 걸릴 수 있습니다. 다른 길을 찾아야 할 것 같아. Valgrind (메모리 누출 검사)와 동등한 소프트웨어를 추천 해 주시겠습니까? ARM926EJ-S에서 실행할 수 있습니까? –

+0

메모리 누수 검사기를 직접 작성하십시오. 모든 메모리 할당과 할당 해제를 추적하는 malloc 훅을 작성할 수 있어야합니다. 호출 스택은 프레임 포인터로 빌드하지 않는 한 조금 문제가 될 수 있습니다. – doron