So for example, I have a slightly complicated case of library dependency in one of my projects:

```

              /--------------------------------\
              |                                |
      /----> GRPC <------------------\         |
      |                              |         |
      |        (c++)                 |         |        
      \-------   A  -------------->  B         |
                 |                 (rust)      |
                 |                             |
                 \------------------> c++  <---/ 

```

Rust by default will prefer to use static linkage. Executable A is also built to statically link lib(std)c++. So, to my understanding, there will be two copies of STL implementation in both A and B. This is exactly the pattern that <https://developer.android.com/ndk/guides/cpp-support#sr> suggests avoiding.

However, looking through the dynamic linkage table (via `nm -D`, for example) of B; I could see no exported lib(std)c++/grpc symbol. This is because rust marks them hidden by default.

* So, is it safe (or conforming the ODR) if all common symbols in B are hidden?