immunant / c2rust

Migrate C code to Rust
https://c2rust.com/
Other
3.79k stars 219 forks source link

FYI: fatal runtime error: Rust cannot catch foreign exceptions #1051

Open fr-an-k opened 6 months ago

fr-an-k commented 6 months ago

I'm trying c2rust on LibreDWG; it transpiles the first file (bits.c) just fine (into bits.rs), but then a foreign exception occurs without any further clue. I've used the cmake route without additional flags, on Ubuntu 22 WSL2.

I assume I have to solve it on my own, but maybe this rings a bell or maybe you have an idea what I can do to pinpoint the problem.

I understand the c2make project is in its early stages; it would be nice to have verbose logging to know what it's about to do.

``` git clone https://github.com/LibreDWG/libredwg.git cd libredwg cargo install c2rust mkdir .build-c2rust cd .build-c2rust cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 .. c2rust transpile compile_commands.json ``` ``` warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/bits.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/codepages.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/classes.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/objects.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/bits.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/codepages.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/hash.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/classes.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/classes.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/codepages.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/dwg.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/common.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/bits.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/codepages.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/hash.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/decode_r2007.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/objects.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/classes.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/print.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/common.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/dynapi.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/objects.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/classes.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/bits.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/codepages.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/objects.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/classes.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/bits.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/codepages.c warning: Skipping duplicate compilation cmd for /home/frank/repos/libredwg/src/classes.c /home/frank/repos/libredwg/src/bits.c:494:21: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] v = le64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:91:27: note: expanded from macro 'le64toh' # define le64toh(x) (x) ^ /home/frank/repos/libredwg/src/bits.c:524:21: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] v = be64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:95:36: note: expanded from macro 'be64toh' # define be64toh(x) bswap_64 (x) ^ /usr/include/byteswap.h:38:33: note: expanded from macro 'bswap_64' #define bswap_64(x) __bswap_64 (x) ^ /home/frank/repos/libredwg/src/bits.c:578:23: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] u.u = le64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:91:27: note: expanded from macro 'le64toh' # define le64toh(x) (x) ^ /home/frank/repos/libredwg/src/bits.c:2151:46: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] BITCODE_TV str = bit_embed_TU ((BITCODE_TU)s); ^~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2180:30: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] bit_write_TU (dat, (BITCODE_TU)s); ^~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2550:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2587:38: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] char *u8 = bit_convert_TU ((BITCODE_TU)chain); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2625:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain) + 1; ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2666:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain) + 1; ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:3462:29: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] return bit_eq_TU (str2, (BITCODE_TU)wstr1); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:3501:12: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] c = *(BITCODE_TU)str; ^~~~~~~~~~~~~~~ 11 warnings generated. /home/frank/repos/libredwg/src/bits.c:494:21: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] v = le64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:91:27: note: expanded from macro 'le64toh' # define le64toh(x) (x) ^ /home/frank/repos/libredwg/src/bits.c:524:21: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] v = be64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:95:36: note: expanded from macro 'be64toh' # define be64toh(x) bswap_64 (x) ^ /usr/include/byteswap.h:38:33: note: expanded from macro 'bswap_64' #define bswap_64(x) __bswap_64 (x) ^ /home/frank/repos/libredwg/src/bits.c:578:23: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] u.u = le64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:91:27: note: expanded from macro 'le64toh' # define le64toh(x) (x) ^ /home/frank/repos/libredwg/src/bits.c:2151:46: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] BITCODE_TV str = bit_embed_TU ((BITCODE_TU)s); ^~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2180:30: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] bit_write_TU (dat, (BITCODE_TU)s); ^~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2550:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2587:38: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] char *u8 = bit_convert_TU ((BITCODE_TU)chain); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2625:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain) + 1; ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2666:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain) + 1; ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:3462:29: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] return bit_eq_TU (str2, (BITCODE_TU)wstr1); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:3501:12: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] c = *(BITCODE_TU)str; ^~~~~~~~~~~~~~~ 11 warnings generated. /home/frank/repos/libredwg/src/bits.c:494:21: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] v = le64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:91:27: note: expanded from macro 'le64toh' # define le64toh(x) (x) ^ /home/frank/repos/libredwg/src/bits.c:524:21: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] v = be64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:95:36: note: expanded from macro 'be64toh' # define be64toh(x) bswap_64 (x) ^ /usr/include/byteswap.h:38:33: note: expanded from macro 'bswap_64' #define bswap_64(x) __bswap_64 (x) ^ /home/frank/repos/libredwg/src/bits.c:578:23: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] u.u = le64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:91:27: note: expanded from macro 'le64toh' # define le64toh(x) (x) ^ /home/frank/repos/libredwg/src/bits.c:2151:46: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] BITCODE_TV str = bit_embed_TU ((BITCODE_TU)s); ^~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2180:30: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] bit_write_TU (dat, (BITCODE_TU)s); ^~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2550:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2587:38: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] char *u8 = bit_convert_TU ((BITCODE_TU)chain); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2625:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain) + 1; ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2666:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain) + 1; ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:3462:29: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] return bit_eq_TU (str2, (BITCODE_TU)wstr1); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:3501:12: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] c = *(BITCODE_TU)str; ^~~~~~~~~~~~~~~ 11 warnings generated. /home/frank/repos/libredwg/src/bits.c:494:21: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] v = le64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:91:27: note: expanded from macro 'le64toh' # define le64toh(x) (x) ^ /home/frank/repos/libredwg/src/bits.c:524:21: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] v = be64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:95:36: note: expanded from macro 'be64toh' # define be64toh(x) bswap_64 (x) ^ /usr/include/byteswap.h:38:33: note: expanded from macro 'bswap_64' #define bswap_64(x) __bswap_64 (x) ^ /home/frank/repos/libredwg/src/bits.c:578:23: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] u.u = le64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:91:27: note: expanded from macro 'le64toh' # define le64toh(x) (x) ^ /home/frank/repos/libredwg/src/bits.c:2151:46: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] BITCODE_TV str = bit_embed_TU ((BITCODE_TU)s); ^~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2180:30: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] bit_write_TU (dat, (BITCODE_TU)s); ^~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2550:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2587:38: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] char *u8 = bit_convert_TU ((BITCODE_TU)chain); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2625:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain) + 1; ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2666:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain) + 1; ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:3462:29: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] return bit_eq_TU (str2, (BITCODE_TU)wstr1); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:3501:12: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] c = *(BITCODE_TU)str; ^~~~~~~~~~~~~~~ 11 warnings generated. /home/frank/repos/libredwg/src/bits.c:494:21: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] v = le64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:91:27: note: expanded from macro 'le64toh' # define le64toh(x) (x) ^ /home/frank/repos/libredwg/src/bits.c:524:21: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] v = be64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:95:36: note: expanded from macro 'be64toh' # define be64toh(x) bswap_64 (x) ^ /usr/include/byteswap.h:38:33: note: expanded from macro 'bswap_64' #define bswap_64(x) __bswap_64 (x) ^ /home/frank/repos/libredwg/src/bits.c:578:23: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] u.u = le64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:91:27: note: expanded from macro 'le64toh' # define le64toh(x) (x) ^ /home/frank/repos/libredwg/src/bits.c:2151:46: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] BITCODE_TV str = bit_embed_TU ((BITCODE_TU)s); ^~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2180:30: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] bit_write_TU (dat, (BITCODE_TU)s); ^~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2550:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2587:38: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] char *u8 = bit_convert_TU ((BITCODE_TU)chain); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2625:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain) + 1; ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2666:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain) + 1; ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:3462:29: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] return bit_eq_TU (str2, (BITCODE_TU)wstr1); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:3501:12: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] c = *(BITCODE_TU)str; ^~~~~~~~~~~~~~~ 11 warnings generated. /home/frank/repos/libredwg/src/bits.c:494:21: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] v = le64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:91:27: note: expanded from macro 'le64toh' # define le64toh(x) (x) ^ /home/frank/repos/libredwg/src/bits.c:524:21: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] v = be64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:95:36: note: expanded from macro 'be64toh' # define be64toh(x) bswap_64 (x) ^ /usr/include/byteswap.h:38:33: note: expanded from macro 'bswap_64' #define bswap_64(x) __bswap_64 (x) ^ /home/frank/repos/libredwg/src/bits.c:578:23: warning: cast from 'unsigned char *' to 'uint64_t *' (aka 'unsigned long *') increases required alignment from 1 to 8 [-Wcast-align] u.u = le64toh (*(uint64_t *)&dat->chain[dat->byte]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/common.h:91:27: note: expanded from macro 'le64toh' # define le64toh(x) (x) ^ /home/frank/repos/libredwg/src/bits.c:2151:46: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] BITCODE_TV str = bit_embed_TU ((BITCODE_TU)s); ^~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2180:30: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] bit_write_TU (dat, (BITCODE_TU)s); ^~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2550:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2587:38: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] char *u8 = bit_convert_TU ((BITCODE_TU)chain); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2625:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain) + 1; ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:2666:31: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] length = bit_wcs2len ((BITCODE_TU)chain) + 1; ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:3462:29: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] return bit_eq_TU (str2, (BITCODE_TU)wstr1); ^~~~~~~~~~~~~~~~~ /home/frank/repos/libredwg/src/bits.c:3501:12: warning: cast from 'BITCODE_TV' (aka 'char *') to 'BITCODE_TU' (aka 'unsigned short *') increases required alignment from 1 to 2 [-Wcast-align] c = *(BITCODE_TU)str; ^~~~~~~~~~~~~~~ 11 warnings generated. Transpiling bits.c fatal runtime error: Rust cannot catch foreign exceptions ```