# --- T2-COPYRIGHT-NOTE-BEGIN --- # T2 SDE: package/*/llvm/hotfix-sparcv9-not-64.diff # Copyright (C) 2024 The T2 SDE Project # # This Copyright note is generated by scripts/Create-CopyPatch, # more information can be found in the files COPYING and README. # # This patch file is dual-licensed. It is available under the license the # patched project is licensed under, as long as it is an OpenSource license # as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms # of the GNU General Public License version 2 as used by the T2 SDE. # --- T2-COPYRIGHT-NOTE-END --- --- llvm-19.1.3.src/lib/TargetParser/Triple.cpp.orig 2024-10-29 11:09:39.000000000 +0100 +++ llvm-19.1.3.src/lib/TargetParser/Triple.cpp 2024-11-18 15:16:46.152757300 +0100 @@ -68,7 +68,7 @@ case shave: return "shave"; case sparc: return "sparc"; case sparcel: return "sparcel"; - case sparcv9: return "sparcv9"; + case sparcv9: return "sparc64"; case spir64: return "spir64"; case spir: return "spir"; case spirv: return "spirv"; @@ -423,8 +423,10 @@ .Case("riscv64", riscv64) .Case("hexagon", hexagon) .Case("sparc", sparc) + .Case("sparcv8", sparc) + .Case("sparcv9", sparc) .Case("sparcel", sparcel) - .Case("sparcv9", sparcv9) + .Case("sparc64", sparcv9) .Case("s390x", systemz) .Case("systemz", systemz) .Case("tce", tce) @@ -571,9 +573,9 @@ .Case("riscv64", Triple::riscv64) .Case("hexagon", Triple::hexagon) .Cases("s390x", "systemz", Triple::systemz) - .Case("sparc", Triple::sparc) + .Cases("sparc", "sparcv8", Triple::sparc) .Case("sparcel", Triple::sparcel) - .Cases("sparcv9", "sparc64", Triple::sparcv9) + .Case("sparc64", Triple::sparcv9) .Case("tce", Triple::tce) .Case("tcele", Triple::tcele) .Case("xcore", Triple::xcore) --- llvm-19.1.3.src/lib/Target/Sparc/MCTargetDesc/SparcTargetStreamer.cpp.orig 2024-10-29 11:09:39.000000000 +0100 +++ llvm-19.1.3.src/lib/Target/Sparc/MCTargetDesc/SparcTargetStreamer.cpp 2024-11-18 16:55:34.211899420 +0100 @@ -13,6 +13,10 @@ #include "SparcTargetStreamer.h" #include "SparcInstPrinter.h" #include "llvm/MC/MCRegister.h" +#include "llvm/BinaryFormat/ELF.h" +#include "llvm/MC/MCAssembler.h" +#include "llvm/MC/MCCodeEmitter.h" +#include "llvm/MC/MCObjectWriter.h" #include "llvm/Support/FormattedStream.h" using namespace llvm; @@ -39,7 +42,11 @@ } SparcTargetELFStreamer::SparcTargetELFStreamer(MCStreamer &S) - : SparcTargetStreamer(S) {} + : SparcTargetStreamer(S) { + ELFObjectWriter &W = getStreamer().getWriter(); + + W.setELFHeaderEFlags(W.getELFHeaderEFlags() | 0x100); // TOOD: conditional on target, options? EF_SPARC_32PLUS 0x000100 /* generic V8+ features */ +} MCELFStreamer &SparcTargetELFStreamer::getStreamer() { return static_cast(Streamer);