blob: aab3bf62a635f8427b2895b812ed4f43cd19c701 [file] [log] [blame] [edit]
//===-- HostInfoAIX.cpp -------------------------------------------------===//
//
// 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
//
//===----------------------------------------------------------------------===//
#include "lldb/Host/aix/HostInfoAIX.h"
#include "lldb/Host/posix/Support.h"
#include <sys/procfs.h>
using namespace lldb_private;
void HostInfoAIX::Initialize(SharedLibraryDirectoryHelper *helper) {
HostInfoPosix::Initialize(helper);
}
void HostInfoAIX::Terminate() { HostInfoBase::Terminate(); }
FileSpec HostInfoAIX::GetProgramFileSpec() {
static FileSpec g_program_filespec;
struct psinfo psinfoData;
auto BufferOrError = getProcFile(getpid(), "psinfo");
if (BufferOrError) {
std::unique_ptr<llvm::MemoryBuffer> PsinfoBuffer =
std::move(*BufferOrError);
memcpy(&psinfoData, PsinfoBuffer->getBufferStart(), sizeof(psinfoData));
llvm::StringRef exe_path(
psinfoData.pr_psargs,
strnlen(psinfoData.pr_psargs, sizeof(psinfoData.pr_psargs)));
if (!exe_path.empty())
g_program_filespec.SetFile(exe_path, FileSpec::Style::native);
}
return g_program_filespec;
}