diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 8c40dc9e7b7d9..7b55033e3870c 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -3,17 +3,17 @@
-
+
https://github.com/dotnet/arcade
- 234e0726c7384ee84bf08550f2d16a1ff2d5c543
+ dfc6882da43decb37f12e0d9011ce82b25225578
-
+
https://github.com/dotnet/arcade
- 234e0726c7384ee84bf08550f2d16a1ff2d5c543
+ dfc6882da43decb37f12e0d9011ce82b25225578
-
+
https://github.com/dotnet/arcade
- 234e0726c7384ee84bf08550f2d16a1ff2d5c543
+ dfc6882da43decb37f12e0d9011ce82b25225578
diff --git a/eng/Versions.props b/eng/Versions.props
index d85dfd72ec243..b1b46fe911f60 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -6,6 +6,6 @@
1
- 8.0.0-beta.23302.3
+ 8.0.0-beta.23319.1
diff --git a/eng/common/dotnet-install.sh b/eng/common/dotnet-install.sh
index abd045a3247f0..7e69e3a9e24a7 100755
--- a/eng/common/dotnet-install.sh
+++ b/eng/common/dotnet-install.sh
@@ -54,6 +54,10 @@ cpuname=$(uname -m)
case $cpuname in
arm64|aarch64)
buildarch=arm64
+ if [ "$(getconf LONG_BIT)" -lt 64 ]; then
+ # This is 32-bit OS running on 64-bit CPU (for example Raspberry Pi OS)
+ buildarch=arm
+ fi
;;
loongarch64)
buildarch=loongarch64
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index ffe0b4e2dfc4d..c9eced9f7df4c 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -379,7 +379,7 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements =
}
# Minimum VS version to require.
- $vsMinVersionReqdStr = '16.8'
+ $vsMinVersionReqdStr = '17.6'
$vsMinVersionReqd = [Version]::new($vsMinVersionReqdStr)
# If the version of msbuild is going to be xcopied,
diff --git a/global.json b/global.json
index ca88245576d2f..cd9913bb3f680 100644
--- a/global.json
+++ b/global.json
@@ -1,10 +1,10 @@
{
"tools": {
- "dotnet": "8.0.100-preview.4.23260.5"
+ "dotnet": "8.0.100-preview.5.23303.2"
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.23302.3",
- "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23302.3",
+ "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.23319.1",
+ "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23319.1",
"Microsoft.Build.Traversal": "3.4.0"
}
}
diff --git a/llvm/include/llvm/MC/MCObjectFileInfo.h b/llvm/include/llvm/MC/MCObjectFileInfo.h
index 3c1d10c4e62f1..be5c768cf0a54 100644
--- a/llvm/include/llvm/MC/MCObjectFileInfo.h
+++ b/llvm/include/llvm/MC/MCObjectFileInfo.h
@@ -344,7 +344,7 @@ class MCObjectFileInfo {
}
MCSection *getTLSExtraDataSection() const { return TLSExtraDataSection; }
- const MCSection *getTLSDataSection() const { return TLSDataSection; }
+ MCSection *getTLSDataSection() const { return TLSDataSection; }
MCSection *getTLSBSSSection() const { return TLSBSSSection; }
MCSection *getStackMapSection() const { return StackMapSection; }
diff --git a/llvm/tools/objwriter/debugInfo/dwarf/dwarfAbbrev.cpp b/llvm/tools/objwriter/debugInfo/dwarf/dwarfAbbrev.cpp
index 6eeb797db5722..5ecf7fe2bbe54 100644
--- a/llvm/tools/objwriter/debugInfo/dwarf/dwarfAbbrev.cpp
+++ b/llvm/tools/objwriter/debugInfo/dwarf/dwarfAbbrev.cpp
@@ -59,6 +59,13 @@ void Dump(MCObjectStreamer *Streamer, uint16_t DwarfVersion, unsigned TargetPoin
dwarf::DW_AT_byte_size, dwarf::DW_FORM_data1,
0, 0,
+ EnumerationTypeNoChildren,
+ dwarf::DW_TAG_enumeration_type, dwarf::DW_CHILDREN_no,
+ dwarf::DW_AT_name, dwarf::DW_FORM_strp,
+ dwarf::DW_AT_type, dwarf::DW_FORM_ref4,
+ dwarf::DW_AT_byte_size, dwarf::DW_FORM_data1,
+ 0, 0,
+
Enumerator1,
dwarf::DW_TAG_enumerator, dwarf::DW_CHILDREN_no,
dwarf::DW_AT_name, dwarf::DW_FORM_strp,
diff --git a/llvm/tools/objwriter/debugInfo/dwarf/dwarfAbbrev.h b/llvm/tools/objwriter/debugInfo/dwarf/dwarfAbbrev.h
index 448123c99a92d..ce447ac64d1f9 100644
--- a/llvm/tools/objwriter/debugInfo/dwarf/dwarfAbbrev.h
+++ b/llvm/tools/objwriter/debugInfo/dwarf/dwarfAbbrev.h
@@ -21,6 +21,7 @@ enum DwarfAbbrev : uint16_t
CompileUnit = 0x1,
BaseType,
EnumerationType,
+ EnumerationTypeNoChildren,
Enumerator1,
Enumerator2,
Enumerator4,
diff --git a/llvm/tools/objwriter/debugInfo/dwarf/dwarfTypeBuilder.cpp b/llvm/tools/objwriter/debugInfo/dwarf/dwarfTypeBuilder.cpp
index ff4ab03e6c9bb..ba0007c93a9cb 100644
--- a/llvm/tools/objwriter/debugInfo/dwarf/dwarfTypeBuilder.cpp
+++ b/llvm/tools/objwriter/debugInfo/dwarf/dwarfTypeBuilder.cpp
@@ -282,7 +282,7 @@ void DwarfEnumTypeInfo::DumpStrings(MCObjectStreamer *Streamer) {
void DwarfEnumTypeInfo::DumpTypeInfo(MCObjectStreamer *Streamer, UserDefinedDwarfTypesBuilder *TypeBuilder) {
// Abbrev Number
- Streamer->emitULEB128IntValue(DwarfAbbrev::EnumerationType);
+ Streamer->emitULEB128IntValue(HasChildren() ? DwarfAbbrev::EnumerationType : DwarfAbbrev::EnumerationTypeNoChildren);
// DW_AT_name
EmitSectionOffset(Streamer, StrSymbol, 4);
diff --git a/llvm/tools/objwriter/objwriter.cpp b/llvm/tools/objwriter/objwriter.cpp
index 27ac94aa0e88d..b117670302f02 100644
--- a/llvm/tools/objwriter/objwriter.cpp
+++ b/llvm/tools/objwriter/objwriter.cpp
@@ -222,6 +222,10 @@ MCSection *ObjectWriter::GetSection(const char *SectionName,
Section = ObjFileInfo->getReadOnlySection();
} else if (strcmp(SectionName, "xdata") == 0) {
Section = ObjFileInfo->getXDataSection();
+ } else if (strcmp(SectionName, "tdata") == 0) {
+ Section = ObjFileInfo->getTLSDataSection();
+ } else if (strcmp(SectionName, "tbss") == 0) {
+ Section = ObjFileInfo->getTLSBSSSection();
} else if (strcmp(SectionName, "bss") == 0) {
if (OutContext->getObjectFileType() == MCContext::IsMachO) {
Section = ObjFileInfo->getDataBSSSection();
@@ -457,6 +461,61 @@ int ObjectWriter::EmitSymbolRef(const char *SymbolName,
case RelocType::IMAGE_REL_BASED_DIR64:
Size = 8;
break;
+ case RelocType::IMAGE_REL_SECREL:
+ Kind = MCSymbolRefExpr::VK_SECREL;
+ Size = 4;
+ break;
+ case RelocType::IMAGE_REL_TLSGD:
+ Kind = MCSymbolRefExpr::VK_TLSGD;
+ Size = 4;
+ break;
+ case RelocType::IMAGE_REL_TPOFF:
+ Kind = MCSymbolRefExpr::VK_TPOFF;
+ Size = 4;
+ break;
+
+ case RelocType::IMAGE_REL_AARCH64_TLSLE_ADD_TPREL_HI12: {
+ const MCExpr* TargetExpr = GenTargetExpr(Symbol, Kind, Delta);
+ TargetExpr =
+ AArch64MCExpr::create(TargetExpr, AArch64MCExpr::VK_TPREL_HI12, *OutContext);
+ EmitRelocDirective(GetDFSize(), "R_AARCH64_TLSLE_ADD_TPREL_HI12", TargetExpr);
+ return 4;
+ }
+ case RelocType::IMAGE_REL_AARCH64_TLSLE_ADD_TPREL_LO12_NC: {
+ const MCExpr* TargetExpr = GenTargetExpr(Symbol, Kind, Delta);
+ TargetExpr =
+ AArch64MCExpr::create(TargetExpr, AArch64MCExpr::VK_TPREL_LO12_NC, *OutContext);
+ EmitRelocDirective(GetDFSize(), "R_AARCH64_TLSLE_ADD_TPREL_LO12_NC", TargetExpr);
+ return 4;
+ }
+
+ case RelocType::IMAGE_REL_AARCH64_TLSDESC_ADR_PAGE21: {
+ const MCExpr* TargetExpr = GenTargetExpr(Symbol, Kind, Delta);
+ TargetExpr =
+ AArch64MCExpr::create(TargetExpr, AArch64MCExpr::VK_TLSDESC_PAGE, *OutContext);
+ EmitRelocDirective(GetDFSize(), "R_AARCH64_TLSDESC_ADR_PAGE21", TargetExpr);
+ return 4;
+ }
+ case RelocType::IMAGE_REL_AARCH64_TLSDESC_LD64_LO12: {
+ const MCExpr* TargetExpr = GenTargetExpr(Symbol, Kind, Delta);
+ TargetExpr =
+ AArch64MCExpr::create(TargetExpr, AArch64MCExpr::VK_TLSDESC_LO12, *OutContext);
+ EmitRelocDirective(GetDFSize(), "R_AARCH64_TLSDESC_LD64_LO12", TargetExpr);
+ return 4;
+ }
+ case RelocType::IMAGE_REL_AARCH64_TLSDESC_ADD_LO12: {
+ const MCExpr* TargetExpr = GenTargetExpr(Symbol, Kind, Delta);
+ TargetExpr =
+ AArch64MCExpr::create(TargetExpr, AArch64MCExpr::VK_TLSDESC_LO12, *OutContext);
+ EmitRelocDirective(GetDFSize(), "R_AARCH64_TLSDESC_ADD_LO12", TargetExpr);
+ return 4;
+ }
+ case RelocType::IMAGE_REL_AARCH64_TLSDESC_CALL: {
+ const MCExpr* TargetExpr = GenTargetExpr(Symbol, Kind, Delta);
+ EmitRelocDirective(GetDFSize(), "R_AARCH64_TLSDESC_CALL", TargetExpr);
+ return 4;
+ }
+
case RelocType::IMAGE_REL_BASED_REL32:
if (OutContext->getObjectFileType() == MCContext::IsMachO &&
OutContext->getTargetTriple().getArch() == Triple::aarch64) {
diff --git a/llvm/tools/objwriter/objwriter.h b/llvm/tools/objwriter/objwriter.h
index 860312f92a13e..204a231786e20 100644
--- a/llvm/tools/objwriter/objwriter.h
+++ b/llvm/tools/objwriter/objwriter.h
@@ -59,6 +59,29 @@ enum class RelocType {
IMAGE_REL_BASED_RELPTR32 = 0x7C,
IMAGE_REL_BASED_ARM64_PAGEBASE_REL21 = 0x81,
IMAGE_REL_BASED_ARM64_PAGEOFFSET_12A = 0x82,
+
+ //
+ // Relocation operators related to TLS access
+ //
+
+ // Windows x64
+ IMAGE_REL_SECREL = 0x104,
+
+ // Linux x64
+ // GD model
+ IMAGE_REL_TLSGD = 0x105,
+ // LE model
+ IMAGE_REL_TPOFF = 0x106,
+
+ // Linux arm64
+ // TLSDESC (dynamic)
+ IMAGE_REL_AARCH64_TLSDESC_ADR_PAGE21 = 0x107,
+ IMAGE_REL_AARCH64_TLSDESC_LD64_LO12 = 0x108,
+ IMAGE_REL_AARCH64_TLSDESC_ADD_LO12 = 0x109,
+ IMAGE_REL_AARCH64_TLSDESC_CALL = 0x10A,
+ // LE model
+ IMAGE_REL_AARCH64_TLSLE_ADD_TPREL_HI12 = 0x10B,
+ IMAGE_REL_AARCH64_TLSLE_ADD_TPREL_LO12_NC = 0x10C,
};
enum class SymbolRefFlags