From: Nick Alcock Date: Fri, 5 Jul 2024 14:53:14 +0000 (+0100) Subject: libctf: we do in fact support foreign-endian old versions X-Git-Tag: gdb-16-branchpoint~1276 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=95861bb39663bd69e8dd9cbf0fe82b03b8634d94;p=thirdparty%2Fbinutils-gdb.git libctf: we do in fact support foreign-endian old versions The worry that caused this to not be supported was because we don't bother endian-flipping version-related fields before checking them. But they're all unsigned chars anyway, and don't need any flipping at all. This should be supported and should already work. Enable it. libctf/ * ctf-open.c (ctf_bufopen): Don't prohibit foreign-endian upgrades. --- diff --git a/libctf/ctf-open.c b/libctf/ctf-open.c index 2ae0a696c3a..fd6d36edc46 100644 --- a/libctf/ctf-open.c +++ b/libctf/ctf-open.c @@ -1474,18 +1474,12 @@ ctf_bufopen (const ctf_sect_t *ctfsect, const ctf_sect_t *symsect, First, we validate the preamble (common to all versions). At that point, we know the endianness and specific header version, and can validate the - version-specific parts including section offsets and alignments. - - We specifically do not support foreign-endian old versions. */ + version-specific parts including section offsets and alignments. */ if (_libctf_unlikely_ (pp->ctp_magic != CTF_MAGIC)) { if (pp->ctp_magic == bswap_16 (CTF_MAGIC)) - { - if (pp->ctp_version != CTF_VERSION_3) - return (ctf_set_open_errno (errp, ECTF_CTFVERS)); - foreign_endian = 1; - } + foreign_endian = 1; else return (ctf_set_open_errno (errp, ECTF_NOCTFBUF)); }