diff options
Diffstat (limited to 'lib/ObjectYAML/COFFYAML.cpp')
-rw-r--r-- | lib/ObjectYAML/COFFYAML.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/ObjectYAML/COFFYAML.cpp b/lib/ObjectYAML/COFFYAML.cpp index fdd94f4054e1..b5154467f11a 100644 --- a/lib/ObjectYAML/COFFYAML.cpp +++ b/lib/ObjectYAML/COFFYAML.cpp @@ -1,9 +1,8 @@ //===- COFFYAML.cpp - COFF YAMLIO implementation --------------------------===// // -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // @@ -188,6 +187,7 @@ void ScalarEnumerationTraits<COFF::RelocationTypesARM>::enumeration( ECase(IMAGE_REL_ARM_TOKEN); ECase(IMAGE_REL_ARM_BLX24); ECase(IMAGE_REL_ARM_BLX11); + ECase(IMAGE_REL_ARM_REL32); ECase(IMAGE_REL_ARM_SECTION); ECase(IMAGE_REL_ARM_SECREL); ECase(IMAGE_REL_ARM_MOV32A); @@ -195,6 +195,7 @@ void ScalarEnumerationTraits<COFF::RelocationTypesARM>::enumeration( ECase(IMAGE_REL_ARM_BRANCH20T); ECase(IMAGE_REL_ARM_BRANCH24T); ECase(IMAGE_REL_ARM_BLX23T); + ECase(IMAGE_REL_ARM_PAIR); } void ScalarEnumerationTraits<COFF::RelocationTypesARM64>::enumeration( @@ -216,6 +217,7 @@ void ScalarEnumerationTraits<COFF::RelocationTypesARM64>::enumeration( ECase(IMAGE_REL_ARM64_ADDR64); ECase(IMAGE_REL_ARM64_BRANCH19); ECase(IMAGE_REL_ARM64_BRANCH14); + ECase(IMAGE_REL_ARM64_REL32); } void ScalarEnumerationTraits<COFF::WindowsSubsystem>::enumeration( @@ -576,6 +578,12 @@ void MappingTraits<COFFYAML::Section>::mapping(IO &IO, COFFYAML::Section &Sec) { else if (Sec.Name == ".debug$H") IO.mapOptional("GlobalHashes", Sec.DebugH); + // Uninitialized sections, such as .bss, typically have no data, but the size + // is carried in SizeOfRawData, even though PointerToRawData is zero. + if (Sec.SectionData.binary_size() == 0 && + NC->Characteristics & COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA) + IO.mapOptional("SizeOfRawData", Sec.Header.SizeOfRawData); + IO.mapOptional("Relocations", Sec.Relocations); } |