aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/llvm14/lib/Object/Object.cpp
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2025-03-05 13:38:11 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2025-03-05 13:49:53 +0300
commit9eed360f02de773a5ed2de5d2a3e81fc7f06acfa (patch)
tree744a4054e64eb443073c7c6ad36b29cedcf9c2e6 /contrib/libs/llvm14/lib/Object/Object.cpp
parentc141a5c40bda2eed1a68b0626ffdae5fd19359a6 (diff)
downloadydb-9eed360f02de773a5ed2de5d2a3e81fc7f06acfa.tar.gz
Intermediate changes
commit_hash:2ec2671384dd8e604d41bc5c52c2f7858e4afea6
Diffstat (limited to 'contrib/libs/llvm14/lib/Object/Object.cpp')
-rw-r--r--contrib/libs/llvm14/lib/Object/Object.cpp354
1 files changed, 0 insertions, 354 deletions
diff --git a/contrib/libs/llvm14/lib/Object/Object.cpp b/contrib/libs/llvm14/lib/Object/Object.cpp
deleted file mode 100644
index 576eb8d069d..00000000000
--- a/contrib/libs/llvm14/lib/Object/Object.cpp
+++ /dev/null
@@ -1,354 +0,0 @@
-//===- Object.cpp - C bindings to the object file library--------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines the C bindings to the file-format-independent object
-// library.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm-c/Object.h"
-#include "llvm/ADT/SmallVector.h"
-#include "llvm/IR/LLVMContext.h"
-#include "llvm/Object/ObjectFile.h"
-#include "llvm/Object/MachOUniversal.h"
-#include "llvm/Support/MemAlloc.h"
-
-using namespace llvm;
-using namespace object;
-
-inline OwningBinary<ObjectFile> *unwrap(LLVMObjectFileRef OF) {
- return reinterpret_cast<OwningBinary<ObjectFile> *>(OF);
-}
-
-inline LLVMObjectFileRef wrap(const OwningBinary<ObjectFile> *OF) {
- return reinterpret_cast<LLVMObjectFileRef>(
- const_cast<OwningBinary<ObjectFile> *>(OF));
-}
-
-inline section_iterator *unwrap(LLVMSectionIteratorRef SI) {
- return reinterpret_cast<section_iterator*>(SI);
-}
-
-inline LLVMSectionIteratorRef
-wrap(const section_iterator *SI) {
- return reinterpret_cast<LLVMSectionIteratorRef>
- (const_cast<section_iterator*>(SI));
-}
-
-inline symbol_iterator *unwrap(LLVMSymbolIteratorRef SI) {
- return reinterpret_cast<symbol_iterator*>(SI);
-}
-
-inline LLVMSymbolIteratorRef
-wrap(const symbol_iterator *SI) {
- return reinterpret_cast<LLVMSymbolIteratorRef>
- (const_cast<symbol_iterator*>(SI));
-}
-
-inline relocation_iterator *unwrap(LLVMRelocationIteratorRef SI) {
- return reinterpret_cast<relocation_iterator*>(SI);
-}
-
-inline LLVMRelocationIteratorRef
-wrap(const relocation_iterator *SI) {
- return reinterpret_cast<LLVMRelocationIteratorRef>
- (const_cast<relocation_iterator*>(SI));
-}
-
-/*--.. Operations on binary files ..........................................--*/
-
-LLVMBinaryRef LLVMCreateBinary(LLVMMemoryBufferRef MemBuf,
- LLVMContextRef Context,
- char **ErrorMessage) {
- auto maybeContext = Context ? unwrap(Context) : nullptr;
- Expected<std::unique_ptr<Binary>> ObjOrErr(
- createBinary(unwrap(MemBuf)->getMemBufferRef(), maybeContext));
- if (!ObjOrErr) {
- *ErrorMessage = strdup(toString(ObjOrErr.takeError()).c_str());
- return nullptr;
- }
-
- return wrap(ObjOrErr.get().release());
-}
-
-LLVMMemoryBufferRef LLVMBinaryCopyMemoryBuffer(LLVMBinaryRef BR) {
- auto Buf = unwrap(BR)->getMemoryBufferRef();
- return wrap(llvm::MemoryBuffer::getMemBuffer(
- Buf.getBuffer(), Buf.getBufferIdentifier(),
- /*RequiresNullTerminator*/false).release());
-}
-
-void LLVMDisposeBinary(LLVMBinaryRef BR) {
- delete unwrap(BR);
-}
-
-LLVMBinaryType LLVMBinaryGetType(LLVMBinaryRef BR) {
- class BinaryTypeMapper final : public Binary {
- public:
- static LLVMBinaryType mapBinaryTypeToLLVMBinaryType(unsigned Kind) {
- switch (Kind) {
- case ID_Archive:
- return LLVMBinaryTypeArchive;
- case ID_MachOUniversalBinary:
- return LLVMBinaryTypeMachOUniversalBinary;
- case ID_COFFImportFile:
- return LLVMBinaryTypeCOFFImportFile;
- case ID_IR:
- return LLVMBinaryTypeIR;
- case ID_WinRes:
- return LLVMBinaryTypeWinRes;
- case ID_COFF:
- return LLVMBinaryTypeCOFF;
- case ID_ELF32L:
- return LLVMBinaryTypeELF32L;
- case ID_ELF32B:
- return LLVMBinaryTypeELF32B;
- case ID_ELF64L:
- return LLVMBinaryTypeELF64L;
- case ID_ELF64B:
- return LLVMBinaryTypeELF64B;
- case ID_MachO32L:
- return LLVMBinaryTypeMachO32L;
- case ID_MachO32B:
- return LLVMBinaryTypeMachO32B;
- case ID_MachO64L:
- return LLVMBinaryTypeMachO64L;
- case ID_MachO64B:
- return LLVMBinaryTypeMachO64B;
- case ID_Wasm:
- return LLVMBinaryTypeWasm;
- case ID_StartObjects:
- case ID_EndObjects:
- llvm_unreachable("Marker types are not valid binary kinds!");
- default:
- llvm_unreachable("Unknown binary kind!");
- }
- }
- };
- return BinaryTypeMapper::mapBinaryTypeToLLVMBinaryType(unwrap(BR)->getType());
-}
-
-LLVMBinaryRef LLVMMachOUniversalBinaryCopyObjectForArch(LLVMBinaryRef BR,
- const char *Arch,
- size_t ArchLen,
- char **ErrorMessage) {
- auto universal = cast<MachOUniversalBinary>(unwrap(BR));
- Expected<std::unique_ptr<ObjectFile>> ObjOrErr(
- universal->getMachOObjectForArch({Arch, ArchLen}));
- if (!ObjOrErr) {
- *ErrorMessage = strdup(toString(ObjOrErr.takeError()).c_str());
- return nullptr;
- }
- return wrap(ObjOrErr.get().release());
-}
-
-LLVMSectionIteratorRef LLVMObjectFileCopySectionIterator(LLVMBinaryRef BR) {
- auto OF = cast<ObjectFile>(unwrap(BR));
- auto sections = OF->sections();
- if (sections.begin() == sections.end())
- return nullptr;
- return wrap(new section_iterator(sections.begin()));
-}
-
-LLVMBool LLVMObjectFileIsSectionIteratorAtEnd(LLVMBinaryRef BR,
- LLVMSectionIteratorRef SI) {
- auto OF = cast<ObjectFile>(unwrap(BR));
- return (*unwrap(SI) == OF->section_end()) ? 1 : 0;
-}
-
-LLVMSymbolIteratorRef LLVMObjectFileCopySymbolIterator(LLVMBinaryRef BR) {
- auto OF = cast<ObjectFile>(unwrap(BR));
- auto symbols = OF->symbols();
- if (symbols.begin() == symbols.end())
- return nullptr;
- return wrap(new symbol_iterator(symbols.begin()));
-}
-
-LLVMBool LLVMObjectFileIsSymbolIteratorAtEnd(LLVMBinaryRef BR,
- LLVMSymbolIteratorRef SI) {
- auto OF = cast<ObjectFile>(unwrap(BR));
- return (*unwrap(SI) == OF->symbol_end()) ? 1 : 0;
-}
-
-// ObjectFile creation
-LLVMObjectFileRef LLVMCreateObjectFile(LLVMMemoryBufferRef MemBuf) {
- std::unique_ptr<MemoryBuffer> Buf(unwrap(MemBuf));
- Expected<std::unique_ptr<ObjectFile>> ObjOrErr(
- ObjectFile::createObjectFile(Buf->getMemBufferRef()));
- std::unique_ptr<ObjectFile> Obj;
- if (!ObjOrErr) {
- // TODO: Actually report errors helpfully.
- consumeError(ObjOrErr.takeError());
- return nullptr;
- }
-
- auto *Ret = new OwningBinary<ObjectFile>(std::move(ObjOrErr.get()), std::move(Buf));
- return wrap(Ret);
-}
-
-void LLVMDisposeObjectFile(LLVMObjectFileRef ObjectFile) {
- delete unwrap(ObjectFile);
-}
-
-// ObjectFile Section iterators
-LLVMSectionIteratorRef LLVMGetSections(LLVMObjectFileRef OF) {
- OwningBinary<ObjectFile> *OB = unwrap(OF);
- section_iterator SI = OB->getBinary()->section_begin();
- return wrap(new section_iterator(SI));
-}
-
-void LLVMDisposeSectionIterator(LLVMSectionIteratorRef SI) {
- delete unwrap(SI);
-}
-
-LLVMBool LLVMIsSectionIteratorAtEnd(LLVMObjectFileRef OF,
- LLVMSectionIteratorRef SI) {
- OwningBinary<ObjectFile> *OB = unwrap(OF);
- return (*unwrap(SI) == OB->getBinary()->section_end()) ? 1 : 0;
-}
-
-void LLVMMoveToNextSection(LLVMSectionIteratorRef SI) {
- ++(*unwrap(SI));
-}
-
-void LLVMMoveToContainingSection(LLVMSectionIteratorRef Sect,
- LLVMSymbolIteratorRef Sym) {
- Expected<section_iterator> SecOrErr = (*unwrap(Sym))->getSection();
- if (!SecOrErr) {
- std::string Buf;
- raw_string_ostream OS(Buf);
- logAllUnhandledErrors(SecOrErr.takeError(), OS);
- report_fatal_error(Twine(OS.str()));
- }
- *unwrap(Sect) = *SecOrErr;
-}
-
-// ObjectFile Symbol iterators
-LLVMSymbolIteratorRef LLVMGetSymbols(LLVMObjectFileRef OF) {
- OwningBinary<ObjectFile> *OB = unwrap(OF);
- symbol_iterator SI = OB->getBinary()->symbol_begin();
- return wrap(new symbol_iterator(SI));
-}
-
-void LLVMDisposeSymbolIterator(LLVMSymbolIteratorRef SI) {
- delete unwrap(SI);
-}
-
-LLVMBool LLVMIsSymbolIteratorAtEnd(LLVMObjectFileRef OF,
- LLVMSymbolIteratorRef SI) {
- OwningBinary<ObjectFile> *OB = unwrap(OF);
- return (*unwrap(SI) == OB->getBinary()->symbol_end()) ? 1 : 0;
-}
-
-void LLVMMoveToNextSymbol(LLVMSymbolIteratorRef SI) {
- ++(*unwrap(SI));
-}
-
-// SectionRef accessors
-const char *LLVMGetSectionName(LLVMSectionIteratorRef SI) {
- auto NameOrErr = (*unwrap(SI))->getName();
- if (!NameOrErr)
- report_fatal_error(NameOrErr.takeError());
- return NameOrErr->data();
-}
-
-uint64_t LLVMGetSectionSize(LLVMSectionIteratorRef SI) {
- return (*unwrap(SI))->getSize();
-}
-
-const char *LLVMGetSectionContents(LLVMSectionIteratorRef SI) {
- if (Expected<StringRef> E = (*unwrap(SI))->getContents())
- return E->data();
- else
- report_fatal_error(E.takeError());
-}
-
-uint64_t LLVMGetSectionAddress(LLVMSectionIteratorRef SI) {
- return (*unwrap(SI))->getAddress();
-}
-
-LLVMBool LLVMGetSectionContainsSymbol(LLVMSectionIteratorRef SI,
- LLVMSymbolIteratorRef Sym) {
- return (*unwrap(SI))->containsSymbol(**unwrap(Sym));
-}
-
-// Section Relocation iterators
-LLVMRelocationIteratorRef LLVMGetRelocations(LLVMSectionIteratorRef Section) {
- relocation_iterator SI = (*unwrap(Section))->relocation_begin();
- return wrap(new relocation_iterator(SI));
-}
-
-void LLVMDisposeRelocationIterator(LLVMRelocationIteratorRef SI) {
- delete unwrap(SI);
-}
-
-LLVMBool LLVMIsRelocationIteratorAtEnd(LLVMSectionIteratorRef Section,
- LLVMRelocationIteratorRef SI) {
- return (*unwrap(SI) == (*unwrap(Section))->relocation_end()) ? 1 : 0;
-}
-
-void LLVMMoveToNextRelocation(LLVMRelocationIteratorRef SI) {
- ++(*unwrap(SI));
-}
-
-
-// SymbolRef accessors
-const char *LLVMGetSymbolName(LLVMSymbolIteratorRef SI) {
- Expected<StringRef> Ret = (*unwrap(SI))->getName();
- if (!Ret) {
- std::string Buf;
- raw_string_ostream OS(Buf);
- logAllUnhandledErrors(Ret.takeError(), OS);
- report_fatal_error(Twine(OS.str()));
- }
- return Ret->data();
-}
-
-uint64_t LLVMGetSymbolAddress(LLVMSymbolIteratorRef SI) {
- Expected<uint64_t> Ret = (*unwrap(SI))->getAddress();
- if (!Ret) {
- std::string Buf;
- raw_string_ostream OS(Buf);
- logAllUnhandledErrors(Ret.takeError(), OS);
- report_fatal_error(Twine(OS.str()));
- }
- return *Ret;
-}
-
-uint64_t LLVMGetSymbolSize(LLVMSymbolIteratorRef SI) {
- return (*unwrap(SI))->getCommonSize();
-}
-
-// RelocationRef accessors
-uint64_t LLVMGetRelocationOffset(LLVMRelocationIteratorRef RI) {
- return (*unwrap(RI))->getOffset();
-}
-
-LLVMSymbolIteratorRef LLVMGetRelocationSymbol(LLVMRelocationIteratorRef RI) {
- symbol_iterator ret = (*unwrap(RI))->getSymbol();
- return wrap(new symbol_iterator(ret));
-}
-
-uint64_t LLVMGetRelocationType(LLVMRelocationIteratorRef RI) {
- return (*unwrap(RI))->getType();
-}
-
-// NOTE: Caller takes ownership of returned string.
-const char *LLVMGetRelocationTypeName(LLVMRelocationIteratorRef RI) {
- SmallVector<char, 0> ret;
- (*unwrap(RI))->getTypeName(ret);
- char *str = static_cast<char*>(safe_malloc(ret.size()));
- llvm::copy(ret, str);
- return str;
-}
-
-// NOTE: Caller takes ownership of returned string.
-const char *LLVMGetRelocationValueString(LLVMRelocationIteratorRef RI) {
- return strdup("");
-}
-