[haiku-commits] haiku: hrev48284 - src/libs/udis86 headers/libs/udis86/libudis86

  • From: pulkomandy@xxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 12 Nov 2014 12:07:34 +0100 (CET)

hrev48284 adds 2 changesets to branch 'master'
old head: 735ca4068d0912990c5f900dc021733d4842599c
new head: 1aa19cd3ec09571c9baba0b83625231adcde07bb
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=1aa19cd+%5E735ca40

----------------------------------------------------------------------------

a358634: Update udis86 to current version.

1aa19cd: KDL disassembler: implement symbol lookup
  
  The new udis makes it possible to hook a symbol lookup function, so we
  can get symbol names and offsets instead of raw addresses in call and
  jump instrucitons.

                                 [ Adrien Destugues <pulkomandy@xxxxxxxxx> ]

----------------------------------------------------------------------------

17 files changed, 11224 insertions(+), 6206 deletions(-)
headers/libs/udis86/libudis86/decode.h           |   276 +-
headers/libs/udis86/libudis86/extern.h           |    66 +-
headers/libs/udis86/libudis86/itab.h             |  1379 +-
headers/libs/udis86/libudis86/syn.h              |    56 +-
headers/libs/udis86/libudis86/types.h            |   328 +-
headers/libs/udis86/libudis86/udint.h            |    89 +
headers/libs/udis86/udis86.h                     |    29 +-
src/add-ons/kernel/debugger/disasm/x86/Jamfile   |     1 -
.../kernel/debugger/disasm/x86/disasm_arch.cpp   |    27 +
src/libs/udis86/Jamfile                          |     1 -
src/libs/udis86/decode.c                         |  1794 ++-
src/libs/udis86/input.c                          |   226 -
src/libs/udis86/itab.c                           | 11897 ++++++++++++-----
src/libs/udis86/syn-att.c                        |   303 +-
src/libs/udis86/syn-intel.c                      |   319 +-
src/libs/udis86/syn.c                            |   244 +-
src/libs/udis86/udis86.c                         |   395 +-

############################################################################

Commit:      a358634d15862017675f54bfd8fdd580350b8955
URL:         http://cgit.haiku-os.org/haiku/commit/?id=a358634
Author:      Adrien Destugues <pulkomandy@xxxxxxxxx>
Date:        Wed Nov 12 10:25:41 2014 UTC

Update udis86 to current version.

----------------------------------------------------------------------------

diff --git a/headers/libs/udis86/libudis86/decode.h 
b/headers/libs/udis86/libudis86/decode.h
index 3d62096..a7362c8 100644
--- a/headers/libs/udis86/libudis86/decode.h
+++ b/headers/libs/udis86/libudis86/decode.h
@@ -1,33 +1,46 @@
+/* udis86 - libudis86/decode.h
+ *
+ * Copyright (c) 2002-2009 Vivek Thampi
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
modification, 
+ * are permitted provided that the following conditions are met:
+ * 
+ *     * Redistributions of source code must retain the above copyright 
notice, 
+ *       this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright 
notice, 
+ *       this list of conditions and the following disclaimer in the 
documentation 
+ *       and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
AND 
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
IMPLIED 
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
FOR 
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
DAMAGES 
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
SERVICES; 
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
ON 
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 
THIS 
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
 #ifndef UD_DECODE_H
 #define UD_DECODE_H
 
-#define MAX_INSN_LENGTH 15
+#include "types.h"
+#include "itab.h"
 
-/* register classes */
-#define T_NONE  0
-#define T_GPR   1
-#define T_MMX   2
-#define T_CRG   3
-#define T_DBG   4
-#define T_SEG   5
-#define T_XMM   6
+#define MAX_INSN_LENGTH 15
 
 /* itab prefix bits */
 #define P_none          ( 0 )
-#define P_c1            ( 1 << 0 )
-#define P_C1(n)         ( ( n >> 0 ) & 1 )
+#define P_cast          ( 1 << 0 )
+#define P_CAST(n)       ( ( n >> 0 ) & 1 )
 #define P_rexb          ( 1 << 1 )
 #define P_REXB(n)       ( ( n >> 1 ) & 1 )
-#define P_depM          ( 1 << 2 )
-#define P_DEPM(n)       ( ( n >> 2 ) & 1 )
-#define P_c3            ( 1 << 3 )
-#define P_C3(n)         ( ( n >> 3 ) & 1 )
 #define P_inv64         ( 1 << 4 )
 #define P_INV64(n)      ( ( n >> 4 ) & 1 )
 #define P_rexw          ( 1 << 5 )
 #define P_REXW(n)       ( ( n >> 5 ) & 1 )
-#define P_c2            ( 1 << 6 )
-#define P_C2(n)         ( ( n >> 6 ) & 1 )
 #define P_def64         ( 1 << 7 )
 #define P_DEF64(n)      ( ( n >> 7 ) & 1 )
 #define P_rexr          ( 1 << 8 )
@@ -40,27 +53,12 @@
 #define P_REXX(n)       ( ( n >> 11 ) & 1 )
 #define P_ImpAddr       ( 1 << 12 )
 #define P_IMPADDR(n)    ( ( n >> 12 ) & 1 )
-
-/* rex prefix bits */
-#define REX_W(r)        ( ( 0xF & ( r ) )  >> 3 )
-#define REX_R(r)        ( ( 0x7 & ( r ) )  >> 2 )
-#define REX_X(r)        ( ( 0x3 & ( r ) )  >> 1 )
-#define REX_B(r)        ( ( 0x1 & ( r ) )  >> 0 )
-#define REX_PFX_MASK(n) ( ( P_REXW(n) << 3 ) | \
-                          ( P_REXR(n) << 2 ) | \
-                          ( P_REXX(n) << 1 ) | \
-                          ( P_REXB(n) << 0 ) )
-
-/* scable-index-base bits */
-#define SIB_S(b)        ( ( b ) >> 6 )
-#define SIB_I(b)        ( ( ( b ) >> 3 ) & 7 )
-#define SIB_B(b)        ( ( b ) & 7 )
-
-/* modrm bits */
-#define MODRM_REG(b)    ( ( ( b ) >> 3 ) & 7 )
-#define MODRM_NNN(b)    ( ( ( b ) >> 3 ) & 7 )
-#define MODRM_MOD(b)    ( ( ( b ) >> 6 ) & 3 )
-#define MODRM_RM(b)     ( ( b ) & 7 )
+#define P_seg           ( 1 << 13 )
+#define P_SEG(n)        ( ( n >> 13 ) & 1 )
+#define P_str           ( 1 << 14 )
+#define P_STR(n)        ( ( n >> 14 ) & 1 )
+#define P_strz          ( 1 << 15 )
+#define P_STR_ZF(n)     ( ( n >> 15 ) & 1 )
 
 /* operand type constants -- order is important! */
 
@@ -68,25 +66,15 @@ enum ud_operand_code {
     OP_NONE,
 
     OP_A,      OP_E,      OP_M,       OP_G,       
-    OP_I,
-
-    OP_AL,     OP_CL,     OP_DL,      OP_BL,
-    OP_AH,     OP_CH,     OP_DH,      OP_BH,
-
-    OP_ALr8b,  OP_CLr9b,  OP_DLr10b,  OP_BLr11b,
-    OP_AHr12b, OP_CHr13b, OP_DHr14b,  OP_BHr15b,
+    OP_I,      OP_F,
 
-    OP_AX,     OP_CX,     OP_DX,      OP_BX,
-    OP_SI,     OP_DI,     OP_SP,      OP_BP,
+    OP_R0,     OP_R1,     OP_R2,      OP_R3,
+    OP_R4,     OP_R5,     OP_R6,      OP_R7,
 
-    OP_rAX,    OP_rCX,    OP_rDX,     OP_rBX,  
-    OP_rSP,    OP_rBP,    OP_rSI,     OP_rDI,
-
-    OP_rAXr8,  OP_rCXr9,  OP_rDXr10,  OP_rBXr11,  
-    OP_rSPr12, OP_rBPr13, OP_rSIr14,  OP_rDIr15,
-
-    OP_eAX,    OP_eCX,    OP_eDX,     OP_eBX,
-    OP_eSP,    OP_eBP,    OP_eSI,     OP_eDI,
+    OP_AL,     OP_CL,     OP_DL,
+    OP_AX,     OP_CX,     OP_DX,
+    OP_eAX,    OP_eCX,    OP_eDX,
+    OP_rAX,    OP_rCX,    OP_rDX,
 
     OP_ES,     OP_CS,     OP_SS,      OP_DS,  
     OP_FS,     OP_GS,
@@ -95,12 +83,15 @@ enum ud_operand_code {
     OP_ST4,    OP_ST5,    OP_ST6,     OP_ST7,
 
     OP_J,      OP_S,      OP_O,          
-    OP_I1,     OP_I3, 
+    OP_I1,     OP_I3,     OP_sI,
 
     OP_V,      OP_W,      OP_Q,       OP_P, 
+    OP_U,      OP_N,      OP_MU,
 
-    OP_R,      OP_C,  OP_D,       OP_VR,  OP_PR
-};
+    OP_R,      OP_C,      OP_D,       
+
+    OP_MR
+} UD_ATTR_PACKED;
 
 
 /* operand size constants */
