|  | # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t | 
|  | # RUN: ld.lld %t -o %t2 | 
|  | # RUN: llvm-readobj -sections -program-headers %t2 | FileCheck %s | 
|  | # REQUIRES: x86 | 
|  |  | 
|  | # Check that different output sections with the same flags are merged into a | 
|  | # single Read/Write PT_LOAD. | 
|  |  | 
|  | .section .r,"a" | 
|  | .globl _start | 
|  | _start: | 
|  | .quad 0 | 
|  |  | 
|  | .section .a,"aw" | 
|  | .quad 1 | 
|  |  | 
|  | .section .b,"aw" | 
|  | .quad 2 | 
|  |  | 
|  | # CHECK:        Name: .r | 
|  | # CHECK-NEXT:   Type: SHT_PROGBITS | 
|  | # CHECK-NEXT:   Flags [ | 
|  | # CHECK-NEXT:     SHF_ALLOC | 
|  | # CHECK-NEXT:   ] | 
|  | # CHECK-NEXT:   Address: | 
|  | # CHECK-NEXT:   Offset: 0x120 | 
|  | # CHECK-NEXT:   Size: | 
|  | # CHECK-NEXT:   Link: | 
|  | # CHECK-NEXT:   Info: | 
|  | # CHECK-NEXT:   AddressAlignment: | 
|  | # CHECK-NEXT:   EntrySize: | 
|  | # CHECK-NEXT: } | 
|  |  | 
|  | # CHECK:      ProgramHeaders [ | 
|  | # CHECK-NEXT:   ProgramHeader { | 
|  | # CHECK-NEXT:     Type: PT_PHDR (0x6) | 
|  | # CHECK-NEXT:     Offset: 0x40 | 
|  | # CHECK-NEXT:     VirtualAddress: 0x10040 | 
|  | # CHECK-NEXT:     PhysicalAddress: 0x10040 | 
|  | # CHECK-NEXT:     FileSize: 224 | 
|  | # CHECK-NEXT:     MemSize: 224 | 
|  | # CHECK-NEXT:     Flags [ (0x4) | 
|  | # CHECK-NEXT:       PF_R (0x4) | 
|  | # CHECK-NEXT:     ] | 
|  | # CHECK-NEXT:     Alignment: 8 | 
|  | # CHECK-NEXT:   } | 
|  | # CHECK-NEXT:   ProgramHeader { | 
|  | # CHECK-NEXT:     Type: PT_LOAD | 
|  | # CHECK-NEXT:     Offset: 0x0 | 
|  | # CHECK-NEXT:     VirtualAddress: | 
|  | # CHECK-NEXT:     PhysicalAddress: | 
|  | # CHECK-NEXT:     FileSize: 296 | 
|  | # CHECK-NEXT:     MemSize: 296 | 
|  | # CHECK-NEXT:     Flags [ | 
|  | # CHECK-NEXT:       PF_R | 
|  | # CHECK-NEXT:     ] | 
|  | # CHECK-NEXT:     Alignment: | 
|  | # CHECK-NEXT:   } | 
|  | # CHECK-NEXT:   ProgramHeader { | 
|  | # CHECK-NEXT:     Type: PT_LOAD | 
|  | # CHECK-NEXT:     Offset: | 
|  | # CHECK-NEXT:     VirtualAddress: | 
|  | # CHECK-NEXT:     PhysicalAddress: | 
|  | # CHECK-NEXT:     FileSize: 0 | 
|  | # CHECK-NEXT:     MemSize: 0 | 
|  | # CHECK-NEXT:     Flags [ | 
|  | # CHECK-NEXT:       PF_R | 
|  | # CHECK-NEXT:       PF_X | 
|  | # CHECK-NEXT:     ] | 
|  | # CHECK-NEXT:     Alignment: | 
|  | # CHECK-NEXT:   } | 
|  | # CHECK-NEXT:   ProgramHeader { | 
|  | # CHECK-NEXT:     Type: PT_LOAD | 
|  | # CHECK-NEXT:     Offset: | 
|  | # CHECK-NEXT:     VirtualAddress: | 
|  | # CHECK-NEXT:     PhysicalAddress: | 
|  | # CHECK-NEXT:     FileSize: 16 | 
|  | # CHECK-NEXT:     MemSize: 16 | 
|  | # CHECK-NEXT:     Flags [ | 
|  | # CHECK-NEXT:       PF_R | 
|  | # CHECK-NEXT:       PF_W | 
|  | # CHECK-NEXT:     ] | 
|  | # CHECK-NEXT:     Alignment: | 
|  | # CHECK-NEXT:   } | 
|  | # CHECK-NEXT: ] |