Skip to content

Commit f7daf5b

Browse files
committed
Change origin_main's signature to avoid c_int.
Change `argc` to `usize` because a common use case is to pass it to `slice::from_raw_parts`. Change the return value to `i32`. This matches the type used by `std::process::exit`.
1 parent b662723 commit f7daf5b

File tree

6 files changed

+7
-7
lines changed

6 files changed

+7
-7
lines changed

example-crates/external-start/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ static EARLY_INIT_ARRAY: unsafe extern "C" fn(i32, *mut *mut u8) = {
5656
};
5757

5858
#[no_mangle]
59-
unsafe fn origin_main(_argc: i32, _argv: *mut *mut u8, _envp: *mut *mut u8) -> i32 {
59+
unsafe fn origin_main(_argc: usize, _argv: *mut *mut u8, _envp: *mut *mut u8) -> i32 {
6060
eprintln!("Hello from main thread");
6161

6262
at_exit(Box::new(|| eprintln!("Hello from an at_exit handler")));

example-crates/origin-start-lto/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ extern "C" fn eh_personality() {}
2727
static GLOBAL_ALLOCATOR: rustix_dlmalloc::GlobalDlmalloc = rustix_dlmalloc::GlobalDlmalloc;
2828

2929
#[no_mangle]
30-
unsafe fn origin_main(_argc: i32, _argv: *mut *mut u8, _envp: *mut *mut u8) -> i32 {
30+
unsafe fn origin_main(_argc: usize, _argv: *mut *mut u8, _envp: *mut *mut u8) -> i32 {
3131
eprintln!("Hello from main thread");
3232

3333
at_exit(Box::new(|| eprintln!("Hello from an at_exit handler")));

example-crates/origin-start-no-alloc/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ fn panic(panic: &core::panic::PanicInfo<'_>) -> ! {
2121
extern "C" fn eh_personality() {}
2222

2323
#[no_mangle]
24-
unsafe fn origin_main(_argc: i32, _argv: *mut *mut u8, _envp: *mut *mut u8) -> i32 {
24+
unsafe fn origin_main(_argc: usize, _argv: *mut *mut u8, _envp: *mut *mut u8) -> i32 {
2525
eprintln!("Hello!");
2626

2727
// Unlike origin-start, this example can't create threads because origin's

example-crates/origin-start-tiny/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@ fn panic(_panic: &core::panic::PanicInfo<'_>) -> ! {
1818
extern "C" fn eh_personality() {}
1919

2020
#[no_mangle]
21-
unsafe fn origin_main(_argc: i32, _argv: *mut *mut u8, _envp: *mut *mut u8) -> i32 {
21+
unsafe fn origin_main(_argc: usize, _argv: *mut *mut u8, _envp: *mut *mut u8) -> i32 {
2222
42
2323
}

example-crates/origin-start/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ extern "C" fn eh_personality() {}
2727
static GLOBAL_ALLOCATOR: rustix_dlmalloc::GlobalDlmalloc = rustix_dlmalloc::GlobalDlmalloc;
2828

2929
#[no_mangle]
30-
unsafe fn origin_main(_argc: i32, _argv: *mut *mut u8, _envp: *mut *mut u8) -> i32 {
30+
unsafe fn origin_main(_argc: usize, _argv: *mut *mut u8, _envp: *mut *mut u8) -> i32 {
3131
eprintln!("Hello from main thread");
3232

3333
at_exit(Box::new(|| eprintln!("Hello from an at_exit handler")));

src/program.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ unsafe fn init_runtime(mem: *mut usize, envp: *mut *mut u8) {
118118
#[allow(unused_variables)]
119119
unsafe fn call_user_code(argc: c_int, argv: *mut *mut u8, envp: *mut *mut u8) -> i32 {
120120
extern "Rust" {
121-
fn origin_main(argc: c_int, argv: *mut *mut u8, envp: *mut *mut u8) -> c_int;
121+
fn origin_main(argc: usize, argv: *mut *mut u8, envp: *mut *mut u8) -> i32;
122122
}
123123

124124
// Call the functions registered via `.init_array`.
@@ -129,7 +129,7 @@ unsafe fn call_user_code(argc: c_int, argv: *mut *mut u8, envp: *mut *mut u8) ->
129129
log::trace!("Calling `origin_main({:?}, {:?}, {:?})`", argc, argv, envp);
130130

131131
// Call `origin_main`.
132-
let status = origin_main(argc, argv, envp);
132+
let status = origin_main(argc as usize, argv, envp);
133133

134134
#[cfg(feature = "log")]
135135
log::trace!("`origin_main` returned `{:?}`", status);

0 commit comments

Comments
 (0)