Skip to content

LLVMTargetParser doesn't link against libkstat on Solaris/SPARC #64186

Open
@inferiorhumanorgans

Description

@inferiorhumanorgans

In trying to cross compile rust macos → solaris (SPARCv9 and x86-64) I've run into an issue on the SPARC side of things where the build fails with these errors:

/Users/alex/cross/gnu-solaris11/lib/gcc/sparcv9-sun-solaris2.11/11.2.0/../../../../sparcv9-sun-solaris2.11/bin/ld: /Users/alex/cross/rust-1.70.0/build/x86_64-apple-darwin/stage1-rustc/sparcv9-sun-solaris/release/deps/librustc_driver-4d9f640bd5851ea5.so: undefined reference to `kstat_data_lookup'
/Users/alex/cross/gnu-solaris11/lib/gcc/sparcv9-sun-solaris2.11/11.2.0/../../../../sparcv9-sun-solaris2.11/bin/ld: /Users/alex/cross/rust-1.70.0/build/x86_64-apple-darwin/stage1-rustc/sparcv9-sun-solaris/release/deps/librustc_driver-4d9f640bd5851ea5.so: undefined reference to `kstat_open'
/Users/alex/cross/gnu-solaris11/lib/gcc/sparcv9-sun-solaris2.11/11.2.0/../../../../sparcv9-sun-solaris2.11/bin/ld: /Users/alex/cross/rust-1.70.0/build/x86_64-apple-darwin/stage1-rustc/sparcv9-sun-solaris/release/deps/librustc_driver-4d9f640bd5851ea5.so: undefined reference to `kstat_close'
/Users/alex/cross/gnu-solaris11/lib/gcc/sparcv9-sun-solaris2.11/11.2.0/../../../../sparcv9-sun-solaris2.11/bin/ld: /Users/alex/cross/rust-1.70.0/build/x86_64-apple-darwin/stage1-rustc/sparcv9-sun-solaris/release/deps/librustc_driver-4d9f640bd5851ea5.so: undefined reference to `kstat_read'
/Users/alex/cross/gnu-solaris11/lib/gcc/sparcv9-sun-solaris2.11/11.2.0/../../../../sparcv9-sun-solaris2.11/bin/ld: /Users/alex/cross/rust-1.70.0/build/x86_64-apple-darwin/stage1-rustc/sparcv9-sun-solaris/release/deps/librustc_driver-4d9f640bd5851ea5.so: undefined reference to `kstat_lookup'
collect2: error: ld returned 1 exit status

A quick check shows:

[~/cross/rust-1.70.0]$ ag kstat_lookup
src/llvm-project/llvm/lib/TargetParser/Host.cpp
1521:    ksp = kstat_lookup(kc, const_cast<char *>("cpu_info"), -1, NULL);

src/llvm-project/third-party/benchmark/src/sysinfo.cc
659:  kstat_t* ksp = kstat_lookup(kc, (char*)"cpu_info", -1, (char*)"cpu_info0");

[~/cross/rust-1.70.0]$ ag -F -- -lkstat
src/llvm-project/third-party/benchmark/docs/platform_specific_build_instructions.md
48:too (`-lkstat`).

So it looks like the benchmark docs mention end users should manually link against libkstat. However for libLLVMTargetParser it seems like it should ideally be linked against libkstat at build time (or at least documented).

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