| Age | Commit message (Collapse) | Author | Lines |
|
|
|
|
|
|
|
|
|
All tests should now have annotation for *why* they're ignored on emscripten. A
few tests no longer need such an annotation as well!
Closes #41299
|
|
Fix some tests on Linux
|
|
Most of these rely on spawning processes, which is not possible in
Emscripten.
|
|
Conflicts:
src/test/auxiliary/static-function-pointer-aux.rs
src/test/auxiliary/trait_default_method_xc_aux.rs
src/test/run-pass/issue-4545.rs
|
|
|
|
Now that support has been removed, all lingering use cases are renamed.
|
|
|
|
Implements remaining part of RFC #47.
Addresses issue #16461.
Removed link_attrs from rust.md, they don't appear to be supported by
the parser.
Changed all the tests to use the new extern crate syntax
Change pretty printer to use 'as' syntax
|
|
Using "win32" to mean "Windows" is confusing, especially now, that Rust supports win64 builds.
Let's call spade a spade.
|
|
|
|
|
|
|
|
|
|
From the 0.10 changelog:
* The inner attribute syntax has changed from `#[foo];` to `#![foo]`.
|
|
It appears that the --as-needed flag to linkers will not pull in a dynamic library unless it satisfies a non weak undefined symbol. The linkage1 test was creating a dynamic library where it was only used for a weak-symbol as part of an executable, so the dynamic library was getting discarded.
This commit adds another symbol to the library which satisfies a strong undefined symbol, so the library is pulled in to resolve the weak reference.
|
|
It is often convenient to have forms of weak linkage or other various types of
linkage. Sadly, just using these flavors of linkage are not compatible with
Rust's typesystem and how it considers some pointers to be non-null.
As a compromise, this commit adds support for weak linkage to external symbols,
but it requires that this is only placed on extern statics of type `*T`.
Codegen-wise, we get translations like:
// rust code
extern {
#[linkage = "extern_weak"]
static foo: *i32;
}
// generated IR
@foo = extern_weak global i32
@_some_internal_symbol = internal global *i32 @foo
All references to the rust value of `foo` then reference `_some_internal_symbol`
instead of the symbol `_foo` itself. This allows us to guarantee that the
address of `foo` will never be null while the value may sometimes be null.
An example was implemented in `std::rt::thread` to determine if
`__pthread_get_minstack()` is available at runtime, and a test is checked in to
use it for a static value as well. Function pointers a little odd because you
still need to transmute the pointer value to a function pointer, but it's
thankfully better than not having this capability at all.
|