spider money, gecko, floating.
스파이더몽키 엔진에서 플로팅 연산이 안 되고 죽는다.
js 실행
a = 0.3 입력.
결과
4.231297391278e-3982 뭥미 -_-?
gcc, linux, PXA320, arm, scratchbox, 스크래치박스.
원래 코드가 아키텍쳐 및 정확도 기타 여러가지 여건을 모두 올커버하게 설계된 매우 복잡한 로직을 가지고 있다. 헌데 여기에도 구멍이 있는 듯. 그 코드를 다 들어내자. 어차피 정교한 공학계산을 할 타겟도 아니므로...
jsdtoa.c 에서.
JS_dtostr(.... 찾기
다음 코드로 대체.
sprintf(buffer, "%g", d);
return buffer;
이 코드 자체는 보안 홀 및 잠재적 문제점이 있으니 주의.
ARM의 FPU 문제,
컴파일러 문제,
바이트 얼라인 및 워드 사이즈 문제,
GCC 컴파일 옵션 문제,
libm 문제가 모두 아님을 유의.
헉헉 어려운 거 하나 잡았네.
언능 리눅스 디버거 뭐 하나 제대로 공부 좀 해야지 ㅠ.ㅠ
이제 스레드세이프 하게 재빌드 해보자.