Mark rs functions extern C.
Certain functions like rsaFileA3DCreateFromFile, rsaFileA3DCreateFromAsset
amongst others were not marked extern "C". As a result their mangled
names were added to libRS.map. These are also dlsymed with their
unmangled names in rsDispatch.cpp (which would fail). Mark these extern
"C" to enable dlsym without mangled names.
Test: readelf -a --wide $OUT/obj/SHARED_LIBRARIES/libRS_intermediates/LINKED/libRS.so | less
shows no mangled symbols which are defined in its .dynsym table.
Test: make -j64 from ToT.
Test: sanity - booted up sailfish device.
Bug: 66971285
Change-Id: If514910ff037e634844ec82b7947dcc5de231bb5
diff --git a/rsApiStubs.cpp b/rsApiStubs.cpp
index 1737088..9b15fbf 100644
--- a/rsApiStubs.cpp
+++ b/rsApiStubs.cpp
@@ -717,8 +717,8 @@
// Graphics
/* The following API are deprecated. */
-RsContext rsContextCreateGL(RsDevice vdev, uint32_t version, uint32_t sdkVersion,
- RsSurfaceConfig sc, uint32_t dpi)
+extern "C" RsContext rsContextCreateGL(RsDevice vdev, uint32_t version, uint32_t sdkVersion,
+ RsSurfaceConfig sc, uint32_t dpi)
{
if (!globalObjAlive) {
ALOGE("rsContextCreateGL is not allowed during process teardown.");
@@ -860,52 +860,52 @@
RS_DISPATCH(ctxWrapper, ProgramBindSampler, pf, slot, s);
}
-RsObjectBase rsaFileA3DGetEntryByIndex(RsContext ctxWrapper, uint32_t index, RsFile file)
+extern "C" RsObjectBase rsaFileA3DGetEntryByIndex(RsContext ctxWrapper, uint32_t index, RsFile file)
{
return RS_DISPATCH(ctxWrapper, FileA3DGetEntryByIndex, index, file);
}
-RsFile rsaFileA3DCreateFromMemory(RsContext ctxWrapper, const void *data, uint32_t len)
+extern "C" RsFile rsaFileA3DCreateFromMemory(RsContext ctxWrapper, const void *data, uint32_t len)
{
return RS_DISPATCH(ctxWrapper, FileA3DCreateFromMemory, data, len);
}
-RsFile rsaFileA3DCreateFromAsset(RsContext ctxWrapper, void *_asset)
+extern "C" RsFile rsaFileA3DCreateFromAsset(RsContext ctxWrapper, void *_asset)
{
return RS_DISPATCH(ctxWrapper, FileA3DCreateFromAsset, _asset);
}
-RsFile rsaFileA3DCreateFromFile(RsContext ctxWrapper, const char *path)
+extern "C" RsFile rsaFileA3DCreateFromFile(RsContext ctxWrapper, const char *path)
{
return RS_DISPATCH(ctxWrapper, FileA3DCreateFromFile, path);
}
-void rsaFileA3DGetNumIndexEntries(RsContext ctxWrapper, int32_t *numEntries, RsFile file)
+extern "C" void rsaFileA3DGetNumIndexEntries(RsContext ctxWrapper, int32_t *numEntries, RsFile file)
{
RS_DISPATCH(ctxWrapper, FileA3DGetNumIndexEntries, numEntries, file);
}
-void rsaFileA3DGetIndexEntries(RsContext ctxWrapper, RsFileIndexEntry *fileEntries, uint32_t numEntries, RsFile file)
+extern "C" void rsaFileA3DGetIndexEntries(RsContext ctxWrapper, RsFileIndexEntry *fileEntries, uint32_t numEntries, RsFile file)
{
RS_DISPATCH(ctxWrapper, FileA3DGetIndexEntries, fileEntries, numEntries, file);
}
-void rsaMeshGetVertexBufferCount(RsContext ctxWrapper, RsMesh mv, int32_t *numVtx)
+extern "C" void rsaMeshGetVertexBufferCount(RsContext ctxWrapper, RsMesh mv, int32_t *numVtx)
{
RS_DISPATCH(ctxWrapper, MeshGetVertexBufferCount, mv, numVtx);
}
-void rsaMeshGetIndexCount(RsContext ctxWrapper, RsMesh mv, int32_t *numIdx)
+extern "C" void rsaMeshGetIndexCount(RsContext ctxWrapper, RsMesh mv, int32_t *numIdx)
{
RS_DISPATCH(ctxWrapper, MeshGetIndexCount, mv, numIdx);
}
-void rsaMeshGetVertices(RsContext ctxWrapper, RsMesh mv, RsAllocation *vtxData, uint32_t vtxDataCount)
+extern "C" void rsaMeshGetVertices(RsContext ctxWrapper, RsMesh mv, RsAllocation *vtxData, uint32_t vtxDataCount)
{
RS_DISPATCH(ctxWrapper, MeshGetVertices, mv, vtxData, vtxDataCount);
}
-void rsaMeshGetIndices(RsContext ctxWrapper, RsMesh mv, RsAllocation *va, uint32_t *primType, uint32_t idxDataCount)
+extern "C" void rsaMeshGetIndices(RsContext ctxWrapper, RsMesh mv, RsAllocation *va, uint32_t *primType, uint32_t idxDataCount)
{
RS_DISPATCH(ctxWrapper, MeshGetIndices, mv, va, primType, idxDataCount);
}