Fix several COVs, and build issues related to appveyour
This commit is contained in:
parent
277767fd1d
commit
bdfbc4f076
15 changed files with 99 additions and 58 deletions
|
|
@ -118,7 +118,7 @@ static void __sdb_prompt(Sdb *sdb) {
|
|||
static int extract_binobj (const RBinFile *bf, const RBinObject *o, int idx) {
|
||||
ut64 boffset = o ? o->boffset : 0;
|
||||
ut64 bin_size = o ? o->obj_size : 0;
|
||||
const ut8 *bytes = bf ? r_buf_buffer (bf->buf) : NULL;
|
||||
const ut8 *bytes;
|
||||
//ut64 sz = bf ? r_buf_size (bf->buf) : 0;
|
||||
RBinInfo *info = o ? o->info : NULL;
|
||||
const char *arch = info ? info->arch : "unknown";
|
||||
|
|
@ -129,14 +129,18 @@ static int extract_binobj (const RBinFile *bf, const RBinObject *o, int idx) {
|
|||
int res = R_FALSE;
|
||||
|
||||
if (!bf || !o || !filename ) return R_FALSE;
|
||||
if (!arch) arch = "unknown";
|
||||
|
||||
path = strdup (filename);
|
||||
bytes = r_buf_buffer (bf->buf);
|
||||
if (!bytes) {
|
||||
eprintf ("error: BinFile buffer is empty\n");
|
||||
return R_FALSE;
|
||||
}
|
||||
|
||||
if (!arch) arch = "unknown";
|
||||
path = strdup (filename);
|
||||
if (!path) {
|
||||
return R_FALSE;
|
||||
}
|
||||
|
||||
// XXX: Wrong for w32 (/)
|
||||
|
||||
ptr = strrchr (path, DIRSEP);
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
DESTDIR=
|
||||
CC=@CC@
|
||||
WITH_GPL=@WITH_GPL@
|
||||
#HOST_CC=@HOST_CC@
|
||||
# HOST_CC=@HOST_CC@
|
||||
PREFIX=@PREFIX@
|
||||
BINDIR=@BINDIR@
|
||||
LIBDIR=@LIBDIR@
|
||||
|
|
@ -33,6 +33,7 @@ LIBVERSION=@LIBVERSION@
|
|||
|
||||
# ./configure --with-ostype=[linux,osx,solaris,windows] # TODO: rename to w32, w64?
|
||||
OSTYPE=@USEROSTYPE@
|
||||
BUILD_OS=@BUILD_OS@
|
||||
HOST_OS=@HOST_OS@
|
||||
# hack: must be fixed in acr
|
||||
ifneq ($(OSTYPE),darwin)
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ my $bits = 32;
|
|||
|
||||
die "Invalid base address" if ($baddr % 4);
|
||||
|
||||
local $classdump = qx(class-dump -A "$file") or die ("Cannot open file\n");
|
||||
local $classdump = qx(class-dump-z -A "$file") or die ("Cannot open file\n");
|
||||
|
||||
foreach my $line (split /[\r\n]+/, $classdump) {
|
||||
if ($line=~/Arch: /) {
|
||||
|
|
|
|||
|
|
@ -342,16 +342,22 @@ static int *parse_class (RBinFile *binfile, struct r_bin_dex_obj_t *bin, struct
|
|||
char *name;
|
||||
ut64 SF, IF, DM, VM;
|
||||
const ut8 *p, *p_end;
|
||||
char *class_name = dex_class_name (bin, c);
|
||||
if (c->class_data_offset==0) {
|
||||
char *class_name;
|
||||
if (!c || !c->class_data_offset) {
|
||||
// no method here, just class definition
|
||||
//free (class_name);
|
||||
//free (super_name);
|
||||
return NULL;
|
||||
}
|
||||
class_name = dex_class_name (bin, c);
|
||||
if (!class_name) {
|
||||
return NULL;
|
||||
}
|
||||
methods = calloc (sizeof (ut32), bin->header.method_size);
|
||||
if (!methods)
|
||||
if (!methods) {
|
||||
free (class_name);
|
||||
return R_FALSE;
|
||||
}
|
||||
dprintf (" class_data_offset: %d\n", c->class_data_offset);
|
||||
p = r_buf_get_at (binfile->buf, c->class_data_offset, NULL);
|
||||
p_end = p + (binfile->buf->length - c->class_data_offset);
|
||||
|
|
@ -516,7 +522,6 @@ static int dex_loadcode(RBinFile *arch, RBinDexObj *bin) {
|
|||
for (i=0; i<bin->header.class_size; i++) {
|
||||
char *super_name, *class_name;
|
||||
struct dex_class_t *c = &bin->classes[i];
|
||||
if (!c) continue;
|
||||
class_name = dex_class_name (bin, c);
|
||||
super_name = dex_class_super_name (bin, c);
|
||||
dprintf ("{\n");
|
||||
|
|
@ -533,6 +538,7 @@ static int dex_loadcode(RBinFile *arch, RBinDexObj *bin) {
|
|||
continue;
|
||||
}
|
||||
#endif
|
||||
free (methods);
|
||||
methods = parse_class (arch, bin, c, NULL);
|
||||
dprintf (" ],\n");
|
||||
dprintf ("},");
|
||||
|
|
|
|||
|
|
@ -1980,7 +1980,7 @@ static boolt cmd_anal_refs(RCore *core, const char *input) {
|
|||
*q++ = 0;
|
||||
b = r_num_math (core->num, q);
|
||||
} else {
|
||||
b = UT64_MAX;
|
||||
//b = UT64_MAX;
|
||||
b = core->offset;
|
||||
}
|
||||
r_anal_ref_del (core->anal, b, a);
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ static int cmd_flag(void *data, const char *input) {
|
|||
RCore *core = (RCore *)data;
|
||||
ut64 off = core->offset;
|
||||
char *ptr, *str = NULL;
|
||||
RFlagItem *item;
|
||||
char *name = NULL;
|
||||
st64 base;
|
||||
|
||||
|
|
@ -258,18 +259,19 @@ eprintf ("WTF 'f .xxx' adds a variable to the function? ?!!?(%s)\n");
|
|||
p = strchr (arg, ' ');
|
||||
if (p) {
|
||||
*p++ = 0;
|
||||
RFlagItem *item = r_flag_get_i (core->flags,
|
||||
item = r_flag_get_i (core->flags,
|
||||
r_num_math (core->num, str));
|
||||
if (item)
|
||||
item->size = r_num_math (core->num, p);
|
||||
} else {
|
||||
RFlagItem *item = r_flag_get_i (core->flags,
|
||||
item = r_flag_get_i (core->flags,
|
||||
r_num_math (core->num, str));
|
||||
if (item)
|
||||
r_cons_printf ("0x%08"PFMT64x"\n", item->size);
|
||||
}
|
||||
free (arg);
|
||||
} else {
|
||||
RFlagItem *item = r_flag_get_i (core->flags, core->offset);
|
||||
item = r_flag_get_i (core->flags, core->offset);
|
||||
if (item)
|
||||
r_cons_printf ("0x%08"PFMT64x"\n", item->size);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@ static ut64 num_callback(RNum *userptr, const char *str, int *ok) {
|
|||
switch (*str) {
|
||||
case '[':
|
||||
{
|
||||
ut64 n;
|
||||
ut64 n = 0LL;
|
||||
int refsz = (core->assembler->bits & R_SYS_BITS_64)? 8: 4;
|
||||
const char *p = NULL;
|
||||
if (strlen (str)>5)
|
||||
|
|
|
|||
|
|
@ -638,8 +638,9 @@ R_API char *r_sys_cmd_strf(const char *cmd, ...);
|
|||
R_API void r_sys_backtrace(void);
|
||||
|
||||
/* utf8 */
|
||||
typedef wchar_t RRune;
|
||||
R_API int r_utf8_encode (ut8 *ptr, const RRune ch);
|
||||
//typedef wchar_t RRune;
|
||||
typedef int RRune;
|
||||
R_API int r_utf8_encode (ut8 *ptr, const RRune ch);
|
||||
R_API int r_utf8_decode (const ut8 *ptr, int ptrlen, RRune *ch);
|
||||
R_API int r_utf8_encode_str (const RRune *str, ut8 *dst, const int dst_length);
|
||||
R_API int r_utf8_size (const ut8 *ptr);
|
||||
|
|
|
|||
|
|
@ -1005,7 +1005,6 @@ if (!ret)
|
|||
}
|
||||
break;
|
||||
case 1:
|
||||
default: // iova=2 ?
|
||||
if (io->sectonly) {
|
||||
if (r_list_empty (io->sections)) {
|
||||
return R_TRUE;
|
||||
|
|
|
|||
|
|
@ -94,6 +94,9 @@ static int replace(int argc, const char *argv[], char *newstr) {
|
|||
{ 0, "push.w", "push 1"},
|
||||
{ 0, NULL }
|
||||
};
|
||||
if (!newstr) {
|
||||
return R_FALSE;
|
||||
}
|
||||
|
||||
for (i=0; ops[i].op != NULL; i++) {
|
||||
if (ops[i].narg) {
|
||||
|
|
@ -102,18 +105,16 @@ static int replace(int argc, const char *argv[], char *newstr) {
|
|||
}
|
||||
}
|
||||
if (!strcmp (ops[i].op, argv[0])) {
|
||||
if (newstr != NULL) {
|
||||
for (j=k=0; ops[i].str[j]!='\0'; j++, k++) {
|
||||
if (ops[i].str[j]>='0' && ops[i].str[j]<='9') {
|
||||
const char *w = argv[ ops[i].str[j]-'0' ];
|
||||
if (w != NULL) {
|
||||
strcpy (newstr+k, w);
|
||||
k += strlen(w)-1;
|
||||
}
|
||||
} else newstr[k] = ops[i].str[j];
|
||||
}
|
||||
newstr[k]='\0';
|
||||
for (j=k=0; ops[i].str[j]!='\0'; j++, k++) {
|
||||
if (ops[i].str[j]>='0' && ops[i].str[j]<='9') {
|
||||
const char *w = argv[ ops[i].str[j]-'0' ];
|
||||
if (w != NULL) {
|
||||
strcpy (newstr+k, w);
|
||||
k += strlen(w)-1;
|
||||
}
|
||||
} else newstr[k] = ops[i].str[j];
|
||||
}
|
||||
newstr[k]='\0';
|
||||
if (argc == 4 && argv[2][0] == '[') {
|
||||
strcat (newstr+k, " + ");
|
||||
strcat (newstr+k+3, argv[3]);
|
||||
|
|
@ -125,12 +126,10 @@ static int replace(int argc, const char *argv[], char *newstr) {
|
|||
}
|
||||
|
||||
/* TODO: this is slow */
|
||||
if (newstr != NULL) {
|
||||
newstr[0] = '\0';
|
||||
for (i=0; i<argc; i++) {
|
||||
strcat (newstr, argv[i]);
|
||||
strcat (newstr, (i == 0 || i == argc - 1)?" ":",");
|
||||
}
|
||||
newstr[0] = '\0';
|
||||
for (i=0; i<argc; i++) {
|
||||
strcat (newstr, argv[i]);
|
||||
strcat (newstr, (i == 0 || i == argc - 1)?" ":",");
|
||||
}
|
||||
r_str_replace_char (newstr, '{', '(');
|
||||
r_str_replace_char (newstr, '}', ')');
|
||||
|
|
|
|||
|
|
@ -987,11 +987,12 @@ R_API void r_print_fill(RPrint *p, const ut8 *arr, int size) {
|
|||
}
|
||||
//for (j=1;j<arr[i]; j+=INC) p->printf (under);
|
||||
p->printf ("|");
|
||||
if (i+1 == size){
|
||||
if (0>arr[i])
|
||||
for (j=arr[i]+INC+base; j+base<next; j+=INC) p->printf ("_");
|
||||
}else if (arr[i+1] > arr[i]) {
|
||||
for (j=arr[i]+INC+base; j+base<next; j+=INC) p->printf ("_");
|
||||
if (i+1 == size) {
|
||||
for (j=arr[i]+INC+base; j+base<next; j+=INC)
|
||||
p->printf ("_");
|
||||
} else if (arr[i+1] > arr[i]) {
|
||||
for (j=arr[i]+INC+base; j+base<next; j+=INC)
|
||||
p->printf ("_");
|
||||
}
|
||||
p->printf ("\n");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
include ../global.mk
|
||||
include ../config-user.mk
|
||||
include ../mk/${COMPILER}.mk
|
||||
# for EXT_EXE
|
||||
include ../libr/config.mk
|
||||
_INCLUDE_MK_GCC_=
|
||||
include ../mk/${COMPILER}.mk
|
||||
|
||||
WGET?=wget
|
||||
CS_VER=3.0
|
||||
|
|
@ -42,7 +43,7 @@ all:
|
|||
exit 1
|
||||
endif
|
||||
|
||||
preall: sdb/sdb${EXT_EXE} libgdbr libwind capstone-build
|
||||
preall: sdb/sdb sdb/sdb${EXT_EXE} libgdbr libwind capstone-build
|
||||
@for a in ${MODS} ; do \
|
||||
echo $(MAKE) -C $$a ; \
|
||||
$(MAKE) -C $$a HAVE_VALA= ROOT="${PWD}/../" CC="${CC}" ; \
|
||||
|
|
@ -57,20 +58,39 @@ clean mrproper:
|
|||
rm -f sdb/sdb${EXT_EXE}
|
||||
@for a in ${MODS} ; do $(MAKE) -C $$a clean ; done
|
||||
|
||||
$(SDBLIB) sdb/sdb${EXT_EXE}:
|
||||
ifeq ($(BUILD_OS),windows)
|
||||
BUILD_EXT_EXE=.exe
|
||||
else
|
||||
BUILD_EXT_EXE=
|
||||
endif
|
||||
|
||||
$(SDBLIB) sdb/sdb${EXT_EXE} sdb/sdb:
|
||||
@echo
|
||||
@echo BUILD SUMARY
|
||||
@echo ============
|
||||
@echo COMPILER ${COMPILER}
|
||||
@echo CC ${CC}
|
||||
@echo HOST_CC ${HOST_CC}
|
||||
@echo HOST_OS ${HOST_OS}
|
||||
@echo BUILD_OS ${BUILD_OS}
|
||||
@echo ============
|
||||
@echo
|
||||
cd sdb ; $(MAKE) src/sdb-version.h
|
||||
cd sdb ; $(MAKE) clean
|
||||
echo "NATIVE BUILD SDB"
|
||||
cd sdb ; \
|
||||
$(MAKE) clean && \
|
||||
$(MAKE) CC=${HOST_CC} CFLAGS='${HOST_CFLAGS} -fPIC' && \
|
||||
cp -f src/sdb src/.sdb${EXT_EXE}
|
||||
cp -f src/sdb${BUILD_EXT_EXE} src/.sdb${BUILD_EXT_EXE}
|
||||
cd sdb ; $(MAKE) clean
|
||||
cd sdb ; $(MAKE) src/sdb-version.h
|
||||
echo "TRANS BUILD SDB"
|
||||
cd sdb/src ; $(MAKE) ARCH=xxx RANLIB="${RANLIB}" CFLAGS_SHARED="${CFLAGS_SHARED}" \
|
||||
CC="${CC}" AR="${AR}" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" libsdb.a
|
||||
${RANLIB} sdb/src/libsdb.a
|
||||
rm -f sdb/sdb${EXT_EXE}
|
||||
cp sdb/src/.sdb${EXT_EXE} sdb/sdb${EXT_EXE}
|
||||
-cp -f sdb/src/libsdb.a sdb/src/libsdb.${EXT_AR}
|
||||
rm -f $@
|
||||
cp sdb/src/.sdb${BUILD_EXT_EXE} $@
|
||||
|
||||
.PHONY: sdb-sync sync-sdb sdbclean
|
||||
F=README.md config.mk src Makefile Jamroot
|
||||
|
|
@ -83,6 +103,11 @@ libgdbr:
|
|||
libwind:
|
||||
cd wind; $(MAKE) all
|
||||
|
||||
sdb-clean clean-sdb:
|
||||
$(MAKE) -C sdb clean
|
||||
rm -f sdb/sdb.exe
|
||||
rm -f sdb/src/libsdb.a
|
||||
|
||||
sdb-sync sync-sdb:
|
||||
rm -rf sdb sdb.vc
|
||||
git clone --depth 1 ${SDB_URL} sdb.vc
|
||||
|
|
@ -204,5 +229,5 @@ capstone-build: capstone
|
|||
cd capstone && CFLAGS="-Dmips=mips ${CAPSTONE_CFLAGS} $(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
|
||||
$(MAKE) CC="$(CC)" AR_EXT=a IS_CYGWIN=0 CAPSTONE_STATIC=yes CAPSTONE_SHARED=no \
|
||||
RANLIB="$(RANLIB)" AR="$(AR)" IS_MINGW=0 libcapstone.a
|
||||
-mv capstone/libcapstone.a capstone/libcapstone.${EXT_AR}
|
||||
-cp -f capstone/libcapstone.a capstone/libcapstone.${EXT_AR}
|
||||
endif
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
NAME=grubfs
|
||||
|
||||
include ../../config-user.mk
|
||||
include ../../global.mk
|
||||
include ../../mk/${COMPILER}.mk
|
||||
|
||||
EXT_AR?=a
|
||||
LIBAR?=libgrubfs.${EXT_AR}
|
||||
|
|
|
|||
|
|
@ -2,9 +2,10 @@ NAME=r_java
|
|||
LIBAR?=libr_java.a
|
||||
|
||||
include ../../config-user.mk
|
||||
include ../../global.mk
|
||||
_INCLUDE_MK_GCC_=
|
||||
include ../../mk/${COMPILER}.mk
|
||||
SHLR?=$(shell pwd)/..
|
||||
include ../../global.mk
|
||||
include $(SHLR)/zip/deps.mk
|
||||
|
||||
OSTYPE?=$(shell uname | tr 'A-Z' 'a-z')
|
||||
|
|
@ -35,6 +36,7 @@ libr_java.a: ${OBJS}
|
|||
${RANLIB} libr_java.a
|
||||
|
||||
out: ${OBJS} main.o
|
||||
echo ${COMPILER} ${CC}
|
||||
${CC} ${LDFLAGS} ${CFLAGS} -I. ${OBJS} main.o \
|
||||
-lr_util ${SHLR}/sdb/src/libsdb.a ${LINK} -o out
|
||||
|
||||
|
|
|
|||
|
|
@ -7744,21 +7744,20 @@ R_API RList * r_bin_java_get_method_exception_table_with_addr(RBinJavaObj *bin,
|
|||
}
|
||||
|
||||
R_API const RList* r_bin_java_get_methods_list(RBinJavaObj* bin) {
|
||||
if (bin) {
|
||||
return bin->methods_list;
|
||||
} else if (R_BIN_JAVA_GLOBAL_BIN) {
|
||||
if (bin) return bin->methods_list;
|
||||
if (R_BIN_JAVA_GLOBAL_BIN)
|
||||
return R_BIN_JAVA_GLOBAL_BIN->methods_list;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
R_API RList* r_bin_java_get_bin_obj_list_thru_obj(RBinJavaObj *bin_obj) {
|
||||
Sdb * sdb = bin_obj ? bin_obj->AllJavaBinObjs : NULL;
|
||||
if (bin_obj == NULL || sdb == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
RList *the_list = r_list_new();
|
||||
if (sdb == NULL || the_list == NULL) return NULL;
|
||||
RList *the_list;
|
||||
Sdb * sdb;
|
||||
if (!bin_obj) return NULL;
|
||||
sdb = bin_obj->AllJavaBinObjs;
|
||||
if (!sdb) return NULL;
|
||||
the_list = r_list_new();
|
||||
if (!the_list) return NULL;
|
||||
sdb_foreach (sdb, sdb_iterate_build_list, (void *) the_list);
|
||||
return the_list;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue