[AIX][XCOFF][Patch2] decode vector information and extent long table of the traceback...
authordiggerlin <digger.llvm@gmail.com>
Thu, 19 Nov 2020 15:23:43 +0000 (10:23 -0500)
committerdiggerlin <digger.llvm@gmail.com>
Thu, 19 Nov 2020 15:23:43 +0000 (10:23 -0500)
commitab77fa515583ca906f2cb09a5f5e1ea3c48ec725
tree35dc12071fa68351e33c79d7eb19b336f14daff2
parent341f3c1120dfa8879e5f714a07fc8b16c8887a7f
[AIX][XCOFF][Patch2] decode vector information and extent long table of the traceback table of the xcoff.

SUMMARY:

1. decode the Vector extension if has_vec is set
2. decode long table fields, if longtbtable is set.

There is conflict on the bit order of HasVectorInfoMask and HasExtensionTableMask between AIX os header and IBM aix compiler XLC.
In the /usr/include/sys/debug.h defines
static constexpr uint32_t HasVectorInfoMask = 0x0040'0000;
static constexpr uint32_t HasExtensionTableMask = 0x0080'0000;
but the XLC defines as

static constexpr uint32_t HasVectorInfoMask = 0x0080'0000;
static constexpr uint32_t HasExtensionTableMask = 0x0040'0000;
we follows the definition of the IBM AIX compiler XLC here.

Reviewer: Jason Liu

Differential Revision: https://reviews.llvm.org/D86461
llvm/include/llvm/BinaryFormat/XCOFF.h
llvm/include/llvm/Object/XCOFFObjectFile.h
llvm/lib/Object/XCOFFObjectFile.cpp
llvm/unittests/Object/XCOFFObjectFileTest.cpp