Control: tags -1 + pending Hello David,
At Imagination Technologies (http://imgtec.com/) Dejan Latinovic has found a solution to Debian bug #755193. https://bugs.debian.org/755193 My NMU debdiff for capstone_2.1.2-2.1 is below, at the end of this message. With the changes in the NMU debdiff, capstone builds successfully on mips, mipsel and amd64. Regards, Aníbal -- Aníbal Monsalve Salazar <anibal.monsalvesala...@imgtec.com> debdiff capstone_2.1.2-2.dsc capstone_2.1.2-2.1.dsc diff -Nru capstone-2.1.2/debian/changelog capstone-2.1.2/debian/changelog --- capstone-2.1.2/debian/changelog 2014-07-21 23:59:32.000000000 +0100 +++ capstone-2.1.2/debian/changelog 2014-10-06 09:51:50.000000000 +0100 @@ -1,3 +1,14 @@ +capstone (2.1.2-2.1) unstable; urgency=medium + + * Non-maintainer upload. + * Rename union member "mips" to "mips-arch" to fix FTBFS on mips/mipsel. + Drop mips_macro_conflict.patch. + Add capstone-mips.patch. + Patch by Dejan Latinovic <dejan.latino...@imgtec.com>. + Closes: #755193. + + -- Anibal Monsalve Salazar <ani...@debian.org> Mon, 06 Oct 2014 09:51:47 +0100 + capstone (2.1.2-2) unstable; urgency=medium * debian/patches/mips_macro_conflict.patch: Remove a compiler macro diff -Nru capstone-2.1.2/debian/patches/capstone-mips.patch capstone-2.1.2/debian/patches/capstone-mips.patch --- capstone-2.1.2/debian/patches/capstone-mips.patch 1970-01-01 01:00:00.000000000 +0100 +++ capstone-2.1.2/debian/patches/capstone-mips.patch 2014-10-06 09:45:35.000000000 +0100 @@ -0,0 +1,185 @@ +From: Dejan Latinovic <dejan.latino...@imgtec.com> +To: "755...@bugs.debian.org" <755...@bugs.debian.org> +Cc: Plamen Aleksandrov <pla...@aomeda.com>, David Martínez Moreno <en...@debian.org> +Subject: Bug#755193: capstone: FTBFS on mips +Date: Thu, 24 Jul 2014 16:36:32 +0000 + +package capstone FTBFS again on mips/mipsel. + +It seams that adding -Umpis as CFLAGS in Makefile does not fully solve the +issue. + +If we add this flag directory in rules for mips, package builds successfully. + +Patch that contains needed changes is attached: fix-capstone-rules.patch + +But, in my opinion, the better (long term) solution would be to use a different +name for union member, instead of "mips". + +Patch that changes name of the union member is attached. capstone-mips.patch + +For both patches, mips_macro_conflict.patch could be removed. + +Both patches are tested on mips and mipsel. + +Index: capstone-2.1.2/MCInst.h +=================================================================== +--- capstone-2.1.2.orig/MCInst.h ++++ capstone-2.1.2/MCInst.h +@@ -126,7 +126,7 @@ typedef struct cs_insn_flat { + cs_x86 x86; // X86 architecture, including 16-bit, 32-bit & 64-bit mode + cs_arm64 arm64; // ARM64 architecture (aka AArch64) + cs_arm arm; // ARM architecture (including Thumb/Thumb2) +- cs_mips mips; // MIPS architecture ++ cs_mips mips_arch; // MIPS architecture + cs_ppc ppc; // PowerPC architecture + }; + } cs_insn_flat; +Index: capstone-2.1.2/arch/Mips/MipsInstPrinter.c +=================================================================== +--- capstone-2.1.2.orig/arch/Mips/MipsInstPrinter.c ++++ capstone-2.1.2/arch/Mips/MipsInstPrinter.c +@@ -91,12 +91,12 @@ static void set_mem_access(MCInst *MI, b + return; + + if (status) { +- MI->flat_insn.mips.operands[MI->flat_insn.mips.op_count].type = MIPS_OP_MEM; +- MI->flat_insn.mips.operands[MI->flat_insn.mips.op_count].mem.base = MIPS_REG_INVALID; +- MI->flat_insn.mips.operands[MI->flat_insn.mips.op_count].mem.disp = 0; ++ MI->flat_insn.mips_arch.operands[MI->flat_insn.mips_arch.op_count].type = MIPS_OP_MEM; ++ MI->flat_insn.mips_arch.operands[MI->flat_insn.mips_arch.op_count].mem.base = MIPS_REG_INVALID; ++ MI->flat_insn.mips_arch.operands[MI->flat_insn.mips_arch.op_count].mem.disp = 0; + } else { + // done, create the next operand slot +- MI->flat_insn.mips.op_count++; ++ MI->flat_insn.mips_arch.op_count++; + } + } + +@@ -228,11 +228,11 @@ static void printOperand(MCInst *MI, uns + reg = Mips_map_register(reg); + if (MI->csh->detail) { + if (MI->csh->doing_mem) { +- MI->flat_insn.mips.operands[MI->flat_insn.mips.op_count].mem.base = reg; ++ MI->flat_insn.mips_arch.operands[MI->flat_insn.mips_arch.op_count].mem.base = reg; + } else { +- MI->flat_insn.mips.operands[MI->flat_insn.mips.op_count].type = MIPS_OP_REG; +- MI->flat_insn.mips.operands[MI->flat_insn.mips.op_count].reg = reg; +- MI->flat_insn.mips.op_count++; ++ MI->flat_insn.mips_arch.operands[MI->flat_insn.mips_arch.op_count].type = MIPS_OP_REG; ++ MI->flat_insn.mips_arch.operands[MI->flat_insn.mips_arch.op_count].reg = reg; ++ MI->flat_insn.mips_arch.op_count++; + } + } + } +@@ -254,7 +254,7 @@ static void printOperand(MCInst *MI, uns + } + } + if (MI->csh->detail) +- MI->flat_insn.mips.operands[MI->flat_insn.mips.op_count].mem.disp = imm; ++ MI->flat_insn.mips_arch.operands[MI->flat_insn.mips_arch.op_count].mem.disp = imm; + } else { + if (imm >= 0) { + if (imm > HEX_THRESHOLD) +@@ -269,9 +269,9 @@ static void printOperand(MCInst *MI, uns + } + + if (MI->csh->detail) { +- MI->flat_insn.mips.operands[MI->flat_insn.mips.op_count].type = MIPS_OP_IMM; +- MI->flat_insn.mips.operands[MI->flat_insn.mips.op_count].imm = imm; +- MI->flat_insn.mips.op_count++; ++ MI->flat_insn.mips_arch.operands[MI->flat_insn.mips_arch.op_count].type = MIPS_OP_IMM; ++ MI->flat_insn.mips_arch.operands[MI->flat_insn.mips_arch.op_count].imm = imm; ++ MI->flat_insn.mips_arch.op_count++; + } + } + } +@@ -294,9 +294,9 @@ static void printUnsignedImm(MCInst *MI, + SStream_concat(O, "-%u", (short int)-imm); + } + if (MI->csh->detail) { +- MI->flat_insn.mips.operands[MI->flat_insn.mips.op_count].type = MIPS_OP_IMM; +- MI->flat_insn.mips.operands[MI->flat_insn.mips.op_count].imm = (unsigned short int)imm; +- MI->flat_insn.mips.op_count++; ++ MI->flat_insn.mips_arch.operands[MI->flat_insn.mips_arch.op_count].type = MIPS_OP_IMM; ++ MI->flat_insn.mips_arch.operands[MI->flat_insn.mips_arch.op_count].imm = (unsigned short int)imm; ++ MI->flat_insn.mips_arch.op_count++; + } + } else + printOperand(MI, opNum, O); +@@ -312,9 +312,9 @@ static void printUnsignedImm8(MCInst *MI + else + SStream_concat(O, "%u", imm); + if (MI->csh->detail) { +- MI->flat_insn.mips.operands[MI->flat_insn.mips.op_count].type = MIPS_OP_IMM; +- MI->flat_insn.mips.operands[MI->flat_insn.mips.op_count].imm = imm; +- MI->flat_insn.mips.op_count++; ++ MI->flat_insn.mips_arch.operands[MI->flat_insn.mips_arch.op_count].type = MIPS_OP_IMM; ++ MI->flat_insn.mips_arch.operands[MI->flat_insn.mips_arch.op_count].imm = imm; ++ MI->flat_insn.mips_arch.op_count++; + } + } else + printOperand(MI, opNum, O); +Index: capstone-2.1.2/cs.c +=================================================================== +--- capstone-2.1.2.orig/cs.c ++++ capstone-2.1.2/cs.c +@@ -567,8 +567,8 @@ int cs_op_count(csh ud, cs_insn *insn, u + count++; + break; + case CS_ARCH_MIPS: +- for (i = 0; i < insn->detail->mips.op_count; i++) +- if (insn->detail->mips.operands[i].type == (mips_op_type)op_type) ++ for (i = 0; i < insn->detail->mips_arch.op_count; i++) ++ if (insn->detail->mips_arch.operands[i].type == (mips_op_type)op_type) + count++; + break; + case CS_ARCH_PPC: +@@ -626,8 +626,8 @@ int cs_op_index(csh ud, cs_insn *insn, u + } + break; + case CS_ARCH_MIPS: +- for (i = 0; i < insn->detail->mips.op_count; i++) { +- if (insn->detail->mips.operands[i].type == (mips_op_type)op_type) ++ for (i = 0; i < insn->detail->mips_arch.op_count; i++) { ++ if (insn->detail->mips_arch.operands[i].type == (mips_op_type)op_type) + count++; + if (count == post) + return i; +Index: capstone-2.1.2/include/capstone.h +=================================================================== +--- capstone-2.1.2.orig/include/capstone.h ++++ capstone-2.1.2/include/capstone.h +@@ -115,7 +115,7 @@ typedef struct cs_detail { + cs_x86 x86; // X86 architecture, including 16-bit, 32-bit & 64-bit mode + cs_arm64 arm64; // ARM64 architecture (aka AArch64) + cs_arm arm; // ARM architecture (including Thumb/Thumb2) +- cs_mips mips; // MIPS architecture ++ cs_mips mips_arch; // MIPS architecture + cs_ppc ppc; // PowerPC architecture + }; + } cs_detail; +Index: capstone-2.1.2/tests/test_mips.c +=================================================================== +--- capstone-2.1.2.orig/tests/test_mips.c ++++ capstone-2.1.2/tests/test_mips.c +@@ -31,14 +31,14 @@ static void print_string_hex(char *comme + + static void print_insn_detail(cs_insn *ins) + { +- cs_mips *mips = &(ins->detail->mips); ++ cs_mips *mips_arch = &(ins->detail->mips_arch); + +- if (mips->op_count) +- printf("\top_count: %u\n", mips->op_count); ++ if (mips_arch->op_count) ++ printf("\top_count: %u\n", mips_arch->op_count); + + int i; +- for (i = 0; i < mips->op_count; i++) { +- cs_mips_op *op = &(mips->operands[i]); ++ for (i = 0; i < mips_arch->op_count; i++) { ++ cs_mips_op *op = &(mips_arch->operands[i]); + switch((int)op->type) { + default: + break; diff -Nru capstone-2.1.2/debian/patches/mips_macro_conflict.patch capstone-2.1.2/debian/patches/mips_macro_conflict.patch --- capstone-2.1.2/debian/patches/mips_macro_conflict.patch 2014-07-21 23:58:01.000000000 +0100 +++ capstone-2.1.2/debian/patches/mips_macro_conflict.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,20 +0,0 @@ -Description: Remove conflicting compiler macro in MIPS. - MIPS doesn't compile because there a compiler macro definition called mips - and a variable with the same name. -Author: Plamen Aleksandrov <pla...@aomeda.com> -Bug-Debian: http://bugs.debian.org/755193 -Forwarded: no -Reviewed-By: David MartÃnez Moreno <en...@debian.org> -Last-Update: 2014-07-18 - ---- capstone-2.1.2.orig/Makefile -+++ capstone-2.1.2/Makefile -@@ -104,7 +104,7 @@ DEP_MIPS += arch/Mips/MipsGenSubtargetIn - - LIBOBJ_MIPS = - ifneq (,$(findstring mips,$(CAPSTONE_ARCHS))) -- CFLAGS += -DCAPSTONE_HAS_MIPS -+ CFLAGS += -DCAPSTONE_HAS_MIPS -Umips - LIBOBJ_MIPS += arch/Mips/MipsDisassembler.o - LIBOBJ_MIPS += arch/Mips/MipsInstPrinter.o - LIBOBJ_MIPS += arch/Mips/MipsMapping.o diff -Nru capstone-2.1.2/debian/patches/series capstone-2.1.2/debian/patches/series --- capstone-2.1.2/debian/patches/series 2014-07-21 23:54:49.000000000 +0100 +++ capstone-2.1.2/debian/patches/series 2014-10-06 09:40:15.000000000 +0100 @@ -2,4 +2,4 @@ no_usr_lib64 use_cppflags fix_python_bindings -mips_macro_conflict.patch +capstone-mips.patch -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org