etcimon / botan

Block & stream ciphers, public key crypto, hashing, KDF, MAC, PKCS, TLS, ASN.1, BER/DER, etc.
Other
85 stars 22 forks source link

Error Compiling on intel MacOS 11.6 #62

Closed andrewlalis closed 1 year ago

andrewlalis commented 1 year ago

I've tried to compile my program which utilises the botan library, but I'm getting an error in linking:

ld: in ../../.dub/packages/botan-1.13.4/botan/.dub/build/full-debug-posix.osx.darwin-x86_64-dmd_v2.100.2-546FB64FC7DE8C501100DC4B35E7C7EF/libbotan.a(unique_2fcf_3b6.o), in section __TEXT,__textcoal_nt reloc 0: symbol index out of range
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Error: linker exited with status 1

The full output from dub build -v is shown below:

andrew.lalis@C02GG1DPMD6T scrambler % dub build -v
Using dub registry url 'https://code.dlang.org/'
Refreshing local packages (refresh existing: true)...
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /Users/andrew.lalis/.dub/packages/local-packages.json
Looking for local package map at /Users/andrew.lalis/andrewlalis-github/scrambler/.dub/packages/local-packages.json
Determined package version using GIT: scrambler ~main
Refreshing local packages (refresh existing: false)...
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /Users/andrew.lalis/.dub/packages/local-packages.json
Looking for local package map at /Users/andrew.lalis/andrewlalis-github/scrambler/.dub/packages/local-packages.json
  Found dependency botan 1.13.4
    Found dependency botan-math 1.0.4
    Found dependency memutils 1.0.9
    Version selection for dependency openssl (openssl) of botan is missing.
    Missing dependency openssl ~>1.1.7 (optional) of botan
Refreshing local packages (refresh existing: false)...
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /Users/andrew.lalis/.dub/packages/local-packages.json
Looking for local package map at /Users/andrew.lalis/andrewlalis-github/scrambler/.dub/packages/local-packages.json
  Found dependency botan 1.13.4
    Found dependency botan-math 1.0.4
    Found dependency memutils 1.0.9
    Version selection for dependency openssl (openssl) of botan is missing.
    Missing dependency openssl ~>1.1.7 (optional) of botan
Generating using build
Configuring dependent scrambler, deps:"botan"
  Configuring dependent botan, deps:"botan-math", "memutils"
    Configuring dependent botan-math, deps:
    Configuring dependent memutils, deps:
