rorth wrote:

> Ah, the "regression" indeed enforces the presence of the bug!
> 
> Consider the 
> [code](https://github.com/llvm/llvm-project/blob/622f72f4bef8b177e1e4f318465260fbdb7711ef/clang/test/Driver/solaris-ld-sanitizer.c#L50)
>  of the failing test:
> 
> ```
> /// Check i386-pc-solaris2.11, 64bit
> // RUN: %clang -m64 -fsanitize=undefined --target=i386-pc-solaris2.11 %s -### 
> -fuse-ld= \
> // RUN:     --sysroot=%S/Inputs/solaris_x86_tree 2>&1 \
> // RUN:   | FileCheck --check-prefix=CHECK-LD-X64-UBSAN %s
> // RUN: %clang -m64 -fsanitize=undefined --target=i386-pc-solaris2.11 %s -### 
> -fuse-ld=gld \
> // RUN:     --sysroot=%S/Inputs/solaris_x86_tree 2>&1 \
> // RUN:   | FileCheck --check-prefix=CHECK-GLD-X64-UBSAN %s
> 
> // CHECK-LD-X64-UBSAN: "-z" "relax=transtls"
> // CHECK-GLD-X64-UBSAN-NOT: "-z" "relax=transtls"
> ```
> 
> It checks that `-z relax=transtls` is passed to the linker. This flag should 
> only be passed to Solaris ld. If you build with CLANG_DEFAULT_LINKER as `bfd` 
> or `gld`, this test cannot possibly be correct.

That's not what the test does: with `-fuse-ld=`, `/usr/bin/ld` is invoked and 
and `-z relax=transtls` should be passed as checked using the 
`CHECK-LD-X64-UBSAN ` label.

OTOH with `-fuse-ld=gld` the `CHECK-GLD-X64-UBSAN` label is used instead, but 
`CHECK-GLD-X64-UBSAN-NOT` checks that `z relax=transtls` is **not** present.

Again, in my test with `-DCLANG_DEFAULT_LINKER=gld` on unmodified `main` that 
test did indeed `PASS`.

https://github.com/llvm/llvm-project/pull/163000
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to