@@ -109,10 +100,6 @@ enum ud_operand_size {
     SZ_NA  = 0,
     SZ_Z   = 1,
     SZ_V   = 2,
-    SZ_P   = 3,
-    SZ_WP  = 4,
-    SZ_DP  = 5,
-    SZ_MDQ = 6,
     SZ_RDQ = 7,
 
     /* the following values are used as is,
@@ -124,123 +111,41 @@ enum ud_operand_size {
     SZ_D   = 32,
     SZ_Q   = 64,
     SZ_T   = 80,
-};
+    SZ_O   = 128,
+
+    SZ_Y   = 17,
 
-/* itab entry operand definitions */
-
-#define O_rSPr12  { OP_rSPr12,   SZ_NA    }
-#define O_BL      { OP_BL,       SZ_NA    }
-#define O_BH      { OP_BH,       SZ_NA    }
-#define O_BP      { OP_BP,       SZ_NA    }
-#define O_AHr12b  { OP_AHr12b,   SZ_NA    }
-#define O_BX      { OP_BX,       SZ_NA    }
-#define O_Jz      { OP_J,        SZ_Z     }
-#define O_Jv      { OP_J,        SZ_V     }
-#define O_Jb      { OP_J,        SZ_B     }
-#define O_rSIr14  { OP_rSIr14,   SZ_NA    }
-#define O_GS      { OP_GS,       SZ_NA    }
-#define O_D       { OP_D,        SZ_NA    }
-#define O_rBPr13  { OP_rBPr13,   SZ_NA    }
-#define O_Ob      { OP_O,        SZ_B     }
-#define O_P       { OP_P,        SZ_NA    }
-#define O_Ow      { OP_O,        SZ_W     }
-#define O_Ov      { OP_O,        SZ_V     }
-#define O_Gw      { OP_G,        SZ_W     }
-#define O_Gv      { OP_G,        SZ_V     }
-#define O_rDX     { OP_rDX,      SZ_NA    }
-#define O_Gx      { OP_G,        SZ_MDQ   }
-#define O_Gd      { OP_G,        SZ_D     }
-#define O_Gb      { OP_G,        SZ_B     }
-#define O_rBXr11  { OP_rBXr11,   SZ_NA    }
-#define O_rDI     { OP_rDI,      SZ_NA    }
-#define O_rSI     { OP_rSI,      SZ_NA    }
-#define O_ALr8b   { OP_ALr8b,    SZ_NA    }
-#define O_eDI     { OP_eDI,      SZ_NA    }
-#define O_Gz      { OP_G,        SZ_Z     }
-#define O_eDX     { OP_eDX,      SZ_NA    }
-#define O_DHr14b  { OP_DHr14b,   SZ_NA    }
-#define O_rSP     { OP_rSP,      SZ_NA    }
-#define O_PR      { OP_PR,       SZ_NA    }
-#define O_NONE    { OP_NONE,     SZ_NA    }
-#define O_rCX     { OP_rCX,      SZ_NA    }
-#define O_jWP     { OP_J,        SZ_WP    }
-#define O_rDXr10  { OP_rDXr10,   SZ_NA    }
-#define O_Md      { OP_M,        SZ_D     }
-#define O_C       { OP_C,        SZ_NA    }
-#define O_G       { OP_G,        SZ_NA    }
-#define O_Mb      { OP_M,        SZ_B     }
-#define O_Mt      { OP_M,        SZ_T     }
-#define O_S       { OP_S,        SZ_NA    }
-#define O_Mq      { OP_M,        SZ_Q     }
-#define O_W       { OP_W,        SZ_NA    }
-#define O_ES      { OP_ES,       SZ_NA    }
-#define O_rBX     { OP_rBX,      SZ_NA    }
-#define O_Ed      { OP_E,        SZ_D     }
-#define O_DLr10b  { OP_DLr10b,   SZ_NA    }
-#define O_Mw      { OP_M,        SZ_W     }
-#define O_Eb      { OP_E,        SZ_B     }
-#define O_Ex      { OP_E,        SZ_MDQ   }
-#define O_Ez      { OP_E,        SZ_Z     }
-#define O_Ew      { OP_E,        SZ_W     }
-#define O_Ev      { OP_E,        SZ_V     }
-#define O_Ep      { OP_E,        SZ_P     }
-#define O_FS      { OP_FS,       SZ_NA    }
-#define O_Ms      { OP_M,        SZ_W     }
-#define O_rAXr8   { OP_rAXr8,    SZ_NA    }
-#define O_eBP     { OP_eBP,      SZ_NA    }
-#define O_Isb     { OP_I,        SZ_SB    }
-#define O_eBX     { OP_eBX,      SZ_NA    }
-#define O_rCXr9   { OP_rCXr9,    SZ_NA    }
-#define O_jDP     { OP_J,        SZ_DP    }
-#define O_CH      { OP_CH,       SZ_NA    }
-#define O_CL      { OP_CL,       SZ_NA    }
-#define O_R       { OP_R,        SZ_RDQ   }
-#define O_V       { OP_V,        SZ_NA    }
-#define O_CS      { OP_CS,       SZ_NA    }
-#define O_CHr13b  { OP_CHr13b,   SZ_NA    }
-#define O_eCX     { OP_eCX,      SZ_NA    }
-#define O_eSP     { OP_eSP,      SZ_NA    }
-#define O_SS      { OP_SS,       SZ_NA    }
-#define O_SP      { OP_SP,       SZ_NA    }
-#define O_BLr11b  { OP_BLr11b,   SZ_NA    }
-#define O_SI      { OP_SI,       SZ_NA    }
-#define O_eSI     { OP_eSI,      SZ_NA    }
-#define O_DL      { OP_DL,       SZ_NA    }
-#define O_DH      { OP_DH,       SZ_NA    }
-#define O_DI      { OP_DI,       SZ_NA    }
-#define O_DX      { OP_DX,       SZ_NA    }
-#define O_rBP     { OP_rBP,      SZ_NA    }
-#define O_Gvw     { OP_G,        SZ_MDQ   }
-#define O_I1      { OP_I1,       SZ_NA    }
-#define O_I3      { OP_I3,       SZ_NA    }
-#define O_DS      { OP_DS,       SZ_NA    }
-#define O_ST4     { OP_ST4,      SZ_NA    }
-#define O_ST5     { OP_ST5,      SZ_NA    }
-#define O_ST6     { OP_ST6,      SZ_NA    }
-#define O_ST7     { OP_ST7,      SZ_NA    }
-#define O_ST0     { OP_ST0,      SZ_NA    }
-#define O_ST1     { OP_ST1,      SZ_NA    }
-#define O_ST2     { OP_ST2,      SZ_NA    }
-#define O_ST3     { OP_ST3,      SZ_NA    }
-#define O_E       { OP_E,        SZ_NA    }
-#define O_AH      { OP_AH,       SZ_NA    }
-#define O_M       { OP_M,        SZ_NA    }
-#define O_AL      { OP_AL,       SZ_NA    }
-#define O_CLr9b   { OP_CLr9b,    SZ_NA    }
-#define O_Q       { OP_Q,        SZ_NA    }
-#define O_eAX     { OP_eAX,      SZ_NA    }
-#define O_VR      { OP_VR,       SZ_NA    }
-#define O_AX      { OP_AX,       SZ_NA    }
-#define O_rAX     { OP_rAX,      SZ_NA    }
-#define O_Iz      { OP_I,        SZ_Z     }
-#define O_rDIr15  { OP_rDIr15,   SZ_NA    }
-#define O_Iw      { OP_I,        SZ_W     }
-#define O_Iv      { OP_I,        SZ_V     }
-#define O_Ap      { OP_A,        SZ_P     }
-#define O_CX      { OP_CX,       SZ_NA    }
-#define O_Ib      { OP_I,        SZ_B     }
-#define O_BHr15b  { OP_BHr15b,   SZ_NA    }
+    /*
+     * complex size types, that encode sizes for operands
+     * of type MR (memory or register), for internal use
+     * only. Id space 256 and above.
+     */
+    SZ_BD  = (SZ_B << 8) | SZ_D,
+    SZ_BV  = (SZ_B << 8) | SZ_V,
+    SZ_WD  = (SZ_W << 8) | SZ_D,
+    SZ_WV  = (SZ_W << 8) | SZ_V,
+    SZ_WY  = (SZ_W << 8) | SZ_Y,
+    SZ_DY  = (SZ_D << 8) | SZ_Y,
+    SZ_WO  = (SZ_W << 8) | SZ_O,
+    SZ_DO  = (SZ_D << 8) | SZ_O,
+    SZ_QO  = (SZ_Q << 8) | SZ_O,
+
+} UD_ATTR_PACKED;
+
+
+/* resolve complex size type.
+ */
+static inline enum ud_operand_size
+Mx_mem_size(enum ud_operand_size size)
+{
+    return (size >> 8) & 0xff;
+}
 
+static inline enum ud_operand_size
+Mx_reg_size(enum ud_operand_size size)
+{
+    return size & 0xff;
+}
 
 /* A single operand of an entry in the instruction table. 
  * (internal use only)
@@ -264,7 +169,22 @@ struct ud_itab_entry
   uint32_t                      prefix;
 };
 
-extern const char * ud_lookup_mnemonic( enum ud_mnemonic_code c );
+struct ud_lookup_table_list_entry {
+    const uint16_t *table;
+    enum ud_table_type type;
+    const char *meta;
+};
+     
+
+
+static inline int
+ud_opcode_field_sext(uint8_t primary_opcode)
+{
+  return (primary_opcode & 0x02) != 0;
+}
+
+extern struct ud_itab_entry ud_itab[];
+extern struct ud_lookup_table_list_entry ud_lookup_table_list[];
 
 #endif /* UD_DECODE_H */
 
diff --git a/headers/libs/udis86/libudis86/extern.h 
b/headers/libs/udis86/libudis86/extern.h
index c33baf5..ae9f82f 100644
--- a/headers/libs/udis86/libudis86/extern.h
+++ b/headers/libs/udis86/libudis86/extern.h
@@ -1,9 +1,27 @@
-/* 
-----------------------------------------------------------------------------
- * extern.h
+/* udis86 - libudis86/extern.h
  *
- * Copyright (c) 2004, 2005, 2006, Vivek Mohan <vivek@xxxxxxxx>
- * All rights reserved. See LICENSE
- * 
-----------------------------------------------------------------------------
+ * Copyright (c) 2002-2009, 2013 Vivek Thampi
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
modification, 
+ * are permitted provided that the following conditions are met:
+ * 
+ *     * Redistributions of source code must retain the above copyright 
notice, 
+ *       this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright 
notice, 
+ *       this list of conditions and the following disclaimer in the 
documentation 
+ *       and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
AND 
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
IMPLIED 
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
FOR 
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
DAMAGES 
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
SERVICES; 
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
ON 
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 
THIS 
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 #ifndef UD_EXTERN_H
 #define UD_EXTERN_H
@@ -12,7 +30,6 @@
 extern "C" {
 #endif
 
-#include <stdio.h>
 #include "types.h"
 
 /* ============================= PUBLIC API ================================= 
*/
@@ -25,7 +42,7 @@ extern void ud_set_pc(struct ud*, uint64_t);
 
 extern void ud_set_input_hook(struct ud*, int (*)(struct ud*));
 
-extern void ud_set_input_buffer(struct ud*, uint8_t*, size_t);
+extern void ud_set_input_buffer(struct ud*, const uint8_t*, size_t);
 
 #ifndef __UD_STANDALONE__
 extern void ud_set_input_file(struct ud*, FILE*);
@@ -37,7 +54,7 @@ extern void ud_set_syntax(struct ud*, void (*)(struct ud*));
 
 extern void ud_input_skip(struct ud*, size_t);
 
-extern int ud_input_end(struct ud*);
+extern int ud_input_end(const struct ud*);
 
 extern unsigned int ud_decode(struct ud*);
 
@@ -47,21 +64,42 @@ extern void ud_translate_intel(struct ud*);
 
 extern void ud_translate_att(struct ud*);
 
-extern char* ud_insn_asm(struct ud* u);
+extern const char* ud_insn_asm(const struct ud* u);
 
-extern uint8_t* ud_insn_ptr(struct ud* u);
+extern const uint8_t* ud_insn_ptr(const struct ud* u);
 
-extern uint64_t ud_insn_off(struct ud*);
+extern uint64_t ud_insn_off(const struct ud*);
 
-extern char* ud_insn_hex(struct ud*);
+extern const char* ud_insn_hex(struct ud*);
 
-extern unsigned int ud_insn_len(struct ud* u);
+extern unsigned int ud_insn_len(const struct ud* u);
+
+extern const struct ud_operand* ud_insn_opr(const struct ud *u, unsigned int 
n);
+
+extern int ud_opr_is_sreg(const struct ud_operand *opr);
+
+extern int ud_opr_is_gpr(const struct ud_operand *opr);
+
+extern enum ud_mnemonic_code ud_insn_mnemonic(const struct ud *u);
 
 extern const char* ud_lookup_mnemonic(enum ud_mnemonic_code c);
 
+extern void ud_set_user_opaque_data(struct ud*, void*);
+
+extern void* ud_get_user_opaque_data(const struct ud*);
+
+extern uint64_t ud_insn_sext_imm(const struct ud*, const struct ud_operand*);
+
+extern void ud_set_asm_buffer(struct ud *u, char *buf, size_t size);
+
+extern void ud_set_sym_resolver(struct ud *u, 
+                                const char* (*resolver)(struct ud*, 
+                                                        uint64_t addr,
+                                                        int64_t *offset));
+
 /* ========================================================================== 
*/
 
 #ifdef __cplusplus
 }
 #endif
-#endif
+#endif /* UD_EXTERN_H */
diff --git a/headers/libs/udis86/libudis86/itab.h 
b/headers/libs/udis86/libudis86/itab.h
index 737112c..778a76d 100644
--- a/headers/libs/udis86/libudis86/itab.h
+++ b/headers/libs/udis86/libudis86/itab.h
@@ -1,719 +1,678 @@
-
-/* itab.h -- auto generated by opgen.py, do not edit. */
-
 #ifndef UD_ITAB_H
 #define UD_ITAB_H
 
+/* itab.h -- generated by udis86:scripts/ud_itab.py, do no edit */
 
