Commit Graph

305 Commits

Author SHA1 Message Date
Nguyen Anh Quynh 05e27138ae core: add Sparc arch 2014-03-10 11:58:57 +08:00
Nguyen Anh Quynh 5ee2b45518 core: reduce insn_cache's size when USE_SYS_DYN_MEM, not on CAPSTONE_DIET 2014-03-07 08:40:35 +08:00
Nguyen Anh Quynh 034a7487c0 core: C99 fix for cs_disasm_ex() 2014-03-06 22:40:08 +08:00
Nguyen Anh Quynh 472a4a4121 core: reduce default INSN_CACHE_SIZE to 32 to reduce stack memory variable size @insn_cache 2014-03-06 09:13:04 +08:00
Nguyen Anh Quynh a836b75d30 core: reduce INSN_CACHE_SIZE for diet engine to reduce stack variable size. this might fix a crash for OSX kernel. issue reported by Enzo Matsumiya 2014-03-06 03:36:03 +08:00
Nguyen Anh Quynh c46c35d3c7 core try to initialize archs as soon as we can by calling archs_enable() everywhere possible 2014-03-05 00:21:53 +08:00
Nguyen Anh Quynh c8e0785cb6 add some more comments regarding invalidating @handle of cs_close() 2014-02-28 09:38:11 +08:00
Nguyen Anh Quynh fbe10a55c0 simplify cs_close() when freeing @printer_info, making it future proof for future arch 2014-02-27 23:59:08 +08:00
Nguyen Anh Quynh ef3d04d75b fix a bug in cs_close(): improper check on handle value 2014-02-27 23:42:49 +08:00
Nguyen Anh Quynh 226d7dca64 change API cs_close() to take pointer to handle as argument. this lets us invalidate the closed handle 2014-02-27 22:20:39 +08:00
Nguyen Anh Quynh 48d583281c cs_support(): typecast query to uint before comparing with CS_ARCH_ALL. this is to avoid potential problems in future when we add more query types 2014-02-27 13:56:01 +08:00
Nguyen Anh Quynh 5848aaafb2 Revert "cs_disasm_ex() should verify handle->disasm() to catch the issue that this API is still called after cs_close(). bug reported by Gul"
This reverts commit 2edef8f27c.
2014-02-27 11:10:41 +08:00
Nguyen Anh Quynh 2edef8f27c cs_disasm_ex() should verify handle->disasm() to catch the issue that this API is still called after cs_close(). bug reported by Gul 2014-02-27 09:54:16 +08:00
Nguyen Anh Quynh f7cdbdf501 add CS_ERR_DIET error code to report information irrelevant in diet engine 2014-02-24 16:47:36 +08:00
Nguyen Anh Quynh b2870e4c4c API: extend cs_support() to allow query on diet mode. add CS_SUPPORT_DIET at the same time 2014-02-22 23:41:16 +08:00
Nguyen Anh Quynh fc83a439e5 add diet compile option (CAPSTONE_DIET option in config.mk). This reduces binary size by around 40% 2014-02-22 23:26:27 +08:00
Nguyen Anh Quynh a86a1279ff Merge branch 'msvc0' into next1 2014-02-17 23:11:58 +08:00
Nguyen Anh Quynh 4f220287d1 add CS_ERR_VERSION to report error when binding version is different from core's API version 2014-02-09 00:19:15 +08:00
Nguyen Anh Quynh 8ce50e4b49 x86: fix the returned value of cs_disasm_ex() when we have 2 consecutive prefixed instructions. also fix a mem leak bug 2014-01-27 18:15:28 +08:00
Nguyen Anh Quynh 94020d8478 x86: fix the issue with prefix instruction declared in 2.0's RELEASE_NOTES 2014-01-25 14:22:15 +08:00
Nguyen Anh Quynh 743ead0442 fix a bug in cs.c introduced in the last port between branches 2014-01-23 23:47:15 +08:00
Nguyen Anh Quynh a82a0890a6 more more fixes on C coding style 2014-01-23 23:42:40 +08:00
Alex Ionescu 46018db884 Initial set of changes to support building with MSVC 2013. Right now there's a bunch fo assumptions in the .vcxproj file and some things are not as clean as they should be, but it does build a full build and works (at least the x86 side). The point of this initial checkpoint is to make sure that nothing breaks on the GCC side, that everyone is ok with the changes to the source (or if better fixes/typing can be done). 2014-01-22 09:45:00 -08:00
Nguyen Anh Quynh 11b05193ec reset prev_prefix at the entry of cs_disasm_ex(). this fixes a nasty segfault bug 2014-01-22 11:06:34 +08:00
Nguyen Anh Quynh fd2814b71a reset prev_prefix at the entry of cs_disasm_ex(). this fixes a nasty segfault bug 2014-01-22 11:04:25 +08:00
Nguyen Anh Quynh c34959b588 x86: proper calculation for the trailing instruction in total cache. issue reported by Pancake 2014-01-22 09:47:46 +08:00
Nguyen Anh Quynh c36ce95d4a x86: proper calculation for the trailing instruction in total cache. issue reported by Pancake 2014-01-22 09:46:42 +08:00
Nguyen Anh Quynh 06b3c05e20 cs_open() should return error on invalid mode 2014-01-21 15:27:19 +08:00
Nguyen Anh Quynh 53fc5c103a cs_open() should return error on invalid mode 2014-01-21 15:26:02 +08:00
Nguyen Anh Quynh 7772d859af x86: fix known issue with prefix by combining with previous prefix instruction. this is not perfect, but good enough for now 2014-01-21 11:49:25 +08:00
Nguyen Anh Quynh c272e9d000 do not use constructor to enable archs, so code is more portable. suggested by Alex Ionescu 2014-01-19 12:03:22 +08:00
Nguyen Anh Quynh 24e122778c cs_op_count() & cs_op_index() report CS_ERR_DETAIL when detail = OFF 2014-01-15 21:27:23 +08:00
Nguyen Anh Quynh edeeb04a1a make vsnprintf() user-defined function pointer, which is passed in via the same CS_OPT_MEM option like malloc/calloc etc 2014-01-15 20:44:03 +08:00
Nguyen Anh Quynh a8eb7a5ca5 rename memory function pointer types to have cs_ prefix. also rename internal function pointers my_* to have cs_mem_ prefix - suggested by Pancake 2014-01-11 12:55:31 +08:00
Nguyen Anh Quynh d159a03f23 tests: proper extensions for newly added static executables 2014-01-09 15:49:44 +08:00
Nguyen Anh Quynh 625b5bcfee comment for the trick to enable constructors in static lib & fix coding style 2014-01-09 14:33:56 +08:00
danghvu b33bd2cb13 Update static fix: no need to call dummy function 2014-01-09 12:22:56 +07:00
danghvu ad44e8178e Minor bug 2014-01-09 11:17:20 +07:00
danghvu 701b850af9 Fix: bug that static link does not know constructor 2014-01-09 11:14:40 +07:00
Nguyen Anh Quynh 39b812d9e9 switch detail to be CS_OPT_OFF by default 2014-01-07 23:36:26 +08:00
Nguyen Anh Quynh 9fac512efc no longer need to free insn_cache for each arch: simply do it from cs_close() 2014-01-07 10:56:04 +08:00
Nguyen Anh Quynh 1acfd0b883 move insn_cache into cs_struct to gurantee thread-safe 2014-01-06 10:56:59 +08:00
Nguyen Anh Quynh 8f7ab4981d fix a potential memleak in cs_open() - happened when arch is invalid/unsupported 2014-01-06 09:52:57 +08:00
Nguyen Anh Quynh c52352d6d9 add new error code CS_ERR_MEMSETUP to report error when user-defined dynamic mem management is uninitialized 2014-01-06 09:06:30 +08:00
Nguyen Anh Quynh 59492c2688 enable system's my_malloc/calloc/realloc/free via compile time option 2014-01-05 23:41:31 +08:00
Nguyen Anh Quynh c7404075ff move internal memory management declarations from utils.h to cs_priv.h 2014-01-05 11:35:47 +08:00
Nguyen Anh Quynh 24bf0d9079 add new option CS_OPT_MEM for cs_option(): this enable user-defined dynamic memory management. idea proposed by Pancake 2014-01-05 11:19:04 +08:00
Nguyen Anh Quynh 34f96389a9 add new API: cs_strerror() return a string describing a given error code. this should be used together with cs_errno() 2014-01-03 22:49:07 +08:00
Nguyen Anh Quynh ee143c8c6c fix a crashed bug in cs_close(): call destroy function before freeing handle's memory 2014-01-03 21:51:59 +08:00
Nguyen Anh Quynh b265406960 cache insns for fast lookup in mapping.c. based on the idea of Dang Hoang Vu 2014-01-03 17:08:58 +08:00
Nguyen Anh Quynh 42c6b1acc7 initial support for PPC 2013-12-30 00:15:25 +08:00
Nguyen Anh Quynh b90cb993ed API cs_version_ex(): since we already broke API compatibility, we are not afraid to break cs_version() too. this replaces cs_version() with cs_version_ex() 2013-12-28 13:59:09 +08:00
Nguyen Anh Quynh 04c19beefe rename API cs_disasm_dyn() to cs_disasm_ex(), and intentionally breaks compatibility with 1.0 2013-12-25 13:26:22 +08:00
Nguyen Anh Quynh 4fe224b1ed change API cs_disasm_dyn(): break cs_insn into 2 structures, and put all details into new structure cs_detail. this break API compatibility 2013-12-24 16:49:36 +08:00
Nguyen Anh Quynh b880678a25 old cs_version() and new cs_version() are not compatible, so revert old one, and create new separate API cs_version_ex() 2013-12-22 15:20:07 +08:00
Nguyen Anh Quynh 0877747bcd cs_version() can accept NULL arguments. this is useful if you dont care about major/minor, but only want to get returned combined version 2013-12-22 14:16:28 +08:00
Nguyen Anh Quynh 9a197b35a1 nullify handle when cs_open() fails. besides, return CS_ERR_ARCH when arch is unsupported 2013-12-22 13:41:38 +08:00
Nguyen Anh Quynh 58747adcbb to be sure, initialize arch_init[] with NULL 2013-12-22 13:37:13 +08:00
Nguyen Anh Quynh d345839bce support cs_option() for arm64 module 2013-12-22 11:10:56 +08:00
Nguyen Anh Quynh 39a42eddfb Change the way of supporting arch modularization
- Always use libapstone.so as library name, no matter which archs are compiled in.

