mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-05 23:52:45 +00:00
[COFF] Interpret a period as a separator for section suffix just like '$'
This allows grouping all sections like ".ctors.12345" into ".ctors". For MinGW, the numerical values for such ctors are all zero-padded, so a lexical sort is good enough. Differential Revision: https://reviews.llvm.org/D40408 llvm-svn: 319151
This commit is contained in:
parent
04b68446eb
commit
f2508f46ca
@ -322,6 +322,11 @@ void Writer::run() {
|
||||
|
||||
static StringRef getOutputSection(StringRef Name) {
|
||||
StringRef S = Name.split('$').first;
|
||||
|
||||
// Treat a later period as a separator for MinGW, for sections like
|
||||
// ".ctors.01234".
|
||||
S = S.substr(0, S.find('.', 1));
|
||||
|
||||
auto It = Config->Merge.find(S);
|
||||
if (It == Config->Merge.end())
|
||||
return S;
|
||||
|
30
lld/test/COFF/ctors_dtors_priority.s
Normal file
30
lld/test/COFF/ctors_dtors_priority.s
Normal file
@ -0,0 +1,30 @@
|
||||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -triple=x86_64-windows-gnu -filetype=obj -o %t.obj %s
|
||||
# RUN: lld-link -entry:main %t.obj -out:%t.exe
|
||||
# RUN: llvm-objdump -s %t.exe | FileCheck %s
|
||||
|
||||
.globl main
|
||||
main:
|
||||
nop
|
||||
|
||||
.section .ctors.00005, "w"
|
||||
.quad 2
|
||||
.section .ctors, "w"
|
||||
.quad 1
|
||||
.section .ctors.00100, "w"
|
||||
.quad 3
|
||||
|
||||
.section .dtors, "w"
|
||||
.quad 1
|
||||
.section .dtors.00100, "w"
|
||||
.quad 3
|
||||
.section .dtors.00005, "w"
|
||||
.quad 2
|
||||
|
||||
# CHECK: Contents of section .ctors:
|
||||
# CHECK-NEXT: 140001000 01000000 00000000 02000000 00000000
|
||||
# CHECK-NEXT: 140001010 03000000 00000000
|
||||
|
||||
# CHECK: Contents of section .dtors:
|
||||
# CHECK-NEXT: 140002000 01000000 00000000 02000000 00000000
|
||||
# CHECK-NEXT: 140002010 03000000 00000000
|
Loading…
Reference in New Issue
Block a user