Performing "debug" build using /Library/D/dmd/bin/dmd for x86_64.
botan-math 1.0.4: target for configuration "library" is up to date.
Using existing build in /Users/andrew.lalis/.dub/packages/botan-math-1.0.4/botan-math/.dub/build/library-debug-posix.osx.darwin-x86_64-dmd_v2.100.2-FABAC836F029A06F331C0D49ECDCFF92/.
Copying target from /Users/andrew.lalis/.dub/packages/botan-math-1.0.4/botan-math/.dub/build/library-debug-posix.osx.darwin-x86_64-dmd_v2.100.2-FABAC836F029A06F331C0D49ECDCFF92/libbotan_math.a to /Users/andrew.lalis/.dub/packages/botan-math-1.0.4/botan-math/build
memutils 1.0.9: target for configuration "secure" is up to date.
Using existing build in /Users/andrew.lalis/.dub/packages/memutils-1.0.9/memutils/.dub/build/secure-debug-posix.osx.darwin-x86_64-dmd_v2.100.2-9570F4075D74A1216698E417EC8AAAE4/.
Copying target from /Users/andrew.lalis/.dub/packages/memutils-1.0.9/memutils/.dub/build/secure-debug-posix.osx.darwin-x86_64-dmd_v2.100.2-9570F4075D74A1216698E417EC8AAAE4/libmemutils.a to /Users/andrew.lalis/.dub/packages/memutils-1.0.9/memutils
botan 1.13.4: target for configuration "full" is up to date.
Using existing build in /Users/andrew.lalis/.dub/packages/botan-1.13.4/botan/.dub/build/full-debug-posix.osx.darwin-x86_64-dmd_v2.100.2-546FB64FC7DE8C501100DC4B35E7C7EF/.
Copying target from /Users/andrew.lalis/.dub/packages/botan-1.13.4/botan/.dub/build/full-debug-posix.osx.darwin-x86_64-dmd_v2.100.2-546FB64FC7DE8C501100DC4B35E7C7EF/libbotan.a to /Users/andrew.lalis/.dub/packages/botan-1.13.4/botan/build
Target '/Users/andrew.lalis/andrewlalis-github/scrambler/.dub/build/application-debug-posix.osx.darwin-x86_64-dmd_v2.100.2-F7556BC6214436E82C98CF93F8BD91C2/scrambler' doesn't exist, need rebuild.
scrambler ~main: building configuration "application"...
pkg-config failed: Executable file not found: pkg-config
Falling back to direct -l... flags.
/Library/D/dmd/bin/dmd -c -of.dub/build/application-debug-posix.osx.darwin-x86_64-dmd_v2.100.2-F7556BC6214436E82C98CF93F8BD91C2/scrambler.o -debug -g -w -version=Have_scrambler -version=Have_botan -version=Botan -version=CanTest -version=SHA2_32 -version=SHA2_64 -version=MD4 -version=MD5 -version=SHA1 -version=CRC24 -version=PBKDF1 -version=PBKDF2 -version=CTR_BE -version=HMAC -version=POLY1305 -version=EMSA1 -version=EMSA1_BSI -version=EMSA_X931 -version=EMSA_PKCS1 -version=EMSA_PSSR -version=EMSA_RAW -version=EME_OAEP -version=EME_PKCS1v15 -version=PBE_PKCSv20 -version=Self_Tests -version=ECB -version=CBC -version=XTS -version=OFB -version=CFB -version=AEAD_FILTER -version=AEAD_CCM -version=AEAD_EAX -version=AEAD_OCB -version=AEAD_GCM -version=AEAD_SIV -version=AEAD_CHACHA20_POLY1305 -version=RFC6979 -version=RSA -version=RW -version=DLIES -version=DSA -version=ECDSA -version=ElGamal -version=GOST_3410 -version=Curve25519 -version=Nyberg_Rueppel -version=Diffie_Hellman -version=ECDH -version=AES -version=Blowfish -version=Camellia -version=CAST -version=Cascade -version=DES -version=GOST_28147 -version=IDEA -version=KASUMI -version=LION -version=MARS -version=MISTY1 -version=NOEKEON -version=RC2 -version=RC5 -version=RC6 -version=SAFER -version=SEED -version=Serpent -version=TEA -version=Twofish -version=Threefish -version=XTEA -version=Adler32 -version=CRC32 -version=GOST_3411 -version=HAS_160 -version=Keccak -version=MD2 -version=RIPEMD_128 -version=RIPEMD_160 -version=Skein_512 -version=Tiger -version=Whirlpool -version=ParallelHash -version=Comb4P -version=CBC_MAC -version=CMAC -version=SSL3_MAC -version=ANSI_X919_MAC -version=RC4 -version=ChaCha -version=Salsa20 -version=Serpent_SIMD -version=SIMD_Scalar -version=Noekeon_SIMD -version=XTEA_SIMD -version=Engine_AES_ISA -version=Entropy_DevRand -version=Entropy_EGD -version=Entropy_UnixProc -version=Entropy_Win32 -version=Entropy_ProcWalk -version=X931_RNG -version=HMAC_DRBG -version=KDF1 -version=KDF2 -version=SSL_V3_PRF -version=TLS_V10_PRF -version=TLS_V12_PRF -version=X942_PRF -version=TLS -version=X509 -version=PUBKEY -version=FPE_FE1 -version=RFC3394 -version=PassHash9 -version=BCrypt -version=SRP6 -version=TSS -version=CryptoBox -version=CryptoBox_PSK -version=Engine_ASM -version=Entropy_Rdrand -version=Entropy_HRTimer -version=SHA1_x86_64 -version=AES_NI -version=SIMD_SSE2 -version=AES_SSSE3 -version=IDEA_SSE2 -version=SHA1_SSE2 -version=Engine_SIMD -version=ZLib -version=Have_botan_math -version=Have_memutils -version=CryptoSafe -Isource/ -I../../.dub/packages/botan-1.13.4/botan/source/ -I../../.dub/packages/botan-math-1.0.4/botan-math/source/ -I../../.dub/packages/memutils-1.0.9/memutils/source/ source/app.d source/cipher_utils.d source/cli_utils.d -vcolumns
Enhanced memory security is enabled.
Memory debugger enabled
Linking...
/Library/D/dmd/bin/dmd -of.dub/build/application-debug-posix.osx.darwin-x86_64-dmd_v2.100.2-F7556BC6214436E82C98CF93F8BD91C2/scrambler .dub/build/application-debug-posix.osx.darwin-x86_64-dmd_v2.100.2-F7556BC6214436E82C98CF93F8BD91C2/scrambler.o ../../.dub/packages/botan-1.13.4/botan/.dub/build/full-debug-posix.osx.darwin-x86_64-dmd_v2.100.2-546FB64FC7DE8C501100DC4B35E7C7EF/libbotan.a ../../.dub/packages/botan-math-1.0.4/botan-math/.dub/build/library-debug-posix.osx.darwin-x86_64-dmd_v2.100.2-FABAC836F029A06F331C0D49ECDCFF92/libbotan_math.a ../../.dub/packages/memutils-1.0.9/memutils/.dub/build/secure-debug-posix.osx.darwin-x86_64-dmd_v2.100.2-9570F4075D74A1216698E417EC8AAAE4/libmemutils.a -L-ldl -g
ld: in ../../.dub/packages/botan-1.13.4/botan/.dub/build/full-debug-posix.osx.darwin-x86_64-dmd_v2.100.2-546FB64FC7DE8C501100DC4B35E7C7EF/libbotan.a(unique_2fcf_3b6.o), in section __TEXT,__textcoal_nt reloc 0: symbol index out of range
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Error: linker exited with status 1
FAIL .dub/build/application-debug-posix.osx.darwin-x86_64-dmd_v2.100.2-F7556BC6214436E82C98CF93F8BD91C2/ scrambler executable
uncaught exception
dub.compilers.compiler.CompilerInvocationException@source/dub/compilers/compiler.d(145): /Library/D/dmd/bin/dmd failed with exit code 1.
----------------
??:? void dub.compilers.compiler.Compiler.invokeTool(immutable(char)[][], void delegate(int, immutable(char)[]), immutable(char)[][immutable(char)[]]) [0x10c785a80]
??:? void dub.compilers.dmd.DMDCompiler.invokeLinker(in dub.compilers.buildsettings.BuildSettings, in dub.platform.BuildPlatform, immutable(char)[][], void delegate(int, immutable(char)[])) [0x10c78f1f4]
??:? void dub.generators.build.BuildGenerator.buildWithCompiler(dub.generators.generator.GeneratorSettings, dub.compilers.buildsettings.BuildSettings) [0x10c7796ba]
??:? bool dub.generators.build.BuildGenerator.performCachedBuild(dub.generators.generator.GeneratorSettings, dub.compilers.buildsettings.BuildSettings, in dub.package_.Package, immutable(char)[], immutable(char)[], in dub.package_.Package[], in dub.internal.vibecompat.inet.path.NativePath[], out dub.internal.vibecompat.inet.path.NativePath) [0x10c7779e3]
etcimon commented 1 year ago

Could you try using latest DMD or LDC? It seems like it might be an issue with Unique!T according to libbotan.a(unique_2fcf_3b6.o) but everything passes the unittests in github workflows currently

There's an existing bug report for macOS regarding this error on dmd:

https://issues.dlang.org/show_bug.cgi?id=19044

Otherwise, do you have a sample use case that triggers this bug? Unique types are used mostly in TLS which can be disabled using a smaller configuration

andrewlalis commented 1 year ago

I was able to compile using the latest LDC (1.32.0), so I will close this.