Skip to content

Commit

Permalink
[rust] Export cxx.cc symbols
Browse files Browse the repository at this point in the history
This is a version of
dtolnay/cxx#1025
backported to the version of cxx which we currently use,
plus associated GN changes to trigger that behavior.

Purpose of this change:
The Rust cxx interop tool produces both Rust and C++ side code for its
bindings. It also has fixed C++ code for some of its interop types (e.g.
the C++ representation of a Rust string). In most cases, all of this
ends up in the same binary, but in debug component builds a test
executable may have Rust code which needs to use thse symbols from (for
instance) libbase.so. We already previously exported the symbols for
dynamically generated bindings code; we now export the symbols for the
fixed C++ code too.

The patch within this change should be removed if/when
dtolnay/cxx#1025
is accepted upstream and we have rolled cxx to include it.

Bug: 1287545
Change-Id: I6a0f76fcf6afb36718d5e939c797e7988826bad1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3531194
Reviewed-by: danakj <danakj@chromium.org>
Commit-Queue: Adrian Taylor <adetaylor@chromium.org>
Cr-Commit-Position: refs/heads/main@{#982195}
  • Loading branch information
adetaylor authored and Chromium LUCI CQ committed Mar 17, 2022
1 parent 59a6ff5 commit 3b659d0
Show file tree
Hide file tree
Showing 3 changed files with 857 additions and 131 deletions.
2 changes: 2 additions & 0 deletions build/rust/BUILD.gn
Expand Up @@ -28,6 +28,8 @@ static_library("cxx_cppdeps") {
"//third_party/rust/cxx/v1/crate/src/cxx.cc",
]

defines = [ "CXX_RS_EXPORT=__attribute__((visibility(\"default\")))" ]

# Depending on the C++ bindings side of cxx then requires also depending
# on the Rust bindings, since one calls the other. And the Rust bindings
# require the Rust standard library.
Expand Down

0 comments on commit 3b659d0

Please sign in to comment.