File tree Expand file tree Collapse file tree
compiler/rustc_codegen_ssa/src/back
run-make/raw-dylib-custom-dlltool
ui/linkage-attr/raw-dylib/windows Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -217,12 +217,10 @@ fn create_mingw_dll_import_lib(
217217 // able to control the *exact* spelling of each of the symbols that are being imported:
218218 // hence we don't want `dlltool` adding leading underscores automatically.
219219 let dlltool = find_binutils_dlltool ( sess) ;
220- let temp_prefix = {
221- let mut path = PathBuf :: from ( & output_path) ;
222- path. pop ( ) ;
223- path. push ( lib_name) ;
224- path
225- } ;
220+ // temp_prefix doesn't handle paths with spaces so
221+ // use a relative path and set the current working directory
222+ let cwd = output_path. parent ( ) . unwrap_or ( output_path) ;
223+ let temp_prefix = lib_name;
226224 // dlltool target architecture args from:
227225 // https://github.com/llvm/llvm-project-release-prs/blob/llvmorg-15.0.6/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp#L69
228226 let ( dlltool_target_arch, dlltool_target_bitness) = match & sess. target . arch {
@@ -246,7 +244,8 @@ fn create_mingw_dll_import_lib(
246244 . arg ( dlltool_target_bitness)
247245 . arg ( "--no-leading-underscore" )
248246 . arg ( "--temp-prefix" )
249- . arg ( temp_prefix) ;
247+ . arg ( temp_prefix)
248+ . current_dir ( cwd) ;
250249
251250 match dlltool_cmd. output ( ) {
252251 Err ( e) => {
Original file line number Diff line number Diff line change 1- echo Called dlltool via script.cmd> actual.txt
1+ echo Called dlltool via script.cmd> %~dp0 \ actual.txt
22dlltool.exe %*
Original file line number Diff line number Diff line change 77//@ normalize-stderr: "[^ ]*/foo.dll_imports.lib" -> "$$LIB_FILE"
88//@ normalize-stderr: "-m [^ ]*" -> "$$TARGET_MACHINE"
99//@ normalize-stderr: "-f [^ ]*" -> "$$ASM_FLAGS"
10- //@ normalize-stderr: "--temp-prefix [^ ]*/foo.dll" -> "$$TEMP_PREFIX"
1110#[ link( name = "foo" , kind = "raw-dylib" ) ]
1211extern "C" {
1312 // `@1` is an invalid name to export, as it usually indicates that something
Original file line number Diff line number Diff line change 1- error: dlltool could not create import library with $DLLTOOL -d $DEF_FILE -D foo.dll -l $LIB_FILE $TARGET_MACHINE $ASM_FLAGS --no-leading-underscore $TEMP_PREFIX :
1+ error: dlltool could not create import library with $DLLTOOL -d $DEF_FILE -D foo.dll -l $LIB_FILE $TARGET_MACHINE $ASM_FLAGS --no-leading-underscore --temp-prefix foo.dll :
22
33 $DLLTOOL: Syntax error in def file $DEF_FILE:1␍
44
You can’t perform that action at this time.
0 commit comments