mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-12 06:06:32 +00:00
689ff9c00f
the MCJIT execution engine. The GDB JIT debugging integration support works by registering a loaded object image with a pre-defined function that GDB will monitor if GDB is attached. GDB integration support is implemented for ELF only at this time. This integration requires GDB version 7.0 or newer. Patch by Andy Kaylor! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154868 91177308-0d34-0410-b5e6-96231b3b80d8
41 lines
1.5 KiB
C++
41 lines
1.5 KiB
C++
//===- ELFObjectFile.cpp - ELF object file implementation -------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Part of the ELFObjectFile class implementation.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/Object/ELF.h"
|
|
|
|
namespace llvm {
|
|
|
|
using namespace object;
|
|
|
|
// Creates an in-memory object-file by default: createELFObjectFile(Buffer)
|
|
ObjectFile *ObjectFile::createELFObjectFile(MemoryBuffer *Object) {
|
|
std::pair<unsigned char, unsigned char> Ident = getElfArchType(Object);
|
|
error_code ec;
|
|
|
|
if (Ident.first == ELF::ELFCLASS32 && Ident.second == ELF::ELFDATA2LSB)
|
|
return new ELFObjectFile<support::little, false>(Object, ec);
|
|
else if (Ident.first == ELF::ELFCLASS32 && Ident.second == ELF::ELFDATA2MSB)
|
|
return new ELFObjectFile<support::big, false>(Object, ec);
|
|
else if (Ident.first == ELF::ELFCLASS64 && Ident.second == ELF::ELFDATA2MSB)
|
|
return new ELFObjectFile<support::big, true>(Object, ec);
|
|
else if (Ident.first == ELF::ELFCLASS64 && Ident.second == ELF::ELFDATA2LSB) {
|
|
ELFObjectFile<support::little, true> *result =
|
|
new ELFObjectFile<support::little, true>(Object, ec);
|
|
return result;
|
|
}
|
|
|
|
report_fatal_error("Buffer is not an ELF object file!");
|
|
}
|
|
|
|
} // end namespace llvm
|