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
```
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.