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