http://bugs.winehq.org/show_bug.cgi?id=58523
Bug ID: 58523 Summary: Recent glibc change breaks wine build Product: Wine Version: 10.12 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: critical Priority: P2 Component: serial Assignee: wine-bugs@winehq.org Reporter: adamw@happyassassin.net Distribution: ---
In Fedora Rawhide, wine no longer builds with glibc-2.41.9000-21 or later. It builds OK with glibc-2.41.9000-20.
The -21 build includes these changes from upstream glibc:
- Auto-sync with upstream branch master, commit 0263528f8dd60cf58976e2d516b7c9edb16ae6f8: - malloc: fix definition for MAX_TCACHE_SMALL_SIZE - SFrame: Add tests that uses DWARF backtracer - configure: Add --enable-sframe option - elf: Add SFrame stack tracing - aarch64: Add SFrame support for aarch64 architecture - x86: Add SFrame support for x86 architecture - elf: Add SFrame support to _dl_find_object function - x86_64: Optimize modf/modff for x86_64-v2 - Linux: Keep termios ioctl constants strictly internal - termios: Move isatty, __isatty_nostatus from io - termios: Reflow and sort Makefile - Remove termios2 ioctl defintions from public headers - elf: Remove now pointless empty ld.so.conf files in single tests - support: Always run ldconfig in containered tests - Makefile: Add ld.so.conf with libgcc dir to testroot.pristine - Makeconfig: Add libgcc directory to rtld-prefix search path - Mark support for lock elision as deprecated. - x86: Avoid vector/r16-r31 registers and memcpy/memset in mcount_internal - fstat: add test and documentation for an edge case. - fstatat: extend tests and documentation - elf: Restore support for _r_debug interpositions and copy relocations - elf: Introduce _dl_debug_change_state - elf: Introduce separate _r_debug_array variable - manual: Remove '.info' suffix in manual names passed to @ref [BZ #32962]. - elf: Add DL_ADDRESS_WITHOUT_RELOC [BZ #33088] - stdlib: Fix __libc_message_impl iovec size (BZ 32947) - AArch64: Avoid memset ifunc in cpu-features.c [BZ #33112] - malloc: Cleanup tcache_init() - malloc: replace instances of __builtin_expect with __glibc_unlikely - malloc: refactored aligned_OK and misaligned_chunk - elf: Add missing DSO dependencies for tst-rtld-no-malloc-{audit,preload} - powerpc: Remove modf optimization - powerpc: Remove modff optimization - manual: Add missing free to open_memstream example [BZ #27866] - Linux: Convert '__close_nocancel_nostatus' to a standalone handler - Linux: Fix '__close_nocancel_nostatus' clobbering 'errno' [BZ #33035] - inet: Implement inet_ntoa on top of inet_ntop - resolv: Optimize inet_ntop - resolve: Proper indent resolv/inet_ntop.c - benchtests: Add IPv6 inet_ntop benchmark - benchtests: Add IPv4 inet_ntop benchmark - posix: Fix fnmatch build with gcc-16 - powerpc: use .machine power10 in POWER10 assembler sources
I suspect "Linux: Keep termios ioctl constants strictly internal", which is https://sourceware.org/git/?p=glibc.git;a=commit;h=3d3572f59059e2b19b8541ea6... .
The build failure looks like this:
dlls/ntdll/unix/serial.c: In function ‘get_baud_rate’: dlls/ntdll/unix/serial.c:130:19: error: ‘TCGETS2’ undeclared (first use in this function); did you mean ‘TCGETA’? 130 | if (ioctl(fd, TCGETS2, &port) == -1) | ^~~~~~~ | TCGETA dlls/ntdll/unix/serial.c:130:19: note: each undeclared identifier is reported only once for each function it appears in dlls/ntdll/unix/serial.c: In function ‘get_hand_flow’: dlls/ntdll/unix/serial.c:222:19: error: ‘TCGETS2’ undeclared (first use in this function); did you mean ‘TCGETA’? 222 | if (ioctl(fd, TCGETS2, &port) == -1) | ^~~~~~~ | TCGETA dlls/ntdll/unix/serial.c: In function ‘get_line_control’: dlls/ntdll/unix/serial.c:284:19: error: ‘TCGETS2’ undeclared (first use in this function); did you mean ‘TCGETA’? 284 | if (ioctl(fd, TCGETS2, &port) == -1) | ^~~~~~~ | TCGETA dlls/ntdll/unix/serial.c: In function ‘get_special_chars’: dlls/ntdll/unix/serial.c:400:19: error: ‘TCGETS2’ undeclared (first use in this function); did you mean ‘TCGETA’? 400 | if (ioctl(fd, TCGETS2, &port) == -1) | ^~~~~~~ | TCGETA dlls/ntdll/unix/serial.c: In function ‘set_baud_rate’: dlls/ntdll/unix/serial.c:499:19: error: ‘TCGETS2’ undeclared (first use in this function); did you mean ‘TCGETA’? 499 | if (ioctl(fd, TCGETS2, &port) == -1) | ^~~~~~~ | TCGETA dlls/ntdll/unix/serial.c:513:19: error: ‘TCSETS2’ undeclared (first use in this function); did you mean ‘TCSETA’? 513 | if (ioctl(fd, TCSETS2, &port) == -1) | ^~~~~~~ | TCSETA dlls/ntdll/unix/serial.c: In function ‘set_handflow’: dlls/ntdll/unix/serial.c:661:19: error: ‘TCGETS2’ undeclared (first use in this function); did you mean ‘TCGETA’? 661 | if (ioctl(fd, TCGETS2, &port) == -1) | ^~~~~~~ | TCGETA dlls/ntdll/unix/serial.c:713:19: error: ‘TCSETS2’ undeclared (first use in this function); did you mean ‘TCSETA’? 713 | if (ioctl(fd, TCSETS2, &port) == -1) | ^~~~~~~ | TCSETA dlls/ntdll/unix/serial.c: In function ‘set_line_control’: dlls/ntdll/unix/serial.c:735:19: error: ‘TCGETS2’ undeclared (first use in this function); did you mean ‘TCGETA’? 735 | if (ioctl(fd, TCGETS2, &port) == -1) | ^~~~~~~ | TCGETA dlls/ntdll/unix/serial.c:844:19: error: ‘TCSETS2’ undeclared (first use in this function); did you mean ‘TCSETA’? 844 | if (ioctl(fd, TCSETS2, &port) == -1) | ^~~~~~~ | TCSETA dlls/ntdll/unix/serial.c: In function ‘set_special_chars’: dlls/ntdll/unix/serial.c:870:19: error: ‘TCGETS2’ undeclared (first use in this function); did you mean ‘TCGETA’? 870 | if (ioctl(fd, TCGETS2, &port) == -1) | ^~~~~~~ | TCGETA dlls/ntdll/unix/serial.c:893:19: error: ‘TCSETS2’ undeclared (first use in this function); did you mean ‘TCSETA’? 893 | if (ioctl(fd, TCSETS2, &port) == -1) | ^~~~~~~ | TCSETA