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: Jose E. Marchesi
Subject: Re: [PATCH] pickles: btf: improve magic num endianness logic
Date: Tue, 04 Jan 2022 23:48:32 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

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.

>
> 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]