-
-enum ud_itab_vendor_index {
-  ITAB__VENDOR_INDX__AMD,
-  ITAB__VENDOR_INDX__INTEL,
-};
-
-
-enum ud_itab_mode_index {
-  ITAB__MODE_INDX__16,
-  ITAB__MODE_INDX__32,
-  ITAB__MODE_INDX__64
-};
-
-
-enum ud_itab_mod_index {
-  ITAB__MOD_INDX__NOT_11,
-  ITAB__MOD_INDX__11
-};
-
-
-enum ud_itab_index {
-  ITAB__0F,
-  ITAB__0F__OP_00__REG,
-  ITAB__0F__OP_01__REG,
-  ITAB__0F__OP_01__REG__OP_00__MOD,
-  ITAB__0F__OP_01__REG__OP_00__MOD__OP_01__RM,
-  ITAB__0F__OP_01__REG__OP_00__MOD__OP_01__RM__OP_01__VENDOR,
-  ITAB__0F__OP_01__REG__OP_00__MOD__OP_01__RM__OP_03__VENDOR,
-  ITAB__0F__OP_01__REG__OP_00__MOD__OP_01__RM__OP_04__VENDOR,
-  ITAB__0F__OP_01__REG__OP_01__MOD,
-  ITAB__0F__OP_01__REG__OP_01__MOD__OP_01__RM,
-  ITAB__0F__OP_01__REG__OP_02__MOD,
-  ITAB__0F__OP_01__REG__OP_03__MOD,
-  ITAB__0F__OP_01__REG__OP_03__MOD__OP_01__RM,
-  ITAB__0F__OP_01__REG__OP_03__MOD__OP_01__RM__OP_00__VENDOR,
-  ITAB__0F__OP_01__REG__OP_03__MOD__OP_01__RM__OP_01__VENDOR,
-  ITAB__0F__OP_01__REG__OP_03__MOD__OP_01__RM__OP_02__VENDOR,
-  ITAB__0F__OP_01__REG__OP_03__MOD__OP_01__RM__OP_03__VENDOR,
-  ITAB__0F__OP_01__REG__OP_03__MOD__OP_01__RM__OP_04__VENDOR,
-  ITAB__0F__OP_01__REG__OP_03__MOD__OP_01__RM__OP_05__VENDOR,
-  ITAB__0F__OP_01__REG__OP_03__MOD__OP_01__RM__OP_06__VENDOR,
-  ITAB__0F__OP_01__REG__OP_03__MOD__OP_01__RM__OP_07__VENDOR,
-  ITAB__0F__OP_01__REG__OP_04__MOD,
-  ITAB__0F__OP_01__REG__OP_06__MOD,
-  ITAB__0F__OP_01__REG__OP_07__MOD,
-  ITAB__0F__OP_01__REG__OP_07__MOD__OP_01__RM,
-  ITAB__0F__OP_01__REG__OP_07__MOD__OP_01__RM__OP_01__VENDOR,
-  ITAB__0F__OP_0D__REG,
-  ITAB__0F__OP_18__REG,
-  ITAB__0F__OP_71__REG,
-  ITAB__0F__OP_72__REG,
-  ITAB__0F__OP_73__REG,
-  ITAB__0F__OP_AE__REG,
-  ITAB__0F__OP_AE__REG__OP_05__MOD,
-  ITAB__0F__OP_AE__REG__OP_05__MOD__OP_01__RM,
-  ITAB__0F__OP_AE__REG__OP_06__MOD,
-  ITAB__0F__OP_AE__REG__OP_06__MOD__OP_01__RM,
-  ITAB__0F__OP_AE__REG__OP_07__MOD,
-  ITAB__0F__OP_AE__REG__OP_07__MOD__OP_01__RM,
-  ITAB__0F__OP_BA__REG,
-  ITAB__0F__OP_C7__REG,
-  ITAB__0F__OP_C7__REG__OP_00__VENDOR,
-  ITAB__0F__OP_C7__REG__OP_07__VENDOR,
-  ITAB__0F__OP_D9__MOD,
-  ITAB__0F__OP_D9__MOD__OP_01__X87,
-  ITAB__1BYTE,
-  ITAB__1BYTE__OP_60__OSIZE,
-  ITAB__1BYTE__OP_61__OSIZE,
-  ITAB__1BYTE__OP_63__MODE,
-  ITAB__1BYTE__OP_6D__OSIZE,
-  ITAB__1BYTE__OP_6F__OSIZE,
-  ITAB__1BYTE__OP_80__REG,
-  ITAB__1BYTE__OP_81__REG,
-  ITAB__1BYTE__OP_82__REG,
-  ITAB__1BYTE__OP_83__REG,
-  ITAB__1BYTE__OP_8F__REG,
-  ITAB__1BYTE__OP_98__OSIZE,
-  ITAB__1BYTE__OP_99__OSIZE,
-  ITAB__1BYTE__OP_9C__MODE,
-  ITAB__1BYTE__OP_9C__MODE__OP_00__OSIZE,
-  ITAB__1BYTE__OP_9C__MODE__OP_01__OSIZE,
-  ITAB__1BYTE__OP_9D__MODE,
-  ITAB__1BYTE__OP_9D__MODE__OP_00__OSIZE,
-  ITAB__1BYTE__OP_9D__MODE__OP_01__OSIZE,
-  ITAB__1BYTE__OP_A5__OSIZE,
-  ITAB__1BYTE__OP_A7__OSIZE,
-  ITAB__1BYTE__OP_AB__OSIZE,
-  ITAB__1BYTE__OP_AD__OSIZE,
-  ITAB__1BYTE__OP_AE__MOD,
-  ITAB__1BYTE__OP_AE__MOD__OP_00__REG,
-  ITAB__1BYTE__OP_AF__OSIZE,
-  ITAB__1BYTE__OP_C0__REG,
-  ITAB__1BYTE__OP_C1__REG,
-  ITAB__1BYTE__OP_C6__REG,
-  ITAB__1BYTE__OP_C7__REG,
-  ITAB__1BYTE__OP_CF__OSIZE,
-  ITAB__1BYTE__OP_D0__REG,
-  ITAB__1BYTE__OP_D1__REG,
-  ITAB__1BYTE__OP_D2__REG,
-  ITAB__1BYTE__OP_D3__REG,
-  ITAB__1BYTE__OP_D8__MOD,
-  ITAB__1BYTE__OP_D8__MOD__OP_00__REG,
-  ITAB__1BYTE__OP_D8__MOD__OP_01__X87,
-  ITAB__1BYTE__OP_D9__MOD,
-  ITAB__1BYTE__OP_D9__MOD__OP_00__REG,
-  ITAB__1BYTE__OP_D9__MOD__OP_01__X87,
-  ITAB__1BYTE__OP_DA__MOD,
-  ITAB__1BYTE__OP_DA__MOD__OP_00__REG,
-  ITAB__1BYTE__OP_DA__MOD__OP_01__X87,
-  ITAB__1BYTE__OP_DB__MOD,
-  ITAB__1BYTE__OP_DB__MOD__OP_00__REG,
-  ITAB__1BYTE__OP_DB__MOD__OP_01__X87,
-  ITAB__1BYTE__OP_DC__MOD,
-  ITAB__1BYTE__OP_DC__MOD__OP_00__REG,
-  ITAB__1BYTE__OP_DC__MOD__OP_01__X87,
-  ITAB__1BYTE__OP_DD__MOD,
-  ITAB__1BYTE__OP_DD__MOD__OP_00__REG,
-  ITAB__1BYTE__OP_DD__MOD__OP_01__X87,
-  ITAB__1BYTE__OP_DE__MOD,
-  ITAB__1BYTE__OP_DE__MOD__OP_00__REG,
-  ITAB__1BYTE__OP_DE__MOD__OP_01__X87,
-  ITAB__1BYTE__OP_DF__MOD,
-  ITAB__1BYTE__OP_DF__MOD__OP_00__REG,
-  ITAB__1BYTE__OP_DF__MOD__OP_01__X87,
-  ITAB__1BYTE__OP_E3__ASIZE,
-  ITAB__1BYTE__OP_F6__REG,
-  ITAB__1BYTE__OP_F7__REG,
-  ITAB__1BYTE__OP_FE__REG,
-  ITAB__1BYTE__OP_FF__REG,
-  ITAB__3DNOW,
-  ITAB__PFX_SSE66__0F,
-  ITAB__PFX_SSE66__0F__OP_71__REG,
-  ITAB__PFX_SSE66__0F__OP_72__REG,
-  ITAB__PFX_SSE66__0F__OP_73__REG,
-  ITAB__PFX_SSE66__0F__OP_C7__REG,
-  ITAB__PFX_SSE66__0F__OP_C7__REG__OP_00__VENDOR,
-  ITAB__PFX_SSEF2__0F,
-  ITAB__PFX_SSEF3__0F,
-  ITAB__PFX_SSEF3__0F__OP_C7__REG,
-  ITAB__PFX_SSEF3__0F__OP_C7__REG__OP_07__VENDOR,
+/* ud_table_type -- lookup table types (see decode.c) */
+enum ud_table_type {
+    UD_TAB__OPC_TABLE,
+    UD_TAB__OPC_X87,
+    UD_TAB__OPC_MOD,
+    UD_TAB__OPC_VEX_M,
+    UD_TAB__OPC_VEX_P,
+    UD_TAB__OPC_RM,
+    UD_TAB__OPC_VENDOR,
+    UD_TAB__OPC_OSIZE,
+    UD_TAB__OPC_MODE,
+    UD_TAB__OPC_3DNOW,
+    UD_TAB__OPC_REG,
+    UD_TAB__OPC_ASIZE,
+    UD_TAB__OPC_SSE
 };
 
-
+/* ud_mnemonic -- mnemonic constants */
 enum ud_mnemonic_code {
-  UD_I3dnow,
-  UD_Iaaa,
-  UD_Iaad,
-  UD_Iaam,
-  UD_Iaas,
-  UD_Iadc,
-  UD_Iadd,
-  UD_Iaddpd,
-  UD_Iaddps,
-  UD_Iaddsd,
-  UD_Iaddss,
-  UD_Iaddsubpd,
-  UD_Iaddsubps,
-  UD_Iand,
-  UD_Iandpd,
-  UD_Iandps,
-  UD_Iandnpd,
-  UD_Iandnps,
-  UD_Iarpl,
-  UD_Imovsxd,
-  UD_Ibound,
-  UD_Ibsf,
-  UD_Ibsr,
-  UD_Ibswap,
-  UD_Ibt,
-  UD_Ibtc,
-  UD_Ibtr,
-  UD_Ibts,
-  UD_Icall,
-  UD_Icbw,
-  UD_Icwde,
-  UD_Icdqe,
-  UD_Iclc,
-  UD_Icld,
-  UD_Iclflush,
-  UD_Iclgi,
-  UD_Icli,
-  UD_Iclts,
-  UD_Icmc,
-  UD_Icmovo,
-  UD_Icmovno,
-  UD_Icmovb,
-  UD_Icmovae,
-  UD_Icmovz,
-  UD_Icmovnz,
-  UD_Icmovbe,
-  UD_Icmova,
-  UD_Icmovs,
-  UD_Icmovns,
-  UD_Icmovp,
-  UD_Icmovnp,
-  UD_Icmovl,
-  UD_Icmovge,
-  UD_Icmovle,
-  UD_Icmovg,
-  UD_Icmp,
-  UD_Icmppd,
-  UD_Icmpps,
-  UD_Icmpsb,
-  UD_Icmpsw,
-  UD_Icmpsd,
-  UD_Icmpsq,
-  UD_Icmpss,
-  UD_Icmpxchg,
-  UD_Icmpxchg8b,
-  UD_Icomisd,
-  UD_Icomiss,
-  UD_Icpuid,
-  UD_Icvtdq2pd,
-  UD_Icvtdq2ps,
-  UD_Icvtpd2dq,
-  UD_Icvtpd2pi,
-  UD_Icvtpd2ps,
-  UD_Icvtpi2ps,
-  UD_Icvtpi2pd,
-  UD_Icvtps2dq,
-  UD_Icvtps2pi,
-  UD_Icvtps2pd,
-  UD_Icvtsd2si,
-  UD_Icvtsd2ss,
-  UD_Icvtsi2ss,
-  UD_Icvtss2si,
-  UD_Icvtss2sd,
-  UD_Icvttpd2pi,
-  UD_Icvttpd2dq,
-  UD_Icvttps2dq,
-  UD_Icvttps2pi,
-  UD_Icvttsd2si,
-  UD_Icvtsi2sd,
-  UD_Icvttss2si,
-  UD_Icwd,
-  UD_Icdq,
-  UD_Icqo,
-  UD_Idaa,
-  UD_Idas,
-  UD_Idec,
-  UD_Idiv,
-  UD_Idivpd,
-  UD_Idivps,
-  UD_Idivsd,
-  UD_Idivss,
-  UD_Iemms,
-  UD_Ienter,
-  UD_If2xm1,
-  UD_Ifabs,
-  UD_Ifadd,
-  UD_Ifaddp,
-  UD_Ifbld,
-  UD_Ifbstp,
-  UD_Ifchs,
-  UD_Ifclex,
-  UD_Ifcmovb,
-  UD_Ifcmove,
-  UD_Ifcmovbe,
-  UD_Ifcmovu,
-  UD_Ifcmovnb,
-  UD_Ifcmovne,
-  UD_Ifcmovnbe,
-  UD_Ifcmovnu,
-  UD_Ifucomi,
-  UD_Ifcom,
-  UD_Ifcom2,
-  UD_Ifcomp3,
-  UD_Ifcomi,
-  UD_Ifucomip,
-  UD_Ifcomip,
-  UD_Ifcomp,
-  UD_Ifcomp5,
-  UD_Ifcompp,
-  UD_Ifcos,
-  UD_Ifdecstp,
-  UD_Ifdiv,
-  UD_Ifdivp,
-  UD_Ifdivr,
-  UD_Ifdivrp,
-  UD_Ifemms,
-  UD_Iffree,
-  UD_Iffreep,
-  UD_Ificom,
-  UD_Ificomp,
-  UD_Ifild,
-  UD_Ifncstp,
-  UD_Ifninit,
-  UD_Ifiadd,
-  UD_Ifidivr,
-  UD_Ifidiv,
-  UD_Ifisub,
-  UD_Ifisubr,
-  UD_Ifist,
-  UD_Ifistp,
-  UD_Ifisttp,
-  UD_Ifld,
-  UD_Ifld1,
-  UD_Ifldl2t,
-  UD_Ifldl2e,
-  UD_Ifldlpi,
-  UD_Ifldlg2,
-  UD_Ifldln2,
-  UD_Ifldz,
-  UD_Ifldcw,
-  UD_Ifldenv,
-  UD_Ifmul,
-  UD_Ifmulp,
-  UD_Ifimul,
-  UD_Ifnop,
-  UD_Ifpatan,
-  UD_Ifprem,
-  UD_Ifprem1,
-  UD_Ifptan,
-  UD_Ifrndint,
-  UD_Ifrstor,
-  UD_Ifnsave,
-  UD_Ifscale,
-  UD_Ifsin,
-  UD_Ifsincos,
-  UD_Ifsqrt,
-  UD_Ifstp,
-  UD_Ifstp1,
-  UD_Ifstp8,
-  UD_Ifstp9,
-  UD_Ifst,
-  UD_Ifnstcw,
-  UD_Ifnstenv,
-  UD_Ifnstsw,
-  UD_Ifsub,
-  UD_Ifsubp,
-  UD_Ifsubr,
-  UD_Ifsubrp,
-  UD_Iftst,
-  UD_Ifucom,
-  UD_Ifucomp,
-  UD_Ifucompp,
-  UD_Ifxam,
-  UD_Ifxch,
-  UD_Ifxch4,
-  UD_Ifxch7,
-  UD_Ifxrstor,
-  UD_Ifxsave,
-  UD_Ifpxtract,
-  UD_Ifyl2x,
-  UD_Ifyl2xp1,
-  UD_Ihaddpd,
-  UD_Ihaddps,
-  UD_Ihlt,
-  UD_Ihsubpd,
-  UD_Ihsubps,
-  UD_Iidiv,
-  UD_Iin,
-  UD_Iimul,
-  UD_Iinc,
-  UD_Iinsb,
-  UD_Iinsw,
-  UD_Iinsd,
-  UD_Iint1,
-  UD_Iint3,
-  UD_Iint,
-  UD_Iinto,
-  UD_Iinvd,
-  UD_Iinvlpg,
-  UD_Iinvlpga,
-  UD_Iiretw,
-  UD_Iiretd,
-  UD_Iiretq,
-  UD_Ijo,
-  UD_Ijno,
-  UD_Ijb,
-  UD_Ijae,
-  UD_Ijz,
-  UD_Ijnz,
-  UD_Ijbe,
-  UD_Ija,
-  UD_Ijs,
-  UD_Ijns,
-  UD_Ijp,
-  UD_Ijnp,
-  UD_Ijl,
-  UD_Ijge,
-  UD_Ijle,
-  UD_Ijg,
-  UD_Ijcxz,
-  UD_Ijecxz,
-  UD_Ijrcxz,
-  UD_Ijmp,
-  UD_Ilahf,
-  UD_Ilar,
-  UD_Ilddqu,
-  UD_Ildmxcsr,
-  UD_Ilds,
-  UD_Ilea,
-  UD_Iles,
-  UD_Ilfs,
-  UD_Ilgs,
-  UD_Ilidt,
-  UD_Ilss,
-  UD_Ileave,
-  UD_Ilfence,
-  UD_Ilgdt,
-  UD_Illdt,
-  UD_Ilmsw,
-  UD_Ilock,
-  UD_Ilodsb,
-  UD_Ilodsw,
-  UD_Ilodsd,
-  UD_Ilodsq,
-  UD_Iloopnz,
-  UD_Iloope,
-  UD_Iloop,
-  UD_Ilsl,
-  UD_Iltr,
-  UD_Imaskmovq,
-  UD_Imaxpd,
-  UD_Imaxps,
-  UD_Imaxsd,
-  UD_Imaxss,
-  UD_Imfence,
-  UD_Iminpd,
-  UD_Iminps,
-  UD_Iminsd,
-  UD_Iminss,
-  UD_Imonitor,
-  UD_Imov,
-  UD_Imovapd,
-  UD_Imovaps,
-  UD_Imovd,
-  UD_Imovddup,
-  UD_Imovdqa,
-  UD_Imovdqu,
-  UD_Imovdq2q,
-  UD_Imovhpd,
-  UD_Imovhps,
-  UD_Imovlhps,
-  UD_Imovlpd,
-  UD_Imovlps,
-  UD_Imovhlps,
-  UD_Imovmskpd,
-  UD_Imovmskps,
-  UD_Imovntdq,
-  UD_Imovnti,
-  UD_Imovntpd,
-  UD_Imovntps,
-  UD_Imovntq,
-  UD_Imovq,
-  UD_Imovqa,
-  UD_Imovq2dq,
-  UD_Imovsb,
-  UD_Imovsw,
-  UD_Imovsd,
-  UD_Imovsq,
-  UD_Imovsldup,
-  UD_Imovshdup,
-  UD_Imovss,
-  UD_Imovsx,
-  UD_Imovupd,
-  UD_Imovups,
-  UD_Imovzx,
-  UD_Imul,
-  UD_Imulpd,
-  UD_Imulps,
-  UD_Imulsd,
-  UD_Imulss,
-  UD_Imwait,
-  UD_Ineg,
-  UD_Inop,
-  UD_Inot,
-  UD_Ior,
-  UD_Iorpd,
-  UD_Iorps,
-  UD_Iout,
-  UD_Ioutsb,
-  UD_Ioutsw,
-  UD_Ioutsd,
-  UD_Ioutsq,
-  UD_Ipacksswb,
-  UD_Ipackssdw,
-  UD_Ipackuswb,
-  UD_Ipaddb,
-  UD_Ipaddw,
-  UD_Ipaddq,
-  UD_Ipaddsb,
-  UD_Ipaddsw,
-  UD_Ipaddusb,
-  UD_Ipaddusw,
-  UD_Ipand,
-  UD_Ipandn,
-  UD_Ipause,
-  UD_Ipavgb,
-  UD_Ipavgw,
-  UD_Ipcmpeqb,
-  UD_Ipcmpeqw,
-  UD_Ipcmpeqd,
-  UD_Ipcmpgtb,
-  UD_Ipcmpgtw,
-  UD_Ipcmpgtd,
-  UD_Ipextrw,
-  UD_Ipinsrw,
-  UD_Ipmaddwd,
-  UD_Ipmaxsw,
-  UD_Ipmaxub,
-  UD_Ipminsw,
-  UD_Ipminub,
-  UD_Ipmovmskb,
-  UD_Ipmulhuw,
-  UD_Ipmulhw,
-  UD_Ipmullw,
-  UD_Ipmuludq,
-  UD_Ipop,
-  UD_Ipopa,
-  UD_Ipopad,
-  UD_Ipopfw,
-  UD_Ipopfd,
-  UD_Ipopfq,
-  UD_Ipor,
-  UD_Iprefetch,
-  UD_Iprefetchnta,
-  UD_Iprefetcht0,
-  UD_Iprefetcht1,
-  UD_Iprefetcht2,
-  UD_Ipsadbw,
-  UD_Ipshufd,
-  UD_Ipshufhw,
-  UD_Ipshuflw,
-  UD_Ipshufw,
-  UD_Ipslldq,
-  UD_Ipsllw,
-  UD_Ipslld,
-  UD_Ipsllq,
-  UD_Ipsraw,
-  UD_Ipsrad,
-  UD_Ipsrlw,
-  UD_Ipsrld,
-  UD_Ipsrlq,
-  UD_Ipsrldq,
-  UD_Ipsubb,
-  UD_Ipsubw,
-  UD_Ipsubd,
-  UD_Ipsubq,
-  UD_Ipsubsb,
-  UD_Ipsubsw,
-  UD_Ipsubusb,
-  UD_Ipsubusw,
-  UD_Ipunpckhbw,
-  UD_Ipunpckhwd,
-  UD_Ipunpckhdq,
-  UD_Ipunpckhqdq,
-  UD_Ipunpcklbw,
-  UD_Ipunpcklwd,
-  UD_Ipunpckldq,
-  UD_Ipunpcklqdq,
-  UD_Ipi2fw,
-  UD_Ipi2fd,
-  UD_Ipf2iw,
-  UD_Ipf2id,
-  UD_Ipfnacc,
-  UD_Ipfpnacc,
-  UD_Ipfcmpge,
-  UD_Ipfmin,
-  UD_Ipfrcp,
-  UD_Ipfrsqrt,
-  UD_Ipfsub,
-  UD_Ipfadd,
-  UD_Ipfcmpgt,
-  UD_Ipfmax,
-  UD_Ipfrcpit1,
-  UD_Ipfrspit1,
-  UD_Ipfsubr,
-  UD_Ipfacc,
-  UD_Ipfcmpeq,
-  UD_Ipfmul,
-  UD_Ipfrcpit2,
-  UD_Ipmulhrw,
-  UD_Ipswapd,
-  UD_Ipavgusb,
-  UD_Ipush,
-  UD_Ipusha,
-  UD_Ipushad,
-  UD_Ipushfw,
-  UD_Ipushfd,
-  UD_Ipushfq,
-  UD_Ipxor,
-  UD_Ircl,
-  UD_Ircr,
-  UD_Irol,
-  UD_Iror,
-  UD_Ircpps,
-  UD_Ircpss,
-  UD_Irdmsr,
-  UD_Irdpmc,
-  UD_Irdtsc,
-  UD_Irdtscp,
-  UD_Irepne,
-  UD_Irep,
-  UD_Iret,
-  UD_Iretf,
-  UD_Irsm,
-  UD_Irsqrtps,
-  UD_Irsqrtss,
-  UD_Isahf,
-  UD_Isal,
-  UD_Isalc,
-  UD_Isar,
-  UD_Ishl,
-  UD_Ishr,
-  UD_Isbb,
-  UD_Iscasb,
-  UD_Iscasw,
-  UD_Iscasd,
-  UD_Iscasq,
-  UD_Iseto,
-  UD_Isetno,
-  UD_Isetb,
-  UD_Isetnb,
-  UD_Isetz,
-  UD_Isetnz,
-  UD_Isetbe,
-  UD_Iseta,
-  UD_Isets,
-  UD_Isetns,
-  UD_Isetp,
-  UD_Isetnp,
-  UD_Isetl,
-  UD_Isetge,
-  UD_Isetle,
-  UD_Isetg,
-  UD_Isfence,
-  UD_Isgdt,
-  UD_Ishld,
-  UD_Ishrd,
-  UD_Ishufpd,
-  UD_Ishufps,
-  UD_Isidt,
-  UD_Isldt,
-  UD_Ismsw,
-  UD_Isqrtps,
-  UD_Isqrtpd,
-  UD_Isqrtsd,
-  UD_Isqrtss,
-  UD_Istc,
-  UD_Istd,
-  UD_Istgi,
-  UD_Isti,
-  UD_Iskinit,
-  UD_Istmxcsr,
-  UD_Istosb,
-  UD_Istosw,
-  UD_Istosd,
-  UD_Istosq,
-  UD_Istr,
-  UD_Isub,
-  UD_Isubpd,
-  UD_Isubps,
-  UD_Isubsd,
-  UD_Isubss,
-  UD_Iswapgs,
-  UD_Isyscall,
-  UD_Isysenter,
-  UD_Isysexit,
-  UD_Isysret,
-  UD_Itest,
-  UD_Iucomisd,
-  UD_Iucomiss,
-  UD_Iud2,
-  UD_Iunpckhpd,
-  UD_Iunpckhps,
-  UD_Iunpcklps,
-  UD_Iunpcklpd,
-  UD_Iverr,
-  UD_Iverw,
-  UD_Ivmcall,
-  UD_Ivmclear,
-  UD_Ivmxon,
-  UD_Ivmptrld,
-  UD_Ivmptrst,
-  UD_Ivmresume,
-  UD_Ivmxoff,
-  UD_Ivmrun,
-  UD_Ivmmcall,
-  UD_Ivmload,
-  UD_Ivmsave,
-  UD_Iwait,
-  UD_Iwbinvd,
-  UD_Iwrmsr,
-  UD_Ixadd,
-  UD_Ixchg,
-  UD_Ixlatb,
-  UD_Ixor,
-  UD_Ixorpd,
-  UD_Ixorps,
-  UD_Idb,
-  UD_Iinvalid,
-  UD_Id3vil,
-  UD_Ina,
-  UD_Igrp_reg,
-  UD_Igrp_rm,
-  UD_Igrp_vendor,
-  UD_Igrp_x87,
-  UD_Igrp_mode,
-  UD_Igrp_osize,
-  UD_Igrp_asize,
-  UD_Igrp_mod,
-  UD_Inone,
-};
-
-
+    UD_Iinvalid,
+    UD_I3dnow,
+    UD_Inone,
+    UD_Idb,
+    UD_Ipause,
+    UD_Iaaa,
+    UD_Iaad,
+    UD_Iaam,
+    UD_Iaas,
+    UD_Iadc,
+    UD_Iadd,
+    UD_Iaddpd,
+    UD_Iaddps,
+    UD_Iaddsd,
+    UD_Iaddss,
+    UD_Iand,
+    UD_Iandpd,
+    UD_Iandps,
+    UD_Iandnpd,
+    UD_Iandnps,
+    UD_Iarpl,
+    UD_Imovsxd,
+    UD_Ibound,
+    UD_Ibsf,
+    UD_Ibsr,
+    UD_Ibswap,
+    UD_Ibt,
+    UD_Ibtc,
+    UD_Ibtr,
+    UD_Ibts,
+    UD_Icall,
+    UD_Icbw,
+    UD_Icwde,
+    UD_Icdqe,
+    UD_Iclc,
+    UD_Icld,
+    UD_Iclflush,
+    UD_Iclgi,
+    UD_Icli,
+    UD_Iclts,
+    UD_Icmc,
+    UD_Icmovo,
+    UD_Icmovno,
+    UD_Icmovb,
+    UD_Icmovae,
+    UD_Icmovz,
+    UD_Icmovnz,
+    UD_Icmovbe,
+    UD_Icmova,
+    UD_Icmovs,
+    UD_Icmovns,
+    UD_Icmovp,
+    UD_Icmovnp,
+    UD_Icmovl,
+    UD_Icmovge,
+    UD_Icmovle,
+    UD_Icmovg,
+    UD_Icmp,
+    UD_Icmppd,
+    UD_Icmpps,
+    UD_Icmpsb,
+    UD_Icmpsw,
+    UD_Icmpsd,
+    UD_Icmpsq,
+    UD_Icmpss,
+    UD_Icmpxchg,
+    UD_Icmpxchg8b,
+    UD_Icmpxchg16b,
+    UD_Icomisd,
+    UD_Icomiss,
+    UD_Icpuid,
+    UD_Icvtdq2pd,
+    UD_Icvtdq2ps,
+    UD_Icvtpd2dq,
+    UD_Icvtpd2pi,
+    UD_Icvtpd2ps,
+    UD_Icvtpi2ps,
+    UD_Icvtpi2pd,
+    UD_Icvtps2dq,
+    UD_Icvtps2pi,
+    UD_Icvtps2pd,
+    UD_Icvtsd2si,
+    UD_Icvtsd2ss,
+    UD_Icvtsi2ss,
+    UD_Icvtss2si,
+    UD_Icvtss2sd,
+    UD_Icvttpd2pi,
+    UD_Icvttpd2dq,
+    UD_Icvttps2dq,
+    UD_Icvttps2pi,
+    UD_Icvttsd2si,
+    UD_Icvtsi2sd,
+    UD_Icvttss2si,
+    UD_Icwd,
+    UD_Icdq,
+    UD_Icqo,
+    UD_Idaa,
+    UD_Idas,
+    UD_Idec,
+    UD_Idiv,
+    UD_Idivpd,
+    UD_Idivps,
+    UD_Idivsd,
+    UD_Idivss,
+    UD_Iemms,
+    UD_Ienter,
+    UD_If2xm1,
+    UD_Ifabs,
+    UD_Ifadd,
+    UD_Ifaddp,
+    UD_Ifbld,
+    UD_Ifbstp,
+    UD_Ifchs,
+    UD_Ifclex,
+    UD_Ifcmovb,
+    UD_Ifcmove,
+    UD_Ifcmovbe,
+    UD_Ifcmovu,
+    UD_Ifcmovnb,
+    UD_Ifcmovne,
+    UD_Ifcmovnbe,
+    UD_Ifcmovnu,
+    UD_Ifucomi,
+    UD_Ifcom,
+    UD_Ifcom2,
+    UD_Ifcomp3,
+    UD_Ifcomi,
+    UD_Ifucomip,
+    UD_Ifcomip,
+    UD_Ifcomp,
+    UD_Ifcomp5,
+    UD_Ifcompp,
+    UD_Ifcos,
+    UD_Ifdecstp,
+    UD_Ifdiv,
+    UD_Ifdivp,
+    UD_Ifdivr,
+    UD_Ifdivrp,
+    UD_Ifemms,
+    UD_Iffree,
+    UD_Iffreep,
+    UD_Ificom,
+    UD_Ificomp,
+    UD_Ifild,
+    UD_Ifincstp,
+    UD_Ifninit,
+    UD_Ifiadd,
+    UD_Ifidivr,
+    UD_Ifidiv,
+    UD_Ifisub,
+    UD_Ifisubr,
+    UD_Ifist,
+    UD_Ifistp,
+    UD_Ifisttp,
+    UD_Ifld,
+    UD_Ifld1,
+    UD_Ifldl2t,
+    UD_Ifldl2e,
+    UD_Ifldpi,
+    UD_Ifldlg2,
+    UD_Ifldln2,
+    UD_Ifldz,
+    UD_Ifldcw,
+    UD_Ifldenv,
+    UD_Ifmul,
+    UD_Ifmulp,
+    UD_Ifimul,
+    UD_Ifnop,
+    UD_Ifpatan,
+    UD_Ifprem,
+    UD_Ifprem1,
+    UD_Ifptan,
+    UD_Ifrndint,
+    UD_Ifrstor,
+    UD_Ifnsave,
+    UD_Ifscale,
+    UD_Ifsin,
+    UD_Ifsincos,
+    UD_Ifsqrt,
+    UD_Ifstp,
+    UD_Ifstp1,
+    UD_Ifstp8,
+    UD_Ifstp9,
+    UD_Ifst,
+    UD_Ifnstcw,
+    UD_Ifnstenv,
+    UD_Ifnstsw,
+    UD_Ifsub,
+    UD_Ifsubp,
+    UD_Ifsubr,
+    UD_Ifsubrp,
+    UD_Iftst,
+    UD_Ifucom,
+    UD_Ifucomp,
+    UD_Ifucompp,
+    UD_Ifxam,
+    UD_Ifxch,
+    UD_Ifxch4,
+    UD_Ifxch7,
+    UD_Ifxrstor,
+    UD_Ifxsave,
+    UD_Ifxtract,
+    UD_Ifyl2x,
+    UD_Ifyl2xp1,
+    UD_Ihlt,
+    UD_Iidiv,
+    UD_Iin,
+    UD_Iimul,
+    UD_Iinc,
+    UD_Iinsb,
+    UD_Iinsw,
+    UD_Iinsd,
+    UD_Iint1,
+    UD_Iint3,
+    UD_Iint,
+    UD_Iinto,
+    UD_Iinvd,
+    UD_Iinvept,
+    UD_Iinvlpg,
+    UD_Iinvlpga,
+    UD_Iinvvpid,
+    UD_Iiretw,
+    UD_Iiretd,
+    UD_Iiretq,
+    UD_Ijo,
+    UD_Ijno,
+    UD_Ijb,
+    UD_Ijae,
+    UD_Ijz,
+    UD_Ijnz,
+    UD_Ijbe,
+    UD_Ija,
+    UD_Ijs,
+    UD_Ijns,
+    UD_Ijp,
+    UD_Ijnp,
+    UD_Ijl,
+    UD_Ijge,
+    UD_Ijle,
+    UD_Ijg,
+    UD_Ijcxz,
+    UD_Ijecxz,
+    UD_Ijrcxz,
+    UD_Ijmp,
+    UD_Ilahf,
+    UD_Ilar,
+    UD_Ilddqu,
+    UD_Ildmxcsr,
+    UD_Ilds,
+    UD_Ilea,
+    UD_Iles,
+    UD_Ilfs,
+    UD_Ilgs,
+    UD_Ilidt,
+    UD_Ilss,
+    UD_Ileave,
+    UD_Ilfence,
+    UD_Ilgdt,
+    UD_Illdt,
+    UD_Ilmsw,
+    UD_Ilock,
+    UD_Ilodsb,
+    UD_Ilodsw,
+    UD_Ilodsd,
+    UD_Ilodsq,
+    UD_Iloopne,
+    UD_Iloope,
+    UD_Iloop,
+    UD_Ilsl,
+    UD_Iltr,
+    UD_Imaskmovq,
+    UD_Imaxpd,
+    UD_Imaxps,
+    UD_Imaxsd,
+    UD_Imaxss,
+    UD_Imfence,
+    UD_Iminpd,
+    UD_Iminps,
+    UD_Iminsd,
+    UD_Iminss,
+    UD_Imonitor,
+    UD_Imontmul,
+    UD_Imov,
+    UD_Imovapd,
+    UD_Imovaps,
+    UD_Imovd,
+    UD_Imovhpd,
+    UD_Imovhps,
+    UD_Imovlhps,
+    UD_Imovlpd,
+    UD_Imovlps,
+    UD_Imovhlps,
+    UD_Imovmskpd,
+    UD_Imovmskps,
+    UD_Imovntdq,
+    UD_Imovnti,
+    UD_Imovntpd,
+    UD_Imovntps,
+    UD_Imovntq,
+    UD_Imovq,
+    UD_Imovsb,
+    UD_Imovsw,
+    UD_Imovsd,
+    UD_Imovsq,
+    UD_Imovss,
+    UD_Imovsx,
+    UD_Imovupd,
+    UD_Imovups,
+    UD_Imovzx,
+    UD_Imul,
+    UD_Imulpd,
+    UD_Imulps,
+    UD_Imulsd,
+    UD_Imulss,
+    UD_Imwait,
+    UD_Ineg,
+    UD_Inop,
+    UD_Inot,
+    UD_Ior,
+    UD_Iorpd,
+    UD_Iorps,
+    UD_Iout,
+    UD_Ioutsb,
+    UD_Ioutsw,
+    UD_Ioutsd,
+    UD_Ipacksswb,
+    UD_Ipackssdw,
+    UD_Ipackuswb,
+    UD_Ipaddb,
+    UD_Ipaddw,
+    UD_Ipaddd,
+    UD_Ipaddsb,
+    UD_Ipaddsw,
+    UD_Ipaddusb,
+    UD_Ipaddusw,
+    UD_Ipand,
+    UD_Ipandn,
+    UD_Ipavgb,
+    UD_Ipavgw,
+    UD_Ipcmpeqb,
+    UD_Ipcmpeqw,
+    UD_Ipcmpeqd,
+    UD_Ipcmpgtb,
+    UD_Ipcmpgtw,
+    UD_Ipcmpgtd,
+    UD_Ipextrb,
+    UD_Ipextrd,
+    UD_Ipextrq,
+    UD_Ipextrw,
+    UD_Ipinsrb,
+    UD_Ipinsrw,
+    UD_Ipinsrd,
+    UD_Ipinsrq,
+    UD_Ipmaddwd,
+    UD_Ipmaxsw,
+    UD_Ipmaxub,
+    UD_Ipminsw,
+    UD_Ipminub,
+    UD_Ipmovmskb,
+    UD_Ipmulhuw,
+    UD_Ipmulhw,
+    UD_Ipmullw,
+    UD_Ipop,
+    UD_Ipopa,
+    UD_Ipopad,
+    UD_Ipopfw,
+    UD_Ipopfd,
+    UD_Ipopfq,
+    UD_Ipor,
+    UD_Iprefetch,
+    UD_Iprefetchnta,
+    UD_Iprefetcht0,
+    UD_Iprefetcht1,
+    UD_Iprefetcht2,
+    UD_Ipsadbw,
+    UD_Ipshufw,
+    UD_Ipsllw,
+    UD_Ipslld,
+    UD_Ipsllq,
+    UD_Ipsraw,
+    UD_Ipsrad,
+    UD_Ipsrlw,
+    UD_Ipsrld,
+    UD_Ipsrlq,
+    UD_Ipsubb,
+    UD_Ipsubw,
+    UD_Ipsubd,
+    UD_Ipsubsb,
+    UD_Ipsubsw,
+    UD_Ipsubusb,
+    UD_Ipsubusw,
+    UD_Ipunpckhbw,
+    UD_Ipunpckhwd,
+    UD_Ipunpckhdq,
+    UD_Ipunpcklbw,
+    UD_Ipunpcklwd,
+    UD_Ipunpckldq,
+    UD_Ipi2fw,
+    UD_Ipi2fd,
+    UD_Ipf2iw,
+    UD_Ipf2id,
+    UD_Ipfnacc,
+    UD_Ipfpnacc,
+    UD_Ipfcmpge,
+    UD_Ipfmin,
+    UD_Ipfrcp,
+    UD_Ipfrsqrt,
+    UD_Ipfsub,
+    UD_Ipfadd,
+    UD_Ipfcmpgt,
+    UD_Ipfmax,
+    UD_Ipfrcpit1,
+    UD_Ipfrsqit1,
+    UD_Ipfsubr,
+    UD_Ipfacc,
+    UD_Ipfcmpeq,
+    UD_Ipfmul,
+    UD_Ipfrcpit2,
+    UD_Ipmulhrw,
+    UD_Ipswapd,
+    UD_Ipavgusb,
+    UD_Ipush,
+    UD_Ipusha,
+    UD_Ipushad,
+    UD_Ipushfw,
+    UD_Ipushfd,
+    UD_Ipushfq,
+    UD_Ipxor,
+    UD_Ircl,
+    UD_Ircr,
+    UD_Irol,
+    UD_Iror,
+    UD_Ircpps,
+    UD_Ircpss,
+    UD_Irdmsr,
+    UD_Irdpmc,
+    UD_Irdtsc,
+    UD_Irdtscp,
+    UD_Irepne,
+    UD_Irep,
+    UD_Iret,
+    UD_Iretf,
+    UD_Irsm,
+    UD_Irsqrtps,
+    UD_Irsqrtss,
+    UD_Isahf,
+    UD_Isalc,
+    UD_Isar,
+    UD_Ishl,
+    UD_Ishr,
+    UD_Isbb,
+    UD_Iscasb,
+    UD_Iscasw,
+    UD_Iscasd,
+    UD_Iscasq,
+    UD_Iseto,
+    UD_Isetno,
+    UD_Isetb,
+    UD_Isetae,
+    UD_Isetz,
+    UD_Isetnz,
+    UD_Isetbe,
+    UD_Iseta,
+    UD_Isets,
+    UD_Isetns,
+    UD_Isetp,
+    UD_Isetnp,
+    UD_Isetl,
+    UD_Isetge,
+    UD_Isetle,
+    UD_Isetg,
+    UD_Isfence,
+    UD_Isgdt,
+    UD_Ishld,
+    UD_Ishrd,
+    UD_Ishufpd,
+    UD_Ishufps,
+    UD_Isidt,
+    UD_Isldt,
+    UD_Ismsw,
+    UD_Isqrtps,
+    UD_Isqrtpd,
+    UD_Isqrtsd,
+    UD_Isqrtss,
+    UD_Istc,
+    UD_Istd,
+    UD_Istgi,
+    UD_Isti,
+    UD_Iskinit,
+    UD_Istmxcsr,
+    UD_Istosb,
+    UD_Istosw,
+    UD_Istosd,
+    UD_Istosq,
+    UD_Istr,
+    UD_Isub,
+    UD_Isubpd,
+    UD_Isubps,
+    UD_Isubsd,
+    UD_Isubss,
+    UD_Iswapgs,
+    UD_Isyscall,
+    UD_Isysenter,
+    UD_Isysexit,
+    UD_Isysret,
+    UD_Itest,
+    UD_Iucomisd,
+    UD_Iucomiss,
+    UD_Iud2,
+    UD_Iunpckhpd,
+    UD_Iunpckhps,
+    UD_Iunpcklps,
+    UD_Iunpcklpd,
+    UD_Iverr,
+    UD_Iverw,
+    UD_Ivmcall,
+    UD_Ivmclear,
+    UD_Ivmxon,
+    UD_Ivmptrld,
+    UD_Ivmptrst,
+    UD_Ivmlaunch,
+    UD_Ivmresume,
+    UD_Ivmxoff,
+    UD_Ivmread,
+    UD_Ivmwrite,
+    UD_Ivmrun,
+    UD_Ivmmcall,
+    UD_Ivmload,
+    UD_Ivmsave,
+    UD_Iwait,
+    UD_Iwbinvd,
+    UD_Iwrmsr,
+    UD_Ixadd,
+    UD_Ixchg,
+    UD_Ixgetbv,
+    UD_Ixlatb,
+    UD_Ixor,
+    UD_Ixorpd,
+    UD_Ixorps,
+    UD_Ixcryptecb,
+    UD_Ixcryptcbc,
+    UD_Ixcryptctr,
+    UD_Ixcryptcfb,
+    UD_Ixcryptofb,
+    UD_Ixrstor,
+    UD_Ixsave,
+    UD_Ixsetbv,
+    UD_Ixsha1,
+    UD_Ixsha256,
+    UD_Ixstore,
+    UD_Iaesdec,
+    UD_Iaesdeclast,
+    UD_Iaesenc,
+    UD_Iaesenclast,
+    UD_Iaesimc,
+    UD_Iaeskeygenassist,
+    UD_Ipclmulqdq,
+    UD_Igetsec,
+    UD_Imovdqa,
+    UD_Imaskmovdqu,
+    UD_Imovdq2q,
+    UD_Imovdqu,
+    UD_Imovq2dq,
+    UD_Ipaddq,
+    UD_Ipsubq,
+    UD_Ipmuludq,
+    UD_Ipshufhw,
+    UD_Ipshuflw,
+    UD_Ipshufd,
+    UD_Ipslldq,
+    UD_Ipsrldq,
+    UD_Ipunpckhqdq,
+    UD_Ipunpcklqdq,
+    UD_Iaddsubpd,
+    UD_Iaddsubps,
+    UD_Ihaddpd,
+    UD_Ihaddps,
+    UD_Ihsubpd,
+    UD_Ihsubps,
+    UD_Imovddup,
+    UD_Imovshdup,
+    UD_Imovsldup,
+    UD_Ipabsb,
+    UD_Ipabsw,
+    UD_Ipabsd,
+    UD_Ipshufb,
+    UD_Iphaddw,
+    UD_Iphaddd,
+    UD_Iphaddsw,
+    UD_Ipmaddubsw,
+    UD_Iphsubw,
+    UD_Iphsubd,
+    UD_Iphsubsw,
+    UD_Ipsignb,
+    UD_Ipsignd,
+    UD_Ipsignw,
+    UD_Ipmulhrsw,
+    UD_Ipalignr,
+    UD_Ipblendvb,
+    UD_Ipmuldq,
+    UD_Ipminsb,
+    UD_Ipminsd,
+    UD_Ipminuw,
+    UD_Ipminud,
+    UD_Ipmaxsb,
+    UD_Ipmaxsd,
+    UD_Ipmaxud,
+    UD_Ipmaxuw,
+    UD_Ipmulld,
+    UD_Iphminposuw,
+    UD_Iroundps,
+    UD_Iroundpd,
+    UD_Iroundss,
+    UD_Iroundsd,
+    UD_Iblendpd,
+    UD_Ipblendw,
+    UD_Iblendps,
+    UD_Iblendvpd,
+    UD_Iblendvps,
+    UD_Idpps,
+    UD_Idppd,
+    UD_Impsadbw,
+    UD_Iextractps,
+    UD_Iinsertps,
+    UD_Imovntdqa,
+    UD_Ipackusdw,
+    UD_Ipmovsxbw,
+    UD_Ipmovsxbd,
+    UD_Ipmovsxbq,
+    UD_Ipmovsxwd,
+    UD_Ipmovsxwq,
+    UD_Ipmovsxdq,
+    UD_Ipmovzxbw,
+    UD_Ipmovzxbd,
+    UD_Ipmovzxbq,
+    UD_Ipmovzxwd,
+    UD_Ipmovzxwq,
+    UD_Ipmovzxdq,
+    UD_Ipcmpeqq,
+    UD_Ipopcnt,
+    UD_Iptest,
+    UD_Ipcmpestri,
+    UD_Ipcmpestrm,
+    UD_Ipcmpgtq,
+    UD_Ipcmpistri,
+    UD_Ipcmpistrm,
+    UD_Imovbe,
+    UD_Icrc32,
+    UD_MAX_MNEMONIC_CODE
+} UD_ATTR_PACKED;
 
