|  | # REQUIRES: x86 | 
|  |  | 
|  | # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o | 
|  | # RUN: ld.lld -shared %t.o -o %t.out | 
|  | # RUN: llvm-readobj -r --expand-relocs --dynamic-table %t.out | FileCheck %s | 
|  |  | 
|  | # RUN: ld.lld -shared %t.o -o %t.out -z combreloc | 
|  | # RUN: llvm-readobj -r --expand-relocs --dynamic-table %t.out | FileCheck %s | 
|  |  | 
|  | # CHECK:      Relocations [ | 
|  | # CHECK-NEXT:   Section ({{.*}}) .rela.dyn { | 
|  | # CHECK-NEXT:     Relocation { | 
|  | # CHECK-NEXT:       Offset: 0x1000 | 
|  | # CHECK-NEXT:       Type: R_X86_64_64 | 
|  | # CHECK-NEXT:       Symbol: aaa (1) | 
|  | # CHECK-NEXT:       Addend: 0x0 | 
|  | # CHECK-NEXT:     } | 
|  | # CHECK-NEXT:     Relocation { | 
|  | # CHECK-NEXT:       Offset: 0x1018 | 
|  | # CHECK-NEXT:       Type: R_X86_64_64 | 
|  | # CHECK-NEXT:       Symbol: aaa (1) | 
|  | # CHECK-NEXT:       Addend: 0x0 | 
|  | # CHECK-NEXT:     } | 
|  | # CHECK-NEXT:     Relocation { | 
|  | # CHECK-NEXT:       Offset: 0x1010 | 
|  | # CHECK-NEXT:       Type: R_X86_64_64 | 
|  | # CHECK-NEXT:       Symbol: bbb (2) | 
|  | # CHECK-NEXT:       Addend: 0x0 | 
|  | # CHECK-NEXT:     } | 
|  | # CHECK-NEXT:     Relocation { | 
|  | # CHECK-NEXT:       Offset: 0x1008 | 
|  | # CHECK-NEXT:       Type: R_X86_64_64 | 
|  | # CHECK-NEXT:       Symbol: ccc (3) | 
|  | # CHECK-NEXT:       Addend: 0x0 | 
|  | # CHECK-NEXT:     } | 
|  | # CHECK-NEXT:     Relocation { | 
|  | # CHECK-NEXT:       Offset: 0x1020 | 
|  | # CHECK-NEXT:       Type: R_X86_64_64 | 
|  | # CHECK-NEXT:       Symbol: ddd (4) | 
|  | # CHECK-NEXT:       Addend: 0x0 | 
|  | # CHECK-NEXT:     } | 
|  | # CHECK-NEXT:   } | 
|  | # CHECK-NEXT: ] | 
|  | # CHECK:      DynamicSection [ | 
|  | # CHECK-NEXT:   Tag | 
|  | # CHECK-NOT:    RELACOUNT | 
|  |  | 
|  | # RUN: ld.lld -z nocombreloc -shared %t.o -o %t.out | 
|  | # RUN: llvm-readobj -r --expand-relocs --dynamic-table %t.out | \ | 
|  | # RUN:    FileCheck --check-prefix=NOCOMB %s | 
|  |  | 
|  | # NOCOMB:      Relocations [ | 
|  | # NOCOMB-NEXT:    Section ({{.*}}) .rela.dyn { | 
|  | # NOCOMB-NEXT:     Relocation { | 
|  | # NOCOMB-NEXT:       Offset: 0x1000 | 
|  | # NOCOMB-NEXT:       Type: R_X86_64_64 | 
|  | # NOCOMB-NEXT:       Symbol: aaa (1) | 
|  | # NOCOMB-NEXT:       Addend: 0x0 | 
|  | # NOCOMB-NEXT:     } | 
|  | # NOCOMB-NEXT:     Relocation { | 
|  | # NOCOMB-NEXT:       Offset: 0x1008 | 
|  | # NOCOMB-NEXT:       Type: R_X86_64_64 | 
|  | # NOCOMB-NEXT:       Symbol: ccc (3) | 
|  | # NOCOMB-NEXT:       Addend: 0x0 | 
|  | # NOCOMB-NEXT:     } | 
|  | # NOCOMB-NEXT:     Relocation { | 
|  | # NOCOMB-NEXT:       Offset: 0x1010 | 
|  | # NOCOMB-NEXT:       Type: R_X86_64_64 | 
|  | # NOCOMB-NEXT:       Symbol: bbb (2) | 
|  | # NOCOMB-NEXT:       Addend: 0x0 | 
|  | # NOCOMB-NEXT:     } | 
|  | # NOCOMB-NEXT:     Relocation { | 
|  | # NOCOMB-NEXT:       Offset: 0x1018 | 
|  | # NOCOMB-NEXT:       Type: R_X86_64_64 | 
|  | # NOCOMB-NEXT:       Symbol: aaa (1) | 
|  | # NOCOMB-NEXT:       Addend: 0x0 | 
|  | # NOCOMB-NEXT:     } | 
|  | # NOCOMB-NEXT:     Relocation { | 
|  | # NOCOMB-NEXT:       Offset: 0x1020 | 
|  | # NOCOMB-NEXT:       Type: R_X86_64_64 | 
|  | # NOCOMB-NEXT:       Symbol: ddd (4) | 
|  | # NOCOMB-NEXT:       Addend: 0x0 | 
|  | # NOCOMB-NEXT:     } | 
|  | # NOCOMB-NEXT:   } | 
|  | # NOCOMB-NEXT:  ] | 
|  | # NOCOMB:      DynamicSection [ | 
|  | # NOCOMB-NEXT:   Tag | 
|  | # NOCOMB-NOT:    RELACOUNT | 
|  |  | 
|  | .data | 
|  | .quad aaa | 
|  | .quad ccc | 
|  | .quad bbb | 
|  | .quad aaa | 
|  | .quad ddd |