From 5d763e37b6090497fbc082b18300e6b501d302b2 Mon Sep 17 00:00:00 2001 From: "Sunrin SHIMURA (keen)" <3han5chou7@gmail.com> Date: Wed, 13 Jul 2016 17:43:36 +0900 Subject: [PATCH 1/2] update no-stdlib --- 1.9/ja/book/no-stdlib.md | 21 +++++------ diff-1.6.0..1.9.0/src/doc/book/no-stdlib.md | 40 --------------------- 2 files changed, 11 insertions(+), 50 deletions(-) delete mode 100644 diff-1.6.0..1.9.0/src/doc/book/no-stdlib.md diff --git a/1.9/ja/book/no-stdlib.md b/1.9/ja/book/no-stdlib.md index fe186174..8abf8bca 100644 --- a/1.9/ja/book/no-stdlib.md +++ b/1.9/ja/book/no-stdlib.md @@ -47,7 +47,7 @@ fn start(_argc: isize, _argv: *const *const u8) -> isize { // これらの関数とトレイトは必要最小限のhello worldのようなプログラムが // 使うのではなく、コンパイラが使います。通常これらはlibstdにより提供されます。 #[lang = "eh_personality"] extern fn eh_personality() {} -#[lang = "panic_fmt"] fn panic_fmt() -> ! { loop {} } +#[lang = "panic_fmt"] extern fn panic_fmt() -> ! { loop {} } # #[lang = "eh_unwind_resume"] extern fn rust_eh_unwind_resume() {} # #[no_mangle] pub extern fn rust_eh_register_frames () {} # #[no_mangle] pub extern fn rust_eh_unregister_frames () {} @@ -77,7 +77,7 @@ pub extern fn main(argc: i32, argv: *const *const u8) -> i32 { } #[lang = "eh_personality"] extern fn eh_personality() {} -#[lang = "panic_fmt"] fn panic_fmt() -> ! { loop {} } +#[lang = "panic_fmt"] extern fn panic_fmt() -> ! { loop {} } # #[lang = "eh_unwind_resume"] extern fn rust_eh_unwind_resume() {} # #[no_mangle] pub extern fn rust_eh_register_frames () {} # #[no_mangle] pub extern fn rust_eh_unregister_frames () {} @@ -90,11 +90,12 @@ pub extern fn main(argc: i32, argv: *const *const u8) -> i32 { 今のところ、コンパイラは実行可能形式においていくつかのシンボルが呼び出し可能であるという前提を置いています。通常、これらの関数は標準ライブラリが提供しますが、それを使わない場合自分で定義しなければなりません。 - - - - - - - -2つある関数のうち1つ目は `eh_personality` で、コンパイラの失敗メカニズムに使われます。これはしばしばGCCのpersonality関数に割り当てられますが(詳細は[libstd実装](../std/rt/unwind/index.html)を参照してください)、パニックを発生させないクレートではこの関数は呼ばれないことが保証されています。2つ目の関数は `panic_fmt` で、こちらもコンパイラの失敗メカニズムのために使われます。 + + + + + + +2つある関数のうち1つ目は `eh_personality` で、コンパイラの失敗メカニズムに使われます。これはしばしばGCCのpersonality関数に割り当てられますが(詳細は[libstd実装](unwind)を参照してください)、パニックを発生させないクレートではこの関数は呼ばれないことが保証されています。2つ目の関数は `panic_fmt` で、こちらもコンパイラの失敗メカニズムのために使われます。 + +[unwind]: https://github.com/rust-lang/rust/blob/master/src/libstd/sys/common/unwind/gcc.rs diff --git a/diff-1.6.0..1.9.0/src/doc/book/no-stdlib.md b/diff-1.6.0..1.9.0/src/doc/book/no-stdlib.md deleted file mode 100644 index 13517bde..00000000 --- a/diff-1.6.0..1.9.0/src/doc/book/no-stdlib.md +++ /dev/null @@ -1,40 +0,0 @@ ---- a/src/doc/book/no-stdlib.md -+++ b/src/doc/book/no-stdlib.md -@@ -38,7 +38,7 @@ fn start(_argc: isize, _argv: *const *const u8) -> isize { - // for a bare-bones hello world. These are normally - // provided by libstd. - #[lang = "eh_personality"] extern fn eh_personality() {} --#[lang = "panic_fmt"] fn panic_fmt() -> ! { loop {} } -+#[lang = "panic_fmt"] extern fn panic_fmt() -> ! { loop {} } - # #[lang = "eh_unwind_resume"] extern fn rust_eh_unwind_resume() {} - # #[no_mangle] pub extern fn rust_eh_register_frames () {} - # #[no_mangle] pub extern fn rust_eh_unregister_frames () {} -@@ -65,7 +65,7 @@ pub extern fn main(argc: i32, argv: *const *const u8) -> i32 { - } - - #[lang = "eh_personality"] extern fn eh_personality() {} --#[lang = "panic_fmt"] fn panic_fmt() -> ! { loop {} } -+#[lang = "panic_fmt"] extern fn panic_fmt() -> ! { loop {} } - # #[lang = "eh_unwind_resume"] extern fn rust_eh_unwind_resume() {} - # #[no_mangle] pub extern fn rust_eh_register_frames () {} - # #[no_mangle] pub extern fn rust_eh_unregister_frames () {} -@@ -77,10 +77,11 @@ The compiler currently makes a few assumptions about symbols which are available - in the executable to call. Normally these functions are provided by the standard - library, but without it you must define your own. - --The first of these two functions, `eh_personality`, is used by the --failure mechanisms of the compiler. This is often mapped to GCC's --personality function (see the --[libstd implementation](../std/rt/unwind/index.html) for more --information), but crates which do not trigger a panic can be assured --that this function is never called. The second function, `panic_fmt`, is --also used by the failure mechanisms of the compiler. -+The first of these two functions, `eh_personality`, is used by the failure -+mechanisms of the compiler. This is often mapped to GCC's personality function -+(see the [libstd implementation][unwind] for more information), but crates -+which do not trigger a panic can be assured that this function is never -+called. The second function, `panic_fmt`, is also used by the failure -+mechanisms of the compiler. -+ -+[unwind]: https://github.com/rust-lang/rust/blob/master/src/libstd/sys/common/unwind/gcc.rs -diff --git a/src/doc/book/operators-and-overloading.md b/src/doc/book/operators-and-overloading.md From 1844fb1a1058d42e5529cf77dcde868f4f985ee3 Mon Sep 17 00:00:00 2001 From: "Sunrin SHIMURA (keen)" <3han5chou7@gmail.com> Date: Wed, 25 Jan 2017 22:39:01 +0900 Subject: [PATCH 2/2] fix linking --- 1.9/ja/book/no-stdlib.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1.9/ja/book/no-stdlib.md b/1.9/ja/book/no-stdlib.md index 8abf8bca..23bb1b3e 100644 --- a/1.9/ja/book/no-stdlib.md +++ b/1.9/ja/book/no-stdlib.md @@ -96,6 +96,6 @@ pub extern fn main(argc: i32, argv: *const *const u8) -> i32 { -2つある関数のうち1つ目は `eh_personality` で、コンパイラの失敗メカニズムに使われます。これはしばしばGCCのpersonality関数に割り当てられますが(詳細は[libstd実装](unwind)を参照してください)、パニックを発生させないクレートではこの関数は呼ばれないことが保証されています。2つ目の関数は `panic_fmt` で、こちらもコンパイラの失敗メカニズムのために使われます。 +2つある関数のうち1つ目は `eh_personality` で、コンパイラの失敗メカニズムに使われます。これはしばしばGCCのpersonality関数に割り当てられますが(詳細は[libstd実装][unwind]を参照してください)、パニックを発生させないクレートではこの関数は呼ばれないことが保証されています。2つ目の関数は `panic_fmt` で、こちらもコンパイラの失敗メカニズムのために使われます。 [unwind]: https://github.com/rust-lang/rust/blob/master/src/libstd/sys/common/unwind/gcc.rs