mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
Invert the MC -> Object dependency.
Now that we have a lib/MC/MCAnalysis, the dependency was there just because of two helper classes. Move the two over to MC. This will allow IRObjectFile to parse inline assembly. llvm-svn: 212248
This commit is contained in:
parent
f23b8b3bbe
commit
90be969cdb
@ -7,8 +7,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_OBJECT_STRINGTABLE_BUILDER_H
|
||||
#define LLVM_OBJECT_STRINGTABLE_BUILDER_H
|
||||
#ifndef LLVM_MC_STRINGTABLE_BUILDER_H
|
||||
#define LLVM_MC_STRINGTABLE_BUILDER_H
|
||||
|
||||
#include "llvm/ADT/SmallString.h"
|
||||
#include "llvm/ADT/StringMap.h"
|
@ -1,26 +1,10 @@
|
||||
//===- YAML.h - YAMLIO utilities for object files ---------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file declares utility classes for handling the YAML representation of
|
||||
// object files.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_OBJECT_YAML_H
|
||||
#define LLVM_OBJECT_YAML_H
|
||||
#ifndef LLVM_MC_YAML_H
|
||||
#define LLVM_MC_YAML_H
|
||||
|
||||
#include "llvm/Support/YAMLTraits.h"
|
||||
|
||||
namespace llvm {
|
||||
namespace object {
|
||||
namespace yaml {
|
||||
|
||||
/// \brief Specialized YAMLIO scalar type for representing a binary blob.
|
||||
///
|
||||
/// A typical use case would be to represent the content of a section in a
|
||||
@ -100,18 +84,11 @@ inline bool operator==(const BinaryRef &LHS, const BinaryRef &RHS) {
|
||||
return LHS.DataIsHexString == RHS.DataIsHexString && LHS.Data == RHS.Data;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
namespace yaml {
|
||||
template <> struct ScalarTraits<object::yaml::BinaryRef> {
|
||||
static void output(const object::yaml::BinaryRef &, void *,
|
||||
llvm::raw_ostream &);
|
||||
static StringRef input(StringRef, void *, object::yaml::BinaryRef &);
|
||||
template <> struct ScalarTraits<BinaryRef> {
|
||||
static void output(const BinaryRef &, void *, llvm::raw_ostream &);
|
||||
static StringRef input(StringRef, void *, BinaryRef &);
|
||||
static bool mustQuote(StringRef S) { return needsQuotes(S); }
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
@ -15,7 +15,7 @@
|
||||
#define LLVM_OBJECT_COFFYAML_H
|
||||
|
||||
#include "llvm/ADT/Optional.h"
|
||||
#include "llvm/Object/YAML.h"
|
||||
#include "llvm/MC/YAML.h"
|
||||
#include "llvm/Support/COFF.h"
|
||||
|
||||
namespace llvm {
|
||||
@ -49,7 +49,7 @@ namespace COFFYAML {
|
||||
struct Section {
|
||||
COFF::section Header;
|
||||
unsigned Alignment;
|
||||
object::yaml::BinaryRef SectionData;
|
||||
yaml::BinaryRef SectionData;
|
||||
std::vector<Relocation> Relocations;
|
||||
StringRef Name;
|
||||
Section();
|
||||
|
@ -16,7 +16,7 @@
|
||||
#ifndef LLVM_OBJECT_ELFYAML_H
|
||||
#define LLVM_OBJECT_ELFYAML_H
|
||||
|
||||
#include "llvm/Object/YAML.h"
|
||||
#include "llvm/MC/YAML.h"
|
||||
#include "llvm/Support/ELF.h"
|
||||
|
||||
namespace llvm {
|
||||
@ -83,7 +83,7 @@ struct Section {
|
||||
virtual ~Section();
|
||||
};
|
||||
struct RawContentSection : Section {
|
||||
object::yaml::BinaryRef Content;
|
||||
yaml::BinaryRef Content;
|
||||
llvm::yaml::Hex64 Size;
|
||||
RawContentSection() : Section(SectionKind::RawContent) {}
|
||||
static bool classof(const Section *S) {
|
||||
|
@ -43,9 +43,11 @@ add_llvm_library(LLVMMC
|
||||
MCValue.cpp
|
||||
MCWin64EH.cpp
|
||||
MachObjectWriter.cpp
|
||||
StringTableBuilder.cpp
|
||||
SubtargetFeature.cpp
|
||||
WinCOFFObjectWriter.cpp
|
||||
WinCOFFStreamer.cpp
|
||||
YAML.cpp
|
||||
)
|
||||
|
||||
add_subdirectory(MCAnalysis)
|
||||
|
@ -28,7 +28,7 @@
|
||||
#include "llvm/MC/MCObjectWriter.h"
|
||||
#include "llvm/MC/MCSectionELF.h"
|
||||
#include "llvm/MC/MCValue.h"
|
||||
#include "llvm/Object/StringTableBuilder.h"
|
||||
#include "llvm/MC/StringTableBuilder.h"
|
||||
#include "llvm/Support/Compression.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/Endian.h"
|
||||
|
@ -22,4 +22,4 @@ subdirectories = MCAnalysis MCDisassembler MCParser
|
||||
type = Library
|
||||
name = MC
|
||||
parent = Libraries
|
||||
required_libraries = Object Support
|
||||
required_libraries = Support
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include "llvm/MC/MCAnalysis/MCFunction.h"
|
||||
#include "llvm/MC/MCInstrInfo.h"
|
||||
#include "llvm/MC/MCRegisterInfo.h"
|
||||
#include "llvm/Object/YAML.h"
|
||||
#include "llvm/MC/YAML.h"
|
||||
#include "llvm/Support/Allocator.h"
|
||||
#include "llvm/Support/Casting.h"
|
||||
#include "llvm/Support/MathExtras.h"
|
||||
@ -102,7 +102,7 @@ struct Atom {
|
||||
uint64_t Size;
|
||||
|
||||
std::vector<Inst> Insts;
|
||||
object::yaml::BinaryRef Data;
|
||||
yaml::BinaryRef Data;
|
||||
};
|
||||
|
||||
struct BasicBlock {
|
||||
|
@ -7,8 +7,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/MC/StringTableBuilder.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/Object/StringTableBuilder.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
@ -12,21 +12,20 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/Object/YAML.h"
|
||||
#include "llvm/MC/YAML.h"
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include <cctype>
|
||||
|
||||
using namespace llvm;
|
||||
using namespace object::yaml;
|
||||
|
||||
void yaml::ScalarTraits<object::yaml::BinaryRef>::output(
|
||||
const object::yaml::BinaryRef &Val, void *, llvm::raw_ostream &Out) {
|
||||
void yaml::ScalarTraits<yaml::BinaryRef>::output(
|
||||
const yaml::BinaryRef &Val, void *, llvm::raw_ostream &Out) {
|
||||
Val.writeAsHex(Out);
|
||||
}
|
||||
|
||||
StringRef yaml::ScalarTraits<object::yaml::BinaryRef>::input(
|
||||
StringRef Scalar, void *, object::yaml::BinaryRef &Val) {
|
||||
StringRef yaml::ScalarTraits<yaml::BinaryRef>::input(StringRef Scalar, void *,
|
||||
yaml::BinaryRef &Val) {
|
||||
if (Scalar.size() % 2 != 0)
|
||||
return "BinaryRef hex string must contain an even number of nybbles.";
|
||||
// TODO: Can we improve YAMLIO to permit a more accurate diagnostic here?
|
||||
@ -34,11 +33,11 @@ StringRef yaml::ScalarTraits<object::yaml::BinaryRef>::input(
|
||||
for (unsigned I = 0, N = Scalar.size(); I != N; ++I)
|
||||
if (!isxdigit(Scalar[I]))
|
||||
return "BinaryRef hex string must contain only hex digits.";
|
||||
Val = object::yaml::BinaryRef(Scalar);
|
||||
Val = yaml::BinaryRef(Scalar);
|
||||
return StringRef();
|
||||
}
|
||||
|
||||
void BinaryRef::writeAsBinary(raw_ostream &OS) const {
|
||||
void yaml::BinaryRef::writeAsBinary(raw_ostream &OS) const {
|
||||
if (!DataIsHexString) {
|
||||
OS.write((const char *)Data.data(), Data.size());
|
||||
return;
|
||||
@ -50,7 +49,7 @@ void BinaryRef::writeAsBinary(raw_ostream &OS) const {
|
||||
}
|
||||
}
|
||||
|
||||
void BinaryRef::writeAsHex(raw_ostream &OS) const {
|
||||
void yaml::BinaryRef::writeAsHex(raw_ostream &OS) const {
|
||||
if (binary_size() == 0)
|
||||
return;
|
||||
if (DataIsHexString) {
|
@ -12,7 +12,5 @@ add_llvm_library(LLVMObject
|
||||
MachOUniversal.cpp
|
||||
Object.cpp
|
||||
ObjectFile.cpp
|
||||
StringTableBuilder.cpp
|
||||
SymbolicFile.cpp
|
||||
YAML.cpp
|
||||
)
|
||||
|
@ -19,4 +19,4 @@
|
||||
type = Library
|
||||
name = Object
|
||||
parent = Libraries
|
||||
required_libraries = BitReader Core Support
|
||||
required_libraries = BitReader Core Support MC
|
||||
|
@ -61,7 +61,7 @@ void COFFDumper::dumpSections(unsigned NumSections) {
|
||||
|
||||
ArrayRef<uint8_t> sectionData;
|
||||
Obj.getSectionContents(Sect, sectionData);
|
||||
Sec.SectionData = object::yaml::BinaryRef(sectionData);
|
||||
Sec.SectionData = yaml::BinaryRef(sectionData);
|
||||
|
||||
std::vector<COFFYAML::Relocation> Relocations;
|
||||
for (const auto &Reloc : Section.relocations()) {
|
||||
|
@ -268,7 +268,7 @@ ELFDumper<ELFT>::dumpContentSection(const Elf_Shdr *Shdr) {
|
||||
ErrorOr<ArrayRef<uint8_t>> ContentOrErr = Obj.getSectionContents(Shdr);
|
||||
if (std::error_code EC = ContentOrErr.getError())
|
||||
return EC;
|
||||
S->Content = object::yaml::BinaryRef(ContentOrErr.get());
|
||||
S->Content = yaml::BinaryRef(ContentOrErr.get());
|
||||
S->Size = S->Content.binary_size();
|
||||
|
||||
return S.release();
|
||||
|
@ -14,9 +14,9 @@
|
||||
|
||||
#include "yaml2obj.h"
|
||||
#include "llvm/ADT/ArrayRef.h"
|
||||
#include "llvm/MC/StringTableBuilder.h"
|
||||
#include "llvm/Object/ELFObjectFile.h"
|
||||
#include "llvm/Object/ELFYAML.h"
|
||||
#include "llvm/Object/StringTableBuilder.h"
|
||||
#include "llvm/Support/ELF.h"
|
||||
#include "llvm/Support/MemoryBuffer.h"
|
||||
#include "llvm/Support/YAMLTraits.h"
|
||||
|
@ -21,7 +21,6 @@ add_subdirectory(IR)
|
||||
add_subdirectory(LineEditor)
|
||||
add_subdirectory(Linker)
|
||||
add_subdirectory(MC)
|
||||
add_subdirectory(Object)
|
||||
add_subdirectory(Option)
|
||||
add_subdirectory(Support)
|
||||
add_subdirectory(Transforms)
|
||||
|
@ -4,4 +4,6 @@ set(LLVM_LINK_COMPONENTS
|
||||
|
||||
add_llvm_unittest(MCTests
|
||||
MCAtomTest.cpp
|
||||
StringTableBuilderTest.cpp
|
||||
YAMLTest.cpp
|
||||
)
|
||||
|
@ -7,8 +7,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/MC/StringTableBuilder.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "llvm/Object/StringTableBuilder.h"
|
||||
#include <string>
|
||||
|
||||
using namespace llvm;
|
@ -7,14 +7,14 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/Object/YAML.h"
|
||||
#include "llvm/MC/YAML.h"
|
||||
#include "llvm/Support/YAMLTraits.h"
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
struct BinaryHolder {
|
||||
object::yaml::BinaryRef Binary;
|
||||
yaml::BinaryRef Binary;
|
||||
};
|
||||
|
||||
namespace llvm {
|
@ -10,7 +10,7 @@
|
||||
LEVEL = ..
|
||||
|
||||
PARALLEL_DIRS = ADT Analysis Bitcode CodeGen DebugInfo ExecutionEngine IR \
|
||||
LineEditor Linker MC Object Option Support Transforms
|
||||
LineEditor Linker MC Option Support Transforms
|
||||
|
||||
include $(LEVEL)/Makefile.config
|
||||
include $(LLVM_SRC_ROOT)/unittests/Makefile.unittest
|
||||
|
@ -1,9 +0,0 @@
|
||||
set(LLVM_LINK_COMPONENTS
|
||||
Object
|
||||
Support
|
||||
)
|
||||
|
||||
add_llvm_unittest(ObjectTests
|
||||
StringTableBuilderTest.cpp
|
||||
YAMLTest.cpp
|
||||
)
|
@ -1,15 +0,0 @@
|
||||
##===- unittests/Object/Makefile ---------------------------*- Makefile -*-===##
|
||||
#
|
||||
# The LLVM Compiler Infrastructure
|
||||
#
|
||||
# This file is distributed under the University of Illinois Open Source
|
||||
# License. See LICENSE.TXT for details.
|
||||
#
|
||||
##===----------------------------------------------------------------------===##
|
||||
|
||||
LEVEL = ../..
|
||||
TESTNAME = Object
|
||||
LINK_COMPONENTS := object
|
||||
|
||||
include $(LEVEL)/Makefile.config
|
||||
include $(LLVM_SRC_ROOT)/unittests/Makefile.unittest
|
Loading…
Reference in New Issue
Block a user