forked from OSchip/llvm-project
[LLD][ELF] - Improve "sh_addralign is not a power of 2" diagnostics.
This patch removes the precompiled binary from inputs, replacing it with a YAML. And teaches LLD to report a section name in case of such error. Differential revision: https://reviews.llvm.org/D58670 llvm-svn: 354959
This commit is contained in:
parent
65706cf715
commit
cc19dc75fb
|
@ -76,7 +76,7 @@ InputSectionBase::InputSectionBase(InputFile *File, uint64_t Flags,
|
|||
// no alignment constraits.
|
||||
uint32_t V = std::max<uint64_t>(Alignment, 1);
|
||||
if (!isPowerOf2_64(V))
|
||||
fatal(toString(File) + ": section sh_addralign is not a power of 2");
|
||||
fatal(toString(this) + ": sh_addralign is not a power of 2");
|
||||
this->Alignment = V;
|
||||
|
||||
// In ELF, each section can be compressed by zlib, and if compressed,
|
||||
|
|
Binary file not shown.
|
@ -1,5 +1,16 @@
|
|||
## section-alignment-notpow2.elf has section alignment
|
||||
## 0xFFFFFFFF which is not a power of 2.
|
||||
# RUN: not ld.lld %p/Inputs/section-alignment-notpow2.elf -o /dev/null 2>&1 | \
|
||||
# RUN: FileCheck %s
|
||||
# CHECK: section sh_addralign is not a power of 2
|
||||
# RUN: yaml2obj %s -o %t.o
|
||||
# RUN: not ld.lld %t.o -o %tout 2>&1 | FileCheck %s
|
||||
|
||||
# CHECK: error: {{.*}}.o:(.text): sh_addralign is not a power of 2
|
||||
|
||||
!ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .text
|
||||
Type: SHT_PROGBITS
|
||||
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
||||
AddressAlign: 0x3
|
||||
|
|
Loading…
Reference in New Issue