-extern const char* ud_mnemonics_str[];;
-extern struct ud_itab_entry* ud_itab_list[];
+extern const char * ud_mnemonics_str[];
 
-#endif
+#endif /* UD_ITAB_H */
diff --git a/headers/libs/udis86/libudis86/syn.h 
b/headers/libs/udis86/libudis86/syn.h
index 7e62066..d3b1e3f 100644
--- a/headers/libs/udis86/libudis86/syn.h
+++ b/headers/libs/udis86/libudis86/syn.h
@@ -1,25 +1,53 @@
-/* 
-----------------------------------------------------------------------------
- * syn.h
+/* udis86 - libudis86/syn.h
  *
- * Copyright (c) 2006, Vivek Mohan <vivek@xxxxxxxx>
- * All rights reserved. See LICENSE
- * 
-----------------------------------------------------------------------------
+ * Copyright (c) 2002-2009
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
modification, 
+ * are permitted provided that the following conditions are met:
+ * 
+ *     * Redistributions of source code must retain the above copyright 
notice, 
+ *       this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright 
notice, 
+ *       this list of conditions and the following disclaimer in the 
documentation 
+ *       and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
AND 
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
IMPLIED 
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
FOR 
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
DAMAGES 
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
SERVICES; 
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
ON 
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 
THIS 
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 #ifndef UD_SYN_H
 #define UD_SYN_H
 
-#include <stdio.h>
-#include <stdarg.h>
 #include "types.h"
+#ifndef __UD_STANDALONE__
+# include <stdarg.h>
+#endif /* __UD_STANDALONE__ */
 
 extern const char* ud_reg_tab[];
 
-static void mkasm(struct ud* u, const char* fmt, ...)
-{
-  va_list ap;
-  va_start(ap, fmt);
-  u->insn_fill += vsprintf((char*) u->insn_buffer + u->insn_fill, fmt, ap);
-  va_end(ap);
-}
+uint64_t ud_syn_rel_target(struct ud*, struct ud_operand*);
 
+#ifdef __GNUC__
+int ud_asmprintf(struct ud *u, const char *fmt, ...)
+    __attribute__ ((format (printf, 2, 3)));
+#else
+int ud_asmprintf(struct ud *u, const char *fmt, ...);
 #endif
+
+void ud_syn_print_addr(struct ud *u, uint64_t addr);
+void ud_syn_print_imm(struct ud* u, const struct ud_operand *op);
+void ud_syn_print_mem_disp(struct ud* u, const struct ud_operand *, int sign);
+
+#endif /* UD_SYN_H */
+
+/*
+vim: set ts=2 sw=2 expandtab
+*/
diff --git a/headers/libs/udis86/libudis86/types.h 
b/headers/libs/udis86/libudis86/types.h
index 46afdc6..84b3ac8 100644
--- a/headers/libs/udis86/libudis86/types.h
+++ b/headers/libs/udis86/libudis86/types.h
@@ -1,31 +1,58 @@
-/* 
-----------------------------------------------------------------------------
- * types.h
+/* udis86 - libudis86/types.h
  *
- * Copyright (c) 2006, Vivek Mohan <vivek@xxxxxxxx>
- * All rights reserved. See LICENSE
- * 
-----------------------------------------------------------------------------
+ * Copyright (c) 2002-2013 Vivek Thampi
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
modification, 
+ * are permitted provided that the following conditions are met:
+ * 
+ *     * Redistributions of source code must retain the above copyright 
notice, 
+ *       this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright 
notice, 
+ *       this list of conditions and the following disclaimer in the 
documentation 
+ *       and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
AND 
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
IMPLIED 
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
FOR 
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
DAMAGES 
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
SERVICES; 
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
ON 
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 
THIS 
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 #ifndef UD_TYPES_H
 #define UD_TYPES_H
 
-#include <stdio.h>
-
-#ifdef _MSC_VER
-# define FMT64 "%I64"
-  typedef unsigned __int8 uint8_t;
-  typedef unsigned __int16 uint16_t;
-  typedef unsigned __int32 uint32_t;
-  typedef unsigned __int64 uint64_t;
-  typedef __int8 int8_t;
-  typedef __int16 int16_t;
-  typedef __int32 int32_t;
-  typedef __int64 int64_t;
-#else
-# define FMT64 "%ll"
-# include <inttypes.h>
+#ifdef __KERNEL__
+  /* -D__KERNEL__ is automatically passed on the command line when
+     building something as part of the Linux kernel */
+# include <linux/kernel.h>
+# include <linux/string.h>
+# ifndef __UD_STANDALONE__
+#  define __UD_STANDALONE__ 1
 #endif
