/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

{
global:
	# OpenGL ES 1.1 API
	glActiveTexture;
	glAlphaFunc;
	glAlphaFuncx;
	glAlphaFuncxOES;
	glBindBuffer;
	glBindFramebufferOES;
	glBindRenderbufferOES;
	glBindTexture;
	glBindVertexArrayOES;
	glBlendEquationOES;
	glBlendEquationSeparateOES;
	glBlendFunc;
	glBlendFuncSeparateOES;
	glBufferData;
	glBufferSubData;
	glCheckFramebufferStatusOES;
	glClear;
	glClearColor;
	glClearColorx;
	glClearColorxOES;
	glClearDepthf;
	glClearDepthfOES;
	glClearDepthx;
	glClearDepthxOES;
	glClearStencil;
	glClientActiveTexture;
	glClipPlanef;
	glClipPlanefIMG;
	glClipPlanefOES;
	glClipPlanex;
	glClipPlanexIMG;
	glClipPlanexOES;
	glColor4f;
	glColor4ub;
	glColor4x;
	glColor4xOES;
	glColorMask;
	glColorPointer;
	glCompressedTexImage2D;
	glCompressedTexSubImage2D;
	glCopyTexImage2D;
	glCopyTexSubImage2D;
	glCullFace;
	glCurrentPaletteMatrixOES;
	glDeleteBuffers;
	glDeleteFencesNV;
	glDeleteFramebuffersOES;
	glDeleteRenderbuffersOES;
	glDeleteTextures;
	glDeleteVertexArraysOES;
	glDepthFunc;
	glDepthMask;
	glDepthRangef;
	glDepthRangefOES;
	glDepthRangex;
	glDepthRangexOES;
	glDisable;
	glDisableClientState;
	glDisableDriverControlQCOM;
	glDiscardFramebufferEXT;
	glDrawArrays;
	glDrawElements;
	glDrawTexfOES;
	glDrawTexfvOES;
	glDrawTexiOES;
	glDrawTexivOES;
	glDrawTexsOES;
	glDrawTexsvOES;
	glDrawTexxOES;
	glDrawTexxvOES;
	glEGLImageTargetRenderbufferStorageOES;
	glEGLImageTargetTexture2DOES;
	glEnable;
	glEnableClientState;
	glEnableDriverControlQCOM;
	glEndTilingQCOM;
	glExtGetBufferPointervQCOM;
	glExtGetBuffersQCOM;
	glExtGetFramebuffersQCOM;
	glExtGetProgramBinarySourceQCOM;
	glExtGetProgramsQCOM;
	glExtGetRenderbuffersQCOM;
	glExtGetShadersQCOM;
	glExtGetTexLevelParameterivQCOM;
	glExtGetTexSubImageQCOM;
	glExtGetTexturesQCOM;
	glExtIsProgramBinaryQCOM;
	glExtTexObjectStateOverrideiQCOM;
	glFinish;
	glFinishFenceNV;
	glFinishRoundTrip;
	glFlush;
	glFogf;
	glFogfv;
	glFogx;
	glFogxOES;
	glFogxv;
	glFogxvOES;
	glFramebufferRenderbufferOES;
	glFramebufferTexture2DMultisampleIMG;
	glFramebufferTexture2DOES;
	glFrontFace;
	glFrustumf;
	glFrustumfOES;
	glFrustumx;
	glFrustumxOES;
	glGenBuffers;
	glGenerateMipmapOES;
	glGenFencesNV;
	glGenFramebuffersOES;
	glGenRenderbuffersOES;
	glGenTextures;
	glGenVertexArraysOES;
	glGetBooleanv;
	glGetBufferParameteriv;
	glGetBufferPointervOES;
	glGetClipPlanef;
	glGetClipPlanefOES;
	glGetClipPlanex;
	glGetClipPlanexOES;
	glGetCompressedTextureFormats;
	glGetDriverControlsQCOM;
	glGetDriverControlStringQCOM;
	glGetError;
	glGetFenceivNV;
	glGetFixedv;
	glGetFixedvOES;
	glGetFloatv;
	glGetFramebufferAttachmentParameterivOES;
	glGetIntegerv;
	glGetLightfv;
	glGetLightxv;
	glGetLightxvOES;
	glGetMaterialfv;
	glGetMaterialxv;
	glGetMaterialxvOES;
	glGetPointerv;
	glGetRenderbufferParameterivOES;
	glGetString;
	glGetTexEnvfv;
	glGetTexEnviv;
	glGetTexEnvxv;
	glGetTexEnvxvOES;
	glGetTexGenfvOES;
	glGetTexGenivOES;
	glGetTexGenxvOES;
	glGetTexParameterfv;
	glGetTexParameteriv;
	glGetTexParameterxv;
	glGetTexParameterxvOES;
	glHint;
	glIsBuffer;
	glIsEnabled;
	glIsFenceNV;
	glIsFramebufferOES;
	glIsRenderbufferOES;
	glIsTexture;
	glIsVertexArrayOES;
	glLightf;
	glLightfv;
	glLightModelf;
	glLightModelfv;
	glLightModelx;
	glLightModelxOES;
	glLightModelxv;
	glLightModelxvOES;
	glLightx;
	glLightxOES;
	glLightxv;
	glLightxvOES;
	glLineWidth;
	glLineWidthx;
	glLineWidthxOES;
	glLoadIdentity;
	glLoadMatrixf;
	glLoadMatrixx;
	glLoadMatrixxOES;
	glLoadPaletteFromModelViewMatrixOES;
	glLogicOp;
	glMapBufferOES;
	glMaterialf;
	glMaterialfv;
	glMaterialx;
	glMaterialxOES;
	glMaterialxv;
	glMaterialxvOES;
	glMatrixIndexPointerOES;
	glMatrixMode;
	glMultiDrawArraysEXT;
	glMultiDrawArraysSUN;
	glMultiDrawElementsEXT;
	glMultiDrawElementsSUN;
	glMultiTexCoord4f;
	glMultiTexCoord4x;
	glMultiTexCoord4xOES;
	glMultMatrixf;
	glMultMatrixx;
	glMultMatrixxOES;
	glNormal3f;
	glNormal3x;
	glNormal3xOES;
	glNormalPointer;
	glOrthof;
	glOrthofOES;
	glOrthox;
	glOrthoxOES;
	glPixelStorei;
	glPointParameterf;
	glPointParameterfv;
	glPointParameterx;
	glPointParameterxOES;
	glPointParameterxv;
	glPointParameterxvOES;
	glPointSize;
	glPointSizePointerOES;
	glPointSizex;
	glPointSizexOES;
	glPolygonOffset;
	glPolygonOffsetx;
	glPolygonOffsetxOES;
	glPopMatrix;
	glPushMatrix;
	glQueryMatrixxOES;
	glReadPixels;
	glRenderbufferStorageMultisampleIMG;
	glRenderbufferStorageOES;
	glRotatef;
	glRotatex;
	glRotatexOES;
	glSampleCoverage;
	glSampleCoveragex;
	glSampleCoveragexOES;
	glScalef;
	glScalex;
	glScalexOES;
	glScissor;
	glSetFenceNV;
	glShadeModel;
	glStartTilingQCOM;
	glStencilFunc;
	glStencilMask;
	glStencilOp;
	glTestFenceNV;
	glTexCoordPointer;
	glTexEnvf;
	glTexEnvfv;
	glTexEnvi;
	glTexEnviv;
	glTexEnvx;
	glTexEnvxOES;
	glTexEnvxv;
	glTexEnvxvOES;
	glTexGenfOES;
	glTexGenfvOES;
	glTexGeniOES;
	glTexGenivOES;
	glTexGenxOES;
	glTexGenxvOES;
	glTexImage2D;
	glTexParameterf;
	glTexParameterfv;
	glTexParameteri;
	glTexParameteriv;
	glTexParameterx;
	glTexParameterxOES;
	glTexParameterxv;
	glTexParameterxvOES;
	glTexSubImage2D;
	glTranslatef;
	glTranslatex;
	glTranslatexOES;
	glUnmapBufferOES;
	glVertexPointer;
	glViewport;
	glWeightPointerOES;

	# Type-strings and type-infos required by sanitizers
	_ZTS*;
	_ZTI*;

local:
	*;
};
