Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix libz on Haiku #9

Closed
nielx opened this issue Jan 26, 2019 · 6 comments
Closed

Fix libz on Haiku #9

nielx opened this issue Jan 26, 2019 · 6 comments
Labels
upstream Tickets that track the upstreaming of patches waiting Waiting for an external action (like a PR approval)

Comments

@nielx
Copy link
Owner

nielx commented Jan 26, 2019

There is an issue with linking libz-sys into the cargo binary during the build process. The linker complains about a hidden symbol that is referenced by a DSO (dynamic shared object). I don't know what the issue is, or why this is specifically an issue for Haiku. We solve it by having the build script of libz-sys expose all symbols.

Currently we have to comment out line 103 from build.rs, so that it looks:

    if !target.contains("windows") {
        cfg.define("STDC", None);
        cfg.define("_LARGEFILE64_SOURCE", None);
        cfg.define("_POSIX_SOURCE", None);
 //       cfg.flag("-fvisibility=hidden");
    }

We need to figure out why this is a problem on Haiku, or make it permanent in the libz module.

@nielx nielx added this to the Rust on Haiku 1.33.0 milestone Jan 26, 2019
nielx pushed a commit that referenced this issue Nov 3, 2019
remove the reference to __cxa_thread_atexit_impl
@nielx
Copy link
Owner Author

nielx commented Apr 24, 2020

Could be related to https://dev.haiku-os.org/ticket/14531

@nielx
Copy link
Owner Author

nielx commented Oct 19, 2020

Relevant section:

(...)ld: /mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c: hidden symbol `inflateInit2_' in /mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/liblibz_sys-6c1a1219eabdf974.rlib(inflate.o) is referenced by DSO```

Full command (when compiling cargo):

