The second patch of this series might be a little difficult to deal with, but I included a diff of the changes from the upstream udis86-1.7.2 tarball (retrieved from https://downloads.sourceforge.net/udis86/udis86-1.7.2.tar.gz), and I'm copying it again here.
diff -ur udis86-1.7.2/libudis86/decode.c udis86/decode.c --- udis86-1.7.2/libudis86/decode.c +++ udis86/decode.c @@ -23,8 +23,9 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "udint.h" +#include "winsup.h" #include "types.h" +#include "udint.h" #include "decode.h" #ifndef __UD_STANDALONE__ @@ -204,7 +205,7 @@ decode_prefixes(struct ud *u) { int done = 0; - uint8_t curr, last = 0; + uint8_t curr = 0, last = 0; UD_RETURN_ON_ERROR(u); do { @@ -653,12 +654,12 @@ break; case OP_F: u->br_far = 1; - /* intended fall through */ + fallthrough; case OP_M: if (MODRM_MOD(modrm(u)) == 3) { UDERR(u, "expected modrm.mod != 3\n"); } - /* intended fall through */ + fallthrough; case OP_E: decode_modrm_rm(u, operand, REGCLASS_GPR, size); break; @@ -677,7 +678,7 @@ if (MODRM_MOD(modrm(u)) != 3) { UDERR(u, "expected modrm.mod == 3\n"); } - /* intended fall through */ + fallthrough; case OP_Q: decode_modrm_rm(u, operand, REGCLASS_MMX, size); break; @@ -688,7 +689,7 @@ if (MODRM_MOD(modrm(u)) != 3) { UDERR(u, "expected modrm.mod == 3\n"); } - /* intended fall through */ + fallthrough; case OP_W: decode_modrm_rm(u, operand, REGCLASS_XMM, size); break; diff -ur udis86-1.7.2/libudis86/decode.h udis86/decode.h --- udis86-1.7.2/libudis86/decode.h +++ udis86/decode.h @@ -183,8 +183,8 @@ return (primary_opcode & 0x02) != 0; } -extern struct ud_itab_entry ud_itab[]; -extern struct ud_lookup_table_list_entry ud_lookup_table_list[]; +extern const struct ud_itab_entry ud_itab[]; +extern const struct ud_lookup_table_list_entry ud_lookup_table_list[]; #endif /* UD_DECODE_H */ diff -ur udis86-1.7.2/libudis86/extern.h udis86/extern.h --- udis86-1.7.2/libudis86/extern.h +++ udis86/extern.h @@ -60,9 +60,11 @@ extern unsigned int ud_disassemble(struct ud*); +#ifndef __INSIDE_CYGWIN__ extern void ud_translate_intel(struct ud*); extern void ud_translate_att(struct ud*); +#endif /* __INSIDE_CYGWIN__ */ extern const char* ud_insn_asm(const struct ud* u); @@ -82,7 +84,9 @@ extern enum ud_mnemonic_code ud_insn_mnemonic(const struct ud *u); +#ifndef __INSIDE_CYGWIN__ extern const char* ud_lookup_mnemonic(enum ud_mnemonic_code c); +#endif /* __INSIDE_CYGWIN__ */ extern void ud_set_user_opaque_data(struct ud*, void*); diff -ur udis86-1.7.2/libudis86/itab.c udis86/itab.c --- udis86-1.7.2/libudis86/itab.c +++ udis86/itab.c @@ -1,4 +1,5 @@ /* itab.c -- generated by udis86:scripts/ud_itab.py, do no edit */ +#include "winsup.h" #include "decode.h" #define GROUP(n) (0x8000 | (n)) @@ -5028,7 +5029,7 @@ }; -struct ud_lookup_table_list_entry ud_lookup_table_list[] = { +const struct ud_lookup_table_list_entry ud_lookup_table_list[] = { /* 000 */ { ud_itab__0, UD_TAB__OPC_TABLE, "table0" }, /* 001 */ { ud_itab__1, UD_TAB__OPC_MODE, "/m" }, /* 002 */ { ud_itab__2, UD_TAB__OPC_MODE, "/m" }, @@ -6294,7 +6295,7 @@ #define O_sIv { OP_sI, SZ_V } #define O_sIz { OP_sI, SZ_Z } -struct ud_itab_entry ud_itab[] = { +const struct ud_itab_entry ud_itab[] = { /* 0000 */ { UD_Iinvalid, O_NONE, O_NONE, O_NONE, P_none }, /* 0001 */ { UD_Iadd, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb }, /* 0002 */ { UD_Iadd, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb }, @@ -7749,6 +7750,7 @@ }; +#ifndef __INSIDE_CYGWIN__ const char * ud_mnemonics_str[] = { "invalid", "3dnow", @@ -8399,3 +8401,4 @@ "movbe", "crc32" }; +#endif /* __INSIDE_CYGWIN__ */ diff -ur udis86-1.7.2/libudis86/itab.h udis86/itab.h --- udis86-1.7.2/libudis86/itab.h +++ udis86/itab.h @@ -673,6 +673,8 @@ UD_MAX_MNEMONIC_CODE } UD_ATTR_PACKED; +#ifndef __INSIDE_CYGWIN__ extern const char * ud_mnemonics_str[]; +#endif /* __INSIDE_CYGWIN__ */ #endif /* UD_ITAB_H */ Only in udis86-1.7.2/libudis86/: Makefile.am Only in udis86-1.7.2/libudis86/: Makefile.in Only in udis86-1.7.2/libudis86/: syn.c Only in udis86-1.7.2/libudis86/: syn.h Only in udis86-1.7.2/libudis86/: syn-att.c Only in udis86-1.7.2/libudis86/: syn-intel.c diff -ur udis86-1.7.2/libudis86/types.h udis86/types.h --- udis86-1.7.2/libudis86/types.h +++ udis86/types.h @@ -36,6 +36,14 @@ #endif #endif /* __KERNEL__ */ +#ifdef __INSIDE_CYGWIN__ +# include <inttypes.h> +# ifndef __UD_STANDALONE__ +# define __UD_STANDALONE__ 1 +# endif +#endif /* __INSIDE_CYGWIN__ */ + + #if defined(_MSC_VER) || defined(__BORLANDC__) # include <stdint.h> # include <stdio.h> @@ -221,8 +229,8 @@ uint8_t modrm; uint8_t primary_opcode; void * user_opaque_data; - struct ud_itab_entry * itab_entry; - struct ud_lookup_table_list_entry *le; + const struct ud_itab_entry * itab_entry; + const struct ud_lookup_table_list_entry *le; }; /* ----------------------------------------------------------------------------- @@ -235,8 +243,10 @@ typedef struct ud ud_t; typedef struct ud_operand ud_operand_t; +#ifndef __INSIDE_CYGWIN__ #define UD_SYN_INTEL ud_translate_intel #define UD_SYN_ATT ud_translate_att +#endif /* __INSIDE_CYGWIN__ */ #define UD_EOI (-1) #define UD_INP_CACHE_SZ 32 #define UD_VENDOR_AMD 0 diff -ur udis86-1.7.2/libudis86/udint.h udis86/udint.h --- udis86-1.7.2/libudis86/udint.h +++ udis86/udint.h @@ -26,9 +26,11 @@ #ifndef _UDINT_H_ #define _UDINT_H_ -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif /* HAVE_CONFIG_H */ +#ifndef __INSIDE_CYGWIN__ +# ifdef HAVE_CONFIG_H +# include <config.h> +# endif /* HAVE_CONFIG_H */ +#endif /* __INSIDE_CYGWIN__ */ #if defined(UD_DEBUG) && HAVE_ASSERT_H # include <assert.h> diff -ur udis86-1.7.2/libudis86/udis86.c udis86/udis86.c --- udis86-1.7.2/libudis86/udis86.c +++ udis86/udis86.c @@ -24,8 +24,9 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "udint.h" +#include "winsup.h" #include "extern.h" +#include "udint.h" #include "decode.h" #if !defined(__UD_STANDALONE__) @@ -34,6 +35,10 @@ # endif #endif /* !__UD_STANDALONE__ */ +#ifdef __INSIDE_CYGWIN__ +#define sprintf __small_sprintf +#endif /* __INSIDE_CYGWIN__ */ + static void ud_inp_init(struct ud *u); /* ============================================================================= @@ -324,6 +329,7 @@ } +#ifndef __INSIDE_CYGWIN__ /* ============================================================================= * ud_lookup_mnemonic * Looks up mnemonic code in the mnemonic string table. @@ -339,6 +345,7 @@ return NULL; } } +#endif /* __INSIDE_CYGWIN__ */ /* Jeremy Drake (4): Cygwin: factor out find_fast_cwd_pointer to arch-specific file. Cygwin: vendor libudis86 1.7.2 Cygwin: use udis86 to find fast cwd pointer on x64 Cygwin: add find_fast_cwd_pointer_aarch64. winsup/cygwin/Makefile.am | 14 +- winsup/cygwin/fastcwd_aarch64.cc | 185 + winsup/cygwin/path.cc | 145 +- winsup/cygwin/udis86/decode.c | 1113 +++ winsup/cygwin/udis86/decode.h | 195 + winsup/cygwin/udis86/extern.h | 109 + winsup/cygwin/udis86/itab.c | 8404 +++++++++++++++++ winsup/cygwin/udis86/itab.h | 680 ++ winsup/cygwin/udis86/types.h | 260 + winsup/cygwin/udis86/udint.h | 91 + .../cygwin/udis86/udis86-modifications.diff | 252 + winsup/cygwin/udis86/udis86.c | 464 + winsup/cygwin/x86_64/fastcwd_x86_64.cc | 159 + 13 files changed, 11948 insertions(+), 123 deletions(-) create mode 100644 winsup/cygwin/fastcwd_aarch64.cc create mode 100644 winsup/cygwin/udis86/decode.c create mode 100644 winsup/cygwin/udis86/decode.h create mode 100644 winsup/cygwin/udis86/extern.h create mode 100644 winsup/cygwin/udis86/itab.c create mode 100644 winsup/cygwin/udis86/itab.h create mode 100644 winsup/cygwin/udis86/types.h create mode 100644 winsup/cygwin/udis86/udint.h create mode 100644 winsup/cygwin/udis86/udis86-modifications.diff create mode 100644 winsup/cygwin/udis86/udis86.c create mode 100644 winsup/cygwin/x86_64/fastcwd_x86_64.cc -- 2.48.1.windows.1