From 6213779213f2fea4e697955fa529e27da0f65bb1 Mon Sep 17 00:00:00 2001 From: pancake Date: Sun, 25 Sep 2011 21:07:34 +0200 Subject: [PATCH] * Avoid use of extended arm instructions for ut64 - add documentation for installing NDK in archlinux64 - fixes build for android-arm * Import android targets for the build farm --- doc/android | 4 +++ libr/asm/arch/x86/ollyasm/asmserv.c | 2 ++ libr/asm/p/mips.mk | 2 +- libr/debug/debug.c | 4 +-- libr/fs/p/grub/fs/reiserfs.c | 3 +- libr/fs/p/grub/include/grub/types.h | 2 +- mk/android.mk | 2 ++ sys/android-arm.sh | 3 ++ sys/android-build.sh | 44 +++++++++++++++++++++++------ sys/android-shell.sh | 13 ++++++--- sys/android-x86.sh | 3 ++ sys/farm/CONFIG | 2 ++ sys/farm/html.sh | 4 +-- 13 files changed, 68 insertions(+), 20 deletions(-) create mode 100755 sys/android-arm.sh create mode 100755 sys/android-x86.sh diff --git a/doc/android b/doc/android index 69b93a71b3..056610bdca 100644 --- a/doc/android +++ b/doc/android @@ -1,3 +1,7 @@ +Install NDK in archlinux x86-64 + - Enable multilib repo in pacman.conf + - pacman -S lib32-glibc lib32-zlib + To build r2 for android you need to install the NDK: sys/android-shell.sh diff --git a/libr/asm/arch/x86/ollyasm/asmserv.c b/libr/asm/arch/x86/ollyasm/asmserv.c index 5fc4d4b964..a0d87683b2 100644 --- a/libr/asm/arch/x86/ollyasm/asmserv.c +++ b/libr/asm/arch/x86/ollyasm/asmserv.c @@ -714,8 +714,10 @@ int Printfloat4(char *s,float f) { k=sprintf(s,"+NAN "LFMT08,*(ulong *)&f); else if ((*(ulong *)&f & 0xFF800000L)==0xFF800000L) k=sprintf(s,"-NAN "LFMT08,*(ulong *)&f); +#if 0 else if (f==0.0) // By default, 0 is printed without k=sprintf(s,"0.0"); // decimal point, which I don't want. +#endif else k=sprintf(s,"%#.7g",f); return k; diff --git a/libr/asm/p/mips.mk b/libr/asm/p/mips.mk index 7d0453fce1..3ac72c4a9d 100644 --- a/libr/asm/p/mips.mk +++ b/libr/asm/p/mips.mk @@ -9,4 +9,4 @@ ALL_TARGETS+=${TARGET_MIPS} STATIC_OBJ+=${OBJ_MIPS} ${TARGET_MIPS}: ${OBJ_MIPS} - ${CC} $(call libname,asm_mips) ${LDFLAGS} ${CFLAGS} -o ${TARGET_MIPS} ${OBJ_MIPS} + ${CC_LIB} ${TARGET_MIPS} $(call libname,asm_mips) ${LDFLAGS} ${CFLAGS} ${OBJ_MIPS} diff --git a/libr/debug/debug.c b/libr/debug/debug.c index 6a25677458..139cdf84be 100644 --- a/libr/debug/debug.c +++ b/libr/debug/debug.c @@ -99,8 +99,8 @@ R_API int r_debug_set_arch(RDebug *dbg, int arch, int bits) { dbg->arch = arch; return R_TRUE; } - eprintf ("arch (%s) not supported by debug backend (%s)\n", - r_sys_arch_str (arch), dbg->h); + eprintf ("arch (%s, %d) not supported by debug backend\n", + r_sys_arch_str (arch), bits); } return R_FALSE; } diff --git a/libr/fs/p/grub/fs/reiserfs.c b/libr/fs/p/grub/fs/reiserfs.c index fb834dd119..3f831d63d5 100644 --- a/libr/fs/p/grub/fs/reiserfs.c +++ b/libr/fs/p/grub/fs/reiserfs.c @@ -239,7 +239,8 @@ struct grub_reiserfs_data static enum grub_reiserfs_item_type grub_reiserfs_get_key_v2_type (const struct grub_reiserfs_key *key) { - switch (grub_le_to_cpu64 (key->u.v2.offset_type) >> 60) + unsigned long long o = grub_le_to_cpu64 (key->u.v2.offset_type); + switch ((int)(o>>60)) { case 0: return GRUB_REISERFS_STAT; diff --git a/libr/fs/p/grub/include/grub/types.h b/libr/fs/p/grub/include/grub/types.h index 210979e8d7..1b4b228fd9 100644 --- a/libr/fs/p/grub/include/grub/types.h +++ b/libr/fs/p/grub/include/grub/types.h @@ -127,7 +127,7 @@ typedef grub_uint64_t grub_disk_addr_t; (grub_uint16_t) ((_x << 8) | (_x >> 8)); \ }) -#if defined(__GNUC__) && (__GNUC__ > 3) && (__GNUC__ > 4 || __GNUC_MINOR__ >= 3) && defined(GRUB_TARGET_I386) +#if !defined(__ANDROID__) && defined(__GNUC__) && (__GNUC__ > 3) && (__GNUC__ > 4 || __GNUC_MINOR__ >= 3) && defined(GRUB_TARGET_I386) static inline grub_uint32_t grub_swap_bytes32(grub_uint32_t x) { return __builtin_bswap32(x); diff --git a/mk/android.mk b/mk/android.mk index 515f572161..c6e7f2f073 100644 --- a/mk/android.mk +++ b/mk/android.mk @@ -1,9 +1,11 @@ #CC=arm-linux-androideabi-gcc CC=ndk-gcc +#RANLIB=ndk-ranlib RANLIB=arm-linux-androideabi-ranlib ONELIB=0 OSTYPE=android LINK= +#CC_AR=ndk-ar -r ${LIBAR} CC_AR=arm-linux-androideabi-ar -r ${LIBAR} PICFLAGS= CFLAGS+=${PICFLAGS} diff --git a/sys/android-arm.sh b/sys/android-arm.sh new file mode 100755 index 0000000000..e003137ff7 --- /dev/null +++ b/sys/android-arm.sh @@ -0,0 +1,3 @@ +#!/bin/sh +cd `dirname $PWD/$0` +./android-shell.sh ./android-build.sh arm-static diff --git a/sys/android-build.sh b/sys/android-build.sh index 874cf9bee9..452688b912 100755 --- a/sys/android-build.sh +++ b/sys/android-build.sh @@ -2,25 +2,53 @@ cd `dirname $PWD/$0` ; cd .. -[ -z "${NDK_ARCH}" ] && NDK_ARCH=x86 +case "$1" in +"arm") + NDK_ARCH=arm + STATIC_BUILD=0 + ;; +"x86") + NDK_ARCH=x86 + STATIC_BUILD=0 + ;; +arm-static|static-arm) + NDK_ARCH=arm + STATIC_BUILD=1 + ;; +x86-static|static-x86) + NDK_ARCH=x86 + STATIC_BUILD=1 + ;; +"-h") + echo "Usage: android-build.sh [arm|x86][-static]" + exit 1 + ;; +esac + +[ -z "${NDK_ARCH}" ] && NDK_ARCH=arm [ -z "${STATIC_BUILD}" ] && STATIC_BUILD=0 export NDK_ARCH export STATIC_BUILD -if [ 0 = 1 ]; then -make clean +echo "Using NDK_ARCH: ${NDK_ARCH}" +echo "Using STATIC_BUILD: ${STATIC_BUILD}" +sleep 2 + +make mrproper if [ $STATIC_BUILD = 1 ]; then -CFGFLAGS="--without-pic --with-nonpic" + CFGFLAGS="--without-pic --with-nonpic" fi ./configure --with-compiler=android --with-ostype=android \ - --without-ssl --prefix=/data/radare2 ${CFGFLAGS} -make -j 4 -fi + --without-ssl --prefix=/data/radare2 ${CFGFLAGS} || exit 1 +make -j 4 || exit 1 PKG=`./configure --version|head -n1 |cut -d ' ' -f 1` D=${PKG}-android-${NDK_ARCH} rm -rf $D mkdir -p $D -make install DESTDIR=$PWD/$D + +INSTALL_PROGRAM=`grep INSTALL_DATA config-user.mk|cut -d = -f 2` + +make install INSTALL_PROGRAM="${INSTALL_PROGRAM}" DESTDIR=$PWD/$D || exit 1 # TODO: remove unused files like include files and so on cd $D tar czvf ../$D.tar.gz * diff --git a/sys/android-shell.sh b/sys/android-shell.sh index 43c94e52c2..c5877d4242 100755 --- a/sys/android-shell.sh +++ b/sys/android-shell.sh @@ -2,9 +2,11 @@ # android shell ROOT=`dirname $PWD/$0` +OS=`uname|tr 'A-Z' 'a-z'` +[ "${OS}" = darwin ] && OS=mac # TODO: autodetect or gtfo -SDK=${HOME}/Downloads/android-sdk-mac_x86 +SDK=${HOME}/Downloads/android-sdk-${OS}_x86 NDK=${HOME}/Downloads/android-ndk-r6b if [ ! -d "${SDK}" ]; then @@ -16,18 +18,21 @@ if [ ! -d "${NDK}" ]; then exit 1 fi -NDKPATH=${NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/ +NDKPATH_ARM=`echo ${NDK}/toolchains/arm-*/prebuilt/${OS}-x86/bin/` +NDKPATH_X86=`echo ${NDK}/toolchains/x86-*/prebuilt/${OS}-x86/bin/` INCDIR=${NDK}/platforms/android-8/arch-arm/usr/include/ CFLAGS=-I${INCDIR} -PATH=$SDK/tools:$SDK/platform-tools:$NDK:${NDKPATH}:$PATH +PATH=$SDK/tools:$SDK/platform-tools:$NDK:${NDKPATH_X86}:${NDKPATH_ARM}:$PATH export PATH export CFLAGS +LANG=C +export LANG cp ${ROOT}/ndk-gcc ${NDK} chmod +x ${NDK}/ndk-gcc CC=ndk-gcc export CC export PS1 -sh +sh $@ #echo $SHELL #$SHELL diff --git a/sys/android-x86.sh b/sys/android-x86.sh new file mode 100755 index 0000000000..5946c1d919 --- /dev/null +++ b/sys/android-x86.sh @@ -0,0 +1,3 @@ +#!/bin/sh +cd `dirname $PWD/$0` +./android-shell.sh ./android-build.sh x86 diff --git a/sys/farm/CONFIG b/sys/farm/CONFIG index 9889182011..6d448a30df 100644 --- a/sys/farm/CONFIG +++ b/sys/farm/CONFIG @@ -20,5 +20,7 @@ TARGETS=" build bindist mingw32 + android-arm + android-x86 " # mingw64 maemo diff --git a/sys/farm/html.sh b/sys/farm/html.sh index e48115b5cb..b197d84893 100755 --- a/sys/farm/html.sh +++ b/sys/farm/html.sh @@ -44,9 +44,7 @@ for a in log/*.html ; do n=$(echo $f | sed -e 's,.html,,' | sed -e 's,-, ,g') warnings=$(cat $l|grep warning: |wc -l) errors=$(cat $l|grep error: |wc -l) - echo "

$n

" >> log/index.html - echo "

   warnings: $warnings

" >> log/index.html - echo "

   errors: $errors

" >> log/index.html + echo "

$n (w:$warnings e:$errors)

" >> log/index.html done cat <> log/index.html