[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] pickles: btf: improve magic num endianness logic
From: |
David Faust |
Subject: |
[PATCH] pickles: btf: improve magic num endianness logic |
Date: |
Tue, 4 Jan 2022 14:25:39 -0800 |
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.
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. */
--
2.34.1
- [PATCH] pickles: btf: improve magic num endianness logic,
David Faust <=