Fix lot of warnings

This commit is contained in:
pancake 2013-09-14 14:04:08 +02:00
parent dece987ca3
commit ae97789986
20 changed files with 442 additions and 660 deletions

View File

@ -512,8 +512,8 @@ R_API char *r_anal_fcn_to_string(RAnal *a, RAnalFunction* fs) {
arg->type, arg->name, arg->delta, arg->type->custom.a->count);
else
#endif
sign = r_str_concatf (sign, i?", %s %s:%02x":"%s %s:%02x",
arg->type, arg->name, arg->delta);
sign = r_str_concatf (sign, i?", %s %s:%02x":"%s %s:%02x",
arg->type, arg->name, arg->delta);
}
return (sign = r_str_concatf (sign, ");"));
}
@ -522,7 +522,6 @@ sign = r_str_concatf (sign, i?", %s %s:%02x":"%s %s:%02x",
/* set function signature from string */
R_API int r_anal_str_to_fcn(RAnal *a, RAnalFunction *f, const char *sig) {
char *str; //*p, *q, *r
RAnalType *t;
if (!a || !f || !sig) {
eprintf ("r_anal_str_to_fcn: No function received\n");
@ -536,6 +535,7 @@ R_API int r_anal_str_to_fcn(RAnal *a, RAnalFunction *f, const char *sig) {
/* TODO: Improve arguments parsing */
/*
RAnalType *t;
t = r_anal_str_to_type(a, str);
str = strdup (sig);

View File

@ -23,6 +23,7 @@
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "arc-ext.h"
@ -114,6 +115,7 @@ static struct arcExtMap arc_extension_map;
/* local functions */
/* -------------------------------------------------------------------------- */
#if 0
static void create_map(unsigned char *block, unsigned long length)
{
unsigned char *p = block;
@ -267,6 +269,7 @@ static void destroy_map(void)
memset (&arc_extension_map, 0, sizeof (arc_extension_map));
}
#endif
static const char* ExtReadWrite_image(enum ExtReadWrite val)

View File

@ -2895,7 +2895,9 @@ print_insn_neon (struct disassemble_info *info, long given, bfd_boolean thumb)
if (isfloat)
{
unsigned char valbytes[4];
#if HAVE_FLOAT
double fvalue;
#endif
/* Do this a byte at a time so we don't have to
worry about the host's endianness. */

View File

@ -309,7 +309,7 @@ static st8 *decode_ins(st32 hash_code, ut32 ins_pos, ut32 ins_off, ut32 *ins_len
}
len = (ut32)aux - (ut32)pos;
len = (ut32)(size_t)(aux-pos);
if(len >= 80) {
fprintf(stderr, "Invalid length token %d\n", len); *err_code = -1; return NULL;
}
@ -325,7 +325,7 @@ static st8 *decode_ins(st32 hash_code, ut32 ins_pos, ut32 ins_off, ut32 *ins_len
reg = NULL;
for(i = 0; i < len; i++) {
if(token_aux[i] == ',') {
len = (unsigned int)&token_aux[i] - (unsigned int)token_aux;
len = (unsigned int)(size_t)(&token_aux[i] - token_aux);
reg = &token_aux[i + 1];
if(C55PLUS_DEBUG)

View File

@ -10,7 +10,7 @@
#include "../arch/arm/winedbg/be_arm.h"
static int disassemble(RAsm *a, RAsmOp *op, const ut8 *buf, int len) {
char buf2[4];
ut8 buf2[4];
struct arm_insn *arminsn = arm_new();
arm_set_pc (arminsn, a->pc);
arm_set_thumb (arminsn, a->bits == 16);

View File

@ -1,4 +1,4 @@
/* radare - LGPL - Copyright 2009-2011 nibble<.ds@gmail.com> */
/* radare - LGPL - Copyright 2009-2013 - nibble, pancake */
#define R_BIN_MACH064 1
#include "bin_mach0.c"
@ -36,11 +36,7 @@ static RBuffer* create(RBin* bin, const ut8 *code, int codelen, const ut8 *data,
D(0x80000003); // unknown subtype issue
D (2); // filetype (executable)
if (data && datalen>0) {
ncmds = 3;
} else {
ncmds = 2;
}
ncmds = (data && datalen>0)? 3: 2;
/* COMMANDS */
D (ncmds); // ncmds
@ -197,7 +193,7 @@ RBinPlugin r_bin_plugin_mach064 = {
.info = &info,
.fields = NULL,
.libs = &libs,
.relocs = NULL,
.relocs = &relocs,
.meta = NULL,
.write = NULL,
.create = &create,

View File

@ -34,7 +34,7 @@ struct r_bin_plugin_t r_bin_plugin_pe64 = {
.info = &info,
.fields = NULL,
.libs = &libs,
.relocs = NULL,
.relocs = &relocs,
.meta = NULL,
.write = NULL,
};

View File

@ -837,7 +837,7 @@ r_config_set (cfg, "asm.arch", R_SYS_ARCH);
r_config_desc (cfg, "hex.cols", "Configure the number of columns in hexdump");
r_config_set_cb (cfg, "scr.html", "false", &config_scrhtml_callback);
r_config_desc (cfg, "scr.html", "If enabled disassembly use HTML syntax");
r_config_set_cb (cfg, "scr.heightfix", "false", &config_widthfix_callback);
r_config_set_cb (cfg, "scr.heightfix", "false", &config_heightfix_callback);
r_config_desc (cfg, "scr.heightfix", "Workaround for Linux TTY");
r_config_set_cb (cfg, "scr.widthfix", "false", &config_widthfix_callback);
r_config_desc (cfg, "scr.widthfix", "Workaround for Prompt iOS ssh client");

View File

@ -569,7 +569,7 @@ R_API int r_fs_prompt (RFS *fs, const char *root) {
while (*input == ' ')
input++;
if (!strcmp (input, "..")) {
char *p = r_str_lchr (path, '/');
char *p = (char *)r_str_lchr (path, '/');
if (p) p[(p==path)?1:0]=0;
} else {
strcat (path, "/");

View File

@ -76,7 +76,7 @@ static RIODesc *ewf__open(RIO *io, const char *pathname, int rw, int mode) {
ut8 hash[1024];
size64_t media_size;
uint32_t bytes_per_sector;
uint64_t amount_of_sectors;
//uint64_t amount_of_sectors;
uint32_t error_granularity;
//uint32_t amount_of_acquiry_errors;
int8_t compression_level;

View File

@ -14,6 +14,7 @@
#include <sys/types.h>
#include <sys/wait.h>
#include <mach/exception_types.h>
#include <mach/mach_vm.h>
#include <mach/mach_init.h>
#include <mach/mach_port.h>
#include <mach/mach_traps.h>

View File

@ -6,7 +6,7 @@
/* parse C code and return it in key-value form */
static void appendstring(char *msg, char **s) {
static void appendstring(const char *msg, char **s) {
if (!s)
printf ("%s\n", msg);
else

View File

@ -284,7 +284,7 @@ R_API char *r_str_word_get0set(char *stra, int stralen, int idx, const char *new
int alen, blen, nlen;
if (!stra && !newstr) return NULL;
if (stra)
p = r_str_word_get0 (stra, idx);
p = (char *)r_str_word_get0 (stra, idx);
if (!p) {
int nslen = strlen (newstr);
out = malloc (nslen+1);
@ -303,7 +303,7 @@ R_API char *r_str_word_get0set(char *stra, int stralen, int idx, const char *new
memcpy (out, stra, alen);
memcpy (out+alen, newstr, strlen (newstr)+1);
if (blen>0)
memcpy (out+alen+strlen (newstr)+1, p+strlen(p)+1, blen)+1;
memcpy (out+alen+strlen (newstr)+1, p+strlen (p)+1, blen+1);
out[nlen+1] = 0;
if (newlen)
*newlen = nlen + ((blen==0)?1:0);
@ -316,7 +316,7 @@ R_API const char *r_str_word_get0(const char *str, int idx) {
if (ptr == NULL)
return (char *)nullstr;
for (i=0; *ptr && i != idx; i++)
ptr = ptr + strlen(ptr) + 1;
ptr += strlen (ptr) + 1;
return ptr;
}
@ -623,7 +623,7 @@ R_API char* r_str_replace(char *str, const char *key, const char *val, int g) {
int klen = strlen (key);
int vlen = strlen (val);
int slen = strlen (str);
char *new, *old, *p2, *p = str;
char *new, *old, *p = str;
for (i = 0; i < slen; ) {
p = (char *)r_mem_mem (
(const ut8*)str + i, slen - i,

View File

@ -3,8 +3,10 @@
#if __WINDOWS__
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#ifndef __CYGWIN__
#include <tchar.h>
#endif
#define BUFSIZE 1024
void r_sys_perror(const char *fun);

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
/* radare - LGPL - Copyright 2007-2013 - pancake
class.h rewrite: Adam Pridgen <dso@rice.edu || adam.pridgen@thecoverofnight.com>
*/
*/
#ifndef _INCLUDE_JAVA_CLASS_H_
#define _INCLUDE_JAVA_CLASS_H_
@ -21,12 +21,9 @@
#define RBIN_JAVA_LONG(x,y) ( ((ut64) R_BIN_JAVA_UINT (x, y) << 32) | ((ut64)R_BIN_JAVA_UINT (x, y+4) & 0xffffffff))
//#define R_BIN_JAVA_DOUBLE(x,y) ((double)RBIN_JAVA_LONG(x,y))
//#define R_BIN_JAVA_SWAPUSHORT(x) ((ut16)((x<<8)|((x>>8)&0x00FF)))
// Intentionally not R_API
void copy_type_info_to_stack_frame_list(RList *type_list, RList *sf_list);
void copy_type_info_to_stack_frame_list_up_to_idx(RList *type_list, RList *sf_list, ut64 idx);
@ -47,12 +44,12 @@ typedef enum{
R_BIN_JAVA_METHOD_ACC_SYNCHRONIZED = 0x0020,
R_BIN_JAVA_METHOD_ACC_BRIDGE = 0x0040,
R_BIN_JAVA_METHOD_ACC_VARARGS = 0x0080,
R_BIN_JAVA_METHOD_ACC_NATIVE = 0x0100,
R_BIN_JAVA_METHOD_ACC_INTERFACE = 0x0200,
R_BIN_JAVA_METHOD_ACC_ABSTRACT = 0x0400,
R_BIN_JAVA_METHOD_ACC_STRICT= 0x0800,
R_BIN_JAVA_METHOD_ACC_SYNTHETIC = 0x1000,
R_BIN_JAVA_METHOD_ACC_ANNOTATION = 0x2000,
R_BIN_JAVA_METHOD_ACC_ENUM = 0x4000
@ -68,12 +65,12 @@ typedef enum{
R_BIN_JAVA_CLASS_ACC_SUPER = 0x0020,
R_BIN_JAVA_CLASS_ACC_BRIDGE = 0x0040,
R_BIN_JAVA_CLASS_ACC_VARARGS = 0x0080,
R_BIN_JAVA_CLASS_ACC_NATIVE = 0x0100,
R_BIN_JAVA_CLASS_ACC_INTERFACE = 0x0200,
R_BIN_JAVA_CLASS_ACC_ABSTRACT = 0x0400,
R_BIN_JAVA_CLASS_ACC_STRICT= 0x0800,
R_BIN_JAVA_CLASS_ACC_SYNTHETIC = 0x1000,
R_BIN_JAVA_CLASS_ACC_ANNOTATION = 0x2000,
R_BIN_JAVA_CLASS_ACC_ENUM = 0x4000
@ -158,11 +155,6 @@ typedef enum {
R_BIN_JAVA_ATTR_TYPE_FAILED_ATTR
} R_BIN_JAVA_ATTR_TYPE;
typedef enum{
R_BIN_JAVA_STACKMAP_TOP = 0,
R_BIN_JAVA_STACKMAP_INTEGER,
@ -174,9 +166,7 @@ typedef enum{
R_BIN_JAVA_STACKMAP_OBJECT,
R_BIN_JAVA_STACKMAP_UNINIT,
R_BIN_JAVA_STACKMAP_UNKNOWN
}R_BIN_JAVA_STACKMAP_TYPE;
} R_BIN_JAVA_STACKMAP_TYPE;
typedef enum {
R_BIN_JAVA_FIELD_TYPE_FIELD = 0,
@ -184,7 +174,6 @@ typedef enum {
R_BIN_JAVA_FIELD_TYPE_INTERFACE
} R_BIN_JAVA_FIELD_TYPE;
typedef struct r_bin_java_meta{
ut64 file_offset;
void *type_info;
@ -218,7 +207,7 @@ typedef struct r_bin_java_interfacemethodref_info_t {
typedef struct r_bin_java_methodhandle_info_t {
ut8 reference_kind;
ut16 reference_index;
ut16 reference_index;
} RBinJavaCPTypeMethodHandle;
typedef struct r_bin_java_methodtype_info_t {
@ -226,11 +215,10 @@ typedef struct r_bin_java_methodtype_info_t {
} RBinJavaCPTypeMethodType;
typedef struct r_bin_java_invokedynamic_info_t {
ut16 bootstrap_method_attr_index;
ut16 name_and_type_index;
ut16 bootstrap_method_attr_index;
ut16 name_and_type_index;
} RBinJavaCPTypeInvokeDynamic;
/* Primitive Type Informations */
typedef struct r_bin_java_string_info_t {
@ -238,15 +226,15 @@ typedef struct r_bin_java_string_info_t {
} RBinJavaCPTypeString;
typedef struct r_bin_java_integer_info_t {
union{
union {
ut8 raw[4];
ut32 dword;
} bytes;
} RBinJavaCPTypeInteger;
typedef struct r_bin_java_float_info_t {
union{
union {
ut8 raw[4];
ut32 dword;
} bytes;
@ -254,7 +242,7 @@ typedef struct r_bin_java_float_info_t {
typedef struct r_bin_java_long_info_t {
union{
union {
ut8 raw[8];
ut64 qword;
struct{
@ -265,7 +253,7 @@ typedef struct r_bin_java_long_info_t {
} RBinJavaCPTypeLong;
typedef struct r_bin_java_double_info_t {
union{
union {
ut8 raw[8];
struct{
ut32 high;
@ -290,7 +278,7 @@ typedef struct r_bin_java_utf8_info_t {
typedef struct r_bin_java_cp_object_t {
RBinJavaMetaInfo *metas;
RBinJavaMetaInfo *metas;
ut64 file_offset;
ut8 tag;
union {
@ -298,7 +286,7 @@ typedef struct r_bin_java_cp_object_t {
RBinJavaCPTypeMethodRef cp_method;
RBinJavaCPTypeFieldRef cp_field;
RBinJavaCPTypeInterfaceMethodRef cp_interface;
RBinJavaCPTypeString cp_string;
RBinJavaCPTypeInteger cp_integer;
RBinJavaCPTypeFloat cp_float;
@ -311,8 +299,8 @@ typedef struct r_bin_java_cp_object_t {
RBinJavaCPTypeMethodType cp_method_type;
RBinJavaCPTypeInvokeDynamic cp_invoke_dynamic;
} info;
char * name;
ut8 * value;
char* name;
ut8* value;
} RBinJavaCPTypeObj;
@ -324,15 +312,15 @@ typedef struct r_bin_java_stack_map_frame_t { // attribute StackMap
ut8 type;
struct r_bin_java_stack_map_frame_t *p_stack_frame;
RBinJavaMetaInfo *metas;
ut32 offset_delta;
ut32 number_of_locals;
// list of verification objects;
RList * local_items;
RList* local_items;
ut32 number_of_stack_items;
// list of verification objects;
RList * stack_items;
RList* stack_items;
}RBinJavaStackMapFrame;
@ -361,33 +349,33 @@ typedef struct r_bin_java_boot_strap_method_t{
ut64 file_offset;
ut64 size;
ut16 bootstrap_method_ref;
ut16 num_bootstrap_arguments;
// List of RBinJavaCodeAttribute
RList *bootstrap_arguments;
ut16 num_bootstrap_arguments;
// List of RBinJavaCodeAttribute
RList *bootstrap_arguments;
} RBinJavaBootStrapMethod;
typedef struct r_bin_java_boot_strap_methods_t{
ut16 num_bootstrap_methods;
RList *bootstrap_methods;
ut16 num_bootstrap_methods;
RList *bootstrap_methods;
}RBinJavaBootstrapMethodsAttr;
typedef struct {
ut16 type_name_idx;
ut16 const_name_idx;
RBinJavaCPTypeObj *const_name_cp_obj;
RBinJavaCPTypeObj *type_name_cp_obj;
ut16 type_name_idx;
ut16 const_name_idx;
RBinJavaCPTypeObj *const_name_cp_obj;
RBinJavaCPTypeObj *type_name_cp_obj;
}RBinJavaEnumConstValue;
typedef struct {
ut16 const_value_idx;
RBinJavaCPTypeObj *const_value_cp_obj;
ut16 const_value_idx;
RBinJavaCPTypeObj *const_value_cp_obj;
}RBinJavaConstValue;
typedef struct {
ut16 class_info_idx;
RBinJavaCPTypeObj *class_info_cp_obj;;
ut16 class_info_idx;
RBinJavaCPTypeObj *class_info_cp_obj;;
}RBinJavaClassInfoValue;
typedef struct r_bin_java_element_value_ary_t{
@ -399,10 +387,10 @@ typedef struct r_bin_java_element_value_ary_t{
typedef struct r_bin_java_annotation_t{
ut64 size;
ut16 type_idx;
ut16 num_element_value_pairs;
RList *element_value_pairs;
ut64 size;
ut16 type_idx;
ut16 num_element_value_pairs;
RList *element_value_pairs;
}RBinJavaAnnotation;
@ -423,7 +411,7 @@ typedef enum {
R_BIN_JAVA_EV_TAG_CLASS = 'c',
R_BIN_JAVA_EV_TAG_ANNOTATION = '@',
// R_BIN_JAVA_EV_TAG_CLASSNAME = 'L',
// R_BIN_JAVA_EV_TAG_CLASSNAME = 'L',
R_BIN_JAVA_EV_TAG_UNKNOWN = 0xff,
} R_BIN_JAVA_EV_TAG;
@ -432,24 +420,24 @@ typedef enum {
typedef struct r_bin_java_element_value_t {
RBinJavaMetaInfo *metas;
ut64 size;
ut8 tag;
ut64 file_offset;
union {
RBinJavaConstValue const_value;
RBinJavaEnumConstValue enum_const_value;
RBinJavaClassInfoValue class_value;
RBinJavaAnnotation annotation_value;
RBinJavaElementValueArray array_value;
} value;
ut64 size;
ut8 tag;
ut64 file_offset;
union {
RBinJavaConstValue const_value;
RBinJavaEnumConstValue enum_const_value;
RBinJavaClassInfoValue class_value;
RBinJavaAnnotation annotation_value;
RBinJavaElementValueArray array_value;
} value;
}RBinJavaElementValue;
typedef struct r_bin_java_element_value_pair_t{
ut64 file_offset;
ut64 size;
ut16 element_name_idx;
char * name;
RBinJavaElementValue *value;
char* name;
RBinJavaElementValue *value;
}RBinJavaElementValuePair;
@ -474,35 +462,30 @@ typedef RBinJavaRuntimeVisibleParameterAnnotationsAttr RBinJavaRuntimeInvisibleP
typedef struct r_bin_java_parameter_annotations_attr_t {
RBinJavaElementValue *default_value;
}RBinJavaAnnotationDefaultAttr;
} RBinJavaAnnotationDefaultAttr;
typedef struct r_bin_java_stack_map_table_attr_t { // attribute StackMap
ut32 code_size;
ut32 number_of_entries;
RList * stack_map_frame_entries;
}RBinJavaStackMapTableAttr;
RList* stack_map_frame_entries;
} RBinJavaStackMapTableAttr;
typedef struct r_bin_java_signature_attr_t {
ut16 signature_idx;
char *signature;
}RBinJavaSignatureAttr;
} RBinJavaSignatureAttr;
typedef struct r_bin_java_stack_verification_t{
ut64 file_offset;
ut64 size;
ut8 tag;
char *name;
union{
union {
ut16 obj_val_cp_idx;
ut16 uninit_offset;
} info;
}RBinJavaVerificationObj;
} RBinJavaVerificationObj;
typedef struct r_bin_java_fm_t {
RBinJavaMetaInfo *metas;
@ -516,20 +499,14 @@ typedef struct r_bin_java_fm_t {
ut16 flags;
ut16 name_idx;
ut16 descriptor_idx;
RBinJavaCPTypeObj *field_ref_cp_obj;
ut16 attr_count;
RList *attributes;
ut64 method_number;
} RBinJavaField;
typedef struct r_bin_java_interface_info_desc_t{
char *name;
ut64 size;
@ -538,19 +515,16 @@ typedef struct r_bin_java_interface_info_desc_t{
RBinJavaCPTypeObj *cp_class;
} RBinJavaInterfaceInfo;
typedef struct r_bin_java_attr_constant_t {
ut16 constantvalue_idx;
} RBinJavaConstantValueAttr;
typedef struct r_bin_java_attr_exceptions_t {
ut16 number_of_exceptions;
ut16 * exception_idx_table;
ut16* exception_idx_table;
} RBinJavaExceptionsAttr;
typedef struct r_bin_java_attr_exception_table_entry_t {
typedef struct r_bin_java_attr_exception_table_entry_t {
ut64 file_offset;
ut16 start_pc;
ut16 end_pc;
@ -569,7 +543,7 @@ typedef struct r_bin_java_attr_code_t {
ut32 exception_table_length;
RList *exception_table; // RBinJavaExceptionTableEntry *
ut16 attributes_count;
RList *attributes;
RBinJavaStackMapFrame *implicit_frame;
@ -579,7 +553,7 @@ typedef struct r_bin_java_attr_code_t {
typedef struct r_bin_java_attr_inner_classes_t {
ut16 number_of_classes;
RList * classes;
RList* classes;
} RBinJavaInnerClassesAttribute;
@ -598,9 +572,9 @@ typedef struct r_bin_java_line_number_table_t{
typedef struct r_bin_java_attr_linenum_t {
ut64 file_offset;
ut16 line_number_table_length;
RList * line_number_table; // RBinJavaLineNumberTable*
ut64 file_offset;
ut16 line_number_table_length;
RList* line_number_table; // RBinJavaLineNumberTable*
}RBinJavaLineNumberTableAttribute;
typedef struct r_bin_java_attr_localvariabletype_t{
@ -617,8 +591,8 @@ typedef struct r_bin_java_attr_localvariabletype_t{
}RBinJavaLocalVariableTypeAttribute;
typedef struct r_bin_java_attr_localvariable_type_table_t {
ut16 table_length;
RList * local_variable_table; // RBinJavaLocalVariable
ut16 table_length;
RList* local_variable_table; // RBinJavaLocalVariable
}RBinJavaLocalVariableTypeTableAttribute;
@ -638,17 +612,17 @@ typedef struct r_bin_java_attr_localvariable_t{
typedef struct r_bin_java_attr_localvariable_table_t {
ut16 table_length;
RList * local_variable_table; // RBinJavaLocalVariable
ut16 table_length;
RList* local_variable_table; // RBinJavaLocalVariable
}RBinJavaLocalVariableTableAttribute;
typedef struct r_bin_java_attr_t {
ut8 *bytes;
ut64 pos;
ut64 size;
char *name;
ut64 file_offset;
RBinJavaMetaInfo *metas;
char *name;
ut64 file_offset;
RBinJavaMetaInfo *metas;
int type;
ut16 name_idx; // ut16 attribute_name_idx;
ut32 length; //ut16 attribute_length;
@ -663,7 +637,7 @@ typedef struct r_bin_java_attr_t {
RBinJavaLocalVariableTableAttribute local_variable_table_attr;
RBinJavaLocalVariableTypeTableAttribute local_variable_type_table_attr;
RBinJavaInnerClassesAttribute inner_classes_attr;
RBinJavaAnnotationsArray annotation_array;
RBinJavaRuntimeVisibleAnnotationsAttr rtv_annotations_attr;
RBinJavaRuntimeInvisibleAnnotationsAttr rti_annotations_attr;
@ -718,8 +692,8 @@ typedef struct r_bin_java_lines_t {
typedef struct r_bin_java_obj_t {
struct r_bin_java_classfile_t cf;
RBinJavaClass2 * cf2;
RBinJavaClass2* cf2;
ut32 cp_offset, cp_size, cp_count;
ut32 fields_offset, fields_size, fields_count;
@ -732,7 +706,7 @@ typedef struct r_bin_java_obj_t {
const char* file;
RBinJavaLines lines;
struct r_buf_t* b;
// These state variables are used for parsing the appropriate number of bytes
// when readin uoffset, ustack, ulocalvar values
ut8 ulocalvar_sz;
@ -752,31 +726,31 @@ typedef struct r_bin_java_obj_t {
int fsym;
int fsymsz;
RBinJavaField *main;
RBinJavaAttrInfo *main_code_attr;
RBinJavaField *entrypoint;
RBinJavaAttrInfo *entrypoint_code_attr;
//RList * classes_list; // TODO: Not sure if this is necessary. it would be the inner classes info.
RList * fields_list;
RList * methods_list;
RList * cp_list;
RList * interfaces_list;
RList * attributes;
//RList* classes_list; // TODO: Not sure if this is necessary. it would be the inner classes info.
RList* fields_list;
RList* methods_list;
RList* cp_list;
RList* interfaces_list;
RList* attributes;
} RBinJavaObj;
R_API RList * r_bin_java_get_sections(RBinJavaObj *bin);
R_API RList * r_bin_java_get_fields(RBinJavaObj *bin);
R_API char * r_bin_java_get_version(RBinJavaObj* bin);
R_API RList* r_bin_java_get_sections(RBinJavaObj *bin);
R_API RList* r_bin_java_get_fields(RBinJavaObj *bin);
R_API char* r_bin_java_get_version(RBinJavaObj* bin);
R_API ut64 r_bin_java_get_entrypoint(RBinJavaObj* bin);
R_API ut64 r_bin_java_get_main(RBinJavaObj* bin);
R_API RList * r_bin_java_get_symbols(RBinJavaObj* bin);
R_API RList * r_bin_java_get_strings(RBinJavaObj* bin);
R_API void * r_bin_java_free(RBinJavaObj* bin);
R_API RBinJavaObj * r_bin_java_new(const char* file);
R_API RBinJavaObj * r_bin_java_new_buf(struct r_buf_t * buf);
R_API RList* r_bin_java_get_symbols(RBinJavaObj* bin);
R_API RList* r_bin_java_get_strings(RBinJavaObj* bin);
R_API void* r_bin_java_free(RBinJavaObj* bin);
R_API RBinJavaObj* r_bin_java_new(const char* file);
R_API RBinJavaObj* r_bin_java_new_buf(struct r_buf_t* buf);
@ -790,7 +764,7 @@ typedef struct r_bin_java_object_allocs_t {
typedef struct r_bin_java_attr_allocs_t {
//void (*new_obj) (RBinJavaObj *bin, RBinJavaAttrInfo *obj, ut64 offset) ;
RBinJavaAttrInfo * (*new_obj)(ut8 * buffer, ut64 sz, ut64 buf_offset);
RBinJavaAttrInfo* (*new_obj)(ut8* buffer, ut64 sz, ut64 buf_offset);
void (*delete_obj) (RBinJavaAttrInfo *obj);
void (*print_summary) (RBinJavaAttrInfo *obj);
ut64 (*calc_size)(RBinJavaAttrInfo *obj);
@ -803,13 +777,13 @@ typedef struct r_bin_java_ver_allocs_t {
} RBinJavaVerInfoObjectAllocs;
typedef struct r_bin_java_stack_frame_allocs_t {
RBinJavaStackMapFrame * (*new_obj) (RBinJavaObj *bin, ut64 offset) ;
RBinJavaStackMapFrame* (*new_obj) (RBinJavaObj *bin, ut64 offset) ;
void (*delete_obj) (RBinJavaStackMapFrame *obj);
void (*print_summary) (RBinJavaStackMapFrame *obj);
} RBinJavaStackMapFrameObjectAllocs;
typedef struct {
RBinJavaElementValue * (*new_obj) (RBinJavaObj *bin, ut64 offset) ;
RBinJavaElementValue* (*new_obj) (RBinJavaObj *bin, ut64 offset) ;
void (*delete_obj) (RBinJavaElementValue *obj);
void (*print_summary) (RBinJavaElementValue *obj);
} RBinJavaElementValueObjectAllocs;
@ -842,7 +816,7 @@ typedef struct r_bin_java_stack_frame_meta_t {
typedef struct{
char* name;
ut8 tag;
RBinJavaElementValueObjectAllocs * allocs;
RBinJavaElementValueObjectAllocs* allocs;
} RBinJavaElementValueMetas;
typedef struct{
@ -850,7 +824,7 @@ typedef struct{
ut8 tag;
} RBinJavaRefMetas;
inline ut32 r_bin_java_swap_uint(ut32 x);
inline ut16 r_bin_java_swap_ushort(ut16 x);
inline ut32 r_bin_java_read_int(RBinJavaObj *bin, ut64 offset);
@ -861,42 +835,42 @@ inline ut16 r_bin_java_read_short_from_buffer(ut8 *buf, ut64 offset);
R_API ut8 * r_bin_java_get_attr_buf(RBinJavaObj *bin, ut64 offset, ut64 sz);
R_API char * r_bin_java_get_name_from_cp_item_list(RList *cp_list, ut64 idx);
R_API char * r_bin_java_get_utf8_from_cp_item_list(RList *cp_list, ut64 idx);
R_API char * r_bin_java_get_desc_from_cp_item_list(RList *cp_list, ut64 idx);
R_API char * r_bin_java_get_item_name_from_cp_item_list(RList *cp_list, RBinJavaCPTypeObj *obj);
R_API char * r_bin_java_get_item_desc_from_cp_item_list(RList *cp_list, RBinJavaCPTypeObj *obj);
R_API RBinJavaCPTypeObj * r_bin_java_get_item_from_cp_item_list(RList *cp_list, ut64 idx);
R_API ut8* r_bin_java_get_attr_buf(RBinJavaObj *bin, ut64 offset, ut64 sz);
R_API char* r_bin_java_get_name_from_cp_item_list(RList *cp_list, ut64 idx);
R_API char* r_bin_java_get_utf8_from_cp_item_list(RList *cp_list, ut64 idx);
R_API char* r_bin_java_get_desc_from_cp_item_list(RList *cp_list, ut64 idx);
R_API char* r_bin_java_get_item_name_from_cp_item_list(RList *cp_list, RBinJavaCPTypeObj *obj);
R_API char* r_bin_java_get_item_desc_from_cp_item_list(RList *cp_list, RBinJavaCPTypeObj *obj);
R_API RBinJavaCPTypeObj* r_bin_java_get_item_from_cp_item_list(RList *cp_list, ut64 idx);
R_API char * r_bin_java_get_name_from_bin_cp_list(RBinJavaObj *bin, ut64 idx);
R_API char * r_bin_java_get_utf8_from_bin_cp_list(RBinJavaObj *bin, ut64 idx);
R_API char * r_bin_java_get_desc_from_bin_cp_list(RBinJavaObj *bin, ut64 idx);
R_API char * r_bin_java_get_item_name_from_bin_cp_list(RBinJavaObj *bin, RBinJavaCPTypeObj *obj);
R_API char * r_bin_java_get_item_desc_from_bin_cp_list(RBinJavaObj *bin, RBinJavaCPTypeObj *obj);
R_API RBinJavaCPTypeObj * r_bin_java_get_item_from_bin_cp_list(RBinJavaObj *bin, ut64 idx);
R_API char* r_bin_java_get_name_from_bin_cp_list(RBinJavaObj *bin, ut64 idx);
R_API char* r_bin_java_get_utf8_from_bin_cp_list(RBinJavaObj *bin, ut64 idx);
R_API char* r_bin_java_get_desc_from_bin_cp_list(RBinJavaObj *bin, ut64 idx);
R_API char* r_bin_java_get_item_name_from_bin_cp_list(RBinJavaObj *bin, RBinJavaCPTypeObj *obj);
R_API char* r_bin_java_get_item_desc_from_bin_cp_list(RBinJavaObj *bin, RBinJavaCPTypeObj *obj);
R_API RBinJavaCPTypeObj* r_bin_java_get_item_from_bin_cp_list(RBinJavaObj *bin, ut64 idx);
// Allocs for objects
R_API RBinJavaCPTypeObj * r_bin_java_class_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj * r_bin_java_fieldref_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj * r_bin_java_methodref_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj * r_bin_java_interfacemethodref_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj * r_bin_java_name_and_type_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj* r_bin_java_class_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj* r_bin_java_fieldref_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj* r_bin_java_methodref_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj* r_bin_java_interfacemethodref_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj* r_bin_java_name_and_type_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj * r_bin_java_string_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj * r_bin_java_integer_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj * r_bin_java_float_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj * r_bin_java_long_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj * r_bin_java_double_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj * r_bin_java_utf8_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj * r_bin_java_do_nothing_new(RBinJavaObj *bin, ut8* buffer, ut64 sz);
R_API RBinJavaCPTypeObj * r_bin_java_clone_cp_item(RBinJavaCPTypeObj *obj);
R_API RBinJavaCPTypeObj * r_bin_java_clone_cp_idx(RBinJavaObj *bin, ut32 idx);
R_API RBinJavaCPTypeObj* r_bin_java_string_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj* r_bin_java_integer_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj* r_bin_java_float_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj* r_bin_java_long_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj* r_bin_java_double_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj* r_bin_java_utf8_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 offset);
R_API RBinJavaCPTypeObj* r_bin_java_do_nothing_new(RBinJavaObj *bin, ut8* buffer, ut64 sz);
R_API RBinJavaCPTypeObj* r_bin_java_clone_cp_item(RBinJavaCPTypeObj *obj);
R_API RBinJavaCPTypeObj* r_bin_java_clone_cp_idx(RBinJavaObj *bin, ut32 idx);
R_API RBinJavaCPTypeObj * r_bin_java_methodhandle_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 sz);
R_API RBinJavaCPTypeObj * r_bin_java_methodtype_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 sz);
R_API RBinJavaCPTypeObj * r_bin_java_invokedynamic_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 sz);
R_API RBinJavaCPTypeObj* r_bin_java_methodhandle_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 sz);
R_API RBinJavaCPTypeObj* r_bin_java_methodtype_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 sz);
R_API RBinJavaCPTypeObj* r_bin_java_invokedynamic_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 sz);
@ -925,20 +899,20 @@ R_API void r_bin_java_do_nothing_free(RBinJavaCPTypeObj *obj);
// handle the reading of the various field
R_API RBinJavaAttrInfo * r_bin_java_read_next_attr(RBinJavaObj *bin, ut64 offset);
R_API RBinJavaCPTypeObj * r_bin_java_read_next_constant_pool_item(RBinJavaObj *bin, ut64 offset);
R_API RBinJavaAttrInfo* r_bin_java_read_next_attr(RBinJavaObj *bin, ut64 offset);
R_API RBinJavaCPTypeObj* r_bin_java_read_next_constant_pool_item(RBinJavaObj *bin, ut64 offset);
R_API RBinJavaAttrInfo * r_bin_java_get_method_code_attribute(RBinJavaField *method);
R_API RBinJavaAttrInfo* r_bin_java_get_method_code_attribute(RBinJavaField *method);
R_API RBinJavaAttrMetas * r_bin_java_get_attr_type_by_name(ut8 *name);
R_API RBinJavaAttrMetas* r_bin_java_get_attr_type_by_name(ut8 *name);
R_API RBinJavaCPTypeObj * r_bin_java_get_java_null_cp();
R_API RBinJavaCPTypeObj* r_bin_java_get_java_null_cp();
R_API RBinJavaClass2 * r_bin_java_read_class_file2(RBinJavaObj *bin, ut64 offset);
R_API RBinJavaClass2* r_bin_java_read_class_file2(RBinJavaObj *bin, ut64 offset);
R_API RBinJavaAttrInfo * r_bin_java_get_attr_from_field(RBinJavaField *field, R_BIN_JAVA_ATTR_TYPE attr_type, ut32 pos );
R_API RBinJavaAttrInfo* r_bin_java_get_attr_from_field(RBinJavaField *field, R_BIN_JAVA_ATTR_TYPE attr_type, ut32 pos );
// free bin lists
@ -990,43 +964,33 @@ R_API void r_bin_java_print_methodtype_cp_summary(RBinJavaCPTypeObj* obj);
R_API void r_bin_java_print_invokedynamic_cp_summary(RBinJavaCPTypeObj* obj);
R_API RBinJavaCPTypeObj * r_bin_java_unknown_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 sz);
R_API RBinJavaCPTypeObj* r_bin_java_unknown_cp_new(RBinJavaObj *bin, ut8* buffer, ut64 sz);
R_API RBinJavaInterfaceInfo * r_bin_java_interface_new(RBinJavaObj *bin, ut8 *buf, ut64 sz);
R_API RBinJavaInterfaceInfo * r_bin_java_read_next_interface_item(RBinJavaObj *bin, ut64 offset);
R_API RBinJavaInterfaceInfo* r_bin_java_interface_new(RBinJavaObj *bin, ut8 *buf, ut64 sz);
R_API RBinJavaInterfaceInfo* r_bin_java_read_next_interface_item(RBinJavaObj *bin, ut64 offset);
R_API void r_bin_java_interface_free(R_API RBinJavaInterfaceInfo *obj);
R_API void r_bin_java_interface_free(RBinJavaInterfaceInfo *obj);
R_API void r_bin_java_stack_frame_free(RBinJavaStackMapFrame * obj);
R_API void r_bin_java_stack_map_table_attr_free(RBinJavaAttrInfo * attr);
R_API void r_bin_java_verification_info_free(RBinJavaVerificationObj * obj);
R_API void r_bin_java_stack_frame_free(RBinJavaStackMapFrame* obj);
R_API void r_bin_java_stack_map_table_attr_free(RBinJavaAttrInfo* attr);
R_API void r_bin_java_verification_info_free(RBinJavaVerificationObj* obj);
R_API void r_bin_java_print_stack_map_table_attr_summary(RBinJavaAttrInfo *obj);
R_API void r_bin_java_print_stack_map_frame_summary(RBinJavaStackMapFrame *obj);
R_API void r_bin_java_print_verification_info_summary(RBinJavaVerificationObj *obj);
R_API RBinJavaStackMapFrame * r_bin_java_build_stack_frame_from_local_variable_table(RBinJavaObj *bin, RBinJavaAttrInfo *attr);
R_API RBinJavaStackMapFrame * r_bin_java_stack_frame_new (ut8* buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaVerificationObj * r_bin_java_read_next_verification_info_new(ut8* buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaAnnotation * r_bin_java_annotation_new(ut8* buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaElementValuePair * r_bin_java_element_pair_new(ut8* buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaElementValue * r_bin_java_element_value_new(ut8* buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaBootStrapArgument * r_bin_java_bootstrap_method_argument_new(ut8* buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaBootStrapMethod * r_bin_java_bootstrap_method_new(ut8* buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaAnnotationsArray * r_bin_java_annotation_array_new(ut8* buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaElementValueMetas * r_bin_java_get_ev_meta_from_tag(ut8 tag);
R_API RBinJavaCPTypeMetas * r_bin_java_get_cp_meta_from_tag(ut8 tag);
R_API RBinJavaStackMapFrame* r_bin_java_build_stack_frame_from_local_variable_table(RBinJavaObj *bin, RBinJavaAttrInfo *attr);
R_API RBinJavaStackMapFrame* r_bin_java_stack_frame_new (ut8* buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaVerificationObj* r_bin_java_read_next_verification_info_new(ut8* buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaAnnotation* r_bin_java_annotation_new(ut8* buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaElementValuePair* r_bin_java_element_pair_new(ut8* buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaElementValue* r_bin_java_element_value_new(ut8* buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaBootStrapArgument* r_bin_java_bootstrap_method_argument_new(ut8* buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaBootStrapMethod* r_bin_java_bootstrap_method_new(ut8* buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaAnnotationsArray* r_bin_java_annotation_array_new(ut8* buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaElementValueMetas* r_bin_java_get_ev_meta_from_tag(ut8 tag);
R_API RBinJavaCPTypeMetas* r_bin_java_get_cp_meta_from_tag(ut8 tag);
R_API void r_bin_java_annotation_default_attr_free(RBinJavaAttrInfo *attr);
@ -1034,7 +998,7 @@ R_API void r_bin_java_enclosing_methods_attr_free(RBinJavaAttrInfo *attr);
R_API void r_bin_java_local_variable_type_table_attr_free(RBinJavaAttrInfo *attr);
R_API void r_bin_java_signature_attr_free(RBinJavaAttrInfo *attr);
R_API void r_bin_java_source_debug_attr_free(RBinJavaAttrInfo *attr);
R_API void r_bin_java_element_value_free(RBinJavaElementValue * element_value);
R_API void r_bin_java_element_value_free(RBinJavaElementValue* element_value);
R_API void r_bin_java_element_pair_free(RBinJavaElementValuePair *ev_pair);
R_API void r_bin_java_annotation_free(RBinJavaAnnotation *annotation);
R_API void r_bin_java_rtv_annotations_attr_free(RBinJavaAttrInfo *attr);
@ -1077,29 +1041,29 @@ R_API void r_bin_java_print_rtip_annotations_attr_summary(RBinJavaAttrInfo *attr
R_API RBinJavaAttrInfo * r_bin_java_read_next_attr_from_buffer(ut8 *buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_read_next_attr_from_buffer(ut8 *buffer, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_unknown_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_annotation_default_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_enclosing_methods_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_local_variable_type_table_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_signature_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_source_debug_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_bootstrap_methods_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_rtv_annotations_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_rti_annotations_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_rtvp_annotations_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_rtip_annotations_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_code_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_constant_value_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_deprecated_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_exceptions_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_inner_classes_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_line_number_table_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_local_variable_table_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_source_code_file_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_stack_map_table_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo * r_bin_java_synthetic_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_unknown_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_annotation_default_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_enclosing_methods_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_local_variable_type_table_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_signature_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_source_debug_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_bootstrap_methods_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_rtv_annotations_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_rti_annotations_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_rtvp_annotations_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_rtip_annotations_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_code_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_constant_value_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_deprecated_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_exceptions_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_inner_classes_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_line_number_table_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_local_variable_table_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_source_code_file_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_stack_map_table_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API RBinJavaAttrInfo* r_bin_java_synthetic_attr_new(ut8 *buf, ut64 sz, ut64 buf_offset);
R_API ut64 r_bin_java_unknown_attr_calc_size(RBinJavaAttrInfo *attr);
R_API ut64 r_bin_java_annotation_default_attr_calc_size(RBinJavaAttrInfo *attr);
@ -1147,13 +1111,13 @@ R_API ut64 r_bin_java_methodhandle_cp_calc_size(RBinJavaCPTypeObj* obj);
R_API ut64 r_bin_java_methodtype_cp_calc_size(RBinJavaCPTypeObj* obj);
R_API ut64 r_bin_java_invokedynamic_cp_calc_size(RBinJavaCPTypeObj* obj);
R_API RBinJavaStackMapFrame * r_bin_java_default_stack_frame();
R_API RBinJavaStackMapFrame* r_bin_java_default_stack_frame();
R_API RBinSymbol * r_bin_java_allocate_symbol();
R_API RBinSymbol * r_bin_java_create_new_symbol_from_cp_idx(ut32 cp_idx);
R_API RBinSymbol * r_bin_java_create_new_symbol_from_invoke_dynamic(RBinJavaCPTypeObj *obj);
R_API RBinSymbol * r_bin_java_create_new_symbol_from_ref(RBinJavaCPTypeObj *obj);
R_API RBinSymbol * r_bin_java_create_new_symbol_from_method(RBinJavaField *fm_type);
R_API RBinSymbol* r_bin_java_allocate_symbol();
R_API RBinSymbol* r_bin_java_create_new_symbol_from_cp_idx(ut32 cp_idx);
R_API RBinSymbol* r_bin_java_create_new_symbol_from_invoke_dynamic(RBinJavaCPTypeObj *obj);
R_API RBinSymbol* r_bin_java_create_new_symbol_from_ref(RBinJavaCPTypeObj *obj);
R_API RBinSymbol* r_bin_java_create_new_symbol_from_method(RBinJavaField *fm_type);
R_API ut64 r_bin_java_get_method_code_offset(RBinJavaField *fm_type);
R_API ut64 r_bin_java_get_method_code_size(RBinJavaField *fm_type);
@ -1162,10 +1126,9 @@ R_API RBinJavaCPTypeObj *r_bin_java_find_cp_ref_info(ut16 name_and_typeidx);
R_API RBinJavaCPTypeObj *r_bin_java_find_cp_ref_info_from_name_and_type(ut16 name_idx, ut16 descriptor_idx);
R_API RBinJavaCPTypeObj *r_bin_java_find_cp_name_and_type_info(ut16 name_idx, ut16 descriptor_idx);
R_API RList * r_bin_java_allocate_r_bin_class();
R_API RList * r_bin_java_get_classes(RBinJavaObj *bin);
R_API RList * r_bin_java_enum_class_methods(RBinJavaObj *bin, ut16 class_idx);
R_API RList * r_bin_java_enum_class_fields(RBinJavaObj *bin, ut16 class_idx);
R_API RBinClass* r_bin_java_allocate_r_bin_class();
R_API RList *r_bin_java_get_classes(RBinJavaObj *bin);
R_API RList *r_bin_java_enum_class_methods(RBinJavaObj *bin, ut16 class_idx);
R_API RList *r_bin_java_enum_class_fields(RBinJavaObj *bin, ut16 class_idx);
#endif

View File

@ -2,7 +2,7 @@ include ../../config-user.mk
include ../../mk/${COMPILER}.mk
OFILES=i386-gen.o libtcc.o tccelf.o tccgen.o tccpp.o
CFLAGS+=-fPIC
CFLAGS+=-fPIC -Wall
LDFLAGS=-shared
SOEXT?=dylib
LIBNAME=libr_tcc.${SOEXT}

View File

@ -1385,5 +1385,6 @@ ST_FUNC void tcc_set_num_callers(int n);
#define ST_DATA
#endif
/********************************************************/
PUB_FUNC void tcc_appendf (const char *fmt, ...);
#endif /* _TCC_H */

View File

@ -35,7 +35,7 @@ ST_FUNC int put_elf_str(Section *s, const char *sym)
}
/* elf symbol hashing function */
static unsigned long elf_hash(const unsigned char *name)
static unsigned long elf_hash(const char *name)
{
unsigned long h = 0, g;
@ -55,7 +55,7 @@ static void rebuild_hash(Section *s, unsigned int nb_buckets)
{
ElfW(Sym) *sym;
int *ptr, *hash, nb_syms, sym_index, h;
char *strtab;
unsigned char *strtab;
strtab = s->link->data;
nb_syms = s->data_offset / sizeof(ElfW(Sym));
@ -72,7 +72,7 @@ static void rebuild_hash(Section *s, unsigned int nb_buckets)
sym = (ElfW(Sym) *)s->data + 1;
for(sym_index = 1; sym_index < nb_syms; sym_index++) {
if (ELFW(ST_BIND)(sym->st_info) != STB_LOCAL) {
h = elf_hash(strtab + sym->st_name) % nb_buckets;
h = elf_hash((const char *)(strtab + sym->st_name)) % nb_buckets;
*ptr = hash[h];
hash[h] = sym_index;
} else {
@ -148,7 +148,7 @@ ST_FUNC int find_elf_sym(Section *s, const char *name)
sym_index = ((int *)hs->data)[2 + h];
while (sym_index != 0) {
sym = &((ElfW(Sym) *)s->data)[sym_index];
name1 = s->link->data + sym->st_name;
name1 = (const char *)(s->link->data + sym->st_name);
if (!strcmp(name, name1))
return sym_index;
sym_index = ((int *)hs->data)[2 + nbuckets + sym_index];
@ -330,70 +330,6 @@ ST_FUNC void put_stabd(int type, int other, int desc)
put_stabs(NULL, type, other, desc, 0);
}
/* In an ELF file symbol table, the local symbols must appear below
the global and weak ones. Since TCC cannot sort it while generating
the code, we must do it after. All the relocation tables are also
modified to take into account the symbol table sorting */
static void sort_syms(TCCState *s1, Section *s)
{
int *old_to_new_syms;
ElfW(Sym) *new_syms;
int nb_syms, i;
ElfW(Sym) *p, *q;
ElfW_Rel *rel, *rel_end;
Section *sr;
int type, sym_index;
nb_syms = s->data_offset / sizeof(ElfW(Sym));
new_syms = malloc(nb_syms * sizeof(ElfW(Sym)));
old_to_new_syms = malloc(nb_syms * sizeof(int));
/* first pass for local symbols */
p = (ElfW(Sym) *)s->data;
q = new_syms;
for(i = 0; i < nb_syms; i++) {
if (ELFW(ST_BIND)(p->st_info) == STB_LOCAL) {
old_to_new_syms[i] = q - new_syms;
*q++ = *p;
}
p++;
}
/* save the number of local symbols in section header */
s->sh_info = q - new_syms;
/* then second pass for non local symbols */
p = (ElfW(Sym) *)s->data;
for(i = 0; i < nb_syms; i++) {
if (ELFW(ST_BIND)(p->st_info) != STB_LOCAL) {
old_to_new_syms[i] = q - new_syms;
*q++ = *p;
}
p++;
}
/* we copy the new symbols to the old */
memcpy(s->data, new_syms, nb_syms * sizeof(ElfW(Sym)));
free(new_syms);
/* now we modify all the relocations */
for(i = 1; i < s1->nb_sections; i++) {
sr = s1->sections[i];
if (sr->sh_type == SHT_RELX && sr->link == s) {
rel_end = (ElfW_Rel *)(sr->data + sr->data_offset);
for(rel = (ElfW_Rel *)sr->data;
rel < rel_end;
rel++) {
sym_index = ELFW(R_SYM)(rel->r_info);
type = ELFW(R_TYPE)(rel->r_info);
sym_index = old_to_new_syms[sym_index];
rel->r_info = ELFW(R_INFO)(sym_index, type);
}
}
}
free(old_to_new_syms);
}
/* relocate common symbols in the .bss section */
ST_FUNC void relocate_common_syms(void)
{
@ -431,7 +367,7 @@ ST_FUNC void relocate_syms(TCCState *s1, int do_resolve)
sym++) {
sh_num = sym->st_shndx;
if (sh_num == SHN_UNDEF) {
name = strtab_section->data + sym->st_name;
name = (const char *)strtab_section->data + sym->st_name;
if (do_resolve) {
#if defined TCC_IS_NATIVE && !defined _WIN32
void *addr;
@ -888,64 +824,6 @@ ST_FUNC void relocate_section(TCCState *s1, Section *s)
sr->link = s1->dynsym;
}
/* relocate relocation table in 'sr' */
static void relocate_rel(TCCState *s1, Section *sr)
{
Section *s;
ElfW_Rel *rel, *rel_end;
s = s1->sections[sr->sh_info];
rel_end = (ElfW_Rel *)(sr->data + sr->data_offset);
for(rel = (ElfW_Rel *)sr->data;
rel < rel_end;
rel++) {
rel->r_offset += s->sh_addr;
}
}
/* count the number of dynamic relocations so that we can reserve
their space */
static int prepare_dynamic_rel(TCCState *s1, Section *sr)
{
ElfW_Rel *rel, *rel_end;
int sym_index, esym_index, type, count;
count = 0;
rel_end = (ElfW_Rel *)(sr->data + sr->data_offset);
for(rel = (ElfW_Rel *)sr->data; rel < rel_end; rel++) {
sym_index = ELFW(R_SYM)(rel->r_info);
type = ELFW(R_TYPE)(rel->r_info);
switch(type) {
#if defined(TCC_TARGET_I386)
case R_386_32:
#elif defined(TCC_TARGET_X86_64)
case R_X86_64_32:
case R_X86_64_32S:
case R_X86_64_64:
#endif
count++;
break;
#if defined(TCC_TARGET_I386)
case R_386_PC32:
#elif defined(TCC_TARGET_X86_64)
case R_X86_64_PC32:
#endif
esym_index = s1->symtab_to_dynsym[sym_index];
if (esym_index)
count++;
break;
default:
break;
}
}
if (count) {
/* allocate the section */
sr->sh_flags |= SHF_ALLOC;
sr->sh_size = count * sizeof(ElfW_Rel);
}
return count;
}
static struct sym_attr *alloc_sym_attr(TCCState *s1, int index)
{
int n;
@ -974,14 +852,6 @@ static void put32(unsigned char *p, uint32_t val)
p[3] = val >> 24;
}
#if defined(TCC_TARGET_I386) || defined(TCC_TARGET_ARM) || \
defined(TCC_TARGET_X86_64)
static uint32_t get32(unsigned char *p)
{
return p[0] | (p[1] << 8) | (p[2] << 16) | (p[3] << 24);
}
#endif
static void build_got(TCCState *s1)
{
unsigned char *ptr;
@ -1034,7 +904,7 @@ static void put_got_entry(TCCState *s1,
if (s1->dynsym) {
sym = &((ElfW(Sym) *)symtab_section->data)[sym_index];
name = symtab_section->link->data + sym->st_name;
name = (const char*)(symtab_section->link->data + sym->st_name);
offset = sym->st_value;
#if defined(TCC_TARGET_I386) || defined(TCC_TARGET_X86_64)
if (reloc_type ==
@ -1277,15 +1147,6 @@ ST_FUNC Section *new_symtab(TCCState *s1,
return symtab;
}
/* put dynamic tag */
static void put_dt(Section *dynamic, int dt, addr_t val)
{
ElfW(Dyn) *dyn;
dyn = section_ptr_add(dynamic, sizeof(ElfW(Dyn)));
dyn->d_tag = dt;
dyn->d_un.d_val = val;
}
static void add_init_array_defines(TCCState *s1, const char *section_name)
{
Section *s;
@ -1434,28 +1295,6 @@ ST_FUNC void tcc_add_linker_symbols(TCCState *s1)
}
}
static void tcc_output_binary(TCCState *s1, FILE *f,
const int *section_order)
{
Section *s;
int i, offset, size;
offset = 0;
for(i=1;i<s1->nb_sections;i++) {
s = s1->sections[section_order[i]];
if (s->sh_type != SHT_NOBITS &&
(s->sh_flags & SHF_ALLOC)) {
while (offset < s->sh_offset) {
fputc(0, f);
offset++;
}
size = s->sh_size;
fwrite(s->data, 1, size, f);
offset += size;
}
}
}
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
#define HAVE_PHDR 1
#define EXTRA_RELITEMS 14
@ -2435,7 +2274,7 @@ ST_FUNC int tcc_load_object_file(TCCState *s1,
if (i == ehdr.e_shstrndx)
continue;
sh = &shdr[i];
sh_name = strsec + sh->sh_name;
sh_name = (char *)(strsec + sh->sh_name);
/* ignore sections types we do not handle */
if (sh->sh_type != SHT_PROGBITS &&
sh->sh_type != SHT_RELX &&
@ -2556,7 +2395,7 @@ ST_FUNC int tcc_load_object_file(TCCState *s1,
already defined symbol. It is very important to get
correct relocations */
if (ELFW(ST_BIND)(sym->st_info) != STB_LOCAL) {
name = strtab + sym->st_name;
name = (char*)(strtab + sym->st_name);
sym_index = find_elf_sym(symtab_section, name);
if (sym_index)
old_to_new_syms[i] = sym_index;
@ -2572,7 +2411,7 @@ ST_FUNC int tcc_load_object_file(TCCState *s1,
sym->st_value += sm->offset;
}
/* add symbol */
name = strtab + sym->st_name;
name = (char *)(strtab + sym->st_name);
sym_index = add_elf_sym(symtab_section, sym->st_value, sym->st_size,
sym->st_info, sym->st_other,
sym->st_shndx, name);
@ -2676,7 +2515,7 @@ static int tcc_load_alacarte(TCCState *s1, int fd, int size)
goto fail;
nsyms = get_be32(data);
ar_index = data + 4;
ar_names = ar_index + nsyms * 4;
ar_names = (char*)ar_index + nsyms * 4;
do {
bound = 0;
@ -2813,7 +2652,7 @@ ST_FUNC int tcc_load_dll(TCCState *s1, int fd, const char *filename, int level)
for(i = 0, dt = dynamic; i < nb_dts; i++, dt++) {
if (dt->d_tag == DT_SONAME) {
soname = dynstr + dt->d_un.d_val;
soname = (char*)dynstr + dt->d_un.d_val;
}
}
@ -2842,7 +2681,7 @@ ST_FUNC int tcc_load_dll(TCCState *s1, int fd, const char *filename, int level)
sym_bind = ELFW(ST_BIND)(sym->st_info);
if (sym_bind == STB_LOCAL)
continue;
name = dynstr + sym->st_name;
name = (char *)dynstr + sym->st_name;
add_elf_sym(s1->dynsymtab_section, sym->st_value, sym->st_size,
sym->st_info, sym->st_other, sym->st_shndx, name);
}
@ -2851,7 +2690,7 @@ ST_FUNC int tcc_load_dll(TCCState *s1, int fd, const char *filename, int level)
for(i = 0, dt = dynamic; i < nb_dts; i++, dt++) {
switch(dt->d_tag) {
case DT_NEEDED:
name = dynstr + dt->d_un.d_val;
name = (char *)dynstr + dt->d_un.d_val;
for(j = 0; j < s1->nb_loaded_dlls; j++) {
dllref = s1->loaded_dlls[j];
if (!strcmp(name, dllref->name))

View File

@ -1247,7 +1247,7 @@ static inline int hash_cached_include(const char *filename)
unsigned int h;
h = TOK_HASH_INIT;
s = filename;
s = (const unsigned char *)filename;
while (*s) {
h = TOK_HASH_FUNC(h, *s);
s++;
@ -2226,7 +2226,7 @@ maybe_newline:
goto token_found;
pts = &(ts->hash_next);
}
ts = tok_alloc_new(pts, p1, len);
ts = tok_alloc_new(pts, (const char*)p1, len);
token_found: ;
} else {
/* slower case */