Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Fix wrong directories in host_libdir. #7798

Merged
merged 1 commit into from
Jan 21, 2020
Merged

Conversation

jnbr
Copy link
Contributor

@jnbr jnbr commented Jan 14, 2020

This fixes a regression from #7482 where the sysroot_target_libdir leaks into the host libdir. This can cause problems when the dynamic linker does not ignore the target libraries but tries to load them instead. This happens for example when building on x86_64-musl for aarch64-musl.

This fixes a regression from rust-lang#7475 where the sysroot_target_libdir leaks into
the host libdir. This can cause problems when the dynamic linker does
not ignore the target libraries but tries to load them instead. This
happens for example when building on x86_64-musl for aarch64-musl.
@rust-highfive
Copy link

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @Eh2406 (or someone else) soon.

If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.

Please see the contribution instructions for more information.

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jan 14, 2020
@jnbr jnbr requested a review from alexcrichton January 14, 2020 22:41
@ehuss
Copy link
Contributor

ehuss commented Jan 14, 2020

Hi! Thanks for the PR!

I'm a bit confused because I expect sysroot_host_libdir is the same no matter what the target kind is. Can you explain more about the issue you are having?

@jnbr
Copy link
Contributor Author

jnbr commented Jan 15, 2020

Can you explain more about the issue you are having?

Sure. Here is what I try to do:

To cross compile a hello world on a x86_64-musl host system for aarch64-musl, I run the folowing commands.

export RUSTFLAGS="--sysroot=../aarch64-musl-chroot/usr/"
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=aarch64-linux-musl-gcc
~/src/cargo/target/debug/cargo build --target=aarch64-unknown-linux-musl

This used to work, but since #7482, rustc (called by cargo) fails to run, the dynamic linker shows this error message:

Error relocating ../aarch64-musl-chroot/usr/lib/libgcc_s.so.1: unsupported relocation type 1026

Setting a break point in Compilation::new and inspecting sysroot_host_libdir, shows that it contains a target libdir, strictly speaking, the one set via RUSTFLAGS="--sysroot=../aarch64-musl-chroot/usr/":

(gdb) p bcx.info(default_kind).sysroot_host_libdir
$1 = std::path::PathBuf {inner: "../aarch64-musl-chroot/usr/lib"}

So the actual problems is either me using --sysroot in the wrong way, or – in my opinion – that it is included in sysroot_host_dir.

@ehuss
Copy link
Contributor

ehuss commented Jan 18, 2020

Ah, I see, using --sysroot is a critical part here.

This change seems fine to me. I'm wondering if a test might be possible, but it seems difficult. I'll leave final review to @alexcrichton who wrote this.

@alexcrichton
Copy link
Member

@bors: r+

@bors
Copy link
Contributor

bors commented Jan 21, 2020

📌 Commit f917e16 has been approved by alexcrichton

@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 21, 2020
@bors
Copy link
Contributor

bors commented Jan 21, 2020

⌛ Testing commit f917e16 with merge f6449ba...

bors added a commit that referenced this pull request Jan 21, 2020
Fix wrong directories in host_libdir.

This fixes a regression from #7482 where the sysroot_target_libdir leaks into the host libdir. This can cause problems when the dynamic linker does not ignore the target libraries but tries to load them instead. This happens for example when building on x86_64-musl for aarch64-musl.
@bors
Copy link
Contributor

bors commented Jan 21, 2020

☀️ Test successful - checks-azure
Approved by: alexcrichton
Pushing f6449ba to master...

@bors bors merged commit f917e16 into rust-lang:master Jan 21, 2020
Centril added a commit to Centril/rust that referenced this pull request Jan 21, 2020
…chton

Update cargo, books

## cargo

9 commits in ad3dbe10e1e654fb1f032a5dd9481d7cbaa00d65..f6449ba236db31995255ac5e4cad4ab88296a7c6
2020-01-13 21:37:15 +0000 to 2020-01-21 16:15:39 +0000
- Fix wrong directories in host_libdir. (rust-lang/cargo#7798)
- Update humantime requirement from 1.2.0 to 2.0.0 (rust-lang/cargo#7815)
- Fix doc_target test which no longer works on stable/beta. (rust-lang/cargo#7817)
- Fix some erroneous em-dashes in man pages. (rust-lang/cargo#7814)
- fix some clippy warnings (rust-lang/cargo#7808)
- Don't assume iowait always increases on Linux (rust-lang/cargo#7803)
- Add and update some doc comments. (rust-lang/cargo#7800)
- Consistently use em-dash in environment documentation page. (rust-lang/cargo#7799)
- Load credentials only when needed (rust-lang/cargo#7774)

## reference

3 commits in e115753..11e893f
2019-12-22 13:13:14 +0100 to 2020-01-18 21:24:08 +0100
- Small improvements to types/pointer.md (rust-lang/reference#726)
- repr(transparent): mention align=1 requirement (rust-lang/reference#737)
- Elaborate on how to use an extern static correctly (rust-lang/reference#736)

## book

4 commits in 5c5cfd2e94cd42632798d9bd3d1116133e128ac9..87dd6843678575f8dda962f239d14ef4be14b352
2019-12-16 09:27:21 -0600 to 2020-01-20 15:20:40 -0500
- Fix listing numbers (rust-lang/book#2227)
- Move `async` and `await` keywords to 'Currently in Use' (rust-lang/book#2140)
- More cleanup - remove unneeded files (rust-lang/book#2213)
- Small cleanups extracted from the bigger pr i'm working on (rust-lang/book#2212)

## rust-by-example

1 commits in 1d59403cb5269c190cc52a95584ecc280345495a..1c2bd024d13f8011307e13386cf1fea2180352b5
2019-12-27 08:27:05 -0300 to 2020-01-20 12:18:36 -0300
- CamelCase -> UpperCamelCase (rust-lang/rust-by-example#1302)

## embedded-book

1 commits in 9493b7d4dc97eda439bd8780f05ad7b234cd1cd7..4d78994915af1bde9a95c04a8c27d8dca066232a
2019-12-27 20:05:00 +0000 to 2020-01-14 08:25:25 +0000
- Update .gitattributes  (rust-embedded/book#221)
Centril added a commit to Centril/rust that referenced this pull request Jan 22, 2020
…chton

Update cargo, books

## cargo

9 commits in ad3dbe10e1e654fb1f032a5dd9481d7cbaa00d65..f6449ba236db31995255ac5e4cad4ab88296a7c6
2020-01-13 21:37:15 +0000 to 2020-01-21 16:15:39 +0000
- Fix wrong directories in host_libdir. (rust-lang/cargo#7798)
- Update humantime requirement from 1.2.0 to 2.0.0 (rust-lang/cargo#7815)
- Fix doc_target test which no longer works on stable/beta. (rust-lang/cargo#7817)
- Fix some erroneous em-dashes in man pages. (rust-lang/cargo#7814)
- fix some clippy warnings (rust-lang/cargo#7808)
- Don't assume iowait always increases on Linux (rust-lang/cargo#7803)
- Add and update some doc comments. (rust-lang/cargo#7800)
- Consistently use em-dash in environment documentation page. (rust-lang/cargo#7799)
- Load credentials only when needed (rust-lang/cargo#7774)

## reference

3 commits in e115753..11e893f
2019-12-22 13:13:14 +0100 to 2020-01-18 21:24:08 +0100
- Small improvements to types/pointer.md (rust-lang/reference#726)
- repr(transparent): mention align=1 requirement (rust-lang/reference#737)
- Elaborate on how to use an extern static correctly (rust-lang/reference#736)

## book

4 commits in 5c5cfd2e94cd42632798d9bd3d1116133e128ac9..87dd6843678575f8dda962f239d14ef4be14b352
2019-12-16 09:27:21 -0600 to 2020-01-20 15:20:40 -0500
- Fix listing numbers (rust-lang/book#2227)
- Move `async` and `await` keywords to 'Currently in Use' (rust-lang/book#2140)
- More cleanup - remove unneeded files (rust-lang/book#2213)
- Small cleanups extracted from the bigger pr i'm working on (rust-lang/book#2212)

## rust-by-example

1 commits in 1d59403cb5269c190cc52a95584ecc280345495a..1c2bd024d13f8011307e13386cf1fea2180352b5
2019-12-27 08:27:05 -0300 to 2020-01-20 12:18:36 -0300
- CamelCase -> UpperCamelCase (rust-lang/rust-by-example#1302)

## embedded-book

1 commits in 9493b7d4dc97eda439bd8780f05ad7b234cd1cd7..4d78994915af1bde9a95c04a8c27d8dca066232a
2019-12-27 20:05:00 +0000 to 2020-01-14 08:25:25 +0000
- Update .gitattributes  (rust-embedded/book#221)
@ehuss ehuss added this to the 1.42.0 milestone Feb 6, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants