[ELF] - Add a test case for relocation pointing to deduplicated COMDAT.

ELF spec doesn't allow a relocation to point to a deduplicated
COMDAT section. Unfortunately this happens in practice (e.g. .eh_frame)

We have a code in MarkLive.cpp for that and it was uncovered by any test case:
https://github.com/llvm-mirror/lld/blob/master/ELF/MarkLive.cpp#L199

Patch adds a test.

llvm-svn: 336259
This commit is contained in:
George Rimar 2018-07-04 10:38:12 +00:00
parent bee9ca6568
commit 514ac22d8f
2 changed files with 23 additions and 0 deletions

View File

@ -0,0 +1,6 @@
.section .text.bar1,"aG",@progbits,group,comdat
.section .text.bar2
.global bar
bar:
.quad .text.bar1

View File

@ -0,0 +1,17 @@
# REQUIRES: x86
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/comdat-discarded-reloc.s -o %t2.o
# RUN: ld.lld -gc-sections %t.o %t2.o -o %t
## ELF spec doesn't allow a relocation to point to a deduplicated
## COMDAT section. Unfortunately this happens in practice (e.g. .eh_frame)
## Test case checks we do not crash.
.global bar, _start
.section .text.foo,"aG",@progbits,group,comdat
.section .text
_start:
.quad .text.foo
.quad bar