mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 12:43:36 +01:00
Initial add for MachO support for obj2yaml
Adding the initial files for adding MachO support to obj2yaml. Passing a MachO file will result in a new not_implemented error. I will be implementing obj2yaml and yaml2obj for MachO in parallel so that one can be used to test the other. llvm-svn: 269243
This commit is contained in:
parent
05127ecda9
commit
80178ca710
@ -5,5 +5,9 @@ set(LLVM_LINK_COMPONENTS
|
||||
)
|
||||
|
||||
add_llvm_tool(obj2yaml
|
||||
obj2yaml.cpp coff2yaml.cpp elf2yaml.cpp Error.cpp
|
||||
obj2yaml.cpp
|
||||
coff2yaml.cpp
|
||||
elf2yaml.cpp
|
||||
macho2yaml.cpp
|
||||
Error.cpp
|
||||
)
|
||||
|
@ -34,6 +34,8 @@ std::string _obj2yaml_error_category::message(int ev) const {
|
||||
return "Unrecognized file type.";
|
||||
case obj2yaml_error::unsupported_obj_file_format:
|
||||
return "Unsupported object file format.";
|
||||
case obj2yaml_error::not_implemented:
|
||||
return "Feature not yet implemented.";
|
||||
}
|
||||
llvm_unreachable("An enumerator of obj2yaml_error does not have a message "
|
||||
"defined.");
|
||||
|
@ -19,7 +19,8 @@ enum class obj2yaml_error {
|
||||
success = 0,
|
||||
file_not_found,
|
||||
unrecognized_file_format,
|
||||
unsupported_obj_file_format
|
||||
unsupported_obj_file_format,
|
||||
not_implemented
|
||||
};
|
||||
|
||||
inline std::error_code make_error_code(obj2yaml_error e) {
|
||||
|
35
tools/obj2yaml/macho2yaml.cpp
Normal file
35
tools/obj2yaml/macho2yaml.cpp
Normal file
@ -0,0 +1,35 @@
|
||||
//===------ macho2yaml.cpp - obj2yaml conversion tool -----------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "Error.h"
|
||||
#include "obj2yaml.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Object/MachOUniversal.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
std::error_code macho2yaml(raw_ostream &Out,
|
||||
const object::MachOObjectFile &Obj) {
|
||||
return obj2yaml_error::not_implemented;
|
||||
}
|
||||
|
||||
std::error_code macho2yaml(raw_ostream &Out,
|
||||
const object::MachOUniversalBinary &Obj) {
|
||||
return obj2yaml_error::not_implemented;
|
||||
}
|
||||
|
||||
std::error_code macho2yaml(raw_ostream &Out, const object::ObjectFile &Obj) {
|
||||
if (const auto *MachOObj = dyn_cast<object::MachOUniversalBinary>(&Obj))
|
||||
return macho2yaml(Out, *MachOObj);
|
||||
|
||||
if (const auto *MachOObj = dyn_cast<object::MachOObjectFile>(&Obj))
|
||||
return macho2yaml(Out, *MachOObj);
|
||||
|
||||
return obj2yaml_error::unsupported_obj_file_format;
|
||||
}
|
@ -24,6 +24,8 @@ static std::error_code dumpObject(const ObjectFile &Obj) {
|
||||
return coff2yaml(outs(), cast<COFFObjectFile>(Obj));
|
||||
if (Obj.isELF())
|
||||
return elf2yaml(outs(), Obj);
|
||||
if (Obj.isMachO() || Obj.isMachOUniversalBinary())
|
||||
return macho2yaml(outs(), Obj);
|
||||
|
||||
return obj2yaml_error::unsupported_obj_file_format;
|
||||
}
|
||||
|
@ -21,5 +21,7 @@ std::error_code coff2yaml(llvm::raw_ostream &Out,
|
||||
const llvm::object::COFFObjectFile &Obj);
|
||||
std::error_code elf2yaml(llvm::raw_ostream &Out,
|
||||
const llvm::object::ObjectFile &Obj);
|
||||
std::error_code macho2yaml(llvm::raw_ostream &Out,
|
||||
const llvm::object::ObjectFile &Obj);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user