Fix lot of warnings
This commit is contained in:
parent
dece987ca3
commit
ae97789986
|
@ -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);
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
};
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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, "/");
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
@ -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);
|
||||
|
@ -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,7 +226,7 @@ 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;
|
||||
|
@ -246,7 +234,7 @@ typedef struct r_bin_java_integer_info_t {
|
|||
} 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 {
|
||||
|
@ -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;
|
||||
|
||||
|
@ -329,10 +317,10 @@ typedef struct r_bin_java_stack_map_frame_t { // attribute StackMap
|
|||
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;
|
||||
|
@ -522,14 +505,8 @@ typedef struct r_bin_java_fm_t {
|
|||
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;
|
||||
|
@ -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;
|
||||
|
@ -718,7 +692,7 @@ 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;
|
||||
|
@ -759,24 +733,24 @@ typedef struct r_bin_java_obj_t {
|
|||
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{
|
||||
|
@ -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
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue