simoncook added a comment.

It seems the ability to link objects has been broken by this change. As an 
example from our nightly tests:

  Executing on host: riscv32-unknown-elf-clang 
/data/jenkins/workspace/riscv32-llvm-gcc/gcc-tests/gcc/testsuite/gcc.c-torture/execute/20080502-1.c
  -march=rv32gc -mabi=ilp32      -O1  -w      -lm  -o ./20080502-1.exe    
(timeout = 600)
  spawn -ignore SIGHUP riscv32-unknown-elf-clang 
/data/jenkins/workspace/riscv32-llvm-gcc/gcc-tests/gcc/testsuite/gcc.c-torture/execute/20080502-1.c
 -march=rv32gc -mabi=ilp32 -O1 -w -lm -o ./20080502-1.exe
  /data/jenkins/workspace/riscv32-llvm-gcc/install/bin/riscv32-unknown-elf-ld: 
cannot find crt0.o: No such file or directory
  clang-8: error: ld command failed with exit code 1 (use -v to see invocation)
  compiler exited with status 1
  FAIL: gcc.c-torture/execute/20080502-1.c   -O1  (test for excess errors)

Running with `-v` shows the link command as:

  "/data/jenkins/workspace/riscv32-llvm-gcc/install/bin/riscv32-unknown-elf-ld" 
crt0.o 
/data/jenkins/workspace/riscv32-llvm-gcc/install/bin/../lib/gcc/riscv32-unknown-elf/8.1.0/crtbegin.o
 -L/lib 
-L/data/jenkins/workspace/riscv32-llvm-gcc/install/bin/../lib/gcc/riscv32-unknown-elf/8.1.0
 /tmp/20080502-1-2b0022.o -lm --start-group -lc -lgloss --end-group -lgcc 
/data/jenkins/workspace/riscv32-llvm-gcc/install/bin/../lib/gcc/riscv32-unknown-elf/8.1.0/crtend.o
 -o ./20080502-1.exe

What's noticeable is `crt0.o` is specified just as a file, and we're trying to 
link in my host `/lib/` (`-L/lib`)? If I manually specify a sysroot (via 
`--sysroot=$INSTALLDIR/riscv32-unknown-elf`), then my link succeeds, adding the 
path to `crt0.o`, and the correct `/lib`:

  "/data/jenkins/workspace/riscv32-llvm-gcc/install/bin/riscv32-unknown-elf-ld" 
--sysroot=/data/jenkins/workspace/riscv32-llvm-gcc/install/riscv32-unknown-elf 
/data/jenkins/workspace/riscv32-llvm-gcc/install/riscv32-unknown-elf/lib/crt0.o 
/data/jenkins/workspace/riscv32-llvm-gcc/install/bin/../lib/gcc/riscv32-unknown-elf/8.1.0/crtbegin.o
 -L/data/jenkins/workspace/riscv32-llvm-gcc/install/riscv32-unknown-elf/lib 
-L/data/jenkins/workspace/riscv32-llvm-gcc/install/bin/../lib/gcc/riscv32-unknown-elf/8.1.0
 /tmp/20080502-1-d53be0.o -lm --start-group -lc -lgloss --end-group -lgcc 
/data/jenkins/workspace/riscv32-llvm-gcc/install/bin/../lib/gcc/riscv32-unknown-elf/8.1.0/crtend.o
 -o ./20080502-1.exe

I think there's some missing calculate the correct sysroot directory logic 
missing, unless linking `clang` to `riscv32-unknown-elf-clang` is no longer 
sufficient for everything to work now?


Repository:
  rC Clang

https://reviews.llvm.org/D46822



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to