Skip to content

[native_toolchain_c] Clang resolver trips over symlink to llvm executable #136

Open
@dcharkes

Description

@dcharkes

Apparently, newer clang versions all symlink to llvm, but then need to be invoked with llvm clang.

dacoharkes@dacoharkes-linux:~/dart-sdk/sdk/buildtools/linux-x64/clang/bin$ ls -lah clang
lrwxrwxrwx 1 dacoharkes primarygroup 4 Aug 23 15:10 clang -> llvm
dacoharkes@dacoharkes-linux:~/dart-sdk/sdk/buildtools/linux-x64/clang/bin$ ./llvm --version
OVERVIEW: llvm toolchain driver

USAGE: llvm [subcommand] [options]

SUBCOMMANDS:

  size
  readobj
  readelf
  rc
  windres
  profdata
  objcopy
  install-name-tool
  bitcode-strip
  strip
  nm
  mt
  lipo
  ifs
  gsymutil
  cxxfilt
  ar
  ranlib
  lib
  dlltool
  lld
  lld-link
  ld.lld
  ld64.lld
  wasm-ld
  clang-scan-deps
  clang
  clang++
  clang-cl
  clang-cpp

  Type "llvm <subcommand> --help" to get more help on a specific subcommand

OPTIONS:

  --help - Display this message

dacoharkes@dacoharkes-linux:~/dart-sdk/sdk/buildtools/linux-x64/clang/bin$ clang --version
Debian clang version 14.0.6
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

dacoharkes@dacoharkes-linux:~/dart-sdk/sdk/buildtools/linux-x64/clang/bin$ ls -lah ld.lld
lrwxrwxrwx 1 dacoharkes primarygroup 4 Aug 23 15:10 ld.lld -> llvm

Currently our logic fails, because it follows symlinks from clang to llvm and then fails to invoke llvm with a clang sub command.

In our tools abstraction, a tool instance refers to an executable, so having the linker/archiver/compiler all refer to the llvm executable is slightly weird, maybe we should have a new llvm tool/toolinstances to model this correctly.

The subcommand executables are still there, so as a stopgap we can probably stop following symlinks for LLVM for now.

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