Error: linking with `x86_64-unknown-haiku-gcc` failed: exit code: 1
  |
  = note: "x86_64-unknown-haiku-gcc" "-m64" "-Wl,--eh-frame-hdr" "-L" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.cargo.d47bxgq0-cgu.0.rcgu.o" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.cargo.d47bxgq0-cgu.1.rcgu.o" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.cargo.d47bxgq0-cgu.10.rcgu.o" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.cargo.d47bxgq0-cgu.11.rcgu.o" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.cargo.d47bxgq0-cgu.12.rcgu.o" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.cargo.d47bxgq0-cgu.13.rcgu.o" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.cargo.d47bxgq0-cgu.14.rcgu.o" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.cargo.d47bxgq0-cgu.15.rcgu.o" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.cargo.d47bxgq0-cgu.2.rcgu.o" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.cargo.d47bxgq0-cgu.3.rcgu.o" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.cargo.d47bxgq0-cgu.4.rcgu.o" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.cargo.d47bxgq0-cgu.5.rcgu.o" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.cargo.d47bxgq0-cgu.6.rcgu.o" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.cargo.d47bxgq0-cgu.7.rcgu.o" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.cargo.d47bxgq0-cgu.8.rcgu.o" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.cargo.d47bxgq0-cgu.9.rcgu.o" "-o" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c.4jtg7a1q2m33bxjv.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-Wl,-O1" "-nodefaultlibs" "-L" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps" "-L" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/release/deps" "-L" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/build/libnghttp2-sys-7af910d1081e4ae0/out/i/lib" "-L" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/build/libz-sys-d4fd8ada3467ffa7/out/build" "-L" "/mnt/d/Haiku/system-r1beta2-x86_64/develop/lib/" "-L" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/build/libgit2-sys-f11eb75e98bdf181/out/build" "-L" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/build/libssh2-sys-84bd8615a0c22347/out/build" "-L" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib" "-Wl,-Bstatic" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libgit2_curl-2d6c1ec943776665.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libenv_logger-b135925695fd7bfd.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libhumantime-27250f5f01e65a5a.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libquick_error-8ff193b90c5e1d67.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libcargo-c6295bbe3141335f.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libunicode_xid-5f3fbcc2fcd8efd0.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libhex-b40af9225f12031c.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libhome-e58b4cd331916998.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libopener-265261bbe962ae1d.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libim_rc-de33951cf00035c0.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/librand_xoshiro-83b1984620394847.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libsized_chunks-1d4849e0b99d74f1.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libbitmaps-152cb8a7cb295178.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libtypenum-19e837741f21de83.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libtoml-40dffb7da1ec95dd.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libstrip_ansi_escapes-f71469a9c92b7d91.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libvte-56ebfc56d6d49a42.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libutf8parse-21b91ae6f511c668.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libhumantime-3cdc8fda1e159e1f.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libnum_cpus-674611d8e1520e70.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libserde_ignored-a684906d1810fee5.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libcrypto_hash-4f71c88cb07e3f5c.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libopenssl-4a233e6a65417d41.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libforeign_types-3bfad783d9cf4ffe.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libforeign_types_shared-80a7bcf7ecc339d0.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libhex-8b7c1e31dbbcb5e3.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libshell_escape-9cc010a64a4e1c1f.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libclap-e4417c3511b99fc3.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libvec_map-842f28a191ff9c0d.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libtextwrap-26323c77841c5039.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libunicode_width-16e8358d478fe4ad.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libstrsim-19ebc58034184a81.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libatty-82f1246c4082f217.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libansi_term-3b1e1201ed4af353.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libignore-dd5b1d5ba86cfd37.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libwalkdir-1482d00e1626d5f2.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libsame_file-6a59d1991bdf006d.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libglobset-cb871aed988f7bf0.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libregex-1628976ca5b6029a.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libthread_local-41349b8281dd486d.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libregex_syntax-545d324b77bb258e.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libfnv-2b3f3b0e79936723.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libbstr-dbef8bc60afb9ec3.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libaho_corasick-b4f4bcd7aac51c0f.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libmemchr-f113e729e032b7ce.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libcrates_io-82fd4a23819bd1e2.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/librustfix-2f2969ca37706021.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libserde_json-98a8df3018d04864.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libryu-779074e3eae35c17.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libitoa-ccb7ed380a581ac4.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libtar-cd7039bb3e143511.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libflate2-84fa90e5d566f7fc.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libcrc32fast-353ef78ded98352e.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libgit2-8a68ebc79a02a044.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libopenssl_probe-061089be6b99576e.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/liblibgit2_sys-3ac97f90e562ae5b.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/liblibssh2_sys-d036581d53189d3f.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libopenssl_sys-8a982fae78bcdd02.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/liblibz_sys-6c1a1219eabdf974.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libbitflags-11f3cce589129db5.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libtempfile-a546b16c74d22466.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/librand-169e9697b927b17a.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/librand_chacha-239f0986db971414.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libppv_lite86-3d2224a7bdaa2c5d.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/librand_core-a210d482db850f25.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libgetrandom-a6f835c8bec63c85.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libremove_dir_all-2be0b07ce0000ee1.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libglob-7c1b90a05876140e.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libtermcolor-65875034dd001019.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libcurl-1dad292a5d4414ca.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libsocket2-4e2948ace34f38d2.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libcurl_sys-c530c73b26b2fd80.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libbytesize-8f020fc4a4e2a81b.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/liburl-35b79d2b6aa3726d.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libpercent_encoding-47f4de6ab251dbf7.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libidna-286accb3a69cf8b4.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libunicode_normalization-98af789afba9a511.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libtinyvec-971c5dcbf3742401.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libunicode_bidi-50130a3bba340d8e.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libmatches-67af28b0bf01ab48.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libcrossbeam_utils-6a3acf784883a1e4.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/liblazy_static-018158dae72fd156.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/liblazycell-c8e3ee11b33508b0.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libjobserver-efbd7de0c8e40d8c.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libfiletime-8b46f3af407e670b.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/liblibc-766758effe72f6ef.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libsemver-ecf5f99c9c1da05b.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libsemver_parser-fe62700cc3ebab59.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libcargo_platform-b941be59ff2ae413.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libserde-099c0a166aefd2ab.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/liblog-fe43fb2a64bedbf3.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libcfg_if-b9ffcefeffdd9185.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/libanyhow-c0e8590e8abba1f1.rlib" "-Wl,--start-group" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/libstd-269b9c7cf813a015.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/libpanic_unwind-0c41b462572e6d15.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/libminiz_oxide-706d2ebf0ec7739c.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/libadler-1c30d1ef6f8ae57a.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/libobject-793570e5bcd3de2a.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/libaddr2line-72bfc62ade3b6dce.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/libgimli-137e15dc455d4228.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/librustc_demangle-9d7034bebffb8a37.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/libhashbrown-05d6078ede14411b.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/librustc_std_workspace_alloc-9c31eb3818ef5a9d.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/libunwind-656218f2cc29441f.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/libcfg_if-5e66af6aa2376bb1.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/liblibc-421fb334360e05b5.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/liballoc-0f0bff0723f4606a.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/librustc_std_workspace_core-05004058973e04d5.rlib" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/libcore-681288b8fbc09c5c.rlib" "-Wl,--end-group" "/mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-haiku/lib/libcompiler_builtins-8c289de990425963.rlib" "-Wl,-Bdynamic" "-lssl" "-lcrypto" "-lcurl" "-lbsd" "-lgcc_s" "-lroot" "-lnetwork" "-lbsd"
  = note: /mnt/d/Haiku/build-r1beta2-x86_64/cross-tools-x86_64/lib/gcc/x86_64-unknown-haiku/8.3.0/../../../../x86_64-unknown-haiku/bin/ld: /mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/cargo-12d0297928c2f43c: hidden symbol `inflateInit2_' in /mnt/d/Rust/rust-x86/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-haiku/release/deps/liblibz_sys-6c1a1219eabdf974.rlib(inflate.o) is referenced by DSO
          /mnt/d/Haiku/build-r1beta2-x86_64/cross-tools-x86_64/lib/gcc/x86_64-unknown-haiku/8.3.0/../../../../x86_64-unknown-haiku/bin/ld: final link failed: bad value
          collect2: error: ld returned 1 exit status

@nielx
Copy link
Owner Author

nielx commented Oct 19, 2020

The issue actually seems to be that Haiku's libcurl.so depends on libz.so. This should be made explicit in the curl-sys build system.

@nielx
Copy link
Owner Author

nielx commented Oct 19, 2020

Unfortunately adding -lz to libcurl.so does not make the warning disappear.

@nielx
Copy link
Owner Author

nielx commented Feb 15, 2021

PR submitted: rust-lang/libz-sys#75

@nielx nielx added upstream Tickets that track the upstreaming of patches waiting Waiting for an external action (like a PR approval) labels Feb 15, 2021
nielx pushed a commit that referenced this issue Feb 16, 2021
HWAddressSanitizer support

#  Motivation
Compared to regular ASan, HWASan has a [smaller overhead](https://source.android.com/devices/tech/debug/hwasan). The difference in practice is that HWASan'ed code is more usable, e.g. Android device compiled with HWASan can be used as a daily driver.

# Example
```
fn main() {
    let xs = vec![0, 1, 2, 3];
    let _y = unsafe { *xs.as_ptr().offset(4) };
}
```
```
==223==ERROR: HWAddressSanitizer: tag-mismatch on address 0xefdeffff0050 at pc 0xaaaad00b3468
READ of size 4 at 0xefdeffff0050 tags: e5/00 (ptr/mem) in thread T0
    #0 0xaaaad00b3464  (/root/main+0x53464)
    #1 0xaaaad00b39b4  (/root/main+0x539b4)
    #2 0xaaaad00b3dd0  (/root/main+0x53dd0)
    #3 0xaaaad00b61dc  (/root/main+0x561dc)
    #4 0xaaaad00c0574  (/root/main+0x60574)
    #5 0xaaaad00b6290  (/root/main+0x56290)
    #6 0xaaaad00b6170  (/root/main+0x56170)
    #7 0xaaaad00b3578  (/root/main+0x53578)
    #8 0xffff81345e70  (/lib64/libc.so.6+0x20e70)
    #9 0xaaaad0096310  (/root/main+0x36310)

