Files
clang-p2996/lld/test/COFF/comdat-drectve.s
Martin Storsjö 503bc5f661 [LLD] [COFF] Fix handling of comdat .drectve sections (#68116)
This can happen when manually emitting strings into .drectve sections
with `__attribute__((section(".drectve")))`, which is a way to emulate
`#pragma comment(linker, "...")` for mingw compilers, without requiring
building with -fms-extensions.

Normally, this doesn't generate any comdat, but if compiled with
-fsanitize=address, this section does get turned into a comdat section.

This fixes #67261. This issue can be seen as a regression; a change in
the "lli" tool in 17.x triggers this case, if compiled with ASAN
enabled, triggering this unsupported corner case in LLD. With this
change, LLD can handle it.
2023-10-04 10:54:50 +03:00

32 lines
860 B
ArmAsm

# REQUIRES: x86
# RUN: llvm-mc -triple=x86_64-windows-gnu %s -filetype=obj -o %t.obj
# RUN: lld-link %t.obj -out:%t.exe -debug:symtab -subsystem:console
# RUN: llvm-readobj --coff-exports %t.exe | FileCheck %s
# CHECK: Name: exportedFunc
## This assembly snippet has been reduced from what Clang generates from
## this C snippet, with -fsanitize=address. Normally, the .drectve
## section would be a regular section - but when compiled with
## -fsanitize=address, it becomes a comdat section.
##
# void exportedFunc(void) {}
# void mainCRTStartup(void) {}
# static __attribute__((section(".drectve"), used)) const char export_chkstk[] =
# "-export:exportedFunc";
.text
.globl exportedFunc
exportedFunc:
retq
.globl mainCRTStartup
mainCRTStartup:
retq
.section .drectve,"dr",one_only,export_chkstk
export_chkstk:
.asciz "-export:exportedFunc"