diff options
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/env.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libstd/env.rs b/src/libstd/env.rs index b8989369269..651010d1366 100644 --- a/src/libstd/env.rs +++ b/src/libstd/env.rs @@ -702,6 +702,11 @@ pub struct ArgsOs { inner: sys::args::Args } /// (such as `*` and `?`). On Windows this is not done, and such arguments are /// passed as-is. /// +/// On glibc Linux, arguments are retrieved by placing a function in .init_array. +/// glibc passes argc, argv, and envp to functions in .init_array, as a non-standard extension. +/// This allows `std::env::args` to work even in a `cdylib` or `staticlib`, as it does on macOS +/// and Windows. +/// /// # Panics /// /// The returned iterator will panic during iteration if any argument to the @@ -732,6 +737,11 @@ pub fn args() -> Args { /// set to arbitrary text, and it may not even exist, so this property should /// not be relied upon for security purposes. /// +/// On glibc Linux, arguments are retrieved by placing a function in .init_array. +/// glibc passes argc, argv, and envp to functions in .init_array, as a non-standard extension. +/// This allows `std::env::args` to work even in a `cdylib` or `staticlib`, as it does on macOS +/// and Windows. +/// /// # Examples /// /// ``` |
