Skip to content

Replace the \01__gnu_mcount_nc to LLVM intrinsic for additional ARM targets #140433

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

Merged
merged 1 commit into from
Apr 29, 2025

Conversation

BjoernLange
Copy link

@BjoernLange BjoernLange commented Apr 29, 2025

This is an extension to #113814 which seems to have missed two targets which also need this patch for instrumentation with -Z instrument-mcount to work correctly.

For anyone who might stumble over this issue again in the future: As a workaround one can dump the current target configuration using

rustc +nightly -Z unstable-options --target armv7-unknown-linux-gnueabihf --print target-spec-json

(assuming armv7-unknown-linux-gnueabihf is the target to build for) add the line

    "llvm-mcount-intrinsic": "llvm.arm.gnu.eabi.mcount",

and compile with

RUSTFLAGS="-Z instrument-mcount -C passes=ee-instrument<post-inline>" cargo +nightly build -Z build-std --target <path to directory with modified target config>/armv7-unknown-linux-gnueabihf.json

It might be necessary to set the compiler for cross compiling using something like

export TARGET_CC=arm-linux-gnueabihf-gcc

@rustbot
Copy link
Collaborator

rustbot commented Apr 29, 2025

r? @nnethercote

rustbot has assigned @nnethercote.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Apr 29, 2025
@rustbot
Copy link
Collaborator

rustbot commented Apr 29, 2025

These commits modify compiler targets.
(See the Target Tier Policy.)

@nnethercote
Copy link
Contributor

@bors r+ rollup

@bors
Copy link
Collaborator

bors commented Apr 29, 2025

📌 Commit 6aea9f4 has been approved by nnethercote

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 Apr 29, 2025
bors added a commit to rust-lang-ci/rust that referenced this pull request Apr 29, 2025
Rollup of 7 pull requests

Successful merges:

 - rust-lang#138344 (Enable `reliable_f16_math` on x86)
 - rust-lang#139909 (implement or-patterns for pattern types)
 - rust-lang#140392 (compiletest: Remove the libtest-based executor and its dependency)
 - rust-lang#140400 (PassWrapper: adapt for llvm/llvm-project@d3d856ad8469)
 - rust-lang#140422 (unwind: bump `unwinding` dependency to 0.2.6)
 - rust-lang#140432 (Update documentation for `fn target_config`)
 - rust-lang#140433 (Replace the \01__gnu_mcount_nc to LLVM intrinsic for additional ARM targets)

r? `@ghost`
`@rustbot` modify labels: rollup
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Apr 29, 2025
Rollup merge of rust-lang#140433 - BjoernLange:master, r=nnethercote

Replace the \01__gnu_mcount_nc to LLVM intrinsic for additional ARM targets

This is an extension to rust-lang#113814 which seems to have missed two targets which also need this patch for instrumentation with `-Z instrument-mcount` to work correctly.

For anyone who might stumble over this issue again in the future: As a workaround one can dump the current target configuration using

```
rustc +nightly -Z unstable-options --target armv7-unknown-linux-gnueabihf --print target-spec-json
```

(assuming `armv7-unknown-linux-gnueabihf` is the target to build for) add the line

```
    "llvm-mcount-intrinsic": "llvm.arm.gnu.eabi.mcount",
```

and compile with

```
RUSTFLAGS="-Z instrument-mcount -C passes=ee-instrument<post-inline>" cargo +nightly build -Z build-std --target <path to directory with modified target config>/armv7-unknown-linux-gnueabihf.json
```

It might be necessary to set the compiler for cross compiling using something like

```
export TARGET_CC=arm-linux-gnueabihf-gcc
```
@bors bors merged commit ff6a980 into rust-lang:master Apr 29, 2025
6 checks passed
@rustbot rustbot added this to the 1.88.0 milestone Apr 29, 2025
github-actions bot pushed a commit to model-checking/verify-rust-std that referenced this pull request May 9, 2025
Rollup of 7 pull requests

Successful merges:

 - rust-lang#138344 (Enable `reliable_f16_math` on x86)
 - rust-lang#139909 (implement or-patterns for pattern types)
 - rust-lang#140392 (compiletest: Remove the libtest-based executor and its dependency)
 - rust-lang#140400 (PassWrapper: adapt for llvm/llvm-project@d3d856ad8469)
 - rust-lang#140422 (unwind: bump `unwinding` dependency to 0.2.6)
 - rust-lang#140432 (Update documentation for `fn target_config`)
 - rust-lang#140433 (Replace the \01__gnu_mcount_nc to LLVM intrinsic for additional ARM targets)

r? `@ghost`
`@rustbot` modify labels: rollup
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. 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.

4 participants