maplelinux-bootstrap/patches/mrustc-maple.patch
2025-05-07 21:50:01 -04:00

386 lines
14 KiB
Diff

diff -ruN mrustc-0.11.2.orig/src/ast/ast.cpp mrustc-0.11.2/src/ast/ast.cpp
--- mrustc-0.11.2.orig/src/ast/ast.cpp 2025-05-05 19:48:49.015447489 -0400
+++ mrustc-0.11.2/src/ast/ast.cpp 2025-05-06 21:59:55.063318921 -0400
@@ -243,9 +243,9 @@
Function::Function(Span sp, ::std::string abi, Flags flags, GenericParams params, TypeRef ret_type, Arglist args, bool is_variadic):
m_span(sp),
- m_params( move(params) ),
- m_rettype( move(ret_type) ),
- m_args( move(args) ),
+ m_params( std::move(params) ),
+ m_rettype( std::move(ret_type) ),
+ m_args( std::move(args) ),
m_is_variadic(is_variadic),
m_abi( mv$(abi) ),
m_flags(flags)
diff -ruN mrustc-0.11.2.orig/src/ast/ast.hpp mrustc-0.11.2/src/ast/ast.hpp
--- mrustc-0.11.2.orig/src/ast/ast.hpp 2025-05-05 19:48:49.015447489 -0400
+++ mrustc-0.11.2/src/ast/ast.hpp 2025-05-06 22:00:48.786212819 -0400
@@ -101,8 +101,8 @@
//TypeAlias() {}
TypeAlias(GenericParams params, TypeRef type):
- m_params( move(params) ),
- m_type( move(type) )
+ m_params( std::move(params) ),
+ m_type( std::move(type) )
{}
static TypeAlias new_associated_type(GenericParams params, GenericParams type_bounds, TypeRef default_type) {
TypeAlias rv { std::move(params), std::move(default_type) };
@@ -164,8 +164,8 @@
Static(Class s_class, TypeRef type, Expr value):
m_class(s_class),
- m_type( move(type) ),
- m_value( move(value) )
+ m_type( std::move(type) ),
+ m_value( std::move(value) )
{}
const Class& s_class() const { return m_class; }
@@ -421,8 +421,8 @@
Enum() {}
Enum( GenericParams params, ::std::vector<EnumVariant> variants ):
- m_params( move(params) ),
- m_variants( move(variants) )
+ m_params( std::move(params) ),
+ m_variants( std::move(variants) )
{}
const GenericParams& params() const { return m_params; }
@@ -483,11 +483,11 @@
{
}
Struct( GenericParams params, ::std::vector<StructItem> fields ):
- m_params( move(params) ),
+ m_params( std::move(params) ),
m_data( StructData::make_Struct({mv$(fields)}) )
{}
Struct( GenericParams params, ::std::vector<TupleItem> fields ):
- m_params( move(params) ),
+ m_params( std::move(params) ),
m_data( StructData::make_Tuple({mv$(fields)}) )
{}
@@ -511,7 +511,7 @@
} m_markings;
Union( GenericParams params, ::std::vector<StructItem> fields ):
- m_params( move(params) ),
+ m_params( std::move(params) ),
m_variants( mv$(fields) )
{}
diff -ruN mrustc-0.11.2.orig/src/ast/expr.hpp mrustc-0.11.2/src/ast/expr.hpp
--- mrustc-0.11.2.orig/src/ast/expr.hpp 2025-05-05 19:48:49.015447489 -0400
+++ mrustc-0.11.2/src/ast/expr.hpp 2025-05-06 22:01:28.556431607 -0400
@@ -76,8 +76,8 @@
m_block_type(type),
m_yields_final_value(yields_final_value),
m_label(""),
- m_local_mod( move(local_mod) ),
- m_nodes( move(nodes) )
+ m_local_mod( std::move(local_mod) ),
+ m_nodes( std::move(nodes) )
{
}
@@ -106,9 +106,9 @@
bool m_is_braced;
ExprNode_Macro(AST::Path name, RcString ident, ::TokenTree&& tokens, bool is_braced=false):
- m_path( move(name) ),
+ m_path( std::move(name) ),
m_ident(ident),
- m_tokens( move(tokens) )
+ m_tokens( std::move(tokens) )
, m_is_braced(is_braced)
{}
@@ -132,11 +132,11 @@
::std::vector<::std::string> m_flags;
ExprNode_Asm(::std::string text, ::std::vector<ValRef> output, ::std::vector<ValRef> input, ::std::vector<::std::string> clobbers, ::std::vector<::std::string> flags):
- m_text( move(text) ),
- m_output( move(output) ),
- m_input( move(input) ),
- m_clobbers( move(clobbers) ),
- m_flags( move(flags) )
+ m_text( std::move(text) ),
+ m_output( std::move(output) ),
+ m_input( std::move(input) ),
+ m_clobbers( std::move(clobbers) ),
+ m_flags( std::move(flags) )
{
}
@@ -169,8 +169,8 @@
ExprNode_Asm2(AsmCommon::Options options, std::vector<AsmCommon::Line> lines, std::vector<Param> params)
: m_options(options)
- , m_lines( move(lines) )
- , m_params( move(params) )
+ , m_lines( std::move(lines) )
+ , m_params( std::move(params) )
{
}
@@ -194,8 +194,8 @@
ExprNode_Flow(Type type, Ident target, ExprNodeP value):
m_type(type),
- m_target( move(target) ),
- m_value( move(value) )
+ m_target( std::move(target) ),
+ m_value( std::move(value) )
{
}
@@ -212,10 +212,10 @@
::std::pair<unsigned,unsigned> m_letelse_slots;
ExprNode_LetBinding(Pattern pat, TypeRef type, ExprNodeP value, ExprNodeP else_arm={})
- : m_pat( move(pat) )
- , m_type( move(type) )
- , m_value( move(value) )
- , m_else( move(else_arm) )
+ : m_pat( std::move(pat) )
+ , m_type( std::move(type) )
+ , m_value( std::move(value) )
+ , m_else( std::move(else_arm) )
{
}
@@ -237,8 +237,8 @@
ExprNode_Assign(): m_op(NONE) {}
ExprNode_Assign(Operation op, ExprNodeP slot, ExprNodeP value):
m_op(op),
- m_slot( move(slot) ),
- m_value( move(value) )
+ m_slot( std::move(slot) ),
+ m_value( std::move(value) )
{
}
@@ -251,8 +251,8 @@
::std::vector<ExprNodeP> m_args;
ExprNode_CallPath(Path&& path, ::std::vector<ExprNodeP>&& args):
- m_path( move(path) ),
- m_args( move(args) )
+ m_path( std::move(path) ),
+ m_args( std::move(args) )
{
}
@@ -266,9 +266,9 @@
::std::vector<ExprNodeP> m_args;
ExprNode_CallMethod(ExprNodeP obj, PathNode method, ::std::vector<ExprNodeP> args):
- m_val( move(obj) ),
- m_method( move(method) ),
- m_args( move(args) )
+ m_val( std::move(obj) ),
+ m_method( std::move(method) ),
+ m_args( std::move(args) )
{
}
@@ -282,8 +282,8 @@
::std::vector<ExprNodeP> m_args;
ExprNode_CallObject(ExprNodeP val, ::std::vector< ExprNodeP >&& args):
- m_val( move(val) ),
- m_args( move(args) )
+ m_val( std::move(val) ),
+ m_args( std::move(args) )
{
}
NODE_METHODS();
@@ -531,9 +531,9 @@
t_values m_values;
ExprNode_StructLiteral(Path path, ExprNodeP base_value, t_values&& values ):
- m_path( move(path) ),
- m_base_value( move(base_value) ),
- m_values( move(values) )
+ m_path( std::move(path) ),
+ m_base_value( std::move(base_value) ),
+ m_values( std::move(values) )
{}
NODE_METHODS();
@@ -548,8 +548,8 @@
t_values m_values;
ExprNode_StructLiteralPattern(Path path, t_values&& values)
- : m_path( move(path) )
- , m_values( move(values) )
+ : m_path( std::move(path) )
+ , m_values( std::move(values) )
{}
NODE_METHODS();
@@ -646,8 +646,8 @@
TypeRef m_type;
ExprNode_Cast(ExprNodeP value, TypeRef&& dst_type):
- m_value( move(value) ),
- m_type( move(dst_type) )
+ m_value( std::move(value) ),
+ m_type( std::move(dst_type) )
{
}
NODE_METHODS();
@@ -661,8 +661,8 @@
TypeRef m_type;
ExprNode_TypeAnnotation(ExprNodeP value, TypeRef&& dst_type):
- m_value( move(value) ),
- m_type( move(dst_type) )
+ m_value( std::move(value) ),
+ m_type( std::move(dst_type) )
{
}
NODE_METHODS();
diff -ruN mrustc-0.11.2.orig/src/ast/lifetime_ref.hpp mrustc-0.11.2/src/ast/lifetime_ref.hpp
--- mrustc-0.11.2.orig/src/ast/lifetime_ref.hpp 2025-05-05 20:46:46.568398964 -0400
+++ mrustc-0.11.2/src/ast/lifetime_ref.hpp 2025-05-05 19:59:44.934652489 -0400
@@ -6,6 +6,7 @@
* - AST Lifetime reference
*/
#pragma once
+#include <cstdint>
#include "../common.hpp"
#include "ident.hpp"
diff -ruN mrustc-0.11.2.orig/src/debug.cpp mrustc-0.11.2/src/debug.cpp
--- mrustc-0.11.2.orig/src/debug.cpp 2025-05-05 20:46:46.568562659 -0400
+++ mrustc-0.11.2/src/debug.cpp 2025-05-05 19:57:59.149549205 -0400
@@ -5,6 +5,7 @@
* debug.cpp
* - Debug printing (with indenting)
*/
+#include <cstdint>
#include <debug_inner.hpp>
#include <debug.hpp>
#include <set>
diff -ruN mrustc-0.11.2.orig/src/hir/expr.hpp mrustc-0.11.2/src/hir/expr.hpp
--- mrustc-0.11.2.orig/src/hir/expr.hpp 2025-05-05 19:48:49.017523096 -0400
+++ mrustc-0.11.2/src/hir/expr.hpp 2025-05-06 22:02:51.568333466 -0400
@@ -156,8 +156,8 @@
ExprNode_Asm2(Span sp, AsmCommon::Options options, std::vector<AsmCommon::Line> lines, std::vector<Param> params)
: ExprNode(mv$(sp))
, m_options(options)
- , m_lines( move(lines) )
- , m_params( move(params) )
+ , m_lines( std::move(lines) )
+ , m_params( std::move(params) )
{
}
diff -ruN mrustc-0.11.2.orig/src/hir/generic_ref.hpp mrustc-0.11.2/src/hir/generic_ref.hpp
--- mrustc-0.11.2.orig/src/hir/generic_ref.hpp 2025-05-05 20:46:46.568679102 -0400
+++ mrustc-0.11.2/src/hir/generic_ref.hpp 2025-05-05 19:59:36.463727568 -0400
@@ -6,6 +6,7 @@
* - Reference to a generic
*/
#pragma once
+#include <cstdint>
#include <rc_string.hpp>
/// Binding index for a Generic that indicates "Self"
diff -ruN mrustc-0.11.2.orig/src/hir/type_ref.hpp mrustc-0.11.2/src/hir/type_ref.hpp
--- mrustc-0.11.2.orig/src/hir/type_ref.hpp 2025-05-05 20:46:46.568770980 -0400
+++ mrustc-0.11.2/src/hir/type_ref.hpp 2025-05-05 19:59:57.743537961 -0400
@@ -7,6 +7,7 @@
*/
#pragma once
+#include <cstdint>
#include <rc_string.hpp>
#include <span.hpp>
diff -ruN mrustc-0.11.2.orig/src/macro_rules/macro_rules.hpp mrustc-0.11.2/src/macro_rules/macro_rules.hpp
--- mrustc-0.11.2.orig/src/macro_rules/macro_rules.hpp 2025-05-05 19:48:49.012008507 -0400
+++ mrustc-0.11.2/src/macro_rules/macro_rules.hpp 2025-05-06 22:02:05.491732403 -0400
@@ -102,7 +102,7 @@
name( op ),
name_index(index),
tok( mv$(sep) ),
- subpats( move(ents) ),
+ subpats( std::move(ents) ),
type(PAT_LOOP)
{
}
diff -ruN mrustc-0.11.2.orig/src/trans/codegen_c.cpp mrustc-0.11.2/src/trans/codegen_c.cpp
--- mrustc-0.11.2.orig/src/trans/codegen_c.cpp 2025-05-05 19:48:49.014366958 -0400
+++ mrustc-0.11.2/src/trans/codegen_c.cpp 2025-05-06 22:09:34.173707709 -0400
@@ -1287,10 +1287,11 @@
break;
}
// HACK: Work around [https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117423] by disabling an optimisation stage
- if( opt.opt_level > 0 )
+ // Disabled for Maple Linux. See build-chroot.sh for details. ~ahill
+ /* if( opt.opt_level > 0 )
{
args.push_back("-fno-tree-sra");
- }
+ } */
if( opt.emit_debug_info )
{
args.push_back("-g");
@@ -4785,7 +4786,8 @@
switch (v.first[0])
{
case '=': m_of << "="; break;
- case '+': m_of << "+"; break;
+ // Patched for Maple Linux. See build-chroot.sh for details. ~ahill
+ case '+': m_of << "="; break;
default: MIR_TODO(mir_res, "Handle asm! output leader '" << v.first[0] << "'");
}
m_of << H::convert_reg(v.first.c_str() + 1);
@@ -5428,12 +5430,14 @@
if(i != 0) m_of << ",";
m_of << " ";
m_of << "\"";
- if( !p.output && !p.input ) {
+ // Patched for Maple Linux. See build-chroot.sh for details. ~ahill
+ m_of << "=";
+ /*if( !p.output && !p.input ) {
m_of << "+";
}
else {
m_of << (p.input ? "+" : "=");
- }
+ }*/
TU_MATCH_HDRA((p.spec), {)
TU_ARMA(Class, c)
// https://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html
diff -ruN mrustc-0.11.2.orig/src/trans/target.cpp mrustc-0.11.2/src/trans/target.cpp
--- mrustc-0.11.2.orig/src/trans/target.cpp 2025-05-05 19:48:49.014366958 -0400
+++ mrustc-0.11.2/src/trans/target.cpp 2025-05-06 22:07:39.775297252 -0400
@@ -405,7 +405,8 @@
TargetSpec init_from_spec_name(const ::std::string& target_name)
{
// Options for all the fully-GNU environments
- #define BACKEND_C_OPTS_GNU {"-ffunction-sections", "-pthread"}, {"-Wl,--start-group"}, {"-Wl,--end-group", "-Wl,--gc-sections", "-l", "atomic"}
+ // Patched for Maple Linux. See build-chroot.sh for details. ~ahill
+ #define BACKEND_C_OPTS_GNU {"-ffunction-sections", "-pthread"}, {"-Wl,--start-group"}, {"-Wl,--end-group", "-Wl,--gc-sections"}
// If there's a '/' or a '\' in the filename, open it as a path, otherwise assume it's a triple.
if( target_name.find('/') != ::std::string::npos || target_name.find('\\') != ::std::string::npos )
{
diff -ruN mrustc-0.11.2.orig/src/trans/codegen_c.cpp mrustc-0.11.2/src/trans/codegen_c.cpp
--- mrustc-0.11.2.orig/src/trans/codegen_c.cpp 2024-12-29 22:28:18.000000000 -0500
+++ mrustc-0.11.2/src/trans/codegen_c.cpp 2025-05-07 12:57:51.573401275 -0400
@@ -1295,6 +1295,7 @@
{
args.push_back("-g");
}
+ args.push_back("-fno-delete-null-pointer-checks");
// TODO: Why?
args.push_back("-fPIC");
args.push_back("-o");