On Fri, 25 Oct 2019 05:01:17 +0000, Andrii Nakryiko wrote: > >> +static bool is_btf_raw(const char *file) > >> +{ > >> + __u16 magic = 0; > >> + int fd; > >> + > >> + fd = open(file, O_RDONLY); > >> + if (fd < 0) > >> + return false; > >> + > >> + read(fd, &magic, sizeof(magic)); > >> + close(fd); > >> + return magic == BTF_MAGIC; > > > > Isn't it suspicious to read() 2 bytes into an u16 and compare to a > > constant like endianness doesn't matter? Quick grep doesn't reveal > > BTF_MAGIC being endian-aware.. > > Right now we support only loading BTF in native endianness, so I think > this should do. If we ever add ability to load non-native endianness, > then we'll have to adjust this. This doesn't do native endianness, this does LE-only. It will not work on BE machines.