aboutsummaryrefslogtreecommitdiff
path: root/src/arch/x86_64/interrupt
diff options
context:
space:
mode:
authorTianhao Wang <shrik3@mailbox.org>2024-06-04 22:33:00 +0200
committerTianhao Wang <shrik3@mailbox.org>2024-06-11 15:17:12 +0200
commit32edde868c1e7a37f9aa11e32c16cd3adce43c33 (patch)
tree69142a0beb0e25f9c3aec07d34fa338ce668e310 /src/arch/x86_64/interrupt
parent1cb3c007fb5bcd74f39e735bd531c17d6fbcd575 (diff)
toolchain: bump rust toolchain version
1. allow unexpected cfgs in lib.rs, in this case "no_global_oom_handling" is cause warnings [1] 2. for large code models the compiler (rust linkers) now put code and data in `.ltext`, `.ldata`, `.lbss`, `.lrodata` instead of the same `.text` , `.data` ... etc. We are adjusting accordingly in the linker script. 3. unsafe assertions identified undefined behaviours, in this case a repr(C) struct was not mared as repr(packed), therefore having an unexpected size. The unsafe assertions was not enabled by default in debug builds so the idt setup code with from_raw_parts_mut() has been working on UB. Glad we can catch this.... related: [1] https://github.com/rust-lang/rust/pull/123501 related: [2] https://blog.rust-lang.org/2024/05/02/Rust-1.78.0.html#asserting-unsafe-preconditions
Diffstat (limited to 'src/arch/x86_64/interrupt')
-rw-r--r--src/arch/x86_64/interrupt/mod.rs1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/arch/x86_64/interrupt/mod.rs b/src/arch/x86_64/interrupt/mod.rs
index 6591bde..9273ef7 100644
--- a/src/arch/x86_64/interrupt/mod.rs
+++ b/src/arch/x86_64/interrupt/mod.rs
@@ -27,6 +27,7 @@ extern "C" {
// [48:63] - addr[16:31]
// [64:95] - addr[32:63]
#[repr(C)]
+#[repr(packed)]
pub struct GateDescriptor64 {
pub offset_1: u16,
pub selector: u16,