Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions compiler-rt/lib/asan/scripts/asan_symbolize.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ def is_valid_arch(s):
"armv7s",
"armv7k",
"arm64",
"arm64e",
"powerpc64",
"powerpc64le",
"s390x",
Expand Down
3 changes: 3 additions & 0 deletions compiler-rt/lib/sanitizer_common/sanitizer_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -737,6 +737,7 @@ enum ModuleArch {
kModuleArchARMV7S,
kModuleArchARMV7K,
kModuleArchARM64,
kModuleArchARM64E,
kModuleArchLoongArch64,
kModuleArchRISCV64,
kModuleArchHexagon
Expand Down Expand Up @@ -810,6 +811,8 @@ inline const char *ModuleArchToString(ModuleArch arch) {
return "armv7k";
case kModuleArchARM64:
return "arm64";
case kModuleArchARM64E:
return "arm64e";
case kModuleArchLoongArch64:
return "loongarch64";
case kModuleArchRISCV64:
Expand Down
47 changes: 29 additions & 18 deletions compiler-rt/lib/sanitizer_common/sanitizer_procmaps_mac.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,21 @@
#include <mach/mach.h>

// These are not available in older macOS SDKs.
#ifndef CPU_SUBTYPE_X86_64_H
#define CPU_SUBTYPE_X86_64_H ((cpu_subtype_t)8) /* Haswell */
#endif
#ifndef CPU_SUBTYPE_ARM_V7S
#define CPU_SUBTYPE_ARM_V7S ((cpu_subtype_t)11) /* Swift */
#endif
#ifndef CPU_SUBTYPE_ARM_V7K
#define CPU_SUBTYPE_ARM_V7K ((cpu_subtype_t)12)
#endif
#ifndef CPU_TYPE_ARM64
#define CPU_TYPE_ARM64 (CPU_TYPE_ARM | CPU_ARCH_ABI64)
#endif
# ifndef CPU_SUBTYPE_X86_64_H
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the formatting!

# define CPU_SUBTYPE_X86_64_H ((cpu_subtype_t)8) /* Haswell */
# endif
# ifndef CPU_SUBTYPE_ARM_V7S
# define CPU_SUBTYPE_ARM_V7S ((cpu_subtype_t)11) /* Swift */
# endif
# ifndef CPU_SUBTYPE_ARM_V7K
# define CPU_SUBTYPE_ARM_V7K ((cpu_subtype_t)12)
# endif
# ifndef CPU_TYPE_ARM64
# define CPU_TYPE_ARM64 (CPU_TYPE_ARM | CPU_ARCH_ABI64)
# endif
# ifndef CPU_SUBTYPE_ARM64E
# define CPU_SUBTYPE_ARM64E ((cpu_subtype_t)2)
# endif

namespace __sanitizer {

Expand Down Expand Up @@ -311,18 +314,26 @@ ModuleArch ModuleArchFromCpuType(cpu_type_t cputype, cpu_subtype_t cpusubtype) {
case CPU_TYPE_I386:
return kModuleArchI386;
case CPU_TYPE_X86_64:
if (cpusubtype == CPU_SUBTYPE_X86_64_ALL) return kModuleArchX86_64;
if (cpusubtype == CPU_SUBTYPE_X86_64_H) return kModuleArchX86_64H;
if (cpusubtype == CPU_SUBTYPE_X86_64_ALL)
return kModuleArchX86_64;
if (cpusubtype == CPU_SUBTYPE_X86_64_H)
return kModuleArchX86_64H;
CHECK(0 && "Invalid subtype of x86_64");
return kModuleArchUnknown;
case CPU_TYPE_ARM:
if (cpusubtype == CPU_SUBTYPE_ARM_V6) return kModuleArchARMV6;
if (cpusubtype == CPU_SUBTYPE_ARM_V7) return kModuleArchARMV7;
if (cpusubtype == CPU_SUBTYPE_ARM_V7S) return kModuleArchARMV7S;
if (cpusubtype == CPU_SUBTYPE_ARM_V7K) return kModuleArchARMV7K;
if (cpusubtype == CPU_SUBTYPE_ARM_V6)
return kModuleArchARMV6;
if (cpusubtype == CPU_SUBTYPE_ARM_V7)
return kModuleArchARMV7;
if (cpusubtype == CPU_SUBTYPE_ARM_V7S)
return kModuleArchARMV7S;
if (cpusubtype == CPU_SUBTYPE_ARM_V7K)
return kModuleArchARMV7K;
CHECK(0 && "Invalid subtype of ARM");
return kModuleArchUnknown;
case CPU_TYPE_ARM64:
if (cpusubtype == CPU_SUBTYPE_ARM64E)
return kModuleArchARM64E;
return kModuleArchARM64;
default:
CHECK(0 && "Invalid CPU type");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ TEST(MemoryMapping, LoadedModuleArchAndUUID) {
EXPECT_EQ(arch, kModuleArchI386);
} else if (SANITIZER_WORDSIZE == 64) {
EXPECT_TRUE(arch == kModuleArchX86_64 || arch == kModuleArchX86_64H ||
arch == kModuleArchARM64);
arch == kModuleArchARM64 || arch == kModuleArchARM64E);
}
const u8 *uuid = modules[i].uuid();
u8 null_uuid[kModuleUUIDSize] = {0};
Expand Down