Skip to content

Commit ec4d15d

Browse files
committed
Stabilize raw_dylib (#[link(kind = "raw-dylib")])
This stabilizes the raw-dylib and link_ordinal features (#58713) for the remaining architecture: x86.
1 parent c716587 commit ec4d15d

File tree

46 files changed

+29
-207
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+29
-207
lines changed

compiler/rustc_feature/src/accepted.rs

+2
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,8 @@ declare_features! (
266266
(accepted, pub_restricted, "1.18.0", Some(32409), None),
267267
/// Allows use of the postfix `?` operator in expressions.
268268
(accepted, question_mark, "1.13.0", Some(31436), None),
269+
/// Allows the use of raw-dylibs (RFC 2627).
270+
(accepted, raw_dylib, "CURRENT_RUSTC_VERSION", Some(58713), None),
269271
/// Allows keywords to be escaped for use as identifiers.
270272
(accepted, raw_identifiers, "1.30.0", Some(48589), None),
271273
/// Allows relaxing the coherence rules such that

compiler/rustc_feature/src/active.rs

-2
Original file line numberDiff line numberDiff line change
@@ -482,8 +482,6 @@ declare_features! (
482482
(active, precise_pointer_size_matching, "1.32.0", Some(56354), None),
483483
/// Allows macro attributes on expressions, statements and non-inline modules.
484484
(active, proc_macro_hygiene, "1.30.0", Some(54727), None),
485-
/// Allows the use of raw-dylibs (RFC 2627).
486-
(active, raw_dylib, "1.65.0", Some(58713), None),
487485
/// Allows `&raw const $place_expr` and `&raw mut $place_expr` expressions.
488486
(active, raw_ref_op, "1.41.0", Some(64490), None),
489487
/// Allows using the `#[register_tool]` attribute.

compiler/rustc_hir_analysis/src/collect.rs

-9
Original file line numberDiff line numberDiff line change
@@ -2170,15 +2170,6 @@ fn should_inherit_track_caller(tcx: TyCtxt<'_>, def_id: DefId) -> bool {
21702170

21712171
fn check_link_ordinal(tcx: TyCtxt<'_>, attr: &ast::Attribute) -> Option<u16> {
21722172
use rustc_ast::{Lit, LitIntType, LitKind};
2173-
if !tcx.features().raw_dylib && tcx.sess.target.arch == "x86" {
2174-
feature_err(
2175-
&tcx.sess.parse_sess,
2176-
sym::raw_dylib,
2177-
attr.span,
2178-
"`#[link_ordinal]` is unstable on x86",
2179-
)
2180-
.emit();
2181-
}
21822173
let meta_item_list = attr.meta_item_list();
21832174
let meta_item_list: Option<&[ast::NestedMetaItem]> = meta_item_list.as_ref().map(Vec::as_ref);
21842175
let sole_meta_list = match meta_item_list {

compiler/rustc_metadata/src/native_libs.rs

-18
Original file line numberDiff line numberDiff line change
@@ -165,14 +165,6 @@ impl<'tcx> Collector<'tcx> {
165165
"raw-dylib" => {
166166
if !sess.target.is_like_windows {
167167
sess.emit_err(FrameworkOnlyWindows { span });
168-
} else if !features.raw_dylib && sess.target.arch == "x86" {
169-
feature_err(
170-
&sess.parse_sess,
171-
sym::raw_dylib,
172-
span,
173-
"link kind `raw-dylib` is unstable on x86",
174-
)
175-
.emit();
176168
}
177169
NativeLibKind::RawDylib
178170
}
@@ -255,16 +247,6 @@ impl<'tcx> Collector<'tcx> {
255247
continue;
256248
}
257249
};
258-
if !features.raw_dylib {
259-
let span = item.name_value_literal_span().unwrap();
260-
feature_err(
261-
&sess.parse_sess,
262-
sym::raw_dylib,
263-
span,
264-
"import name type is unstable",
265-
)
266-
.emit();
267-
}
268250
import_name_type = Some((link_import_name_type, item.span()));
269251
}
270252
_ => {

src/doc/unstable-book/src/language-features/raw-dylib.md

-34
This file was deleted.

src/test/run-make/raw-dylib-alt-calling-convention/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#![feature(abi_vectorcall)]
2-
#![cfg_attr(target_arch = "x86", feature(raw_dylib))]
32

43
#[repr(C)]
54
#[derive(Clone)]

src/test/run-make/raw-dylib-c/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#![feature(raw_dylib, native_link_modifiers_verbatim)]
1+
#![feature(native_link_modifiers_verbatim)]
22

33
#[link(name = "extern_1.dll", kind = "raw-dylib", modifiers = "+verbatim")]
44
extern {

src/test/run-make/raw-dylib-import-name-type/driver.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#![feature(raw_dylib)]
21
#![feature(abi_vectorcall)]
32

43
#[link(name = "extern", kind = "raw-dylib", import_name_type = "undecorated")]

src/test/run-make/raw-dylib-inline-cross-dylib/driver.rs

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#![feature(raw_dylib)]
2-
31
extern crate raw_dylib_test;
42
extern crate raw_dylib_test_wrapper;
53

src/test/run-make/raw-dylib-inline-cross-dylib/lib.rs

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#![feature(raw_dylib)]
2-
31
#[link(name = "extern_1", kind = "raw-dylib")]
42
extern {
53
fn extern_fn_1();

src/test/run-make/raw-dylib-link-ordinal/lib.rs

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#![cfg_attr(target_arch = "x86", feature(raw_dylib))]
2-
31
#[link(name = "exporter", kind = "raw-dylib")]
42
extern {
53
#[link_ordinal(13)]

src/test/run-make/raw-dylib-stdcall-ordinal/lib.rs

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#![cfg_attr(target_arch = "x86", feature(raw_dylib))]
2-
31
#[link(name = "exporter", kind = "raw-dylib")]
42
extern "stdcall" {
53
#[link_ordinal(15)]

src/test/ui/feature-gates/feature-gate-raw-dylib-2.rs

-12
This file was deleted.

src/test/ui/feature-gates/feature-gate-raw-dylib-2.stderr

-21
This file was deleted.

src/test/ui/feature-gates/feature-gate-raw-dylib-import-name-type.rs

-8
This file was deleted.

src/test/ui/feature-gates/feature-gate-raw-dylib-import-name-type.stderr

-21
This file was deleted.

src/test/ui/feature-gates/feature-gate-raw-dylib.rs

-7
This file was deleted.

src/test/ui/feature-gates/feature-gate-raw-dylib.stderr

-12
This file was deleted.

src/test/ui/rfc-2627-raw-dylib/import-name-type-invalid-format.rs

-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
// only-windows
22
// only-x86
3-
#![feature(raw_dylib)]
4-
53
#[link(name = "foo", kind = "raw-dylib", import_name_type = 6)]
64
//~^ ERROR import name type must be of the form `import_name_type = "string"`
75
extern "C" { }

src/test/ui/rfc-2627-raw-dylib/import-name-type-invalid-format.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error: import name type must be of the form `import_name_type = "string"`
2-
--> $DIR/import-name-type-invalid-format.rs:5:42
2+
--> $DIR/import-name-type-invalid-format.rs:3:42
33
|
44
LL | #[link(name = "foo", kind = "raw-dylib", import_name_type = 6)]
55
| ^^^^^^^^^^^^^^^^^^^^

src/test/ui/rfc-2627-raw-dylib/import-name-type-multiple.rs

-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
// ignore-tidy-linelength
22
// only-windows
33
// only-x86
4-
#![feature(raw_dylib)]
5-
64
#[link(name = "foo", kind = "raw-dylib", import_name_type = "decorated", import_name_type = "decorated")]
75
//~^ ERROR multiple `import_name_type` arguments in a single `#[link]` attribute
86
extern "C" { }

src/test/ui/rfc-2627-raw-dylib/import-name-type-multiple.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error: multiple `import_name_type` arguments in a single `#[link]` attribute
2-
--> $DIR/import-name-type-multiple.rs:6:74
2+
--> $DIR/import-name-type-multiple.rs:4:74
33
|
44
LL | #[link(name = "foo", kind = "raw-dylib", import_name_type = "decorated", import_name_type = "decorated")]
55
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/test/ui/rfc-2627-raw-dylib/import-name-type-unknown-value.rs

-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
// only-windows
22
// only-x86
3-
#![feature(raw_dylib)]
4-
53
#[link(name = "foo", kind = "raw-dylib", import_name_type = "unknown")]
64
//~^ ERROR unknown import name type `unknown`, expected one of: decorated, noprefix, undecorated
75
extern "C" { }

src/test/ui/rfc-2627-raw-dylib/import-name-type-unknown-value.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error: unknown import name type `unknown`, expected one of: decorated, noprefix, undecorated
2-
--> $DIR/import-name-type-unknown-value.rs:5:42
2+
--> $DIR/import-name-type-unknown-value.rs:3:42
33
|
44
LL | #[link(name = "foo", kind = "raw-dylib", import_name_type = "unknown")]
55
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/test/ui/rfc-2627-raw-dylib/import-name-type-unsupported-link-kind.rs

-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
// only-windows
22
// only-x86
3-
#![feature(raw_dylib)]
4-
53
#[link(name = "foo", import_name_type = "decorated")]
64
//~^ ERROR import name type can only be used with link kind `raw-dylib`
75
extern "C" { }

src/test/ui/rfc-2627-raw-dylib/import-name-type-unsupported-link-kind.stderr

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
error: import name type can only be used with link kind `raw-dylib`
2-
--> $DIR/import-name-type-unsupported-link-kind.rs:5:22
2+
--> $DIR/import-name-type-unsupported-link-kind.rs:3:22
33
|
44
LL | #[link(name = "foo", import_name_type = "decorated")]
55
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
66

77
error: import name type can only be used with link kind `raw-dylib`
8-
--> $DIR/import-name-type-unsupported-link-kind.rs:9:39
8+
--> $DIR/import-name-type-unsupported-link-kind.rs:7:39
99
|
1010
LL | #[link(name = "bar", kind = "static", import_name_type = "decorated")]
1111
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/test/ui/rfc-2627-raw-dylib/link-ordinal-and-name.rs

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#![cfg_attr(target_arch = "x86", feature(raw_dylib))]
2-
31
#[link(name="foo")]
42
extern "C" {
53
#[link_name="foo"]

src/test/ui/rfc-2627-raw-dylib/link-ordinal-and-name.stderr

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
error: cannot use `#[link_name]` with `#[link_ordinal]`
2-
--> $DIR/link-ordinal-and-name.rs:6:5
2+
--> $DIR/link-ordinal-and-name.rs:4:5
33
|
44
LL | #[link_ordinal(42)]
55
| ^^^^^^^^^^^^^^^^^^^
66

77
error: cannot use `#[link_name]` with `#[link_ordinal]`
8-
--> $DIR/link-ordinal-and-name.rs:10:5
8+
--> $DIR/link-ordinal-and-name.rs:8:5
99
|
1010
LL | #[link_ordinal(5)]
1111
| ^^^^^^^^^^^^^^^^^^

src/test/ui/rfc-2627-raw-dylib/link-ordinal-invalid-format.rs

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#![cfg_attr(target_arch = "x86", feature(raw_dylib))]
2-
31
#[link(name = "foo")]
42
extern "C" {
53
#[link_ordinal("JustMonika")]

src/test/ui/rfc-2627-raw-dylib/link-ordinal-invalid-format.stderr

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
error: illegal ordinal format in `link_ordinal`
2-
--> $DIR/link-ordinal-invalid-format.rs:5:5
2+
--> $DIR/link-ordinal-invalid-format.rs:3:5
33
|
44
LL | #[link_ordinal("JustMonika")]
55
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
66
|
77
= note: an unsuffixed integer value, e.g., `1`, is expected
88

99
error: illegal ordinal format in `link_ordinal`
10-
--> $DIR/link-ordinal-invalid-format.rs:8:5
10+
--> $DIR/link-ordinal-invalid-format.rs:6:5
1111
|
1212
LL | #[link_ordinal("JustMonika")]
1313
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/test/ui/rfc-2627-raw-dylib/link-ordinal-missing-argument.rs

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#![cfg_attr(target_arch = "x86", feature(raw_dylib))]
2-
31
#[link(name = "foo")]
42
extern "C" {
53
#[link_ordinal()]

src/test/ui/rfc-2627-raw-dylib/link-ordinal-missing-argument.stderr

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
error: incorrect number of arguments to `#[link_ordinal]`
2-
--> $DIR/link-ordinal-missing-argument.rs:5:5
2+
--> $DIR/link-ordinal-missing-argument.rs:3:5
33
|
44
LL | #[link_ordinal()]
55
| ^^^^^^^^^^^^^^^^^
66
|
77
= note: the attribute requires exactly one argument
88

99
error: incorrect number of arguments to `#[link_ordinal]`
10-
--> $DIR/link-ordinal-missing-argument.rs:8:5
10+
--> $DIR/link-ordinal-missing-argument.rs:6:5
1111
|
1212
LL | #[link_ordinal()]
1313
| ^^^^^^^^^^^^^^^^^

src/test/ui/rfc-2627-raw-dylib/link-ordinal-multiple.rs

-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
// only-windows
2-
#![cfg_attr(target_arch = "x86", feature(raw_dylib))]
3-
42
#[link(name = "foo", kind = "raw-dylib")]
53
extern "C" {
64
#[link_ordinal(1)] //~ ERROR multiple `link_ordinal` attributes

src/test/ui/rfc-2627-raw-dylib/link-ordinal-multiple.stderr

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
error: multiple `link_ordinal` attributes
2-
--> $DIR/link-ordinal-multiple.rs:6:5
2+
--> $DIR/link-ordinal-multiple.rs:4:5
33
|
44
LL | #[link_ordinal(1)]
55
| ^^^^^^^^^^^^^^^^^^ help: remove this attribute
66
|
77
note: attribute also specified here
8-
--> $DIR/link-ordinal-multiple.rs:7:5
8+
--> $DIR/link-ordinal-multiple.rs:5:5
99
|
1010
LL | #[link_ordinal(2)]
1111
| ^^^^^^^^^^^^^^^^^^
1212

1313
error: multiple `link_ordinal` attributes
14-
--> $DIR/link-ordinal-multiple.rs:9:5
14+
--> $DIR/link-ordinal-multiple.rs:7:5
1515
|
1616
LL | #[link_ordinal(1)]
1717
| ^^^^^^^^^^^^^^^^^^ help: remove this attribute
1818
|
1919
note: attribute also specified here
20-
--> $DIR/link-ordinal-multiple.rs:10:5
20+
--> $DIR/link-ordinal-multiple.rs:8:5
2121
|
2222
LL | #[link_ordinal(2)]
2323
| ^^^^^^^^^^^^^^^^^^

0 commit comments

Comments
 (0)