brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · aab3bf6 Raw
37 lines · cpp
1//===-- HostInfoAIX.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-exception6//7//===----------------------------------------------------------------------===//8 9#include "lldb/Host/aix/HostInfoAIX.h"10#include "lldb/Host/posix/Support.h"11#include <sys/procfs.h>12 13using namespace lldb_private;14 15void HostInfoAIX::Initialize(SharedLibraryDirectoryHelper *helper) {16  HostInfoPosix::Initialize(helper);17}18 19void HostInfoAIX::Terminate() { HostInfoBase::Terminate(); }20 21FileSpec HostInfoAIX::GetProgramFileSpec() {22  static FileSpec g_program_filespec;23  struct psinfo psinfoData;24  auto BufferOrError = getProcFile(getpid(), "psinfo");25  if (BufferOrError) {26    std::unique_ptr<llvm::MemoryBuffer> PsinfoBuffer =27        std::move(*BufferOrError);28    memcpy(&psinfoData, PsinfoBuffer->getBufferStart(), sizeof(psinfoData));29    llvm::StringRef exe_path(30        psinfoData.pr_psargs,31        strnlen(psinfoData.pr_psargs, sizeof(psinfoData.pr_psargs)));32    if (!exe_path.empty())33      g_program_filespec.SetFile(exe_path, FileSpec::Style::native);34  }35  return g_program_filespec;36}37