Skip to content

win: non-static libssp in libbitcoinconsensus DLL #28104

@fanquake

Description

@fanquake

If you Guix build for Windows, and call objdump on libbitcoinconsensus-0.dll, you'll find it uses a non-static libssp:

objdump -x src/.libs/libbitcoinconsensus-0.dll
...
The Import Tables (interpreted .idata section contents)
 vma:            Hint    Time      Forward  DLL       First
                 Table   Stamp     Chain    Name      Thunk
 00263000	00263050 00000000 00000000 0026409c 00263490

	DLL Name: libssp-0.dll
	vma:  Hint/Ord Member-Name Bound-To
	2638d0	    3  __memcpy_chk
	2638e0	    7  __stack_chk_fail
	2638f4	    8  __stack_chk_guard

DLLs should be built with a static libgcc/stdc++/ssp:

bitcoin/configure.ac

Lines 724 to 730 in 84c5416

dnl libtool insists upon adding -nostdlib and a list of objects/libs to link against.
dnl That breaks our ability to build dll's with static libgcc/libstdc++/libssp. Override
dnl its command here, with the predeps/postdeps removed, and -static inserted. Postdeps are
dnl also overridden to prevent their insertion later.
dnl This should only affect dll's.
archive_cmds_CXX="\$CC -shared \$libobjs \$deplibs \$compiler_flags -static -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib"
postdeps_CXX=

This has been an issue since we switched to using Guix for the 22.0 release.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions