summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2023-06-13 13:03:11 -0400
committerDavid Goulet <dgoulet@torproject.org>2023-06-13 13:03:11 -0400
commitd5306e107fcd8b3aba64444f3788b48e210cada0 (patch)
tree24082a963e5934117594f979ef2cefe15778b893
parenta91315f931e5c835f2551fb7f4ee9219bc86be1c (diff)
parentcfbf74352fece087f1080d87f939b226c3cf205b (diff)
downloadtor-d5306e107fcd8b3aba64444f3788b48e210cada0.tar.gz
tor-d5306e107fcd8b3aba64444f3788b48e210cada0.zip
Merge branch 'tor-gitlab/mr/715'
-rw-r--r--changes/ticket408003
-rw-r--r--src/ext/equix/CMakeLists.txt18
-rw-r--r--src/ext/equix/hashx/CMakeLists.txt8
-rw-r--r--src/ext/equix/hashx/src/compiler_a64.c2
-rw-r--r--src/ext/equix/src/equix.c7
-rw-r--r--src/ext/equix/src/solver.c15
6 files changed, 27 insertions, 26 deletions
diff --git a/changes/ticket40800 b/changes/ticket40800
new file mode 100644
index 0000000000..e2ebc80ee8
--- /dev/null
+++ b/changes/ticket40800
@@ -0,0 +1,3 @@
+ o Minor feature (hs):
+ - Fix compiler warnings in equix and hashx when building with clang.
+ Closes ticket 40800.
diff --git a/src/ext/equix/CMakeLists.txt b/src/ext/equix/CMakeLists.txt
index 032989d804..3c4606566f 100644
--- a/src/ext/equix/CMakeLists.txt
+++ b/src/ext/equix/CMakeLists.txt
@@ -24,13 +24,14 @@ if(NOT CMAKE_BUILD_TYPE)
message(STATUS "Setting default build type: ${CMAKE_BUILD_TYPE}")
endif()
-add_library(equix SHARED ${equix_sources})
-set_property(TARGET equix PROPERTY POSITION_INDEPENDENT_CODE ON)
-set_property(TARGET equix PROPERTY PUBLIC_HEADER include/equix.h)
-include_directories(equix
+include_directories(
include/
hashx/include/
hashx/src/)
+
+add_library(equix SHARED ${equix_sources})
+set_property(TARGET equix PROPERTY POSITION_INDEPENDENT_CODE ON)
+set_property(TARGET equix PROPERTY PUBLIC_HEADER include/equix.h)
target_compile_definitions(equix PRIVATE HASHX_STATIC)
target_compile_definitions(equix PRIVATE EQUIX_SHARED)
target_link_libraries(equix
@@ -43,10 +44,6 @@ set_property(TARGET equix_static PROPERTY POSITION_INDEPENDENT_CODE ON)
set_target_properties(equix_static PROPERTIES OUTPUT_NAME equix)
target_compile_definitions(equix_static PRIVATE HASHX_STATIC)
target_compile_definitions(equix_static PRIVATE EQUIX_STATIC)
-include_directories(equix_static
- include/
- hashx/include/
- hashx/src/)
target_link_libraries(equix_static
PRIVATE hashx_static)
@@ -58,8 +55,6 @@ install(TARGETS equix equix_static
add_executable(equix-tests
src/tests.c)
-include_directories(equix-tests
- include/)
target_compile_definitions(equix-tests PRIVATE EQUIX_STATIC)
target_link_libraries(equix-tests
PRIVATE equix_static)
@@ -73,9 +68,6 @@ add_executable(equix-bench
src/bench.c
hashx/src/hashx_thread.c
hashx/src/hashx_time.c)
-include_directories(equix-bench
- include/
- hashx/src/)
target_compile_definitions(equix-bench PRIVATE EQUIX_STATIC)
target_link_libraries(equix-bench
PRIVATE equix_static
diff --git a/src/ext/equix/hashx/CMakeLists.txt b/src/ext/equix/hashx/CMakeLists.txt
index 742a5a8523..1e8fe2fd6c 100644
--- a/src/ext/equix/hashx/CMakeLists.txt
+++ b/src/ext/equix/hashx/CMakeLists.txt
@@ -55,11 +55,11 @@ if(HASHX_SALT)
endif()
endif()
+include_directories(include/)
+
add_library(hashx SHARED ${hashx_sources})
set_property(TARGET hashx PROPERTY POSITION_INDEPENDENT_CODE ON)
set_property(TARGET hashx PROPERTY PUBLIC_HEADER include/hashx.h)
-include_directories(hashx
- include/)
target_compile_definitions(hashx PRIVATE HASHX_SHARED)
set_target_properties(hashx PROPERTIES VERSION ${HASHX_VERSION_STR}
SOVERSION ${HASHX_VERSION})
@@ -76,8 +76,6 @@ install(TARGETS hashx hashx_static
add_executable(hashx-tests
src/tests.c)
-include_directories(hashx-tests
- include/)
target_compile_definitions(hashx-tests PRIVATE HASHX_STATIC)
target_link_libraries(hashx-tests
PRIVATE hashx_static)
@@ -91,8 +89,6 @@ add_executable(hashx-bench
src/bench.c
src/hashx_thread.c
src/hashx_time.c)
-include_directories(hashx-bench
- include/)
target_compile_definitions(hashx-bench PRIVATE HASHX_STATIC)
target_link_libraries(hashx-bench
PRIVATE hashx_static
diff --git a/src/ext/equix/hashx/src/compiler_a64.c b/src/ext/equix/hashx/src/compiler_a64.c
index 94635ad1b7..1b7081f537 100644
--- a/src/ext/equix/hashx/src/compiler_a64.c
+++ b/src/ext/equix/hashx/src/compiler_a64.c
@@ -149,7 +149,7 @@ bool hashx_compile_a64(const hashx_program* program, uint8_t* code) {
if (!hashx_vm_rx(code, COMP_CODE_SIZE))
return false;
#ifdef __GNUC__
- __builtin___clear_cache(code, pos);
+ __builtin___clear_cache((void*)code, (void*)pos);
#endif
return true;
}
diff --git a/src/ext/equix/src/equix.c b/src/ext/equix/src/equix.c
index a254261509..5511201695 100644
--- a/src/ext/equix/src/equix.c
+++ b/src/ext/equix/src/equix.c
@@ -28,8 +28,11 @@ static uint64_t sum_pair(hashx_ctx* hash_func, equix_idx left, equix_idx right)
uint8_t hash_right[HASHX_SIZE];
hashx_result r_left = hashx_exec(hash_func, left, hash_left);
hashx_result r_right = hashx_exec(hash_func, right, hash_right);
- assert(r_left == HASHX_OK && r_right == HASHX_OK);
- return load64(hash_left) + load64(hash_right);
+ if (r_left == HASHX_OK && r_right == HASHX_OK) {
+ return load64(hash_left) + load64(hash_right);
+ }
+ assert(false);
+ return ~(uint64_t)0;
}
static equix_result verify_internal(hashx_ctx* hash_func, const equix_solution* solution) {
diff --git a/src/ext/equix/src/solver.c b/src/ext/equix/src/solver.c
index 1beda06c74..618c6e1130 100644
--- a/src/ext/equix/src/solver.c
+++ b/src/ext/equix/src/solver.c
@@ -47,11 +47,16 @@ typedef stage1_idx_item s1_idx;
typedef stage2_idx_item s2_idx;
typedef stage3_idx_item s3_idx;
-static FORCE_INLINE uint64_t hash_value(hashx_ctx* hash_func, equix_idx index) {
+static FORCE_INLINE bool hash_value(hashx_ctx* hash_func, equix_idx index, uint64_t *value_out) {
char hash[HASHX_SIZE];
hashx_result result = hashx_exec(hash_func, index, hash);
- assert(result == HASHX_OK);
- return load64(hash);
+ if (result == HASHX_OK) {
+ *value_out = load64(hash);
+ return true;
+ } else {
+ assert(false);
+ return false;
+ }
}
static void build_solution_stage1(equix_idx* output, solver_heap* heap, s2_idx root) {
@@ -97,7 +102,9 @@ static void build_solution(equix_solution* solution, solver_heap* heap, s3_idx l
static void solve_stage0(hashx_ctx* hash_func, solver_heap* heap) {
CLEAR(heap->stage1_indices.counts);
for (u32 i = 0; i < INDEX_SPACE; ++i) {
- uint64_t value = hash_value(hash_func, i);
+ uint64_t value;
+ if (!hash_value(hash_func, i, &value))
+ break;
u32 bucket_idx = value % NUM_COARSE_BUCKETS;
u32 item_idx = STAGE1_SIZE(bucket_idx);
if (item_idx >= COARSE_BUCKET_ITEMS)