Fixing undefined export names.

This commit is contained in:
Ben Vanik 2015-06-01 22:12:11 -07:00
parent 5c34b0a73e
commit 19cb13692b
3 changed files with 10 additions and 8 deletions

View File

@ -13,6 +13,7 @@
#include <string>
#include <vector>
#include "xenia/base/math.h"
#include "xenia/cpu/frontend/ppc_context.h"
namespace xe {
@ -58,18 +59,19 @@ class Export {
kVariable = 1,
};
Export(uint16_t ordinal, Type type, std::string name,
Export(uint16_t ordinal, Type type, const char* name,
ExportTag::type tags = 0)
: ordinal(ordinal),
type(type),
name(name),
tags(tags),
variable_ptr(0),
function_data({nullptr, nullptr, 0}) {}
function_data({nullptr, nullptr, 0}) {
std::strncpy(this->name, name, xe::countof(this->name));
}
uint16_t ordinal;
Type type;
std::string name;
char name[96];
ExportTag::type tags;
bool is_implemented() const {

View File

@ -389,7 +389,7 @@ void XUserModule::Dump() {
kernel_export =
export_resolver->GetExportByOrdinal(library->name, info->ordinal);
if (kernel_export) {
name = kernel_export->name.c_str();
name = kernel_export->name;
implemented = kernel_export->is_implemented();
}
} else {

View File

@ -388,7 +388,7 @@ auto KernelTrampoline(F&& f, Tuple&& t, std::index_sequence<I...>) {
}
template <KernelModuleId MODULE, uint16_t ORDINAL, typename R, typename... Ps>
xe::cpu::Export* RegisterExport(R (*fn)(Ps&...), std::string name,
xe::cpu::Export* RegisterExport(R (*fn)(Ps&...), const char* name,
xe::cpu::ExportTag::type tags) {
static const auto export =
new cpu::Export(ORDINAL, xe::cpu::Export::Type::kFunction, name,
@ -418,7 +418,7 @@ xe::cpu::Export* RegisterExport(R (*fn)(Ps&...), std::string name,
}
template <KernelModuleId MODULE, uint16_t ORDINAL, typename... Ps>
xe::cpu::Export* RegisterExport(void (*fn)(Ps&...), std::string name,
xe::cpu::Export* RegisterExport(void (*fn)(Ps&...), const char* name,
xe::cpu::ExportTag::type tags) {
static const auto export =
new cpu::Export(ORDINAL, xe::cpu::Export::Type::kFunction, name,
@ -450,7 +450,7 @@ using xe::cpu::ExportTag;
const auto EXPORT_##module_name##_##name = \
RegisterExport_##module_name(xe::kernel::shim::RegisterExport< \
xe::kernel::shim::KernelModuleId::module_name, ordinals::##name>( \
&name, std::string(#name), tags));
&name, #name, tags));
#define DECLARE_XAM_EXPORT(name, tags) DECLARE_EXPORT(xam, name, tags)
#define DECLARE_XBOXKRNL_EXPORT(name, tags) DECLARE_EXPORT(xboxkrnl, name, tags)