Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change definitions of LZ4_xxxSIZE defines for OS400 #1104

Merged
merged 1 commit into from
Jul 11, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
30 changes: 28 additions & 2 deletions lib/lz4.h
Original file line number Diff line number Diff line change
Expand Up @@ -631,8 +631,22 @@ typedef struct {
* Init this structure with LZ4_initStream() before first use.
* note : only use this definition in association with static linking !
* this definition is not API/ABI safe, and may change in future versions.
* Note : OS400 pointers are 16 bytes and the compiler adds 8 bytes of padding after
* tableType and 12 bytes after dictSize to ensure the structure is word aligned:
* |=========================================================
* | Offset | Length | Member Name
* |=========================================================
* | 0 | 16384 | hashTable[4096]
* | 16384 | 4 | currentOffset
* | 16388 | 4 | tableType
* | 16392 | 8 | ***PADDING***
* | 16400 | 16 | dictionary
* | 16416 | 16 | dictCtx
* | 16432 | 4 | dictSize
* | 16436 | 12 | ***PADDING***
* ==========================================================
*/
#define LZ4_STREAMSIZE ((1UL << LZ4_MEMORY_USAGE) + 32) /* static size, for inter-version compatibility */
#define LZ4_STREAMSIZE ((1UL << LZ4_MEMORY_USAGE) + ((sizeof(void*)==16) ? 64 : 32)) /* static size, for inter-version compatibility */
#define LZ4_STREAMSIZE_VOIDP (LZ4_STREAMSIZE / sizeof(void*))
union LZ4_stream_u {
void* table[LZ4_STREAMSIZE_VOIDP];
Expand Down Expand Up @@ -663,8 +677,20 @@ LZ4LIB_API LZ4_stream_t* LZ4_initStream (void* buffer, size_t size);
* note : only use in association with static linking !
* this definition is not API/ABI safe,
* and may change in a future version !
* Note : Same story as LZ4_STREAMSIZE for OS400 in terms of additional padding to
* ensure pointers start on and structures finish on 16 byte boundaries
* |=========================================================
* | Offset | Length | Member Name
* |=========================================================
* | 0 | 16 | externalDict
* | 16 | 4 | extDictSize
* | 20 | 12 | ***PADDING***
* | 32 | 16 | prefixEnd
* | 48 | 4 | prefixSize
* | 52 | 12 | ***PADDING***
* ==========================================================
*/
#define LZ4_STREAMDECODESIZE_U64 (4 + ((sizeof(void*)==16) ? 2 : 0) /*AS-400*/ )
#define LZ4_STREAMDECODESIZE_U64 (4 + ((sizeof(void*)==16) ? 4 : 0))
#define LZ4_STREAMDECODESIZE (LZ4_STREAMDECODESIZE_U64 * sizeof(unsigned long long))
union LZ4_streamDecode_u {
unsigned long long table[LZ4_STREAMDECODESIZE_U64];
Expand Down
20 changes: 19 additions & 1 deletion lib/lz4hc.h
Original file line number Diff line number Diff line change
Expand Up @@ -219,8 +219,26 @@ struct LZ4HC_CCtx_internal

/* Do not use these definitions directly !
* Declare or allocate an LZ4_streamHC_t instead.
* Note : OS400 uses 16 byte pointers and so the structure size is larger than other
* platforms
* |===========================================================
* | Offset | Length | Member Name
* |===========================================================
* | 0 | 131072 | hashTable[32768]
* | 131072 | 131072 | chainTable[65536]
* | 262144 | 16 | end
* | 262160 | 16 | base
* | 262176 | 16 | dictBase
* | 262192 | 4 | dictLimit
* | 262196 | 4 | lowLimit
* | 262200 | 4 | nextToUpdate
* | 262204 | 2 | compressionLevel
* | 262206 | 1 | favorDecSpeed
* | 262207 | 1 | dirty
* | 262208 | 16 | dictCtx
* ============================================================
*/
#define LZ4_STREAMHCSIZE 262200 /* static size, for inter-version compatibility */
#define LZ4_STREAMHCSIZE (262200 + ((sizeof(void*)==16) ? 24 : 0)) /* static size, for inter-version compatibility */
#define LZ4_STREAMHCSIZE_VOIDP (LZ4_STREAMHCSIZE / sizeof(void*))
union LZ4_streamHC_u {
void* table[LZ4_STREAMHCSIZE_VOIDP];
Expand Down