GCC disallows creating arrays of variable size (and const int is a

variable as well). Fix that to fix build on powerpc64.

PR:		231736
Submitted by:	Piotr Kubaj
This commit is contained in:
Mark Linimon 2018-11-02 15:19:33 +00:00
parent 7a01d0ba75
commit 5f7fb9298e
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=483817
3 changed files with 66 additions and 0 deletions

View file

@ -0,0 +1,15 @@
--- Makefile.orig 2016-08-01 17:37:31 UTC
+++ Makefile
@@ -14,10 +14,10 @@ java:
sbt test
objecthash_test: libobjecthash.so
- $(CC) -std=c99 -Wall -Werror -o objecthash_test objecthash_test.c -lobjecthash -L. -Wl,-rpath -Wl,.
+ $(CC) ${CFLAGS} -std=c99 -Wall -Werror -o objecthash_test objecthash_test.c -lobjecthash -L. -Wl,-rpath -Wl,.
libobjecthash.so: objecthash.c
- $(CC) -fPIC -shared -std=c99 -Wall -Werror -o libobjecthash.so objecthash.c -lcrypto `pkg-config --libs --cflags icu-uc json-c`
+ $(CC) ${CFLAGS} -fPIC -shared -std=c99 -Wall -Werror -o libobjecthash.so objecthash.c -lcrypto `pkg-config --libs --cflags icu-uc json-c`
get:
GOPATH=`pwd` go get golang.org/x/text/unicode/norm

View file

@ -0,0 +1,38 @@
--- objecthash.c.orig 2018-09-25 21:01:54 UTC
+++ objecthash.c
@@ -13,7 +13,7 @@
#include "objecthash.h"
-bool object_hash(/*const*/ json_object *j, byte hash[HASH_SIZE]);
+bool object_hash(/*const*/ json_object *j, byte hash[SHA256_DIGEST_LENGTH]);
static void hash_update(hash_ctx * const c, const byte * const b,
const size_t l) {
@@ -45,7 +45,7 @@ static int dict_comp(const void *a, const void *b) {
return memcmp(a, b, 2 * sizeof(hash));
}
-static bool object_hash_str(const char *str, size_t len, byte hash[HASH_SIZE]) {
+static bool object_hash_str(const char *str, size_t len, byte hash[SHA256_DIGEST_LENGTH]) {
hash_bytes('u', (const byte *)str, len, hash);
return true;
}
@@ -147,7 +147,7 @@ static bool object_hash_list(json_object *l, hash h) {
int len = json_object_array_length(l);
for (int n = 0; n < len; ++n) {
- byte ihash[HASH_SIZE];
+ byte ihash[SHA256_DIGEST_LENGTH];
if (!object_hash(json_object_array_get_idx(l, n), ihash))
return false;
hash_update(&ctx, ihash, sizeof ihash);
@@ -157,7 +157,7 @@ static bool object_hash_list(json_object *l, hash h) {
return true;
}
-bool object_hash(/*const*/ json_object *j, byte hash[HASH_SIZE]) {
+bool object_hash(/*const*/ json_object *j, byte hash[SHA256_DIGEST_LENGTH]) {
enum json_type type;
type = json_object_get_type(j);
switch (type) {

View file

@ -0,0 +1,13 @@
--- objecthash.h.orig 2018-09-25 20:58:11 UTC
+++ objecthash.h
@@ -8,9 +8,7 @@ extern "C" {
typedef unsigned char byte;
-static const int HASH_SIZE = SHA256_DIGEST_LENGTH;
-
-typedef byte hash[HASH_SIZE];
+typedef byte hash[SHA256_DIGEST_LENGTH];
typedef SHA256_CTX hash_ctx;
bool python_json_hash(const char *json, hash h);