+#endif /* __KERNEL__ */
+
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+# include <stdint.h>
+# include <stdio.h>
+# define inline __inline /* MS Visual Studio requires __inline 
+                            instead of inline for C code */
+#elif !defined(__UD_STANDALONE__) || defined(__HAIKU__)
+# include <stdio.h>
+# include <inttypes.h>
+#endif /* !__UD_STANDALONE__ */
+
+/* gcc specific extensions */
+#if defined(__GNUC__) && __GNUC__ > 2
+# define UD_ATTR_PACKED __attribute__((packed))
+#else
+# define UD_ATTR_PACKED
+#endif /* UD_ATTR_PACKED */
 
-#include "itab.h"
 
 /* 
-----------------------------------------------------------------------------
  * All possible "types" of objects in udis86. Order is Important!
@@ -36,95 +63,101 @@ enum ud_type
   UD_NONE,
 
   /* 8 bit GPRs */
-  UD_R_AL,     UD_R_CL,        UD_R_DL,        UD_R_BL,
-  UD_R_AH,     UD_R_CH,        UD_R_DH,        UD_R_BH,
-  UD_R_SPL,    UD_R_BPL,       UD_R_SIL,       UD_R_DIL,
-  UD_R_R8B,    UD_R_R9B,       UD_R_R10B,      UD_R_R11B,
-  UD_R_R12B,   UD_R_R13B,      UD_R_R14B,      UD_R_R15B,
+  UD_R_AL,  UD_R_CL,  UD_R_DL,  UD_R_BL,
+  UD_R_AH,  UD_R_CH,  UD_R_DH,  UD_R_BH,
+  UD_R_SPL, UD_R_BPL, UD_R_SIL, UD_R_DIL,
+  UD_R_R8B, UD_R_R9B, UD_R_R10B,  UD_R_R11B,
+  UD_R_R12B,  UD_R_R13B,  UD_R_R14B,  UD_R_R15B,
 
   /* 16 bit GPRs */
