| # REQUIRES: x86 |
| |
| # RUN: llvm-mc -triple=x86_64-windows-gnu %s -filetype=obj -o %t1.obj |
| # RUN: llvm-mc -triple=x86_64-windows-gnu %S/Inputs/common-replacement.s -filetype=obj -o %t2.obj |
| |
| # RUN: lld-link -lldmingw -entry:main %t1.obj %t2.obj -out:%t.exe -verbose 2>&1 \ |
| # RUN: | FileCheck -check-prefix VERBOSE %s |
| # RUN: llvm-readobj -S %t.exe | FileCheck -check-prefix SECTIONS %s |
| |
| # VERBOSE: -aligncomm:"foo",2 |
| |
| # As long as the .comm symbol is replaced with actual data, RawDataSize |
| # below should be nonzero. |
| |
| # SECTIONS: Name: .data (2E 64 61 74 61 00 00 00) |
| # SECTIONS-NEXT: VirtualSize: 0x8 |
| # SECTIONS-NEXT: VirtualAddress: 0x3000 |
| # SECTIONS-NEXT: RawDataSize: 512 |
| |
| |
| .text |
| .def main; |
| .scl 2; |
| .type 32; |
| .endef |
| .globl main |
| .p2align 4, 0x90 |
| main: |
| movl foo(%rip), %eax |
| retq |
| |
| # This produces an aligncomm directive, but when linking in |
| # Inputs/common-replacement.s, this symbol is replaced by a normal defined |
| # symbol instead. |
| .comm foo, 4, 2 |