Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

tests: Port symbol-mangling-hashed to rmake.rs #135768

Merged
merged 5 commits into from
Feb 1, 2025

Conversation

jieyouxu
Copy link
Member

@jieyouxu jieyouxu commented Jan 20, 2025

Part of #121876.

This PR supersedes #128567 and is co-authored with @lolbinarycat.

Summary

This PR ports tests/run-make/symbol-mangling-hashed to rmake.rs. Notable differences when compared to the Makefile version includes:

  • It's no longer limited to linux + x86_64 only. In particular, this now is exercised on darwin and windows (esp. msvc) too.
  • The test uses object crate to be more precise in the filtering, and avoids relying on parsing the human-readable nm output for some nm in the given environment (which isn't really a thing on msvc anyway, and llvm-nm doesn't handle msvc dylibs AFAICT).
  • Dump the symbols satisfying various criteria on test failure to make it hopefully less of a pain to debug if it ever fails in CI.

Review advice

  • Best reviewed commit-by-commit.
  • I'm not super sure about the msvc logic, would benefit from a MSVC (PE/COFF) expert taking a look.

try-job: x86_64-msvc-1
try-job: i686-msvc-1
try-job: i686-mingw
try-job: x86_64-mingw-1
try-job: x86_64-apple-1
try-job: aarch64-apple
try-job: test-various

@rustbot

This comment was marked as off-topic.

@rustbot rustbot added A-run-make Area: port run-make Makefiles to rmake.rs A-tidy Area: The tidy tool S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Jan 20, 2025
@jieyouxu
Copy link
Member Author

(Sorry Mark, this isn't ready for review yet)

@jieyouxu
Copy link
Member Author

@bors try

@bors
Copy link
Collaborator

bors commented Jan 20, 2025

⌛ Trying commit 10841e5 with merge cd8beab...

bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 20, 2025
…hed, r=<try>

tests: Port `symbol-mangling-hashed` to rmake.rs

Part of rust-lang#121876.

This PR supersedes rust-lang#128567 and is co-authored with `@lolbinarycat.`

### Summary

This PR ports `tests/run-make/symbol-mangling-hashed` to rmake.rs. Notable differences when compared to the Makefile version includes:

- It's no longer limited to linux + x86_64 only. In particular, this now is exercised on darwin and windows (esp. msvc) too.
- The test uses `object` crate to be more precise in the filtering, and avoids relying on parsing the human-readable `nm` output for *some* `nm` in the given environment (which isn't really a thing on msvc anyway, and `llvm-nm` doesn't handle msvc dylibs AFAICT).
- Dump the symbols satisfying various criteria on test failure to make it hopefully less of a pain to debug if it ever fails in CI.

### Review advice

- Best reviewed commit-by-commit.
- I'm not *super* sure about the msvc logic, would benefit from a MSVC (PE/COFF) expert taking a look.

---

try-job: x86_64-msvc
try-job: i686-msvc
try-job: i686-mingw
try-job: x86_64-mingw-1
try-job: x86_64-apple-1
try-job: aarch64-apple
try-job: test-various
@rust-log-analyzer

This comment was marked as resolved.

@jieyouxu jieyouxu added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 20, 2025
@jieyouxu
Copy link
Member Author

@bors try

bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 20, 2025
…hed, r=<try>

tests: Port `symbol-mangling-hashed` to rmake.rs

Part of rust-lang#121876.

This PR supersedes rust-lang#128567 and is co-authored with `@lolbinarycat.`

### Summary

This PR ports `tests/run-make/symbol-mangling-hashed` to rmake.rs. Notable differences when compared to the Makefile version includes:

- It's no longer limited to linux + x86_64 only. In particular, this now is exercised on darwin and windows (esp. msvc) too.
- The test uses `object` crate to be more precise in the filtering, and avoids relying on parsing the human-readable `nm` output for *some* `nm` in the given environment (which isn't really a thing on msvc anyway, and `llvm-nm` doesn't handle msvc dylibs AFAICT).
- Dump the symbols satisfying various criteria on test failure to make it hopefully less of a pain to debug if it ever fails in CI.

### Review advice

- Best reviewed commit-by-commit.
- I'm not *super* sure about the msvc logic, would benefit from a MSVC (PE/COFF) expert taking a look.

---

try-job: x86_64-msvc
try-job: i686-msvc-1
try-job: i686-mingw
try-job: x86_64-mingw-1
try-job: x86_64-apple-1
try-job: aarch64-apple
try-job: test-various
@bors
Copy link
Collaborator

bors commented Jan 20, 2025

⌛ Trying commit 10841e5 with merge a5e58b6...

@rust-log-analyzer

This comment has been minimized.

@bors

This comment was marked as outdated.

@jieyouxu jieyouxu force-pushed the migrate-symbol-mangling-hashed branch from 10841e5 to 897a145 Compare January 20, 2025 15:39
@jieyouxu
Copy link
Member Author

@bors try

@bors
Copy link
Collaborator

bors commented Jan 20, 2025

⌛ Trying commit 897a145 with merge 06b5854...

bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 20, 2025
…hed, r=<try>

tests: Port `symbol-mangling-hashed` to rmake.rs

Part of rust-lang#121876.

This PR supersedes rust-lang#128567 and is co-authored with `@lolbinarycat.`

### Summary

This PR ports `tests/run-make/symbol-mangling-hashed` to rmake.rs. Notable differences when compared to the Makefile version includes:

- It's no longer limited to linux + x86_64 only. In particular, this now is exercised on darwin and windows (esp. msvc) too.
- The test uses `object` crate to be more precise in the filtering, and avoids relying on parsing the human-readable `nm` output for *some* `nm` in the given environment (which isn't really a thing on msvc anyway, and `llvm-nm` doesn't handle msvc dylibs AFAICT).
- Dump the symbols satisfying various criteria on test failure to make it hopefully less of a pain to debug if it ever fails in CI.

### Review advice

- Best reviewed commit-by-commit.
- I'm not *super* sure about the msvc logic, would benefit from a MSVC (PE/COFF) expert taking a look.

---

try-job: x86_64-msvc
try-job: i686-msvc-1
try-job: i686-mingw
try-job: x86_64-mingw-1
try-job: x86_64-apple-1
try-job: aarch64-apple
try-job: test-various
@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Collaborator

bors commented Jan 20, 2025

💔 Test failed - checks-actions

@jieyouxu jieyouxu force-pushed the migrate-symbol-mangling-hashed branch from 897a145 to edf0248 Compare January 21, 2025 04:52
@jieyouxu
Copy link
Member Author

Changes since last review:

  • Fixed symbol helper comment.
  • Dropped symbol checks on binary.
  • Changed hello fn names to be different between the various input rlib/dylib crates.

@jieyouxu
Copy link
Member Author

@bors try

bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 29, 2025
…hed, r=<try>

tests: Port `symbol-mangling-hashed` to rmake.rs

Part of rust-lang#121876.

This PR supersedes rust-lang#128567 and is co-authored with `@lolbinarycat.`

### Summary

This PR ports `tests/run-make/symbol-mangling-hashed` to rmake.rs. Notable differences when compared to the Makefile version includes:

- It's no longer limited to linux + x86_64 only. In particular, this now is exercised on darwin and windows (esp. msvc) too.
- The test uses `object` crate to be more precise in the filtering, and avoids relying on parsing the human-readable `nm` output for *some* `nm` in the given environment (which isn't really a thing on msvc anyway, and `llvm-nm` doesn't handle msvc dylibs AFAICT).
- Dump the symbols satisfying various criteria on test failure to make it hopefully less of a pain to debug if it ever fails in CI.

### Review advice

- Best reviewed commit-by-commit.
- I'm not *super* sure about the msvc logic, would benefit from a MSVC (PE/COFF) expert taking a look.

---

try-job: x86_64-msvc-1
try-job: i686-msvc-1
try-job: i686-mingw
try-job: x86_64-mingw-1
try-job: x86_64-apple-1
try-job: aarch64-apple
try-job: test-various
@bors
Copy link
Collaborator

bors commented Jan 29, 2025

⌛ Trying commit ebdcf01 with merge 1395e24...

@bors
Copy link
Collaborator

bors commented Jan 29, 2025

☀️ Try build successful - checks-actions
Build commit: 1395e24 (1395e249256ef3527df6193bb9a86b7f9649ae3f)

@jieyouxu
Copy link
Member Author

@rustbot ready

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Jan 29, 2025
Copy link
Member

@Noratrieb Noratrieb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

gamer

jieyouxu and others added 5 commits January 31, 2025 04:29
…ic` helpers to rustc

Co-authored-by: binarycat <binarycat@envs.net>
- `dynamic_symbol_names`
- `text_section_global_dynamic_symbol_names`
- `global_undefined_dynamic_symbol_names`

Also add some missing `#[track_caller]` attributes.

Co-authored-by: binarycat <binarycat@envs.net>
- Use `object` based test logic instead of processing `nm`
  human-readable textual output.
- Try to expand test coverage to not be limited to only linux + x86_64.

Co-authored-by: binarycat <binarycat@envs.net>
@jieyouxu jieyouxu force-pushed the migrate-symbol-mangling-hashed branch from ebdcf01 to 9734ebb Compare January 31, 2025 04:31
@jieyouxu
Copy link
Member Author

Rebased to fix tidy conflict.
@bors r=Noratrieb rollup=iffy (might bounce)

@bors
Copy link
Collaborator

bors commented Jan 31, 2025

📌 Commit 9734ebb has been approved by Noratrieb

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 31, 2025
workingjubilee added a commit to workingjubilee/rustc that referenced this pull request Jan 31, 2025
…ashed, r=Noratrieb

tests: Port `symbol-mangling-hashed` to rmake.rs

Part of rust-lang#121876.

This PR supersedes rust-lang#128567 and is co-authored with `@lolbinarycat.`

### Summary

This PR ports `tests/run-make/symbol-mangling-hashed` to rmake.rs. Notable differences when compared to the Makefile version includes:

- It's no longer limited to linux + x86_64 only. In particular, this now is exercised on darwin and windows (esp. msvc) too.
- The test uses `object` crate to be more precise in the filtering, and avoids relying on parsing the human-readable `nm` output for *some* `nm` in the given environment (which isn't really a thing on msvc anyway, and `llvm-nm` doesn't handle msvc dylibs AFAICT).
- Dump the symbols satisfying various criteria on test failure to make it hopefully less of a pain to debug if it ever fails in CI.

### Review advice

- Best reviewed commit-by-commit.
- I'm not *super* sure about the msvc logic, would benefit from a MSVC (PE/COFF) expert taking a look.

---

try-job: x86_64-msvc-1
try-job: i686-msvc-1
try-job: i686-mingw
try-job: x86_64-mingw-1
try-job: x86_64-apple-1
try-job: aarch64-apple
try-job: test-various
bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 31, 2025
…kingjubilee

Rollup of 16 pull requests

Successful merges:

 - rust-lang#133266 (ci: fix explanation why LLVM download is disabled for windows-gnu)
 - rust-lang#135768 (tests: Port `symbol-mangling-hashed` to rmake.rs)
 - rust-lang#135836 (bootstrap: only build `crt{begin,end}.o` when compiling to MUSL)
 - rust-lang#135840 (omit unused args warnings for intrinsics without body)
 - rust-lang#135900 (Manually walk into WF obligations in `BestObligation` proof tree visitor)
 - rust-lang#136146 (Explicitly choose x86 softfloat/hardfloat ABI)
 - rust-lang#136154 (Use +secure-plt for powerpc-unknown-linux-gnu{,spe})
 - rust-lang#136163 (Fix off-by-one error causing slice::sort to abort the program)
 - rust-lang#136266 (fix broken release notes id)
 - rust-lang#136283 (Update encode_utf16 to mention it is native endian)
 - rust-lang#136309 (set rustc dylib on manually constructed rustc command)
 - rust-lang#136314 (Use proper type when applying deref adjustment in const)
 - rust-lang#136339 (CompileTest: Add Directives to Ignore `arm-unknown-*` Targets)
 - rust-lang#136348 (miri: make float min/max non-deterministic)
 - rust-lang#136351 (Add documentation for derive(CoercePointee))
 - rust-lang#136358 (`#[optimize(none)]` implies `#[inline(never)]`)

Failed merges:

 - rust-lang#135994 (Rename rustc_middle::Ty::is_unsafe_ptr to is_raw_ptr)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors
Copy link
Collaborator

bors commented Feb 1, 2025

⌛ Testing commit 9734ebb with merge 9709af7...

@bors
Copy link
Collaborator

bors commented Feb 1, 2025

☀️ Test successful - checks-actions
Approved by: Noratrieb
Pushing 9709af7 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Feb 1, 2025
@bors bors merged commit 9709af7 into rust-lang:master Feb 1, 2025
7 checks passed
@rustbot rustbot added this to the 1.86.0 milestone Feb 1, 2025
@jieyouxu jieyouxu deleted the migrate-symbol-mangling-hashed branch February 1, 2025 06:02
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (9709af7): comparison URL.

Overall result: ❌ regressions - no action needed

@rustbot label: -perf-regression

Instruction count

This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
0.4% [0.4%, 0.4%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary 3.2%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
3.2% [3.2%, 3.2%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 3.2% [3.2%, 3.2%] 1

Cycles

Results (secondary -2.8%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.8% [-3.6%, -2.3%] 7
All ❌✅ (primary) - - 0

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 779.222s -> 778.098s (-0.14%)
Artifact size: 328.75 MiB -> 328.85 MiB (0.03%)

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
A-run-make Area: port run-make Makefiles to rmake.rs A-tidy Area: The tidy tool merged-by-bors This PR was explicitly merged by bors. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants