[llvm] 6190356 - Revert "[Support] Implement findModulesAndOffsets on Apple 64-bit platforms"
Luís Marques via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 2 13:44:49 PST 2023
Author: Luís Marques
Date: 2023-03-02T21:44:34Z
New Revision: 6190356914e6cbab663c0b5593c2224fb2dc95b1
URL: https://github.com/llvm/llvm-project/commit/6190356914e6cbab663c0b5593c2224fb2dc95b1
DIFF: https://github.com/llvm/llvm-project/commit/6190356914e6cbab663c0b5593c2224fb2dc95b1.diff
LOG: Revert "[Support] Implement findModulesAndOffsets on Apple 64-bit platforms"
This reverts commit b8b8aa6f06458212193c4202291c9f68364b2025.
It broke AIX.
Added:
Modified:
llvm/lib/Support/Unix/Signals.inc
Removed:
################################################################################
diff --git a/llvm/lib/Support/Unix/Signals.inc b/llvm/lib/Support/Unix/Signals.inc
index 624ec731cf128..ce093d5a4dc07 100644
--- a/llvm/lib/Support/Unix/Signals.inc
+++ b/llvm/lib/Support/Unix/Signals.inc
@@ -62,9 +62,6 @@
#if HAVE_MACH_MACH_H
#include <mach/mach.h>
#endif
-#ifdef __APPLE__
-#include <mach-o/dyld.h>
-#endif
#if HAVE_LINK_H
#include <link.h>
#endif
@@ -464,9 +461,9 @@ void llvm::sys::AddSignalHandler(sys::SignalHandlerCallback FnPtr,
RegisterHandlers();
}
-#if defined(HAVE_BACKTRACE) && ENABLE_BACKTRACES
-#if HAVE_LINK_H && (defined(__linux__) || defined(__FreeBSD__) || \
- defined(__FreeBSD_kernel__) || defined(__NetBSD__))
+#if defined(HAVE_BACKTRACE) && ENABLE_BACKTRACES && HAVE_LINK_H && \
+ (defined(__linux__) || defined(__FreeBSD__) || \
+ defined(__FreeBSD_kernel__) || defined(__NetBSD__))
struct DlIteratePhdrData {
void **StackTrace;
int depth;
@@ -510,50 +507,16 @@ static bool findModulesAndOffsets(void **StackTrace, int Depth,
dl_iterate_phdr(dl_iterate_phdr_cb, &data);
return true;
}
-#elif defined(__APPLE__) && defined(__LP64__)
-static bool findModulesAndOffsets(void **StackTrace, int Depth,
- const char **Modules, intptr_t *Offsets,
- const char *MainExecutableName,
- StringSaver &StrPool) {
- uint32_t NumImgs = _dyld_image_count();
- for (uint32_t ImageIndex = 0; ImageIndex < NumImgs; ImageIndex++) {
- const char *Name = _dyld_get_image_name(ImageIndex);
- intptr_t Slide = _dyld_get_image_vmaddr_slide(ImageIndex);
- auto *Header =
- (const struct mach_header_64 *)_dyld_get_image_header(ImageIndex);
- if (Header == NULL)
- continue;
- auto Cmd = (const struct load_command *)(&Header[1]);
- for (uint32_t CmdNum = 0; CmdNum < Header->ncmds; ++CmdNum) {
- uint32_t BaseCmd = Cmd->cmd & ~LC_REQ_DYLD;
- if (BaseCmd == LC_SEGMENT_64) {
- auto CmdSeg64 = (const struct segment_command_64 *)Cmd;
- for (int j = 0; j < Depth; j++) {
- if (Modules[j])
- continue;
- intptr_t Addr = (intptr_t)StackTrace[j];
- if ((intptr_t)CmdSeg64->vmaddr + Slide <= Addr &&
- Addr < intptr_t(CmdSeg64->vmaddr + CmdSeg64->vmsize + Slide)) {
- Modules[j] = Name;
- Offsets[j] = Addr - Slide;
- }
- }
- }
- Cmd = (const load_command *)(((const char *)Cmd) + (Cmd->cmdsize));
- }
- }
- return true;
-}
#else
-/// We don't yet know how to find all loaded DSOs on this platform.
+/// This platform does not have dl_iterate_phdr, so we do not yet know how to
+/// find all loaded DSOs.
static bool findModulesAndOffsets(void **StackTrace, int Depth,
const char **Modules, intptr_t *Offsets,
const char *MainExecutableName,
StringSaver &StrPool) {
return false;
}
-#endif // per-platform findModulesAndOffsets implementations
-#endif // defined(HAVE_BACKTRACE) && ENABLE_BACKTRACES
+#endif // defined(HAVE_BACKTRACE) && ENABLE_BACKTRACES && ...
#if ENABLE_BACKTRACES && defined(HAVE__UNWIND_BACKTRACE)
static int unwindBacktrace(void **StackTrace, int MaxEntries) {
More information about the llvm-commits
mailing list