https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101779

            Bug ID: 101779
           Summary: Compilation of rust-demangle.c fails on MinGW
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: demangler
          Assignee: unassigned at gcc dot gnu.org
          Reporter: eliz at gnu dot org
  Target Milestone: ---

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.

Reply via email to