Skip to content

Commit a0df2e5

Browse files
peffgitster
authored andcommitted
bswap: add NO_UNALIGNED_LOADS define
The byte-swapping code automatically decides, based on the platform, whether it is sensible to cast and do a potentially unaligned ntohl(), or to pick individual bytes out of an array. It can be handy to override this decision, though, when turning on compiler flags that will complain about unaligned loads (such as -fsanitize=undefined). This patch adds a macro check to make this possible. There's no nice Makefile knob here; this is for prodding at Git's internals, and anybody using it can set "-DNO_UNALIGNED_LOADS" in the same place they are setting up "-fsanitize". Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 9a93c66 commit a0df2e5

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

compat/bswap.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,11 +149,12 @@ static inline uint64_t git_bswap64(uint64_t x)
149149
* and is faster on architectures with memory alignment issues.
150150
*/
151151

152-
#if defined(__i386__) || defined(__x86_64__) || \
152+
#if !defined(NO_UNALIGNED_LOADS) && ( \
153+
defined(__i386__) || defined(__x86_64__) || \
153154
defined(_M_IX86) || defined(_M_X64) || \
154155
defined(__ppc__) || defined(__ppc64__) || \
155156
defined(__powerpc__) || defined(__powerpc64__) || \
156-
defined(__s390__) || defined(__s390x__)
157+
defined(__s390__) || defined(__s390x__))
157158

158159
#define get_be16(p) ntohs(*(unsigned short *)(p))
159160
#define get_be32(p) ntohl(*(unsigned int *)(p))

0 commit comments

Comments
 (0)