mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Mark Keccak functions that contain expected misaligned accesses.
To avoid undefined behavior warnings for those accesses.
This commit is contained in:
parent
ff69a8a789
commit
dc85be5456
2 changed files with 22 additions and 0 deletions
|
@ -17,6 +17,14 @@ http://creativecommons.org/publicdomain/zero/1.0/
|
||||||
#include "brg_endian.h"
|
#include "brg_endian.h"
|
||||||
#include "KeccakP-1600-SnP.h"
|
#include "KeccakP-1600-SnP.h"
|
||||||
#include "SnP-Relaned.h"
|
#include "SnP-Relaned.h"
|
||||||
|
#ifdef __has_feature
|
||||||
|
# if __has_feature(undefined_behavior_sanitizer)
|
||||||
|
# define ALLOW_MISALIGNED_ACCESS __attribute__((no_sanitize("alignment")))
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#ifndef ALLOW_MISALIGNED_ACCESS
|
||||||
|
# define ALLOW_MISALIGNED_ACCESS
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef unsigned char UINT8;
|
typedef unsigned char UINT8;
|
||||||
typedef unsigned int UINT32;
|
typedef unsigned int UINT32;
|
||||||
|
@ -162,6 +170,7 @@ void KeccakP1600_AddBytesInLane(void *state, unsigned int lanePosition, const un
|
||||||
|
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
ALLOW_MISALIGNED_ACCESS
|
||||||
void KeccakP1600_AddLanes(void *state, const unsigned char *data, unsigned int laneCount)
|
void KeccakP1600_AddLanes(void *state, const unsigned char *data, unsigned int laneCount)
|
||||||
{
|
{
|
||||||
#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
|
#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
|
||||||
|
@ -217,6 +226,7 @@ void KeccakP1600_OverwriteBytesInLane(void *state, unsigned int lanePosition, co
|
||||||
|
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
ALLOW_MISALIGNED_ACCESS
|
||||||
void KeccakP1600_OverwriteLanes(void *state, const unsigned char *data, unsigned int laneCount)
|
void KeccakP1600_OverwriteLanes(void *state, const unsigned char *data, unsigned int laneCount)
|
||||||
{
|
{
|
||||||
#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
|
#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
|
||||||
|
@ -304,6 +314,7 @@ void KeccakP1600_ExtractBytesInLane(const void *state, unsigned int lanePosition
|
||||||
|
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
ALLOW_MISALIGNED_ACCESS
|
||||||
void KeccakP1600_ExtractLanes(const void *state, unsigned char *data, unsigned int laneCount)
|
void KeccakP1600_ExtractLanes(const void *state, unsigned char *data, unsigned int laneCount)
|
||||||
{
|
{
|
||||||
#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
|
#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
|
||||||
|
@ -378,6 +389,7 @@ void KeccakP1600_ExtractAndAddBytesInLane(const void *state, unsigned int lanePo
|
||||||
|
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
ALLOW_MISALIGNED_ACCESS
|
||||||
void KeccakP1600_ExtractAndAddLanes(const void *state, const unsigned char *input, unsigned char *output, unsigned int laneCount)
|
void KeccakP1600_ExtractAndAddLanes(const void *state, const unsigned char *input, unsigned char *output, unsigned int laneCount)
|
||||||
{
|
{
|
||||||
#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
|
#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
|
||||||
|
|
|
@ -17,6 +17,14 @@ http://creativecommons.org/publicdomain/zero/1.0/
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "brg_endian.h"
|
#include "brg_endian.h"
|
||||||
#include "KeccakP-1600-opt64-config.h"
|
#include "KeccakP-1600-opt64-config.h"
|
||||||
|
#ifdef __has_feature
|
||||||
|
# if __has_feature(undefined_behavior_sanitizer)
|
||||||
|
# define ALLOW_MISALIGNED_ACCESS __attribute__((no_sanitize("alignment")))
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#ifndef ALLOW_MISALIGNED_ACCESS
|
||||||
|
# define ALLOW_MISALIGNED_ACCESS
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef unsigned char UINT8;
|
typedef unsigned char UINT8;
|
||||||
typedef unsigned long long int UINT64;
|
typedef unsigned long long int UINT64;
|
||||||
|
@ -114,6 +122,7 @@ void KeccakP1600_AddBytesInLane(void *state, unsigned int lanePosition, const un
|
||||||
|
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
ALLOW_MISALIGNED_ACCESS
|
||||||
void KeccakP1600_AddLanes(void *state, const unsigned char *data, unsigned int laneCount)
|
void KeccakP1600_AddLanes(void *state, const unsigned char *data, unsigned int laneCount)
|
||||||
{
|
{
|
||||||
#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
|
#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
|
||||||
|
@ -462,6 +471,7 @@ void KeccakP1600_ExtractAndAddBytes(const void *state, const unsigned char *inpu
|
||||||
|
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
ALLOW_MISALIGNED_ACCESS
|
||||||
size_t KeccakF1600_FastLoop_Absorb(void *state, unsigned int laneCount, const unsigned char *data, size_t dataByteLen)
|
size_t KeccakF1600_FastLoop_Absorb(void *state, unsigned int laneCount, const unsigned char *data, size_t dataByteLen)
|
||||||
{
|
{
|
||||||
size_t originalDataByteLen = dataByteLen;
|
size_t originalDataByteLen = dataByteLen;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue