Commit Graph

60 Commits

Author SHA1 Message Date
Karol Zwolak d14b83e378 bless tests with new lint messages 2025-08-19 21:27:10 +02:00
Jonathan Brouwer 4bb7bf64e0 Update uitests
Signed-off-by: Jonathan Brouwer <jonathantbrouwer@gmail.com>
2025-08-14 18:18:42 +02:00
Sasha Pourcelot d435197afc Port the #[linkage] attribute to the new attribute system 2025-08-13 21:01:37 +02:00
Esteban Küber 32ee26c625 Add more docs to templates for attrs with incorrect arguments 2025-08-11 17:02:32 +00:00
bjorn3 6c02653c4a Prevent name collisions with internal implementation details
The implementation of the linkage attribute inside extern blocks defines
symbols starting with _rust_extern_with_linkage_. If someone tries to
also define this symbol you will get a symbol conflict or even an ICE.
By adding an unpredictable component to the symbol name, this becomes
less of an issue.
2025-08-07 13:41:17 +00:00
Samuel Tardieu 751ee2a8f6 Rollup merge of #144703 - daltenty:daltenty/extern-weak, r=Noratrieb
[test][AIX] ignore extern_weak linkage test

The AIX linkage model doesn't support ELF-style extern_weak semantics, so just skip this test, like other platforms that don't have it.
2025-08-02 11:24:25 +02:00
David Tenty ee0118f8a1 [test][AIX] ignore extern_weak linkage test
The AIX linkage model doesn't support ELF style extern_weak semantic, so just skip this test, like other platforms that don't have it.
2025-07-30 16:45:17 -04:00
Daniel Paoliello cffde732ce Verify llvm-needs-components are not empty and match the --target value 2025-07-29 11:20:23 -07:00
Matthias Krüger dfbd0c4e5a Rollup merge of #143979 - dpaoliello:arm64ectest, r=petrochenkov
Test fixes for Arm64EC Windows

* `tests/ui/cfg/conditional-compile-arch.rs` needs an Arm64EC case.
* `tests/ui/runtime/backtrace-debuginfo.rs` should skip Arm64EC as it suffers from the same truncated backtraces as Arm64 Windows.
* `tests/ui/linkage-attr/incompatible-flavor.rs` is a general issue: it assumes that the Rust compiler is always built with the x86 target enabled in the backend, but I only enabled AArch64 when building locally to speed up the LLVM compilation.
2025-07-25 11:16:35 +02:00
usamoi e31876c143 generate elf symbol version in raw-dylib 2025-07-24 19:04:00 +08:00
Daniel Paoliello d77c387272 Fixes for Arm64EC 2025-07-13 15:01:48 -07:00
Anne Stijns 75561c446a Port #[link_ordinal] to the new attribute parsing infrastructure. 2025-07-13 11:51:01 +02:00
dianqk 327fe35db3 Rollup merge of #143195 - Kivooeo:tf17, r=tgross35
`tests/ui`: A New Order [17/N]

> [!NOTE]
>
> Intermediate commits are intended to help review, but will be squashed prior to merge.

Some `tests/ui/` housekeeping, to trim down number of tests directly under `tests/ui/`. Part of rust-lang/rust#133895.

r? `@tgross35`
2025-06-30 19:23:21 +08:00
dianqk 0952f86de3 Rollup merge of #143118 - Kivooeo:tf15, r=tgross35
`tests/ui`: A New Order [15/N]

> [!NOTE]
>
> Intermediate commits are intended to help review, but will be squashed prior to merge.

Some `tests/ui/` housekeeping, to trim down number of tests directly under `tests/ui/`. Part of rust-lang/rust#133895.

r? `@jieyouxu`
2025-06-30 19:23:17 +08:00
Kivooeo 1e3a2b2d4a cleaned up some tests 2025-06-30 11:23:01 +05:00
Kivooeo 580bc12844 cleaned up some tests 2025-06-30 11:16:18 +05:00
Kivooeo a38c78c461 moved tests 2025-06-29 18:06:00 +05:00
Trevor Gross 74657a4a1a Move some UI tests to more apropriate directories
Prepare for rework done in the rest of [PR143118].

[PR143118]: https://www.github.com/rust-lang/rust/pull/143118

Co-authored-by: Kivooeo <Kivooeo123@gmail.com>
2025-06-28 19:07:29 -05:00
Jubilee Young a3a6d9bf71 tests: Update raw-dylib unsupported ABI test 2025-06-23 09:40:00 -07:00
Jubilee Young 9f50246741 tests: Convert linkage-attr test to cross-compiling and bless 2025-06-12 23:22:01 +00:00
Ralf Jung b154e03726 try to manually bless windows test output 2025-06-08 20:36:24 +02:00
Jieyou Xu c615d10743 tests: use specific-purpose needs-crate-type over ignore-$target directives
Not all existing tests are converted, I only updated ones that I can
easily find via directive comments.
2025-04-10 12:52:08 +08:00
Matthias Krüger 2e8bd29de4 Rollup merge of #139322 - Kobzol:run-make-lld-refactor, r=jieyouxu
Add helper function for checking LLD usage to `run-make-support`

Extracted out of https://github.com/rust-lang/rust/pull/138645, should be a simple refactoring.

r? ``@jieyouxu``
2025-04-04 08:02:08 +02:00
Jakub Beránek 9ec11c246d Move link-self-contained-consistency test to a more reasonable location 2025-04-03 15:41:38 +02:00
Vadim Petrochenkov 4d64990690 compiletest: Require //~ annotations even if error-pattern is specified 2025-04-03 11:08:55 +03:00
Vadim Petrochenkov 8d5109aa6e compiletest: Support matching on diagnostics without a span 2025-03-25 17:33:09 +03:00
Noratrieb a954c51280 Support raw-dylib link kind on ELF
raw-dylib is a link kind that allows rustc to link against a library
without having any library files present.
This currently only exists on Windows. rustc will take all the symbols
from raw-dylib link blocks and put them in an import library, where they
can then be resolved by the linker.

While import libraries don't exist on ELF, it would still be convenient
to have this same functionality. Not having the libraries present at
build-time can be convenient for several reasons, especially
cross-compilation. With raw-dylib, code linking against a library can be
cross-compiled without needing to have these libraries available on the
build machine. If the libc crate makes use of this, it would allow
cross-compilation without having any libc available on the build
machine. This is not yet possible with this implementation, at least
against libc's like glibc that use symbol versioning.
The raw-dylib kind could be extended with support for symbol versioning
in the future.

This implementation is very experimental and I have not tested it very
well. I have tested it for a toy example and the lz4-sys crate, where it
was able to successfully link a binary despite not having a
corresponding library at build-time.
2025-02-26 19:09:51 +01:00
bjorn3 382e4031c2 Remove Linkage::Private
This is the same as Linkage::Internal except that it doesn't emit any
symbol. Some backends may not support it and it isn't all that useful
anyway.
2025-02-07 16:02:19 +00:00
Ben Kimock 7dfc786df1 Enable more tests on Windows 2025-02-03 10:39:32 -05:00
Zalathar 0a48b96859 Move more tests into tests/ui/link-native-libs 2024-12-07 13:18:05 +11:00
bors 8ac313bdbe Auto merge of #133499 - nikic:no-backend-verify, r=Mark-Simulacrum
Respect verify-llvm-ir option in the backend

We are currently unconditionally verifying the LLVM IR in the backend (twice), ignoring the value of the verify-llvm-ir option. This has substantial compile-time impact for debug builds.
2024-12-01 04:54:02 +00:00
Nikita Popov fc9f727c7c Fix tests that rely on LLVM IR verification
Pass -Z verify-llvm-ir to tests that rely on it, to make sure they
pass regardless of the value of verify-llvm-ir in config.toml.

Also remove the 109681.rs test, because it is a duplicat of
common-linkage-non-zero-init.rs.
2024-11-29 19:11:34 +01:00
许杰友 Jieyou Xu (Joe) 95ff642797 tests: remove //@ pretty-expanded usages
Done with

```bash
sd '//@ pretty-expanded.*\n' '' tests/ui/**/*.rs
```

and

```
sd '//@pretty-expanded.*\n' '' tests/ui/**/*.rs
```
2024-11-26 02:50:48 +08:00
jyn f1e5b365f0 port tests/ui/linkage-attr/framework to run-make
this makes it much easier to understand test failures.

before:
```
diff of stderr:

1 error: linking with `LINKER` failed: exit status: 1
2    |
-            ld: Undefined symbols:
4              _CFRunLoopGetTypeID, referenced from:
5            clang: error: linker command failed with exit code 1 (use -v to see invocation)
```

after:
```
=== HAYSTACK ===
error: linking with `cc` failed: exit status: 1
  |
  = note: use `--verbose` to show all linker arguments
  = note: Undefined symbols for architecture arm64:
            "_CFRunLoopGetTypeID", referenced from:
                main::main::hbb553f5dda62d3ea in main.main.d17f5fbe6225cf88-cgu.0.rcgu.o
          ld: symbol(s) not found for architecture arm64
          clang: error: linker command failed with exit code 1 (use -v to see invocation)

error: aborting due to 1 previous error

=== NEEDLE ===
_CFRunLoopGetTypeID\.?, referenced from:
thread 'main' panicked at /Users/jyn/git/rust-lang/rust/tests/run-make/linkage-attr-framework/rmake.rs:22:10:
needle was not found in haystack
```

this also fixes a failure related to missing whitespace; we don't actually care about whitespace in this test.
2024-10-27 21:23:28 -04:00
Obei Sideg 3b0ce1bc33 Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
Ralf Jung cf6f6ca441 unreferenced-used-static: run test everywhere 2024-06-29 13:02:59 +02:00
Rémy Rakic 57931e5040 add non-regression test for issue 127052 2024-06-28 20:59:33 +00:00
bjorn3 07dc3ebf5c Allow static mut definitions with #[linkage]
Unlike static declarations with #[linkage], for definitions rustc
doesn't rewrite it to add an extra indirection.
2024-06-03 10:45:16 +00:00
Mads Marquart e6b9bb7b72 Make more of the test suite run on Mac Catalyst
This adds the `only-apple`/`ignore-apple` compiletest directive, and
uses that basically everywhere instead of `only-macos`/`ignore-macos`.

Some of the updates in `run-make` are a bit redundant, as they use
`ignore-cross-compile` and won't run on iOS - but using Apple in these
is still more correct, so I've made that change anyhow.
2024-05-28 12:31:33 +02:00
bjorn3 531dae1cdf Only allow immutable statics with #[linkage] 2024-05-13 14:34:32 +00:00
Mads Marquart ff3f0a3467 Add test for linking to UIKit 2024-04-10 17:43:45 +02:00
Caio ab8994d93e Move tests 2024-04-07 17:38:07 -03:00
Mads Marquart de212963f8 Relax framework linking test
This test was introduced in #118644, but was over-specified in that it assumed the path of the linker was always `cc`.
2024-04-06 09:00:07 +02:00
Mads Marquart ec5c8fec6c Add test for Apple's -weak_framework linker argument 2024-03-18 23:27:34 +01:00
Alex Crichton cf6d6050f7 Update test directives for wasm32-wasip1
* The WASI targets deal with the `main` symbol a bit differently than
  native so some `codegen` and `assembly` tests have been ignored.
* All `ignore-emscripten` directives have been updated to
  `ignore-wasm32` to be more clear that all wasm targets are ignored and
  it's not just Emscripten.
* Most `ignore-wasm32-bare` directives are now gone.
* Some ignore directives for wasm were switched to `needs-unwind`
  instead.
* Many `ignore-wasm32*` directives are removed as the tests work with
  WASI as opposed to `wasm32-unknown-unknown`.
2024-03-11 09:36:35 -07:00
Jubilee Young f7b621cfab Clarify FatalErrorHandler
Clarify the FatalErrorHandler API that we use:
- Identify rustc's LLVM ERRORs by prefixing them
- Comment heavily on its interior, while we are here
2024-03-05 20:52:54 -08:00
许杰友 Jieyou Xu (Joe) ec2cc761bc [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
George-lewis d56cdd48cb Bless tests
Update tests
2024-01-13 12:46:58 -05:00
Nilstrieb 41e8d152dc Show number in error message even for one error
Co-authored-by: Adrian <adrian.iosdev@gmail.com>
2023-11-24 19:15:52 +01:00
Rémy Rakic d634cc5a55 add test for -Clink-self-contained consistency 2023-10-08 21:57:39 +00:00