[PATCH 01/19] libctf: we do in fact support foreign-endian old versions

Nick Alcock nick.alcock@oracle.com
Tue Jul 30 15:36:49 GMT 2024


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 | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

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));
     }
-- 
2.45.2.276.g4ac82df17e



More information about the Binutils mailing list