native에서 연산한 결과를 출력하려고 로그출력함수를 사용했습니다.

1. __android_log_print(ANDROID_LOG_INFO, "test", "test");

2. __android_log_print(ANDROID_LOG_INFO, "test", "%d", i);

3. __android_log_print(ANDROID_LOG_INFO, "test", "%f", res);

(i는 int형 변수이고, res는 double형 변수입니다.)

 

1번과 같이 출력할 경우는 정상적으로 출력이 되고,

2번처럼 정수를 출력하고자 할 경우에도 정상적으로 값이 출력되는데,

3번처럼 실수를 출력하고자 할 경우에는 SIGILL (signal 4, Illegal instruction)에러가 발생합니다.

 

SDK는 1.5 r3이고, NDK는 1.5 이고, 단말기의 firmware는 1.6입니다.

firmware의 config파일을 보니 CONFIG_VFP가 활성화되어있지 않습니다.

 

개인적인 생각으로 의심이 가는 부분은 두 가지가 있습니다.

하나는 firmware 버전이 달라서 생길 수도 있을 것이고,

또 다른 하나는 VFP가 꺼져있어서 그럴 것이라고 생각이 됩니다.

 

정확한 원인이 무엇인지 알려주시면 감사하겠습니다.^^

혹, VFP가 원인이라면, 어떻게 활성화시킬 수 있는지 알려주셨으면 좋겠습니다.

(개발에 사용중인 단말은 HTC Dream입니다.)