Files
clang-p2996/lld/test/MachO/dead-strip-align.s
Leonard Grey a8a6e5b094 [lld-macho] Preserve alignment for non-deduplicated cstrings
Fixes PR50637.

Downstream bug: https://crbug.com/1218958

Currently, we split __cstring along symbol boundaries with .subsections_via_symbols
when not deduplicating, and along null bytes when deduplicating. This change splits
along null bytes unconditionally, and preserves original alignment in the non-
deduplicated case.

Removing subsections-section-relocs.s because with this change, __cstring
is never reordered based on the order file.

Differential Revision: https://reviews.llvm.org/D104919
2021-06-28 22:26:43 -04:00

47 lines
1.1 KiB
ArmAsm

# REQUIRES: x86
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
# RUN: %lld -lSystem -o %t.out %t.o -dead_strip
# RUN: llvm-otool -l %t.out | FileCheck --check-prefix=SECT %s
# RUN: llvm-otool -vs __TEXT __cstring %t.out | FileCheck %s
# SECT: sectname __cstring
# SECT-NEXT: segname __TEXT
# SECT-NEXT: addr
# SECT-NEXT: size
# SECT-NEXT: offset
# SECT-NEXT: align 2^4 (16)
# CHECK: 0 \303Q043\005\376\334\272\230vT2\020\001
# CHECK: 8 def
.section __TEXT,__cstring,cstring_literals
.globl _foo
_foo: # Dead. External, has symbol table entry, gets stripped.
.asciz "asdf"
.globl _hi
_hi:
.asciz "hi" # External, has symbol table entry.
.p2align 4
L_internal_aligned_16: # Has no symbol table entry.
.asciz "\303Q043\005\376\334\272\230vT2\020\001"
L_internal_nonaligned:
.asciz "abc"
.p2align 3
L_internal_aligned_8:
.asciz "def"
.text
.globl _main
_main:
movq _hi(%rip), %rax
movq L_internal_nonaligned(%rip), %rax
movq L_internal_aligned_8(%rip), %rax
movaps L_internal_aligned_16(%rip), %xmm0
retq
.subsections_via_symbols