Bug#947884: wine-development: patches for arm64 build failure

2020-01-22 Thread Gianfranco Costamagna
Hello Michael
On Sat, 18 Jan 2020 12:55:37 -0500 Michael Gilbert  wrote:
> version: 5.0~rc1-2
> 
> On Wed, Jan 1, 2020 at 12:15 PM Gianfranco Costamagna wrote:
> > Hello, I took some time to have a look on wine FTBFS, and I think I crafted 
> > some patches that are pending upstream review
> 
> This never affected debian's wine-development package.  I applied a
> much simpler patch for wine, which was affected.
> 


unfortunately your patch wasn't enough for failures with new gcc and glibc 
(experimental)

https://bugs.winehq.org/show_bug.cgi?id=48398
(btw upstream is asking to just stop using maintainer mode to build)


something we still need is:
Description: a for loop from n down to >=0 can't be assigned to an unsigned int

clang -c -o variant.o variant.c -I. -I../../include -I../../include/msvcrt 
-D__WINESRC__ -D_OLEAUT32_ -D_REENTRANT -fPIC -fno-builtin -fshort-wchar -Wall 
-pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body 
-Wignored-qualifiers -Wno-pragma-pack -Wstrict-prototypes -Wtype-limits -Wvla 
-Wwrite-strings -Wpointer-arith -gdwarf-2 -gstrict-dwarf -Werror -Wdate-time -g 
-O2 -fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat 
-Werror=format-security -Wno-shift-overflow -Wno-unused-function 
-Wno-deprecated-declarations -Wno-enum-conversion -Wno-absolute-value
signal_arm64.c:1606:48: error: result of comparison of unsigned expression >= 0 
is always true [-Werror,-Wtautological-unsigned-zero-compare]
for (i = func->u.s.RegF / 2 - 1; i >= 0; i--)
 ~ ^  ~
signal_arm64.c:1634:44: error: result of comparison of unsigned expression >= 0 
is always true [-Werror,-Wtautological-unsigned-zero-compare]
for (i = func->u.s.RegI / 2 - 1; i >= 0; i--)
 ~ ^  ~
2 errors generated.
make[2]: *** [Makefile:331: signal_arm64.o] Error 1

