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

George Rimar via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 4 03:38:12 PDT 2018


Author: grimar
Date: Wed Jul  4 03:38:12 2018
New Revision: 336259

URL: http://llvm.org/viewvc/llvm-project?rev=336259&view=rev
Log:
[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.

Added:
    lld/trunk/test/ELF/Inputs/comdat-discarded-reloc.s
    lld/trunk/test/ELF/comdat-discarded-reloc.s

Added: lld/trunk/test/ELF/Inputs/comdat-discarded-reloc.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/Inputs/comdat-discarded-reloc.s?rev=336259&view=auto
==============================================================================
--- lld/trunk/test/ELF/Inputs/comdat-discarded-reloc.s (added)
+++ lld/trunk/test/ELF/Inputs/comdat-discarded-reloc.s Wed Jul  4 03:38:12 2018
@@ -0,0 +1,6 @@
+.section .text.bar1,"aG", at progbits,group,comdat
+
+.section .text.bar2
+.global bar
+bar:
+ .quad .text.bar1

Added: lld/trunk/test/ELF/comdat-discarded-reloc.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/comdat-discarded-reloc.s?rev=336259&view=auto
==============================================================================
--- lld/trunk/test/ELF/comdat-discarded-reloc.s (added)
+++ lld/trunk/test/ELF/comdat-discarded-reloc.s Wed Jul  4 03:38:12 2018
@@ -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", at progbits,group,comdat
+
+.section .text
+_start:
+ .quad .text.foo
+ .quad bar




More information about the llvm-commits mailing list