poke-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] pickles: Fix recently-introduced `in' related type errors


From: Arsen Arsenović
Subject: [PATCH] pickles: Fix recently-introduced `in' related type errors
Date: Mon, 24 Oct 2022 21:40:10 +0200

---
Hi,

This patchset should fix all the pickles that have errors with new `in'
semantics.
Please also run check on your machines, since I have some other test failures
currently.

 ChangeLog             | 17 +++++++++++++++++
 pickles/bmp.pk        |  2 +-
 pickles/bpf.pk        | 14 +++++++-------
 pickles/coff-i386.pk  | 20 ++++++++++----------
 pickles/dwarf-info.pk |  2 +-
 pickles/elf-64.pk     |  6 +++---
 6 files changed, 39 insertions(+), 22 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 829a2b58..470d93d2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2022-10-24  Arsen Arsenović  <arsen@aarsen.me>
+
+       * pickles/coff-i386.pk: Explicitly set i386 relocation types to
+       uint<16>, to avoid `in' type error.
+
+       * pickles/dwarf-info.pk: Explicitly specify type in version
+       `constraint', to avoid `in' type error.
+
+       * pickles/elf-64.pk: Cast d_tag to int<32>, to avoid `in' type
+       errors.
+
+       * pickles/bpf.pk: Explicitly make instruction classes three-bit
+       uints.
+
+       * pickles/bmp.pk: Use unsigned offsets explicitly, to match header
+       type.
+
 2022-10-23  Arsen Arsenović  <arsen@aarsen.me>
 
         * doc/gen-pvm-insns.sh (SUBSECTIONS): Emit @pvindex calls for
diff --git a/pickles/bmp.pk b/pickles/bmp.pk
index 5d940a8c..3945b8ca 100644
--- a/pickles/bmp.pk
+++ b/pickles/bmp.pk
@@ -24,7 +24,7 @@ var BI_RGB = 0,  /* No compression.  */
 
 /* The size of the info header depends on the type of BMP file.  */
 
-var IHS_BMP_V2 = 12#B, IHS_BMP_V3 = 40#B;
+var IHS_BMP_V2 = 12U#B, IHS_BMP_V3 = 40U#B;
 
 type BMP_Header =
   struct
diff --git a/pickles/bpf.pk b/pickles/bpf.pk
index 4b92d617..d8f6874e 100644
--- a/pickles/bpf.pk
+++ b/pickles/bpf.pk
@@ -23,13 +23,13 @@
 
 type BPF_Insn_Class = uint<3>;
 
-var BPF_INSN_CLASS_LD  = 0b000,
-    BPF_INSN_CLASS_LDX = 0b001,
-    BPF_INSN_CLASS_ST  = 0b010,
-    BPF_INSN_CLASS_STX = 0b011,
-    BPF_INSN_CLASS_ALU = 0b100,
-    BPF_INSN_CLASS_JMP = 0b101,
-    BPF_INSN_CLASS_ALU64 = 0b111;
+var BPF_INSN_CLASS_LD    = 0b000 as uint<3>,
+    BPF_INSN_CLASS_LDX   = 0b001 as uint<3>,
+    BPF_INSN_CLASS_ST    = 0b010 as uint<3>,
+    BPF_INSN_CLASS_STX   = 0b011 as uint<3>,
+    BPF_INSN_CLASS_ALU   = 0b100 as uint<3>,
+    BPF_INSN_CLASS_JMP   = 0b101 as uint<3>,
+    BPF_INSN_CLASS_ALU64 = 0b111 as uint<3>;
 
 fun bpf_class_is_alujmp = (uint<3> class) int:
   {
diff --git a/pickles/coff-i386.pk b/pickles/coff-i386.pk
index db5243ac..75122ac2 100644
--- a/pickles/coff-i386.pk
+++ b/pickles/coff-i386.pk
@@ -42,16 +42,16 @@ coff_magic_numbers
 
 /* i386 COFF relocations.  */
 
-var COFF_I386_R_DIR32 = 6,
-    COFF_I386_R_IMAGEBASE = 7,
-    COFF_I386_R_SECTION = 10,
-    COFF_I386_R_SECREL32 = 11,
-    COFF_I386_R_RELBYTE = 15,
-    COFF_I386_R_RELWORD = 16,
-    COFF_I386_R_RELLONG = 17,
-    COFF_I386_R_PCRBYTE = 18,
-    COFF_I386_R_PCRWORD = 19,
-    COFF_I386_R_PCRLONG = 20;
+var COFF_I386_R_DIR32     = 6UH,
+    COFF_I386_R_IMAGEBASE = 7UH,
+    COFF_I386_R_SECTION   = 10UH,
+    COFF_I386_R_SECREL32  = 11UH,
+    COFF_I386_R_RELBYTE   = 15UH,
+    COFF_I386_R_RELWORD   = 16UH,
+    COFF_I386_R_RELLONG   = 17UH,
+    COFF_I386_R_PCRBYTE   = 18UH,
+    COFF_I386_R_PCRWORD   = 19UH,
+    COFF_I386_R_PCRLONG   = 20UH;
 
 var coff_i386_relocs =
   [ COFF_I386_R_DIR32, COFF_I386_R_IMAGEBASE,
diff --git a/pickles/dwarf-info.pk b/pickles/dwarf-info.pk
index 3b6899a3..4cb0d039 100644
--- a/pickles/dwarf-info.pk
+++ b/pickles/dwarf-info.pk
@@ -374,7 +374,7 @@ type Dwarf_CU_Header =
     Dwarf_Initial_Length unit_length;
 
     /* Version of the DWARF information for the compilation unit.  */
-    uint<16> version : (version in [2, 3, 4, 5]
+    uint<16> version : (version in [2UH, 3UH, 4UH, 5UH]
                         && dwarf_set_version (version));
 
     /* Offset into the .debug_abbrev section that associates the
diff --git a/pickles/elf-64.pk b/pickles/elf-64.pk
index 0f0bfadf..bf534f23 100644
--- a/pickles/elf-64.pk
+++ b/pickles/elf-64.pk
@@ -107,9 +107,9 @@ type Elf64_Dyn =
          data: even entries use d_ptr while odd entries use d_val.  */
 
         Elf64_Addr d_ptr
-          : (d_tag in [DT_PLTGOT, DT_HASH, DT_STRTAB, DT_SYMTAB, DT_RELA,
-                       DT_SYMENT, DT_INIT, DT_FINI, DT_REL, DT_JMPREL,
-                       DT_INIT_ARRAY, DT_FINI_ARRAY]
+          : (d_tag as int<32> in [DT_PLTGOT, DT_HASH, DT_STRTAB, DT_SYMTAB,
+                                  DT_RELA, DT_SYMENT, DT_INIT, DT_FINI, DT_REL,
+                                  DT_JMPREL, DT_INIT_ARRAY, DT_FINI_ARRAY]
              || (d_tag >= DT_ENCODING && d_tag %2 != 0));
 
         Elf64_Xword d_val;
-- 
2.38.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]