From d819277d569ff6676bc9ce36fadb5d4e39250b7b Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Tue, 3 Oct 2023 09:53:37 +0200 Subject: [PATCH] Make rustc directly invoke the linker --- Cargo.toml | 5 ----- src/{lib.rs => main.rs} | 1 + targets/aarch64-unknown-kernel.json | 7 ++++--- targets/i686-unknown-kernel.json | 7 ++++--- targets/x86_64-unknown-kernel.json | 7 ++++--- 5 files changed, 13 insertions(+), 14 deletions(-) rename src/{lib.rs => main.rs} (99%) diff --git a/Cargo.toml b/Cargo.toml index 1a1a868a16..b2f4b5e9e0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,11 +4,6 @@ version = "0.4.1" build = "build.rs" edition = "2021" -[lib] -name = "kernel" -path = "src/lib.rs" -crate-type = ["staticlib"] - [build-dependencies] cc = "1.0.3" rustc-cfg = "0.3.0" diff --git a/src/lib.rs b/src/main.rs similarity index 99% rename from src/lib.rs rename to src/main.rs index 110bfcb9b4..73fb69e3b8 100644 --- a/src/lib.rs +++ b/src/main.rs @@ -55,6 +55,7 @@ #![feature(slice_ptr_get, slice_ptr_len)] #![feature(sync_unsafe_cell)] #![no_std] +#![no_main] #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] pub extern crate x86; diff --git a/targets/aarch64-unknown-kernel.json b/targets/aarch64-unknown-kernel.json index 78d46c6b3c..3f5cf88eb0 100644 --- a/targets/aarch64-unknown-kernel.json +++ b/targets/aarch64-unknown-kernel.json @@ -8,14 +8,15 @@ "os": "none", "env": "", "vendor": "unknown", - "linker-flavor": "gcc", + "linker": "rust-lld", + "linker-flavor": "gnu-lld", "target-family": "redox", "pre-link-args": { - "gcc": ["-m64", "-nostdlib", "-static"] + "gnu-lld": ["-z", "max-page-size=0x1000"] }, "features": "+strict-align,-neon,-fp-armv8,+tpidr-el1", "dynamic-linking": false, - "executables": false, + "executables": true, "relocation-model": "pic", "disable-redzone": true, "frame-pointer": "always", diff --git a/targets/i686-unknown-kernel.json b/targets/i686-unknown-kernel.json index e8e4adfcb8..9499616628 100644 --- a/targets/i686-unknown-kernel.json +++ b/targets/i686-unknown-kernel.json @@ -8,14 +8,15 @@ "os": "none", "env": "", "vendor": "unknown", - "linker-flavor": "gcc", + "linker": "rust-lld", + "linker-flavor": "gnu-lld", "target-family": "redox", "pre-link-args": { - "gcc": ["-m32", "-nostdlib", "-static"] + "gnu-lld": ["-z", "max-page-size=0x1000"] }, "features": "-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-3dnow,-3dnowa,-avx,-avx2,+soft-float", "dynamic-linking": false, - "executables": false, + "executables": true, "relocation-model": "static", "code-model": "kernel", "disable-redzone": true, diff --git a/targets/x86_64-unknown-kernel.json b/targets/x86_64-unknown-kernel.json index 53deb0514d..a0658ec4e3 100644 --- a/targets/x86_64-unknown-kernel.json +++ b/targets/x86_64-unknown-kernel.json @@ -8,14 +8,15 @@ "os": "none", "env": "", "vendor": "unknown", - "linker-flavor": "gcc", + "linker": "rust-lld", + "linker-flavor": "gnu-lld", "target-family": "redox", "pre-link-args": { - "gcc": ["-m64", "-nostdlib", "-static"] + "gnu-lld": ["-z", "max-page-size=0x1000"] }, "features": "-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-3dnow,-3dnowa,-avx,-avx2,+soft-float", "dynamic-linking": false, - "executables": false, + "executables": true, "relocation-model": "static", "code-model": "kernel", "disable-redzone": true,