Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows 10 x86 - Building Rizin with clang-cl is not possible #726

Closed
caribpa opened this issue Feb 26, 2021 · 3 comments · Fixed by #2055
Closed

Windows 10 x86 - Building Rizin with clang-cl is not possible #726

caribpa opened this issue Feb 26, 2021 · 3 comments · Fixed by #2055
Assignees
Labels
good first issue Good for newcomers port Support for various OS and environments Windows

Comments

@caribpa
Copy link
Contributor

caribpa commented Feb 26, 2021

Work environment

Questions Answers
OS/arch/bits (mandatory) Windows 10 x86
File format of the file you reverse (mandatory) n/a
Architecture/bits of the file (mandatory) n/a
rizin -v full output, not truncated (mandatory) n/a

Expected behavior

Building Rizin in a Windows 10 x86 machine using clang-cl compiler works without issues.

Actual behavior

As mentioned in #546, typedef redefinition with conflicting types happens:

FAILED: librz/core/librz_core.a.p/rtr.c.obj
"clang-cl" "-Ilibrz/core\librz_core.a.p" "-I." "-I.." "-I..\librz\include" "-I..\shlr\heap\include\rz_windows" "-I..\shlr\spp" "-Isubprojects\sdb" "-I..\subprojects\sdb" "-Isubprojects\sdb\src" "-I..\subprojects\sdb\src" "-Isubprojects\zlib-1.2.11" "-I..\subprojects\zlib-1.2.11" "-Ishlr" "-I..\shlr" "-I..\librz\asm\arch\include" "-I..\librz\asm\arch" "-I..\librz\asm\arch\h8300" "-I..\librz\asm\arch\hexagon" "-I..\librz\asm\arch\msp430" "-I..\librz\asm\arch\rsp" "-I..\librz\asm\arch\mcore" "-I..\librz\asm\arch\v850" "-I..\librz\asm\arch\propeller" "-I..\librz\asm\arch\ebc" "-I..\librz\asm\arch\cr16" "-I..\librz\asm\arch\8051" "-I..\librz\asm\arch\v810" "-I..\librz\asm\arch\or1k" "-I..\librz\analysis\arch\gb" "-I..\librz\analysis\arch\hexagon" "-I..\librz\bin\format\elf" "-I..\librz\bin\mangling" "-I..\librz\bin\format" "-I..\shlr\gdb\include" "-I..\shlr\gdb\include\gdbclient" "-I..\shlr\gdb\include\gdbserver" "-I..\shlr\rizin-shell-parser\src\tree_sitter" "-I..\subprojects\tree-sitter-0.18.0\lib\src" "-I..\subprojects\tree-sitter-0.18.0\lib\include" "-I..\subprojects\libuv-v1.40.0\include" "-Ilibrz\core\cmd_descs" "/MD" "/nologo" "/showIncludes" "/W2" "/O2" "-D__STDC__=1" "-D_CRT_DECLARE_NONSTDC_NAMES " "-D_CRT_SECURE_NO_WARNINGS" "-D_CRT_NONSTDC_NO_DEPRECATE" "-Werror=sizeof-pointer-memaccess" "" "-DRZ_PLUGIN_INCORE=1" "/Fdlibrz/core\librz_core.a.p\rtr.c.pdb" /Folibrz/core/librz_core.a.p/rtr.c.obj "/c" ../librz/core/rtr.c
In file included from ../librz/core/rtr.c:9:
In file included from ..\subprojects\libuv-v1.40.0\include\uv.h:64:
..\subprojects\libuv-v1.40.0\include/uv/win.h(27,18): error: typedef redefinition with different types ('intptr_t' (aka 'int') vs 'SSIZE_T' (aka 'long'))
typedef intptr_t ssize_t;
                 ^
..\librz\include\rz_types_base.h(21,17): note: previous definition is here
typedef SSIZE_T ssize_t;
                ^
1 error generated.

