]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
libctf: we do in fact support foreign-endian old versions
authorNick Alcock <nick.alcock@oracle.com>
Fri, 5 Jul 2024 14:53:14 +0000 (15:53 +0100)
committerNick Alcock <nick.alcock@oracle.com>
Wed, 31 Jul 2024 20:02:04 +0000 (21:02 +0100)
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.

libctf/ctf-open.c

index 2ae0a696c3ab50f47f06530a1ad88067ee17bc47..fd6d36edc46eb3a58cae504dd3844a8afa722fff 100644 (file)
@@ -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));
     }