Commit 875b6f2a authored by slan's avatar slan Committed by Commit bot

[GN][Chromecast] Add "-Wl,-rpath=\$ORIGIN" to executable and shlib defaults.

Chromecast executables depend on several shared libraries in $ORIGIN for
platform and OEM abstraction. The rpath for executables should be
updated so that these libraries can be found at runtime. This logic is
added here, instead of //build/config/gcc:executable_ldconfig, to keep
Chromecast-specific configs as concentrated as possible.

A note about security concerns: Chrome only enables this by default for
component and sanitizer builds, never shipped builds. This is to protect
users from arbitrary binaries being run in the shared lib directory.
Chromecast does not share these concerns, as it only runs trusted web
applications in practice.

BUG=516899

Review URL: https://codereview.chromium.org/1639343002

Cr-Commit-Position: refs/heads/master@{#371886}
parent d6621e42
......@@ -19,7 +19,19 @@ config("static_config") {
]
}
config("ldconfig") {
visibility = [ ":*" ]
# Chromecast executables depend on several shared libraries in $ORIGIN. Add
# $ORIGIN to the rpath of these executables. This is not inherited by default
# when depending on these targets for security reasons (see comments in
# //build/config/gcc/BUILD.gn)
configs = [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
}
config("executable_config") {
configs = [ ":ldconfig" ]
if (current_cpu == "arm") {
ldflags = [
# Export stdlibc++ and libgcc symbols to force shlibs to refer to these
......@@ -40,12 +52,13 @@ config("executable_config") {
# Despite including libstdc++/libgcc archives, we still need to specify
# static linking for them in order to prevent the executable from having a
# dynamic dependency on them.
configs = [ ":static_config" ]
configs += [ ":static_config" ]
}
}
config("shared_library_config") {
configs = [ ":ldconfig" ]
if (current_cpu == "arm") {
configs = [ ":static_config" ]
configs += [ ":static_config" ]
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment