// This test checks that relocation addresses are printed in hex
// RUN: llvm-objdump -r %p/Inputs/win64-unwind.exe.coff-x86_64.obj | FileCheck %s

CHECK: RELOCATION RECORDS FOR [.pdata]:
CHECK-NEXT: 0 IMAGE_REL_AMD64_ADDR32NB func
CHECK-NEXT: 4 IMAGE_REL_AMD64_ADDR32NB func
CHECK-NEXT: 8 IMAGE_REL_AMD64_ADDR32NB .xdata
CHECK-NEXT: c IMAGE_REL_AMD64_ADDR32NB func
CHECK-NEXT: 10 IMAGE_REL_AMD64_ADDR32NB func
CHECK-NEXT: 14 IMAGE_REL_AMD64_ADDR32NB .xdata
CHECK-NEXT: 18 IMAGE_REL_AMD64_ADDR32NB smallFunc
CHECK-NEXT: 1c IMAGE_REL_AMD64_ADDR32NB smallFunc
CHECK-NEXT: 20 IMAGE_REL_AMD64_ADDR32NB .xdata
CHECK-NEXT: 24 IMAGE_REL_AMD64_ADDR32NB allocFunc
CHECK-NEXT: 28 IMAGE_REL_AMD64_ADDR32NB allocFunc
CHECK-NEXT: 2c IMAGE_REL_AMD64_ADDR32NB .xdata

