poke-devel
[Top][All Lists]
Advanced

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

[COMMITTED] pickles: remove the ELF and DWARF pickles


From: Jose E. Marchesi
Subject: [COMMITTED] pickles: remove the ELF and DWARF pickles
Date: Sat, 28 Jan 2023 12:48:11 +0100
User-agent: Gnus/5.13 (Gnus v5.13)

The ELF and DWARF pickles are now developed separately at
https://jemarch.net/poke-elf.

This is because they can benefit from releasing improved versions
which are independent from the poke releases.

2023-01-28  Jose E. Marchesi  <jemarch@gnu.org>

        * pickles/sframe.pk: Do not load elf.pk.  It is not needed.
        * pickles/elf.pk: Remove.
        * pickles/elf-32.pk: Likewise.
        * pickles/elf-64.pk: Likewise.
        * pickles/elf-common.pk: Likewise.
        * pickles/dwarf.pk: Likewise.
        * pickles/dwarf-common.pk: Likewise.
        * pickles/dwarf-expr.pk: Likewise.
        * pickles/dwarf-frame.pk: Likewise.
        * pickles/dwarf-info.pk: Likewise.
        * pickles/dwarf-pubnames.pk: Likewise.
        * pickles/dwarf-types.pk: Likewise.
        * pickles/README.elf: New file.
        * pickles/README.dwarf: Likewise.
        * pickles/Makefile.am (dist_pickles_DATA): Remove elf pickles.
        (EXTRA_DIST): Distribute README.elf and README.dwarf.
        * testsuite/poke.pickles/elf-test.pk: Remove.
        * testsuite/poke.pickles/dwarf-test.pk: Likewise.
        * testsuite/poke.pickles/ctf-test.pk: Likewise.
        * testsuite/Makefile.am (EXTRA_DIST): Remove elf-test.pk,
        dwarf-test.pk and ctf-test.pk.
        * doc/poke.texi (Binary Files): Tell how to find the elf pickles.
        (ELF): Likewise.
---
 ChangeLog                            |  28 +-
 doc/poke.texi                        |   7 +-
 pickles/Makefile.am                  |   9 +-
 pickles/README.dwarf                 |   2 +
 pickles/README.elf                   |   2 +
 pickles/dwarf-common.pk              | 103 ------
 pickles/dwarf-expr.pk                | 253 --------------
 pickles/dwarf-frame.pk               | 219 ------------
 pickles/dwarf-info.pk                | 387 ----------------------
 pickles/dwarf-pubnames.pk            |  63 ----
 pickles/dwarf-types.pk               |  51 ---
 pickles/dwarf.pk                     |  24 --
 pickles/elf-32.pk                    | 299 -----------------
 pickles/elf-64.pk                    | 344 -------------------
 pickles/elf-common.pk                | 476 ---------------------------
 pickles/elf.pk                       |  34 --
 pickles/sframe.pk                    |   2 -
 testsuite/Makefile.am                |   3 -
 testsuite/poke.pickles/ctf-test.pk   |  28 --
 testsuite/poke.pickles/dwarf-test.pk |  28 --
 testsuite/poke.pickles/elf-test.pk   |  28 --
 21 files changed, 42 insertions(+), 2348 deletions(-)
 create mode 100644 pickles/README.dwarf
 create mode 100644 pickles/README.elf
 delete mode 100644 pickles/dwarf-common.pk
 delete mode 100644 pickles/dwarf-expr.pk
 delete mode 100644 pickles/dwarf-frame.pk
 delete mode 100644 pickles/dwarf-info.pk
 delete mode 100644 pickles/dwarf-pubnames.pk
 delete mode 100644 pickles/dwarf-types.pk
 delete mode 100644 pickles/dwarf.pk
 delete mode 100644 pickles/elf-32.pk
 delete mode 100644 pickles/elf-64.pk
 delete mode 100644 pickles/elf-common.pk
 delete mode 100644 pickles/elf.pk
 delete mode 100644 testsuite/poke.pickles/ctf-test.pk
 delete mode 100644 testsuite/poke.pickles/dwarf-test.pk
 delete mode 100644 testsuite/poke.pickles/elf-test.pk

diff --git a/ChangeLog b/ChangeLog
index d5f47986..442b27af 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,30 @@
-2023-01-28  Jose E. Marchesi  <jemarch@termi>
+2023-01-28  Jose E. Marchesi  <jemarch@gnu.org>
+
+       * pickles/sframe.pk: Do not load elf.pk.  It is not needed.
+       * pickles/elf.pk: Remove.
+       * pickles/elf-32.pk: Likewise.
+       * pickles/elf-64.pk: Likewise.
+       * pickles/elf-common.pk: Likewise.
+       * pickles/dwarf.pk: Likewise.
+       * pickles/dwarf-common.pk: Likewise.
+       * pickles/dwarf-expr.pk: Likewise.
+       * pickles/dwarf-frame.pk: Likewise.
+       * pickles/dwarf-info.pk: Likewise.
+       * pickles/dwarf-pubnames.pk: Likewise.
+       * pickles/dwarf-types.pk: Likewise.
+       * pickles/README.elf: New file.
+       * pickles/README.dwarf: Likewise.
+       * pickles/Makefile.am (dist_pickles_DATA): Remove elf pickles.
+       (EXTRA_DIST): Distribute README.elf and README.dwarf.
+       * testsuite/poke.pickles/elf-test.pk: Remove.
+       * testsuite/poke.pickles/dwarf-test.pk: Likewise.
+       * testsuite/poke.pickles/ctf-test.pk: Likewise.
+       * testsuite/Makefile.am (EXTRA_DIST): Remove elf-test.pk,
+       dwarf-test.pk and ctf-test.pk.
+       * doc/poke.texi (Binary Files): Tell how to find the elf pickles.
+       (ELF): Likewise.
+
+2023-01-28  Jose E. Marchesi  <jemarch@gnu.org>
 
        * poke/poke.c (initialize): Fix addition of POKE_LOAD_PATH to
        load_path.
diff --git a/doc/poke.texi b/doc/poke.texi
index 943d12bb..e6c39ae5 100644
--- a/doc/poke.texi
+++ b/doc/poke.texi
@@ -1061,6 +1061,9 @@ and symbols.  You don't need to have a perfect knowledge 
of the ELF
 format in order to follow the examples, but being familiarized with
 the concept of object file formats should surely help.
 