[0xefdeffff0040,0xefdeffff0060) is a small allocated heap chunk; size: 32 offset: 16
0xefdeffff0050 is located 0 bytes to the right of 16-byte region [0xefdeffff0040,0xefdeffff0050)
allocated here:
    #0 0xaaaad009bcdc  (/root/main+0x3bcdc)
    #1 0xaaaad00b1eb0  (/root/main+0x51eb0)
    #2 0xaaaad00b20d4  (/root/main+0x520d4)
    #3 0xaaaad00b2800  (/root/main+0x52800)
    #4 0xaaaad00b1cf4  (/root/main+0x51cf4)
    #5 0xaaaad00b33d4  (/root/main+0x533d4)
    #6 0xaaaad00b39b4  (/root/main+0x539b4)
    #7 0xaaaad00b61dc  (/root/main+0x561dc)
    #8 0xaaaad00b3578  (/root/main+0x53578)
    #9 0xaaaad0096310  (/root/main+0x36310)

Thread: T0 0xeffe00002000 stack: [0xffffc0590000,0xffffc0d90000) sz: 8388608 tls: [0xffff81521020,0xffff815217d0)
Memory tags around the buggy address (one tag corresponds to 16 bytes):
  0xfefcefffef80: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
  0xfefcefffef90: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
  0xfefcefffefa0: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
  0xfefcefffefb0: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
  0xfefcefffefc0: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
  0xfefcefffefd0: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
  0xfefcefffefe0: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
  0xfefcefffeff0: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
