Files
clang-p2996/lld/test/COFF/Inputs/comdat-jumptable2.s
Martin Storsjo 0f8f0d6d1d [COFF] In MinGW mode, ignore relocations against a discarded section
When GCC produces a jump table as part of a comdat function, the
jump table itself is produced as plain non-comdat rdata section. When
linked with ld.bfd, all of those rdata sections are kept, with
relocations unchanged in the sections that refer to discarded comdat
sections.

This has been observed with at least GCC 5.x and 7.x.

Differential Revision: https://reviews.llvm.org/D52600

llvm-svn: 343422
2018-09-30 18:31:03 +00:00

36 lines
762 B
ArmAsm

.section .text@comdatfunc, "x"
.linkonce discard
.globl comdatfunc
comdatfunc:
leaq .Ljumptable(%rip), %rax
movslq (%rax, %rcx, 4), %rcx
addq %rcx, %rax
jmp *%rax
.section .rdata, "dr"
.long 0xcccccccc
.Ljumptable:
.long .Ltail1-.Ljumptable
.long .Ltail2-.Ljumptable
.long .Ltail3-.Ljumptable
.long 0xdddddddd
.section .text@comdatfunc, "x"
# If assembled with binutils, the following line can be kept in:
# .linkonce discard
.Ltail1:
movl $1, %eax
ret
.Ltail2:
movl $2, %eax
ret
.Ltail3:
movl $3, %eax
ret
.text
.globl otherfunc
otherfunc:
call comdatfunc
ret