forked from OSchip/llvm-project
[CodeView] RelocPtr points to little endian data.
Don't use a uint32_t*, use a ulittle32_t* to make this correct on big endian systems. Patch by James Clarke Differential Revision: https://reviews.llvm.org/D54421 llvm-svn: 347349
This commit is contained in:
parent
24b346da42
commit
d16944eefe
|
@ -1210,7 +1210,7 @@ void DebugSHandler::finish() {
|
|||
// Rewrite string table indices in the Fpo Data and symbol records to refer to
|
||||
// the global PDB string table instead of the object file string table.
|
||||
for (DebugFrameDataSubsectionRef &FDS : NewFpoFrames) {
|
||||
const uint32_t *Reloc = FDS.getRelocPtr();
|
||||
const ulittle32_t *Reloc = FDS.getRelocPtr();
|
||||
for (codeview::FrameData FD : FDS) {
|
||||
FD.RvaStart += *Reloc;
|
||||
FD.FrameFunc =
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include "llvm/DebugInfo/CodeView/CodeView.h"
|
||||
#include "llvm/DebugInfo/CodeView/DebugSubsection.h"
|
||||
#include "llvm/Support/BinaryStreamReader.h"
|
||||
#include "llvm/Support/Endian.h"
|
||||
#include "llvm/Support/Error.h"
|
||||
|
||||
namespace llvm {
|
||||
|
@ -31,10 +32,10 @@ public:
|
|||
FixedStreamArray<FrameData>::Iterator begin() const { return Frames.begin(); }
|
||||
FixedStreamArray<FrameData>::Iterator end() const { return Frames.end(); }
|
||||
|
||||
const uint32_t *getRelocPtr() const { return RelocPtr; }
|
||||
const support::ulittle32_t *getRelocPtr() const { return RelocPtr; }
|
||||
|
||||
private:
|
||||
const uint32_t *RelocPtr = nullptr;
|
||||
const support::ulittle32_t *RelocPtr = nullptr;
|
||||
FixedStreamArray<FrameData> Frames;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue