mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	lib/fst: Remove unaligned pointer access
This commit is contained in:
		
							parent
							
								
									f5c53a99e7
								
							
						
					
					
						commit
						212d2a6d6e
					
				
					 3 changed files with 44 additions and 20 deletions
				
			
		
							
								
								
									
										42
									
								
								libs/fst/00_PATCH_strict_alignment.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								libs/fst/00_PATCH_strict_alignment.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,42 @@ | ||||||
|  | diff --git a/fastlz.cc b/fastlz.cc
 | ||||||
|  | index 3272ca7a8..41ea27a16 100644
 | ||||||
|  | --- a/fastlz.cc
 | ||||||
|  | +++ b/fastlz.cc
 | ||||||
|  | @@ -60,24 +60,9 @@
 | ||||||
|  |  #endif | ||||||
|  |   | ||||||
|  |  /* | ||||||
|  | - * Prevent accessing more than 8-bit at once, except on x86 architectures.
 | ||||||
|  | + * Yosys patch: do not do unaligned accesses on any platform
 | ||||||
|  |   */ | ||||||
|  | -#if !defined(FASTLZ_STRICT_ALIGN)
 | ||||||
|  |  #define FASTLZ_STRICT_ALIGN | ||||||
|  | -#if defined(__i386__) || defined(__386)  /* GNU C, Sun Studio */
 | ||||||
|  | -#undef FASTLZ_STRICT_ALIGN
 | ||||||
|  | -#elif defined(__i486__) || defined(__i586__) || defined(__i686__) || defined(__amd64) /* GNU C */
 | ||||||
|  | -#undef FASTLZ_STRICT_ALIGN
 | ||||||
|  | -#elif defined(_M_IX86) /* Intel, MSVC */
 | ||||||
|  | -#undef FASTLZ_STRICT_ALIGN
 | ||||||
|  | -#elif defined(__386)
 | ||||||
|  | -#undef FASTLZ_STRICT_ALIGN
 | ||||||
|  | -#elif defined(_X86_) /* MinGW */
 | ||||||
|  | -#undef FASTLZ_STRICT_ALIGN
 | ||||||
|  | -#elif defined(__I86__) /* Digital Mars */
 | ||||||
|  | -#undef FASTLZ_STRICT_ALIGN
 | ||||||
|  | -#endif
 | ||||||
|  | -#endif
 | ||||||
|  |   | ||||||
|  |  /* prototypes */ | ||||||
|  |  int fastlz_compress(const void* input, int length, void* output); | ||||||
|  | @@ -88,11 +73,7 @@ int fastlz_decompress(const void* input, int length, void* output, int maxout);
 | ||||||
|  |  #define MAX_LEN       264  /* 256 + 8 */ | ||||||
|  |  #define MAX_DISTANCE 8192 | ||||||
|  |   | ||||||
|  | -#if !defined(FASTLZ_STRICT_ALIGN)
 | ||||||
|  | -#define FASTLZ_READU16(p) *((const flzuint16*)(p))
 | ||||||
|  | -#else
 | ||||||
|  |  #define FASTLZ_READU16(p) ((p)[0] | (p)[1]<<8) | ||||||
|  | -#endif
 | ||||||
|  |   | ||||||
|  |  #define HASH_LOG  13 | ||||||
|  |  #define HASH_SIZE (1<< HASH_LOG) | ||||||
|  | @ -17,3 +17,4 @@ sed -i -e 's,"fastlz.c","fastlz.cc",' *.cc *.h | ||||||
| 
 | 
 | ||||||
| patch -p0 < 00_PATCH_win_zlib.patch | patch -p0 < 00_PATCH_win_zlib.patch | ||||||
| patch -p0 < 00_PATCH_win_io.patch | patch -p0 < 00_PATCH_win_io.patch | ||||||
|  | patch -p1 < 00_PATCH_strict_alignment.patch | ||||||
|  |  | ||||||
|  | @ -60,24 +60,9 @@ | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * Prevent accessing more than 8-bit at once, except on x86 architectures. |  * Yosys patch: do not do unaligned accesses on any platform | ||||||
|  */ |  */ | ||||||
| #if !defined(FASTLZ_STRICT_ALIGN) |  | ||||||
| #define FASTLZ_STRICT_ALIGN | #define FASTLZ_STRICT_ALIGN | ||||||
| #if defined(__i386__) || defined(__386)  /* GNU C, Sun Studio */ |  | ||||||
| #undef FASTLZ_STRICT_ALIGN |  | ||||||
| #elif defined(__i486__) || defined(__i586__) || defined(__i686__) || defined(__amd64) /* GNU C */ |  | ||||||
| #undef FASTLZ_STRICT_ALIGN |  | ||||||
| #elif defined(_M_IX86) /* Intel, MSVC */ |  | ||||||
| #undef FASTLZ_STRICT_ALIGN |  | ||||||
| #elif defined(__386) |  | ||||||
| #undef FASTLZ_STRICT_ALIGN |  | ||||||
| #elif defined(_X86_) /* MinGW */ |  | ||||||
| #undef FASTLZ_STRICT_ALIGN |  | ||||||
| #elif defined(__I86__) /* Digital Mars */ |  | ||||||
| #undef FASTLZ_STRICT_ALIGN |  | ||||||
| #endif |  | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| /* prototypes */ | /* prototypes */ | ||||||
| int fastlz_compress(const void* input, int length, void* output); | int fastlz_compress(const void* input, int length, void* output); | ||||||
|  | @ -88,11 +73,7 @@ int fastlz_decompress(const void* input, int length, void* output, int maxout); | ||||||
| #define MAX_LEN       264  /* 256 + 8 */ | #define MAX_LEN       264  /* 256 + 8 */ | ||||||
| #define MAX_DISTANCE 8192 | #define MAX_DISTANCE 8192 | ||||||
| 
 | 
 | ||||||
| #if !defined(FASTLZ_STRICT_ALIGN) |  | ||||||
| #define FASTLZ_READU16(p) *((const flzuint16*)(p)) |  | ||||||
| #else |  | ||||||
| #define FASTLZ_READU16(p) ((p)[0] | (p)[1]<<8) | #define FASTLZ_READU16(p) ((p)[0] | (p)[1]<<8) | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| #define HASH_LOG  13 | #define HASH_LOG  13 | ||||||
| #define HASH_SIZE (1<< HASH_LOG) | #define HASH_SIZE (1<< HASH_LOG) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue