diff options
Diffstat (limited to 'lld/test/ELF/linkerscript/symbol-assign-many-passes2.test')
-rw-r--r-- | lld/test/ELF/linkerscript/symbol-assign-many-passes2.test | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/lld/test/ELF/linkerscript/symbol-assign-many-passes2.test b/lld/test/ELF/linkerscript/symbol-assign-many-passes2.test new file mode 100644 index 00000000000..b8a0624ac30 --- /dev/null +++ b/lld/test/ELF/linkerscript/symbol-assign-many-passes2.test @@ -0,0 +1,28 @@ +# REQUIRES: arm +# RUN: llvm-mc -arm-add-build-attributes -filetype=obj -triple=armv7a-linux-gnueabihf %S/../arm-thunk-many-passes.s -o %t.o +# RUN: ld.lld %t.o -T %s -o %t +# RUN: llvm-nm %t | FileCheck %s + +## arm-thunk-many-passes.s is worst case case of thunk generation that takes 9 +## passes to converge. It takes a few more passes to make symbol assignment +## converge. Test that +## 1. we don't error that "thunk creation not converged". +## 2. we check convergence of symbols defined in an output section descriptor. + +# CHECK: 01011050 T a +# CHECK: 0101104f T b +# CHECK: 0101104e T c +# CHECK: 0101104d T d +# CHECK: 0101104c T e + +SECTIONS { + . = SIZEOF_HEADERS; + .text 0x00011000 : { + a = b + 1; + b = c + 1; + c = d + 1; + d = e + 1; + *(.text); + } + e = .; +} |