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