+You will need to install the ELF pickle. You can get it at
+@url{https://jemarch.net/poke-elf}.
+
 Obtaining a simple ELF object file is easy, if you have a C compiler
 installed:
 
@@ -8289,7 +8292,9 @@ activities.
 @node ELF
 @section ELF
 
-XXX
+poke-elf (@url{https://jemarch.net/poke-elf}) is a full-fledged pickle
+for editing ELF object files, executables, shared libraries and core
+dumps.  It supports many architectures and extensions.
 
 @node Dwarf
 @section Dwarf
diff --git a/pickles/Makefile.am b/pickles/Makefile.am
index cc4d9877..3e7490ec 100644
--- a/pickles/Makefile.am
+++ b/pickles/Makefile.am
@@ -16,14 +16,15 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 picklesdir = $(pkgdatadir)/pickles
-dist_pickles_DATA = elf-common.pk elf-64.pk elf-32.pk elf.pk ctf.pk 
ctf-dump.pk leb128.pk \
+dist_pickles_DATA = ctf.pk ctf-dump.pk leb128.pk \
                     bpf.pk btf.pk btf-ext.pk btf-dump.pk bmp.pk \
                     color.pk rgb24.pk id3v1.pk ios.pk diff.pk pk-table.pk \
                    sframe.pk sframe-dump.pk \
-                    dwarf.pk dwarf-common.pk dwarf-frame.pk dwarf-pubnames.pk \
-                    dwarf-types.pk time.pk argp.pk pktest.pk mbr.pk ustar.pk \
-                    mcr.pk dwarf-expr.pk dwarf-info.pk id3v2.pk jffs2.pk 
asn1-ber.pk \
+                    time.pk argp.pk pktest.pk mbr.pk ustar.pk \
+                    mcr.pk id3v2.pk jffs2.pk asn1-ber.pk \
                     openpgp.pk search.pk riscv.pk coff.pk coff-i386.pk 
coff-aarch64.pk \
                     pe.pk pe-amd64.pk pe-arm.pk pe-arm64.pk pe-i386.pk 
pe-ia64.pk \
                     pe-m32r.pk pe-mips.pk pe-ppc.pk pe-sh3.pk pe-riscv.pk 
pe-debug.pk \
                    uuid.pk redoxfs.pk pcap.pk ieee754.pk pdap.pk
+
+EXTRA_DIST = README.elf
diff --git a/pickles/README.dwarf b/pickles/README.dwarf
new file mode 100644
index 00000000..bdc9a57d
--- /dev/null
+++ b/pickles/README.dwarf
@@ -0,0 +1,2 @@
+The DWARF pickles that used to be here are now distributed
+separately. See https://jemarch.net/poke-elf.
diff --git a/pickles/README.elf b/pickles/README.elf
new file mode 100644
index 00000000..213623ae
--- /dev/null
+++ b/pickles/README.elf
@@ -0,0 +1,2 @@
+The elf pickles that used to be here are now distributed
+separately. See https://jemarch.net/poke-elf.
diff --git a/pickles/dwarf-common.pk b/pickles/dwarf-common.pk
deleted file mode 100644
index 4b57492e..00000000
--- a/pickles/dwarf-common.pk
+++ /dev/null
@@ -1,103 +0,0 @@
-/* dwarf-common.pk - DWARF implementation for GNU poke.
-                     Common bits.  */
-
-/* Copyright (C) 2020, 2021, 2022, 2023 Jose E. Marchesi.  */
-
-/* This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-var dwarf_bits = 32;
-var dwarf_version = 4;
-
-fun dwarf_set_bits = (int bits) int:
-  {
-    dwarf_bits = bits;
-    return 1;
-  }
-
-fun dwarf_set_version = (int ver) int:
-  {
-    dwarf_version = ver;
-    return 1;
-  }
-
-type Dwarf_Initial_Length =
-  union
-  {
-    struct
-    {
-      uint<32> marker : (marker == 0xffff_ffff
-                         && dwarf_set_bits (64));
-      offset<uint<64>,B> length;
-    } l64;
-
-    offset<uint<32>,B> l32 : (l32 < 0xffff_fff0#B
-                              && dwarf_set_bits (32));
-
-    method value = offset<uint<64>,B>:
-      {
-        try return l32;
-        catch if E_elem { return l64.length; }
-      }
-
-    method _print = void:
-      {
-        print ("#<");
-        try printf ("%v", l64.length);
-        catch if E_elem { printf ("%v", l32); }
-        print (">");
-      }
-  };
-
-type Dwarf_Address =
-  union
-  {
-    uint<32> a32 : dwarf_bits == 32;
-    uint<64> a64;
-
-    method value = uint<64>:
-      {
-        try return a32;
-        catch if E_elem { return a64; }
-      }
-
-    method _print = void:
-      {
-        print ("#<");
-        try printf ("%v", a32);
-        catch if E_elem { printf ("%v", a64); }
-        print (">");
-      }
-  };
-
-type Dwarf_Section_Offset =
-  union
-  {
-    offset<uint<32>,B> o32 : dwarf_bits == 32;
-    offset<uint<64>,B> o64;
-
-    method value = offset<uint<64>,B>:
-      {
-        try return o32;
-        catch if E_elem { return o64; }
-      }
-
-    method _print = void:
-      {
-        print ("#<");
-        try printf ("%v", o32);
-        catch if E_elem { printf ("%v", o64); }
-        print (">");
-      }
-  };
diff --git a/pickles/dwarf-expr.pk b/pickles/dwarf-expr.pk
deleted file mode 100644
index 11fa8321..00000000
--- a/pickles/dwarf-expr.pk
+++ /dev/null
@@ -1,253 +0,0 @@
-/* dwarf-expr.pk - DWARF implementation for GNU poke.
-                   Expressions.  */
-
-/* Copyright (C) 2020, 2021, 2022, 2023 Jose E. Marchesi.  */
-
-/* This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-load leb128;
-
-/* Opcodes.  */
-
-var DW_OP_FIRST                = 0x03 as uint<8>,
-    DW_OP_addr                 = 0x03 as uint<8>,
-    DW_OP_deref                = 0x06 as uint<8>,
-    DW_OP_const1u              = 0x08 as uint<8>,
-    DW_OP_const1s              = 0x09 as uint<8>,
-    DW_OP_const2u              = 0x0a as uint<8>,
-    DW_OP_const2s              = 0x0b as uint<8>,
-    DW_OP_const4u              = 0x0c as uint<8>,
-    DW_OP_const4s              = 0x0d as uint<8>,
-    DW_OP_const8u              = 0x0e as uint<8>,
-    DW_OP_const8s              = 0x0f as uint<8>,
-    DW_OP_constu               = 0x10 as uint<8>,
-    DW_OP_consts               = 0x11 as uint<8>,
-    DW_OP_dup                  = 0x12 as uint<8>,
-    DW_OP_drop                 = 0x13 as uint<8>,
-    DW_OP_over                 = 0x14 as uint<8>,
-    DW_OP_pick                 = 0x15 as uint<8>,
-    DW_OP_swap                 = 0x16 as uint<8>,
-    DW_OP_rot                  = 0x17 as uint<8>,
-    DW_OP_xderef               = 0x18 as uint<8>,
-    DW_OP_abs                  = 0x19 as uint<8>,
-    DW_OP_and                  = 0x1a as uint<8>,
-    DW_OP_div                  = 0x1b as uint<8>,
-    DW_OP_minus                = 0x1c as uint<8>,
-    DW_OP_mod                  = 0x1d as uint<8>,
-    DW_OP_mul                  = 0x1e as uint<8>,
-    DW_OP_neg                  = 0x1f as uint<8>,
-    DW_OP_not                  = 0x20 as uint<8>,
-    DW_OP_or                   = 0x21 as uint<8>,
-    DW_OP_plus                 = 0x22 as uint<8>,
-    DW_OP_plus_uconst          = 0x23 as uint<8>,
-    DW_OP_shl                  = 0x24 as uint<8>,
-    DW_OP_shr                  = 0x25 as uint<8>,
-    DW_OP_shra                 = 0x26 as uint<8>,
-    DW_OP_xor                  = 0x27 as uint<8>,
-    DW_OP_bra                  = 0x28 as uint<8>,
-    DW_OP_eq                   = 0x29 as uint<8>,
-    DW_OP_ge                   = 0x2a as uint<8>,
-    DW_OP_gt                   = 0x2b as uint<8>,
-    DW_OP_le                   = 0x2c as uint<8>,
-    DW_OP_lt                   = 0x2d as uint<8>,
-    DW_OP_ne                   = 0x2e as uint<8>,
-    DW_OP_skip                 = 0x2f as uint<8>,
-    DW_OP_lit0                 = 0x30 as uint<8>,
-    DW_OP_lit1                 = 0x31 as uint<8>,
-    DW_OP_lit2                 = 0x32 as uint<8>,
-    DW_OP_lit3                 = 0x33 as uint<8>,
-    DW_OP_lit4                 = 0x34 as uint<8>,
-    DW_OP_lit5                 = 0x35 as uint<8>,
-    DW_OP_lit6                 = 0x36 as uint<8>,
-    DW_OP_lit7                 = 0x37 as uint<8>,
-    DW_OP_lit8                 = 0x38 as uint<8>,
-    DW_OP_lit9                 = 0x39 as uint<8>,
-    DW_OP_lit10                = 0x3a as uint<8>,
-    DW_OP_lit11                = 0x3b as uint<8>,
-    DW_OP_lit12                = 0x3c as uint<8>,
-    DW_OP_lit13                = 0x3d as uint<8>,
-    DW_OP_lit14                = 0x3e as uint<8>,
-    DW_OP_lit15                = 0x3f as uint<8>,
-    DW_OP_lit16                = 0x40 as uint<8>,
-    DW_OP_lit17                = 0x41 as uint<8>,
-    DW_OP_lit18                = 0x42 as uint<8>,
-    DW_OP_lit19                = 0x43 as uint<8>,
-    DW_OP_lit20                = 0x44 as uint<8>,
-    DW_OP_lit21                = 0x45 as uint<8>,
-    DW_OP_lit22                = 0x46 as uint<8>,
-    DW_OP_lit23                = 0x47 as uint<8>,
-    DW_OP_lit24                = 0x48 as uint<8>,
-    DW_OP_lit25                = 0x49 as uint<8>,
-    DW_OP_lit26                = 0x4a as uint<8>,
-    DW_OP_lit27                = 0x4b as uint<8>,
-    DW_OP_lit28                = 0x4c as uint<8>,
-    DW_OP_lit29                = 0x4d as uint<8>,
-    DW_OP_lit30                = 0x4e as uint<8>,
-    DW_OP_lit31                = 0x4f as uint<8>,
-    DW_OP_reg0                 = 0x50 as uint<8>,
-    DW_OP_reg1                 = 0x51 as uint<8>,
-    DW_OP_reg2                 = 0x52 as uint<8>,
-    DW_OP_reg3                 = 0x53 as uint<8>,
-    DW_OP_reg4                 = 0x54 as uint<8>,
-    DW_OP_reg5                 = 0x55 as uint<8>,
-    DW_OP_reg6                 = 0x56 as uint<8>,
-    DW_OP_reg7                 = 0x57 as uint<8>,
-    DW_OP_reg8                 = 0x58 as uint<8>,
-    DW_OP_reg9                 = 0x59 as uint<8>,
-    DW_OP_reg10                = 0x5a as uint<8>,
-    DW_OP_reg11                = 0x5b as uint<8>,
-    DW_OP_reg12                = 0x5c as uint<8>,
-    DW_OP_reg13                = 0x5d as uint<8>,
-    DW_OP_reg14                = 0x5e as uint<8>,
-    DW_OP_reg15                = 0x5f as uint<8>,
-    DW_OP_reg16                = 0x60 as uint<8>,
-    DW_OP_reg17                = 0x61 as uint<8>,
-    DW_OP_reg18                = 0x62 as uint<8>,
-    DW_OP_reg19                = 0x63 as uint<8>,
-    DW_OP_reg20                = 0x64 as uint<8>,
-    DW_OP_reg21                = 0x65 as uint<8>,
-    DW_OP_reg22                = 0x66 as uint<8>,
-    DW_OP_reg23                = 0x67 as uint<8>,
-    DW_OP_reg24                = 0x68 as uint<8>,
-    DW_OP_reg25                = 0x69 as uint<8>,
-    DW_OP_reg26                = 0x6a as uint<8>,
-    DW_OP_reg27                = 0x6b as uint<8>,
-    DW_OP_reg28                = 0x6c as uint<8>,
-    DW_OP_reg29                = 0x6d as uint<8>,
-    DW_OP_reg30                = 0x6e as uint<8>,
-    DW_OP_reg31                = 0x6f as uint<8>,
-    DW_OP_breg0                = 0x70 as uint<8>,
-    DW_OP_breg1                = 0x71 as uint<8>,
-    DW_OP_breg2                = 0x72 as uint<8>,
-    DW_OP_breg3                = 0x73 as uint<8>,
-    DW_OP_breg4                = 0x74 as uint<8>,
-    DW_OP_breg5                = 0x75 as uint<8>,
-    DW_OP_breg6                = 0x76 as uint<8>,
-    DW_OP_breg7                = 0x77 as uint<8>,
-    DW_OP_breg8                = 0x78 as uint<8>,
-    DW_OP_breg9                = 0x79 as uint<8>,
-    DW_OP_breg10               = 0x7a as uint<8>,
-    DW_OP_breg11               = 0x7b as uint<8>,
-    DW_OP_breg12               = 0x7c as uint<8>,
-    DW_OP_breg13               = 0x7d as uint<8>,
-    DW_OP_breg14               = 0x7e as uint<8>,
-    DW_OP_breg15               = 0x7f as uint<8>,
-    DW_OP_breg16               = 0x80 as uint<8>,
-    DW_OP_breg17               = 0x81 as uint<8>,
-    DW_OP_breg18               = 0x82 as uint<8>,
-    DW_OP_breg19               = 0x83 as uint<8>,
-    DW_OP_breg20               = 0x84 as uint<8>,
-    DW_OP_breg21               = 0x85 as uint<8>,
-    DW_OP_breg22               = 0x86 as uint<8>,
-    DW_OP_breg23               = 0x87 as uint<8>,
-    DW_OP_breg24               = 0x88 as uint<8>,
-    DW_OP_breg25               = 0x89 as uint<8>,
-    DW_OP_breg26               = 0x8a as uint<8>,
-    DW_OP_breg27               = 0x8b as uint<8>,
-    DW_OP_breg28               = 0x8c as uint<8>,
-    DW_OP_breg29               = 0x8d as uint<8>,
-    DW_OP_breg30               = 0x8e as uint<8>,
-    DW_OP_breg31               = 0x8f as uint<8>,
-    DW_OP_regx                 = 0x90 as uint<8>,
-    DW_OP_fbreg                = 0x91 as uint<8>,
-    DW_OP_bregx                = 0x92 as uint<8>,
-    DW_OP_piece                = 0x93 as uint<8>,
-    DW_OP_deref_size           = 0x94 as uint<8>,
-    DW_OP_xderef_size          = 0x95 as uint<8>,
-    DW_OP_nop                  = 0x96 as uint<8>,
-    DW_OP_push_object_address  = 0x97 as uint<8>,
-    DW_OP_call2                = 0x98 as uint<8>,
-    DW_OP_call4                = 0x99 as uint<8>,
-    DW_OP_call_ref             = 0x9a as uint<8>,
-    DW_OP_form_tls_address     = 0x9b as uint<8>,
-    DW_OP_call_frame_cfa       = 0x9c as uint<8>,
-    DW_OP_bit_piece            = 0x9d as uint<8>,
-    DW_OP_implicit_value       = 0x9e as uint<8>,
-    DW_OP_stack_value          = 0x9f as uint<8>,
-    DW_OP_implicit_pointer     = 0xa0 as uint<8>,
-    DW_OP_addrx                = 0xa1 as uint<8>,
-    DW_OP_constx               = 0xa2 as uint<8>,
-    DW_OP_entry_value          = 0xa3 as uint<8>,
-    DW_OP_const_type           = 0xa4 as uint<8>,
-    DW_OP_regval_type          = 0xa5 as uint<8>,
-    DW_OP_deref_type           = 0xa6 as uint<8>,
-    DW_OP_xderef_type          = 0xa7 as uint<8>,
-    DW_OP_convert              = 0xa8 as uint<8>,
-    DW_OP_reinterpret          = 0xa9 as uint<8>,
-    /* GNU extensions.  */
-    DW_OP_GNU_push_tls_address = 0xe0 as uint<8>,
-    DW_OP_GNU_uninit           = 0xf0 as uint<8>,
-    DW_OP_GNU_encoded_addr     = 0xf1 as uint<8>,
-    DW_OP_GNU_implicit_pointer = 0xf2 as uint<8>,
-    DW_OP_GNU_entry_value      = 0xf3 as uint<8>,
-    DW_OP_GNU_const_type       = 0xf4 as uint<8>,
-    DW_OP_GNU_regval_type      = 0xf5 as uint<8>,
-    DW_OP_GNU_deref_type       = 0xf6 as uint<8>,
-    DW_OP_GNU_convert          = 0xf7 as uint<8>,
-    DW_OP_GNU_reinterpret      = 0xf9 as uint<8>,
-    DW_OP_GNU_parameter_ref    = 0xfa as uint<8>,
-    /* GNU Debug Fission extensions.  */
-    DW_OP_GNU_addr_index       = 0xfb as uint<8>,
-    DW_OP_GNU_const_index      = 0xfc as uint<8>,
-    DW_OP_GNU_variable_value   = 0xfd as uint<8>,
-    DW_OP_lo_user              = 0xe0 as uint<8>,
-    DW_OP_hi_user              = 0xff as uint<8>,
-    DW_OP_LAST                 = DW_OP_hi_user;
-
-/* Each DWARF operation contains a 1-byte opcode that identifies the
-   operation; followed by a variable number of arguments.  */
-
-type Dwarf_Op =
-  struct
-  {
-    uint<8> code : code >= DW_OP_FIRST && code <= DW_OP_LAST;
-    union
-    {
-      uint<8>  u8 : code in [DW_OP_const1u, DW_OP_pick,
-                             DW_OP_deref_size, DW_OP_xderef_size];
-      int<8>   i8 : code == DW_OP_const1s;
-
-      uint<16> u16 : code in [DW_OP_const2u, DW_OP_call2];
-      int<16>  i16 : code in [DW_OP_const2s, DW_OP_skip, DW_OP_bra];
-
-      uint<32> u32 : code in [DW_OP_const4u, DW_OP_call4];
-      int<32>  i32 : code == DW_OP_const4s;
-
-      uint<64> u64 : code == DW_OP_const8u;
-      int<64>  i64 : code == DW_OP_const8s;
-
-      ULEB128 u128 : (code in [DW_OP_constu, DW_OP_plus_uconst,
-                               DW_OP_fbreg, DW_OP_regx, DW_OP_piece]
-                      || (code >= DW_OP_breg0 && code <= DW_OP_breg31));
-
-      struct
-      {
-        ULEB128 reg;
-        LEB128 offset;
-      } reg_offset : code in [DW_OP_bregx, DW_OP_bit_piece];
-
-      struct
-      {
-        ULEB128 length;
-        byte[length.value] block;
-      } size : code == DW_OP_implicit_value;
-
-      Dwarf_Address addr : code == DW_OP_addr;
-      Dwarf_Section_Offset offset : code == DW_OP_call_ref;
-
-      /* Other operations have no arguments.  */
-      struct {} nothing;
-    } arg;
-  };
diff --git a/pickles/dwarf-frame.pk b/pickles/dwarf-frame.pk
deleted file mode 100644
index 12c313a8..00000000
--- a/pickles/dwarf-frame.pk
+++ /dev/null
@@ -1,219 +0,0 @@
-/* dwarf-frame.pk - DWARF implementation for GNU poke.
-                    Call Frame Information.  */
-
-/* Copyright (C) 2020, 2021, 2022, 2023 Jose E. Marchesi.  */
-
-/* This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-load leb128;
-load "dwarf-common.pk";
-load "dwarf-expr.pk"; /* For Dwarf_Op  */
-
-/* Call Frame Instructions.  */
-
-var DW_CFA_advance_loc                  = 0x40 as uint<6>,
-    DW_CFA_offset                       = 0x80 as uint<6>,
-    DW_CFA_restore                      = 0xc0 as uint<6>,
-    DW_CFA_extended                     = 0x00 as uint<6>,
-    DW_CFA_nop                          = 0x00 as uint<6>,
-    DW_CFA_set_loc                      = 0x01 as uint<6>,
-    DW_CFA_advance_loc1                 = 0x02 as uint<6>,
-    DW_CFA_advance_loc2                 = 0x03 as uint<6>,
-    DW_CFA_advance_loc4                 = 0x04 as uint<6>,
-    DW_CFA_offset_extended              = 0x05 as uint<6>,
-    DW_CFA_restore_extended             = 0x06 as uint<6>,
-    DW_CFA_undefined                    = 0x07 as uint<6>,
-    DW_CFA_same_value                   = 0x08 as uint<6>,
-    DW_CFA_register                     = 0x09 as uint<6>,
-    DW_CFA_remember_state               = 0x0a as uint<6>,
-    DW_CFA_restore_state                = 0x0b as uint<6>,
-    DW_CFA_def_cfa                      = 0x0c as uint<6>,
-    DW_CFA_def_cfa_register             = 0x0d as uint<6>,
-    DW_CFA_def_cfa_offset               = 0x0e as uint<6>,
-    DW_CFA_def_cfa_expression           = 0x0f as uint<6>,
-    DW_CFA_expression                   = 0x10 as uint<6>,
-    DW_CFA_offset_extended_sf           = 0x11 as uint<6>,
-    DW_CFA_def_cfa_sf                   = 0x12 as uint<6>,
-    DW_CFA_def_cfa_offset_sf            = 0x13 as uint<6>,
-    DW_CFA_val_offset                   = 0x14 as uint<6>,
-    DW_CFA_val_offset_sf                = 0x15 as uint<6>,
-    DW_CFA_val_expression               = 0x16 as uint<6>,
-    DW_CFA_low_user                     = 0x1c as uint<6>,
-    DW_CFA_MIPS_advance_loc8            = 0x1d as uint<6>,
-    DW_CFA_GNU_window_save              = 0x2d as uint<6>,
-    DW_CFA_GNU_args_size                = 0x2e as uint<6>,
-    DW_CFA_GNU_negative_offset_extended = 0x2f as uint<6>,
-    DW_CFA_high_user                    = 0x3f as uint<6>;
-
-type Dwarf_CFI =
-  struct
-  {
-    struct uint<8>
-    {
-      uint<2> primary;
-      uint<6> extop;
-    } code;
-
-    var ecode = code.extop;
-
-    /* Off-opcode arguments follow.  */
-    union
-    {
-      ULEB128 u128      : ecode == DW_CFA_offset;
-      Dwarf_Address addr : ecode == DW_CFA_set_loc;
-      /* XXX: offsets for advance_locN? */
-      uint<8> u8        : ecode == DW_CFA_advance_loc1;
-      uint<16> u16      : ecode == DW_CFA_advance_loc2;
-      uint<32> u32      : ecode == DW_CFA_advance_loc4;
-      uint<64> u64      : ecode == DW_CFA_MIPS_advance_loc8;
-
-      struct
-      {
-        ULEB128 reg;
-        ULEB128 off;
-      } reg_offset      : ecode in [DW_CFA_offset_extended,
-                                    DW_CFA_def_cfa,
-                                    DW_CFA_val_offset];
-
-      struct
-      {
-        ULEB128 reg;
-        LEB128 off;
-      } reg_soffset     : ecode in [DW_CFA_offset_extended_sf,
-                                    DW_CFA_def_cfa_sf,
-                                    DW_CFA_val_offset_sf];
-
-      ULEB128 reg       : ecode in [DW_CFA_restore_extended,
-                                    DW_CFA_undefined,
-                                    DW_CFA_same_value,
-                                    DW_CFA_def_cfa_register];
-
-      ULEB128[2] regs   : ecode == DW_CFA_register;
-
-      ULEB128 offset    : ecode == DW_CFA_def_cfa_offset;
-      LEB128 soffset    : ecode == DW_CFA_def_cfa_offset_sf;
-
-      struct
-      {
-        ULEB128 size;
-        Dwarf_Op[size.value#B] ops;
-      } exp             : ecode == DW_CFA_def_cfa_expression;
-
-      struct
-      {
-        ULEB128 reg;
-        ULEB128 size;
-        Dwarf_Op[size.value#B] ops;
-      } reg_exp       : ecode in [DW_CFA_expression,
-                                  DW_CFA_val_expression];
-
-      /* Other instructions have no operands. */
-      struct {} nothing;
-    } ops;
-  };
-
-/* DWARF Common Information Entry (CIE)
-
-   There is at least one CIE in every non-empty .debug_frame
-   section.  */
-
-type Dwarf_CIE =
-  struct
-  {
-    /* Size of the CIE structure, not including the `length' field
-       itself.  */
-    Dwarf_Initial_Length length;
-
-    /* Constant used to distinguish CIEs from FDEs.  */
-    union
-    {
-      uint<32> u32 : (dwarf_bits == 32
-                      && u32 == 0xffff_ffff);
-      uint<64> u64 : u64 == 0xffff_ffff_ffff_ffffLU;
-    } cie_id;
-
-    /* This version number is specific to the call frame information
-       and is independent of the DWARF version number.  */
-    uint<8> version : ((dwarf_version == 2 && version == 1)
-                       || (dwarf_version == 3 && version == 3)
-                       || (dwarf_version == 4 && version == 4)
-                       || version == 1 /* GAS generates version 1.  */);
-
-    /* UTF-8 string that identifies the augmentation to this CIE or to
-       the FDEs that use it.  If there is no augmentation this value
-       is a zero byte.  */
-    string augmentation;
-
-    /* Size of a target address in this CIE and any FDEs that use it.
-       If a CU exists for this frame, its address size must match the
-       address size here.  */
-    offset<uint<8>,B> address_size;
-
-    /* Size of a segment selector in this CIE and any FDEs that use
-       it.  */
-    offset<uint<8>,B> segment_size;
-
-    /* A constant that is factored out of all advance location
-       instructions.  */
-    ULEB128 code_alignment_factor;
-
-    /* A constant that is factored out of certain offset
-       instructions.  */
-    LEB128 data_alignment_factor;
-
-    /* Constant that indicates which column in the rule table
-       represents the return address of the function.  */
-    ULEB128 return_address_register;
-
-    var insn_size = (length.value - OFFSET - length'size);
-    Dwarf_CFI[insn_size] initial_instructions;
-  };
-
-/* DWARF FDE.
-   Description of a frame for a given function.  */
-
-type Dwarf_FDE =
-  struct
-  {
-    /* Size of the header and instruction stream for this function,
-       not including the `length' field itself.  */
-    Dwarf_Initial_Length length;
-
-    /* Offset into the .debug_frame section that denotes the CIE that
-       is associated with this FDE.  */
-    Dwarf_Section_Offset cie_pointer;
-
-    /* XXX initial_location (segment selector and target address)  */
-    Dwarf_Address initial_location;
-
-    /* Number of bytes of program instructions described by this
-       entry.  */
-    Dwarf_Address address_range;
-
-    var padding = (length.value
-                      - (cie_pointer'size + initial_location'size
-                         + address_range'size + address_range.value()#B));
-
-    Dwarf_CFI[address_range.value()#B + padding] instructions;
-  };
-
-/* Call Frame Information.  */
-
-type Dwarf_Call_Frame_Entry =
-  union
-  {
-    Dwarf_CIE cie;
-    Dwarf_FDE fde;
-  };
diff --git a/pickles/dwarf-info.pk b/pickles/dwarf-info.pk
deleted file mode 100644
index f8adc528..00000000
--- a/pickles/dwarf-info.pk
+++ /dev/null
@@ -1,387 +0,0 @@
-/* dwarf-info.pk - DWARF implementation for GNU poke.
-                   Data in .debug_info  */
-
-/* Copyright (C) 2020, 2021, 2022, 2023 Jose E. Marchesi.  */
-
-/* This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-load "dwarf-common.pk";
-
-/* DWARF Tags.  */
-
-var DW_TAG_array_type = 0x01,
-    DW_TAG_class_type = 0x02,
-    DW_TAG_entry_point = 0x03,
-    DW_TAG_enumeration_type = 0x04,
-    DW_TAG_formal_parameter = 0x05,
-    /* 0x06 reserved.  */
-    /* 0x07 reserved.  */
-    DW_TAG_imported_declaration = 0x08,
-    /* 0x09 reserved.  */
-    DW_TAG_label = 0x0a,
-    DW_TAG_lexical_block = 0x0b,
-    /* 0x0c reserved.  */
-    DW_TAG_member = 0x0d,
-    /* 0x0e reserved.  */
-    DW_TAG_pointer_type = 0x0f,
-    DW_TAG_reference_type = 0x10,
-    DW_TAG_compile_unit = 0x11,
-    DW_TAG_string_type = 0x12,
-    DW_TAG_structure_type = 0x13,
-    /* 0x14 reserved.  */
-    DW_TAG_subroutine_type = 0x15,
-    DW_TAG_typedef = 0x16,
-    DW_TAG_union_type = 0x17,
-    DW_TAG_unspecified_parameters = 0x18,
-    DW_TAG_variant = 0x19,
-    DW_TAG_common_block = 0x1a,
-    DW_TAG_common_inclusion = 0x1b,
-    DW_TAG_inheritance = 0x1c,
-    DW_TAG_inlined_subroutine = 0x1d,
-    DW_TAG_module = 0x1e,
-    DW_TAG_ptr_to_member_type = 0x1f,
-    DW_TAG_set_type = 0x20,
-    DW_TAG_subrange_type = 0x21,
-    DW_TAG_with_stmt = 0x22,
-    DW_TAG_access_declaration = 0x23,
-    DW_TAG_base_type = 0x24,
-    DW_TAG_catch_block = 0x25,
-    DW_TAG_const_type = 0x26,
-    DW_TAG_constant = 0x27,
-    DW_TAG_enumerator = 0x28,
-    DW_TAG_file_type = 0x29,
-    DW_TAG_friend = 0x2a,
-    DW_TAG_namelist = 0x2b,
-    DW_TAG_namelist_item = 0x2c,
-    DW_TAG_packed_type = 0x2d,
-    DW_TAG_subprogram = 0x2e,
-    DW_TAG_template_type_parameter = 0x2f,
-    DW_TAG_template_value_parameter = 0x30,
-    DW_TAG_thrown_type = 0x31,
-    DW_TAG_try_block = 0x32,
-    DW_TAG_variant_part = 0x33,
-    DW_TAG_variable = 0x34,
-    DW_TAG_volatile_type = 0x35,
-    DW_TAG_dwarf_procedure = 0x36,
-    DW_TAG_restrict_type = 0x37,
-    DW_TAG_interface_type = 0x38,
-    DW_TAG_namespace = 0x39,
-    DW_TAG_imported_module = 0x3a,
-    DW_TAG_unspecified_type = 0x3b,
-    DW_TAG_partial_unit = 0x3c,
-    DW_TAG_imported_unit = 0x3d,
-    /* 0x3e reserved.  Was DW_TAG_mutable_type.  */
-    DW_TAG_condition = 0x3f,
-    DW_TAG_shared_type = 0x40,
-    DW_TAG_type_unit = 0x41,
-    DW_TAG_rvalue_reference_type = 0x42,
-    DW_TAG_template_alias = 0x43,
-    DW_TAG_coarray_type = 0x44,
-    DW_TAG_generic_subrange = 0x45,
-    DW_TAG_dynamic_type = 0x46,
-    DW_TAG_atomic_type = 0x47,
-    DW_TAG_call_site = 0x48,
-    DW_TAG_call_site_parameter = 0x49,
-    DW_TAG_skeleton_unit = 0x4a,
-    DW_TAG_immutable_type = 0x4b,
-    DW_TAG_lo_user = 0x4080,
-    DW_TAG_MIPS_loop = 0x4081,
-    DW_TAG_format_label = 0x4101,
-    DW_TAG_function_template = 0x4102,
-    DW_TAG_class_template = 0x4103,
-    DW_TAG_GNU_BINCL = 0x4104,
-    DW_TAG_GNU_EINCL = 0x4105,
-    DW_TAG_GNU_template_template_param = 0x4106,
-    DW_TAG_GNU_template_parameter_pack = 0x4107,
-    DW_TAG_GNU_formal_parameter_pack = 0x4108,
-    DW_TAG_GNU_call_site = 0x4109,
-    DW_TAG_GNU_call_site_parameter = 0x410a,
-    DW_TAG_hi_user = 0xffff;
-
-/* DWARF Attributes.  */
-
-var DW_AT_sibling = 0x01,
-    DW_AT_location = 0x02,
-    DW_AT_name = 0x03,
-    /* 0x04 reserved.  */
-    /* 0x05 reserved.  */
-    /* 0x06 reserved.  */
-    /* 0x07 reserved.  */
-    /* 0x08 reserved.  */
-    DW_AT_ordering = 0x09,
-    /* 0x0a reserved.  */
-    DW_AT_byte_size = 0x0b,
-    DW_AT_bit_offset = 0x0c,
-    DW_AT_bit_size = 0x0d,
-    /* 0x0e reserved.  */
-    /* 0x0f reserved.  */
-    DW_AT_stmt_list = 0x10,
-    DW_AT_low_pc = 0x11,
-    DW_AT_high_pc = 0x12,
-    DW_AT_language = 0x13,
-    /* 0x14 reserved.  */
-    DW_AT_discr = 0x15,
-    DW_AT_discr_value = 0x16,
-    DW_AT_visibility = 0x17,
-    DW_AT_import = 0x18,
-    DW_AT_string_length = 0x19,
-    DW_AT_common_reference = 0x1a,
-    DW_AT_comp_dir = 0x1b,
-    DW_AT_const_value = 0x1c,
-    DW_AT_containing_type = 0x1d,
-    DW_AT_default_value = 0x1e,
-    /* 0x1f reserved.  */
-    DW_AT_inline = 0x20,
-    DW_AT_is_optional = 0x21,
-    DW_AT_lower_bound = 0x22,
-    /* 0x23 reserved.  */
-    /* 0x24 reserved.  */
-    DW_AT_producer = 0x25,
-    /* 0x26 reserved.  */
-    DW_AT_prototyped = 0x27,
-    /* 0x28 reserved.  */
-    /* 0x29 reserved.  */
-    DW_AT_return_addr = 0x2a,
-    /* 0x2b reserved.  */
-    DW_AT_start_scope = 0x2c,
-    /* 0x2d reserved.  */
-    DW_AT_bit_stride = 0x2e,
-    DW_AT_upper_bound = 0x2f,
-    /* 0x30 reserved.  */
-    DW_AT_abstract_origin = 0x31,
-    DW_AT_accessibility = 0x32,
-    DW_AT_address_class = 0x33,
-    DW_AT_artificial = 0x34,
-    DW_AT_base_types = 0x35,
-    DW_AT_calling_convention = 0x36,
-    DW_AT_count = 0x37,
-    DW_AT_data_member_location = 0x38,
-    DW_AT_decl_column = 0x39,
-    DW_AT_decl_file = 0x3a,
-    DW_AT_decl_line = 0x3b,
-    DW_AT_declaration = 0x3c,
-    DW_AT_discr_list = 0x3d,
-    DW_AT_encoding = 0x3e,
-    DW_AT_external = 0x3f,
-    DW_AT_frame_base = 0x40,
-    DW_AT_friend = 0x41,
-    DW_AT_identifier_case = 0x42,
-    DW_AT_macro_info = 0x43,
-    DW_AT_namelist_item = 0x44,
-    DW_AT_priority = 0x45,
-    DW_AT_segment = 0x46,
-    DW_AT_specification = 0x47,
-    DW_AT_static_link = 0x48,
-    DW_AT_type = 0x49,
-    DW_AT_use_location = 0x4a,
-    DW_AT_variable_parameter = 0x4b,
-    DW_AT_virtuality = 0x4c,
-    DW_AT_vtable_elem_location = 0x4d,
-    DW_AT_allocated = 0x4e,
-    DW_AT_associated = 0x4f,
-    DW_AT_data_location = 0x50,
-    DW_AT_byte_stride = 0x51,
-    DW_AT_entry_pc = 0x52,
-    DW_AT_use_UTF8 = 0x53,
-    DW_AT_extension = 0x54,
-    DW_AT_ranges = 0x55,
-    DW_AT_trampoline = 0x56,
-    DW_AT_call_column = 0x57,
-    DW_AT_call_file = 0x58,
-    DW_AT_call_line = 0x59,
-    DW_AT_description = 0x5a,
-    DW_AT_binary_scale = 0x5b,
-    DW_AT_decimal_scale = 0x5c,
-    DW_AT_small = 0x5d,
-    DW_AT_decimal_sign = 0x5e,
-    DW_AT_digit_count = 0x5f,
-    DW_AT_picture_string = 0x60,
-    DW_AT_mutable = 0x61,
-    DW_AT_threads_scaled = 0x62,
-    DW_AT_explicit = 0x63,
-    DW_AT_object_pointer = 0x64,
-    DW_AT_endianity = 0x65,
-    DW_AT_elemental = 0x66,
-    DW_AT_pure = 0x67,
-    DW_AT_recursive = 0x68,
-    DW_AT_signature = 0x69,
-    DW_AT_main_subprogram = 0x6a,
-    DW_AT_data_bit_offset = 0x6b,
-    DW_AT_const_expr = 0x6c,
-    DW_AT_enum_class = 0x6d,
-    DW_AT_linkage_name = 0x6e,
-    DW_AT_string_length_bit_size = 0x6f,
-    DW_AT_string_length_byte_size = 0x70,
-    DW_AT_rank = 0x71,
-    DW_AT_str_offsets_base = 0x72,
-    DW_AT_addr_base = 0x73,
-    DW_AT_rnglists_base = 0x74,
-    /* 0x75 reserved.  */
-    DW_AT_dwo_name = 0x76,
-    DW_AT_reference = 0x77,
-    DW_AT_rvalue_reference = 0x78,
-    DW_AT_macros = 0x79,
-    DW_AT_call_all_calls = 0x7a,
-    DW_AT_call_all_source_calls = 0x7b,
-    DW_AT_call_all_tail_calls = 0x7c,
-    DW_AT_call_return_pc = 0x7d,
-    DW_AT_call_value = 0x7e,
-    DW_AT_call_origin = 0x7f,
-    DW_AT_call_parameter = 0x80,
-    DW_AT_call_pc = 0x81,
-    DW_AT_call_tail_call = 0x82,
-    DW_AT_call_target = 0x83,
-    DW_AT_call_target_clobbered = 0x84,
-    DW_AT_call_data_location = 0x85,
-    DW_AT_call_data_value = 0x86,
-    DW_AT_noreturn = 0x87,
-    DW_AT_alignment = 0x88,
-    DW_AT_export_symbols = 0x89,
-    DW_AT_deleted = 0x8a,
-    DW_AT_defaulted = 0x8b,
-    DW_AT_loclists_base = 0x8c,
-    DW_AT_lo_user = 0x2000,
-    DW_AT_MIPS_fde = 0x2001,
-    DW_AT_MIPS_loop_begin = 0x2002,
-    DW_AT_MIPS_tail_loop_begin = 0x2003,
-    DW_AT_MIPS_epilog_begin = 0x2004,
-    DW_AT_MIPS_loop_unroll_factor = 0x2005,
-    DW_AT_MIPS_software_pipeline_depth = 0x2006,
-    DW_AT_MIPS_linkage_name = 0x2007,
-    DW_AT_MIPS_stride = 0x2008,
-    DW_AT_MIPS_abstract_name = 0x2009,
-    DW_AT_MIPS_clone_origin = 0x200a,
-    DW_AT_MIPS_has_inlines = 0x200b,
-    DW_AT_MIPS_stride_byte = 0x200c,
-    DW_AT_MIPS_stride_elem = 0x200d,
-    DW_AT_MIPS_ptr_dopetype = 0x200e,
-    DW_AT_MIPS_allocatable_dopetype = 0x200f,
-    DW_AT_MIPS_assumed_shape_dopetype = 0x2010,
-    DW_AT_MIPS_assumed_size = 0x2011,
-    /* GNU extensions.  */
-    DW_AT_sf_names = 0x2101,
-    DW_AT_src_info = 0x2102,
-    DW_AT_mac_info = 0x2103,
-    DW_AT_src_coords = 0x2104,
-    DW_AT_body_begin = 0x2105,
-    DW_AT_body_end = 0x2106,
-    DW_AT_GNU_vector = 0x2107,
-    DW_AT_GNU_guarded_by = 0x2108,
-    DW_AT_GNU_pt_guarded_by = 0x2109,
-    DW_AT_GNU_guarded = 0x210a,
-    DW_AT_GNU_pt_guarded = 0x210b,
-    DW_AT_GNU_locks_excluded = 0x210c,
-    DW_AT_GNU_exclusive_locks_required = 0x210d,
-    DW_AT_GNU_shared_locks_required = 0x210e,
-    DW_AT_GNU_odr_signature = 0x210f,
-    DW_AT_GNU_template_name = 0x2110,
-    DW_AT_GNU_call_site_value = 0x2111,
-    DW_AT_GNU_call_site_data_value = 0x2112,
-    DW_AT_GNU_call_site_target = 0x2113,
-    DW_AT_GNU_call_site_target_clobbered = 0x2114,
-    DW_AT_GNU_tail_call = 0x2115,
-    DW_AT_GNU_all_tail_call_sites = 0x2116,
-    DW_AT_GNU_all_call_sites = 0x2117,
-    DW_AT_GNU_all_source_call_sites = 0x2118,
-    DW_AT_GNU_locviews = 0x2137,
-    DW_AT_GNU_entry_view = 0x2138,
-    DW_AT_GNU_macros = 0x2119,
-    DW_AT_GNU_deleted = 0x211a,
-    /* GNU Debug Fission extensions.  */
-    DW_AT_GNU_dwo_name = 0x2130,
-    DW_AT_GNU_dwo_id = 0x2131,
-    DW_AT_GNU_ranges_base = 0x2132,
-    DW_AT_GNU_addr_base = 0x2133,
-    DW_AT_GNU_pubnames = 0x2134,
-    DW_AT_GNU_pubtypes = 0x2135,
-    /* https://gcc.gnu.org/wiki/DW_AT_GNU_numerator_denominator  */
-    DW_AT_GNU_numerator = 0x2303,
-    DW_AT_GNU_denominator = 0x2304,
-    /* https://gcc.gnu.org/wiki/DW_AT_GNU_bias  */
-    DW_AT_GNU_bias = 0x2305,
-    DW_AT_hi_user = 0x3ff;
-
-/* DWARF form encodings.  */
-
-var DW_FORM_addr = 0x01,
-    DW_FORM_block2 = 0x03,
-    DW_FORM_block4 = 0x04,
-    DW_FORM_data2 = 0x05,
-    DW_FORM_data4 = 0x06,
-    DW_FORM_data8 = 0x07,
-    DW_FORM_string = 0x08,
-    DW_FORM_block = 0x09,
-    DW_FORM_block1 = 0x0a,
-    DW_FORM_data1 = 0x0b,
-    DW_FORM_flag = 0x0c,
-    DW_FORM_sdata = 0x0d,
-    DW_FORM_strp = 0x0e,
-    DW_FORM_udata = 0x0f,
-    DW_FORM_ref_addr = 0x10,
-    DW_FORM_ref1 = 0x11,
-    DW_FORM_ref2 = 0x12,
-    DW_FORM_ref4 = 0x13,
-    DW_FORM_ref8 = 0x14,
-    DW_FORM_ref_udata = 0x15,
-    DW_FORM_indirect = 0x16,
-    DW_FORM_sec_offset = 0x17,
-    DW_FORM_exprloc = 0x18,
-    DW_FORM_flag_present = 0x19,
-    DW_FORM_strx = 0x1a,
-    DW_FORM_addrx = 0x1b,
-    DW_FORM_ref_sup4 = 0x1c,
-    DW_FORM_strp_sup = 0x1d,
-    DW_FORM_data16 = 0x1e,
-    DW_FORM_line_strp = 0x1f,
-    DW_FORM_ref_sig8 = 0x20,
-    DW_FORM_implicit_const = 0x21,
-    DW_FORM_loclistx = 0x22,
-    DW_FORM_rnglistx = 0x23,
-    DW_FORM_ref_sup8 = 0x24,
-    DW_FORM_strx1 = 0x25,
-    DW_FORM_strx2 = 0x26,
-    DW_FORM_strx3 = 0x27,
-    DW_FORM_strx4 = 0x28,
-    DW_FORM_addrx1 = 0x29,
-    DW_FORM_addrx2 = 0x2a,
-    DW_FORM_addrx3 = 0x2b,
-    DW_FORM_addrx4 = 0x2c,
-    /* GNU Debug Fission extensions.  */
-    DW_FORM_GNU_addr_index = 0x1f01,
-    DW_FORM_GNU_str_index = 0x1f02,
-    DW_FORM_GNU_ref_alt = 0x1f20,
-    DW_FORM_GNU_strp_alt = 0x1f21;
-
-/* Contributions are stored in .debug_info sections.  */
-
-type Dwarf_CU_Header =
-  struct
-  {
-    /* Length of the .debug_info contribution for this CU, not
-       including the length field itself.  */
-    Dwarf_Initial_Length unit_length;
-
-    /* Version of the DWARF information for the compilation unit.  */
-    uint<16> version : (version in [2UH, 3UH, 4UH, 5UH]
-                        && dwarf_set_version (version));
-
-    /* Offset into the .debug_abbrev section that associates the
-       compilation unit with a particular set of debugging information
-       entry abbreviations.  */
-    Dwarf_Section_Offset debug_abbrev_offset;
-
-    /* Size of an address on the target architecture.  */
-    offset<uint<8>,B> address_size;
-  };
diff --git a/pickles/dwarf-pubnames.pk b/pickles/dwarf-pubnames.pk
deleted file mode 100644
index 3f56c02c..00000000
--- a/pickles/dwarf-pubnames.pk
+++ /dev/null
@@ -1,63 +0,0 @@
-/* dwarf-pubnames.pk - DWARF implementation for GNU poke.
-                       Name lookup tables.  */
-
-/* Copyright (C) 2020, 2021, 2022, 2023 Jose E. Marchesi.  */
-
-/* This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-load leb128;
-load "dwarf-common.pk";
-
-/* The sections .debug_pubnames and .debug_pubtypes contain a name
-   lookup table each.  */
-
-type Dwarf_Name_Lookup_Table =
-  struct
-  {
-    /* Length of the set of entries for this CU, not including the
-       length field itself.  */
-    Dwarf_Initial_Length unit_length;
-
-    uint<16> version : (dwarf_version >= 3 && version == 2);
-
-    /* Offset into the .debug_info section of the CU header.  */
-    Dwarf_Section_Offset debug_info_offset;
-
-    /* Size of the contents of the .debug_info section generated to
-       represent this CU.  */
-    Dwarf_Initial_Length debug_info_length;
-
-    /* The header is followed by a set of entries, which are finished
-       by an offset containing the value 0.  */
-
-    type Global_Name =
-      struct
-      {
-        Dwarf_Section_Offset offset : offset.value != 0#B;
-        string name;
-      };
-
-    Global_Name[] names;
-    Dwarf_Section_Offset terminator : terminator.value == 0#B;
-
-    /* Return the offset in .debug_info of the object with name NAME.
-       If no such object is stored in the table, raise E_generic.  */
-    method lookup = (string str) offset<uint<64>,B>:
-      {
-        for (name in names where name.name == str)
-          return name.offset.value;
-        raise E_generic;
-      }
-  };
diff --git a/pickles/dwarf-types.pk b/pickles/dwarf-types.pk
deleted file mode 100644
index 1f2c9f99..00000000
--- a/pickles/dwarf-types.pk
+++ /dev/null
@@ -1,51 +0,0 @@
-/* dwarf-frame.pk - DWARF implementation for GNU poke.
-                    Debug types.  */
-
-/* Copyright (C) 2020, 2021, 2022, 2023 Jose E. Marchesi.  */
-
-/* This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-load leb128;
-load "dwarf-common.pk";
-
-/* The Dwarf_Type_Unit_Header is the header for the series of DIEs
-   conforming a type that has been stored in the .debug_types
-   section.  */
-
-type Dwarf_Type_Unit_Header =
-  struct
-  {
-    /* Length of the .debug_types contribution for this CU, not
-       including the length field itself.  */
-    Dwarf_Initial_Length unit_length;
-
-    /* Version of the DWARF information in this CU.  */
-    uint<16> version : version == 4;
-
-    /* Offset into the .debug_abbrev section that associates this CU
-       with a particular set of debugging information entry
-       abbreviations.  */
-    Dwarf_Section_Offset debug_abbrev_offset;
-
-    /* Size of an address on the target architecture.  */
-    offset<uint<8>,B> address_size;
-
-    /* Unique signature of the type described in this type unit.  */
-    uint<64> type_signature;
-
-    /* Offset relative to the beginning of the type unit header,
-       referring to the DIE that describes the type.  */
-    Dwarf_Section_Offset type_offset;
-  };
diff --git a/pickles/dwarf.pk b/pickles/dwarf.pk
deleted file mode 100644
index 1d3f8c4c..00000000
--- a/pickles/dwarf.pk
+++ /dev/null
@@ -1,24 +0,0 @@
-/* dwarf.pk - DWARF implementation for GNU poke.  */
-
-/* Copyright (C) 2020, 2021, 2022, 2023 Jose E. Marchesi.  */
-
-/* This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-load "dwarf-common.pk";
-load "dwarf-info.pk";
-load "dwarf-expr.pk";
-load "dwarf-frame.pk";
-load "dwarf-pubnames.pk";
-load "dwarf-types.pk";
diff --git a/pickles/elf-32.pk b/pickles/elf-32.pk
deleted file mode 100644
index 3e494d13..00000000
--- a/pickles/elf-32.pk
+++ /dev/null
@@ -1,299 +0,0 @@
-/* elf-32.pk - 32-bit ELF definitions.  */
-
-/* Copyright (C) 2019, 2020, 2021, 2022, 2023 Jose E. Marchesi.  */
-
-/* This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-load "elf-common.pk";
-
-/* ELF32 basic types.  */
-
-type Elf32_Addr = offset<uint<32>,B>,
-     Elf32_Off = offset<uint<32>,B>;
-
-/* ELF32 relocation info.
-
-   r_sym is the symbol table index with respect to which the
-   relocation must be made.
-
-   r_type is the type of relocation to apply, which is
-   architecture-specific.  */
-
-type Elf32_RelInfo =
-  struct Elf_Word
-  {
-    uint<24> r_sym;
-    uint<8> r_type;
-  };
-
-/* ELF32 REL relocation entry. */
-
-type Elf32_Rel =
-  struct
-  {
-    Elf32_Addr r_offset;
-    Elf32_RelInfo r_info;
-  };
-
-/* ELF32 RELA relocation entry.
-
-   r_offset holds a section offset in relocatable files, a virtual
-   address in executable and shared object files.
-
-   r_addend holds a constant value to be added to the relocation's
-   value.  In architectures using Rel relocations this addend is
-   somehow stored in the relocation's memory location.  */
-
-type Elf32_Rela =
-  struct
-  {
-    Elf32_Addr r_offset;
-    Elf32_RelInfo r_info;
-    Elf_Sword r_addend;
-  };
-
-/* ELF32 symbol.  */
-
-type Elf32_Sym =
-  struct
-  {
-    offset<Elf_Word,B> st_name;
-    Elf32_Addr st_value;
-    offset<Elf_Word,B> st_size;
-    Elf_Sym_Info st_info;
-    Elf_Sym_Other_Info st_other;
-    Elf_Half st_shndx;
-  };
-
-/* ELF32 compressed section header.  */
-
-type Elf32_Chdr =
-  struct
-  {
-    /* This member specifies the compression algorithm.  */
-    Elf_Word ch_type : elf_compress_algorithm_p (ch_type);
-    /* Size and required alignment of the uncompressed data.  */
-    offset<Elf_Word,B> ch_size;
-    offset<Elf_Word,B> ch_addralign;
-  };
-
-/* ELF32 section flags.  */
-
-type Elf32_SectionFlags =
-  struct
-  {
-    Elf_Word flags;
-
-    method _print = void:
-    {
-      elf_pretty_print_section_flags (flags);
-    }
-  };
-
-/* ELF32 section header table entry.  */
-
-type Elf32_Shdr =
-  struct
-  {
-    offset<Elf_Word,B> sh_name;
-    Elf_Word sh_type;
-    Elf32_SectionFlags sh_flags;
-    Elf32_Addr sh_addr;
-    Elf32_Off sh_offset;
-    offset<Elf_Word,B> sh_size;
-    Elf_Word sh_link;
-    Elf_Word sh_info;
-    Elf_Word sh_addralign;
-    offset<Elf_Word,B> sh_entsize;
-  };
-
-/* ELF32 program header table entry.  */
-
-type Elf32_Phdr =
-  struct
-  {
-    Elf_Word p_type;
-    Elf32_Off p_offset;
-    Elf32_Addr p_vaddr;
-    Elf32_Addr p_paddr;
-    offset<Elf_Word,B> p_filesz;
-    offset<Elf_Word,B> p_memsz;
-    Elf_SegmentFlags p_flags;
-    offset<Elf_Word,B> p_align;
-  };
-
-/* ELF32 file header.  */
-
-type Elf32_Ehdr =
-  struct
-  {
-    Elf_Ident e_ident;
-    Elf_Half e_type;
-    Elf_Half e_machine;
-    Elf_Word e_version = EV_CURRENT;
-
-    Elf32_Addr e_entry;
-    Elf32_Off e_phoff;
-    Elf32_Off e_shoff;
-
-    Elf_Word e_flags;
-    offset<Elf_Half,B> e_ehsize;
-    offset<Elf_Half,B> e_phentsize;
-    Elf_Half e_phnum;
-    offset<Elf_Half,B> e_shentsize;
-    Elf_Half e_shnum;
-    Elf_Half e_shstrndx : e_shnum == 0 || e_shstrndx < e_shnum;
-  };
-
-/* ELF32 file.  */
-
-type Elf32_File =
-  struct
-  {
-    Elf32_Ehdr ehdr;
-
-    if (ehdr.e_shnum > 0)
-      Elf32_Shdr[ehdr.e_shnum] shdr @ ehdr.e_shoff;
-
-    if (ehdr.e_phnum > 0)
-      Elf32_Phdr[ehdr.e_phnum] phdr @ ehdr.e_phoff;
-
-    /* Given an offset into the ELF file's section string table, return
-       the string.  */
-
-    method get_section_name = (offset<Elf_Word,B> offset) string:
-      {
-        var strtab = ehdr.e_shstrndx;
-        return string @ shdr'ios : shdr[strtab].sh_offset + offset;
-      }
-
-    /* Given a symtab and an offset into its associated symbol string
-       table, return the string.  */
-
-    method get_symbol_name = (Elf32_Shdr symtab, offset<Elf_Word,B> offset) 
string:
-      {
-        var strtab = symtab.sh_link;
-        return string @ shdr'ios : shdr[strtab].sh_offset + offset;
-      }
-
-    /* Given a section name, return an array of section headers in the
-       ELF file having that name.  */
-
-    method get_sections_by_name = (string name) Elf32_Shdr[]:
-      {
-        var sections = Elf32_Shdr[]();
-
-        for (s in shdr where get_section_name (s.sh_name) == name)
-          apush (sections, s);
-
-        return sections;
-      }
-
-    /* Given a section type (SHT_* value) return an array of section
-       headers in the ELF file with that type.  */
-
-    method get_sections_by_type = (Elf_Word stype) Elf32_Shdr[]:
-      {
-        var sections = Elf32_Shdr[]();
-
-        for (s in shdr where s.sh_type == stype)
-          apush (sections, s);
-
-        return sections;
-      }
-
-    /* Given a section name, return whether it exists in this
-       file.  */
-
-    method section_name_p = (string name) int:
-      {
-        var sections = Elf32_Shdr[]();
-
-        try sections = get_sections_by_name (name);
-        catch if E_inval { return 0; }
-
-        return sections'length;
-      }
-
-    /* Given an offset, return the string stored at that offset in the
-       "default" string table of the ELF file.  This is the string table
-       section named ".strtab".  If such a section doesn't exist, or it
-       doesn't contain a string table, then raise E_inval.  */
-    method get_string = (offset<Elf_Word,B> offset) string:
-     {
-       if (!section_name_p (".strtab"))
-          raise E_inval;
-
-       var strtab = get_sections_by_name (".strtab")[0];
-       return string @ strtab'ios : strtab.sh_offset + offset;
-     }
-
-    /* Return the signature corresponding to a given group section.
-       If the given section header doesn't correspond to a group
-       section then raise E_inval.  */
-
-    method get_group_signature = (Elf32_Shdr section) string:
-      {
-        if (section.sh_type != SHT_GROUP)
-          raise E_inval;
-
-        var symtab = shdr[section.sh_link];
-        var symtab_data
-          = Elf32_Sym [symtab.sh_size] @ shdr'ios : symtab.sh_offset;
-        var symbol = symtab_data[section.sh_info];
-        var symbol_name = get_symbol_name (symtab, symbol.st_name);
-
-        return symbol_name;
-      }
-
-    /* Return an array of strings with the signatures of the section
-       groups present in this ELF file.  */
-
-    method get_group_signatures = string[]:
-      {
-        var signatures = string[]();
-
-        for (section in shdr where section.sh_type == SHT_GROUP)
-          apush (signatures, get_group_signature (section));
-
-        return signatures;
-      }
-
-    /* Given the name of a section group, return an array with the
-       section headers corresponding to all the sections in that
-       group.  If the given name doesn't identify a section group in
-       the ELF file then return an empty array.  */
-
-    method get_section_group = (string group_name) Elf32_Shdr[]:
-      {
-        var section_group = Elf32_Shdr[]();
-
-        var group_sections = get_sections_by_type (SHT_GROUP);
-        for (sec in group_sections
-             where get_group_signature (sec) == group_name)
-          {
-            var group_entries
-              = (Elf_Word[sec.sh_size - sizeof (Elf_Word)]
-                 @ sec'ios : sec.sh_offset + sizeof (Elf_Word));
-
-            for (entry in group_entries)
-              apush (section_group, shdr[entry]);
-
-            break;
-         }
-
-       return section_group;
-     }
-  };
diff --git a/pickles/elf-64.pk b/pickles/elf-64.pk
deleted file mode 100644
index fa90fa75..00000000
--- a/pickles/elf-64.pk
+++ /dev/null
@@ -1,344 +0,0 @@
-/* elf-64.pk - 64-bit ELF definitions.  */
-
-/* Copyright (C) 2019, 2020, 2021, 2022, 2023 Jose E. Marchesi.  */
-
-/* This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-load "elf-common.pk";
-
-/* ELF64 basic types.  */
-
-type Elf64_Xword = uint<64>,
-     Elf64_Sxword = int<64>,
-     Elf64_Addr = offset<uint<64>,B>,
-     Elf64_Off = offset<uint<64>,B>;
-
-/* ELF64 relocation info.
-
-   r_sym is the symbol table index with respect to which the
-   relocation must be made.
-
-   r_type is the type of relocation to apply, which is
-   architecture-specific.  */
-
-type Elf64_RelInfo =
-  struct Elf64_Xword
-  {
-    uint<32> r_sym;
-    uint<32> r_type;
-  };
-
-/* ELF64 REL relocation entry.  */
-
-type Elf64_Rel =
-  struct
-  {
-    Elf64_Addr r_offset;
-    Elf64_RelInfo r_info;
-  };
-
-/* ELF64 RELA relocation entry.
-
-   r_offset holds a section offset in relocatable files, a virtual
-   address in executable and shared object files.
-
-   r_addend holds a constant value to be added to the relocation's
-   value.  In architectures using Rel relocations this addend is
-   somehow stored in the relocation's memory location.  */
-
-type Elf64_Rela =
-  struct
-  {
-    Elf64_Addr r_offset;
-    Elf64_RelInfo r_info;
-    Elf64_Sxword r_addend;
-  };
-
-/* ELF64 symbol.  */
-
-type Elf64_Sym =
-  struct
-  {
-    offset<Elf_Word,B> st_name;
-    Elf_Sym_Info st_info;
-    Elf_Sym_Other_Info st_other;
-    Elf_Half st_shndx;
-    Elf64_Addr st_value;
-    Elf64_Xword st_size;
-  };
-
-/* Compressed section header, used in sections flagged with
-   SHF_COMPRESSED.  */
-
-type Elf64_Chdr =
-  struct
-  {
-    /* This member specifies the compression algorithm.  */
-    Elf_Word ch_type :  elf_compress_algorithm_p (ch_type);
-    Elf_Word ch_reserved;
-    /* Size and required alignment of the uncompressed data.  */
-    offset<Elf64_Xword,B> ch_size;
-    offset<Elf64_Xword,B> ch_addralign;
-  };
-
-/* The ELF64 dynamic section contents.  */
-
-type Elf64_Dyn =
-  struct
-  {
-    Elf64_Sxword d_tag;
-
-    union
-      {
-      /* Entries in the dynamic tags in a position >= DT_ENCODING
-         follow an uniform rule regarding what field is used for the
-         data: even entries use d_ptr while odd entries use d_val.  */
-
-        Elf64_Addr d_ptr
-          : (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;
-    } d_data;
-  };
-
-/* ELF64 section group.  */
-
-type Elf64_Group =
-  struct
-  {
-    Elf_Word flags;
-    Elf_Word[] entries;  /* Section header indices.  */
-  };
-
-/* ELF64 section flags.  */
-
-type Elf64_SectionFlags =
-  struct
-  {
-    Elf64_Xword flags;
-
-    method _print = void:
-    {
-      elf_pretty_print_section_flags (flags);
-    }
-  };
-
-/* ELF64 section header table entry.
-
-   sh_name specifies the name of the section.  It is an index into the
-   file's string table.
-
-   sh_type is the type of the section, one of the SHT_* values defined
-   above.
-
-   sh_flags is the ORed value of the 1-bit flags SHF_* defined
-   above.  */
-
-type Elf64_Shdr =
-  struct
-  {
-    offset<Elf_Word,B> sh_name;
-    Elf_Word sh_type;
-    Elf64_SectionFlags sh_flags;
-    Elf64_Addr sh_addr;
-    Elf64_Off sh_offset;
-    offset<Elf64_Xword,B> sh_size;
-    Elf_Word sh_link;
-    Elf_Word sh_info;
-    Elf64_Xword sh_addralign;
-    offset<Elf64_Xword,B> sh_entsize;
-  };
-
-/* ELF64 program header table entry.  */
-
-type Elf64_Phdr =
-  struct
-  {
-    Elf_Word p_type;
-    Elf_SegmentFlags p_flags;
-    Elf64_Off p_offset;
-    Elf64_Addr p_vaddr;
-    Elf64_Addr p_paddr;
-    offset<Elf64_Xword,B> p_filesz;
-    offset<Elf64_Xword,B> p_memsz;
-    offset<Elf64_Xword,B> p_align;
-  };
-
-/* ELF64 file header.  */
-
-type Elf64_Ehdr =
-  struct
-  {
-    Elf_Ident e_ident;
-    Elf_Half e_type;
-    Elf_Half e_machine;
-    Elf_Word e_version = EV_CURRENT;
-
-    Elf64_Addr e_entry;
-    Elf64_Off e_phoff;
-    Elf64_Off e_shoff;
-
-    Elf_Word e_flags;
-    offset<Elf_Half,B> e_ehsize;
-    offset<Elf_Half,B> e_phentsize;
-    Elf_Half e_phnum;
-    offset<Elf_Half,B> e_shentsize;
-    Elf_Half e_shnum;
-    Elf_Half e_shstrndx : e_shnum == 0 || e_shstrndx < e_shnum;
-  };
-
-/* ELF64 file.  */
-
-type Elf64_File =
-  struct
-  {
-    Elf64_Ehdr ehdr;
-
-    if (ehdr.e_shnum > 0)
-      Elf64_Shdr[ehdr.e_shnum] shdr @ ehdr.e_shoff;
-
-    if (ehdr.e_phnum > 0)
-      Elf64_Phdr[ehdr.e_phnum] phdr @ ehdr.e_phoff;
-
-    /* Given an offset into the ELF file's section string table, return
-       the string.  */
-
-    method get_section_name = (offset<Elf_Word,B> offset) string:
-      {
-        var strtab = ehdr.e_shstrndx;
-        return string @ shdr'ios : shdr[strtab].sh_offset + offset;
-      }
-
-    /* Given a symtab and an offset into its associated symbol string
-       table, return the string.  */
-
-    method get_symbol_name = (Elf64_Shdr symtab, offset<Elf_Word,B> offset) 
string:
-      {
-        var strtab = symtab.sh_link;
-        return string @ shdr'ios : shdr[strtab].sh_offset + offset;
-      }
-
-    /* Given a section name, return an array of section headers in the
-       ELF file having that name.  */
-
-    method get_sections_by_name = (string name) Elf64_Shdr[]:
-      {
-        var sections = Elf64_Shdr[]();
-
-        for (s in shdr where get_section_name (s.sh_name) == name)
-          apush (sections, s);
-
-        return sections;
-      }
-
-    /* Given a section type (SHT_* value) return an array of section
-       headers in the ELF file with that type.  */
-
-    method get_sections_by_type = (Elf_Word stype) Elf64_Shdr[]:
-      {
-        var sections = Elf64_Shdr[]();
-
-        for (s in shdr where s.sh_type == stype)
-          apush (sections, s);
-
-        return sections;
-      }
-
-    /* Given a section name, return whether it exists in this
-       file.  */
-
-    method section_name_p = (string name) int:
-      {
-        var sections = Elf64_Shdr[]();
-
-        try sections = get_sections_by_name (name);
-        catch if E_inval { return 0; }
-
-        return sections'length;
-      }
-
-    /* Given an offset, return the string stored at that offset in the
-       "default" string table of the ELF file.  This is the string table
-       section named ".strtab".  If such a section doesn't exist, or it
-       doesn't contain a string table, then raise E_inval.  */
-    method get_string = (offset<Elf_Word,B> offset) string:
-     {
-       if (!section_name_p (".strtab"))
-          raise E_inval;
-
-       var strtab = get_sections_by_name (".strtab")[0];
-       return string @ strtab'ios : strtab.sh_offset + offset;
-     }
-
-    /* Return the signature corresponding to a given group section.
-       If the given section header doesn't correspond to a group
-       section then raise E_inval.  */
-
-    method get_group_signature = (Elf64_Shdr section) string:
-      {
-        if (section.sh_type != SHT_GROUP)
-          raise E_inval;
-
-        var symtab = shdr[section.sh_link];
-        var symtab_data
-          = Elf64_Sym [symtab.sh_size] @ shdr'ios : symtab.sh_offset;
-        var symbol = symtab_data[section.sh_info];
-        var symbol_name = get_symbol_name (symtab, symbol.st_name);
-
-        return symbol_name;
-      }
-
-    /* Return an array of strings with the signatures of the section
-       groups present in this ELF file.  */
-
-    method get_group_signatures = string[]:
-      {
-        var signatures = string[]();
-
-        for (section in shdr where section.sh_type == SHT_GROUP)
-          apush (signatures, get_group_signature (section));
-
-        return signatures;
-      }
-
-    /* Given the name of a section group, return an array with the
-       section headers corresponding to all the sections in that
-       group.  If the given name doesn't identify a section group in
-       the ELF file then return an empty array.  */
-
-    method get_section_group = (string group_name) Elf64_Shdr[]:
-      {
-        var section_group = Elf64_Shdr[]();
-
-        var group_sections = get_sections_by_type (SHT_GROUP);
-        for (sec in group_sections
-             where get_group_signature (sec) == group_name)
-          {
-            var group_entries
-              = (Elf_Word[sec.sh_size - sizeof (Elf_Word)]
-                 @ sec'ios : sec.sh_offset + sizeof (Elf_Word));
-
-            for (entry in group_entries)
-              apush (section_group, shdr[entry]);
-
-            break;
-         }
-
-       return section_group;
-     }
-  };
diff --git a/pickles/elf-common.pk b/pickles/elf-common.pk
deleted file mode 100644
index e6d54e4b..00000000
--- a/pickles/elf-common.pk
+++ /dev/null
@@ -1,476 +0,0 @@
-/* elf-common.pk - ELF definitions common to 32 and 64 bits.  */
-
-/* Copyright (C) 2019, 2020, 2021, 2022, 2023 Jose E. Marchesi.  */
-
-/* This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-/* Basic types.  */
-
-type Elf_Half = uint<16>,
-     Elf_Word = uint<32>,
-     Elf_Sword = int<32>;
-
-/* ELF versions.  */
-
-var EV_NONE = 0, /* Invalid ELF version.  */
-    EV_CURRENT = 1;
-
-/* The different kind of ELF files.  */
-
-var ET_NONE = 0,  /* No file type.  */
-    ET_REL  = 1,  /* Relocatable file.  */
-    ET_EXEC = 2,  /* Position-dependent executable.  */
-    ET_DYN  = 3,  /* Position-independent executable or shared object.  */
-    ET_CORE = 4;  /* Core file.  */
-
-/* ELF machine codes.  */
-
-var EM_NONE = 0,
-    EM_RISCV = 243;
-
-/* ELF symbol bindings.  */
-
-var STB_LOCAL = 0,
-    STB_GLOBAL = 1,
-    STB_WEAK = 2,
-    STB_LOOS = 10,
-    STB_HIOS = 12,
-    STB_LOPROC = 13,
-    STB_HIPROC = 15;
-
-var elf_stb_names =
-  ["local","global","weak",.[9]="reserved",.[12]="os",.[15]="proc"];
-
-/* ELF symbol types.  */
-
-var STT_NOTYPE = 0,
-    STT_OBJECT = 1,
-    STT_FUNC = 2,
-    STT_SECTION = 3,
-    STT_FILE = 4,
-    STT_COMMON = 5,
-    STT_TLS = 6,
-    STT_NUM = 7,
-    STT_LOOS = 10,
-    STT_GNU_IFUNC = 10,
-    STT_HIOS = 12,
-    STT_LOPROC = 13,
-    STT_HIPROC = 15;
-
-var elf_stt_names =
-  ["notype", "object", "func", "section", "file", "common",
-   "tls", "num", "8", "9", "gnu_ifunc", "os11", "os12",
-   "loproc13", "loproc14", "loproc15"];
-
-/* ELF symbol visibility.  */
-
-var STV_DEFAULT = 0,
-    STV_INTERNAL = 1,
-    STV_HIDDEN = 2,
-    STV_PROTECTED = 3;
-
-var elf_stv_names =
-  ["default", "internal", "hidden", "protected"];
-
-/* Types for ELF symbol information, including binding, type and
-   visibility.  */
-
-type Elf_Sym_Info =
-  struct uint<8>
-  {
-    uint<4> st_bind;
-    uint<4> st_type;
-
-    method _print = void:
-    {
-      printf ("#<stb:%s,stt:%s>",
-              elf_stb_names[st_bind], elf_stt_names[st_type]);
-    }
-  };
-
-type Elf_Sym_Other_Info =
-  struct uint<8>
-  {
-    uint<5>;
-    uint<3> st_visibility;
-
-    method _print = void:
-      {
-        print "#<stv:" + elf_stv_names[st_visibility] + ">";
-      }
-  };
-
-/* Compression algorithm identificators.  */
-
-var ELFCOMPRESS_ZLIB = 1,
-    ELFCOMPRESS_LOOS = 0x6000_0000,
-    ELFCOMPRESS_HIOS = 0x6fff_ffff,
-    ELFCOMPRESS_LOPROC = 0x7000_0000,
-    ELFCOMPRESS_HIPROC = 0x7fff_ffff;
-
-fun elf_compress_algorithm_p = (uint<64> ch_type) int:
-{
-  return (ch_type == ELFCOMPRESS_ZLIB
-          || (ch_type >= ELFCOMPRESS_LOOS && ch_type <= ELFCOMPRESS_HIOS)
-          || (ch_type >= ELFCOMPRESS_LOPROC && ch_type <= ELFCOMPRESS_HIPROC));
-}
-
-/* ELF hashing function.  */
-
-fun elf_hash = (string input) Elf_Word:
-{
-  var h = 0 as uint<32>;
-  var high = 0 as uint<32>;
-
-  for (c in input)
-  {
-    h = (h <<. 4) + c;
-    high = h & 0xf0000000;
-    if (high)
-      h = h ^ (high .>> 24);
-    h = h & ~high;
-  };
-
- return h;
-}
-
-/* Dynamic tags.  */
-
-var DT_NULL = 0,  /* Tags the end of the dynamic array.  */
-    /* d_val holds the string table offset of a null-terminated
-       string, giving the name of a needed library.  The dynamic array
-       may.  contain multiple entries with this type.  */
-    DT_NEEDED = 1,
-    /* d_val holds the total size, in bytes, of the relocation
-       entries associated with the procedure linkage table.  If an
-       entry of type DT_JMPREL is present, a DT_PLTRELSZ must
-       accompany it.  */
-    DT_PLTRELSZ = 2,
-    /* d_ptr holds an address associated with the procedure linkage
-       table and/or the global offset table.  */
-    DT_PLTGOT = 3,
-    /* d_ptr holds the address of the symbol hash table.  This hash
-       table refers to the symbol table referenced by the DT_SYMTAB
-       element.  */
-    DT_HASH = 4,
-    /* d_ptr holds the address of the string table.  Symbol names,
-       library names, and other strings reside in this table.  */
-    DT_STRTAB = 5,
-    /* d_ptr holds the address of the symbol table.  */
-    DT_SYMTAB = 6,
-    /* d_ptr holds the address of a relocation table.  Entries in the
-       table have explicit addends.  An object file may have multiple
-       relocation sections.  If this element is present, the dynamic
-       vector must also have DT_RELASZ and DT_RELAENT elements.  */
-    DT_RELA = 7,
-    /* d_val holds the total size, in bytes, of the DT_RELA relocation
-       entry.  */
-    DT_RELASZ = 8,
-    /* d_val holds the size, in bytes, of the DT_RELA relocation
-       entry.  */
-    DT_RELAENT = 9,
-    /* d_val holds the size, in bytes, of the string table.  */
-    DT_STRSZ = 10,
-    /* d_val holds the size, in bytes, of a symbol table entry.  */
-    DT_SYMENT = 11,
-    /* d_ptr holds the address of the initialization function.  */
-    DT_INIT = 12,
-    /* d_ptr holds the address of the finalization function.  */
-    DT_FINI = 13,
-    /* d_val holds the string table offset of a null-terminated
-       string, giving the name of the shared object.  The offset is an
-       index into the table recorded in the DT_STRTAB entry.  */
-    DT_SONAME = 14,
-    /* d_val holds the string table offset of a null-terminated search
-       library search path string.  The offset is an index into the
-       table recorded in the DT_STRTAB entry.  This entry is at level
-       2.  Its use has been superseded by DT_RUNPATH.  */
-    DT_RPATH = 15,
-    /* This element's presence in a shared object library alters the
-       dynamic linker's symbol resolution algorithm for references
-       within the library.  */
-    DT_SYMBOLIC = 16,
-    /* d_ptr holds the address of a relocation table containing rela
-       relocations.  If this element is present, the dynamic structure
-       must also have DT_RELSZ and DT_RELENT elements.  */
-    DT_REL = 17,
-    /* d_val holds the total size, in bytes, of the DT_REL relocation
-       table.  */
-    DT_RELSZ = 18,
-    /* d_val holds the size, in bytes, of the DT_REL relocation
-       entry. */
-    DT_RELENT = 19,
-    /* d_val specifies the type of relocation entry to which the
-       procedure linkage table refers: DT_REL or DT_RELA.  */
-    DT_PLTREL = 20,
-    /* This tag is used for debugging.  Its contents are not
-       specified for the ABI.  */
-    DT_DEBUG = 21,
-    /* This tag's absence signifies that no relocation entry should
-       cause a modification to a non-writable segment, as specified
-       by the segment permissions in the program header table.  If
-       this tag is present, one or more relocation entries might
-       request modifications to a non-writable segment, and the
-       dynamic linker can prepare accordingly.  This entry is at
-       level 2.  Its use has been superseded by the DF_TEXTREL
-       flag.  */
-    DT_TEXTREL = 22,
-    /* d_ptr holds the address of relocation entries associated
-       solely with the procedure linkage table.  If this tag is
-       present, the related entries of types DT_PLTRELSZ and
-       DT_PLTREL must also be present.  */
-    DT_JMPREL = 23,
-    /* If present, this tag instructs the dynamic linker to process
-       all relocations for the object containing this entry before
-       transferring control to the program.  */
-    DT_BIND_NOW = 24,
-    /* d_ptr holds the address of the array of pointers to
-         initialization functions.  */
-    DT_INIT_ARRAY = 25,
-    /* d_ptr holds the address of the array of pointers to
-         finalization functions.  */
-    DT_FINI_ARRAY = 26,
-    /* d_val holds the size in bytes of the array of initialization
-       functions pointed to by the DT_INIT_ARRAY entry.  If an
-       object has a DT_INIT_ARRAY entry, it must also have a
-       DT_INIT_ARRAYSZ entry.  */
-    DT_INIT_ARRAYSZ = 27,
-    /* d_val holds the size in bytes of the array of termination
-       functions pointed to by the DT_FINI_ARRAY entry.  If an
-       object has a DT_fINI_ARRAY entry, it must also have a
-       DT_FINI_ARRAYSZ entry.  */
-    DT_FINI_ARRAYSZ = 28,
-    /* d_val holds the string table offset of a null-terminated
-       library search path string.  The offset is an index into the
-       table recorded in the DT_STRTAB entry.  */
-    DT_RUNPATH = 29,
-    /* d_val holds flag values specific to the object being
-       loaded.  */
-    DT_FLAGS = 30,
-    DT_ENCODING = 32,
-    /* d_ptr holds the address of the array of pointers to
-       pre-initialization functions.  */
-    DT_PREINIT_ARRAY = 32,
-    /* d_val holds the size in bytes of the array of
-       pre-initialization functions pointed to by the
-       DT_PREINIT_ARRAY entry.  */
-    DT_PREINIT_ARRAYSZ = 33,
-    /* d_ptr holds the address of the SHT_SYMTAB_SHNDX section
-       associated with the dynamic symbol table referenced by the
-       DT_SYMTAB element.  */
-    DT_SYMTAB_SHNDX = 34,
-    DT_LOOS = 0x6000_000d,
-    DT_HIOS = 0x6fff_f000,
-    DT_LOPROC = 0x7000_0000,
-    DT_SPARC_REGISTER = 0x7000_0001,
-    DT_HIPROC = 0x7fff_ffff;
-
-/* Definitions related to section groups.  */
-
-var GRP_COMDAT = 1,
-    GRP_MASKOS = 0x0ff0_0000,
-    GRP_MASKPROC = 0xf000_0000;
-
-/* Section types.  */
-
-var SHT_NULL = 0U,
-    SHT_PROGBITS = 1U,
-    SHT_SYMTAB = 2U,
-    SHT_STRTAB = 3U,
-    SHT_RELA = 4U,
-    SHT_HASH = 5U,
-    SHT_DYNAMIC = 6U,
-    SHT_NOTE = 7U,
-    SHT_NOBITS = 8U,
-    SHT_REL = 9U,
-    SHT_SHLIB = 10U,
-    SHT_DYNSYM = 11U,
-    SHT_INIT_ARRAY = 14U,
-    SHT_FINI_ARRAY = 15U,
-    SHT_PREINIT_ARRAY = 16U,
-    SHT_GROUP = 17U,
-    SHT_SYMTAB_SHNDX = 18U,
-    SHT_LOOS = 0x6000_0000U,
-    SHT_HIOS = 0x6fff_ffffU,
-    SHT_LOUSER = 0x8000_0000U,
-    SHT_HIUSER = 0xffff_ffffU;
-
-/* Section Attribute Flags.  */
-
-var SHF_WRITE = 0x1,
-    SHF_ALLOC = 0x2,
-    SHF_EXECINSTR = 0x4,
-    SHF_MERGE = 0x10,
-    SHF_STRINGS = 0x20,
-    SHF_INFO_LINK = 0x40,
-    SHF_LINK_ORDER = 0x80,
-    SHF_OS_NONCONFORMING = 0x100,
-    SHF_GROUP = 0x200,
-    SHF_TLS = 0x400,
-    SHF_COMPRESSED = 0x800,
-    SHF_MASKOS = 0x0ff0_0000,
-    SHF_MASKPROC = 0xf000_0000;
-
-fun elf_pretty_print_section_flags = (uint<64> flags) void:
-{
-  var s = "";
-
-  if (flags & SHF_WRITE)
-    s = s + "WRITE,";
-  if (flags & SHF_ALLOC)
-    s = s + "ALLOC,";
-  if (flags & SHF_EXECINSTR)
-    s = s + "EXECINSTR,";
-  if (flags & SHF_MERGE)
-    s = s + "MERGE,";
-  if (flags & SHF_STRINGS)
-    s = s + "STRINGS,";
-  if (flags & SHF_INFO_LINK)
-    s = s + "INFO_LINK,";
-  if (flags & SHF_LINK_ORDER)
-    s = s + "LINK_ORDER,";
-  if (flags & SHF_OS_NONCONFORMING)
-    s = s + "OS_NONCONFORMING,";
-  if (flags & SHF_GROUP)
-    s = s + "GROUP,";
-  if (flags & SHF_TLS)
-    s = s + "TLS,";
-  if (flags & SHF_COMPRESSED)
-    s = s + "COMPRESSED,";
-  if (flags & SHF_MASKOS)
-   /* XXX call os-specific printer in elf-OS.pk */
-    ;
-  if (flags & SHF_MASKPROC)
-   /* XXX call arch-specific printer in elf-ARCH.pk */
-    ;
-
-  print "#<" + rtrim (s, ",") + ">";
-}
-
-/* Segment types.  */
-
-var PT_NULL = 0,
-    PT_LOAD = 1,
-    PT_DYNAMIC = 2,
-    PT_INTERP = 3,
-    PT_NOTE = 4,
-    PT_SHLIB = 5,
-    PT_PHDR = 6,
-    PT_TLS = 7,
-    PT_LOOS = 0x6000_0000,
-    PT_HIOS = 0x6fff_ffff,
-    PT_LOPROC = 0x7000_0000,
-    PT_HIPROC = 0x7fff_ffff;
-
-/* Segment Flags.  */
-
-var PF_X = 0x1,
-    PF_W = 0x2,
-    PF_R = 0x4,
-    PF_MASKOS = 0x0ff0_0000,
-    PF_MASKPROC = 0xf000_0000;
-
-type Elf_SegmentFlags =
-  struct
-  {
-    Elf_Word flags;
-
-    method _print = void:
-      {
-        var s = "";
-
-        if (flags & PF_R)
-          s = s + "R,";
-        if (flags & PF_W)
-          s = s + "W,";
-        if (flags & PF_X)
-          s = s + "X,";
-        if (flags & PF_MASKOS)
-          /* XXX call os-specific printer in elf-OS.pk */
-          ;
-        if (flags & PF_MASKPROC)
-          /* XXX call arch-specific printer in elf-ARCH.pk */
-          ;
-
-        print "#<" + rtrim (s, ",") + ">";
-      }
-  };
-
-/* Encoding of the ELF file.  */
-
-var ELFDATANONE = 0,
-    ELFDATA2LSB = 1,
-    ELFDATA2MSB = 2;
-
-/* ELF hash table.  */
-
-type Elf_Hash_Table =
-  struct
-  {
-    Elf_Word nbucket;
-    Elf_Word nchain;
-
-    Elf_Word[nbucket] bucket;
-    Elf_Word[nchain] chain;
-  };
-
-/* ELF notes.  */
-
-/* Note that the type below can be used for both ELF32 and ELF64
-   files.  The SYSV ABI says that 64-bit notes must be aligned to 8
-   bytes, but binutils is known to generate 64-bit notes aligned to 4
-   bytes instead.  */
-
-type Elf_Note =
-  struct
-  {
-    /* The first `namesz' bytes in `name' contain a NULL-terminated
-       character representation of the entry's owner or originator.  */
-    Elf_Word namesz;
-
-    /* The first `descsz' bytes in `desc' hold the note descriptor.
-       The ABI places no constraints on a descriptor's contents.  */
-    Elf_Word descsz;
-
-    /* This word gives the interpretation of the descriptor.  Each
-       originator controls its own types.  They must be non-negative.
-       The ABI does not define what descriptors mean.  */
-    Elf_Word _type;
-
-    byte[namesz] name;
-    byte[alignto (OFFSET, 4#B)];
-
-    byte[descsz] desc;
-    byte[alignto (OFFSET, 4#B)];
-};
-
-/* ELF identification struct.
-
-   This is the first component in the ELF header for both ELF32 and
-   ELF64.  */
-
-type Elf_Ident =
-  struct
-  {
-    byte[4] ei_mag == [0x7fUB, 'E', 'L', 'F'];
-    byte ei_class;
-    byte ei_data :
-        (ei_data == ELFDATA2LSB) ? set_endian (ENDIAN_LITTLE) : set_endian 
(ENDIAN_BIG);
-    byte ei_version;
-    byte ei_osabi;
-    byte ei_abiversion;
-    byte[6] ei_pad;
-    offset<byte,B> ei_nident;
-  };
diff --git a/pickles/elf.pk b/pickles/elf.pk
deleted file mode 100644
index 0351c961..00000000
--- a/pickles/elf.pk
+++ /dev/null
@@ -1,34 +0,0 @@
-/* elf.pk - ELF implementation for GNU poke.  */
-
-/* Copyright (C) 2019, 2020, 2021, 2022, 2023 Jose E. Marchesi.  */
-
-/* This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-/* This file contains a Poke description of the ELF (Executable and
- * Linking Format) object file format.  The ELF format is described in
- * the chapter 4 of the SysV ABI.
- *
- * Both ELF32 and ELF64 are supported.
- *
- * In general, we use the same field names used in the C structs
- * documented in the gABI, that are also used in the widely used ELF
- * implementations like in the GNU binutils and also in elfutils.
- * This makes life easier for system hackers who are already familiar
- * with these names.
- */
-
-load "elf-common.pk";
-load "elf-32.pk";
-load "elf-64.pk";
diff --git a/pickles/sframe.pk b/pickles/sframe.pk
index c7acd8ec..a251b818 100644
--- a/pickles/sframe.pk
+++ b/pickles/sframe.pk
@@ -31,8 +31,6 @@
      - libsframe/doc/sframe-spec.texi.
 */
 
-load elf;
-
 /* SFrame format versions.  */
 var SFRAME_VERSION_1 = 1;
 /* SFrame magic number.  */
diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am
index 2fcb7bb6..1ba2f989 100644
--- a/testsuite/Makefile.am
+++ b/testsuite/Makefile.am
@@ -592,8 +592,6 @@ EXTRA_DIST = \
   poke.pickles/btf-ext-test.pk \
   poke.pickles/btf-test.pk \
   poke.pickles/coff-test.pk \
-  poke.pickles/ctf-test.pk \
-  poke.pickles/dwarf-test.pk \
   poke.pickles/id3v2-test.pk \
   poke.pickles/jffs-test.pk \
   poke.pickles/leb128-test.pk \
@@ -607,7 +605,6 @@ EXTRA_DIST = \
   poke.pickles/mbr-test.pk \
   poke.pickles/id3v1-test.pk \
   poke.pickles/rgb24-test.pk \
-  poke.pickles/elf-test.pk \
   poke.pickles/uuid-test.pk \
   poke.pickles/redoxfs-test.pk \
   poke.pickles/pcap-test.pk \
diff --git a/testsuite/poke.pickles/ctf-test.pk 
b/testsuite/poke.pickles/ctf-test.pk
deleted file mode 100644
index 89b85984..00000000
--- a/testsuite/poke.pickles/ctf-test.pk
+++ /dev/null
@@ -1,28 +0,0 @@
-/* ctf-test.pk - Tests for the CTF pickle.  */
-
-/* Copyright (C) 2022, 2023 Jose E. Marchesi.  */
-
-/* This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-load pktest;
-load ctf;
-
-var tests = [
-  PkTest {
-    name = "load ctf pickle",
-  },];
-
-var ok = pktest_run (tests);
-exit (ok ? 0 : 1);
diff --git a/testsuite/poke.pickles/dwarf-test.pk 
b/testsuite/poke.pickles/dwarf-test.pk
deleted file mode 100644
index 4ea57e75..00000000
--- a/testsuite/poke.pickles/dwarf-test.pk
+++ /dev/null
@@ -1,28 +0,0 @@
-/* dwarf-test.pk - Tests for the DWARF pickle.  */
-
-/* Copyright (C) 2022, 2023 Jose E. Marchesi.  */
-
-/* This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-load pktest;
-load dwarf;
-
-var tests = [
-  PkTest {
-    name = "load dwarf pickle",
-  },];
-
-var ok = pktest_run (tests);
-exit (ok ? 0 : 1);
diff --git a/testsuite/poke.pickles/elf-test.pk 
b/testsuite/poke.pickles/elf-test.pk
deleted file mode 100644
index e06f30eb..00000000
--- a/testsuite/poke.pickles/elf-test.pk
+++ /dev/null
@@ -1,28 +0,0 @@
-/* elf-test.pk - Tests for the ELF pickle.  */
-
-/* Copyright (C) 2022, 2023 Jose E. Marchesi.  */
-
-/* This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-load pktest;
-load elf;
-
-var tests = [
-  PkTest {
-    name = "load elf pickle",
-  },];
-
-var ok = pktest_run (tests);
-exit (ok ? 0 : 1);
-- 
2.30.2




reply via email to

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