-  UD_R_AX,     UD_R_CX,        UD_R_DX,        UD_R_BX,
-  UD_R_SP,     UD_R_BP,        UD_R_SI,        UD_R_DI,
-  UD_R_R8W,    UD_R_R9W,       UD_R_R10W,      UD_R_R11W,
-  UD_R_R12W,   UD_R_R13W,      UD_R_R14W,      UD_R_R15W,
-       
+  UD_R_AX,  UD_R_CX,  UD_R_DX,  UD_R_BX,
+  UD_R_SP,  UD_R_BP,  UD_R_SI,  UD_R_DI,
+  UD_R_R8W, UD_R_R9W, UD_R_R10W,  UD_R_R11W,
+  UD_R_R12W,  UD_R_R13W,  UD_R_R14W,  UD_R_R15W,
+  
   /* 32 bit GPRs */
-  UD_R_EAX,    UD_R_ECX,       UD_R_EDX,       UD_R_EBX,
-  UD_R_ESP,    UD_R_EBP,       UD_R_ESI,       UD_R_EDI,
-  UD_R_R8D,    UD_R_R9D,       UD_R_R10D,      UD_R_R11D,
-  UD_R_R12D,   UD_R_R13D,      UD_R_R14D,      UD_R_R15D,
-       
+  UD_R_EAX, UD_R_ECX, UD_R_EDX, UD_R_EBX,
+  UD_R_ESP, UD_R_EBP, UD_R_ESI, UD_R_EDI,
+  UD_R_R8D, UD_R_R9D, UD_R_R10D,  UD_R_R11D,
+  UD_R_R12D,  UD_R_R13D,  UD_R_R14D,  UD_R_R15D,
+  
   /* 64 bit GPRs */
-  UD_R_RAX,    UD_R_RCX,       UD_R_RDX,       UD_R_RBX,
-  UD_R_RSP,    UD_R_RBP,       UD_R_RSI,       UD_R_RDI,
-  UD_R_R8,     UD_R_R9,        UD_R_R10,       UD_R_R11,
-  UD_R_R12,    UD_R_R13,       UD_R_R14,       UD_R_R15,
+  UD_R_RAX, UD_R_RCX, UD_R_RDX, UD_R_RBX,
+  UD_R_RSP, UD_R_RBP, UD_R_RSI, UD_R_RDI,
+  UD_R_R8,  UD_R_R9,  UD_R_R10, UD_R_R11,
+  UD_R_R12, UD_R_R13, UD_R_R14, UD_R_R15,
 
   /* segment registers */
-  UD_R_ES,     UD_R_CS,        UD_R_SS,        UD_R_DS,
-  UD_R_FS,     UD_R_GS,        
+  UD_R_ES,  UD_R_CS,  UD_R_SS,  UD_R_DS,
+  UD_R_FS,  UD_R_GS,  
 
   /* control registers*/
-  UD_R_CR0,    UD_R_CR1,       UD_R_CR2,       UD_R_CR3,
-  UD_R_CR4,    UD_R_CR5,       UD_R_CR6,       UD_R_CR7,
-  UD_R_CR8,    UD_R_CR9,       UD_R_CR10,      UD_R_CR11,
-  UD_R_CR12,   UD_R_CR13,      UD_R_CR14,      UD_R_CR15,
-       
+  UD_R_CR0, UD_R_CR1, UD_R_CR2, UD_R_CR3,
+  UD_R_CR4, UD_R_CR5, UD_R_CR6, UD_R_CR7,
+  UD_R_CR8, UD_R_CR9, UD_R_CR10,  UD_R_CR11,
+  UD_R_CR12,  UD_R_CR13,  UD_R_CR14,  UD_R_CR15,
+  
   /* debug registers */
-  UD_R_DR0,    UD_R_DR1,       UD_R_DR2,       UD_R_DR3,
-  UD_R_DR4,    UD_R_DR5,       UD_R_DR6,       UD_R_DR7,
-  UD_R_DR8,    UD_R_DR9,       UD_R_DR10,      UD_R_DR11,
-  UD_R_DR12,   UD_R_DR13,      UD_R_DR14,      UD_R_DR15,
+  UD_R_DR0, UD_R_DR1, UD_R_DR2, UD_R_DR3,
+  UD_R_DR4, UD_R_DR5, UD_R_DR6, UD_R_DR7,
+  UD_R_DR8, UD_R_DR9, UD_R_DR10,  UD_R_DR11,
+  UD_R_DR12,  UD_R_DR13,  UD_R_DR14,  UD_R_DR15,
 
   /* mmx registers */
-  UD_R_MM0,    UD_R_MM1,       UD_R_MM2,       UD_R_MM3,
-  UD_R_MM4,    UD_R_MM5,       UD_R_MM6,       UD_R_MM7,
+  UD_R_MM0, UD_R_MM1, UD_R_MM2, UD_R_MM3,
+  UD_R_MM4, UD_R_MM5, UD_R_MM6, UD_R_MM7,
 
   /* x87 registers */
-  UD_R_ST0,    UD_R_ST1,       UD_R_ST2,       UD_R_ST3,
-  UD_R_ST4,    UD_R_ST5,       UD_R_ST6,       UD_R_ST7, 
+  UD_R_ST0, UD_R_ST1, UD_R_ST2, UD_R_ST3,
+  UD_R_ST4, UD_R_ST5, UD_R_ST6, UD_R_ST7, 
 
   /* extended multimedia registers */
-  UD_R_XMM0,   UD_R_XMM1,      UD_R_XMM2,      UD_R_XMM3,
-  UD_R_XMM4,   UD_R_XMM5,      UD_R_XMM6,      UD_R_XMM7,
-  UD_R_XMM8,   UD_R_XMM9,      UD_R_XMM10,     UD_R_XMM11,
-  UD_R_XMM12,  UD_R_XMM13,     UD_R_XMM14,     UD_R_XMM15,
+  UD_R_XMM0,  UD_R_XMM1,  UD_R_XMM2,  UD_R_XMM3,
+  UD_R_XMM4,  UD_R_XMM5,  UD_R_XMM6,  UD_R_XMM7,
+  UD_R_XMM8,  UD_R_XMM9,  UD_R_XMM10, UD_R_XMM11,
+  UD_R_XMM12, UD_R_XMM13, UD_R_XMM14, UD_R_XMM15,
 
   UD_R_RIP,
 
   /* Operand Types */
-  UD_OP_REG,   UD_OP_MEM,      UD_OP_PTR,      UD_OP_IMM,      
-  UD_OP_JIMM,  UD_OP_CONST
+  UD_OP_REG,  UD_OP_MEM,  UD_OP_PTR,  UD_OP_IMM,  
+  UD_OP_JIMM, UD_OP_CONST
+};
+
+#include "itab.h"
+
+union ud_lval {
+  int8_t     sbyte;
+  uint8_t    ubyte;
+  int16_t    sword;
+  uint16_t   uword;
+  int32_t    sdword;
+  uint32_t   udword;
+  int64_t    sqword;
+  uint64_t   uqword;
+  struct {
+    uint16_t seg;
+    uint32_t off;
+  } ptr;
 };
 
 /* 
-----------------------------------------------------------------------------
  * struct ud_operand - Disassembled instruction Operand.
  * 
-----------------------------------------------------------------------------
  */
