aboutsummaryrefslogtreecommitdiff
path: root/src/liblzma/common
diff options
context:
space:
mode:
authorSergey Kosukhin <sergey.kosukhin@mpimet.mpg.de>2024-03-13 13:07:13 +0100
committerLasse Collin <lasse.collin@tukaani.org>2024-03-15 17:30:50 +0200
commit096bc0e3f8fb4bfc4d2f3f64a7f219401ffb4c31 (patch)
treed1a6d0140dddc4fef50ce4ecf125fbcd47e5de9b /src/liblzma/common
parentCMake: Disable symbol versioning on non-glibc Linux. (diff)
downloadxz-096bc0e3f8fb4bfc4d2f3f64a7f219401ffb4c31.tar.xz
liblzma: Fix building with NVHPC (NVIDIA HPC SDK).
NVHPC compiler has several issues that make it impossible to build liblzma: - the compiler cannot handle unions that contain pointers that are not the first members; - the compiler cannot handle the assembler code in range_decoder.h (LZMA_RANGE_DECODER_CONFIG has to be set to zero); - the compiler fails to produce valid code for delta_decode if the vectorization is enabled, which results in failed tests. This introduces NVHPC-specific workarounds that address the issues.
Diffstat (limited to 'src/liblzma/common')
-rw-r--r--src/liblzma/common/string_conversion.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/liblzma/common/string_conversion.c b/src/liblzma/common/string_conversion.c
index 92d9032b..370857f0 100644
--- a/src/liblzma/common/string_conversion.c
+++ b/src/liblzma/common/string_conversion.c
@@ -217,12 +217,14 @@ typedef struct {
uint16_t offset;
union {
+// NVHPC has problems with unions that contain pointers that are not the first
+// members
+ const name_value_map *map;
+
struct {
uint32_t min;
uint32_t max;
} range;
-
- const name_value_map *map;
} u;
} option_map;