And then, after a quick renaming (after cloning rizin and before the first meson call) using find . -type f -exec sed -i 's/ssize_t/rz_&/g' {} + in a msys2 shell, duplicate symbols are reported when linking:

[...]
18 warnings generated.
[1389/1563] Linking target binrz/rz-run/rz-run.exe
FAILED: binrz/rz-run/rz-run.exe
"lld-link"  /MACHINE:x86 /OUT:binrz/rz-run/rz-run.exe binrz/rz-run/rz-run.exe.p/rz-run.c.obj "/nologo" "/OPT:REF" "librz/main\librz_main.a" "librz/util\librz_util.a" "librzspp.a" "subprojects\sdb\src\libsdb.a" "subprojects\zlib-1.2.11\libz.a" "librz/magic\librz_magic.a" "librz/socket\librz_socket.a" "librz/flag\librz_flag.a" "librz/cons\librz_cons.a" "librz/hash\librz_hash.a" "subprojects\xxhash\libxxhash.a" "librz/crypto\librz_crypto.a" "librz/io\librz_io.a" "shlr\librzbochs.a" "shlr/gdb\libr2gdb.a" "shlr\librzwinkd.a" "shlr\librzqnx.a" "subprojects\libzip-1.7.3\liblibzip.a" "shlr\librzar.a" "shlr\w32dbg_wrap\librzw32dbg_wrap.a" "librz/reg\librz_reg.a" "librz/bp\librz_bp.a" "librz/syscall\librz_syscall.a" "librz/parse\librz_parse.a" "shlr\librztcc.a" "subprojects\mpc\libmpc.a" "librz/asm\librz_asm.a" "librz/bin\librz_bin.a" "subprojects\lz4-1.9.3\liblz4.a" "subprojects\yxml\libyxml.a" "subprojects\capstone-bundled\libcapstone.a" "librz/egg\librz_egg.a" "librz/search\librz_search.a" "librz/analysis\librz_analysis.a" "librz/debug\librz_debug.a" "librz/config\librz_config.a" "librz/core\librz_core.a" "librz/lang\librz_lang.a" "shlr\libshell_parser.a" "subprojects\tree-sitter-0.18.0\libtree_sitter.a" "subprojects\libuv-v1.40.0\libuv.a" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "advapi32.lib" "bcrypt.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "advapi32.lib" "bcrypt.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "psapi.lib" "user32.lib" "advapi32.lib" "iphlpapi.lib" "userenv.lib" "ws2_32.lib" "/SUBSYSTEM:CONSOLE" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "comdlg32.lib" "advapi32.lib"
lld-link: error: duplicate symbol: _bfd_riscv_num_opcodes
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_opcodes
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_fpr_names_abi
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_gpr_names_abi
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_gpr_names_numeric
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_fpr_names_numeric
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)
[1390/1563] Linking target binrz/rz-hash/rz-hash.exe
FAILED: binrz/rz-hash/rz-hash.exe
"lld-link"  /MACHINE:x86 /OUT:binrz/rz-hash/rz-hash.exe binrz/rz-hash/rz-hash.exe.p/rz-hash.c.obj "/nologo" "/OPT:REF" "librz/main\librz_main.a" "librz/util\librz_util.a" "librzspp.a" "subprojects\sdb\src\libsdb.a" "subprojects\zlib-1.2.11\libz.a" "librz/magic\librz_magic.a" "librz/socket\librz_socket.a" "librz/flag\librz_flag.a" "librz/cons\librz_cons.a" "librz/hash\librz_hash.a" "subprojects\xxhash\libxxhash.a" "librz/crypto\librz_crypto.a" "librz/io\librz_io.a" "shlr\librzbochs.a" "shlr/gdb\libr2gdb.a" "shlr\librzwinkd.a" "shlr\librzqnx.a" "subprojects\libzip-1.7.3\liblibzip.a" "shlr\librzar.a" "shlr\w32dbg_wrap\librzw32dbg_wrap.a" "librz/reg\librz_reg.a" "librz/bp\librz_bp.a" "librz/syscall\librz_syscall.a" "librz/parse\librz_parse.a" "shlr\librztcc.a" "subprojects\mpc\libmpc.a" "librz/asm\librz_asm.a" "librz/bin\librz_bin.a" "subprojects\lz4-1.9.3\liblz4.a" "subprojects\yxml\libyxml.a" "subprojects\capstone-bundled\libcapstone.a" "librz/egg\librz_egg.a" "librz/search\librz_search.a" "librz/analysis\librz_analysis.a" "librz/debug\librz_debug.a" "librz/config\librz_config.a" "librz/core\librz_core.a" "librz/lang\librz_lang.a" "shlr\libshell_parser.a" "subprojects\tree-sitter-0.18.0\libtree_sitter.a" "subprojects\libuv-v1.40.0\libuv.a" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "advapi32.lib" "bcrypt.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "advapi32.lib" "bcrypt.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "psapi.lib" "user32.lib" "advapi32.lib" "iphlpapi.lib" "userenv.lib" "ws2_32.lib" "/SUBSYSTEM:CONSOLE" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "comdlg32.lib" "advapi32.lib"
lld-link: error: duplicate symbol: _bfd_riscv_num_opcodes
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_opcodes
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_fpr_names_abi
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_gpr_names_abi
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_gpr_names_numeric
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_fpr_names_numeric
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)
[1391/1563] Linking target binrz/rizin/rizin.exe
FAILED: binrz/rizin/rizin.exe
"lld-link"  /MACHINE:x86 /OUT:binrz/rizin/rizin.exe binrz/rizin/rizin.exe.p/rizin.c.obj "/nologo" "/OPT:REF" "librz/util\librz_util.a" "librzspp.a" "subprojects\sdb\src\libsdb.a" "subprojects\zlib-1.2.11\libz.a" "librz/main\librz_main.a" "librz/magic\librz_magic.a" "librz/socket\librz_socket.a" "librz/flag\librz_flag.a" "librz/cons\librz_cons.a" "librz/hash\librz_hash.a" "subprojects\xxhash\libxxhash.a" "librz/crypto\librz_crypto.a" "librz/io\librz_io.a" "shlr\librzbochs.a" "shlr/gdb\libr2gdb.a" "shlr\librzwinkd.a" "shlr\librzqnx.a" "subprojects\libzip-1.7.3\liblibzip.a" "shlr\librzar.a" "shlr\w32dbg_wrap\librzw32dbg_wrap.a" "librz/reg\librz_reg.a" "librz/bp\librz_bp.a" "librz/syscall\librz_syscall.a" "librz/parse\librz_parse.a" "shlr\librztcc.a" "subprojects\mpc\libmpc.a" "librz/asm\librz_asm.a" "librz/bin\librz_bin.a" "subprojects\lz4-1.9.3\liblz4.a" "subprojects\yxml\libyxml.a" "subprojects\capstone-bundled\libcapstone.a" "librz/egg\librz_egg.a" "librz/search\librz_search.a" "librz/analysis\librz_analysis.a" "librz/debug\librz_debug.a" "librz/config\librz_config.a" "librz/core\librz_core.a" "librz/lang\librz_lang.a" "shlr\libshell_parser.a" "subprojects\tree-sitter-0.18.0\libtree_sitter.a" "subprojects\libuv-v1.40.0\libuv.a" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "advapi32.lib" "bcrypt.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "advapi32.lib" "bcrypt.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "psapi.lib" "user32.lib" "advapi32.lib" "iphlpapi.lib" "userenv.lib" "ws2_32.lib" "/SUBSYSTEM:CONSOLE" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "comdlg32.lib" "advapi32.lib"
lld-link: error: duplicate symbol: _bfd_riscv_num_opcodes
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_opcodes
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_fpr_names_abi
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_gpr_names_abi
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_gpr_names_numeric
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_fpr_names_numeric
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
>>> defined at librz_asm.a(p_asm_riscv.c.obj)
[1392/1563] Linking target binrz/rz-bin/rz-bin.exe
FAILED: binrz/rz-bin/rz-bin.exe
"lld-link"  /MACHINE:x86 /OUT:binrz/rz-bin/rz-bin.exe binrz/rz-bin/rz-bin.exe.p/rz-bin.c.obj "/nologo" "/OPT:REF" "librz/main\librz_main.a" "librz/util\librz_util.a" "librzspp.a" "subprojects\sdb\src\libsdb.a" "subprojects\zlib-1.2.11\libz.a" "librz/magic\librz_magic.a" "librz/socket\librz_socket.a" "librz/flag\librz_flag.a" "librz/cons\librz_cons.a" "librz/hash\librz_hash.a" "subprojects\xxhash\libxxhash.a" "librz/crypto\librz_crypto.a" "librz/io\librz_io.a" "shlr\librzbochs.a" "shlr/gdb\libr2gdb.a" "shlr\librzwinkd.a" "shlr\librzqnx.a" "subprojects\libzip-1.7.3\liblibzip.a" "shlr\librzar.a" "shlr\w32dbg_wrap\librzw32dbg_wrap.a" "librz/reg\librz_reg.a" "librz/bp\librz_bp.a" "librz/syscall\librz_syscall.a" "librz/parse\librz_parse.a" "shlr\librztcc.a" "subprojects\mpc\libmpc.a" "librz/asm\librz_asm.a" "librz/bin\librz_bin.a" "subprojects\lz4-1.9.3\liblz4.a" "subprojects\yxml\libyxml.a" "subprojects\capstone-bundled\libcapstone.a" "librz/egg\librz_egg.a" "librz/search\librz_search.a" "librz/analysis\librz_analysis.a" "librz/debug\librz_debug.a" "librz/config\librz_config.a" "librz/core\librz_core.a" "librz/lang\librz_lang.a" "shlr\libshell_parser.a" "subprojects\tree-sitter-0.18.0\libtree_sitter.a" "subprojects\libuv-v1.40.0\libuv.a" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "advapi32.lib" "bcrypt.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "advapi32.lib" "bcrypt.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "psapi.lib" "user32.lib" "advapi32.lib" "iphlpapi.lib" "userenv.lib" "ws2_32.lib" "/SUBSYSTEM:CONSOLE" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "comdlg32.lib" "advapi32.lib"
lld-link: error: duplicate symbol: _bfd_riscv_num_opcodes
>>> defined at librz_asm.a(p_asm_riscv.c.obj)
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_opcodes
>>> defined at librz_asm.a(p_asm_riscv.c.obj)
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_fpr_names_abi
>>> defined at librz_asm.a(p_asm_riscv.c.obj)
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_gpr_names_abi
>>> defined at librz_asm.a(p_asm_riscv.c.obj)
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_gpr_names_numeric
>>> defined at librz_asm.a(p_asm_riscv.c.obj)
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_fpr_names_numeric
>>> defined at librz_asm.a(p_asm_riscv.c.obj)
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
[1393/1563] Linking target binrz/rz-asm/rz-asm.exe
FAILED: binrz/rz-asm/rz-asm.exe
"lld-link"  /MACHINE:x86 /OUT:binrz/rz-asm/rz-asm.exe binrz/rz-asm/rz-asm.exe.p/rz-asm.c.obj "/nologo" "/OPT:REF" "librz/main\librz_main.a" "librz/util\librz_util.a" "librzspp.a" "subprojects\sdb\src\libsdb.a" "subprojects\zlib-1.2.11\libz.a" "librz/magic\librz_magic.a" "librz/socket\librz_socket.a" "librz/flag\librz_flag.a" "librz/cons\librz_cons.a" "librz/hash\librz_hash.a" "subprojects\xxhash\libxxhash.a" "librz/crypto\librz_crypto.a" "librz/io\librz_io.a" "shlr\librzbochs.a" "shlr/gdb\libr2gdb.a" "shlr\librzwinkd.a" "shlr\librzqnx.a" "subprojects\libzip-1.7.3\liblibzip.a" "shlr\librzar.a" "shlr\w32dbg_wrap\librzw32dbg_wrap.a" "librz/reg\librz_reg.a" "librz/bp\librz_bp.a" "librz/syscall\librz_syscall.a" "librz/parse\librz_parse.a" "shlr\librztcc.a" "subprojects\mpc\libmpc.a" "librz/asm\librz_asm.a" "librz/bin\librz_bin.a" "subprojects\lz4-1.9.3\liblz4.a" "subprojects\yxml\libyxml.a" "subprojects\capstone-bundled\libcapstone.a" "librz/egg\librz_egg.a" "librz/search\librz_search.a" "librz/analysis\librz_analysis.a" "librz/debug\librz_debug.a" "librz/config\librz_config.a" "librz/core\librz_core.a" "librz/lang\librz_lang.a" "shlr\libshell_parser.a" "subprojects\tree-sitter-0.18.0\libtree_sitter.a" "subprojects\libuv-v1.40.0\libuv.a" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "advapi32.lib" "bcrypt.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "advapi32.lib" "bcrypt.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "ws2_32.lib" "wininet.lib" "psapi.lib" "psapi.lib" "user32.lib" "advapi32.lib" "iphlpapi.lib" "userenv.lib" "ws2_32.lib" "/SUBSYSTEM:CONSOLE" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "comdlg32.lib" "advapi32.lib"
lld-link: error: duplicate symbol: _bfd_riscv_num_opcodes
>>> defined at librz_asm.a(p_asm_riscv.c.obj)
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_opcodes
>>> defined at librz_asm.a(p_asm_riscv.c.obj)
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_fpr_names_abi
>>> defined at librz_asm.a(p_asm_riscv.c.obj)
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_gpr_names_abi
>>> defined at librz_asm.a(p_asm_riscv.c.obj)
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_gpr_names_numeric
>>> defined at librz_asm.a(p_asm_riscv.c.obj)
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)

lld-link: error: duplicate symbol: _riscv_fpr_names_numeric
>>> defined at librz_asm.a(p_asm_riscv.c.obj)
>>> defined at librz_analysis.a(p_analysis_riscv.c.obj)
[1394/1563] Compiling C object binrz/rz-gg/rz-gg.exe.p/rz-gg.c.obj
ninja: build stopped: subcommand failed.

Steps to reproduce the behavior

> git clone https://github.com/rizinorg/rizin
> cd rizin
> set CC=clang-cl
> set CCX=clang-cl++
> meson --default-library=static --buildtype=release build
> ninja -C build
# 💔 - typedef redefinition error

> cd ..
> rmdir /s /q rizin
> git clone https://github.com/rizinorg/rizin
# In a msys2 shell issue inside the rizin folder: find . -type f -exec sed -i 's/ssize_t/rz_&/g' {} +
> cd rizin
> meson --default-library=static --buildtype=release build
> ninja -C build
# 💔 - linking error
@caribpa
Copy link
Contributor Author

caribpa commented Feb 26, 2021

Forgot to say that the cmd.exe is a x86 Native Tools Command Prompt for VS 2019, obtained from the Visual Studio 2019 Community Edition installation, and clang-cl (and the clang suite) was installed by checking the optional Clang package from the C++ Development Module (installed with the default options).

@XVilka XVilka added good first issue Good for newcomers Windows port Support for various OS and environments labels Feb 26, 2021
@caribpa
Copy link
Contributor Author

caribpa commented Feb 26, 2021

This same issue happens with Clang 11 (VS 2019 installs clang 10).

Also, here's the full log: ninja.log

@XVilka
Copy link
Member

XVilka commented Jul 16, 2021

@GustavoLCR could you please check this typedef issue? I think just writing:

#if defined(_MSC_VER) && !defined(__clang__)

could help here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers port Support for various OS and environments Windows
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants