forked from OSchip/llvm-project
[ELF] - Disable emiting multiple output sections when merging is disabled.
When -O0 is specified, we do not do section merging. Though before this patch several sections were generated instead of single, what is useless. Differential revision: https://reviews.llvm.org/D27041 llvm-svn: 288151
This commit is contained in:
parent
3fb5a6dc9e
commit
9b3ae73fc8
|
@ -80,6 +80,12 @@ InputSectionBase<ELFT>::InputSectionBase(elf::ObjectFile<ELFT> *File,
|
|||
if (V > UINT32_MAX)
|
||||
fatal(toString(File) + ": section sh_addralign is too large");
|
||||
Alignment = V;
|
||||
|
||||
// If it is not a mergeable section, overwrite the flag so that the flag
|
||||
// is consistent with the class. This inconsistency could occur when
|
||||
// string merging is disabled using -O0 flag.
|
||||
if (!Config->Relocatable && !isa<MergeInputSection<ELFT>>(this))
|
||||
this->Flags &= ~(SHF_MERGE | SHF_STRINGS);
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
|
|
|
@ -61,8 +61,6 @@ zed:
|
|||
// NOMERGE-NEXT: Type: SHT_PROGBITS
|
||||
// NOMERGE-NEXT: Flags [
|
||||
// NOMERGE-NEXT: SHF_ALLOC
|
||||
// NOMERGE-NEXT: SHF_MERGE
|
||||
// NOMERGE-NEXT: SHF_STRINGS
|
||||
// NOMERGE-NEXT: ]
|
||||
// NOMERGE-NEXT: Address: 0x1C8
|
||||
// NOMERGE-NEXT: Offset: 0x1C8
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
|
||||
# RUN: echo "SECTIONS { .data : {*(.data.*)} }" > %t0.script
|
||||
# RUN: ld.lld %t.o -o %t0.out --script %t0.script
|
||||
# RUN: llvm-objdump -s %t0.out | FileCheck %s --check-prefix=OPT
|
||||
# OPT: Contents of section .data:
|
||||
# OPT-NEXT: 0000 01
|
||||
# OPT-NEXT: Contents of section .data:
|
||||
# OPT-NEXT: 0001 6100
|
||||
# OPT-NEXT: Contents of section .data:
|
||||
# OPT-NEXT: 0003 03
|
||||
|
||||
# RUN: ld.lld -O0 %t.o -o %t1.out --script %t0.script
|
||||
# RUN: llvm-objdump -s %t1.out | FileCheck %s --check-prefix=NOOPT
|
||||
# NOOPT: Contents of section .data:
|
||||
# NOOPT-NEXT: 0000 01610003
|
||||
|
||||
.section .data.aw,"aw",@progbits
|
||||
.byte 1
|
||||
|
||||
.section .data.ams,"aMS",@progbits,1
|
||||
.asciz "a"
|
||||
|
||||
.section .data.am,"aM",@progbits,1
|
||||
.byte 3
|
Loading…
Reference in New Issue