| # REQUIRES: aarch64 |
| |
| # RUN: rm -rf %t && split-file %s %t |
| # RUN: llvm-mc -filetype=obj -triple=arm64-apple-darwin %t/a.s -o %t/a.o |
| |
| # RUN: %lld -arch arm64 -lSystem -e _main -o %t/a.out %t/a.o -order_file %t/ord-1 |
| # RUN: llvm-nm --numeric-sort --format=just-symbols %t/a.out | FileCheck %s |
| |
| #--- a.s |
| .text |
| .globl _main, A, _B, C.__uniq.111111111111111111111111111111111111111.llvm.2222222222222222222 |
| |
| _main: |
| ret |
| A: |
| ret |
| F: |
| add w0, w0, #3 |
| bl C.__uniq.111111111111111111111111111111111111111.llvm.2222222222222222222 |
| ret |
| C.__uniq.111111111111111111111111111111111111111.llvm.2222222222222222222: |
| add w0, w0, #2 |
| bl A |
| ret |
| D: |
| add w0, w0, #2 |
| bl B |
| ret |
| B: |
| add w0, w0, #1 |
| bl A |
| ret |
| E: |
| add w0, w0, #2 |
| bl C.__uniq.111111111111111111111111111111111111111.llvm.2222222222222222222 |
| ret |
| |
| .section __DATA,__objc_const |
| # test multiple symbols at the same address, which will be alphabetic sorted based symbol names |
| _OBJC_$_CATEGORY_CLASS_METHODS_Foo_$_Cat2: |
| .quad 789 |
| |
| _OBJC_$_CATEGORY_SOME_$_FOLDED: |
| _OBJC_$_CATEGORY_Foo_$_Cat1: |
| _ALPHABETIC_SORT_FIRST: |
| .quad 123 |
| |
| _OBJC_$_CATEGORY_Foo_$_Cat2: |
| .quad 222 |
| |
| _OBJC_$_CATEGORY_INSTANCE_METHODS_Foo_$_Cat1: |
| .quad 456 |
| |
| .section __DATA,__objc_data |
| _OBJC_CLASS_$_Foo: |
| .quad 123 |
| |
| _OBJC_CLASS_$_Bar.llvm.1234: |
| .quad 456 |
| |
| _OBJC_CLASS_$_Baz: |
| .quad 789 |
| |
| _OBJC_CLASS_$_Baz2: |
| .quad 999 |
| |
| .section __DATA,__objc_classrefs |
| .quad _OBJC_CLASS_$_Foo |
| .quad _OBJC_CLASS_$_Bar.llvm.1234 |
| .quad _OBJC_CLASS_$_Baz |
| |
| .subsections_via_symbols |
| |
| |
| #--- ord-1 |
| # change order, parital covered |
| A |
| B |
| C.__uniq.555555555555555555555555555555555555555.llvm.6666666666666666666 |
| _OBJC_CLASS_$_Baz |
| _OBJC_CLASS_$_Bar.__uniq.12345 |
| _OBJC_CLASS_$_Foo.__uniq.123.llvm.123456789 |
| _OBJC_$_CATEGORY_INSTANCE_METHODS_Foo_$_Cat1 |
| _OBJC_$_CATEGORY_Foo_$_Cat1.llvm.1234567 |
| |
| # .text |
| # CHECK: A |
| # CHECK: B |
| # CHECK: C |
| # .section __DATA,__objc_const |
| # CHECK: _OBJC_$_CATEGORY_INSTANCE_METHODS_Foo_$_Cat1 |
| # CHECK: _OBJC_$_CATEGORY_Foo_$_Cat1 |
| # .section __DATA,__objc_data |
| # CHECK: _OBJC_CLASS_$_Baz |
| # CHECK: _OBJC_CLASS_$_Bar |
| # CHECK: _OBJC_CLASS_$_Foo |