Hi,
* rewrote the Android.mk of libunwind to make use of autoreconf and libtool * finished my work on libunwind * upgraded my Linaro Android build environment * debugged Linaro Android build failures (#891753) * tested backtracing on the Linaro Android 2.3.5 and 2.3.7 branches * documented debuggerd usage on Android: https://wiki.linaro.org/Platform/Android/DebugAndroidSystemComponents * Debugged a linking failure of the android perflab benchmark that Andy is seeing. Turns out that the GCC is optimizing two consecutive calls to sinf and cosf (same angle) are optimized by the GCC to one sincosf call. The libm provided by the benchmark is lacking sincosf. Workaround is to use -fno-builtin-sinf -fno-builtin-cosf.
Regards Ken
On Sat, Nov 19, 2011 at 10:05 AM, Ken Werner ken.werner@linaro.org wrote:
Hi,
- Debugged a linking failure of the android perflab benchmark that Andy is
seeing. Turns out that the GCC is optimizing two consecutive calls to sinf and cosf (same angle) are optimized by the GCC to one sincosf call. The libm provided by the benchmark is lacking sincosf. Workaround is to use -fno-builtin-sinf -fno-builtin-cosf.
This is set by gcc/config/linux.h: #define TARGET_HAS_SINCOS (OPTION_GLIBC || OPTION_BIONIC)
sincos() first appeared in Android 2.3 which means that programs built with GCC may not work on earlier versions of Android. The Bionic version of sincos() just calls sin() followed by cos(), so you lose in compatibility for no gain in performance.
Patches are welcome,
-- Michael
linaro-toolchain@lists.linaro.org