forked from OSchip/llvm-project
[RuntimeDyld] Don't try to allocate sections with align 0.
ELF sections allow 0 for the alignment, which is specified to be the same as 1. However many clients do not expect this and will behave poorly in the presence of a 0-aligned section (for example by trying to modulo something by the section alignment). We can be more polite by making sure that we always pass a non-zero value to clients. Differential Revision: https://reviews.llvm.org/D57482 llvm-svn: 352694
This commit is contained in:
parent
01c4939658
commit
3c35f774de
|
@ -743,6 +743,11 @@ RuntimeDyldImpl::emitSection(const ObjectFile &Obj,
|
|||
bool IsReadOnly = isReadOnlyData(Section);
|
||||
uint64_t DataSize = Section.getSize();
|
||||
|
||||
// An alignment of 0 (at least with ELF) is identical to an alignment of 1,
|
||||
// while being more "polite". Other formats do not support 0-aligned sections
|
||||
// anyway, so we should guarantee that the alignment is always at least 1.
|
||||
Alignment = std::max(1u, Alignment);
|
||||
|
||||
StringRef Name;
|
||||
if (auto EC = Section.getName(Name))
|
||||
return errorCodeToError(EC);
|
||||
|
|
Loading…
Reference in New Issue