LLVM  15.0.0git
TapiUniversal.cpp
Go to the documentation of this file.
1 //===- TapiUniversal.cpp --------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file defines the Text-based Dynamic Library Stub format.
10 //
11 //===----------------------------------------------------------------------===//
12 
14 #include "llvm/ADT/StringRef.h"
15 #include "llvm/Object/Error.h"
16 #include "llvm/Object/TapiFile.h"
19 
20 using namespace llvm;
21 using namespace MachO;
22 using namespace object;
23 
24 TapiUniversal::TapiUniversal(MemoryBufferRef Source, Error &Err)
25  : Binary(ID_TapiUniversal, Source) {
27  ErrorAsOutParameter ErrAsOuParam(&Err);
28  if (!Result) {
29  Err = Result.takeError();
30  return;
31  }
32  ParsedFile = std::move(Result.get());
33 
34  auto FlattenObjectInfo = [this](const auto &File) {
35  StringRef Name = File->getInstallName();
36  for (const Architecture Arch : File->getArchitectures())
37  Libraries.emplace_back(Library({Name, Arch}));
38  };
39 
40  FlattenObjectInfo(ParsedFile);
41  // Get inlined documents from tapi file.
42  for (const std::shared_ptr<InterfaceFile> &File : ParsedFile->documents())
43  FlattenObjectInfo(File);
44 }
45 
47 
50  return std::unique_ptr<TapiFile>(new TapiFile(Parent->getMemoryBufferRef(),
51  *Parent->ParsedFile,
52  Parent->Libraries[Index].Arch));
53 }
54 
57  Error Err = Error::success();
58  std::unique_ptr<TapiUniversal> Ret(new TapiUniversal(Source, Err));
59  if (Err)
60  return std::move(Err);
61  return std::move(Ret);
62 }
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:17
StringRef.h
llvm::object::TapiUniversal::~TapiUniversal
~TapiUniversal() override
llvm::Error::success
static ErrorSuccess success()
Create a success value.
Definition: Error.h:329
Library
Itanium Name Demangler Library
Definition: README.txt:2
TapiUniversal.h
llvm::MipsISD::Ret
@ Ret
Definition: MipsISelLowering.h:119
llvm::Expected
Tagged union holding either a T or a Error.
Definition: APFloat.h:41
llvm::MemoryBufferRef
Definition: MemoryBufferRef.h:22
TapiFile.h
Error.h
llvm::object::Binary::getMemoryBufferRef
MemoryBufferRef getMemoryBufferRef() const
Definition: Binary.cpp:42
llvm::object::TapiUniversal::ObjectForArch::getAsObjectFile
Expected< std::unique_ptr< TapiFile > > getAsObjectFile() const
Definition: TapiUniversal.cpp:49
llvm::object::TapiUniversal::TapiUniversal
TapiUniversal(MemoryBufferRef Source, Error &Err)
Definition: TapiUniversal.cpp:24
llvm::ErrorAsOutParameter
Helper for Errors used as out-parameters.
Definition: Error.h:1097
object
bar al al movzbl eax ret Missed when stored in a memory object
Definition: README.txt:1411
llvm::MachO::Architecture
Architecture
Defines the architecture slices that are supported by Text-based Stub files.
Definition: Architecture.h:27
Index
uint32_t Index
Definition: ELFObjHandler.cpp:82
llvm::object::TapiUniversal::create
static Expected< std::unique_ptr< TapiUniversal > > create(MemoryBufferRef Source)
Definition: TapiUniversal.cpp:56
move
compiles ldr LCPI1_0 ldr ldr mov lsr tst moveq r1 ldr LCPI1_1 and r0 bx lr It would be better to do something like to fold the shift into the conditional move
Definition: README.txt:546
llvm::Sched::Source
@ Source
Definition: TargetLowering.h:99
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:58
llvm::object::Binary
Definition: Binary.h:32
llvm::GraphProgram::Name
Name
Definition: GraphWriter.h:50
get
Should compile to something r4 addze r3 instead we get
Definition: README.txt:24
llvm::Error
Lightweight error class with error context and mandatory checking.
Definition: Error.h:155
llvm::object::TapiFile
Definition: TapiFile.h:35
TextAPIReader.h
ArchitectureSet.h
File
Instrumentation for Order File
Definition: InstrOrderFile.cpp:198