libgdiplus icon indicating copy to clipboard operation
libgdiplus copied to clipboard

No longer compiles due to googletest changes.

Open AphidGit opened this issue 2 years ago • 3 comments

Issue: This no longer compiles correctly. Issue is in the imported googletest which is not version-bound. Some changes in this external code have made it incompatible with this repo's makefile/autotools thingamajig.

A test was added that does something to blow up the compiler; specifically this bit of code;

static void StackLowerThanAddress(const void* ptr,
                                  bool* result) GTEST_NO_INLINE_;
// HWAddressSanitizer add a random tag to the MSB of the local variable address,
// making comparison result unpredictable.
GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
static void StackLowerThanAddress(const void* ptr, bool* result) {
  int dummy;
  *result = (&dummy < ptr);
}

// Make sure AddressSanitizer does not tamper with the stack here.
GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
GTEST_ATTRIBUTE_NO_SANITIZE_HWADDRESS_
static bool StackGrowsDown() {
  int dummy;
  bool result;
  StackLowerThanAddress(&dummy, &result);
  return result;
}
#  endif  // GTEST_HAS_CLONE

Dummy is filled with the current stack pointer to check that the stack grows downward or upward (i.e. what do the memory addresses do, increase or decrease?). The compiler does not like this uninitialized pointer use when used with default settings including -wError=maybe-unitialized . This option needs to be turned off to compile googletest (and probably results in more errors; i.e. set -Wno-error-maybe-uninitialized). Haven't been able to test any further because autotools is so impenetrably complicated.

AphidGit avatar Dec 19 '22 02:12 AphidGit

Hm this is weird since we use the submodule at a specific commit so it shouldn't suddenly change. How did you initialize the submodule? Can you show the output of git status in the repo?

akoeplinger avatar Dec 21 '22 11:12 akoeplinger

On ubuntu 22.04 LTS, here's how I fixed it:

wget https://github.com/google/googletest/archive/refs/tags/release-1.12.1.tar.gz; \
tar xf release-1.12.1.tar.gz; \
rm -rf libgdiplus-6.1/external/googletest/*; \
cp -rfpd googletest-release-1.12.1/* host-mono/libgdiplus-6.1/external/googletest/

Releases 1.13.x and later will not work due to C++14 being required.

pyrates999 avatar Aug 09 '23 10:08 pyrates999

https://github.com/mono/libgdiplus/issues/737 https://gitlab.winehq.org/wine-mono/libgdiplus/-/commit/10f2b16a9ff2731493a721630ae12eaf554eec4c

mirh avatar May 25 '24 17:05 mirh