=>0xfefceffff000: a2  a2  05  00  e5 [00] 00  00  00  00  00  00  00  00  00  00
  0xfefceffff010: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
  0xfefceffff020: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
  0xfefceffff030: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
  0xfefceffff040: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
  0xfefceffff050: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
  0xfefceffff060: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
  0xfefceffff070: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
  0xfefceffff080: 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
Tags for short granules around the buggy address (one tag corresponds to 16 bytes):
  0xfefcefffeff0: ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..
=>0xfefceffff000: ..  ..  c5  ..  .. [..] ..  ..  ..  ..  ..  ..  ..  ..  ..  ..
  0xfefceffff010: ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..
See https://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html#short-granules for a description of short granule tags
Registers where the failure occurred (pc 0xaaaad00b3468):
    x0  e500efdeffff0050  x1  0000000000000004  x2  0000ffffc0d8f5a0  x3  0200efff00000000
    x4  0000ffffc0d8f4c0  x5  000000000000004f  x6  00000ffffc0d8f36  x7  0000efff00000000
    x8  e500efdeffff0050  x9  0200efff00000000  x10 0000000000000000  x11 0200efff00000000
    x12 0200effe000006b0  x13 0200effe000006b0  x14 0000000000000008  x15 00000000c00000cf
    x16 0000aaaad00a0afc  x17 0000000000000003  x18 0000000000000001  x19 0000ffffc0d8f718
    x20 ba00ffffc0d8f7a0  x21 0000aaaad00962e0  x22 0000000000000000  x23 0000000000000000
    x24 0000000000000000  x25 0000000000000000  x26 0000000000000000  x27 0000000000000000
    x28 0000000000000000  x29 0000ffffc0d8f650  x30 0000aaaad00b3468
```

# Comments/Caveats
* HWASan is only supported on arm64.
* I'm not sure if I should add a feature gate or piggyback on the existing one for sanitizers.
* HWASan requires `-C target-feature=+tagged-globals`. That flag should probably be set transparently to the user. Not sure how to go about that.

# TODO
* Need more tests.
* Update documentation.
* Fix symbolization.
* Integrate with CI
@nielx
Copy link
Owner Author

nielx commented May 8, 2021

Included in libz 1.1.3

@nielx nielx closed this as completed May 8, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
upstream Tickets that track the upstreaming of patches waiting Waiting for an external action (like a PR approval)
Projects
None yet
Development

No branches or pull requests

1 participant