[all-commits] [llvm/llvm-project] 26df43: [BPF] fix print_btf.py test script on bigendian ma...
eddyz87 via All-commits
all-commits at lists.llvm.org
Sat Sep 28 22:59:18 PDT 2024
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 26df43faebaded77d694161fbdc79d81ad5d5f1c
https://github.com/llvm/llvm-project/commit/26df43faebaded77d694161fbdc79d81ad5d5f1c
Author: eddyz87 <eddyz87 at gmail.com>
Date: 2024-09-29 (Sun, 29 Sep 2024)
Changed paths:
M llvm/test/CodeGen/BPF/BTF/print_btf.py
Log Message:
-----------
[BPF] fix print_btf.py test script on bigendian machines (#110332)
Make print_btf.py correctly detect endianness of the BTF input. Input
endianness is inferred from BTF magic word [2], which is a 2-byte
integer at offset 0 of the input:
- sequence `EB 9F` signals big-endian input;
- sequence `9F EB` signals little-endian input.
Before this commit the magic sequence was read using "H" format for
`unpack` method of python's `struct` module:
- if magic is `0xEB9F` assume little-endian;
- if magic is `0x9FEB` assume big-endian.
However, format `H` reads data in native endianness.
Thus the above logic would only be correct on little endian hosts:
- byte sequence `9F EB` read as `0xEB9F` -> little-endian input;
- byte sequence `EB 9F` read as `0x9FEB` -> big-endian input.
On the big-endian host the relation should be inverse.
Fix this by always reading magic in big-endian (format `>H`).
This fixes CI error reported for a BPF test using print_btf.py script in
[1]. The error happens on a s390 host, which is big-endian.
[1] https://lab.llvm.org/buildbot/#/builders/42/builds/1192
[2]
https://www.kernel.org/doc/html/latest/bpf/btf.html#btf-type-and-string-encoding
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list