From ed00ddfb548dacb1aef80eb7afeacdf3a7ef2e6e Mon Sep 17 00:00:00 2001 From: Jeremy Soller <jeremy@system76.com> Date: Sun, 26 Aug 2018 12:28:27 -0600 Subject: [PATCH] Fix remaining issues, move setjmp into relibc crate, move start logic into relibc --- src/crt0/src/lib.rs | 4 ++-- src/header/mod.rs | 1 + src/header/setjmp/Cargo.toml | 4 ---- src/header/setjmp/{src => }/impl/README.md | 0 src/header/setjmp/{src => }/impl/aarch64/longjmp.s | 0 src/header/setjmp/{src => }/impl/aarch64/setjmp.s | 0 src/header/setjmp/{src => }/impl/arm/longjmp.s | 0 src/header/setjmp/{src => }/impl/arm/setjmp.s | 0 src/header/setjmp/{src => }/impl/i386/longjmp.s | 0 src/header/setjmp/{src => }/impl/i386/setjmp.s | 0 src/header/setjmp/{src => }/impl/m68k/longjmp.s | 0 src/header/setjmp/{src => }/impl/m68k/setjmp.s | 0 src/header/setjmp/{src => }/impl/microblaze/longjmp.s | 0 src/header/setjmp/{src => }/impl/microblaze/setjmp.s | 0 src/header/setjmp/{src => }/impl/mips/longjmp.S | 0 src/header/setjmp/{src => }/impl/mips/setjmp.S | 0 src/header/setjmp/{src => }/impl/mips64/longjmp.S | 0 src/header/setjmp/{src => }/impl/mips64/setjmp.S | 0 src/header/setjmp/{src => }/impl/mipsn32/longjmp.S | 0 src/header/setjmp/{src => }/impl/mipsn32/setjmp.S | 0 src/header/setjmp/{src => }/impl/or1k/longjmp.s | 0 src/header/setjmp/{src => }/impl/or1k/setjmp.s | 0 src/header/setjmp/{src => }/impl/powerpc/longjmp.S | 0 src/header/setjmp/{src => }/impl/powerpc/setjmp.S | 0 src/header/setjmp/{src => }/impl/powerpc64/longjmp.s | 0 src/header/setjmp/{src => }/impl/powerpc64/setjmp.s | 0 src/header/setjmp/{src => }/impl/s390x/longjmp.s | 0 src/header/setjmp/{src => }/impl/s390x/setjmp.s | 0 src/header/setjmp/{src => }/impl/sh/longjmp.S | 0 src/header/setjmp/{src => }/impl/sh/setjmp.S | 0 src/header/setjmp/{src => }/impl/x32/longjmp.s | 0 src/header/setjmp/{src => }/impl/x32/setjmp.s | 0 src/header/setjmp/{src => }/impl/x86_64/longjmp.s | 0 src/header/setjmp/{src => }/impl/x86_64/setjmp.s | 0 src/header/setjmp/{src/lib.rs => mod.rs} | 0 src/lib.rs | 1 + src/start.rs | 5 ++++- 37 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 src/header/setjmp/Cargo.toml rename src/header/setjmp/{src => }/impl/README.md (100%) rename src/header/setjmp/{src => }/impl/aarch64/longjmp.s (100%) rename src/header/setjmp/{src => }/impl/aarch64/setjmp.s (100%) rename src/header/setjmp/{src => }/impl/arm/longjmp.s (100%) rename src/header/setjmp/{src => }/impl/arm/setjmp.s (100%) rename src/header/setjmp/{src => }/impl/i386/longjmp.s (100%) rename src/header/setjmp/{src => }/impl/i386/setjmp.s (100%) rename src/header/setjmp/{src => }/impl/m68k/longjmp.s (100%) rename src/header/setjmp/{src => }/impl/m68k/setjmp.s (100%) rename src/header/setjmp/{src => }/impl/microblaze/longjmp.s (100%) rename src/header/setjmp/{src => }/impl/microblaze/setjmp.s (100%) rename src/header/setjmp/{src => }/impl/mips/longjmp.S (100%) rename src/header/setjmp/{src => }/impl/mips/setjmp.S (100%) rename src/header/setjmp/{src => }/impl/mips64/longjmp.S (100%) rename src/header/setjmp/{src => }/impl/mips64/setjmp.S (100%) rename src/header/setjmp/{src => }/impl/mipsn32/longjmp.S (100%) rename src/header/setjmp/{src => }/impl/mipsn32/setjmp.S (100%) rename src/header/setjmp/{src => }/impl/or1k/longjmp.s (100%) rename src/header/setjmp/{src => }/impl/or1k/setjmp.s (100%) rename src/header/setjmp/{src => }/impl/powerpc/longjmp.S (100%) rename src/header/setjmp/{src => }/impl/powerpc/setjmp.S (100%) rename src/header/setjmp/{src => }/impl/powerpc64/longjmp.s (100%) rename src/header/setjmp/{src => }/impl/powerpc64/setjmp.s (100%) rename src/header/setjmp/{src => }/impl/s390x/longjmp.s (100%) rename src/header/setjmp/{src => }/impl/s390x/setjmp.s (100%) rename src/header/setjmp/{src => }/impl/sh/longjmp.S (100%) rename src/header/setjmp/{src => }/impl/sh/setjmp.S (100%) rename src/header/setjmp/{src => }/impl/x32/longjmp.s (100%) rename src/header/setjmp/{src => }/impl/x32/setjmp.s (100%) rename src/header/setjmp/{src => }/impl/x86_64/longjmp.s (100%) rename src/header/setjmp/{src => }/impl/x86_64/setjmp.s (100%) rename src/header/setjmp/{src/lib.rs => mod.rs} (100%) diff --git a/src/crt0/src/lib.rs b/src/crt0/src/lib.rs index c54e90b1..d3f1642a 100644 --- a/src/crt0/src/lib.rs +++ b/src/crt0/src/lib.rs @@ -13,7 +13,7 @@ pub unsafe extern "C" fn _start() { #[cfg(target_arch = "x86_64")] asm!("mov rdi, rsp and rsp, 0xFFFFFFFFFFFFFFF0 - call _start_rust" + call relibc_start" : : : @@ -21,7 +21,7 @@ pub unsafe extern "C" fn _start() { ); #[cfg(target_arch = "aarch64")] asm!("mov x0, sp - bl _start_rust" + bl relibc_start" : : : diff --git a/src/header/mod.rs b/src/header/mod.rs index 6f65ca75..4fdee751 100644 --- a/src/header/mod.rs +++ b/src/header/mod.rs @@ -12,6 +12,7 @@ pub mod locale; pub mod netinet_in; pub mod pwd; pub mod semaphore; +pub mod setjmp; pub mod sgtty; pub mod signal; pub mod stdio; diff --git a/src/header/setjmp/Cargo.toml b/src/header/setjmp/Cargo.toml deleted file mode 100644 index 2826a4e5..00000000 --- a/src/header/setjmp/Cargo.toml +++ /dev/null @@ -1,4 +0,0 @@ -[package] -name = "setjmp" -version = "0.1.0" -authors = ["Jeremy Soller <jackpot51@gmail.com>"] diff --git a/src/header/setjmp/src/impl/README.md b/src/header/setjmp/impl/README.md similarity index 100% rename from src/header/setjmp/src/impl/README.md rename to src/header/setjmp/impl/README.md diff --git a/src/header/setjmp/src/impl/aarch64/longjmp.s b/src/header/setjmp/impl/aarch64/longjmp.s similarity index 100% rename from src/header/setjmp/src/impl/aarch64/longjmp.s rename to src/header/setjmp/impl/aarch64/longjmp.s diff --git a/src/header/setjmp/src/impl/aarch64/setjmp.s b/src/header/setjmp/impl/aarch64/setjmp.s similarity index 100% rename from src/header/setjmp/src/impl/aarch64/setjmp.s rename to src/header/setjmp/impl/aarch64/setjmp.s diff --git a/src/header/setjmp/src/impl/arm/longjmp.s b/src/header/setjmp/impl/arm/longjmp.s similarity index 100% rename from src/header/setjmp/src/impl/arm/longjmp.s rename to src/header/setjmp/impl/arm/longjmp.s diff --git a/src/header/setjmp/src/impl/arm/setjmp.s b/src/header/setjmp/impl/arm/setjmp.s similarity index 100% rename from src/header/setjmp/src/impl/arm/setjmp.s rename to src/header/setjmp/impl/arm/setjmp.s diff --git a/src/header/setjmp/src/impl/i386/longjmp.s b/src/header/setjmp/impl/i386/longjmp.s similarity index 100% rename from src/header/setjmp/src/impl/i386/longjmp.s rename to src/header/setjmp/impl/i386/longjmp.s diff --git a/src/header/setjmp/src/impl/i386/setjmp.s b/src/header/setjmp/impl/i386/setjmp.s similarity index 100% rename from src/header/setjmp/src/impl/i386/setjmp.s rename to src/header/setjmp/impl/i386/setjmp.s diff --git a/src/header/setjmp/src/impl/m68k/longjmp.s b/src/header/setjmp/impl/m68k/longjmp.s similarity index 100% rename from src/header/setjmp/src/impl/m68k/longjmp.s rename to src/header/setjmp/impl/m68k/longjmp.s diff --git a/src/header/setjmp/src/impl/m68k/setjmp.s b/src/header/setjmp/impl/m68k/setjmp.s similarity index 100% rename from src/header/setjmp/src/impl/m68k/setjmp.s rename to src/header/setjmp/impl/m68k/setjmp.s diff --git a/src/header/setjmp/src/impl/microblaze/longjmp.s b/src/header/setjmp/impl/microblaze/longjmp.s similarity index 100% rename from src/header/setjmp/src/impl/microblaze/longjmp.s rename to src/header/setjmp/impl/microblaze/longjmp.s diff --git a/src/header/setjmp/src/impl/microblaze/setjmp.s b/src/header/setjmp/impl/microblaze/setjmp.s similarity index 100% rename from src/header/setjmp/src/impl/microblaze/setjmp.s rename to src/header/setjmp/impl/microblaze/setjmp.s diff --git a/src/header/setjmp/src/impl/mips/longjmp.S b/src/header/setjmp/impl/mips/longjmp.S similarity index 100% rename from src/header/setjmp/src/impl/mips/longjmp.S rename to src/header/setjmp/impl/mips/longjmp.S diff --git a/src/header/setjmp/src/impl/mips/setjmp.S b/src/header/setjmp/impl/mips/setjmp.S similarity index 100% rename from src/header/setjmp/src/impl/mips/setjmp.S rename to src/header/setjmp/impl/mips/setjmp.S diff --git a/src/header/setjmp/src/impl/mips64/longjmp.S b/src/header/setjmp/impl/mips64/longjmp.S similarity index 100% rename from src/header/setjmp/src/impl/mips64/longjmp.S rename to src/header/setjmp/impl/mips64/longjmp.S diff --git a/src/header/setjmp/src/impl/mips64/setjmp.S b/src/header/setjmp/impl/mips64/setjmp.S similarity index 100% rename from src/header/setjmp/src/impl/mips64/setjmp.S rename to src/header/setjmp/impl/mips64/setjmp.S diff --git a/src/header/setjmp/src/impl/mipsn32/longjmp.S b/src/header/setjmp/impl/mipsn32/longjmp.S similarity index 100% rename from src/header/setjmp/src/impl/mipsn32/longjmp.S rename to src/header/setjmp/impl/mipsn32/longjmp.S diff --git a/src/header/setjmp/src/impl/mipsn32/setjmp.S b/src/header/setjmp/impl/mipsn32/setjmp.S similarity index 100% rename from src/header/setjmp/src/impl/mipsn32/setjmp.S rename to src/header/setjmp/impl/mipsn32/setjmp.S diff --git a/src/header/setjmp/src/impl/or1k/longjmp.s b/src/header/setjmp/impl/or1k/longjmp.s similarity index 100% rename from src/header/setjmp/src/impl/or1k/longjmp.s rename to src/header/setjmp/impl/or1k/longjmp.s diff --git a/src/header/setjmp/src/impl/or1k/setjmp.s b/src/header/setjmp/impl/or1k/setjmp.s similarity index 100% rename from src/header/setjmp/src/impl/or1k/setjmp.s rename to src/header/setjmp/impl/or1k/setjmp.s diff --git a/src/header/setjmp/src/impl/powerpc/longjmp.S b/src/header/setjmp/impl/powerpc/longjmp.S similarity index 100% rename from src/header/setjmp/src/impl/powerpc/longjmp.S rename to src/header/setjmp/impl/powerpc/longjmp.S diff --git a/src/header/setjmp/src/impl/powerpc/setjmp.S b/src/header/setjmp/impl/powerpc/setjmp.S similarity index 100% rename from src/header/setjmp/src/impl/powerpc/setjmp.S rename to src/header/setjmp/impl/powerpc/setjmp.S diff --git a/src/header/setjmp/src/impl/powerpc64/longjmp.s b/src/header/setjmp/impl/powerpc64/longjmp.s similarity index 100% rename from src/header/setjmp/src/impl/powerpc64/longjmp.s rename to src/header/setjmp/impl/powerpc64/longjmp.s diff --git a/src/header/setjmp/src/impl/powerpc64/setjmp.s b/src/header/setjmp/impl/powerpc64/setjmp.s similarity index 100% rename from src/header/setjmp/src/impl/powerpc64/setjmp.s rename to src/header/setjmp/impl/powerpc64/setjmp.s diff --git a/src/header/setjmp/src/impl/s390x/longjmp.s b/src/header/setjmp/impl/s390x/longjmp.s similarity index 100% rename from src/header/setjmp/src/impl/s390x/longjmp.s rename to src/header/setjmp/impl/s390x/longjmp.s diff --git a/src/header/setjmp/src/impl/s390x/setjmp.s b/src/header/setjmp/impl/s390x/setjmp.s similarity index 100% rename from src/header/setjmp/src/impl/s390x/setjmp.s rename to src/header/setjmp/impl/s390x/setjmp.s diff --git a/src/header/setjmp/src/impl/sh/longjmp.S b/src/header/setjmp/impl/sh/longjmp.S similarity index 100% rename from src/header/setjmp/src/impl/sh/longjmp.S rename to src/header/setjmp/impl/sh/longjmp.S diff --git a/src/header/setjmp/src/impl/sh/setjmp.S b/src/header/setjmp/impl/sh/setjmp.S similarity index 100% rename from src/header/setjmp/src/impl/sh/setjmp.S rename to src/header/setjmp/impl/sh/setjmp.S diff --git a/src/header/setjmp/src/impl/x32/longjmp.s b/src/header/setjmp/impl/x32/longjmp.s similarity index 100% rename from src/header/setjmp/src/impl/x32/longjmp.s rename to src/header/setjmp/impl/x32/longjmp.s diff --git a/src/header/setjmp/src/impl/x32/setjmp.s b/src/header/setjmp/impl/x32/setjmp.s similarity index 100% rename from src/header/setjmp/src/impl/x32/setjmp.s rename to src/header/setjmp/impl/x32/setjmp.s diff --git a/src/header/setjmp/src/impl/x86_64/longjmp.s b/src/header/setjmp/impl/x86_64/longjmp.s similarity index 100% rename from src/header/setjmp/src/impl/x86_64/longjmp.s rename to src/header/setjmp/impl/x86_64/longjmp.s diff --git a/src/header/setjmp/src/impl/x86_64/setjmp.s b/src/header/setjmp/impl/x86_64/setjmp.s similarity index 100% rename from src/header/setjmp/src/impl/x86_64/setjmp.s rename to src/header/setjmp/impl/x86_64/setjmp.s diff --git a/src/header/setjmp/src/lib.rs b/src/header/setjmp/mod.rs similarity index 100% rename from src/header/setjmp/src/lib.rs rename to src/header/setjmp/mod.rs diff --git a/src/lib.rs b/src/lib.rs index 28f7d58d..b624efe1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -34,6 +34,7 @@ extern crate spin; mod macros; pub mod header; pub mod platform; +pub mod start; use platform::{Allocator, Pal, Sys}; diff --git a/src/start.rs b/src/start.rs index 235e8783..e628c4f0 100644 --- a/src/start.rs +++ b/src/start.rs @@ -1,6 +1,9 @@ use alloc::Vec; use core::ptr; +use header::stdio; +use platform; +use platform::{Pal, Sys}; use platform::types::*; #[repr(C)] @@ -25,7 +28,7 @@ impl Stack { #[inline(never)] #[no_mangle] -pub unsafe extern "C" fn _start_rust(sp: &'static Stack) -> ! { +pub unsafe extern "C" fn relibc_start(sp: &'static Stack) -> ! { extern "C" { fn main(argc: isize, argv: *const *const c_char, envp: *const *const c_char) -> c_int; } -- GitLab