poke-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] pickles: btf: improve magic num endianness logic


From: David Faust
Subject: Re: [PATCH] pickles: btf: improve magic num endianness logic
Date: Tue, 4 Jan 2022 14:55:52 -0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.3.0

On 1/4/22 14:48, Jose E. Marchesi wrote:

Hi David.

The magic number should always read as 0xeb9f (like eBPF). When mapping
a BTF_Header, if 0x9feb is read instead then the current endianness is
simply the opposite that of the BTF information.

This fixes an issue where attempting to map a little-endian BTF_Header
while in big-endian mode, the endianness would not correctly be
changed.

OK for both master and maint/poke-1.
Thanks.

Pushed to both. Thanks.



2022-01-04  David Faust  <david.faust@oracle.com>

        * pickles/btf.pk (BTF_Header): Adjust constraint on magic number
        to properly set endianness as needed.
---
  ChangeLog      | 5 +++++
  pickles/btf.pk | 6 +++---
  2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b725a005..b889ab5e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2022-01-04  David Faust  <david.faust@oracle.com>
+
+       * pickles/btf.pk (BTF_Header): Adjust constraint on magic number
+       to properly set endianness as needed.
+
  2022-01-04  Jose E. Marchesi  <jemarch@gnu.org>
* libpoke/pkl-gen.c: Remove obsolete comments. The GEN contexts
diff --git a/pickles/btf.pk b/pickles/btf.pk
index 51110044..7b8cc0f5 100644
--- a/pickles/btf.pk
+++ b/pickles/btf.pk
@@ -199,9 +199,9 @@ type BTF_Type =
  type BTF_Header =
    struct
    {
-    uint<16> magic : ((magic == 0x9feb && set_endian (ENDIAN_BIG)
-                       || (magic == 0xeb9f && set_endian (ENDIAN_LITTLE))))
-                   = (get_endian == ENDIAN_BIG ? 0x9feb : 0xeb9f);
+    uint<16> magic : (magic == 0xeb9f)
+                       || (magic == 0x9feb && set_endian (!get_endian))
+                   = 0xeb9f;
      uint<8> version;
      uint<8> flags;
      offset<uint<32>,B> hdr_len; /* Size of this header.  */



reply via email to

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