- Add new API cs_support() to check if a particular arch is supported.

- Change cs_version(): return hexical version which encodes both major & minor version.
    the return value can be comparable.

- Bump API version to 1.1
2013-12-22 10:40:58 +08:00
Nguyen Anh Quynh f185180436 cleaner implementation for arch modularization 2013-12-21 12:16:47 +08:00
Nguyen Anh Quynh 31baeb570f Merge branch 'next' of https://github.com/aquynh/capstone into module 2013-12-21 10:01:02 +08:00
Nguyen Anh Quynh 7d02c92de8 code style: more fix for cs.c 2013-12-21 09:59:31 +08:00
Nguyen Anh Quynh 7008356bc5 change cs_insn struct to follow the commit 18103e4a. fixed Python & Java bindings accordingly. attn: bindings 2013-12-20 22:02:20 +08:00
danghvu 629a6d8901 Rename arch.h -> module.h 2013-12-20 01:44:17 -06:00
danghvu 0b6ea044ff Move cs_option dispatch into arch specific 2013-12-19 23:07:26 -06:00
danghvu 2b19296439 Fix indentation problem 2013-12-19 22:40:28 -06:00
danghvu 34d49d935b Support compilation of individual arch 2013-12-19 12:10:24 -06:00
Nguyen Anh Quynh 1bdb23a76d add CS_OPT_MODE option. this allows us to change engine's mode at run-time 2013-12-20 00:04:26 +08:00
Nguyen Anh Quynh 9a0dbabc23 simplify checking on condition to end the loop in cs_disasm(). issue spotted by Pancake 2013-12-15 22:25:58 +08:00
Nguyen Anh Quynh 1f44928d97 mips: fix for micromips 2013-12-15 14:04:59 +08:00
Nguyen Anh Quynh 4d3e852fbb detail option: provide instruction id even when detail option is OFF 2013-12-14 10:45:09 +08:00
Nguyen Anh Quynh a209e67f8a support to turn on/off building instruction details 2013-12-14 00:23:41 +08:00
Nguyen Anh Quynh e5c658c407 move PKG_* away from cs.c to CONFIG 2013-12-13 09:24:41 +08:00
Nguyen Anh Quynh a01d1546d6 x86: handle outs instruction in 16bit mode 2013-12-12 15:54:30 +08:00
Nguyen Anh Quynh 86dc393e81 properly handle output string having space as separator 2013-12-12 14:43:39 +08:00
Nguyen Anh Quynh defb9bcf2f more flexible on extracting insn menemonic, as sometimes space can be used as separator, not only tab 2013-12-12 14:00:12 +08:00
pancake f0e4eed89d Use const on all read-only buffers 2013-12-11 22:14:42 +01:00
Nguyen Anh Quynh 2215895ebc mips: no need cs_struct.micro_mips, as we can get that from cs_struct.mode 2013-12-11 18:11:49 +08:00
Nguyen Anh Quynh 36df4bb6a7 revert the cs_version() API 2013-12-10 13:31:20 +08:00
Nguyen Anh Quynh bb64b0bdca more API version to capstone.h, and remove cs_version(). reset API back to 1.0 for public release 2013-12-10 07:56:17 +08:00
Nguyen Anh Quynh a253c7a8e8 x86: map EFLAGS to string of 'flags', 'eflags' or 'rflags' depending on current CS_MODE 2013-12-09 10:26:18 +08:00
Nguyen Anh Quynh fe8030bdf0 update errno in cs_option() upon failure with CS_ERR_OPTION 2013-12-06 10:09:43 +08:00
Nguyen Anh Quynh 041e25dd66 add CS_ERR_OPTION type. cs_option() returns this error code on invalid option 2013-12-06 00:37:32 +08:00
Nguyen Anh Quynh 26a43715d9 bump API to 1.7 due to the addition of @bytes to cs_insn 2013-12-04 23:08:32 +08:00
Nguyen Anh Quynh 8f13f3c6ab rename @hex_code to @bytes, and move it to next to @size 2013-12-04 22:57:04 +08:00
Nguyen Anh Quynh c45b1588ef Merge branch 'master' of https://github.com/joxeankoret/capstone into hexcode 2013-12-04 19:28:54 +08:00
Joxean 114df0ef2a Added @hex_code member
It's used to retrieve the bytes of the instruction.
2013-12-04 07:11:32 +01:00
Nguyen Anh Quynh 4b95d9fa67 bump API to 1.6 to reflect the addition of the new API cs_option() 2013-12-04 13:48:52 +08:00
Nguyen Anh Quynh da8adaded2 API cs_option(): @value now has size_t, so mapping opaque pointer is possible for future options 2013-12-04 09:44:07 +08:00
Nguyen Anh Quynh c618db4473 change option names for cs_option(), and update python binding accordingly to support new cs_option() 2013-12-04 00:05:04 +08:00
Nguyen Anh Quynh b8ce68ec05 change cs_option() API to be more flexible with option value 2013-12-03 23:45:08 +08:00
Nguyen Anh Quynh 4a60a56be6 handle cs_option() according to arch & mode 2013-12-03 21:56:54 +08:00
Nguyen Anh Quynh 01aba002e3 add cs_option() API. move ATT & Intel syntax here, rather than having them as CS_MODE, which is wrong 2013-12-03 21:00:09 +08:00
Nguyen Anh Quynh 5dbe12a85b bump API to 1.5 due to the change in cs_disasm*(), and add PKG_{MAJOR|MINOR} for package version 2013-12-03 12:27:46 +08:00
Nguyen Anh Quynh 7d5f96d3a7 merge Radare's pull request on API change on @address of cs_disasm*() 2013-12-03 11:53:42 +08:00
Nguyen Anh Quynh f35e2ad35c add @regs_read_count, @regs_write_count, @groups_count to @cs_insn. bump API to 1.4 2013-12-03 11:10:26 +08:00
pancake c04f873791 Use uint64_t instead of size_t for addresses 2013-12-03 02:51:46 +01:00
Nguyen Anh Quynh 45078f87f1 finally drop ugly support for using arch as handle in cs_reg_name(). this doesnt change API 2013-12-01 00:22:15 +08:00
Nguyen Anh Quynh ad61c49288 arm64: handle decomposer properly for alias insn 2013-11-30 16:23:31 +08:00
Nguyen Anh Quynh 6b7abe3c81 arm64: handle alias insn in a better way, and add support for MNEG. bug reported by Patroklos Argyroudis 2013-11-30 00:54:24 +08:00
Nguyen Anh Quynh 402f3fcfb4 bump API to 1.3 2013-11-29 17:40:49 +08:00
Nguyen Anh Quynh b42a657873 change cs_disasm() and cs_disasm_dyn() to be portable API. fix related code using these API 2013-11-29 17:40:07 +08:00
Nguyen Anh Quynh 3eb9ac9bb9 mingw doesnt accept .errno of cs_struct. this fixes make it happy, and enable Windows cross-compile again 2013-11-27 15:24:47 +08:00
Nguyen Anh Quynh 26ee41aa67 initial import 2013-11-27 12:11:31 +08:00