New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 814480 link

Starred by 6 users

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug
Build-Toolchain

Blocked on:
issue 868726

Blocking:
issue 845194



Sign in to add a comment

Files in crosvm are not using compiler-rt

Project Member Reported by manojgupta@chromium.org, Feb 21 2018

Issue description

Following two files are not using libc++.
/usr/bin/crosvm
/usr/lib64/libqcow_utils.so

Seems like these files are built using cargo (from rust).
 
The above two files are linked with libgcc_s which is unexpected since compiler-rt is the default on ChromeOS. 

$ readelf -dW /build/eve/usr/bin/crosvm |grep NEEDED
 0x0000000000000001 (NEEDED)             Shared library: [libminijail.so]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libdl.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
Summary: Files in crosvm are not using compiler-rt (was: Files in crosvm are not using libc++)
Gentle ping, is anyone working on this? We want to avoid any future libgcc dependencies.
Labels: Proj-Containers

Comment 5 by za...@chromium.org, Apr 20 2018

Owner: ----
Status: Available (was: Untriaged)
This is available to work on. I haven't looked into it.
Components: OS>Systems>Containers
Labels: Hotlist-Crostini-Platform
I suspect crosvm need to switch to https://crates.io/crates/cc
Owner: manojgupta@chromium.org
This is getting more annoying (See https://chromium-review.googlesource.com/c/chromiumos/overlays/board-overlays/+/1063017), let me fix it.
Owner: ----
Looks like rust is passing -nodefaultlibs + -lgcc_s in its build that is causing the issue. 
Unassigning myself since I don't have time to dig into rust build system.

Comment 11 by za...@chromium.org, May 18 2018

Owner: za...@chromium.org
Status: Started (was: Available)
I'll take ownership of this issue. 
Project Member

Comment 12 by bugdroid1@chromium.org, May 19 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/7f98b54301d0a3afc95e627b0706f6d2c3e5eff9

commit 7f98b54301d0a3afc95e627b0706f6d2c3e5eff9
Author: Manoj Gupta <manojgupta@google.com>
Date: Sat May 19 06:07:28 2018

crosvm: Switch to cc crate.

We do not want to add dependencies on GCC. Switch to cc crate
instead of gcc to honor CC setting.

CQ-DEPEND=CL:1066461

BUG=chromium:814480
TEST=emerge-{eve,kevin} crosvm works.

Change-Id: I410d866ac3c753030abe3808593cb9ac8ee8fedb
Reviewed-on: https://chromium-review.googlesource.com/1066462
Commit-Ready: Manoj Gupta <manojgupta@chromium.org>
Tested-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>

[modify] https://crrev.com/7f98b54301d0a3afc95e627b0706f6d2c3e5eff9/chromeos-base/crosvm/Manifest
[modify] https://crrev.com/7f98b54301d0a3afc95e627b0706f6d2c3e5eff9/chromeos-base/crosvm/crosvm-9999.ebuild

Project Member

Comment 13 by bugdroid1@chromium.org, May 19 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform/crosvm/+/d8f10af6aeaff319f407578cdff1afd0324f5912

commit d8f10af6aeaff319f407578cdff1afd0324f5912
Author: Manoj Gupta <manojgupta@google.com>
Date: Sat May 19 06:07:28 2018

crosvm: Switch to cc crate.

We do not want to add dependencies on GCC. Switch to cc crate
instead of gcc to honor CC setting.

CQ-DEPEND=CL:1066462

BUG=chromium:814480
TEST=emerge-{eve,kevin} crosvm works.

Change-Id: I4e846b2080503e5617ed66e709f7af5263c98fba
Reviewed-on: https://chromium-review.googlesource.com/1066461
Commit-Ready: Manoj Gupta <manojgupta@chromium.org>
Tested-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Zach Reizner <zachr@chromium.org>

[modify] https://crrev.com/d8f10af6aeaff319f407578cdff1afd0324f5912/Cargo.lock
[modify] https://crrev.com/d8f10af6aeaff319f407578cdff1afd0324f5912/plugin_proto/Cargo.toml
[modify] https://crrev.com/d8f10af6aeaff319f407578cdff1afd0324f5912/sys_util/Cargo.toml
[modify] https://crrev.com/d8f10af6aeaff319f407578cdff1afd0324f5912/sys_util/build.rs

Comment 14 by za...@chromium.org, May 21 2018

Cc: dtor@chromium.org

Comment 15 by dtor@google.com, May 21 2018

Blocking: 845194

Comment 16 by za...@chromium.org, May 21 2018

Owner: ----
Status: Available (was: Started)
So this looks harder than I thought. The libstd crate always depends on libwind ( https://github.com/rust-lang/rust/blob/994bfd414138e623f315f4273841b9f006ac72ee/src/libstd/Cargo.toml#L26 ). The libunwind crate always depends on libgcc_s ( https://github.com/rust-lang/rust/blob/68db72d8cd613f88ea69d37bcd159c4ff659aab1/src/libunwind/build.rs#L21 ). The libgcc_s shared object is use to link the _Unwind_* symbols, which are used for backtracing Rust panics. Sadly, using panic=abort as we do for crosvm release builds does not break up this dependency chain. I'm marking this available because I don't have a plan for how to attack this problem.
Cc: jettrink@chromium.org mka@chromium.org manojgupta@chromium.org bleung@chromium.org
 Issue 862825  has been merged into this issue.
Owner: chirantan@chromium.org
Status: Started (was: Available)
I have CLs up for review to fix this.
Thanks for taking this up!
Project Member

Comment 20 by bugdroid1@chromium.org, Jul 13

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/063096cfad129d4dcb6dbc188b43bd66986000ba

commit 063096cfad129d4dcb6dbc188b43bd66986000ba
Author: Manoj Gupta <manojgupta@google.com>
Date: Fri Jul 13 18:36:13 2018

llvm-libunwind: Don't test a fully working compiler in cmake tests.

libunwind is built before other libraries needed for a fully
working compiler are available.

BUG=chromium:814480
TEST=libunwind builds locally without libc++ libraries.

Change-Id: I204c316fdeaae1870981000b5dabd3047e181aea
Reviewed-on: https://chromium-review.googlesource.com/1136809
Commit-Queue: Manoj Gupta <manojgupta@chromium.org>
Tested-by: Manoj Gupta <manojgupta@chromium.org>
Trybot-Ready: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Caroline Tice <cmtice@chromium.org>

[rename] https://crrev.com/063096cfad129d4dcb6dbc188b43bd66986000ba/sys-libs/llvm-libunwind/llvm-libunwind-7.0_pre331547-r1.ebuild

Project Member

Comment 21 by bugdroid1@chromium.org, Jul 14

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/9fd67b584922ea887c35283ec0bf1b520fb612d1

commit 9fd67b584922ea887c35283ec0bf1b520fb612d1
Author: Chirantan Ekbote <chirantan@chromium.org>
Date: Sat Jul 14 00:28:51 2018

perf: Depend on llvm-libunwind instead of libunwind

libunwind and llvm-libunwind block each other.  cargo needs
llvm-libunwind because it uses extra symbols that are not available from
libunwind.  Instead, change perf to use llvm-libunwind so that we can
install both cargo and perf in the sdk.

BUG=chromium:814480
TEST=sudo emerge perf

Change-Id: I3489fbdaa964a7b27527f06ddea7a7d0a2068c8b
Signed-off-by: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1135973
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>

[modify] https://crrev.com/9fd67b584922ea887c35283ec0bf1b520fb612d1/dev-util/perf/perf-4.14.ebuild
[rename] https://crrev.com/9fd67b584922ea887c35283ec0bf1b520fb612d1/dev-util/perf/perf-4.14-r3.ebuild

Project Member

Comment 22 by bugdroid1@chromium.org, Jul 14

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/4be3a521c55eb6535d62a179fe2824eb10f4a142

commit 4be3a521c55eb6535d62a179fe2824eb10f4a142
Author: Chirantan Ekbote <chirantan@chromium.org>
Date: Sat Jul 14 00:28:50 2018

target-chromium-os-sdk: Depend on llvm-libunwind

The rust compiler links against this library.

BUG=chromium:814480
TEST=./update_chroot

Change-Id: Ie0acee39629af32ffb6527402fa81e90d549d6bc
Signed-off-by: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1135995
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>

[rename] https://crrev.com/4be3a521c55eb6535d62a179fe2824eb10f4a142/virtual/target-chromium-os-sdk/target-chromium-os-sdk-1-r117.ebuild
[modify] https://crrev.com/4be3a521c55eb6535d62a179fe2824eb10f4a142/virtual/target-chromium-os-sdk/target-chromium-os-sdk-1.ebuild

Cc: rrangel@chromium.org pmalani@chromium.org
Copying current sheriffs
why? this isn't an issue the sheriffs need track.
Cc: -bleung@chromium.org -mka@chromium.org -rrangel@chromium.org -pmalani@chromium.org -jettrink@chromium.org
I was copying the sherrifs on all bugs I was copied on that seems somewhat relevant. I am removing all of the sherrifs in this post. Thanks!
Project Member

Comment 26 by bugdroid1@chromium.org, Jul 27

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/chromite/+/e694cadd137def79611fbfe8f21c7f178acddec2

commit e694cadd137def79611fbfe8f21c7f178acddec2
Author: Chirantan Ekbote <chirantan@chromium.org>
Date: Fri Jul 27 19:12:54 2018

cros_setup_toolchains: Add llvm-libunwind as an extra package

Add llvm-libunwind as an extra llvm package.  This is needed so that the
rust compiler can link against libunwind instead of libgcc_s.

BUG=chromium:814480
TEST=cros_setup_toolchains -t sdk
CQ-DEPEND=CL:1135995

Change-Id: I96b5834db0ba116fefb98eb1dc752479436a2a76
Signed-off-by: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1135971
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>

[modify] https://crrev.com/e694cadd137def79611fbfe8f21c7f178acddec2/scripts/cros_setup_toolchains.py

Project Member

Comment 27 by bugdroid1@chromium.org, Jul 28

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/e09dca8275532adb5015f6eacaa97ffc8880f2e7

commit e09dca8275532adb5015f6eacaa97ffc8880f2e7
Author: Chirantan Ekbote <chirantan@chromium.org>
Date: Sat Jul 28 05:33:12 2018

rust: Link against libunwind

Have the libunwind crate in the rust library link against libunwind
instead of libgcc_s.

BUG=chromium:814480
TEST=cros_setup_toolchains -t sdk
CQ-DEPEND=CL:1135971

Change-Id: Ieada8958743e33b320586db015650e54741a0fcc
Signed-off-by: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1135974
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>

[rename] https://crrev.com/e09dca8275532adb5015f6eacaa97ffc8880f2e7/dev-lang/rust/rust-1.26.0-r5.ebuild
[add] https://crrev.com/e09dca8275532adb5015f6eacaa97ffc8880f2e7/dev-lang/rust/files/0007-link-against-libunwind.patch

Project Member

Comment 28 by bugdroid1@chromium.org, Jul 28

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/31bb9c35ea40d2b01ded3769eb70f89651e799aa

commit 31bb9c35ea40d2b01ded3769eb70f89651e799aa
Author: Chirantan Ekbote <chirantan@chromium.org>
Date: Sat Jul 28 05:33:13 2018

eclass: Copy cargo.eclass from portage-stable

We already forked this eclass from upstream and we need to make more
changes to it so first copy it into chromiumos-overlay.

BUG=chromium:814480
TEST=emerge-eve crosvm

Change-Id: I98512d19a3921d77643afc2805fce96f4094f7e9
Signed-off-by: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1135975
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>

[add] https://crrev.com/31bb9c35ea40d2b01ded3769eb70f89651e799aa/eclass/cargo.eclass

Project Member

Comment 29 by bugdroid1@chromium.org, Jul 28

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/c684d2b8f2b436e3f8fa9a82afe35f535bbb4332

commit c684d2b8f2b436e3f8fa9a82afe35f535bbb4332
Author: Chirantan Ekbote <chirantan@chromium.org>
Date: Sat Jul 28 05:33:13 2018

cargo.eclass: Depend on llvm-libunwind

Add a dependency on llvm-libunwind for all rust packages.

BUG=chromium:814480
TEST=emerge-eve crosvm and ldd crosvm to see that it links against
l    ibunwind instead of libgcc_s

Change-Id: Ie12859bcefb9148eb35a12f85ab27644917cee9a
Signed-off-by: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1135976
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>

[modify] https://crrev.com/c684d2b8f2b436e3f8fa9a82afe35f535bbb4332/eclass/cargo.eclass

Project Member

Comment 30 by bugdroid1@chromium.org, Jul 28

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/066c672995800e1792a72dc35b63c5896b8318a6

commit 066c672995800e1792a72dc35b63c5896b8318a6
Author: Chirantan Ekbote <chirantan@chromium.org>
Date: Sat Jul 28 05:33:14 2018

cargo: Copy from portage-stable

Since we are removing the cargo eclass from portage-stable we need to
move the cargo ebuild into chromiumos-overlay as well.

BUG=chromium:814480
TEST=sudo emerge cargo

Change-Id: I8e32863213f0d72d741ecd009b64d8d29dbe00f3
Signed-off-by: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1135977
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>

[add] https://crrev.com/066c672995800e1792a72dc35b63c5896b8318a6/dev-util/cargo/Manifest
[add] https://crrev.com/066c672995800e1792a72dc35b63c5896b8318a6/dev-util/cargo/cargo-0.26.0.ebuild

Project Member

Comment 31 by bugdroid1@chromium.org, Jul 28

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/6c1c4a5360e6a3a124cc64ebdc22943fbeb8211a

commit 6c1c4a5360e6a3a124cc64ebdc22943fbeb8211a
Author: Chirantan Ekbote <chirantan@chromium.org>
Date: Sat Jul 28 05:33:15 2018

cargo: Bump revision number

Bump the revision number of the cargo ebuild so that it will pick up the
changes to the eclass and link against libunwind instead of libgcc_s.

BUG=chromium:814480
TEST=sudo emerge cargo

Change-Id: I3b1724f2543207864f5e99377e6acd4367b8abe7
Signed-off-by: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1135978
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>

[add] https://crrev.com/6c1c4a5360e6a3a124cc64ebdc22943fbeb8211a/dev-util/cargo/cargo-0.26.0-r1.ebuild

Project Member

Comment 32 by bugdroid1@chromium.org, Jul 29

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/c45a9fc5b273bd8e89f0a3325a026cb5e6d78b6d

commit c45a9fc5b273bd8e89f0a3325a026cb5e6d78b6d
Author: Manoj Gupta <manojgupta@google.com>
Date: Sun Jul 29 00:13:02 2018

Revert "rust: Link against libunwind"

This reverts commit e09dca8275532adb5015f6eacaa97ffc8880f2e7.
Reason for revert: Breaks SDK builder.

https://cros-goldeneye.corp.google.com/chromeos/healthmonitoring/\
buildDetails?buildbucketId=8939769092986804752
This CL should have waited for SDK builder to upload prebuilts
before landing.

Revert CL description.
> rust: Link against libunwind

> Have the libunwind crate in the rust library link against libunwind
> instead of libgcc_s.

> BUG=chromium:814480
> TEST=cros_setup_toolchains -t sdk
> CQ-DEPEND=CL:1135971

BUG=chromium:814480

Change-Id: I65dc2cf55ae12134e0da19d6b138f30db9d3a6b9
Reviewed-on: https://chromium-review.googlesource.com/1154428
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>
Commit-Queue: Manoj Gupta <manojgupta@chromium.org>
Tested-by: Manoj Gupta <manojgupta@chromium.org>

[rename] https://crrev.com/c45a9fc5b273bd8e89f0a3325a026cb5e6d78b6d/dev-lang/rust/rust-1.26.0-r4.ebuild
[delete] https://crrev.com/87831af6c132335e1d53a443e92a4ca1cafefdc7/dev-lang/rust/files/0007-link-against-libunwind.patch

Project Member

Comment 33 by bugdroid1@chromium.org, Jul 31

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/chromite/+/2c3d9c837512db5893d3b41e24a30110b70c9374

commit 2c3d9c837512db5893d3b41e24a30110b70c9374
Author: Manoj Gupta <manojgupta@google.com>
Date: Tue Jul 31 06:08:20 2018

cros_setup_toolchains: Enable llvm-libunwind in cross-* pkgs.

SDK builder has uploaded prebuilts with llvm-libunwind pkgs.
So remove the code disabling it.

BUG=chromium:814480
TEST=pre-cq passes.

Change-Id: I83d18d1ea2a8ef64c59dd92d7c1e5cbfd10a67c3
Reviewed-on: https://chromium-review.googlesource.com/1152235
Commit-Ready: Manoj Gupta <manojgupta@chromium.org>
Tested-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Chirantan Ekbote <chirantan@chromium.org>

[modify] https://crrev.com/2c3d9c837512db5893d3b41e24a30110b70c9374/scripts/cros_setup_toolchains.py

Project Member

Comment 34 by bugdroid1@chromium.org, Aug 1

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/portage-stable/+/b126940c885d7d84c60f67e2c6ea29afd0e7075d

commit b126940c885d7d84c60f67e2c6ea29afd0e7075d
Author: Chirantan Ekbote <chirantan@chromium.org>
Date: Wed Aug 01 03:35:33 2018

cargo: Remove

Remove the cargo ebuild since it has moved to chromiumos-overlay.

BUG=chromium:814480
TEST=sudo emerge cargo
CQ-DEPEND=CL:1135977

Change-Id: Ia8cd7d30f5ca85212a711b50b54c087a9221828d
Signed-off-by: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1135984
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>

[delete] https://crrev.com/739df01e17330e95bc3753e66dffcf8bb5c781b7/dev-util/cargo/Manifest
[delete] https://crrev.com/739df01e17330e95bc3753e66dffcf8bb5c781b7/dev-util/cargo/cargo-0.26.0.ebuild

Project Member

Comment 35 by bugdroid1@chromium.org, Aug 1

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/overlays/portage-stable/+/bcd5529ec9017d711d248441dc1d71b6301b87e4

commit bcd5529ec9017d711d248441dc1d71b6301b87e4
Author: Chirantan Ekbote <chirantan@chromium.org>
Date: Wed Aug 01 03:35:34 2018

cargo.eclass: Remove

Delete the cargo eclass since it has moved to chromiumos-overlay.

BUG=chromium:814480
TEST=emerge-eve crosvm
CQ-DEPEND=CL:1135975

Change-Id: I796e929882f30729a27ee8461cbe7423546695d1
Signed-off-by: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1135985
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>

[delete] https://crrev.com/b126940c885d7d84c60f67e2c6ea29afd0e7075d/eclass/cargo.eclass

Blockedon: 868726
Owner: ----
Status: Available (was: Started)
All we need to get this to work is to have fine-grained control over how rustc builds the command line it passes to the linker (see issue 868726).
Project Member

Comment 38 by bugdroid1@chromium.org, Aug 8

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/e2e911473fc867348e5591d24e2c5f840507a050

commit e2e911473fc867348e5591d24e2c5f840507a050
Author: Chirantan Ekbote <chirantan@chromium.org>
Date: Wed Aug 08 20:45:40 2018

platform_ToolchainOptions: Add 9s to whitelist

/usr/bin/9s is a new rust binary.  Add it to the libgcc_s whitelist.

BUG=chromium:814480
TEST=Run the test

Change-Id: I278fc4703f4f349fcbc401647fa1be4b392cf699
Signed-off-by: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1166446
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>

[modify] https://crrev.com/e2e911473fc867348e5591d24e2c5f840507a050/client/site_tests/platform_ToolchainOptions/libgcc_whitelist

Sign in to add a comment