[Bug 51849] New: Debian packaging: When building debian packages, HARDENING flags will be passed to cross-compiler

WineHQ Bugzilla wine-bugs at winehq.org
Thu Oct 7 09:46:43 CDT 2021


https://bugs.winehq.org/show_bug.cgi?id=51849

            Bug ID: 51849
           Summary: Debian packaging: When building debian packages,
                    HARDENING flags will be passed to cross-compiler
           Product: Packaging
           Version: unspecified
          Hardware: x86-64
                OS: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: wine-packages
          Assignee: wine-bugs at winehq.org
          Reporter: cybermax at dexter.no
                CC: dimesio at earthlink.net
      Distribution: ---

When packages are built on debian, the default "hardening" flags will be passed
to wine/configure. The result from this is that wine/configure tries to do
checks for cross-compiler (mingw-w64) with flags meant to be used for ELF
binaries.

The flags are -Wl,-z,relro

This causes configure to fail several checks for cross-compiler.

The logs from WineHQ official OBS builds here for Debian 11:
https://build.opensuse.org/public/build/Emulators:Wine:Debian/Debian_11/x86_64/wine-devel/_log

Failing these checks will cause mingw-w64 to create loads of warnings like:
[ 1042s] In file included from dlls/cabinet/fdi.c:72:
[ 1042s] dlls/cabinet/fdi.c: In function 'FDI_read_string':
[ 1042s] dlls/cabinet/fdi.c:485:9: warning: format '%ld' expects argument of
type 'long int', but argument 6 has type 'INT_PTR' {aka 'long long int'}
[-Wformat=]
[ 1042s]   485 |   TRACE("(fdi == %p, hf == %ld, cabsize == %ld)\n", fdi, hf,
cabsize);
[ 1042s]       |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ~~
[ 1042s]       |                                                          |
[ 1042s]       |                                                         
INT_PTR {aka long long int}

If you however build without passing -Wl,-z,relro to mingw-w64, configure will
pass a lot more tests, and the compile is quite a lot less noisy:
https://build.opensuse.org/build/home:SveSop/Debian_11/x86_64/wine-devel/_log

Is there a possibility to avoid passing this flag to the cross-compiler in
wine/configure? From what i gather, the -Wl,-z,relro flag is meant for ELF
binaries, but afaik wine mostly (if not only) uses mingw-w64 to build PE libs,
and thus these flags fail.

You can add export DEB_LDFLAGS_MAINT_STRIP = -Wl,-z,relro to debian/rules, but
that ofc means the ELF binaries built by gcc will not get these hardening
flags.

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list