forked from Imagelibrary/binutils-gdb
libctf, binutils: fix big-endian libctf archive opening
The recent commit "libctf, binutils: support CTF archives like objdump" broke opening of CTF archives on big-endian platforms. This didn't affect anyone much before now because the linker never emitted CTF archives because it wasn't detecting ambiguous types properly: now it does, and this bug becomes obvious. Fix trivial. libctf/ * ctf-archive.c (ctf_arc_bufopen): Endian-swap the archive magic number if needed.
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
|
||||||
|
|
||||||
|
* ctf-archive.c (ctf_arc_bufopen): Endian-swap the archive magic
|
||||||
|
number if needed.
|
||||||
|
|
||||||
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
|
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
|
||||||
|
|
||||||
* ctf-impl.h (ctf_list_splice): New.
|
* ctf-impl.h (ctf_list_splice): New.
|
||||||
|
|||||||
@@ -386,7 +386,7 @@ ctf_arc_bufopen (const ctf_sect_t *ctfsect, const ctf_sect_t *symsect,
|
|||||||
ctf_file_t *fp = NULL;
|
ctf_file_t *fp = NULL;
|
||||||
|
|
||||||
if (ctfsect->cts_size > sizeof (uint64_t) &&
|
if (ctfsect->cts_size > sizeof (uint64_t) &&
|
||||||
((*(uint64_t *) ctfsect->cts_data) == CTFA_MAGIC))
|
(le64toh ((*(uint64_t *) ctfsect->cts_data)) == CTFA_MAGIC))
|
||||||
{
|
{
|
||||||
/* The archive is mmappable, so this operation is trivial.
|
/* The archive is mmappable, so this operation is trivial.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user