From 2ac0f38d31db3f40ae0cedfeb3848a6d9aa376fa Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Thu, 19 Oct 2017 16:57:40 +0000 Subject: [PATCH] ExecutionEngine: adjust COFF i386 tautological asserts Modify static_casts to not be tautological in some COFF i386 relocations. Patch by Alex Langford! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316169 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../RuntimeDyld/Targets/RuntimeDyldCOFFI386.h | 22 +++++-------------- .../RuntimeDyld/X86/COFF_i386.s | 6 ++--- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFI386.h b/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFI386.h index 76c8f956300..04678f22446 100644 --- a/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFI386.h +++ b/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFI386.h @@ -144,10 +144,7 @@ public: ? Value : Sections[RE.Sections.SectionA].getLoadAddressWithOffset( RE.Addend); - assert(static_cast(Result) <= INT32_MAX && - "relocation overflow"); - assert(static_cast(Result) >= INT32_MIN && - "relocation underflow"); + assert(Result <= UINT32_MAX && "relocation overflow"); DEBUG(dbgs() << "\t\tOffset: " << RE.Offset << " RelType: IMAGE_REL_I386_DIR32" << " TargetSection: " << RE.Sections.SectionA @@ -161,10 +158,7 @@ public: uint64_t Result = Sections[RE.Sections.SectionA].getLoadAddressWithOffset(RE.Addend) - Sections[0].getLoadAddress(); - assert(static_cast(Result) <= INT32_MAX && - "relocation overflow"); - assert(static_cast(Result) >= INT32_MIN && - "relocation underflow"); + assert(Result <= UINT32_MAX && "relocation overflow"); DEBUG(dbgs() << "\t\tOffset: " << RE.Offset << " RelType: IMAGE_REL_I386_DIR32NB" << " TargetSection: " << RE.Sections.SectionA @@ -178,9 +172,9 @@ public: ? Value : Sections[RE.Sections.SectionA].getLoadAddress(); Result = Result - Section.getLoadAddress() + RE.Addend - 4 - RE.Offset; - assert(static_cast(Result) <= INT32_MAX && + assert(static_cast(Result) <= INT32_MAX && "relocation overflow"); - assert(static_cast(Result) >= INT32_MIN && + assert(static_cast(Result) >= INT32_MIN && "relocation underflow"); DEBUG(dbgs() << "\t\tOffset: " << RE.Offset << " RelType: IMAGE_REL_I386_REL32" @@ -191,10 +185,8 @@ public: } case COFF::IMAGE_REL_I386_SECTION: // 16-bit section index of the section that contains the target. - assert(static_cast(RE.SectionID) <= INT16_MAX && + assert(static_cast(RE.SectionID) <= UINT16_MAX && "relocation overflow"); - assert(static_cast(RE.SectionID) >= INT16_MIN && - "relocation underflow"); DEBUG(dbgs() << "\t\tOffset: " << RE.Offset << " RelType: IMAGE_REL_I386_SECTION Value: " << RE.SectionID << '\n'); @@ -202,10 +194,8 @@ public: break; case COFF::IMAGE_REL_I386_SECREL: // 32-bit offset of the target from the beginning of its section. - assert(static_cast(RE.Addend) <= INT32_MAX && + assert(static_cast(RE.Addend) <= UINT32_MAX && "relocation overflow"); - assert(static_cast(RE.Addend) >= INT32_MIN && - "relocation underflow"); DEBUG(dbgs() << "\t\tOffset: " << RE.Offset << " RelType: IMAGE_REL_I386_SECREL Value: " << RE.Addend << '\n'); diff --git a/test/ExecutionEngine/RuntimeDyld/X86/COFF_i386.s b/test/ExecutionEngine/RuntimeDyld/X86/COFF_i386.s index 869df79bbdc..6516eb3d69d 100644 --- a/test/ExecutionEngine/RuntimeDyld/X86/COFF_i386.s +++ b/test/ExecutionEngine/RuntimeDyld/X86/COFF_i386.s @@ -1,5 +1,5 @@ // RUN: llvm-mc -triple i686-windows -filetype obj -o %t.obj %s -// RUN: llvm-rtdyld -triple i686-windows -dummy-extern _printf=0xfffffffd -dummy-extern _OutputDebugStringA@4=0xfffffffe -dummy-extern _ExitProcess@4=0xffffffff -verify -check=%s %t.obj +// RUN: llvm-rtdyld -triple i686-windows -dummy-extern _printf=0x7ffffffd -dummy-extern _OutputDebugStringA@4=0x7ffffffe -dummy-extern _ExitProcess@4=0x7fffffff -verify -check=%s %t.obj .text @@ -41,13 +41,13 @@ rel4: .align 4 __imp__OutputDebugStringA: .long "_OutputDebugStringA@4" // IMAGE_REL_I386_DIR32 -# rtdyld-check: *{4}__imp__OutputDebugStringA = 0xfffffffe +# rtdyld-check: *{4}__imp__OutputDebugStringA = 0x7ffffffe .global __imp__ExitProcess .align 4 __imp__ExitProcess: .long "_ExitProcess@4" // IMAGE_REL_I386_DIR32 -# rtdyld-check: *{4}__imp__ExitProcess = 0xffffffff +# rtdyld-check: *{4}__imp__ExitProcess = 0x7fffffff .global relocations relocations: -- 2.40.0