Author: Gianfranco Costamagna 
--- wine-development-4.21.orig/dlls/ntdll/signal_arm64.c
+++ wine-development-4.21/dlls/ntdll/signal_arm64.c
@@ -1519,7 +1519,8 @@ static void process_unwind_codes( BYTE *
 static void *unwind_packed_data( ULONG_PTR base, ULONG_PTR pc, 
RUNTIME_FUNCTION *func,
  CONTEXT *context, 
KNONVOLATILE_CONTEXT_POINTERS *ptrs )
 {
-unsigned int i, len, offset, skip = 0;
+int i;
+unsigned int len, offset, skip = 0;
 unsigned int int_size = func->u.s.RegI * 8, fp_size = func->u.s.RegF * 8, 
regsave, local_size;

 TRACE( "function %lx-%lx: len=%#x flag=%x regF=%u regI=%u H=%u CR=%u 
frame=%x\n",


(or to ignore the autological-unsigned-zero-compare new flag)


Description:
../../tools/winegcc/winegcc -o d3dcompiler_47.dll.so --wine-objdir ../.. -fPIC 
-fasynchronous-unwind-tables -shared d3dcompiler_47.spec -mno-cygwin 
asmparser.o blob.o bytecodewriter.o compiler.o main.o preproc.o reflection.o 
utils.o asmshader.tab.o hlsl.tab.o ppy.tab.o asmshader.yy.o hlsl.yy.o ppl.yy.o 
version.res ../../dlls/dxguid/libdxguid.a ../../dlls/uuid/libuuid.a 
-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now 
-Wl,-rpath,/usr/lib/aarch64-linux-gnu/wine
../d3dx9_36/effect.c:1472:12: error: result of comparison of unsigned enum 
expression < 0 is always false 
[-Werror,-Wtautological-unsigned-enum-zero-compare]
if (op < 0 || op > SCT_PSINT)
~~ ^ ~
1 error generated.

Author: Gianfranco Costamagna 

Forwarded: pending
Last-Update: 2019-12-31

--- wine-5.0~rc1.orig/dlls/d3dx9_36/effect.c
+++ wine-5.0~rc1/dlls/d3dx9_36/effect.c
@@ -1469,7 +1469,7 @@ static HRESULT d3dx_set_shader_const_sta
 D3DXVECTOR4 value;
 HRESULT ret;

-if (op < 0 || op > SCT_PSINT)
+if (op > SCT_PSINT)
 {
 FIXME("Unknown op %u.\n", op);
 return D3DERR_INVALIDCALL;
--- wine-5.0~rc1.orig/dlls/gdiplus/graphics.c
+++ wine-5.0~rc1/dlls/gdiplus/graphics.c
@@ -6836,8 +6836,8 @@ GpStatus WINGDIPAPI GdipTransformPoints(
 GpCoordinateSpace src_space, GpPointF 
*points, INT count)
 {
 if(!graphics || !points || count <= 0 ||
-   dst_space < 0 || dst_space > CoordinateSpaceDevice ||
-   src_space < 0 || src_space > CoordinateSpaceDevice)
+   dst_space > CoordinateSpaceDevice ||
+   src_space > CoordinateSpaceDevice)
 return InvalidParameter;

 if(graphics->busy)


and:
Description: Do not look for sysctl, to avoid gcc warnings with Werror=cpp on 
newer glibc

Author: Gianfranco Costamagna 
Last-Update: 2019-12-31

--- wine-5.0~rc1.orig/configure.ac
+++ wine-5.0~rc1/configure.ac
@@ -553,7 +553,7 @@ AC_HEADER_STAT()

 dnl  Checks for headers that depend on other ones 

-AC_CHECK_HEADERS([sys/mount.h sys/statfs.h sys/sysctl.h sys/user.h 
sys/vfs.h],,,
+AC_CHECK_HEADERS([sys/mount.h sys/statfs.h sys/user.h sys/vfs.h],,,
 [#include 
  #ifdef HAVE_SYS_PARAM_H
  # include 



Bug#947884: wine-development: patches for arm64 build failure

2020-01-01 Thread Gianfranco Costamagna
Source: wine-development
Version: 4.21-2
Severity: serious
control: affects -1 src:wine

Hello, I took some time to have a look on wine FTBFS, and I think I crafted 
some patches that are pending upstream review
https://bugs.winehq.org/show_bug.cgi?id=48398

+wine-development (4.21-2.1) unstable; urgency=medium
+
+  * Non-maintainer upload (Closes: #-1)
+  * Fix new-gcc errors on arm64. 
+  * Do not check anymore for sysctl header file 
+
+ -- Gianfranco Costamagna   Tue, 31 Dec 2019 
17:27:10 +0100

the sysctl hack is needed for the new glibc

The very same patches are applying cleanly to wine too.

thanks

Gianfranco
diff -Nru wine-5.0~rc1/debian/patches/anysize-array.patch 
wine-5.0~rc1/debian/patches/anysize-array.patch
--- wine-5.0~rc1/debian/patches/anysize-array.patch 1970-01-01 
01:00:00.0 +0100
+++ wine-5.0~rc1/debian/patches/anysize-array.patch 2019-12-31 
18:29:19.0 +0100
@@ -0,0 +1,32 @@
+Description:
+clang -c -o file.o file.c -I. -I../../include -I../../include/msvcrt 
-D__WINESRC__ -D_REENTRANT -fPIC -fno-builtin -fshort-wchar -Wall -pipe 
-fcf-protection=none -fno-stack-protector -fno-strict-aliasing 
-Wdeclaration-after-statement -Wempty-body -Wignored-qualifiers 
-Wno-pragma-pack -Wstrict-prototypes -Wtype-limits -Wvla -Wwrite-strings 
-Wpointer-arith -gdwarf-2 -gstrict-dwarf -Werror -Wdate-time -g -O2 
-fdebug-prefix-map=/<>=. -fstack-protector-strong -Wformat 
-Werror=format-security -Wno-shift-overflow -Wno-unused-function 
-Wno-deprecated-declarations -Wno-enum-conversion -Wno-absolute-value
+file.c:1057:49: error: array index 1 is past the end of the array (which 
contains 1 element) [-Werror,-Warray-bounds]
+dir_info->FileName[0] == '.' && dir_info->FileName[1] == '.') 
continue;
+^  ~
+../../include/winternl.h:551:5: note: array 'FileName' declared here
+WCHAR   FileName[ANYSIZE_ARRAY];
+Author: Gianfranco Costamagna 
+Last-Update: 2019-12-31
+
+--- wine-development-4.21.orig/include/winnt.h
 wine-development-4.21/include/winnt.h
+@@ -4115,7 +4115,7 @@ typedef struct tagMESSAGE_RESOURCE_DATA
+  * First a constant for the following typedefs.
+  */
+ 
+-#define ANYSIZE_ARRAY   1
++#define ANYSIZE_ARRAY   2
+ 
+ /* FIXME:  Orphan.  What does it point to? */
+ typedef PVOID PACCESS_TOKEN;
+--- wine-development-4.21.orig/tools/winapi/winapi_test
 wine-development-4.21/tools/winapi/winapi_test
+@@ -140,7 +140,7 @@ my $progress_max = scalar(@files);
+ my %type_name2type;
+ 
+ my %defines = (
+-"ANYSIZE_ARRAY" => 1,
++"ANYSIZE_ARRAY" => 2,
+ "CCHDEVICENAME" => 32,
+ "CCHILDREN_TITLEBAR+1" => 6,
+ "ELF_VENDOR_SIZE" => 4,
diff -Nru wine-5.0~rc1/debian/patches/fix-bad-comparison.patch 
wine-5.0~rc1/debian/patches/fix-bad-comparison.patch
--- wine-5.0~rc1/debian/patches/fix-bad-comparison.patch1970-01-01 
01:00:00.0 +0100
+++ wine-5.0~rc1/debian/patches/fix-bad-comparison.patch2019-12-31 
18:29:19.0 +0100
@@ -0,0 +1,36 @@
+Description:
+../../tools/winegcc/winegcc -o d3dcompiler_47.dll.so --wine-objdir ../.. -fPIC 
-fasynchronous-unwind-tables -shared d3dcompiler_47.spec -mno-cygwin 
asmparser.o blob.o bytecodewriter.o compiler.o main.o preproc.o reflection.o 
utils.o asmshader.tab.o hlsl.tab.o ppy.tab.o asmshader.yy.o hlsl.yy.o ppl.yy.o 
version.res ../../dlls/dxguid/libdxguid.a ../../dlls/uuid/libuuid.a 
-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now 
-Wl,-rpath,/usr/lib/aarch64-linux-gnu/wine
+../d3dx9_36/effect.c:1472:12: error: result of comparison of unsigned enum 
expression < 0 is always false 
[-Werror,-Wtautological-unsigned-enum-zero-compare]
+if (op < 0 || op > SCT_PSINT)
+~~ ^ ~
+1 error generated.
+
+Author: Gianfranco Costamagna 
+
+Forwarded: pending
+Last-Update: 2019-12-31
+
+--- wine-5.0~rc1.orig/dlls/d3dx9_36/effect.c
 wine-5.0~rc1/dlls/d3dx9_36/effect.c
+@@ -1469,7 +1469,7 @@ static HRESULT d3dx_set_shader_const_sta
+ D3DXVECTOR4 value;
+ HRESULT ret;
+ 
+-if (op < 0 || op > SCT_PSINT)
++if (op > SCT_PSINT)
+ {
+ FIXME("Unknown op %u.\n", op);
+ return D3DERR_INVALIDCALL;
+--- wine-5.0~rc1.orig/dlls/gdiplus/graphics.c
 wine-5.0~rc1/dlls/gdiplus/graphics.c
+@@ -6836,8 +6836,8 @@ GpStatus WINGDIPAPI GdipTransformPoints(
+ GpCoordinateSpace src_space, GpPointF 
*points, INT count)
+ {
+ if(!graphics || !points || count <= 0 ||
+-   dst_space < 0 || dst_space > CoordinateSpaceDevice ||
+-   src_space < 0 || src_space > CoordinateSpaceDevice)
++   dst_space > CoordinateSpaceDevice ||
++   src_space > CoordinateSpaceDevice)
+ return InvalidParameter;
+ 
+ if(graphics->busy)
diff -Nru wine-5.0~rc1/debian/patches/for-loop.patch 
wine-5.0~rc1/debian/patches/for-loop.patch
--- wine-5.0~rc1/debian/patches/for-loop.patch  1970-01-01 01:00:00.0 
+0100
+++