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

Issue 862831 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jul 18
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Bug
Build-Toolchain



Sign in to add a comment

nm: ./libmojo_core.so: unknown type [0x13] section `.relr.dyn'

Project Member Reported by michae...@chromium.org, Jul 11

Issue description

Running `ninja` in SimpleChrome results in this message. The build still seems to succeed.

(sdk coral R69-10841.0.0) michaelpg@michaelpg ~/dev/c/tot/src $ ninja -C out_coral/Release -j 99 -l 40 chrome chrome_sandbox nacl_helper
ninja: Entering directory `out_coral/Release'
[9011/44491] SOLINK ./libmojo_core.so
nm: ./libmojo_core.so: unknown type [0x13] section `.relr.dyn'

From a verbose run:

[208/23984] python "../../build/toolchain/gcc_solink_wrapper.py" --readelf="readelf" --nm="nm" --sofile="./libmojo_core.so" --tocfile="./libmojo_core.so.TOC" --output="./libmojo_core.so"  -- x86_64-cros-linux-gnu-clang++ -B/usr/local/google/home/michaelpg/dev/c/tot/.cros_cache/chrome-sdk/tarballs/coral+10861.0.0+target_toolchain/usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.27.0-gold -Wno-unknown-warning-option -shared -Wl,--fatal-warnings -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--as-needed -fuse-ld=gold -B../../third_party/binutils/Linux_x64/Release/bin -Wl,--threads -Wl,--thread-count=4 -Wl,--icf=all -m64 -Wl,-O2 -Wl,--gc-sections -Wl,--gdb-index --sysroot=../../../.cros_cache/chrome-sdk/tarballs/coral+10861.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz -L../../../.cros_cache/chrome-sdk/tarballs/coral+10861.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz/lib64 -Wl,-rpath-link=../../../.cros_cache/chrome-sdk/tarballs/coral+10861.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz/lib64 -L../../../.cros_cache/chrome-sdk/tarballs/coral+10861.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz/usr/lib64 -Wl,-rpath-link=../../../.cros_cache/chrome-sdk/tarballs/coral+10861.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz/usr/lib64 -L../../../.cros_cache/chrome-sdk/tarballs/coral+10861.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz/usr/local/lib64 -Wl,-rpath-link=../../../.cros_cache/chrome-sdk/tarballs/coral+10861.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz/usr/local/lib64 -L../../../.cros_cache/chrome-sdk/tarballs/coral+10861.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz/lib -Wl,-rpath-link=../../../.cros_cache/chrome-sdk/tarballs/coral+10861.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz/lib -L../../../.cros_cache/chrome-sdk/tarballs/coral+10861.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz/usr/lib -Wl,-rpath-link=../../../.cros_cache/chrome-sdk/tarballs/coral+10861.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz/usr/lib -L../../../.cros_cache/chrome-sdk/tarballs/coral+10861.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz/usr/local/lib -Wl,-rpath-link=../../../.cros_cache/chrome-sdk/tarballs/coral+10861.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz/usr/local/lib -Wl,--version-script=../../mojo/core/export_only_thunks_api.lst -L/usr/local/google/home/michaelpg/dev/c/tot/.cros_cache/chrome-sdk/tarballs/coral+10861.0.0+sysroot_chromeos-base_chromeos-chrome.tar.xz/usr/lib64 -Wl,-O1 -Wl,-O2 -Wl,--as-needed -stdlib=libc++ -o "./libmojo_core.so" -Wl,-soname="libmojo_core.so" @"./libmojo_core.so.rsp"
nm: ./libmojo_core.so: unknown type [0x13] section `.relr.dyn'

"which nm" outputs "/usr/bin/nm".

$ /usr/bin/nm --version
GNU nm (GNU Binutils for Debian) 2.30
Copyright (C) 2018 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.


Running "nm out_coral/Release/libmojo_core.so" outputs the same "unknown type" error, followed by the symbols.

I can't find any other "nm" in the toolchain.
 
Cc: steve...@chromium.org
I think this was resolved on our side with newer binutils for the new relocs

the question for simple chrome is whether we're setting NM correctly when running GN and whether this helper Python script is respecting that.
Cc: dpranke@chromium.org
I have no idea what nm even is.

The chromeos-chrome ebuild sets GN args in set_build_args(). Simple Chrome uses the exported GN_ARGS env var from the downloaded SDK. 

I think that the SimpleChrome build should be using x86_64-cros-linux-gnu-nm i.e. provided by CroS toolchain instead of host nm for ChromeOS builds.
Maybe this is a regression in Chromium build system?
More details: relr is a new section type used for reducing binary size (used in Chrome OS and Android, see go/smallpie). Most likely chromium's bundled toolchain doesn't understand it so whichever script calls nm, must be updated to use CroS nm.
Cc: roc...@chromium.org
Components: Infra>Client>ChromeOS>Build
looks like there's a cros_target_nm in the GN side that we need to set in the chromeos-chrome ebuild like we do with the other cros_target_xxx settings
Labels: Hotlist-CrOS-Gardener
Status: Available (was: Untriaged)
Owner: manojgupta@chromium.org
Project Member

Comment 10 by bugdroid1@chromium.org, Jul 17

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

commit 9e945c84d2bebbeb4d2db11da9c193fbada97dc6
Author: Manoj Gupta <manojgupta@google.com>
Date: Tue Jul 17 09:26:24 2018

cros_chrome_sdk: Use cros nm for target builds.

Use cros nm instead of Chrome's bundled nm for target build.
But keep using bundled nm for host builds.

BUG= chromium:862831 
TEST=Chrome builds.

Change-Id: I640a21dc4aede6d108b627aa8dea0ddef01a4cde
Reviewed-on: https://chromium-review.googlesource.com/1139040
Commit-Ready: Manoj Gupta <manojgupta@chromium.org>
Tested-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>

[modify] https://crrev.com/9e945c84d2bebbeb4d2db11da9c193fbada97dc6/cli/cros/cros_chrome_sdk.py
[modify] https://crrev.com/9e945c84d2bebbeb4d2db11da9c193fbada97dc6/cli/cros/cros_chrome_sdk_unittest.py

Project Member

Comment 11 by bugdroid1@chromium.org, Jul 17

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

commit 895cefd1e5b7f10fbf195c5dcdf22ca94481847d
Author: Manoj Gupta <manojgupta@google.com>
Date: Tue Jul 17 16:08:09 2018

chromeos-chrome: Use cros nm instead of Chrome's bundled nm.

BUG= chromium:862831 
TEST=Chrome builds.

Change-Id: I68dafa91087f135597aceff018c3b94d0e910c7d
Reviewed-on: https://chromium-review.googlesource.com/1138990
Commit-Ready: Manoj Gupta <manojgupta@chromium.org>
Tested-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>

[modify] https://crrev.com/895cefd1e5b7f10fbf195c5dcdf22ca94481847d/chromeos-base/chromeos-chrome/chromeos-chrome-9999.ebuild

Status: Fixed (was: Available)
Marking as fixed, please re-open if this error is seen again.

Sign in to add a comment