OSDN Git Service

Add dummy key methods for UBSan RTTI.
authorNicolas Capens <capn@google.com>
Tue, 7 Feb 2017 18:44:24 +0000 (13:44 -0500)
committerNicolas Capens <capn@google.com>
Tue, 7 Feb 2017 20:02:22 +0000 (20:02 +0000)
commit8560e6877b10b9f0fea712cb6ef52dcc3fc69747
treef656ac4bafd4db06d6162fe688e3d9d86a057d1a
parentf8faed6dd2b2389bef3b9aae0f5ce9e8fcf950fa
Add dummy key methods for UBSan RTTI.

Chromium UBSan builds require RTTI, for which GCC/Clang requires each
class' first non-inline virtual method (the "key method") to have a known
definition so that its address can be used as a unique type identifier:
https://gcc.gnu.org/onlinedocs/gcc/Vague-Linkage.html

libEGL and libGLESv2 each use objects who's full definition only exists
within one or the other. Methods for which the definition is unknown can
still be called if they are virtual, because the compiler/linker only needs
to know the vtable entry offset. But because of the GCC/Clang requirement
of having the first non-inline virtual method be fully defined, we need to
add dummy virtual methods and their definitions.

Bug swiftshader:31

Change-Id: Ib146cac811388086b29dbb099266c43795d6ed31
Reviewed-on: https://swiftshader-review.googlesource.com/8708
Reviewed-by: Alexis Hétu <sugoi@google.com>
Tested-by: Nicolas Capens <capn@google.com>
src/Main/FrameBuffer.hpp
src/OpenGL/common/Image.hpp
src/OpenGL/libEGL/BUILD.gn
src/OpenGL/libEGL/Display.h
src/OpenGL/libEGL/EGLSurface.h
src/Renderer/Surface.hpp