Compilation of rust-demangle.c fails on MinGW
Eli Zaretskii
eliz@gnu.org
Sat Jul 31 12:56:33 GMT 2021
The version of rust-demangle.c included with Binutils 2.37 doesn't
compile with MinGW:
mingw32-gcc -c -DHAVE_CONFIG_H -O2 -gdwarf-4 -g3 -I. -I../../binutils-2.37/libiberty/../include -W -Wall -Wwrite-strings -Wc++-compat -Wstrict-prototypes -Wshadow=local -pedantic -D_GNU_SOURCE ../../binutils-2.37/libiberty/rust-demangle.c -o rust-demangle.o
../../binutils-2.37/libiberty/rust-demangle.c:84:3: error: unknown type name 'uint'
84 | uint recursion;
| ^~~~
../../binutils-2.37/libiberty/rust-demangle.c: In function 'demangle_path':
../../binutils-2.37/libiberty/rust-demangle.c:87:37: error: 'uint' undeclared (first use in this function); did you mean 'int'?
87 | #define RUST_NO_RECURSION_LIMIT ((uint) -1)
| ^~~~
../../binutils-2.37/libiberty/rust-demangle.c:686:25: note: in expansion of macro 'RUST_NO_RECURSION_LIMIT'
686 | if (rdm->recursion != RUST_NO_RECURSION_LIMIT)
| ^~~~~~~~~~~~~~~~~~~~~~~
../../binutils-2.37/libiberty/rust-demangle.c:87:37: note: each undeclared identifier is reported only once for each function it appears in
87 | #define RUST_NO_RECURSION_LIMIT ((uint) -1)
| ^~~~
../../binutils-2.37/libiberty/rust-demangle.c:686:25: note: in expansion of macro 'RUST_NO_RECURSION_LIMIT'
686 | if (rdm->recursion != RUST_NO_RECURSION_LIMIT)
| ^~~~~~~~~~~~~~~~~~~~~~~
../../binutils-2.37/libiberty/rust-demangle.c: In function 'rust_demangle_callback':
../../binutils-2.37/libiberty/rust-demangle.c:87:37: error: 'uint' undeclared (first use in this function); did you mean 'int'?
87 | #define RUST_NO_RECURSION_LIMIT ((uint) -1)
| ^~~~
../../binutils-2.37/libiberty/rust-demangle.c:1347:55: note: in expansion of macro 'RUST_NO_RECURSION_LIMIT'
1347 | rdm.recursion = (options & DMGL_NO_RECURSE_LIMIT) ? RUST_NO_RECURSION_LIMIT : 0;
| ^~~~~~~~~~~~~~~~~~~~~~~
This is because the data type 'uint' is not defined in the MinGW
headers. I used uint32_t instead, and it compiled OK.
More information about the Gcc-bugs
mailing list