Fix MinGW compilation

On Sun, 14 Dec 2014 07:00:28 +0100, Yao Qi wrote:
The build on mingw host is broken because mingw has no mkdtemp.

../../../git/gdb/compile/compile.c: In function 'get_compile_file_tempdir':
../../../git/gdb/compile/compile.c:194:3: error: implicit declaration of function 'mkdtemp' [-Werror=implicit-function-declaration]
   tempdir_name = mkdtemp (tname);
   ^
../../../git/gdb/compile/compile.c:194:16: error: assignment makes pointer from integer without a cast [-Werror]
   tempdir_name = mkdtemp (tname);
                ^
cc1: all warnings being treated as errors

In the end I have managed to test it by Wine myself:

$ wine build_win32/gdb/gdb.exe -q build_win32/gdb/gdb.exe -ex start -ex 'compile code 1' -ex 'set confirm no' -ex quit
[...]
Temporary breakpoint 1, main (argc=1, argv=0x241418) at ../../gdb/gdb.c:29
29        args.argc = argc;
Could not load libcc1.so: Module not found.

Even if it managed to load libcc1.so (it needs host-dependent name libcc1.dll)
then it would soon end up at least on:

default_infcall_mmap:
  error (_("This target does not support inferior memory allocation by mmap."));

As currently there is only:

linux-tdep.c:
  set_gdbarch_infcall_mmap (gdbarch, linux_infcall_mmap);

While one could debug Linux targets from MS-Windows host I find it somehow
overcomplicated now when we are trying to get it running at least on native
Linux x86*.

The 'compile' project needs a larger port effort to run on MS-Windows.

gdb/ChangeLog
2014-12-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix MinGW compilation.
	* compile/compile.c (get_compile_file_tempdir): Call error if
	!HAVE_MKDTEMP.
	* config.in: Regenerate.
	* configure: Regenerate.
	* configure.ac (AC_CHECK_FUNCS): Add mkdtemp.

gdb/testsuite/ChangeLog
2014-12-17  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix MinGW compilation.
	* gdb.compile/compile-ops.exp: Update untested message if
	!skip_compile_feature_tests.
	* gdb.compile/compile-setjmp.exp: Likewise.
	* gdb.compile/compile-tls.exp: Likewise.
	* gdb.compile/compile.exp: Likewise.
	* lib/gdb.exp (skip_compile_feature_tests): Check also "Command not
	supported on this host".
This commit is contained in:
Jan Kratochvil 2014-12-17 20:09:02 +01:00
parent 5e3c72e6b8
commit 1bc1068a0c
11 changed files with 36 additions and 6 deletions

View File

@ -1,3 +1,12 @@
2014-12-17 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix MinGW compilation.
* compile/compile.c (get_compile_file_tempdir): Call error if
!HAVE_MKDTEMP.
* config.in: Regenerate.
* configure: Regenerate.
* configure.ac (AC_CHECK_FUNCS): Add mkdtemp.
2014-12-17 Doug Evans <xdje42@gmail.com>
* valops.c (value_maybe_namespace_elt): Remove redundant call to

View File

@ -191,7 +191,11 @@ get_compile_file_tempdir (void)
strcpy (tname, TEMPLATE);
#undef TEMPLATE
#ifdef HAVE_MKDTEMP
tempdir_name = mkdtemp (tname);
#else
error (_("Command not supported on this host."));
#endif
if (tempdir_name == NULL)
perror_with_name (_("Could not make temporary directory"));

View File

@ -231,6 +231,9 @@
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the `mkdtemp' function. */
#undef HAVE_MKDTEMP
/* Define to 1 if you have a working `mmap' system call. */
#undef HAVE_MMAP

2
gdb/configure vendored
View File

@ -10496,7 +10496,7 @@ for ac_func in getrusage getuid getgid \
sigaction sigprocmask sigsetmask socketpair \
ttrace wborder wresize setlocale iconvlist libiconvlist btowc \
setrlimit getrlimit posix_madvise waitpid \
ptrace64 sigaltstack
ptrace64 sigaltstack mkdtemp
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"

View File

@ -1317,7 +1317,7 @@ AC_CHECK_FUNCS([getrusage getuid getgid \
sigaction sigprocmask sigsetmask socketpair \
ttrace wborder wresize setlocale iconvlist libiconvlist btowc \
setrlimit getrlimit posix_madvise waitpid \
ptrace64 sigaltstack])
ptrace64 sigaltstack mkdtemp])
AM_LANGINFO_CODESET
GDB_AC_COMMON

View File

@ -1,3 +1,14 @@
2014-12-17 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix MinGW compilation.
* gdb.compile/compile-ops.exp: Update untested message if
!skip_compile_feature_tests.
* gdb.compile/compile-setjmp.exp: Likewise.
* gdb.compile/compile-tls.exp: Likewise.
* gdb.compile/compile.exp: Likewise.
* lib/gdb.exp (skip_compile_feature_tests): Check also "Command not
supported on this host".
2014-12-16 Doug Evans <xdje42@gmail.com>
* boards/stabs.exp: New file.

View File

@ -411,7 +411,7 @@ if ![runto func] {
}
if {[skip_compile_feature_tests]} {
untested "could not find libcc1 shared library"
untested "compile command not supported (could not find libcc1 shared library?)"
return -1
}

View File

@ -24,7 +24,7 @@ if ![runto_main] {
}
if {[skip_compile_feature_tests]} {
untested "could not find libcc1 shared library"
untested "compile command not supported (could not find libcc1 shared library?)"
return -1
}

View File

@ -27,7 +27,7 @@ if ![runto_main] then {
}
if {[skip_compile_feature_tests]} {
untested "could not find libcc1 shared library"
untested "compile command not supported (could not find libcc1 shared library?)"
return -1
}

View File

@ -57,7 +57,7 @@ if ![runto_main] {
}
if {[skip_compile_feature_tests]} {
untested "could not find libcc1 shared library"
untested "compile command not supported (could not find libcc1 shared library?)"
return -1
}

View File

@ -2538,6 +2538,9 @@ proc skip_compile_feature_tests {} {
"Could not load libcc1.*\r\n$gdb_prompt $" {
set result 1
}
-re "Command not supported on this host\\..*\r\n$gdb_prompt $" {
set result 1
}
-re "\r\n$gdb_prompt $" {
}
}