mirror of
https://github.com/esp-rs/esp-hal.git
synced 2025-09-30 13:50:38 +00:00
discard interrupt symbols from lto so that lto doesn't end up rebinding them (#1327)
This commit is contained in:
parent
0cb5e4e82d
commit
25f509ce74
@ -1,35 +1,35 @@
|
||||
PROVIDE(DefaultHandler = EspDefaultHandler);
|
||||
|
||||
PROVIDE(cpu_int_1_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_2_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_3_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_4_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_5_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_6_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_7_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_8_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_9_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_10_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_11_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_12_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_13_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_14_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_15_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_16_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_17_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_18_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_19_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_20_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_21_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_22_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_23_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_24_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_25_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_26_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_27_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_28_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_29_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_30_handler = DefaultHandler);
|
||||
PROVIDE(cpu_int_31_handler = DefaultHandler);
|
||||
PROVIDE(interrupt1 = DefaultHandler);
|
||||
PROVIDE(interrupt2 = DefaultHandler);
|
||||
PROVIDE(interrupt3 = DefaultHandler);
|
||||
PROVIDE(interrupt4 = DefaultHandler);
|
||||
PROVIDE(interrupt5 = DefaultHandler);
|
||||
PROVIDE(interrupt6 = DefaultHandler);
|
||||
PROVIDE(interrupt7 = DefaultHandler);
|
||||
PROVIDE(interrupt8 = DefaultHandler);
|
||||
PROVIDE(interrupt9 = DefaultHandler);
|
||||
PROVIDE(interrupt10 = DefaultHandler);
|
||||
PROVIDE(interrupt11 = DefaultHandler);
|
||||
PROVIDE(interrupt12 = DefaultHandler);
|
||||
PROVIDE(interrupt13 = DefaultHandler);
|
||||
PROVIDE(interrupt14 = DefaultHandler);
|
||||
PROVIDE(interrupt15 = DefaultHandler);
|
||||
PROVIDE(interrupt16 = DefaultHandler);
|
||||
PROVIDE(interrupt17 = DefaultHandler);
|
||||
PROVIDE(interrupt18 = DefaultHandler);
|
||||
PROVIDE(interrupt19 = DefaultHandler);
|
||||
PROVIDE(interrupt20 = DefaultHandler);
|
||||
PROVIDE(interrupt21 = DefaultHandler);
|
||||
PROVIDE(interrupt22 = DefaultHandler);
|
||||
PROVIDE(interrupt23 = DefaultHandler);
|
||||
PROVIDE(interrupt24 = DefaultHandler);
|
||||
PROVIDE(interrupt25 = DefaultHandler);
|
||||
PROVIDE(interrupt26 = DefaultHandler);
|
||||
PROVIDE(interrupt27 = DefaultHandler);
|
||||
PROVIDE(interrupt28 = DefaultHandler);
|
||||
PROVIDE(interrupt29 = DefaultHandler);
|
||||
PROVIDE(interrupt30 = DefaultHandler);
|
||||
PROVIDE(interrupt31 = DefaultHandler);
|
||||
|
||||
INCLUDE "device.x"
|
||||
|
@ -439,119 +439,119 @@ mod vectored {
|
||||
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_1_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt1(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt1, context)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_2_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt2(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt2, context)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_3_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt3(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt3, context)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_4_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt4(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt4, context)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_5_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt5(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt5, context)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_6_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt6(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt6, context)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_7_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt7(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt7, context)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_8_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt8(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt8, context)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_9_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt9(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt9, context)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_10_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt10(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt10, context)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_11_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt11(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt11, context)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_12_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt12(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt12, context)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_13_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt13(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt13, context)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_14_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt14(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt14, context)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_15_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt15(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt15, context)
|
||||
}
|
||||
|
||||
#[cfg(plic)]
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_16_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt16(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt16, context)
|
||||
}
|
||||
|
||||
#[cfg(plic)]
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_17_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt17(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt17, context)
|
||||
}
|
||||
|
||||
#[cfg(plic)]
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_18_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt18(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt18, context)
|
||||
}
|
||||
|
||||
#[cfg(plic)]
|
||||
#[no_mangle]
|
||||
#[ram]
|
||||
unsafe fn cpu_int_19_handler(context: &mut TrapFrame) {
|
||||
unsafe fn interrupt19(context: &mut TrapFrame) {
|
||||
handle_interrupts(CpuInterrupt::Interrupt19, context)
|
||||
}
|
||||
}
|
||||
|
@ -512,157 +512,157 @@ r#"
|
||||
_start_trap1:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_1_handler
|
||||
la ra, interrupt1
|
||||
j _start_trap_direct
|
||||
_start_trap2:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_2_handler
|
||||
la ra, interrupt2
|
||||
j _start_trap_direct
|
||||
_start_trap3:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_3_handler
|
||||
la ra, interrupt3
|
||||
j _start_trap_direct
|
||||
_start_trap4:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_4_handler
|
||||
la ra, interrupt4
|
||||
j _start_trap_direct
|
||||
_start_trap5:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_5_handler
|
||||
la ra, interrupt5
|
||||
j _start_trap_direct
|
||||
_start_trap6:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_6_handler
|
||||
la ra, interrupt6
|
||||
j _start_trap_direct
|
||||
_start_trap7:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_7_handler
|
||||
la ra, interrupt7
|
||||
j _start_trap_direct
|
||||
_start_trap8:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_8_handler
|
||||
la ra, interrupt8
|
||||
j _start_trap_direct
|
||||
_start_trap9:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_9_handler
|
||||
la ra, interrupt9
|
||||
j _start_trap_direct
|
||||
_start_trap10:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_10_handler
|
||||
la ra, interrupt10
|
||||
j _start_trap_direct
|
||||
_start_trap11:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_11_handler
|
||||
la ra, interrupt11
|
||||
j _start_trap_direct
|
||||
_start_trap12:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_12_handler
|
||||
la ra, interrupt12
|
||||
j _start_trap_direct
|
||||
_start_trap13:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_13_handler
|
||||
la ra, interrupt13
|
||||
j _start_trap_direct
|
||||
_start_trap14:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_14_handler
|
||||
la ra, interrupt14
|
||||
j _start_trap_direct
|
||||
_start_trap15:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_15_handler
|
||||
la ra, interrupt15
|
||||
j _start_trap_direct
|
||||
_start_trap16:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_16_handler
|
||||
la ra, interrupt16
|
||||
j _start_trap_direct
|
||||
_start_trap17:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_17_handler
|
||||
la ra, interrupt17
|
||||
j _start_trap_direct
|
||||
_start_trap18:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_18_handler
|
||||
la ra, interrupt18
|
||||
j _start_trap_direct
|
||||
_start_trap19:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_19_handler
|
||||
la ra, interrupt19
|
||||
j _start_trap_direct
|
||||
_start_trap20:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_20_handler
|
||||
la ra, interrupt20
|
||||
j _start_trap_direct
|
||||
_start_trap21:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_21_handler
|
||||
la ra, interrupt21
|
||||
j _start_trap_direct
|
||||
_start_trap22:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_22_handler
|
||||
la ra, interrupt22
|
||||
j _start_trap_direct
|
||||
_start_trap23:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_23_handler
|
||||
la ra, interrupt23
|
||||
j _start_trap_direct
|
||||
_start_trap24:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_24_handler
|
||||
la ra, interrupt24
|
||||
j _start_trap_direct
|
||||
_start_trap25:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_25_handler
|
||||
la ra, interrupt25
|
||||
j _start_trap_direct
|
||||
_start_trap26:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_26_handler
|
||||
la ra, interrupt26
|
||||
j _start_trap_direct
|
||||
_start_trap27:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_27_handler
|
||||
la ra, interrupt27
|
||||
j _start_trap_direct
|
||||
_start_trap28:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_28_handler
|
||||
la ra, interrupt28
|
||||
j _start_trap_direct
|
||||
_start_trap29:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_29_handler
|
||||
la ra, interrupt29
|
||||
j _start_trap_direct
|
||||
_start_trap30:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_30_handler
|
||||
la ra, interrupt30
|
||||
j _start_trap_direct
|
||||
_start_trap31:
|
||||
addi sp, sp, -40*4
|
||||
sw ra, 0(sp)
|
||||
la ra, cpu_int_31_handler
|
||||
la ra, interrupt31
|
||||
j _start_trap_direct
|
||||
la ra, _start_trap_rust_hal /* this runs on exception, use regular fault handler */
|
||||
_start_trap_direct:
|
||||
@ -829,36 +829,39 @@ _vector_table:
|
||||
r#"
|
||||
#this is required for the linking step, these symbols for in-use interrupts should always be overwritten by the user.
|
||||
.section .trap, "ax"
|
||||
.weak cpu_int_1_handler
|
||||
.weak cpu_int_2_handler
|
||||
.weak cpu_int_3_handler
|
||||
.weak cpu_int_4_handler
|
||||
.weak cpu_int_5_handler
|
||||
.weak cpu_int_6_handler
|
||||
.weak cpu_int_7_handler
|
||||
.weak cpu_int_8_handler
|
||||
.weak cpu_int_9_handler
|
||||
.weak cpu_int_10_handler
|
||||
.weak cpu_int_11_handler
|
||||
.weak cpu_int_12_handler
|
||||
.weak cpu_int_13_handler
|
||||
.weak cpu_int_14_handler
|
||||
.weak cpu_int_15_handler
|
||||
.weak cpu_int_16_handler
|
||||
.weak cpu_int_17_handler
|
||||
.weak cpu_int_18_handler
|
||||
.weak cpu_int_19_handler
|
||||
.weak cpu_int_20_handler
|
||||
.weak cpu_int_21_handler
|
||||
.weak cpu_int_22_handler
|
||||
.weak cpu_int_23_handler
|
||||
.weak cpu_int_24_handler
|
||||
.weak cpu_int_25_handler
|
||||
.weak cpu_int_26_handler
|
||||
.weak cpu_int_27_handler
|
||||
.weak cpu_int_28_handler
|
||||
.weak cpu_int_29_handler
|
||||
.weak cpu_int_30_handler
|
||||
.weak cpu_int_31_handler
|
||||
// See https://github.com/esp-rs/esp-hal/issues/1326 and https://reviews.llvm.org/D98762
|
||||
// and yes, this all has to go on one line... *sigh*.
|
||||
.lto_discard interrupt1, interrupt2, interrupt3, interrupt4, interrupt5, interrupt6, interrupt7, interrupt8, interrupt9, interrupt10, interrupt11, interrupt12, interrupt13, interrupt14, interrupt15, interrupt16, interrupt17, interrupt18, interrupt19, interrupt20, interrupt21, interrupt22, interrupt23, interrupt24, interrupt25, interrupt26, interrupt27, interrupt28, interrupt29, interrupt30, interrupt31
|
||||
.weak interrupt1
|
||||
.weak interrupt2
|
||||
.weak interrupt3
|
||||
.weak interrupt4
|
||||
.weak interrupt5
|
||||
.weak interrupt6
|
||||
.weak interrupt7
|
||||
.weak interrupt8
|
||||
.weak interrupt9
|
||||
.weak interrupt10
|
||||
.weak interrupt11
|
||||
.weak interrupt12
|
||||
.weak interrupt13
|
||||
.weak interrupt14
|
||||
.weak interrupt15
|
||||
.weak interrupt16
|
||||
.weak interrupt17
|
||||
.weak interrupt18
|
||||
.weak interrupt19
|
||||
.weak interrupt20
|
||||
.weak interrupt21
|
||||
.weak interrupt22
|
||||
.weak interrupt23
|
||||
.weak interrupt24
|
||||
.weak interrupt25
|
||||
.weak interrupt26
|
||||
.weak interrupt27
|
||||
.weak interrupt28
|
||||
.weak interrupt29
|
||||
.weak interrupt30
|
||||
.weak interrupt31
|
||||
"#,
|
||||
}
|
||||
|
@ -70,7 +70,13 @@ opsram-2m = ["esp-hal/opsram-2m"]
|
||||
psram-2m = ["esp-hal/psram-2m"]
|
||||
|
||||
[profile.release]
|
||||
debug = true
|
||||
codegen-units = 1
|
||||
debug = 2
|
||||
debug-assertions = false
|
||||
incremental = false
|
||||
opt-level = 3
|
||||
lto = 'fat'
|
||||
overflow-checks = false
|
||||
|
||||
[patch.crates-io]
|
||||
esp32 = { git = "https://github.com/esp-rs/esp-pacs", rev = "963c280621f0b7ec26546a5eff24a5032305437f" }
|
||||
|
@ -53,41 +53,25 @@ embassy-time-systick-16mhz = ["esp-hal?/embassy-time-systick-16mhz"]
|
||||
embassy-time-systick-80mhz = ["esp-hal?/embassy-time-systick-80mhz"]
|
||||
embassy-time-timg0 = ["esp-hal?/embassy-time-timg0"]
|
||||
|
||||
# cargo build/run
|
||||
# https://doc.rust-lang.org/cargo/reference/profiles.html#test
|
||||
# Test and bench profiles inherit from dev and release respectively.
|
||||
|
||||
[profile.dev]
|
||||
codegen-units = 1
|
||||
debug = 2
|
||||
debug-assertions = true # <-
|
||||
debug-assertions = true
|
||||
incremental = false
|
||||
opt-level = 'z' # <-
|
||||
overflow-checks = true # <-
|
||||
opt-level = 'z'
|
||||
overflow-checks = true
|
||||
|
||||
# cargo test
|
||||
[profile.test]
|
||||
codegen-units = 1
|
||||
debug = 2
|
||||
debug-assertions = true # <-
|
||||
incremental = false
|
||||
opt-level = 3 # <-
|
||||
overflow-checks = true # <-
|
||||
|
||||
# cargo build/run --release
|
||||
[profile.release]
|
||||
codegen-units = 1
|
||||
debug = 2
|
||||
debug-assertions = false # <-
|
||||
debug-assertions = false
|
||||
incremental = false
|
||||
opt-level = 3 # <-
|
||||
overflow-checks = false # <-
|
||||
|
||||
# cargo test --release
|
||||
[profile.bench]
|
||||
codegen-units = 1
|
||||
debug = 2
|
||||
debug-assertions = false # <-
|
||||
incremental = false
|
||||
opt-level = 3 # <-
|
||||
overflow-checks = false # <-
|
||||
opt-level = 3
|
||||
lto = 'fat'
|
||||
overflow-checks = false
|
||||
|
||||
[patch.crates-io]
|
||||
semihosting = { git = "https://github.com/taiki-e/semihosting", rev = "c829c19" }
|
||||
|
Loading…
x
Reference in New Issue
Block a user