Hi Jon, On Nov 30 17:02, Jon Turney wrote: > On 30/11/2020 10:47, Corinna Vinschen wrote: > > On Nov 30 11:25, Corinna Vinschen wrote: > > > > Also, after applying the patch and autogen-ing, a full build from > > top-level fails with some warnings and a final undefined symbol: > > The warnings are expected at this stage. > > > make[5]: Entering directory '[...]/x86_64-pc-cygwin/winsup/utils/mingw' > > CXX ../bloda.o > > CXX ../cygcheck.o > > CXX ../dump_setup.o > > CXX ../ldh.o > > CXX ../path.o > > CXX ../cygwin-console-helper.o > > CXX ../path_testsuite-path.o > > CXX ../strace.o > > CXX ../path_testsuite-testsuite.o > > [...]/winsup/utils/mingw/../testsuite.cc:18: warning: "TESTSUITE" redefined > > 18 | #define TESTSUITE > > This redefinition should probably be inside #ifndef TESTSUITE/#endif > > > <command-line>: note: this is the location of the previous definition > > CXXLD cygwin-console-helper.exe > > CXXLD ldh.exe > > In file included from [...]/winsup/utils/mingw/../path.cc:263: > > [...]/winsup/utils/mingw/../testsuite.h:22:24: warning: ISO C++ forbids > > converting a string constant to 'char*' [-Wwrite-strings] > > 22 | #define TESTSUITE_ROOT "X:\\xyzroot" > > I'm not sure how to restructure things to avoid this warning. > > The '-Wno-error=write-strings' flag is added when building this test to > avoid this being fatal. > > > CXXLD path-testsuite.exe > > /usr/lib/gcc/x86_64-w64-mingw32/9.2.1/../../../../x86_64-w64-mingw32/bin/ld: > > > > ../path_testsuite-path.o:path.cc:(.rdata$.refptr.max_mount_entry[.refptr.max_mount_entry]+0x0): > > undefined reference to `max_mount_entry' > > This is a bit puzzling. I don't get this when building locally, but idk why > since there is only a tentative definition of this variable. > > I'm not sure how this being built is changed by automaking to stop it > working for you (perhaps optimization flags are now being used?) > > Perhaps the attached helps, although what is getting stubbed out when > testing could be clearer.
It helps to build the whole lot. The warnings are still generated. I applied the attached patch to avoid the warnings when building path-testsuite.exe. Still TODO are the warnings generated when building libltp, though. What bugs me is that the mingw executables are built in utils/mingw, but the object files are still in utils. Any problem generating the object files in utils/mingw, too? Thanks, Corinna
>From d9445d0fcbea11a9240141a5234b3ff5f0de5f63 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <cori...@vinschen.de> Date: Tue, 1 Dec 2020 10:10:40 +0100 Subject: [PATCH] Cygwin: fix remaining warnings building path-testsuite.exe --- winsup/utils/path.cc | 6 ++---- winsup/utils/testsuite.cc | 2 ++ winsup/utils/testsuite.h | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/winsup/utils/path.cc b/winsup/utils/path.cc index 4c1bb4029da5..29344be02033 100644 --- a/winsup/utils/path.cc +++ b/winsup/utils/path.cc @@ -559,6 +559,7 @@ from_fstab (bool user, PWCHAR path, PWCHAR path_end) #ifndef FSTAB_ONLY +#ifndef TESTSUITE static int mnt_sort (const void *a, const void *b) { @@ -580,9 +581,6 @@ extern "C" WCHAR cygwin_dll_path[]; static void read_mounts () { -/* If TESTSUITE is defined, bypass this whole function as a harness - mount table will be provided. */ -#ifndef TESTSUITE HKEY setup_key; LONG ret; DWORD len; @@ -654,8 +652,8 @@ read_mounts () from_fstab (false, path, path_end); from_fstab (true, path, path_end); qsort (mount_table, max_mount_entry, sizeof (mnt_t), mnt_sort); -#endif /* !defined(TESTSUITE) */ } +#endif /* !defined(TESTSUITE) */ /* Return non-zero if PATH1 is a prefix of PATH2. Both are assumed to be of the same path style and / vs \ usage. diff --git a/winsup/utils/testsuite.cc b/winsup/utils/testsuite.cc index c0a800b01e86..23ed8e0d81c0 100644 --- a/winsup/utils/testsuite.cc +++ b/winsup/utils/testsuite.cc @@ -15,7 +15,9 @@ details. */ #include <unistd.h> #define WIN32_LEAN_AND_MEAN #include <windows.h> +#ifndef TESTSUITE #define TESTSUITE +#endif #include "testsuite.h" typedef struct diff --git a/winsup/utils/testsuite.h b/winsup/utils/testsuite.h index d0a47b23aa9f..0dd6315398de 100644 --- a/winsup/utils/testsuite.h +++ b/winsup/utils/testsuite.h @@ -30,12 +30,12 @@ details. */ #if defined(TESTSUITE_MOUNT_TABLE) static mnt_t mount_table[] = { /* native posix flags */ - { TESTSUITE_ROOT, (char*)"/", MOUNT_SYSTEM}, - { "O:\\other", (char*)"/otherdir", MOUNT_SYSTEM}, - { "S:\\some\\dir", (char*)"/somedir", MOUNT_SYSTEM}, - { TESTSUITE_ROOT"\\bin", (char*)"/usr/bin", MOUNT_SYSTEM}, - { TESTSUITE_ROOT"\\lib", (char*)"/usr/lib", MOUNT_SYSTEM}, - { ".", (char*)TESTSUITE_CYGDRIVE, MOUNT_SYSTEM | MOUNT_CYGDRIVE}, + { (char*)TESTSUITE_ROOT, (char*)"/", MOUNT_SYSTEM}, + { (char*)"O:\\other", (char*)"/otherdir", MOUNT_SYSTEM}, + { (char*)"S:\\some\\dir", (char*)"/somedir", MOUNT_SYSTEM}, + { (char*)TESTSUITE_ROOT"\\bin", (char*)"/usr/bin", MOUNT_SYSTEM}, + { (char*)TESTSUITE_ROOT"\\lib", (char*)"/usr/lib", MOUNT_SYSTEM}, + { (char*)".", (char*)TESTSUITE_CYGDRIVE, MOUNT_SYSTEM | MOUNT_CYGDRIVE}, { NULL, (char*)NULL, 0} }; -- 2.26.2