forked from Imagelibrary/binutils-gdb
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.
This commit is contained in:
@@ -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,
|
First, we validate the preamble (common to all versions). At that point,
|
||||||
we know the endianness and specific header version, and can validate the
|
we know the endianness and specific header version, and can validate the
|
||||||
version-specific parts including section offsets and alignments.
|
version-specific parts including section offsets and alignments. */
|
||||||
|
|
||||||
We specifically do not support foreign-endian old versions. */
|
|
||||||
|
|
||||||
if (_libctf_unlikely_ (pp->ctp_magic != CTF_MAGIC))
|
if (_libctf_unlikely_ (pp->ctp_magic != CTF_MAGIC))
|
||||||
{
|
{
|
||||||
if (pp->ctp_magic == bswap_16 (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
|
else
|
||||||
return (ctf_set_open_errno (errp, ECTF_NOCTFBUF));
|
return (ctf_set_open_errno (errp, ECTF_NOCTFBUF));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user