-struct ud_operand 
-{
-  enum ud_type         type;
-  uint8_t              size;
-  union {
-       int8_t          sbyte;
-       uint8_t         ubyte;
-       int16_t         sword;
-       uint16_t        uword;
-       int32_t         sdword;
-       uint32_t        udword;
-       int64_t         sqword;
-       uint64_t        uqword;
-
-       struct {
-               uint16_t seg;
-               uint32_t off;
-       } ptr;
-  } lval;
-
-  enum ud_type         base;
-  enum ud_type         index;
-  uint8_t              offset;
-  uint8_t              scale;  
+struct ud_operand {
+  enum ud_type    type;
+  uint8_t         size;
+  enum ud_type    base;
+  enum ud_type    index;
+  uint8_t         scale;  
+  uint8_t         offset;
+  union ud_lval   lval;
+  /*
+   * internal use only
+   */
+  uint64_t        _legacy; /* this will be removed in 1.8 */
+  uint8_t         _oprcode;
 };
 
 /* 
-----------------------------------------------------------------------------
@@ -133,68 +166,85 @@ struct ud_operand
  */
 struct ud
 {
-  int                  (*inp_hook) (struct ud*);
-  uint8_t              inp_curr;
-  uint8_t              inp_fill;
-  FILE*                        inp_file;
-  uint8_t              inp_ctr;
-  uint8_t*             inp_buff;
-  uint8_t*             inp_buff_end;
-  uint8_t              inp_end;
-  void                 (*translator)(struct ud*);
-  uint64_t             insn_offset;
-  char                 insn_hexcode[32];
-  char                 insn_buffer[64];
-  unsigned int         insn_fill;
-  uint8_t              dis_mode;
-  uint64_t             pc;
-  uint8_t              vendor;
-  struct map_entry*    mapen;
-  enum ud_mnemonic_code        mnemonic;
-  struct ud_operand    operand[3];
-  uint8_t              error;
-  uint8_t              pfx_rex;
-  uint8_t              pfx_seg;
-  uint8_t              pfx_opr;
-  uint8_t              pfx_adr;
-  uint8_t              pfx_lock;
-  uint8_t              pfx_rep;
-  uint8_t              pfx_repe;
-  uint8_t              pfx_repne;
-  uint8_t              pfx_insn;
-  uint8_t              default64;
-  uint8_t              opr_mode;
-  uint8_t              adr_mode;
-  uint8_t              br_far;
-  uint8_t              br_near;
-  uint8_t              implicit_addr;
-  uint8_t              c1;
-  uint8_t              c2;
-  uint8_t              c3;
-  uint8_t              inp_cache[256];
-  uint8_t              inp_sess[64];
+  /*
+   * input buffering
+   */
+  int       (*inp_hook) (struct ud*);
+#ifndef __UD_STANDALONE__
+  FILE*     inp_file;
+#endif
+  const uint8_t* inp_buf;
+  size_t    inp_buf_size;
+  size_t    inp_buf_index;
+  uint8_t   inp_curr;
+  size_t    inp_ctr;
+  uint8_t   inp_sess[64];
+  int       inp_end;
+
+  void      (*translator)(struct ud*);
+  uint64_t  insn_offset;
+  char      insn_hexcode[64];
+
+  /*
+   * Assembly output buffer
+   */
+  char     *asm_buf;
+  size_t    asm_buf_size;
+  size_t    asm_buf_fill;
+  char      asm_buf_int[128];
+
+  /*
+   * Symbol resolver for use in the translation phase.
+   */
+  const char* (*sym_resolver)(struct ud*, uint64_t addr, int64_t *offset);
+
+  uint8_t   dis_mode;
+  uint64_t  pc;
+  uint8_t   vendor;
+  enum ud_mnemonic_code mnemonic;
+  struct ud_operand operand[3];
+  uint8_t   error;
+  uint8_t   pfx_rex;
+  uint8_t   pfx_seg;
+  uint8_t   pfx_opr;
+  uint8_t   pfx_adr;
+  uint8_t   pfx_lock;
+  uint8_t   pfx_str;
+  uint8_t   pfx_rep;
+  uint8_t   pfx_repe;
+  uint8_t   pfx_repne;
+  uint8_t   opr_mode;
+  uint8_t   adr_mode;
+  uint8_t   br_far;
+  uint8_t   br_near;
+  uint8_t   have_modrm;
+  uint8_t   modrm;
+  uint8_t   primary_opcode;
+  void *    user_opaque_data;
   struct ud_itab_entry * itab_entry;
+  struct ud_lookup_table_list_entry *le;
 };
 
 /* 
-----------------------------------------------------------------------------
  * Type-definitions
  * 
-----------------------------------------------------------------------------
  */
-typedef enum ud_type           ud_type_t;
-typedef enum ud_mnemonic_code  ud_mnemonic_code_t;
+typedef enum ud_type          ud_type_t;
+typedef enum ud_mnemonic_code ud_mnemonic_code_t;
 
-typedef struct ud              ud_t;
-typedef struct ud_operand      ud_operand_t;
+typedef struct ud             ud_t;
+typedef struct ud_operand     ud_operand_t;
 
-#define UD_SYN_INTEL           ud_translate_intel
-#define UD_SYN_ATT             ud_translate_att
-#define UD_EOI                 -1
-#define UD_INP_CACHE_SZ                32
-#define UD_VENDOR_AMD          0
-#define UD_VENDOR_INTEL                1
-
-#define bail_out(ud,error_code) longjmp( (ud)->bailout, error_code )
-#define try_decode(ud) if ( setjmp( (ud)->bailout ) == 0 )
-#define catch_error() else
+#define UD_SYN_INTEL          ud_translate_intel
+#define UD_SYN_ATT            ud_translate_att
+#define UD_EOI                (-1)
+#define UD_INP_CACHE_SZ       32
+#define UD_VENDOR_AMD         0
+#define UD_VENDOR_INTEL       1
+#define UD_VENDOR_ANY         2
 
 #endif
+
+/*
+vim: set ts=2 sw=2 expandtab
+*/
diff --git a/headers/libs/udis86/libudis86/udint.h 
b/headers/libs/udis86/libudis86/udint.h
new file mode 100644
index 0000000..2908b61
--- /dev/null
+++ b/headers/libs/udis86/libudis86/udint.h
@@ -0,0 +1,89 @@
+/* udis86 - libudis86/udint.h -- definitions for internal use only
+ * 
+ * Copyright (c) 2002-2009 Vivek Thampi
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
modification, 
+ * are permitted provided that the following conditions are met:
+ * 
+ *     * Redistributions of source code must retain the above copyright 
notice, 
+ *       this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright 
notice, 
+ *       this list of conditions and the following disclaimer in the 
documentation 
+ *       and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
AND 
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
IMPLIED 
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
FOR 
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
DAMAGES 
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
SERVICES; 
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
ON 
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 
THIS 
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef _UDINT_H_
+#define _UDINT_H_
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif /* HAVE_CONFIG_H */
+
+#if defined(UD_DEBUG) && HAVE_ASSERT_H
+# include <assert.h>
+# define UD_ASSERT(_x) assert(_x)
+#else
+# define UD_ASSERT(_x)
+#endif /* !HAVE_ASSERT_H */
+
+#if defined(UD_DEBUG)
+  #define UDERR(u, msg) \
+    do { \
+      (u)->error = 1; \
+      fprintf(stderr, "decode-error: %s:%d: %s", \
+              __FILE__, __LINE__, (msg)); \
+    } while (0)
+#else
+  #define UDERR(u, m) \
+    do { \
+      (u)->error = 1; \
+    } while (0)
+#endif /* !LOGERR */
+
+#define UD_RETURN_ON_ERROR(u) \
+  do { \
+    if ((u)->error != 0) { \
+      return (u)->error; \
+    } \
+  } while (0)
+
+#define UD_RETURN_WITH_ERROR(u, m) \
+  do { \
+    UDERR(u, m); \
+    return (u)->error; \
+  } while (0)
+
+#ifndef __UD_STANDALONE__
+# define UD_NON_STANDALONE(x) x
+#else
+# define UD_NON_STANDALONE(x)
+#endif
+
+/* printf formatting int64 specifier */
+#ifdef FMT64
+# undef FMT64
+#endif
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+# define FMT64 "I64"
+#else
+# if defined(__APPLE__)
+#  define FMT64 "ll"
+# elif defined(__amd64__) || defined(__x86_64__)
+#  define FMT64 "l"
+# else 
+#  define FMT64 "ll"
+# endif /* !x64 */
+#endif
+
+#endif /* _UDINT_H_ */
diff --git a/headers/libs/udis86/udis86.h b/headers/libs/udis86/udis86.h
index 2228778..bdd3857 100644
--- a/headers/libs/udis86/udis86.h
+++ b/headers/libs/udis86/udis86.h
@@ -1,11 +1,28 @@
-/* 
-----------------------------------------------------------------------------
- * udis86.h
+/* udis86 - udis86.h
  *
- * Copyright (c) 2002, 2003, 2004 Vivek Mohan <vivek@xxxxxxxx>
- * All rights reserved. See (LICENSE)
- * 
-----------------------------------------------------------------------------
+ * Copyright (c) 2002-2009 Vivek Thampi
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
modification, 
+ * are permitted provided that the following conditions are met:
+ * 
+ *     * Redistributions of source code must retain the above copyright 
notice, 
+ *       this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright 
notice, 
+ *       this list of conditions and the following disclaimer in the 
documentation 
+ *       and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
AND 
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
IMPLIED 
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
FOR 
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
DAMAGES 
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
SERVICES; 
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
ON 
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 
THIS 
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
-
 #ifndef UDIS86_H
 #define UDIS86_H
 
diff --git a/src/add-ons/kernel/debugger/disasm/x86/Jamfile 
b/src/add-ons/kernel/debugger/disasm/x86/Jamfile
index 7cd107c..466bb9a 100644
--- a/src/add-ons/kernel/debugger/disasm/x86/Jamfile
+++ b/src/add-ons/kernel/debugger/disasm/x86/Jamfile
@@ -11,7 +11,6 @@ DEFINES += __assert_fail=disasm_arch_assert ;
 
 local libUdis86Sources =
        decode.c
-       input.c
        itab.c
        syn-att.c
        syn.c
diff --git a/src/libs/udis86/Jamfile b/src/libs/udis86/Jamfile
index 2047e4e..ff04715 100644
--- a/src/libs/udis86/Jamfile
+++ b/src/libs/udis86/Jamfile
@@ -7,7 +7,6 @@ UseHeaders [ LibraryHeaders [ FDirName udis86 libudis86 ] ] ;
 
 StaticLibrary libudis86.a :
        decode.c
-       input.c
        itab.c
        syn-att.c
        syn.c
diff --git a/src/libs/udis86/decode.c b/src/libs/udis86/decode.c
index d9daa7d..b4efa77 100644
--- a/src/libs/udis86/decode.c
+++ b/src/libs/udis86/decode.c
@@ -1,337 +1,281 @@
-/* 
-----------------------------------------------------------------------------
- * decode.c
- *
- * Copyright (c) 2005, 2006, Vivek Mohan <vivek@xxxxxxxx>
- * All rights reserved. See LICENSE
- * 
-----------------------------------------------------------------------------
+/* udis86 - libudis86/decode.c
+ * 
+ * Copyright (c) 2002-2009 Vivek Thampi
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without 
modification, 
+ * are permitted provided that the following conditions are met:
+ * 
+ *     * Redistributions of source code must retain the above copyright 
notice, 
+ *       this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright 
notice, 
+ *       this list of conditions and the following disclaimer in the 
documentation 
+ *       and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
AND 
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
IMPLIED 
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
FOR 

[ *** diff truncated: 15674 lines dropped *** ]


############################################################################

Revision:    hrev48284
Commit:      1aa19cd3ec09571c9baba0b83625231adcde07bb
URL:         http://cgit.haiku-os.org/haiku/commit/?id=1aa19cd
Author:      Adrien Destugues <pulkomandy@xxxxxxxxx>
Date:        Wed Nov 12 11:06:37 2014 UTC

KDL disassembler: implement symbol lookup

The new udis makes it possible to hook a symbol lookup function, so we
can get symbol names and offsets instead of raw addresses in call and
jump instrucitons.

----------------------------------------------------------------------------


Other related posts: