| # REQUIRES: mips | 
 |  | 
 | # If there are two relocations such that the first one requires | 
 | # dynamic COPY relocation, the second one requires GOT entry | 
 | # creation, linker should create both - dynamic relocation | 
 | # and GOT entry. | 
 |  | 
 | # RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux \ | 
 | # RUN:         %S/Inputs/mips-dynamic.s -o %t.so.o | 
 | # RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s -o %t.o | 
 | # RUN: ld.lld %t.so.o -shared -o %t.so | 
 | # RUN: ld.lld %t.o %t.so -o %t.exe | 
 | # RUN: llvm-readobj -r -mips-plt-got %t.exe | FileCheck %s | 
 |  | 
 | # CHECK:      Relocations [ | 
 | # CHECK-NEXT:   Section (7) .rel.dyn { | 
 | # CHECK-NEXT:     0x[[DATA0:[0-9A-F]+]] R_MIPS_COPY data0 | 
 | # CHECK-NEXT:     0x[[DATA1:[0-9A-F]+]] R_MIPS_COPY data1 | 
 | # CHECK-NEXT:   } | 
 | # CHECK-NEXT: ] | 
 | # CHECK-NEXT: Primary GOT { | 
 | # CHECK-NEXT:   Canonical gp value: | 
 | # CHECK-NEXT:   Reserved entries [ | 
 | # CHECK:        ] | 
 | # CHECK-NEXT:   Local entries [ | 
 | # CHECK-NEXT:   ] | 
 | # CHECK-NEXT:   Global entries [ | 
 | # CHECK-NEXT:     Entry { | 
 | # CHECK-NEXT:       Address: | 
 | # CHECK-NEXT:       Access: -32744 | 
 | # CHECK-NEXT:       Initial: 0x[[DATA0]] | 
 | # CHECK-NEXT:       Value: 0x[[DATA0]] | 
 | # CHECK-NEXT:       Type: Object | 
 | # CHECK-NEXT:       Section: .bss | 
 | # CHECK-NEXT:       Name: data0@ | 
 | # CHECK-NEXT:     } | 
 | # CHECK-NEXT:     Entry { | 
 | # CHECK-NEXT:       Address: | 
 | # CHECK-NEXT:       Access: -32740 | 
 | # CHECK-NEXT:       Initial: 0x[[DATA1]] | 
 | # CHECK-NEXT:       Value: 0x[[DATA1]] | 
 | # CHECK-NEXT:       Type: Object | 
 | # CHECK-NEXT:       Section: .bss | 
 | # CHECK-NEXT:       Name: data1@ | 
 | # CHECK-NEXT:     } | 
 | # CHECK-NEXT:   ] | 
 | # CHECK-NEXT:   Number of TLS and multi-GOT entries: 0 | 
 | # CHECK-NEXT: } | 
 |  | 
 |   .text | 
 |   .global __start | 
 | __start: | 
 |   # Case A: 'got' relocation goes before 'copy' relocation | 
 |   lui    $t0,%hi(data0)         # R_MIPS_HI16 - requires R_MISP_COPY relocation | 
 |   addi   $t0,$t0,%lo(data0) | 
 |   lw     $t0,%got(data0)($gp)   # R_MIPS_GOT16 - requires GOT entry | 
 |  | 
 |   # Case B: 'copy' relocation goes before 'got' relocation | 
 |   lw     $t0,%got(data1)($gp)   # R_MIPS_GOT16 - requires GOT entry | 
 |   lui    $t0,%hi(data1)         # R_MIPS_HI16 - requires R_MISP_COPY relocation | 
 |   addi   $t0,$t0,%lo(data1) |