Skip to content

Commit 0e9e394

Browse files
author
z1_cciauto
authored
merge main into amd-staging (llvm#4328)
2 parents 2f2cd78 + b5004ca commit 0e9e394

File tree

62 files changed

+1130
-514
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1130
-514
lines changed

clang/include/clang/Tooling/DependencyScanning/DependencyScanningTool.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,6 @@ class FullDependencyConsumer : public DependencyConsumer {
220220
std::vector<std::string> VisibleModules;
221221
std::vector<Command> Commands;
222222
std::string ContextHash;
223-
std::vector<std::string> OutputPaths;
224223
const llvm::DenseSet<ModuleID> &AlreadySeen;
225224
};
226225

clang/lib/CodeGen/Targets/X86.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1343,9 +1343,10 @@ class X86_64ABIInfo : public ABIInfo {
13431343
}
13441344

13451345
bool returnCXXRecordGreaterThan128InMem() const {
1346-
// Clang <= 20.0 did not do this.
1346+
// Clang <= 20.0 did not do this, and PlayStation does not do this.
13471347
if (getContext().getLangOpts().getClangABICompat() <=
1348-
LangOptions::ClangABI::Ver20)
1348+
LangOptions::ClangABI::Ver20 ||
1349+
getTarget().getTriple().isPS())
13491350
return false;
13501351

13511352
return true;

clang/test/CodeGen/X86/avx-cxx-record.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
// RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -emit-llvm -O2 -target-cpu x86-64-v3 -o - | FileCheck %s
22
// RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -emit-llvm -O2 -target-cpu x86-64-v3 -fclang-abi-compat=20 -o - | FileCheck --check-prefix CLANG-20 %s
3+
// RUN: %clang_cc1 %s -triple x86_64-sie-ps4 -emit-llvm -O2 -target-cpu x86-64-v3 -o - | FileCheck --check-prefix CLANG-20 %s
34

45
using UInt64x2 = unsigned long long __attribute__((__vector_size__(16), may_alias));
6+
using UInt64x4 = unsigned long long __attribute__((__vector_size__(32), may_alias));
57

68
template<int id>
79
struct XMM1 {
@@ -23,3 +25,24 @@ XMM2 foo() {
2325
((XMM1<1>*)&result)->x = UInt64x2{3, 4};
2426
return result;
2527
}
28+
29+
template<int id>
30+
struct YMM1 {
31+
UInt64x4 x;
32+
};
33+
34+
struct YMM2 : YMM1<0>, YMM1<1> {
35+
};
36+
37+
// CHECK: define{{.*}} @_Z3barv({{.*}} [[ARG:%.*]]){{.*}}
38+
// CLANG-20: define{{.*}} <8 x double> @_Z3barv()
39+
// CHECK: entry:
40+
// CHECK-NEXT: store {{.*}}, ptr [[ARG]]{{.*}}
41+
// CHECK-NEXT: [[TMP1:%.*]] = getelementptr {{.*}}, ptr [[ARG]]{{.*}}
42+
// CHECK-NEXT: store {{.*}}, ptr [[TMP1]]{{.*}}
43+
YMM2 bar() {
44+
YMM2 result;
45+
((YMM1<0>*)&result)->x = UInt64x4{1, 2, 3, 4};
46+
((YMM1<1>*)&result)->x = UInt64x4{5, 6, 7, 8};
47+
return result;
48+
}

compiler-rt/lib/builtins/cpu_model/aarch64.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,15 @@ struct {
6969
#if defined(__APPLE__)
7070
#include "aarch64/fmv/apple.inc"
7171
#elif defined(__FreeBSD__) || defined(__OpenBSD__)
72-
#include "aarch64/fmv/mrs.inc"
72+
#include "aarch64/fmv/hwcap.inc"
7373
#include "aarch64/fmv/elf_aux_info.inc"
7474
#elif defined(__Fuchsia__)
7575
#include "aarch64/fmv/fuchsia.inc"
7676
#elif defined(__ANDROID__)
77-
#include "aarch64/fmv/mrs.inc"
77+
#include "aarch64/fmv/hwcap.inc"
7878
#include "aarch64/fmv/android.inc"
7979
#elif defined(__linux__) && __has_include(<sys/auxv.h>)
80-
#include "aarch64/fmv/mrs.inc"
80+
#include "aarch64/fmv/hwcap.inc"
8181
#include "aarch64/fmv/getauxval.inc"
8282
#elif defined(_WIN32)
8383
#include "aarch64/fmv/windows.inc"

compiler-rt/lib/builtins/cpu_model/aarch64/fmv/mrs.inc renamed to compiler-rt/lib/builtins/cpu_model/aarch64/fmv/hwcap.inc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@ static void __init_cpu_features_constructor(unsigned long hwcap,
77
const __ifunc_arg_t *arg) {
88
unsigned long long feat = 0;
99
#define setCPUFeature(F) feat |= 1ULL << F
10-
#define getCPUFeature(id, ftr) __asm__("mrs %0, " #id : "=r"(ftr))
11-
#define extractBits(val, start, number) \
12-
(val & ((1ULL << number) - 1ULL) << start) >> start
1310
unsigned long hwcap2 = 0;
1411
if (hwcap & _IFUNC_ARG_HWCAP)
1512
hwcap2 = arg->_hwcap2;

libc/config/linux/aarch64/entrypoints.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,8 @@ set(TARGET_LIBC_ENTRYPOINTS
325325
libc.src.unistd.dup2
326326
libc.src.unistd.dup3
327327
libc.src.unistd.execve
328-
libc.src.unistd.faccessat
328+
# Disabled while SYS_faccessat2 is unavailable on the buildbot.
329+
# libc.src.unistd.faccessat
329330
libc.src.unistd.fchdir
330331
libc.src.unistd.fpathconf
331332
libc.src.unistd.fsync

lldb/packages/Python/lldbsuite/test/cpu_feature.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ def _is_supported_darwin(self, cmd_runner):
6262
class AArch64:
6363
FPMR = CPUFeature("fpmr")
6464
GCS = CPUFeature("gcs")
65-
MTE = CPUFeature("mte")
65+
MTE = CPUFeature("mte", "hw.optional.arm.FEAT_MTE4")
6666
MTE_STORE_ONLY = CPUFeature("mtestoreonly")
6767
PTR_AUTH = CPUFeature("paca", "hw.optional.arm.FEAT_PAuth2")
6868
SME = CPUFeature("sme", "hw.optional.arm.FEAT_SME")

lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp

Lines changed: 51 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -2067,6 +2067,43 @@ static bool ParseTrieEntries(DataExtractor &data, lldb::offset_t offset,
20672067
return true;
20682068
}
20692069

2070+
static bool
2071+
TryParseV2ObjCMetadataSymbol(const char *&symbol_name,
2072+
const char *&symbol_name_non_abi_mangled,
2073+
SymbolType &type) {
2074+
static constexpr llvm::StringLiteral g_objc_v2_prefix_class("_OBJC_CLASS_$_");
2075+
static constexpr llvm::StringLiteral g_objc_v2_prefix_metaclass(
2076+
"_OBJC_METACLASS_$_");
2077+
static constexpr llvm::StringLiteral g_objc_v2_prefix_ivar("_OBJC_IVAR_$_");
2078+
2079+
llvm::StringRef symbol_name_ref(symbol_name);
2080+
if (symbol_name_ref.empty())
2081+
return false;
2082+
2083+
if (symbol_name_ref.starts_with(g_objc_v2_prefix_class)) {
2084+
symbol_name_non_abi_mangled = symbol_name + 1;
2085+
symbol_name = symbol_name + g_objc_v2_prefix_class.size();
2086+
type = eSymbolTypeObjCClass;
2087+
return true;
2088+
}
2089+
2090+
if (symbol_name_ref.starts_with(g_objc_v2_prefix_metaclass)) {
2091+
symbol_name_non_abi_mangled = symbol_name + 1;
2092+
symbol_name = symbol_name + g_objc_v2_prefix_metaclass.size();
2093+
type = eSymbolTypeObjCMetaClass;
2094+
return true;
2095+
}
2096+
2097+
if (symbol_name_ref.starts_with(g_objc_v2_prefix_ivar)) {
2098+
symbol_name_non_abi_mangled = symbol_name + 1;
2099+
symbol_name = symbol_name + g_objc_v2_prefix_ivar.size();
2100+
type = eSymbolTypeObjCIVar;
2101+
return true;
2102+
}
2103+
2104+
return false;
2105+
}
2106+
20702107
static SymbolType GetSymbolType(const char *&symbol_name,
20712108
bool &demangled_is_synthesized,
20722109
const SectionSP &text_section_sp,
@@ -2183,9 +2220,6 @@ void ObjectFileMachO::ParseSymtab(Symtab &symtab) {
21832220
lldb::offset_t offset = MachHeaderSizeFromMagic(m_header.magic);
21842221
uint32_t i;
21852222
FileSpecList dylib_files;
2186-
llvm::StringRef g_objc_v2_prefix_class("_OBJC_CLASS_$_");
2187-
llvm::StringRef g_objc_v2_prefix_metaclass("_OBJC_METACLASS_$_");
2188-
llvm::StringRef g_objc_v2_prefix_ivar("_OBJC_IVAR_$_");
21892223
UUID image_uuid;
21902224

21912225
for (i = 0; i < m_header.ncmds; ++i) {
@@ -2805,33 +2839,15 @@ void ObjectFileMachO::ParseSymtab(Symtab &symtab) {
28052839
is_gsym = true;
28062840
sym[sym_idx].SetExternal(true);
28072841

2808-
llvm::StringRef symbol_name_ref(symbol_name);
2809-
if (symbol_name_ref.starts_with(
2810-
g_objc_v2_prefix_class)) {
2811-
symbol_name_non_abi_mangled = symbol_name + 1;
2812-
symbol_name =
2813-
symbol_name + g_objc_v2_prefix_class.size();
2814-
type = eSymbolTypeObjCClass;
2815-
demangled_is_synthesized = true;
2816-
2817-
} else if (symbol_name_ref.starts_with(
2818-
g_objc_v2_prefix_metaclass)) {
2819-
symbol_name_non_abi_mangled = symbol_name + 1;
2820-
symbol_name =
2821-
symbol_name + g_objc_v2_prefix_metaclass.size();
2822-
type = eSymbolTypeObjCMetaClass;
2823-
demangled_is_synthesized = true;
2824-
} else if (symbol_name_ref.starts_with(
2825-
g_objc_v2_prefix_ivar)) {
2826-
symbol_name_non_abi_mangled = symbol_name + 1;
2827-
symbol_name =
2828-
symbol_name + g_objc_v2_prefix_ivar.size();
2829-
type = eSymbolTypeObjCIVar;
2842+
if (TryParseV2ObjCMetadataSymbol(
2843+
symbol_name, symbol_name_non_abi_mangled,
2844+
type)) {
28302845
demangled_is_synthesized = true;
28312846
} else {
28322847
if (nlist.n_value != 0)
28332848
symbol_section = section_info.GetSection(
28342849
nlist.n_sect, nlist.n_value);
2850+
28352851
type = eSymbolTypeData;
28362852
}
28372853
break;
@@ -3317,48 +3333,10 @@ void ObjectFileMachO::ParseSymtab(Symtab &symtab) {
33173333
symbol_sect_name) {
33183334
type = eSymbolTypeRuntime;
33193335

3320-
if (symbol_name) {
3321-
llvm::StringRef symbol_name_ref(symbol_name);
3322-
if (symbol_name_ref.starts_with("_OBJC_")) {
3323-
llvm::StringRef
3324-
g_objc_v2_prefix_class(
3325-
"_OBJC_CLASS_$_");
3326-
llvm::StringRef
3327-
g_objc_v2_prefix_metaclass(
3328-
"_OBJC_METACLASS_$_");
3329-
llvm::StringRef
3330-
g_objc_v2_prefix_ivar("_OBJC_IVAR_$_");
3331-
if (symbol_name_ref.starts_with(
3332-
g_objc_v2_prefix_class)) {
3333-
symbol_name_non_abi_mangled =
3334-
symbol_name + 1;
3335-
symbol_name =
3336-
symbol_name +
3337-
g_objc_v2_prefix_class.size();
3338-
type = eSymbolTypeObjCClass;
3339-
demangled_is_synthesized = true;
3340-
} else if (
3341-
symbol_name_ref.starts_with(
3342-
g_objc_v2_prefix_metaclass)) {
3343-
symbol_name_non_abi_mangled =
3344-
symbol_name + 1;
3345-
symbol_name =
3346-
symbol_name +
3347-
g_objc_v2_prefix_metaclass.size();
3348-
type = eSymbolTypeObjCMetaClass;
3349-
demangled_is_synthesized = true;
3350-
} else if (symbol_name_ref.starts_with(
3351-
g_objc_v2_prefix_ivar)) {
3352-
symbol_name_non_abi_mangled =
3353-
symbol_name + 1;
3354-
symbol_name =
3355-
symbol_name +
3356-
g_objc_v2_prefix_ivar.size();
3357-
type = eSymbolTypeObjCIVar;
3358-
demangled_is_synthesized = true;
3359-
}
3360-
}
3361-
}
3336+
if (TryParseV2ObjCMetadataSymbol(
3337+
symbol_name,
3338+
symbol_name_non_abi_mangled, type))
3339+
demangled_is_synthesized = true;
33623340
} else if (symbol_sect_name &&
33633341
::strstr(symbol_sect_name,
33643342
"__gcc_except_tab") ==
@@ -3665,27 +3643,14 @@ void ObjectFileMachO::ParseSymtab(Symtab &symtab) {
36653643
is_gsym = true;
36663644
sym[sym_idx].SetExternal(true);
36673645

3668-
llvm::StringRef symbol_name_ref(symbol_name);
3669-
if (symbol_name_ref.starts_with(g_objc_v2_prefix_class)) {
3670-
symbol_name_non_abi_mangled = symbol_name + 1;
3671-
symbol_name = symbol_name + g_objc_v2_prefix_class.size();
3672-
type = eSymbolTypeObjCClass;
3673-
demangled_is_synthesized = true;
3674-
3675-
} else if (symbol_name_ref.starts_with(g_objc_v2_prefix_metaclass)) {
3676-
symbol_name_non_abi_mangled = symbol_name + 1;
3677-
symbol_name = symbol_name + g_objc_v2_prefix_metaclass.size();
3678-
type = eSymbolTypeObjCMetaClass;
3679-
demangled_is_synthesized = true;
3680-
} else if (symbol_name_ref.starts_with(g_objc_v2_prefix_ivar)) {
3681-
symbol_name_non_abi_mangled = symbol_name + 1;
3682-
symbol_name = symbol_name + g_objc_v2_prefix_ivar.size();
3683-
type = eSymbolTypeObjCIVar;
3646+
if (TryParseV2ObjCMetadataSymbol(symbol_name,
3647+
symbol_name_non_abi_mangled, type)) {
36843648
demangled_is_synthesized = true;
36853649
} else {
36863650
if (nlist.n_value != 0)
36873651
symbol_section =
36883652
section_info.GetSection(nlist.n_sect, nlist.n_value);
3653+
36893654
type = eSymbolTypeData;
36903655
}
36913656
} break;
@@ -4124,38 +4089,9 @@ void ObjectFileMachO::ParseSymtab(Symtab &symtab) {
41244089
::strstr(symbol_sect_name, "__objc") == symbol_sect_name) {
41254090
type = eSymbolTypeRuntime;
41264091

4127-
if (symbol_name) {
4128-
llvm::StringRef symbol_name_ref(symbol_name);
4129-
if (symbol_name_ref.starts_with("_OBJC_")) {
4130-
llvm::StringRef g_objc_v2_prefix_class(
4131-
"_OBJC_CLASS_$_");
4132-
llvm::StringRef g_objc_v2_prefix_metaclass(
4133-
"_OBJC_METACLASS_$_");
4134-
llvm::StringRef g_objc_v2_prefix_ivar(
4135-
"_OBJC_IVAR_$_");
4136-
if (symbol_name_ref.starts_with(g_objc_v2_prefix_class)) {
4137-
symbol_name_non_abi_mangled = symbol_name + 1;
4138-
symbol_name =
4139-
symbol_name + g_objc_v2_prefix_class.size();
4140-
type = eSymbolTypeObjCClass;
4141-
demangled_is_synthesized = true;
4142-
} else if (symbol_name_ref.starts_with(
4143-
g_objc_v2_prefix_metaclass)) {
4144-
symbol_name_non_abi_mangled = symbol_name + 1;
4145-
symbol_name =
4146-
symbol_name + g_objc_v2_prefix_metaclass.size();
4147-
type = eSymbolTypeObjCMetaClass;
4148-
demangled_is_synthesized = true;
4149-
} else if (symbol_name_ref.starts_with(
4150-
g_objc_v2_prefix_ivar)) {
4151-
symbol_name_non_abi_mangled = symbol_name + 1;
4152-
symbol_name =
4153-
symbol_name + g_objc_v2_prefix_ivar.size();
4154-
type = eSymbolTypeObjCIVar;
4155-
demangled_is_synthesized = true;
4156-
}
4157-
}
4158-
}
4092+
if (TryParseV2ObjCMetadataSymbol(
4093+
symbol_name, symbol_name_non_abi_mangled, type))
4094+
demangled_is_synthesized = true;
41594095
} else if (symbol_sect_name &&
41604096
::strstr(symbol_sect_name, "__gcc_except_tab") ==
41614097
symbol_sect_name) {

lldb/test/API/macosx/mte/Makefile

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
C_SOURCES := main.c
2+
3+
EXE := uaf_mte
4+
5+
all: uaf_mte sign
6+
7+
include Makefile.rules
8+
9+
sign: mte-entitlements.plist uaf_mte
10+
ifeq ($(OS),Darwin)
11+
codesign -s - -f --entitlements $^
12+
endif

0 commit comments

Comments
 (0)