Print this page
fixup dis_min_instrlen
take to dis and libdisasm with an axe; does not yet compile

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libdisasm/common/libdisasm.h
          +++ new/usr/src/lib/libdisasm/common/libdisasm.h
↓ open down ↓ 14 lines elided ↑ open up ↑
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  24   24   * Use is subject to license terms.
       25 + * Copyright 2012 Joshua M. Clulow <josh@sysmgr.org>
  25   26   */
  26   27  
  27   28  #ifndef _LIBDISASM_H
  28   29  #define _LIBDISASM_H
  29   30  
  30      -#pragma ident   "%Z%%M% %I%     %E% SMI"
  31      -
  32   31  #include <sys/types.h>
  33   32  
  34   33  #ifdef  __cplusplus
  35   34  extern "C" {
  36   35  #endif
  37   36  
  38   37  typedef struct dis_handle dis_handle_t;
  39   38  
  40   39  #define DIS_DEFAULT             0x0
  41   40  
  42   41  /* SPARC disassembler flags */
  43      -#define DIS_SPARC_V8            0x01
  44      -#define DIS_SPARC_V9            0x02
  45      -#define DIS_SPARC_V9_SGI        0x04
  46      -#define DIS_SPARC_V9_OPL        0x08
       42 +#define DIS_SPARC_V8            0x001
       43 +#define DIS_SPARC_V9            0x002
       44 +#define DIS_SPARC_V9_SGI        0x004
       45 +#define DIS_SPARC_V9_OPL        0x008
  47   46  
  48      -/* x86 diassembler flags (mutually exclusive) */
  49      -#define DIS_X86_SIZE16          0x08
  50      -#define DIS_X86_SIZE32          0x10
  51      -#define DIS_X86_SIZE64          0x20
       47 +/* x86 diassembler flags */
       48 +#define DIS_X86_SIZE16          0x100
       49 +#define DIS_X86_SIZE32          0x010
       50 +#define DIS_X86_SIZE64          0x020
  52   51  
  53   52  /* generic disassembler flags */
  54      -#define DIS_OCTAL               0x40
  55      -#define DIS_NOIMMSYM            0x80
       53 +#define DIS_OCTAL               0x040
       54 +#define DIS_NOIMMSYM            0x080
  56   55  
       56 +#define DIS_ARCH_MASK           (DIS_SPARC_V8 | \
       57 +                DIS_SPARC_V9 | DIS_SPARC_V9_SGI | DIS_SPARC_V9_OPL | \
       58 +                DIS_X86_SIZE16 | DIS_X86_SIZE32 | DIS_X86_SIZE64)
       59 +
  57   60  typedef int (*dis_lookup_f)(void *, uint64_t, char *, size_t, uint64_t *,
  58   61      size_t *);
  59   62  typedef int (*dis_read_f)(void *, uint64_t, void *, size_t);
  60   63  
  61   64  extern dis_handle_t *dis_handle_create(int, void *, dis_lookup_f, dis_read_f);
  62   65  extern void dis_handle_destroy(dis_handle_t *);
  63   66  
  64   67  extern int dis_disassemble(dis_handle_t *, uint64_t, char *, size_t);
  65   68  extern uint64_t dis_previnstr(dis_handle_t *, uint64_t, int n);
  66   69  extern void dis_set_data(dis_handle_t *, void *);
  67   70  extern void dis_flags_set(dis_handle_t *, int f);
  68   71  extern void dis_flags_clear(dis_handle_t *, int f);
  69   72  extern int dis_max_instrlen(dis_handle_t *);
       73 +extern int dis_min_instrlen(dis_handle_t *);
  70   74  
  71   75  /* libdisasm errors */
  72   76  #define E_DIS_NOMEM             1       /* Out of memory */
  73   77  #define E_DIS_INVALFLAG         2       /* Invalid flag for this architecture */
       78 +#define E_DIS_UNSUPARCH         3       /* Unsupported architecture */
  74   79  
  75   80  extern int dis_errno(void);
  76   81  extern const char *dis_strerror(int);
  77   82  
  78   83  #ifdef  __cplusplus
  79   84  }
  80   85  #endif
  81   86  
  82   87  #endif  /* _LIBDISASM_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX