[lldb][NFC] Fix all formatting errors in .cpp file headers
Summary:
A *.cpp file header in LLDB (and in LLDB) should like this:
```
//===-- TestUtilities.cpp -------------------------------------------------===//
```
However in LLDB most of our source files have arbitrary changes to this format and
these changes are spreading through LLDB as folks usually just use the existing
source files as templates for their new files (most notably the unnecessary
editor language indicator `-*- C++ -*-` is spreading and in every review
someone is pointing out that this is wrong, resulting in people pointing out that this
is done in the same way in other files).
This patch removes most of these inconsistencies including the editor language indicators,
all the different missing/additional '-' characters, files that center the file name, missing
trailing `===//` (mostly caused by clang-format breaking the line).
Reviewers: aprantl, espindola, jfb, shafik, JDevlieghere
Reviewed By: JDevlieghere
Subscribers: dexonsmith, wuzish, emaste, sdardis, nemanjai, kbarton, MaskRay, atanasyan, arphaman, jfb, abidh, jsji, JDevlieghere, usaxena95, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D73258
2020-01-24 15:23:27 +08:00
|
|
|
//===-- HostInfoAndroid.cpp -----------------------------------------------===//
|
2015-02-13 02:13:44 +08:00
|
|
|
//
|
2019-01-19 16:50:56 +08:00
|
|
|
// 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
|
2015-02-13 02:13:44 +08:00
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
|
|
#include "lldb/Host/android/HostInfoAndroid.h"
|
2018-11-02 01:35:31 +08:00
|
|
|
#include "lldb/Host/FileSystem.h"
|
2015-02-13 02:13:44 +08:00
|
|
|
#include "lldb/Host/linux/HostInfoLinux.h"
|
2015-03-13 19:16:08 +08:00
|
|
|
#include "llvm/ADT/SmallVector.h"
|
|
|
|
#include "llvm/ADT/StringRef.h"
|
2015-02-13 02:13:44 +08:00
|
|
|
|
|
|
|
using namespace lldb_private;
|
2015-03-13 19:16:08 +08:00
|
|
|
using namespace llvm;
|
2015-02-13 02:13:44 +08:00
|
|
|
|
|
|
|
void HostInfoAndroid::ComputeHostArchitectureSupport(ArchSpec &arch_32,
|
|
|
|
ArchSpec &arch_64) {
|
|
|
|
HostInfoLinux::ComputeHostArchitectureSupport(arch_32, arch_64);
|
2016-09-07 04:57:50 +08:00
|
|
|
|
2015-02-13 02:13:44 +08:00
|
|
|
if (arch_32.IsValid()) {
|
|
|
|
arch_32.GetTriple().setEnvironment(llvm::Triple::Android);
|
|
|
|
}
|
|
|
|
if (arch_64.IsValid()) {
|
|
|
|
arch_64.GetTriple().setEnvironment(llvm::Triple::Android);
|
|
|
|
}
|
|
|
|
}
|
2015-02-26 10:50:14 +08:00
|
|
|
|
2015-03-03 20:14:45 +08:00
|
|
|
FileSpec HostInfoAndroid::GetDefaultShell() {
|
2018-11-02 05:18:25 +08:00
|
|
|
return FileSpec("/system/bin/sh");
|
2015-03-03 20:14:45 +08:00
|
|
|
}
|
2015-03-13 19:16:08 +08:00
|
|
|
|
|
|
|
FileSpec HostInfoAndroid::ResolveLibraryPath(const std::string &module_path,
|
|
|
|
const ArchSpec &arch) {
|
|
|
|
static const char *const ld_library_path_separator = ":";
|
|
|
|
static const char *const default_lib32_path[] = {"/vendor/lib", "/system/lib",
|
|
|
|
nullptr};
|
|
|
|
static const char *const default_lib64_path[] = {"/vendor/lib64",
|
|
|
|
"/system/lib64", nullptr};
|
2016-09-07 04:57:50 +08:00
|
|
|
|
2018-11-09 07:21:00 +08:00
|
|
|
if (module_path.empty() || module_path[0] == '/') {
|
|
|
|
FileSpec file_spec(module_path.c_str());
|
|
|
|
FileSystem::Instance().Resolve(file_spec);
|
|
|
|
return file_spec;
|
|
|
|
}
|
2016-09-07 04:57:50 +08:00
|
|
|
|
2015-03-13 19:16:08 +08:00
|
|
|
SmallVector<StringRef, 4> ld_paths;
|
2016-09-07 04:57:50 +08:00
|
|
|
|
2015-03-13 19:16:08 +08:00
|
|
|
if (const char *ld_library_path = ::getenv("LD_LIBRARY_PATH"))
|
|
|
|
StringRef(ld_library_path)
|
|
|
|
.split(ld_paths, StringRef(ld_library_path_separator), -1, false);
|
2016-09-07 04:57:50 +08:00
|
|
|
|
2015-03-13 19:16:08 +08:00
|
|
|
const char *const *default_lib_path = nullptr;
|
|
|
|
switch (arch.GetAddressByteSize()) {
|
|
|
|
case 4:
|
|
|
|
default_lib_path = default_lib32_path;
|
|
|
|
break;
|
|
|
|
case 8:
|
|
|
|
default_lib_path = default_lib64_path;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
assert(false && "Unknown address byte size");
|
|
|
|
return FileSpec();
|
|
|
|
}
|
2016-09-07 04:57:50 +08:00
|
|
|
|
2015-03-13 19:16:08 +08:00
|
|
|
for (const char *const *it = default_lib_path; *it; ++it)
|
|
|
|
ld_paths.push_back(StringRef(*it));
|
2015-05-08 20:46:26 +08:00
|
|
|
|
|
|
|
for (const StringRef &path : ld_paths) {
|
2018-11-02 05:18:25 +08:00
|
|
|
FileSpec file_candidate(path.str().c_str());
|
|
|
|
FileSystem::Instance().Resolve(file_candidate);
|
Fix temporary directory computation on linux (pr25147)
Summary:
On linux, the environment variables for temp directories that lldb checks for are generally not
defined, and the temp directory computation failed. This caused expression evaluation to fall
back to creating "/tmp/lldb-*.expr" debugging files instead of the usual
"$TMP/lldb/pid/lldb-*.expr". Crucially, these files were not cleaned up on lldb exit, which
caused clutter in the /tmp folder, especially on long-running machines (e.g. builtbots). This
commit fixes lldb to use llvm::sys::path::system_temp_directory, which does the same environment
variable dance, but (!) also falls back to the P_tmpdir macro, which is how the temp directory is
defined on linux.
Since the linux temp path computation now succeeds, I needed to also modify Android path
computation to check for actual directory existence, rather then checking whether the operation
failed.
Reviewers: clayborg, tberghammer
Subscribers: tberghammer, lldb-commits, danalbert, srhines, emaste
Differential Revision: http://reviews.llvm.org/D13772
llvm-svn: 250502
2015-10-16 17:32:05 +08:00
|
|
|
file_candidate.AppendPathComponent(module_path.c_str());
|
2015-05-08 20:46:26 +08:00
|
|
|
|
2018-11-02 01:35:31 +08:00
|
|
|
if (FileSystem::Instance().Exists(file_candidate))
|
Fix temporary directory computation on linux (pr25147)
Summary:
On linux, the environment variables for temp directories that lldb checks for are generally not
defined, and the temp directory computation failed. This caused expression evaluation to fall
back to creating "/tmp/lldb-*.expr" debugging files instead of the usual
"$TMP/lldb/pid/lldb-*.expr". Crucially, these files were not cleaned up on lldb exit, which
caused clutter in the /tmp folder, especially on long-running machines (e.g. builtbots). This
commit fixes lldb to use llvm::sys::path::system_temp_directory, which does the same environment
variable dance, but (!) also falls back to the P_tmpdir macro, which is how the temp directory is
defined on linux.
Since the linux temp path computation now succeeds, I needed to also modify Android path
computation to check for actual directory existence, rather then checking whether the operation
failed.
Reviewers: clayborg, tberghammer
Subscribers: tberghammer, lldb-commits, danalbert, srhines, emaste
Differential Revision: http://reviews.llvm.org/D13772
llvm-svn: 250502
2015-10-16 17:32:05 +08:00
|
|
|
return file_candidate;
|
2016-09-07 04:57:50 +08:00
|
|
|
}
|
|
|
|
|
Fix temporary directory computation on linux (pr25147)
Summary:
On linux, the environment variables for temp directories that lldb checks for are generally not
defined, and the temp directory computation failed. This caused expression evaluation to fall
back to creating "/tmp/lldb-*.expr" debugging files instead of the usual
"$TMP/lldb/pid/lldb-*.expr". Crucially, these files were not cleaned up on lldb exit, which
caused clutter in the /tmp folder, especially on long-running machines (e.g. builtbots). This
commit fixes lldb to use llvm::sys::path::system_temp_directory, which does the same environment
variable dance, but (!) also falls back to the P_tmpdir macro, which is how the temp directory is
defined on linux.
Since the linux temp path computation now succeeds, I needed to also modify Android path
computation to check for actual directory existence, rather then checking whether the operation
failed.
Reviewers: clayborg, tberghammer
Subscribers: tberghammer, lldb-commits, danalbert, srhines, emaste
Differential Revision: http://reviews.llvm.org/D13772
llvm-svn: 250502
2015-10-16 17:32:05 +08:00
|
|
|
return FileSpec();
|
2016-09-07 04:57:50 +08:00
|
|
|
}
|
Fix temporary directory computation on linux (pr25147)
Summary:
On linux, the environment variables for temp directories that lldb checks for are generally not
defined, and the temp directory computation failed. This caused expression evaluation to fall
back to creating "/tmp/lldb-*.expr" debugging files instead of the usual
"$TMP/lldb/pid/lldb-*.expr". Crucially, these files were not cleaned up on lldb exit, which
caused clutter in the /tmp folder, especially on long-running machines (e.g. builtbots). This
commit fixes lldb to use llvm::sys::path::system_temp_directory, which does the same environment
variable dance, but (!) also falls back to the P_tmpdir macro, which is how the temp directory is
defined on linux.
Since the linux temp path computation now succeeds, I needed to also modify Android path
computation to check for actual directory existence, rather then checking whether the operation
failed.
Reviewers: clayborg, tberghammer
Subscribers: tberghammer, lldb-commits, danalbert, srhines, emaste
Differential Revision: http://reviews.llvm.org/D13772
llvm-svn: 250502
2015-10-16 17:32:05 +08:00
|
|
|
|
2015-05-08 20:46:26 +08:00
|
|
|
bool HostInfoAndroid::ComputeTempFileBaseDirectory(FileSpec &file_spec) {
|
Fix temporary directory computation on linux (pr25147)
Summary:
On linux, the environment variables for temp directories that lldb checks for are generally not
defined, and the temp directory computation failed. This caused expression evaluation to fall
back to creating "/tmp/lldb-*.expr" debugging files instead of the usual
"$TMP/lldb/pid/lldb-*.expr". Crucially, these files were not cleaned up on lldb exit, which
caused clutter in the /tmp folder, especially on long-running machines (e.g. builtbots). This
commit fixes lldb to use llvm::sys::path::system_temp_directory, which does the same environment
variable dance, but (!) also falls back to the P_tmpdir macro, which is how the temp directory is
defined on linux.
Since the linux temp path computation now succeeds, I needed to also modify Android path
computation to check for actual directory existence, rather then checking whether the operation
failed.
Reviewers: clayborg, tberghammer
Subscribers: tberghammer, lldb-commits, danalbert, srhines, emaste
Differential Revision: http://reviews.llvm.org/D13772
llvm-svn: 250502
2015-10-16 17:32:05 +08:00
|
|
|
bool success = HostInfoLinux::ComputeTempFileBaseDirectory(file_spec);
|
2016-09-07 04:57:50 +08:00
|
|
|
|
Fix temporary directory computation on linux (pr25147)
Summary:
On linux, the environment variables for temp directories that lldb checks for are generally not
defined, and the temp directory computation failed. This caused expression evaluation to fall
back to creating "/tmp/lldb-*.expr" debugging files instead of the usual
"$TMP/lldb/pid/lldb-*.expr". Crucially, these files were not cleaned up on lldb exit, which
caused clutter in the /tmp folder, especially on long-running machines (e.g. builtbots). This
commit fixes lldb to use llvm::sys::path::system_temp_directory, which does the same environment
variable dance, but (!) also falls back to the P_tmpdir macro, which is how the temp directory is
defined on linux.
Since the linux temp path computation now succeeds, I needed to also modify Android path
computation to check for actual directory existence, rather then checking whether the operation
failed.
Reviewers: clayborg, tberghammer
Subscribers: tberghammer, lldb-commits, danalbert, srhines, emaste
Differential Revision: http://reviews.llvm.org/D13772
llvm-svn: 250502
2015-10-16 17:32:05 +08:00
|
|
|
// On Android, there is no path which is guaranteed to be writable. If the
|
2018-05-01 00:49:04 +08:00
|
|
|
// user has not provided a path via an environment variable, the generic
|
|
|
|
// algorithm will deduce /tmp, which is plain wrong. In that case we have an
|
|
|
|
// invalid directory, we substitute the path with /data/local/tmp, which is
|
|
|
|
// correct at least in some cases (i.e., when running as shell user).
|
2018-11-02 01:35:31 +08:00
|
|
|
if (!success || !FileSystem::Instance().Exists(file_spec))
|
2018-11-02 05:18:25 +08:00
|
|
|
file_spec = FileSpec("/data/local/tmp");
|
2016-09-07 04:57:50 +08:00
|
|
|
|
2018-11-02 01:35:31 +08:00
|
|
|
return FileSystem::Instance().Exists(file_spec);
|
2015-05-08 20:46:26 +08:00
|
|
|
}
|