| REQUIRES: x86 |
| RUN: split-file %s %t.dir && cd %t.dir |
| |
| RUN: llvm-mc -filetype=obj -triple=x86_64-windows chain-bad.s -o chain-bad.obj |
| RUN: llvm-mc -filetype=obj -triple=x86_64-windows chain-bad2.s -o chain-bad2.obj |
| RUN: llvm-mc -filetype=obj -triple=x86_64-windows globals-bad.s -o globals-bad.obj |
| RUN: llvm-mc -filetype=obj -triple=x86_64-windows chain-good.s -o chain-good.obj |
| RUN: llvm-mc -filetype=obj -triple=x86_64-windows chain-good2.s -o chain-good2.obj |
| RUN: llvm-mc -filetype=obj -triple=x86_64-windows globals-good.s -o globals-good.obj |
| |
| Temporary anti-dependency chains are allowed as long as they are broken by non-alias symbols. |
| |
| RUN: lld-link -machine:amd64 -dll -noentry -out:test.dll chain-good.obj globals-good.obj |
| RUN: lld-link -machine:amd64 -dll -noentry -out:test.dll chain-good2.obj globals-good.obj |
| |
| Chaining of anti-dependency symbols is not allowed. |
| |
| RUN: not lld-link -machine:amd64 -dll -noentry -out:test.dll chain-bad.obj globals-bad.obj 2>&1 \ |
| RUN: | FileCheck -check-prefix=ANTIDEP %s |
| RUN: not lld-link -machine:amd64 -dll -noentry -out:test.dll chain-bad2.obj globals-bad.obj 2>&1 \ |
| RUN: | FileCheck -check-prefix=ANTIDEP %s |
| |
| ANTIDEP: lld-link: error: undefined symbol: sym |
| ANTIDEP-NEXT: >>> referenced by chain-bad |
| |
| #--- chain-bad.s |
| .weak_anti_dep sym |
| .set sym,sym2 |
| .weak_anti_dep sym2 |
| .set sym2,sym3 |
| |
| #--- chain-bad2.s |
| .weak_anti_dep sym2 |
| .set sym2,sym3 |
| .weak sym |
| .set sym,sym2 |
| |
| #--- globals-bad.s |
| .section .test,"r" |
| .global sym3 |
| .set sym3,3 |
| |
| #--- chain-good.s |
| .weak_anti_dep sym |
| .set sym,sym2 |
| .weak_anti_dep sym2 |
| .set sym2,sym3 |
| .weak_anti_dep sym3 |
| .set sym3,sym4 |
| .weak_anti_dep sym4 |
| |
| #--- chain-good2.s |
| .weak_anti_dep sym |
| .set sym,sym2 |
| .weak_anti_dep sym2 |
| .set sym2,sym3 |
| .weak_anti_dep sym3 |
| .set sym3,weak_sym |
| .weak weak_sym |
| .set weak_sym,sym4 |
| .weak_anti_dep sym4 |
| |
| #--- globals-good.s |
| .section .test,"r" |
| .global sym2 |
| .set sym2,2 |
| .global sym4 |
| .set sym4,4 |