Skip to content

Compilation failure with -O0 + -fsanitize=address due to inline asm #29801

Description

@achow101

Is there an existing issue for this?

  • I have searched the existing issues

Current behaviour

Configure with

./configure --enable-fuzz --enable-debug --with-sanitizers=address,fuzzer,undefined,integer CC=clang CXX=clang++

Compile fails:

crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:1882: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:2591: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:3284: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:4686: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:5395: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:6088: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:7490: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:8199: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:8892: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:10312: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:11021: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:11714: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:12859: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:13356: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:13853: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:14900: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:15397: note: instantiated into assembly here
crypto/sha256_sse4.cpp:44:9: error: expected relocatable expression
   44 |         "shl    $0x6,%2;"
      |         ^
<inline asm>:1:15894: note: instantiated into assembly here
18 errors generated.
make[2]: *** [Makefile:14531: crypto/libbitcoin_crypto_base_la-sha256_sse4.lo] Error 1

Expected behaviour

It should successfully compile with the debug symbols so that fuzz crashes can be debugged.

Previously, it was possible to work around this issue by using --disable-asm however that was removed in #29407

Steps to reproduce

See above configure .

--enable-debug and --enable-fuzz individually do not result in compilation failure. I am only seeing this when using them together.

Relevant log output

config.log

How did you obtain Bitcoin Core

Compiled from source

What version of Bitcoin Core are you using?

master@0d509bab45d292caeaf34600e57b5928757c6005

Operating system and version

Arch w/ linux kernel 6.8.2

Machine specifications

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions