poke-devel
[Top][All Lists]
Advanced

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

[COMMITTED] elf-mach-mips: add values for l_flags


From: Jose E. Marchesi
Subject: [COMMITTED] elf-mach-mips: add values for l_flags
Date: Sun, 29 Jan 2023 23:37:29 +0100
User-agent: Gnus/5.13 (Gnus v5.13)

---
 elf-mach-mips.pk | 31 ++++++++++++++++++++++++++++++-
 poke-elf.texi    |  9 +++++++++
 2 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/elf-mach-mips.pk b/elf-mach-mips.pk
index 9f28ba4..33cf393 100644
--- a/elf-mach-mips.pk
+++ b/elf-mach-mips.pk
@@ -508,6 +508,30 @@ elf_config.add_enum
             Elf_Config_UInt { value = ELF_SHT_MIPS_XHASH, name = "XHASH",
                               doc = "GNU style symbol hash table with xlat." 
}];
 
+/* Values for the l_flags field of an Elf32_MIPS_Lib.  */
+
+var ELF_MIPS_LL_EXACT_MATCH = 0x0000_0001U,
+    ELF_MIPS_LL_IGNORE_INT_VER = 0x0000_0002U,
+    ELF_MIPS_LL_REQUIRE_MINOR = 0x0000_0004U,
+    ELF_MIPS_LL_EXPORTS = 0x0000_0008U,
+    ELF_MIPS_LL_DELAY_LOAD = 0x0000_0010U,
+    ELF_MIPS_LL_DELTA = 0x0000_0020U;
+
+elf_config.add_mask
+  :machine ELF_EM_MIPS
+  :class "mips-l-flags"
+  :entries [Elf_Config_Mask { value = ELF_MIPS_LL_EXACT_MATCH, name = 
"exact-match",
+                              doc = "Require an exact match at runtime." },
+            Elf_Config_Mask { value = ELF_MIPS_LL_IGNORE_INT_VER, name = 
"ignore-int-ver",
+                              doc = "Ignore version incompatibilities at 
runtime." },
+            Elf_Config_Mask { value = ELF_MIPS_LL_REQUIRE_MINOR, name = 
"require-minor",
+                              doc = "Require matching minor version number." },
+            Elf_Config_Mask { value = ELF_MIPS_LL_EXPORTS, name = "exports" },
+            Elf_Config_Mask { value = ELF_MIPS_LL_DELAY_LOAD, name = 
"delay-load",
+                              doc = "Delay loading of this library until 
really needed." },
+            Elf_Config_Mask { value = ELF_MIPS_LL_DELTA, name = "delta",
+                              doc = "Delta C++ stuff???" }];
+
 /* Sections of type SHT_MIPS_LIBLIST contain an array of the following
    structure.  The sh_link field is the section index of the string table.
    The sh_info field is the number of entries in the section.  */
@@ -523,5 +547,10 @@ type Elf32_MIPS_Lib =
     /* String table index for version.  */
     uint<32> l_version;
     /* Flags.  */
-    uint<32> l_flags;
+    uint<32> l_flags : elf_config.check_mask ("mips-l-flags", ELF_EM_MIPS, 
l_flags);
+
+    method _print_l_flags = void:
+    {
+      printf "#<%s>", elf_config.format_mask ("mips-l-flags", ELF_EM_MIPS, 
l_flags);
+    }
   };
diff --git a/poke-elf.texi b/poke-elf.texi
index 4e30e4a..4013ceb 100644
--- a/poke-elf.texi
+++ b/poke-elf.texi
@@ -643,6 +643,15 @@ Valid values in the @code{ELF_EF_MIPS_ARCH} bits of 
@code{eflags} in
 MIPS machines.
 @end table
 
+@noindent
+The architecture-specific mask configuration parameters used by this
+pickle are:
+
+@table @code
+@item mips-l-flags
+Valid bits in @code{l_flags} fields.
+@end table
+
 @section Getting printed representations of configuration parameters
 
 The @code{format_enum} and @code{format_mask} methods of
-- 
2.30.2




reply via email to

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