https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116870

            Bug ID: 116870
           Summary: Corrupt executable created by GCC 14.2 on Windows
                    MinGW64 with mingw-w64-x86_64-toolchain
           Product: gcc
           Version: 14.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: zmajeed at sbcglobal dot net
  Target Milestone: ---

The debug build of duckdb on Windows MinGW64 produces a bad executable binary -
the release build works fine

DuckDB is large program at https://github.com/duckdb/duckdb - it's built in
MSYS2 MinGW64 on Windows - a debug build takes 25-30 minutes

Here's the resulting executable

----------------------------------------------------------

duckdb -version
-bash: duckdb: cannot execute binary file: Exec format error

ls -l duckdb
-rwxr-xr-x 3289334503 Sep 27 12:32 duckdb

file duckdb
duckdb: PE32+ executable (console) x86-64, for MS Windows, 21 sections

----------------------------------------------------------

I used readobjpe to get more info on the object - it shows section 14
.debug_info is invalid

----------------------------------------------------------

readobjpe duckdb

Reading: duckdb
WARNING section VirtualSize size 0xaf6f51c3 is larger than 2GB and suggests
this object is corrupt
File: duckdb  Object type letter: P version: 80
 64bit?         : yes
 filesize       : 3301642798
 offsetsize     : 64
 pointersize    : 64
 ftype          : 0
 endianness     : 2
 nthdroffset    : 0x00000084
 Opt-hdr-offset : 0x00000098
 Opt-hdr-size   : 0x000000f0
 symtab-offset  : 0xba562e00
 strtab-offset  : 0xbd2a358e
 strtab-size    : 0x07a0dca0
 sectable-offset: 0x00000188
nt header
  machine       : 0x00008664
  NumberOfSects : 0x00000016
  PtrToSymTab   : 0xba562e00
  NumberofSyms  : 0x0028394f
  OptHdrSize    : 0x000000f0
  Charctrstics  : 0x00000026
Optional Header
  Magic         : 0x0000020b
  SectionAlign  : 0x00000000
  SizeOfHeadrs  : 0x00000600
  ImageBase     : 0x140000000
Display 23 sections.

Section 14 fileoff: 0x00000390
  Name:                   /19   :          .debug_info
  VirtSize       : 0xaf6f51c3  (2943308227)
  VirtAddr       : 0x0468d000  (73977856)
  Raw size       : 0xaf6f5200  (2943308288)
  Ptr To Rawdata : 0x0467e600  (73917952)
  Characteristics: 0x42000040  (1107296320)

----------------------------------------------------------

Here's duckdb docs on setting the Windows environment and building from source
- https://duckdb.org/docs/dev/building/build_instructions

Here are incantations for a debug build that are not documented

cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBUILD_EXTENSIONS="icu;parquet;json"
-B build -DENABLE_SANITIZER=FALSE -DENABLE_UBSAN=0 -DDISABLE_UNITY=1

cmake --build build --config Debug

The extra cmake options disable sanitizers that are not supported on Windows -
and disable cmake unity build to compile each source file separately

I tried a build with -gdwarf-4 but it also produced a bad executable

----------------------------------------------------------

Snippets from build logs

[749/2146] c++.exe -DDUCKDB -DDUCKDB_BUILD_LIBRARY
-DDUCKDB_EXTENSION_ICU_LINKED=1 -DDUCKDB_EXTENSION_JSON_LINKED=1
-DDUCKDB_EXTENSION_PARQUET_LINKED=1 -DDUCKDB_MAIN_LIBRARY -Isrc/include
-Ithird_party/fsst -Ithird_party/fmt/include -Ithird_party/hyperloglog
-Ithird_party/fastpforlib -Ithird_party/skiplist -Ithird_party/fast_float
-Ithird_party/re2 -Ithird_party/miniz -Ithird_party/utf8proc/include
-Ithird_party/concurrentqueue -Ithird_party/pcg -Ithird_party/mbedtls/include
-Ithird_party/jaro_winkler -Ithird_party/yyjson/include -Iextension
-Iextension/icu/include -Iextension/parquet/include -Iextension/json/include -g
-g -O0 -DDEBUG -Wall    -Wunused -Werror=vla -Wnarrowing -pedantic -Wextra
-Wno-unused-parameter -Wno-redundant-move -Wimplicit-fallthrough -std=c++11 -MD
-MT
src/function/table/system/CMakeFiles/duckdb_table_func_system.dir/duckdb_optimizers.cpp.obj
-MF
src\function\table\system\CMakeFiles\duckdb_table_func_system.dir\duckdb_optimizers.cpp.obj.d
-
o
src/function/table/system/CMakeFiles/duckdb_table_func_system.dir/duckdb_optimizers.cpp.obj
-c src/function/table/system/duckdb_optimizers.cpp

[2143/2146] cmd.exe /C "cd . && mingw64\bin\c++.exe -D_POSIX_C_SOURCE=200809L
-g -g -O0 -DDEBUG -Wall    -Wu
nused -Werror=vla -Wnarrowing -pedantic -Wextra -Wno-unused-parameter
-Wno-redundant-move -Wimplicit-fallthrough   -shared -o src\libduckdb.dll
-Wl,--out-implib,src\libduckdb.dll.a
-Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\duckdb.rsp &&
cd ."

[2144/2146] cmd.exe /C "cd . && mingw64\bin\c++.exe -D_POSIX_C_SOURCE=200809L
-g -g -O0 -DDEBUG -Wall    -Wunused -Werror=vla -Wnarrowing -pedantic 
tools/shell/CMakeFiles/shell.dir/shell.c.obj -o duckdb.exe
-Wl,--out-implib,tools\shell\libduckdb.dll.a
-Wl,--major-image-version,0,--minor-image-version,0 
tools/sqlite3_api_wrapper/libsqlite3_api_wrapper_static.a 
src/libduckdb_static.a  extension/icu/libicu_extension.a 
extension/parquet/libparquet_extension.a  extension/json/libjson_extension.a 
src/libduckdb_static.a  extension/icu/libicu_extension.a 
extension/parquet/libparquet_extension.a  extension/json/libjson_extension.a 
-lws2_32  -lrstrtmgr  third_party/fsst/libduckdb_fsst.a 
third_party/fmt/libduckdb_fmt.a  third_party/libpg_query/libduckdb_pg_query.a 
third_party/re2/libduckdb_re2.a  third_party/miniz/libduckdb_miniz.a 
third_party/hyperloglog/libduckdb_hyperloglog.a 
third_party/fastpforlib/libduckdb_fastpforlib.a 
third_party/skiplist/libduckdb_skiplistlib.a 
third_party/mbedtls/libduckdb_mbedtls.a  third_party/yyjson/libduckdb_yyjson.a 
third_party/utf8proc/libduckdb_utf8proc.a  -lkernel32 -luser32 -lgdi32
-lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."

----------------------------------------------------------

c++ --version
c++.exe (Rev1, Built by MSYS2 project) 14.2.0
  • [Bug target/116870] New: Corrupt... zmajeed at sbcglobal dot net via Gcc-bugs

Reply via email to