From 17d1594bfe08f3c768e024b180816cbe37ac08ac Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Thu, 28 May 2020 08:16:58 +0200 Subject: gcov-tool: Flexible endian adjustment for merging coverage data gcc/ChangeLog: 2020-05-27 Dong JianQiang PR gcov-profile/95332 * gcov-io.c (gcov_var::endian): Move field. (from_file): Add IN_GCOV_TOOL check. * gcov-io.h (gcov_magic): Ditto. libgcc/ChangeLog: 2020-05-27 Dong JianQiang PR gcov-profile/95332 * libgcov-util.c (read_gcda_file): Call gcov_magic. * libgcov.h (gcov_magic): Disable GCC poison. --- gcc/gcov-io.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'gcc/gcov-io.c') diff --git a/gcc/gcov-io.c b/gcc/gcov-io.c index 213c413..ac60f9b 100644 --- a/gcc/gcov-io.c +++ b/gcc/gcov-io.c @@ -48,6 +48,7 @@ struct gcov_var unsigned overread; /* Number of words overread. */ int error; /* < 0 overflow, > 0 disk error. */ int mode; /* < 0 writing, > 0 reading */ + int endian; /* Swap endianness. */ #if IN_LIBGCOV /* Holds one block plus 4 bytes, thus all coverage reads & writes fit within this buffer and we always can transfer GCOV_BLOCK_SIZE @@ -55,7 +56,6 @@ struct gcov_var or 8 byte objects. */ gcov_unsigned_t buffer[GCOV_BLOCK_SIZE + 1]; #else - int endian; /* Swap endianness. */ /* Holds a variable length block, as the compiler can write strings and needs to backtrack. */ size_t alloc; @@ -100,7 +100,7 @@ gcov_rewrite (void) static inline gcov_unsigned_t from_file (gcov_unsigned_t value) { -#if !IN_LIBGCOV +#if !IN_LIBGCOV || defined (IN_GCOV_TOOL) if (gcov_var.endian) { value = (value >> 16) | (value << 16); @@ -222,7 +222,7 @@ gcov_close (void) return gcov_var.error; } -#if !IN_LIBGCOV +#if !IN_LIBGCOV || defined (IN_GCOV_TOOL) /* Check if MAGIC is EXPECTED. Use it to determine endianness of the file. Returns +1 for same endian, -1 for other endian and zero for not EXPECTED. */ -- cgit v1.1