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

Reply via email to