From 6aca5df1ca21a5c5fd5acc3245854add0dc9be46 Mon Sep 17 00:00:00 2001 From: MFDGaming Date: Thu, 8 Sep 2022 01:24:28 +0300 Subject: [PATCH] Upload source code --- .gitignore | 5 + CMakeLists.txt | 13 + LICENSE | 21 + Makefile | 12 + cmake/FindEGL.cmake | 7 + cmake/FindGLFW3.cmake | 7 + glad/CMakeLists.txt | 11 + glad/include/glad/glad.h | 1930 ++++++++++++++ glad/src/glad.c | 752 ++++++ libhybris/CMakeLists.txt | 37 + libhybris/LICENSE | 251 ++ libhybris/include/hybris/binding.h | 448 ++++ libhybris/include/hybris/dlfcn.h | 39 + libhybris/include/hybris/floating_point_abi.h | 42 + libhybris/include/hybris/hook.h | 41 + libhybris/include/hybris/jb/linker.h | 220 ++ libhybris/include/hybris/properties.h | 58 + libhybris/src/bionic/arch-x86/setjmp.S | 222 ++ libhybris/src/bionic/bionic_asm.h | 109 + libhybris/src/bionic/bionic_asm_x86.h | 51 + libhybris/src/bionic/setjmp_cookie.c | 60 + libhybris/src/cache.c | 278 ++ libhybris/src/ctype.c | 247 ++ libhybris/src/ctype.h | 44 + libhybris/src/dlfcn.c | 50 + libhybris/src/hooks.c | 878 ++++++ libhybris/src/hooks_darwin_pthread_once.cpp | 32 + libhybris/src/hooks_darwin_pthread_once.h | 12 + libhybris/src/hooks_dirent.c | 182 ++ libhybris/src/hooks_io.c | 691 +++++ libhybris/src/hooks_list.c | 23 + libhybris/src/hooks_list.h | 3 + libhybris/src/hooks_net.c | 144 + libhybris/src/hooks_net.h | 6 + libhybris/src/hooks_net_darwin.c | 366 +++ libhybris/src/hooks_pthread.c | 1181 ++++++++ libhybris/src/hooks_shm.c | 260 ++ libhybris/src/hooks_shm.h | 41 + libhybris/src/jb/arch/arm/begin.S | 45 + libhybris/src/jb/arch/x86/begin.S | 46 + libhybris/src/jb/debugger.c | 240 ++ libhybris/src/jb/dlfcn.c | 309 +++ libhybris/src/jb/linker.c | 2371 +++++++++++++++++ libhybris/src/jb/linker_debug.h | 151 ++ libhybris/src/jb/linker_environ.c | 204 ++ libhybris/src/jb/linker_environ.h | 54 + libhybris/src/jb/linker_format.c | 703 +++++ libhybris/src/jb/linker_format.h | 41 + libhybris/src/jb/rt.c | 36 + libhybris/src/logging.c | 133 + libhybris/src/logging.h | 165 ++ libhybris/src/properties.c | 224 ++ libhybris/src/properties_p.h | 26 + libhybris/src/strlcpy.c | 51 + libhybris/src/sysconf.c | 376 +++ libs/arm/libEGL.so | Bin 0 -> 6328 bytes libs/arm/libGLESv1_CM.so | Bin 0 -> 6328 bytes libs/arm/libOpenSLES.so | Bin 0 -> 6328 bytes libs/arm/libandroid.so | Bin 0 -> 6328 bytes libs/arm/libc.so | Bin 0 -> 678432 bytes libs/arm/liblog.so | Bin 0 -> 6328 bytes libs/arm/libm.so | Bin 0 -> 132824 bytes libs/arm/libstdc++.so | Bin 0 -> 21972 bytes libs/x86/libEGL.so | Bin 0 -> 5156 bytes libs/x86/libGLESv1_CM.so | Bin 0 -> 5156 bytes libs/x86/libOpenSLES.so | Bin 0 -> 5156 bytes libs/x86/libandroid.so | Bin 0 -> 5156 bytes libs/x86/libc.so | Bin 0 -> 1068921 bytes libs/x86/liblog.so | Bin 0 -> 5156 bytes libs/x86/libm.so | Bin 0 -> 542624 bytes libs/x86/libstdc++.so | Bin 0 -> 13404 bytes ninecraft/CMakeLists.txt | 21 + .../include/ninecraft/AppPlatform_linux.hpp | 86 + .../include/ninecraft/android_string.hpp | 7 + ninecraft/include/ninecraft/audio_engine.hpp | 20 + ninecraft/include/ninecraft/hooks.hpp | 7 + .../include/ninecraft/minecraft_keys.hpp | 33 + ninecraft/include/ninecraft/symbols.hpp | 612 +++++ ninecraft/include/ninecraft/textures.hpp | 17 + ninecraft/src/AppPlatform_linux.cpp | 323 +++ ninecraft/src/android_string.cpp | 18 + ninecraft/src/audio_engine.cpp | 123 + ninecraft/src/main.cpp | 551 ++++ ninecraft/src/textures.cpp | 81 + tools/extract.sh | 24 + 85 files changed, 15872 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 cmake/FindEGL.cmake create mode 100644 cmake/FindGLFW3.cmake create mode 100644 glad/CMakeLists.txt create mode 100644 glad/include/glad/glad.h create mode 100644 glad/src/glad.c create mode 100644 libhybris/CMakeLists.txt create mode 100644 libhybris/LICENSE create mode 100644 libhybris/include/hybris/binding.h create mode 100644 libhybris/include/hybris/dlfcn.h create mode 100644 libhybris/include/hybris/floating_point_abi.h create mode 100644 libhybris/include/hybris/hook.h create mode 100644 libhybris/include/hybris/jb/linker.h create mode 100644 libhybris/include/hybris/properties.h create mode 100644 libhybris/src/bionic/arch-x86/setjmp.S create mode 100644 libhybris/src/bionic/bionic_asm.h create mode 100644 libhybris/src/bionic/bionic_asm_x86.h create mode 100644 libhybris/src/bionic/setjmp_cookie.c create mode 100644 libhybris/src/cache.c create mode 100644 libhybris/src/ctype.c create mode 100644 libhybris/src/ctype.h create mode 100644 libhybris/src/dlfcn.c create mode 100644 libhybris/src/hooks.c create mode 100644 libhybris/src/hooks_darwin_pthread_once.cpp create mode 100644 libhybris/src/hooks_darwin_pthread_once.h create mode 100644 libhybris/src/hooks_dirent.c create mode 100644 libhybris/src/hooks_io.c create mode 100644 libhybris/src/hooks_list.c create mode 100644 libhybris/src/hooks_list.h create mode 100644 libhybris/src/hooks_net.c create mode 100644 libhybris/src/hooks_net.h create mode 100644 libhybris/src/hooks_net_darwin.c create mode 100644 libhybris/src/hooks_pthread.c create mode 100644 libhybris/src/hooks_shm.c create mode 100644 libhybris/src/hooks_shm.h create mode 100644 libhybris/src/jb/arch/arm/begin.S create mode 100644 libhybris/src/jb/arch/x86/begin.S create mode 100644 libhybris/src/jb/debugger.c create mode 100644 libhybris/src/jb/dlfcn.c create mode 100644 libhybris/src/jb/linker.c create mode 100644 libhybris/src/jb/linker_debug.h create mode 100644 libhybris/src/jb/linker_environ.c create mode 100644 libhybris/src/jb/linker_environ.h create mode 100644 libhybris/src/jb/linker_format.c create mode 100644 libhybris/src/jb/linker_format.h create mode 100644 libhybris/src/jb/rt.c create mode 100644 libhybris/src/logging.c create mode 100644 libhybris/src/logging.h create mode 100644 libhybris/src/properties.c create mode 100644 libhybris/src/properties_p.h create mode 100644 libhybris/src/strlcpy.c create mode 100644 libhybris/src/sysconf.c create mode 100755 libs/arm/libEGL.so create mode 100755 libs/arm/libGLESv1_CM.so create mode 100755 libs/arm/libOpenSLES.so create mode 100755 libs/arm/libandroid.so create mode 100755 libs/arm/libc.so create mode 100755 libs/arm/liblog.so create mode 100755 libs/arm/libm.so create mode 100755 libs/arm/libstdc++.so create mode 100755 libs/x86/libEGL.so create mode 100755 libs/x86/libGLESv1_CM.so create mode 100755 libs/x86/libOpenSLES.so create mode 100755 libs/x86/libandroid.so create mode 100644 libs/x86/libc.so create mode 100755 libs/x86/liblog.so create mode 100644 libs/x86/libm.so create mode 100644 libs/x86/libstdc++.so create mode 100644 ninecraft/CMakeLists.txt create mode 100644 ninecraft/include/ninecraft/AppPlatform_linux.hpp create mode 100644 ninecraft/include/ninecraft/android_string.hpp create mode 100644 ninecraft/include/ninecraft/audio_engine.hpp create mode 100644 ninecraft/include/ninecraft/hooks.hpp create mode 100644 ninecraft/include/ninecraft/minecraft_keys.hpp create mode 100644 ninecraft/include/ninecraft/symbols.hpp create mode 100644 ninecraft/include/ninecraft/textures.hpp create mode 100644 ninecraft/src/AppPlatform_linux.cpp create mode 100644 ninecraft/src/android_string.cpp create mode 100644 ninecraft/src/audio_engine.cpp create mode 100644 ninecraft/src/main.cpp create mode 100644 ninecraft/src/textures.cpp create mode 100755 tools/extract.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6ba128f --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +build/ +assets/ +libs/x86/libminecraftpe.so +libs/arm/libminecraftpe.so +.vscode/ \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..79ccd95 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required(VERSION 3.1) +project(mcpereborn) + +if(CMAKE_SYSTEM_PROCESSOR MATCHES "(arm)|(armhf)|(aarch64)|(arm64)") + set(IS_ARM_BUILD TRUE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mthumb") +else() + set(IS_ARM_BUILD FALSE) +endif() + +add_subdirectory(libhybris) +add_subdirectory(glad) +add_subdirectory(ninecraft) \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..2e6f566 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 MFDGaming + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..bef2e10 --- /dev/null +++ b/Makefile @@ -0,0 +1,12 @@ +.DEFAULT_GOAL := build + +BUILD_DIR ?= build/ + +.PHONY: build +build: clean + mkdir -p ${BUILD_DIR} + cd ${BUILD_DIR}; cmake ..; make + +.PHONY: clean +clean: + rm -rf $(BUILD_DIR) \ No newline at end of file diff --git a/cmake/FindEGL.cmake b/cmake/FindEGL.cmake new file mode 100644 index 0000000..f6d1cd6 --- /dev/null +++ b/cmake/FindEGL.cmake @@ -0,0 +1,7 @@ +find_path(EGL_INCLUDE_DIR NAMES EGL/egl.h) + +set(EGL_NAMES ${EGL_NAMES} egl EGL) +find_library(EGL_LIBRARY NAMES ${EGL_NAMES}) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(EGL DEFAULT_MSG EGL_INCLUDE_DIR EGL_LIBRARY) \ No newline at end of file diff --git a/cmake/FindGLFW3.cmake b/cmake/FindGLFW3.cmake new file mode 100644 index 0000000..cd42ae8 --- /dev/null +++ b/cmake/FindGLFW3.cmake @@ -0,0 +1,7 @@ +find_path(GLFW3_INCLUDE_DIR NAMES GLFW/glfw3.h) + +set(GLFW3_NAMES ${GLFW3_NAMES} glfw3 glfw) +find_library(GLFW3_LIBRARY NAMES ${GLFW3_NAMES}) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLFW3 DEFAULT_MSG GLFW3_INCLUDE_DIR GLFW3_LIBRARY) \ No newline at end of file diff --git a/glad/CMakeLists.txt b/glad/CMakeLists.txt new file mode 100644 index 0000000..8167752 --- /dev/null +++ b/glad/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required (VERSION 3.1) + +project(glad) + +set(GLAD_SOURCES src/glad.c) + +add_library(glad ${GLAD_SOURCES}) +target_include_directories(glad PUBLIC include/) +if (NOT ${IS_ARM_BUILD}) +set_target_properties(glad PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32") +endif() \ No newline at end of file diff --git a/glad/include/glad/glad.h b/glad/include/glad/glad.h new file mode 100644 index 0000000..8ede052 --- /dev/null +++ b/glad/include/glad/glad.h @@ -0,0 +1,1930 @@ + +#ifndef __glad_h_ + +#ifdef __gl_h_ +#error OpenGL header already included, remove this include, glad already provides it +#endif + +#define __glad_h_ +#define __gl_h_ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +struct gladGLversionStruct { + int major; + int minor; +}; + +extern struct gladGLversionStruct GLVersion; + +typedef void* (* GLADloadproc)(const char *name); + +#ifndef GLAPI +# if defined(GLAD_GLAPI_EXPORT) +# if defined(WIN32) || defined(__CYGWIN__) +# if defined(GLAD_GLAPI_EXPORT_BUILD) +# if defined(__GNUC__) +# define GLAPI __attribute__ ((dllexport)) extern +# else +# define GLAPI __declspec(dllexport) extern +# endif +# else +# if defined(__GNUC__) +# define GLAPI __attribute__ ((dllimport)) extern +# else +# define GLAPI __declspec(dllimport) extern +# endif +# endif +# elif defined(__GNUC__) && defined(GLAD_GLAPI_EXPORT_BUILD) +# define GLAPI __attribute__ ((visibility ("default"))) extern +# else +# define GLAPI extern +# endif +# else +# define GLAPI extern +# endif +#endif +GLAPI int gladLoadGLLoader(GLADloadproc); + +#include +#include +#ifndef GLEXT_64_TYPES_DEFINED +/* This code block is duplicated in glxext.h, so must be protected */ +#define GLEXT_64_TYPES_DEFINED +/* Define int32_t, int64_t, and uint64_t types for UST/MSC */ +/* (as used in the GL_EXT_timer_query extension). */ +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#include +#elif defined(__sun__) || defined(__digital__) +#include +#if defined(__STDC__) +#if defined(__arch64__) || defined(_LP64) +typedef long int int64_t; +typedef unsigned long int uint64_t; +#else +typedef long long int int64_t; +typedef unsigned long long int uint64_t; +#endif /* __arch64__ */ +#endif /* __STDC__ */ +#elif defined( __VMS ) || defined(__sgi) +#include +#elif defined(__SCO__) || defined(__USLC__) +#include +#elif defined(__UNIXOS2__) || defined(__SOL64__) +typedef long int int32_t; +typedef long long int int64_t; +typedef unsigned long long int uint64_t; +#elif defined(_WIN32) && defined(__GNUC__) +#include +#elif defined(_WIN32) +typedef __int32 int32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#else +/* Fallback if nothing above works */ +#include +#endif +#endif +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef void GLvoid; +typedef signed char GLbyte; +typedef short GLshort; +typedef int GLint; +typedef int GLclampx; +typedef unsigned char GLubyte; +typedef unsigned short GLushort; +typedef unsigned int GLuint; +typedef int GLsizei; +typedef float GLfloat; +typedef float GLclampf; +typedef double GLdouble; +typedef double GLclampd; +typedef void *GLeglImageOES; +typedef char GLchar; +typedef char GLcharARB; +#ifdef __APPLE__ +typedef void *GLhandleARB; +#else +typedef unsigned int GLhandleARB; +#endif +typedef unsigned short GLhalfARB; +typedef unsigned short GLhalf; +typedef GLint GLfixed; +typedef ptrdiff_t GLintptr; +typedef ptrdiff_t GLsizeiptr; +typedef int64_t GLint64; +typedef uint64_t GLuint64; +typedef ptrdiff_t GLintptrARB; +typedef ptrdiff_t GLsizeiptrARB; +typedef int64_t GLint64EXT; +typedef uint64_t GLuint64EXT; +typedef struct __GLsync *GLsync; +struct _cl_context; +struct _cl_event; +typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); +typedef unsigned short GLhalfNV; +typedef GLintptr GLvdpauSurfaceNV; +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_FALSE 0 +#define GL_TRUE 1 +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_NONE 0 +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_LEFT 0x0406 +#define GL_RIGHT 0x0407 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_RANGE 0x0B12 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_RANGE 0x0B22 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_POLYGON_MODE 0x0B40 +#define GL_POLYGON_SMOOTH 0x0B41 +#define GL_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_VIEWPORT 0x0BA2 +#define GL_DITHER 0x0BD0 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND 0x0BE2 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_READ_BUFFER 0x0C02 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_STEREO 0x0C33 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 +#define GL_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_1D 0x8068 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_DOUBLE 0x140A +#define GL_CLEAR 0x1500 +#define GL_AND 0x1501 +#define GL_AND_REVERSE 0x1502 +#define GL_COPY 0x1503 +#define GL_AND_INVERTED 0x1504 +#define GL_NOOP 0x1505 +#define GL_XOR 0x1506 +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_EQUIV 0x1509 +#define GL_INVERT 0x150A +#define GL_OR_REVERSE 0x150B +#define GL_COPY_INVERTED 0x150C +#define GL_OR_INVERTED 0x150D +#define GL_NAND 0x150E +#define GL_SET 0x150F +#define GL_TEXTURE 0x1702 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_STENCIL_INDEX 0x1901 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_POINT 0x1B00 +#define GL_LINE 0x1B01 +#define GL_FILL 0x1B02 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_REPEAT 0x2901 +#define GL_R3_G3_B2 0x2A10 +#define GL_RGB4 0x804F +#define GL_RGB5 0x8050 +#define GL_RGB8 0x8051 +#define GL_RGB10 0x8052 +#define GL_RGB12 0x8053 +#define GL_RGB16 0x8054 +#define GL_RGBA2 0x8055 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGBA8 0x8058 +#define GL_RGB10_A2 0x8059 +#define GL_RGBA12 0x805A +#define GL_RGBA16 0x805B +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_CURRENT_QUERY 0x8865 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_READ_ONLY 0x88B8 +#define GL_WRITE_ONLY 0x88B9 +#define GL_READ_WRITE 0x88BA +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_COPY 0x88E6 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_SAMPLES_PASSED 0x8914 +#define GL_SRC1_ALPHA 0x8589 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_SHADER_TYPE 0x8B4F +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_DELETE_STATUS 0x8B80 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_COMPRESSED_SRGB 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_CLIP_DISTANCE0 0x3000 +#define GL_CLIP_DISTANCE1 0x3001 +#define GL_CLIP_DISTANCE2 0x3002 +#define GL_CLIP_DISTANCE3 0x3003 +#define GL_CLIP_DISTANCE4 0x3004 +#define GL_CLIP_DISTANCE5 0x3005 +#define GL_CLIP_DISTANCE6 0x3006 +#define GL_CLIP_DISTANCE7 0x3007 +#define GL_MAX_CLIP_DISTANCES 0x0D32 +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_CONTEXT_FLAGS 0x821E +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 +#define GL_RGBA32F 0x8814 +#define GL_RGB32F 0x8815 +#define GL_RGBA16F 0x881A +#define GL_RGB16F 0x881B +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_FIXED_ONLY 0x891D +#define GL_MAX_VARYING_COMPONENTS 0x8B4B +#define GL_TEXTURE_1D_ARRAY 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_RGB9_E5 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_PRIMITIVES_GENERATED 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_RGBA32UI 0x8D70 +#define GL_RGB32UI 0x8D71 +#define GL_RGBA16UI 0x8D76 +#define GL_RGB16UI 0x8D77 +#define GL_RGBA8UI 0x8D7C +#define GL_RGB8UI 0x8D7D +#define GL_RGBA32I 0x8D82 +#define GL_RGB32I 0x8D83 +#define GL_RGBA16I 0x8D88 +#define GL_RGB16I 0x8D89 +#define GL_RGBA8I 0x8D8E +#define GL_RGB8I 0x8D8F +#define GL_RED_INTEGER 0x8D94 +#define GL_GREEN_INTEGER 0x8D95 +#define GL_BLUE_INTEGER 0x8D96 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_BGR_INTEGER 0x8D9A +#define GL_BGRA_INTEGER 0x8D9B +#define GL_SAMPLER_1D_ARRAY 0x8DC0 +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_INT_SAMPLER_1D 0x8DC9 +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_QUERY_WAIT 0x8E13 +#define GL_QUERY_NO_WAIT 0x8E14 +#define GL_QUERY_BY_REGION_WAIT 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 +#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 +#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 +#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_STENCIL_INDEX1 0x8D46 +#define GL_STENCIL_INDEX4 0x8D47 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_INDEX16 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_MAX_SAMPLES 0x8D57 +#define GL_INDEX 0x8222 +#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#define GL_HALF_FLOAT 0x140B +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_COMPRESSED_RED_RGTC1 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC +#define GL_COMPRESSED_RG_RGTC2 0x8DBD +#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE +#define GL_RG 0x8227 +#define GL_RG_INTEGER 0x8228 +#define GL_R8 0x8229 +#define GL_R16 0x822A +#define GL_RG8 0x822B +#define GL_RG16 0x822C +#define GL_R16F 0x822D +#define GL_R32F 0x822E +#define GL_RG16F 0x822F +#define GL_RG32F 0x8230 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#define GL_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#define GL_SAMPLER_BUFFER 0x8DC2 +#define GL_INT_SAMPLER_2D_RECT 0x8DCD +#define GL_INT_SAMPLER_BUFFER 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 +#define GL_TEXTURE_BUFFER 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D +#define GL_TEXTURE_RECTANGLE 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM 0x8F98 +#define GL_RG16_SNORM 0x8F99 +#define GL_RGB16_SNORM 0x8F9A +#define GL_RGBA16_SNORM 0x8F9B +#define GL_SIGNED_NORMALIZED 0x8F9C +#define GL_PRIMITIVE_RESTART 0x8F9D +#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 +#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 +#define GL_INVALID_INDEX 0xFFFFFFFF +#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 +#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 +#define GL_LINES_ADJACENCY 0x000A +#define GL_LINE_STRIP_ADJACENCY 0x000B +#define GL_TRIANGLES_ADJACENCY 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D +#define GL_PROGRAM_POINT_SIZE 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 +#define GL_GEOMETRY_SHADER 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_CONTEXT_PROFILE_MASK 0x9126 +#define GL_DEPTH_CLAMP 0x864F +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_PROVOKING_VERTEX 0x8E4F +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_OBJECT_TYPE 0x9112 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_UNSIGNALED 0x9118 +#define GL_SIGNALED 0x9119 +#define GL_ALREADY_SIGNALED 0x911A +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_CONDITION_SATISFIED 0x911C +#define GL_WAIT_FAILED 0x911D +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_INTEGER_SAMPLES 0x9110 +#ifndef GL_VERSION_1_0 +#define GL_VERSION_1_0 1 +GLAPI int GLAD_GL_VERSION_1_0; +typedef void (APIENTRYP PFNGLCULLFACEPROC)(GLenum); +GLAPI PFNGLCULLFACEPROC glad_glCullFace; +#define glCullFace glad_glCullFace +typedef void (APIENTRYP PFNGLFRONTFACEPROC)(GLenum); +GLAPI PFNGLFRONTFACEPROC glad_glFrontFace; +#define glFrontFace glad_glFrontFace +typedef void (APIENTRYP PFNGLHINTPROC)(GLenum, GLenum); +GLAPI PFNGLHINTPROC glad_glHint; +#define glHint glad_glHint +typedef void (APIENTRYP PFNGLLINEWIDTHPROC)(GLfloat); +GLAPI PFNGLLINEWIDTHPROC glad_glLineWidth; +#define glLineWidth glad_glLineWidth +typedef void (APIENTRYP PFNGLPOINTSIZEPROC)(GLfloat); +GLAPI PFNGLPOINTSIZEPROC glad_glPointSize; +#define glPointSize glad_glPointSize +typedef void (APIENTRYP PFNGLPOLYGONMODEPROC)(GLenum, GLenum); +GLAPI PFNGLPOLYGONMODEPROC glad_glPolygonMode; +#define glPolygonMode glad_glPolygonMode +typedef void (APIENTRYP PFNGLSCISSORPROC)(GLint, GLint, GLsizei, GLsizei); +GLAPI PFNGLSCISSORPROC glad_glScissor; +#define glScissor glad_glScissor +typedef void (APIENTRYP PFNGLTEXPARAMETERFPROC)(GLenum, GLenum, GLfloat); +GLAPI PFNGLTEXPARAMETERFPROC glad_glTexParameterf; +#define glTexParameterf glad_glTexParameterf +typedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC)(GLenum, GLenum, const GLfloat*); +GLAPI PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; +#define glTexParameterfv glad_glTexParameterfv +typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC)(GLenum, GLenum, GLint); +GLAPI PFNGLTEXPARAMETERIPROC glad_glTexParameteri; +#define glTexParameteri glad_glTexParameteri +typedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC)(GLenum, GLenum, const GLint*); +GLAPI PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; +#define glTexParameteriv glad_glTexParameteriv +typedef void (APIENTRYP PFNGLTEXIMAGE1DPROC)(GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, const void*); +GLAPI PFNGLTEXIMAGE1DPROC glad_glTexImage1D; +#define glTexImage1D glad_glTexImage1D +typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC)(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const void*); +GLAPI PFNGLTEXIMAGE2DPROC glad_glTexImage2D; +#define glTexImage2D glad_glTexImage2D +typedef void (APIENTRYP PFNGLDRAWBUFFERPROC)(GLenum); +GLAPI PFNGLDRAWBUFFERPROC glad_glDrawBuffer; +#define glDrawBuffer glad_glDrawBuffer +typedef void (APIENTRYP PFNGLCLEARPROC)(GLbitfield); +GLAPI PFNGLCLEARPROC glad_glClear; +#define glClear glad_glClear +typedef void (APIENTRYP PFNGLCLEARCOLORPROC)(GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI PFNGLCLEARCOLORPROC glad_glClearColor; +#define glClearColor glad_glClearColor +typedef void (APIENTRYP PFNGLCLEARSTENCILPROC)(GLint); +GLAPI PFNGLCLEARSTENCILPROC glad_glClearStencil; +#define glClearStencil glad_glClearStencil +typedef void (APIENTRYP PFNGLCLEARDEPTHPROC)(GLdouble); +GLAPI PFNGLCLEARDEPTHPROC glad_glClearDepth; +#define glClearDepth glad_glClearDepth +typedef void (APIENTRYP PFNGLSTENCILMASKPROC)(GLuint); +GLAPI PFNGLSTENCILMASKPROC glad_glStencilMask; +#define glStencilMask glad_glStencilMask +typedef void (APIENTRYP PFNGLCOLORMASKPROC)(GLboolean, GLboolean, GLboolean, GLboolean); +GLAPI PFNGLCOLORMASKPROC glad_glColorMask; +#define glColorMask glad_glColorMask +typedef void (APIENTRYP PFNGLDEPTHMASKPROC)(GLboolean); +GLAPI PFNGLDEPTHMASKPROC glad_glDepthMask; +#define glDepthMask glad_glDepthMask +typedef void (APIENTRYP PFNGLDISABLEPROC)(GLenum); +GLAPI PFNGLDISABLEPROC glad_glDisable; +#define glDisable glad_glDisable +typedef void (APIENTRYP PFNGLENABLEPROC)(GLenum); +GLAPI PFNGLENABLEPROC glad_glEnable; +#define glEnable glad_glEnable +typedef void (APIENTRYP PFNGLFINISHPROC)(); +GLAPI PFNGLFINISHPROC glad_glFinish; +#define glFinish glad_glFinish +typedef void (APIENTRYP PFNGLFLUSHPROC)(); +GLAPI PFNGLFLUSHPROC glad_glFlush; +#define glFlush glad_glFlush +typedef void (APIENTRYP PFNGLBLENDFUNCPROC)(GLenum, GLenum); +GLAPI PFNGLBLENDFUNCPROC glad_glBlendFunc; +#define glBlendFunc glad_glBlendFunc +typedef void (APIENTRYP PFNGLLOGICOPPROC)(GLenum); +GLAPI PFNGLLOGICOPPROC glad_glLogicOp; +#define glLogicOp glad_glLogicOp +typedef void (APIENTRYP PFNGLSTENCILFUNCPROC)(GLenum, GLint, GLuint); +GLAPI PFNGLSTENCILFUNCPROC glad_glStencilFunc; +#define glStencilFunc glad_glStencilFunc +typedef void (APIENTRYP PFNGLSTENCILOPPROC)(GLenum, GLenum, GLenum); +GLAPI PFNGLSTENCILOPPROC glad_glStencilOp; +#define glStencilOp glad_glStencilOp +typedef void (APIENTRYP PFNGLDEPTHFUNCPROC)(GLenum); +GLAPI PFNGLDEPTHFUNCPROC glad_glDepthFunc; +#define glDepthFunc glad_glDepthFunc +typedef void (APIENTRYP PFNGLPIXELSTOREFPROC)(GLenum, GLfloat); +GLAPI PFNGLPIXELSTOREFPROC glad_glPixelStoref; +#define glPixelStoref glad_glPixelStoref +typedef void (APIENTRYP PFNGLPIXELSTOREIPROC)(GLenum, GLint); +GLAPI PFNGLPIXELSTOREIPROC glad_glPixelStorei; +#define glPixelStorei glad_glPixelStorei +typedef void (APIENTRYP PFNGLREADBUFFERPROC)(GLenum); +GLAPI PFNGLREADBUFFERPROC glad_glReadBuffer; +#define glReadBuffer glad_glReadBuffer +typedef void (APIENTRYP PFNGLREADPIXELSPROC)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, void*); +GLAPI PFNGLREADPIXELSPROC glad_glReadPixels; +#define glReadPixels glad_glReadPixels +typedef void (APIENTRYP PFNGLGETBOOLEANVPROC)(GLenum, GLboolean*); +GLAPI PFNGLGETBOOLEANVPROC glad_glGetBooleanv; +#define glGetBooleanv glad_glGetBooleanv +typedef void (APIENTRYP PFNGLGETDOUBLEVPROC)(GLenum, GLdouble*); +GLAPI PFNGLGETDOUBLEVPROC glad_glGetDoublev; +#define glGetDoublev glad_glGetDoublev +typedef GLenum (APIENTRYP PFNGLGETERRORPROC)(); +GLAPI PFNGLGETERRORPROC glad_glGetError; +#define glGetError glad_glGetError +typedef void (APIENTRYP PFNGLGETFLOATVPROC)(GLenum, GLfloat*); +GLAPI PFNGLGETFLOATVPROC glad_glGetFloatv; +#define glGetFloatv glad_glGetFloatv +typedef void (APIENTRYP PFNGLGETINTEGERVPROC)(GLenum, GLint*); +GLAPI PFNGLGETINTEGERVPROC glad_glGetIntegerv; +#define glGetIntegerv glad_glGetIntegerv +typedef const GLubyte* (APIENTRYP PFNGLGETSTRINGPROC)(GLenum); +GLAPI PFNGLGETSTRINGPROC glad_glGetString; +#define glGetString glad_glGetString +typedef void (APIENTRYP PFNGLGETTEXIMAGEPROC)(GLenum, GLint, GLenum, GLenum, void*); +GLAPI PFNGLGETTEXIMAGEPROC glad_glGetTexImage; +#define glGetTexImage glad_glGetTexImage +typedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC)(GLenum, GLenum, GLfloat*); +GLAPI PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; +#define glGetTexParameterfv glad_glGetTexParameterfv +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC)(GLenum, GLenum, GLint*); +GLAPI PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; +#define glGetTexParameteriv glad_glGetTexParameteriv +typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum, GLint, GLenum, GLfloat*); +GLAPI PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv; +#define glGetTexLevelParameterfv glad_glGetTexLevelParameterfv +typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum, GLint, GLenum, GLint*); +GLAPI PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv; +#define glGetTexLevelParameteriv glad_glGetTexLevelParameteriv +typedef GLboolean (APIENTRYP PFNGLISENABLEDPROC)(GLenum); +GLAPI PFNGLISENABLEDPROC glad_glIsEnabled; +#define glIsEnabled glad_glIsEnabled +typedef void (APIENTRYP PFNGLDEPTHRANGEPROC)(GLdouble, GLdouble); +GLAPI PFNGLDEPTHRANGEPROC glad_glDepthRange; +#define glDepthRange glad_glDepthRange +typedef void (APIENTRYP PFNGLVIEWPORTPROC)(GLint, GLint, GLsizei, GLsizei); +GLAPI PFNGLVIEWPORTPROC glad_glViewport; +#define glViewport glad_glViewport +#endif +#ifndef GL_VERSION_1_1 +#define GL_VERSION_1_1 1 +GLAPI int GLAD_GL_VERSION_1_1; +typedef void (APIENTRYP PFNGLDRAWARRAYSPROC)(GLenum, GLint, GLsizei); +GLAPI PFNGLDRAWARRAYSPROC glad_glDrawArrays; +#define glDrawArrays glad_glDrawArrays +typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC)(GLenum, GLsizei, GLenum, const void*); +GLAPI PFNGLDRAWELEMENTSPROC glad_glDrawElements; +#define glDrawElements glad_glDrawElements +typedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC)(GLfloat, GLfloat); +GLAPI PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; +#define glPolygonOffset glad_glPolygonOffset +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DPROC)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint); +GLAPI PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D; +#define glCopyTexImage1D glad_glCopyTexImage1D +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC)(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); +GLAPI PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; +#define glCopyTexImage2D glad_glCopyTexImage2D +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum, GLint, GLint, GLint, GLint, GLsizei); +GLAPI PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D; +#define glCopyTexSubImage1D glad_glCopyTexSubImage1D +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +GLAPI PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; +#define glCopyTexSubImage2D glad_glCopyTexSubImage2D +typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DPROC)(GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const void*); +GLAPI PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D; +#define glTexSubImage1D glad_glTexSubImage1D +typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const void*); +GLAPI PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; +#define glTexSubImage2D glad_glTexSubImage2D +typedef void (APIENTRYP PFNGLBINDTEXTUREPROC)(GLenum, GLuint); +GLAPI PFNGLBINDTEXTUREPROC glad_glBindTexture; +#define glBindTexture glad_glBindTexture +typedef void (APIENTRYP PFNGLDELETETEXTURESPROC)(GLsizei, const GLuint*); +GLAPI PFNGLDELETETEXTURESPROC glad_glDeleteTextures; +#define glDeleteTextures glad_glDeleteTextures +typedef void (APIENTRYP PFNGLGENTEXTURESPROC)(GLsizei, GLuint*); +GLAPI PFNGLGENTEXTURESPROC glad_glGenTextures; +#define glGenTextures glad_glGenTextures +typedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC)(GLuint); +GLAPI PFNGLISTEXTUREPROC glad_glIsTexture; +#define glIsTexture glad_glIsTexture +#endif +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 +GLAPI int GLAD_GL_VERSION_1_2; +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC)(GLenum, GLuint, GLuint, GLsizei, GLenum, const void*); +GLAPI PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements; +#define glDrawRangeElements glad_glDrawRangeElements +typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const void*); +GLAPI PFNGLTEXIMAGE3DPROC glad_glTexImage3D; +#define glTexImage3D glad_glTexImage3D +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void*); +GLAPI PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D; +#define glTexSubImage3D glad_glTexSubImage3D +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +GLAPI PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D; +#define glCopyTexSubImage3D glad_glCopyTexSubImage3D +#endif +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 +GLAPI int GLAD_GL_VERSION_1_3; +typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum); +GLAPI PFNGLACTIVETEXTUREPROC glad_glActiveTexture; +#define glActiveTexture glad_glActiveTexture +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC)(GLfloat, GLboolean); +GLAPI PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; +#define glSampleCoverage glad_glSampleCoverage +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const void*); +GLAPI PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D; +#define glCompressedTexImage3D glad_glCompressedTexImage3D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const void*); +GLAPI PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; +#define glCompressedTexImage2D glad_glCompressedTexImage2D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const void*); +GLAPI PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D; +#define glCompressedTexImage1D glad_glCompressedTexImage1D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const void*); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D; +#define glCompressedTexSubImage3D glad_glCompressedTexSubImage3D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const void*); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; +#define glCompressedTexSubImage2D glad_glCompressedTexSubImage2D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const void*); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D; +#define glCompressedTexSubImage1D glad_glCompressedTexSubImage1D +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum, GLint, void*); +GLAPI PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage; +#define glGetCompressedTexImage glad_glGetCompressedTexImage +#endif +#ifndef GL_VERSION_1_4 +#define GL_VERSION_1_4 1 +GLAPI int GLAD_GL_VERSION_1_4; +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC)(GLenum, GLenum, GLenum, GLenum); +GLAPI PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; +#define glBlendFuncSeparate glad_glBlendFuncSeparate +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC)(GLenum, const GLint*, const GLsizei*, GLsizei); +GLAPI PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays; +#define glMultiDrawArrays glad_glMultiDrawArrays +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC)(GLenum, const GLsizei*, GLenum, const void**, GLsizei); +GLAPI PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements; +#define glMultiDrawElements glad_glMultiDrawElements +typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC)(GLenum, GLfloat); +GLAPI PFNGLPOINTPARAMETERFPROC glad_glPointParameterf; +#define glPointParameterf glad_glPointParameterf +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC)(GLenum, const GLfloat*); +GLAPI PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv; +#define glPointParameterfv glad_glPointParameterfv +typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC)(GLenum, GLint); +GLAPI PFNGLPOINTPARAMETERIPROC glad_glPointParameteri; +#define glPointParameteri glad_glPointParameteri +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC)(GLenum, const GLint*); +GLAPI PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv; +#define glPointParameteriv glad_glPointParameteriv +typedef void (APIENTRYP PFNGLBLENDCOLORPROC)(GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI PFNGLBLENDCOLORPROC glad_glBlendColor; +#define glBlendColor glad_glBlendColor +typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC)(GLenum); +GLAPI PFNGLBLENDEQUATIONPROC glad_glBlendEquation; +#define glBlendEquation glad_glBlendEquation +#endif +#ifndef GL_VERSION_1_5 +#define GL_VERSION_1_5 1 +GLAPI int GLAD_GL_VERSION_1_5; +typedef void (APIENTRYP PFNGLGENQUERIESPROC)(GLsizei, GLuint*); +GLAPI PFNGLGENQUERIESPROC glad_glGenQueries; +#define glGenQueries glad_glGenQueries +typedef void (APIENTRYP PFNGLDELETEQUERIESPROC)(GLsizei, const GLuint*); +GLAPI PFNGLDELETEQUERIESPROC glad_glDeleteQueries; +#define glDeleteQueries glad_glDeleteQueries +typedef GLboolean (APIENTRYP PFNGLISQUERYPROC)(GLuint); +GLAPI PFNGLISQUERYPROC glad_glIsQuery; +#define glIsQuery glad_glIsQuery +typedef void (APIENTRYP PFNGLBEGINQUERYPROC)(GLenum, GLuint); +GLAPI PFNGLBEGINQUERYPROC glad_glBeginQuery; +#define glBeginQuery glad_glBeginQuery +typedef void (APIENTRYP PFNGLENDQUERYPROC)(GLenum); +GLAPI PFNGLENDQUERYPROC glad_glEndQuery; +#define glEndQuery glad_glEndQuery +typedef void (APIENTRYP PFNGLGETQUERYIVPROC)(GLenum, GLenum, GLint*); +GLAPI PFNGLGETQUERYIVPROC glad_glGetQueryiv; +#define glGetQueryiv glad_glGetQueryiv +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC)(GLuint, GLenum, GLint*); +GLAPI PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv; +#define glGetQueryObjectiv glad_glGetQueryObjectiv +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC)(GLuint, GLenum, GLuint*); +GLAPI PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv; +#define glGetQueryObjectuiv glad_glGetQueryObjectuiv +typedef void (APIENTRYP PFNGLBINDBUFFERPROC)(GLenum, GLuint); +GLAPI PFNGLBINDBUFFERPROC glad_glBindBuffer; +#define glBindBuffer glad_glBindBuffer +typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC)(GLsizei, const GLuint*); +GLAPI PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; +#define glDeleteBuffers glad_glDeleteBuffers +typedef void (APIENTRYP PFNGLGENBUFFERSPROC)(GLsizei, GLuint*); +GLAPI PFNGLGENBUFFERSPROC glad_glGenBuffers; +#define glGenBuffers glad_glGenBuffers +typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC)(GLuint); +GLAPI PFNGLISBUFFERPROC glad_glIsBuffer; +#define glIsBuffer glad_glIsBuffer +typedef void (APIENTRYP PFNGLBUFFERDATAPROC)(GLenum, GLsizeiptr, const void*, GLenum); +GLAPI PFNGLBUFFERDATAPROC glad_glBufferData; +#define glBufferData glad_glBufferData +typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC)(GLenum, GLintptr, GLsizeiptr, const void*); +GLAPI PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; +#define glBufferSubData glad_glBufferSubData +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC)(GLenum, GLintptr, GLsizeiptr, void*); +GLAPI PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData; +#define glGetBufferSubData glad_glGetBufferSubData +typedef void* (APIENTRYP PFNGLMAPBUFFERPROC)(GLenum, GLenum); +GLAPI PFNGLMAPBUFFERPROC glad_glMapBuffer; +#define glMapBuffer glad_glMapBuffer +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC)(GLenum); +GLAPI PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer; +#define glUnmapBuffer glad_glUnmapBuffer +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC)(GLenum, GLenum, GLint*); +GLAPI PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; +#define glGetBufferParameteriv glad_glGetBufferParameteriv +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC)(GLenum, GLenum, void**); +GLAPI PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv; +#define glGetBufferPointerv glad_glGetBufferPointerv +#endif +#ifndef GL_VERSION_2_0 +#define GL_VERSION_2_0 1 +GLAPI int GLAD_GL_VERSION_2_0; +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum, GLenum); +GLAPI PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; +#define glBlendEquationSeparate glad_glBlendEquationSeparate +typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC)(GLsizei, const GLenum*); +GLAPI PFNGLDRAWBUFFERSPROC glad_glDrawBuffers; +#define glDrawBuffers glad_glDrawBuffers +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC)(GLenum, GLenum, GLenum, GLenum); +GLAPI PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; +#define glStencilOpSeparate glad_glStencilOpSeparate +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC)(GLenum, GLenum, GLint, GLuint); +GLAPI PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; +#define glStencilFuncSeparate glad_glStencilFuncSeparate +typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC)(GLenum, GLuint); +GLAPI PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; +#define glStencilMaskSeparate glad_glStencilMaskSeparate +typedef void (APIENTRYP PFNGLATTACHSHADERPROC)(GLuint, GLuint); +GLAPI PFNGLATTACHSHADERPROC glad_glAttachShader; +#define glAttachShader glad_glAttachShader +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC)(GLuint, GLuint, const GLchar*); +GLAPI PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; +#define glBindAttribLocation glad_glBindAttribLocation +typedef void (APIENTRYP PFNGLCOMPILESHADERPROC)(GLuint); +GLAPI PFNGLCOMPILESHADERPROC glad_glCompileShader; +#define glCompileShader glad_glCompileShader +typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC)(); +GLAPI PFNGLCREATEPROGRAMPROC glad_glCreateProgram; +#define glCreateProgram glad_glCreateProgram +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC)(GLenum); +GLAPI PFNGLCREATESHADERPROC glad_glCreateShader; +#define glCreateShader glad_glCreateShader +typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC)(GLuint); +GLAPI PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; +#define glDeleteProgram glad_glDeleteProgram +typedef void (APIENTRYP PFNGLDELETESHADERPROC)(GLuint); +GLAPI PFNGLDELETESHADERPROC glad_glDeleteShader; +#define glDeleteShader glad_glDeleteShader +typedef void (APIENTRYP PFNGLDETACHSHADERPROC)(GLuint, GLuint); +GLAPI PFNGLDETACHSHADERPROC glad_glDetachShader; +#define glDetachShader glad_glDetachShader +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint); +GLAPI PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; +#define glDisableVertexAttribArray glad_glDisableVertexAttribArray +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint); +GLAPI PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; +#define glEnableVertexAttribArray glad_glEnableVertexAttribArray +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC)(GLuint, GLuint, GLsizei, GLsizei*, GLint*, GLenum*, GLchar*); +GLAPI PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; +#define glGetActiveAttrib glad_glGetActiveAttrib +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC)(GLuint, GLuint, GLsizei, GLsizei*, GLint*, GLenum*, GLchar*); +GLAPI PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; +#define glGetActiveUniform glad_glGetActiveUniform +typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC)(GLuint, GLsizei, GLsizei*, GLuint*); +GLAPI PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; +#define glGetAttachedShaders glad_glGetAttachedShaders +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC)(GLuint, const GLchar*); +GLAPI PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; +#define glGetAttribLocation glad_glGetAttribLocation +typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC)(GLuint, GLenum, GLint*); +GLAPI PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; +#define glGetProgramiv glad_glGetProgramiv +typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC)(GLuint, GLsizei, GLsizei*, GLchar*); +GLAPI PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; +#define glGetProgramInfoLog glad_glGetProgramInfoLog +typedef void (APIENTRYP PFNGLGETSHADERIVPROC)(GLuint, GLenum, GLint*); +GLAPI PFNGLGETSHADERIVPROC glad_glGetShaderiv; +#define glGetShaderiv glad_glGetShaderiv +typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC)(GLuint, GLsizei, GLsizei*, GLchar*); +GLAPI PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; +#define glGetShaderInfoLog glad_glGetShaderInfoLog +typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC)(GLuint, GLsizei, GLsizei*, GLchar*); +GLAPI PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; +#define glGetShaderSource glad_glGetShaderSource +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC)(GLuint, const GLchar*); +GLAPI PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; +#define glGetUniformLocation glad_glGetUniformLocation +typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC)(GLuint, GLint, GLfloat*); +GLAPI PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; +#define glGetUniformfv glad_glGetUniformfv +typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC)(GLuint, GLint, GLint*); +GLAPI PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; +#define glGetUniformiv glad_glGetUniformiv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC)(GLuint, GLenum, GLdouble*); +GLAPI PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv; +#define glGetVertexAttribdv glad_glGetVertexAttribdv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC)(GLuint, GLenum, GLfloat*); +GLAPI PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; +#define glGetVertexAttribfv glad_glGetVertexAttribfv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC)(GLuint, GLenum, GLint*); +GLAPI PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; +#define glGetVertexAttribiv glad_glGetVertexAttribiv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint, GLenum, void**); +GLAPI PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; +#define glGetVertexAttribPointerv glad_glGetVertexAttribPointerv +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC)(GLuint); +GLAPI PFNGLISPROGRAMPROC glad_glIsProgram; +#define glIsProgram glad_glIsProgram +typedef GLboolean (APIENTRYP PFNGLISSHADERPROC)(GLuint); +GLAPI PFNGLISSHADERPROC glad_glIsShader; +#define glIsShader glad_glIsShader +typedef void (APIENTRYP PFNGLLINKPROGRAMPROC)(GLuint); +GLAPI PFNGLLINKPROGRAMPROC glad_glLinkProgram; +#define glLinkProgram glad_glLinkProgram +typedef void (APIENTRYP PFNGLSHADERSOURCEPROC)(GLuint, GLsizei, const GLchar**, const GLint*); +GLAPI PFNGLSHADERSOURCEPROC glad_glShaderSource; +#define glShaderSource glad_glShaderSource +typedef void (APIENTRYP PFNGLUSEPROGRAMPROC)(GLuint); +GLAPI PFNGLUSEPROGRAMPROC glad_glUseProgram; +#define glUseProgram glad_glUseProgram +typedef void (APIENTRYP PFNGLUNIFORM1FPROC)(GLint, GLfloat); +GLAPI PFNGLUNIFORM1FPROC glad_glUniform1f; +#define glUniform1f glad_glUniform1f +typedef void (APIENTRYP PFNGLUNIFORM2FPROC)(GLint, GLfloat, GLfloat); +GLAPI PFNGLUNIFORM2FPROC glad_glUniform2f; +#define glUniform2f glad_glUniform2f +typedef void (APIENTRYP PFNGLUNIFORM3FPROC)(GLint, GLfloat, GLfloat, GLfloat); +GLAPI PFNGLUNIFORM3FPROC glad_glUniform3f; +#define glUniform3f glad_glUniform3f +typedef void (APIENTRYP PFNGLUNIFORM4FPROC)(GLint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI PFNGLUNIFORM4FPROC glad_glUniform4f; +#define glUniform4f glad_glUniform4f +typedef void (APIENTRYP PFNGLUNIFORM1IPROC)(GLint, GLint); +GLAPI PFNGLUNIFORM1IPROC glad_glUniform1i; +#define glUniform1i glad_glUniform1i +typedef void (APIENTRYP PFNGLUNIFORM2IPROC)(GLint, GLint, GLint); +GLAPI PFNGLUNIFORM2IPROC glad_glUniform2i; +#define glUniform2i glad_glUniform2i +typedef void (APIENTRYP PFNGLUNIFORM3IPROC)(GLint, GLint, GLint, GLint); +GLAPI PFNGLUNIFORM3IPROC glad_glUniform3i; +#define glUniform3i glad_glUniform3i +typedef void (APIENTRYP PFNGLUNIFORM4IPROC)(GLint, GLint, GLint, GLint, GLint); +GLAPI PFNGLUNIFORM4IPROC glad_glUniform4i; +#define glUniform4i glad_glUniform4i +typedef void (APIENTRYP PFNGLUNIFORM1FVPROC)(GLint, GLsizei, const GLfloat*); +GLAPI PFNGLUNIFORM1FVPROC glad_glUniform1fv; +#define glUniform1fv glad_glUniform1fv +typedef void (APIENTRYP PFNGLUNIFORM2FVPROC)(GLint, GLsizei, const GLfloat*); +GLAPI PFNGLUNIFORM2FVPROC glad_glUniform2fv; +#define glUniform2fv glad_glUniform2fv +typedef void (APIENTRYP PFNGLUNIFORM3FVPROC)(GLint, GLsizei, const GLfloat*); +GLAPI PFNGLUNIFORM3FVPROC glad_glUniform3fv; +#define glUniform3fv glad_glUniform3fv +typedef void (APIENTRYP PFNGLUNIFORM4FVPROC)(GLint, GLsizei, const GLfloat*); +GLAPI PFNGLUNIFORM4FVPROC glad_glUniform4fv; +#define glUniform4fv glad_glUniform4fv +typedef void (APIENTRYP PFNGLUNIFORM1IVPROC)(GLint, GLsizei, const GLint*); +GLAPI PFNGLUNIFORM1IVPROC glad_glUniform1iv; +#define glUniform1iv glad_glUniform1iv +typedef void (APIENTRYP PFNGLUNIFORM2IVPROC)(GLint, GLsizei, const GLint*); +GLAPI PFNGLUNIFORM2IVPROC glad_glUniform2iv; +#define glUniform2iv glad_glUniform2iv +typedef void (APIENTRYP PFNGLUNIFORM3IVPROC)(GLint, GLsizei, const GLint*); +GLAPI PFNGLUNIFORM3IVPROC glad_glUniform3iv; +#define glUniform3iv glad_glUniform3iv +typedef void (APIENTRYP PFNGLUNIFORM4IVPROC)(GLint, GLsizei, const GLint*); +GLAPI PFNGLUNIFORM4IVPROC glad_glUniform4iv; +#define glUniform4iv glad_glUniform4iv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC)(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; +#define glUniformMatrix2fv glad_glUniformMatrix2fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC)(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; +#define glUniformMatrix3fv glad_glUniformMatrix3fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC)(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; +#define glUniformMatrix4fv glad_glUniformMatrix4fv +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC)(GLuint); +GLAPI PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; +#define glValidateProgram glad_glValidateProgram +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC)(GLuint, GLdouble); +GLAPI PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d; +#define glVertexAttrib1d glad_glVertexAttrib1d +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC)(GLuint, const GLdouble*); +GLAPI PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv; +#define glVertexAttrib1dv glad_glVertexAttrib1dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC)(GLuint, GLfloat); +GLAPI PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; +#define glVertexAttrib1f glad_glVertexAttrib1f +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC)(GLuint, const GLfloat*); +GLAPI PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; +#define glVertexAttrib1fv glad_glVertexAttrib1fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC)(GLuint, GLshort); +GLAPI PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s; +#define glVertexAttrib1s glad_glVertexAttrib1s +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC)(GLuint, const GLshort*); +GLAPI PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv; +#define glVertexAttrib1sv glad_glVertexAttrib1sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC)(GLuint, GLdouble, GLdouble); +GLAPI PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d; +#define glVertexAttrib2d glad_glVertexAttrib2d +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC)(GLuint, const GLdouble*); +GLAPI PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv; +#define glVertexAttrib2dv glad_glVertexAttrib2dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC)(GLuint, GLfloat, GLfloat); +GLAPI PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; +#define glVertexAttrib2f glad_glVertexAttrib2f +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC)(GLuint, const GLfloat*); +GLAPI PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; +#define glVertexAttrib2fv glad_glVertexAttrib2fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC)(GLuint, GLshort, GLshort); +GLAPI PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s; +#define glVertexAttrib2s glad_glVertexAttrib2s +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC)(GLuint, const GLshort*); +GLAPI PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv; +#define glVertexAttrib2sv glad_glVertexAttrib2sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC)(GLuint, GLdouble, GLdouble, GLdouble); +GLAPI PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d; +#define glVertexAttrib3d glad_glVertexAttrib3d +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC)(GLuint, const GLdouble*); +GLAPI PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv; +#define glVertexAttrib3dv glad_glVertexAttrib3dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC)(GLuint, GLfloat, GLfloat, GLfloat); +GLAPI PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; +#define glVertexAttrib3f glad_glVertexAttrib3f +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC)(GLuint, const GLfloat*); +GLAPI PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; +#define glVertexAttrib3fv glad_glVertexAttrib3fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC)(GLuint, GLshort, GLshort, GLshort); +GLAPI PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s; +#define glVertexAttrib3s glad_glVertexAttrib3s +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC)(GLuint, const GLshort*); +GLAPI PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv; +#define glVertexAttrib3sv glad_glVertexAttrib3sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC)(GLuint, const GLbyte*); +GLAPI PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv; +#define glVertexAttrib4Nbv glad_glVertexAttrib4Nbv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC)(GLuint, const GLint*); +GLAPI PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv; +#define glVertexAttrib4Niv glad_glVertexAttrib4Niv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC)(GLuint, const GLshort*); +GLAPI PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv; +#define glVertexAttrib4Nsv glad_glVertexAttrib4Nsv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC)(GLuint, GLubyte, GLubyte, GLubyte, GLubyte); +GLAPI PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub; +#define glVertexAttrib4Nub glad_glVertexAttrib4Nub +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC)(GLuint, const GLubyte*); +GLAPI PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv; +#define glVertexAttrib4Nubv glad_glVertexAttrib4Nubv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC)(GLuint, const GLuint*); +GLAPI PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv; +#define glVertexAttrib4Nuiv glad_glVertexAttrib4Nuiv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC)(GLuint, const GLushort*); +GLAPI PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv; +#define glVertexAttrib4Nusv glad_glVertexAttrib4Nusv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC)(GLuint, const GLbyte*); +GLAPI PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv; +#define glVertexAttrib4bv glad_glVertexAttrib4bv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC)(GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d; +#define glVertexAttrib4d glad_glVertexAttrib4d +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC)(GLuint, const GLdouble*); +GLAPI PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv; +#define glVertexAttrib4dv glad_glVertexAttrib4dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; +#define glVertexAttrib4f glad_glVertexAttrib4f +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC)(GLuint, const GLfloat*); +GLAPI PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; +#define glVertexAttrib4fv glad_glVertexAttrib4fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC)(GLuint, const GLint*); +GLAPI PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv; +#define glVertexAttrib4iv glad_glVertexAttrib4iv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC)(GLuint, GLshort, GLshort, GLshort, GLshort); +GLAPI PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s; +#define glVertexAttrib4s glad_glVertexAttrib4s +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC)(GLuint, const GLshort*); +GLAPI PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv; +#define glVertexAttrib4sv glad_glVertexAttrib4sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC)(GLuint, const GLubyte*); +GLAPI PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv; +#define glVertexAttrib4ubv glad_glVertexAttrib4ubv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC)(GLuint, const GLuint*); +GLAPI PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv; +#define glVertexAttrib4uiv glad_glVertexAttrib4uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC)(GLuint, const GLushort*); +GLAPI PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv; +#define glVertexAttrib4usv glad_glVertexAttrib4usv +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC)(GLuint, GLint, GLenum, GLboolean, GLsizei, const void*); +GLAPI PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; +#define glVertexAttribPointer glad_glVertexAttribPointer +#endif +#ifndef GL_VERSION_2_1 +#define GL_VERSION_2_1 1 +GLAPI int GLAD_GL_VERSION_2_1; +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC)(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv; +#define glUniformMatrix2x3fv glad_glUniformMatrix2x3fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC)(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv; +#define glUniformMatrix3x2fv glad_glUniformMatrix3x2fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC)(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv; +#define glUniformMatrix2x4fv glad_glUniformMatrix2x4fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC)(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv; +#define glUniformMatrix4x2fv glad_glUniformMatrix4x2fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC)(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv; +#define glUniformMatrix3x4fv glad_glUniformMatrix3x4fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC)(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv; +#define glUniformMatrix4x3fv glad_glUniformMatrix4x3fv +#endif +#ifndef GL_VERSION_3_0 +#define GL_VERSION_3_0 1 +GLAPI int GLAD_GL_VERSION_3_0; +typedef void (APIENTRYP PFNGLCOLORMASKIPROC)(GLuint, GLboolean, GLboolean, GLboolean, GLboolean); +GLAPI PFNGLCOLORMASKIPROC glad_glColorMaski; +#define glColorMaski glad_glColorMaski +typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC)(GLenum, GLuint, GLboolean*); +GLAPI PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v; +#define glGetBooleani_v glad_glGetBooleani_v +typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC)(GLenum, GLuint, GLint*); +GLAPI PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v; +#define glGetIntegeri_v glad_glGetIntegeri_v +typedef void (APIENTRYP PFNGLENABLEIPROC)(GLenum, GLuint); +GLAPI PFNGLENABLEIPROC glad_glEnablei; +#define glEnablei glad_glEnablei +typedef void (APIENTRYP PFNGLDISABLEIPROC)(GLenum, GLuint); +GLAPI PFNGLDISABLEIPROC glad_glDisablei; +#define glDisablei glad_glDisablei +typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC)(GLenum, GLuint); +GLAPI PFNGLISENABLEDIPROC glad_glIsEnabledi; +#define glIsEnabledi glad_glIsEnabledi +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum); +GLAPI PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback; +#define glBeginTransformFeedback glad_glBeginTransformFeedback +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC)(); +GLAPI PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback; +#define glEndTransformFeedback glad_glEndTransformFeedback +typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr); +GLAPI PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange; +#define glBindBufferRange glad_glBindBufferRange +typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC)(GLenum, GLuint, GLuint); +GLAPI PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase; +#define glBindBufferBase glad_glBindBufferBase +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint, GLsizei, const GLchar**, GLenum); +GLAPI PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings; +#define glTransformFeedbackVaryings glad_glTransformFeedbackVaryings +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint, GLuint, GLsizei, GLsizei*, GLsizei*, GLenum*, GLchar*); +GLAPI PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying; +#define glGetTransformFeedbackVarying glad_glGetTransformFeedbackVarying +typedef void (APIENTRYP PFNGLCLAMPCOLORPROC)(GLenum, GLenum); +GLAPI PFNGLCLAMPCOLORPROC glad_glClampColor; +#define glClampColor glad_glClampColor +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC)(GLuint, GLenum); +GLAPI PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender; +#define glBeginConditionalRender glad_glBeginConditionalRender +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC)(); +GLAPI PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender; +#define glEndConditionalRender glad_glEndConditionalRender +typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint, GLint, GLenum, GLsizei, const void*); +GLAPI PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer; +#define glVertexAttribIPointer glad_glVertexAttribIPointer +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC)(GLuint, GLenum, GLint*); +GLAPI PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv; +#define glGetVertexAttribIiv glad_glGetVertexAttribIiv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint, GLenum, GLuint*); +GLAPI PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv; +#define glGetVertexAttribIuiv glad_glGetVertexAttribIuiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC)(GLuint, GLint); +GLAPI PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i; +#define glVertexAttribI1i glad_glVertexAttribI1i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC)(GLuint, GLint, GLint); +GLAPI PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i; +#define glVertexAttribI2i glad_glVertexAttribI2i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC)(GLuint, GLint, GLint, GLint); +GLAPI PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i; +#define glVertexAttribI3i glad_glVertexAttribI3i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC)(GLuint, GLint, GLint, GLint, GLint); +GLAPI PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i; +#define glVertexAttribI4i glad_glVertexAttribI4i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC)(GLuint, GLuint); +GLAPI PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui; +#define glVertexAttribI1ui glad_glVertexAttribI1ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC)(GLuint, GLuint, GLuint); +GLAPI PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui; +#define glVertexAttribI2ui glad_glVertexAttribI2ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC)(GLuint, GLuint, GLuint, GLuint); +GLAPI PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui; +#define glVertexAttribI3ui glad_glVertexAttribI3ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC)(GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui; +#define glVertexAttribI4ui glad_glVertexAttribI4ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC)(GLuint, const GLint*); +GLAPI PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv; +#define glVertexAttribI1iv glad_glVertexAttribI1iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC)(GLuint, const GLint*); +GLAPI PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv; +#define glVertexAttribI2iv glad_glVertexAttribI2iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC)(GLuint, const GLint*); +GLAPI PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv; +#define glVertexAttribI3iv glad_glVertexAttribI3iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC)(GLuint, const GLint*); +GLAPI PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv; +#define glVertexAttribI4iv glad_glVertexAttribI4iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC)(GLuint, const GLuint*); +GLAPI PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv; +#define glVertexAttribI1uiv glad_glVertexAttribI1uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC)(GLuint, const GLuint*); +GLAPI PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv; +#define glVertexAttribI2uiv glad_glVertexAttribI2uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC)(GLuint, const GLuint*); +GLAPI PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv; +#define glVertexAttribI3uiv glad_glVertexAttribI3uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC)(GLuint, const GLuint*); +GLAPI PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv; +#define glVertexAttribI4uiv glad_glVertexAttribI4uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC)(GLuint, const GLbyte*); +GLAPI PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv; +#define glVertexAttribI4bv glad_glVertexAttribI4bv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC)(GLuint, const GLshort*); +GLAPI PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv; +#define glVertexAttribI4sv glad_glVertexAttribI4sv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC)(GLuint, const GLubyte*); +GLAPI PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv; +#define glVertexAttribI4ubv glad_glVertexAttribI4ubv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC)(GLuint, const GLushort*); +GLAPI PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv; +#define glVertexAttribI4usv glad_glVertexAttribI4usv +typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC)(GLuint, GLint, GLuint*); +GLAPI PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv; +#define glGetUniformuiv glad_glGetUniformuiv +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC)(GLuint, GLuint, const GLchar*); +GLAPI PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation; +#define glBindFragDataLocation glad_glBindFragDataLocation +typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC)(GLuint, const GLchar*); +GLAPI PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation; +#define glGetFragDataLocation glad_glGetFragDataLocation +typedef void (APIENTRYP PFNGLUNIFORM1UIPROC)(GLint, GLuint); +GLAPI PFNGLUNIFORM1UIPROC glad_glUniform1ui; +#define glUniform1ui glad_glUniform1ui +typedef void (APIENTRYP PFNGLUNIFORM2UIPROC)(GLint, GLuint, GLuint); +GLAPI PFNGLUNIFORM2UIPROC glad_glUniform2ui; +#define glUniform2ui glad_glUniform2ui +typedef void (APIENTRYP PFNGLUNIFORM3UIPROC)(GLint, GLuint, GLuint, GLuint); +GLAPI PFNGLUNIFORM3UIPROC glad_glUniform3ui; +#define glUniform3ui glad_glUniform3ui +typedef void (APIENTRYP PFNGLUNIFORM4UIPROC)(GLint, GLuint, GLuint, GLuint, GLuint); +GLAPI PFNGLUNIFORM4UIPROC glad_glUniform4ui; +#define glUniform4ui glad_glUniform4ui +typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC)(GLint, GLsizei, const GLuint*); +GLAPI PFNGLUNIFORM1UIVPROC glad_glUniform1uiv; +#define glUniform1uiv glad_glUniform1uiv +typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC)(GLint, GLsizei, const GLuint*); +GLAPI PFNGLUNIFORM2UIVPROC glad_glUniform2uiv; +#define glUniform2uiv glad_glUniform2uiv +typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC)(GLint, GLsizei, const GLuint*); +GLAPI PFNGLUNIFORM3UIVPROC glad_glUniform3uiv; +#define glUniform3uiv glad_glUniform3uiv +typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC)(GLint, GLsizei, const GLuint*); +GLAPI PFNGLUNIFORM4UIVPROC glad_glUniform4uiv; +#define glUniform4uiv glad_glUniform4uiv +typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC)(GLenum, GLenum, const GLint*); +GLAPI PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv; +#define glTexParameterIiv glad_glTexParameterIiv +typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC)(GLenum, GLenum, const GLuint*); +GLAPI PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv; +#define glTexParameterIuiv glad_glTexParameterIuiv +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC)(GLenum, GLenum, GLint*); +GLAPI PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv; +#define glGetTexParameterIiv glad_glGetTexParameterIiv +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC)(GLenum, GLenum, GLuint*); +GLAPI PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv; +#define glGetTexParameterIuiv glad_glGetTexParameterIuiv +typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC)(GLenum, GLint, const GLint*); +GLAPI PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv; +#define glClearBufferiv glad_glClearBufferiv +typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC)(GLenum, GLint, const GLuint*); +GLAPI PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv; +#define glClearBufferuiv glad_glClearBufferuiv +typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC)(GLenum, GLint, const GLfloat*); +GLAPI PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv; +#define glClearBufferfv glad_glClearBufferfv +typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC)(GLenum, GLint, GLfloat, GLint); +GLAPI PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi; +#define glClearBufferfi glad_glClearBufferfi +typedef const GLubyte* (APIENTRYP PFNGLGETSTRINGIPROC)(GLenum, GLuint); +GLAPI PFNGLGETSTRINGIPROC glad_glGetStringi; +#define glGetStringi glad_glGetStringi +typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC)(GLuint); +GLAPI PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; +#define glIsRenderbuffer glad_glIsRenderbuffer +typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC)(GLenum, GLuint); +GLAPI PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; +#define glBindRenderbuffer glad_glBindRenderbuffer +typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC)(GLsizei, const GLuint*); +GLAPI PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; +#define glDeleteRenderbuffers glad_glDeleteRenderbuffers +typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC)(GLsizei, GLuint*); +GLAPI PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; +#define glGenRenderbuffers glad_glGenRenderbuffers +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC)(GLenum, GLenum, GLsizei, GLsizei); +GLAPI PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; +#define glRenderbufferStorage glad_glRenderbufferStorage +typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum, GLenum, GLint*); +GLAPI PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; +#define glGetRenderbufferParameteriv glad_glGetRenderbufferParameteriv +typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC)(GLuint); +GLAPI PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; +#define glIsFramebuffer glad_glIsFramebuffer +typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC)(GLenum, GLuint); +GLAPI PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; +#define glBindFramebuffer glad_glBindFramebuffer +typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei, const GLuint*); +GLAPI PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; +#define glDeleteFramebuffers glad_glDeleteFramebuffers +typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC)(GLsizei, GLuint*); +GLAPI PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; +#define glGenFramebuffers glad_glGenFramebuffers +typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum); +GLAPI PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; +#define glCheckFramebufferStatus glad_glCheckFramebufferStatus +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum, GLenum, GLenum, GLuint, GLint); +GLAPI PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D; +#define glFramebufferTexture1D glad_glFramebufferTexture1D +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum, GLenum, GLenum, GLuint, GLint); +GLAPI PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; +#define glFramebufferTexture2D glad_glFramebufferTexture2D +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum, GLenum, GLenum, GLuint, GLint, GLint); +GLAPI PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D; +#define glFramebufferTexture3D glad_glFramebufferTexture3D +typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum, GLenum, GLenum, GLuint); +GLAPI PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; +#define glFramebufferRenderbuffer glad_glFramebufferRenderbuffer +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum, GLenum, GLenum, GLint*); +GLAPI PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; +#define glGetFramebufferAttachmentParameteriv glad_glGetFramebufferAttachmentParameteriv +typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC)(GLenum); +GLAPI PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; +#define glGenerateMipmap glad_glGenerateMipmap +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); +GLAPI PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer; +#define glBlitFramebuffer glad_glBlitFramebuffer +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample; +#define glRenderbufferStorageMultisample glad_glRenderbufferStorageMultisample +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum, GLenum, GLuint, GLint, GLint); +GLAPI PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer; +#define glFramebufferTextureLayer glad_glFramebufferTextureLayer +typedef void* (APIENTRYP PFNGLMAPBUFFERRANGEPROC)(GLenum, GLintptr, GLsizeiptr, GLbitfield); +GLAPI PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange; +#define glMapBufferRange glad_glMapBufferRange +typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum, GLintptr, GLsizeiptr); +GLAPI PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange; +#define glFlushMappedBufferRange glad_glFlushMappedBufferRange +typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC)(GLuint); +GLAPI PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray; +#define glBindVertexArray glad_glBindVertexArray +typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC)(GLsizei, const GLuint*); +GLAPI PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays; +#define glDeleteVertexArrays glad_glDeleteVertexArrays +typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC)(GLsizei, GLuint*); +GLAPI PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays; +#define glGenVertexArrays glad_glGenVertexArrays +typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC)(GLuint); +GLAPI PFNGLISVERTEXARRAYPROC glad_glIsVertexArray; +#define glIsVertexArray glad_glIsVertexArray +#endif +#ifndef GL_VERSION_3_1 +#define GL_VERSION_3_1 1 +GLAPI int GLAD_GL_VERSION_3_1; +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum, GLint, GLsizei, GLsizei); +GLAPI PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced; +#define glDrawArraysInstanced glad_glDrawArraysInstanced +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum, GLsizei, GLenum, const void*, GLsizei); +GLAPI PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced; +#define glDrawElementsInstanced glad_glDrawElementsInstanced +typedef void (APIENTRYP PFNGLTEXBUFFERPROC)(GLenum, GLenum, GLuint); +GLAPI PFNGLTEXBUFFERPROC glad_glTexBuffer; +#define glTexBuffer glad_glTexBuffer +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint); +GLAPI PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex; +#define glPrimitiveRestartIndex glad_glPrimitiveRestartIndex +typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC)(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr); +GLAPI PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData; +#define glCopyBufferSubData glad_glCopyBufferSubData +typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC)(GLuint, GLsizei, const GLchar**, GLuint*); +GLAPI PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices; +#define glGetUniformIndices glad_glGetUniformIndices +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint, GLsizei, const GLuint*, GLenum, GLint*); +GLAPI PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv; +#define glGetActiveUniformsiv glad_glGetActiveUniformsiv +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint, GLuint, GLsizei, GLsizei*, GLchar*); +GLAPI PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName; +#define glGetActiveUniformName glad_glGetActiveUniformName +typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint, const GLchar*); +GLAPI PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex; +#define glGetUniformBlockIndex glad_glGetUniformBlockIndex +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint, GLuint, GLenum, GLint*); +GLAPI PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv; +#define glGetActiveUniformBlockiv glad_glGetActiveUniformBlockiv +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint, GLuint, GLsizei, GLsizei*, GLchar*); +GLAPI PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName; +#define glGetActiveUniformBlockName glad_glGetActiveUniformBlockName +typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint, GLuint, GLuint); +GLAPI PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding; +#define glUniformBlockBinding glad_glUniformBlockBinding +#endif +#ifndef GL_VERSION_3_2 +#define GL_VERSION_3_2 1 +GLAPI int GLAD_GL_VERSION_3_2; +typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum, GLsizei, GLenum, const void*, GLint); +GLAPI PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex; +#define glDrawElementsBaseVertex glad_glDrawElementsBaseVertex +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum, GLuint, GLuint, GLsizei, GLenum, const void*, GLint); +GLAPI PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex; +#define glDrawRangeElementsBaseVertex glad_glDrawRangeElementsBaseVertex +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum, GLsizei, GLenum, const void*, GLsizei, GLint); +GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex; +#define glDrawElementsInstancedBaseVertex glad_glDrawElementsInstancedBaseVertex +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum, const GLsizei*, GLenum, const void**, GLsizei, const GLint*); +GLAPI PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex; +#define glMultiDrawElementsBaseVertex glad_glMultiDrawElementsBaseVertex +typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC)(GLenum); +GLAPI PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex; +#define glProvokingVertex glad_glProvokingVertex +typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC)(GLenum, GLbitfield); +GLAPI PFNGLFENCESYNCPROC glad_glFenceSync; +#define glFenceSync glad_glFenceSync +typedef GLboolean (APIENTRYP PFNGLISSYNCPROC)(GLsync); +GLAPI PFNGLISSYNCPROC glad_glIsSync; +#define glIsSync glad_glIsSync +typedef void (APIENTRYP PFNGLDELETESYNCPROC)(GLsync); +GLAPI PFNGLDELETESYNCPROC glad_glDeleteSync; +#define glDeleteSync glad_glDeleteSync +typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync, GLbitfield, GLuint64); +GLAPI PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; +#define glClientWaitSync glad_glClientWaitSync +typedef void (APIENTRYP PFNGLWAITSYNCPROC)(GLsync, GLbitfield, GLuint64); +GLAPI PFNGLWAITSYNCPROC glad_glWaitSync; +#define glWaitSync glad_glWaitSync +typedef void (APIENTRYP PFNGLGETINTEGER64VPROC)(GLenum, GLint64*); +GLAPI PFNGLGETINTEGER64VPROC glad_glGetInteger64v; +#define glGetInteger64v glad_glGetInteger64v +typedef void (APIENTRYP PFNGLGETSYNCIVPROC)(GLsync, GLenum, GLsizei, GLsizei*, GLint*); +GLAPI PFNGLGETSYNCIVPROC glad_glGetSynciv; +#define glGetSynciv glad_glGetSynciv +typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC)(GLenum, GLuint, GLint64*); +GLAPI PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v; +#define glGetInteger64i_v glad_glGetInteger64i_v +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum, GLenum, GLint64*); +GLAPI PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v; +#define glGetBufferParameteri64v glad_glGetBufferParameteri64v +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum, GLenum, GLuint, GLint); +GLAPI PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture; +#define glFramebufferTexture glad_glFramebufferTexture +typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean); +GLAPI PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample; +#define glTexImage2DMultisample glad_glTexImage2DMultisample +typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean); +GLAPI PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample; +#define glTexImage3DMultisample glad_glTexImage3DMultisample +typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC)(GLenum, GLuint, GLfloat*); +GLAPI PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv; +#define glGetMultisamplefv glad_glGetMultisamplefv +typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC)(GLuint, GLbitfield); +GLAPI PFNGLSAMPLEMASKIPROC glad_glSampleMaski; +#define glSampleMaski glad_glSampleMaski +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/glad/src/glad.c b/glad/src/glad.c new file mode 100644 index 0000000..7550903 --- /dev/null +++ b/glad/src/glad.c @@ -0,0 +1,752 @@ +#include +#include +#include + +struct gladGLversionStruct GLVersion; + +#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) +#define _GLAD_IS_SOME_NEW_VERSION 1 +#endif + +int GLAD_GL_VERSION_1_0; +int GLAD_GL_VERSION_1_1; +int GLAD_GL_VERSION_1_2; +int GLAD_GL_VERSION_1_3; +int GLAD_GL_VERSION_1_4; +int GLAD_GL_VERSION_1_5; +int GLAD_GL_VERSION_2_0; +int GLAD_GL_VERSION_2_1; +int GLAD_GL_VERSION_3_0; +int GLAD_GL_VERSION_3_1; +int GLAD_GL_VERSION_3_2; +PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays; +PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback; +PFNGLFLUSHPROC glad_glFlush; +PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D; +PFNGLCLEARCOLORPROC glad_glClearColor; +PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui; +PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex; +PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv; +PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv; +PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; +PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; +PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation; +PFNGLLINKPROGRAMPROC glad_glLinkProgram; +PFNGLBINDTEXTUREPROC glad_glBindTexture; +PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName; +PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv; +PFNGLFENCESYNCPROC glad_glFenceSync; +PFNGLUNIFORM3UIPROC glad_glUniform3ui; +PFNGLUNIFORM2UIVPROC glad_glUniform2uiv; +PFNGLGETSTRINGPROC glad_glGetString; +PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D; +PFNGLDETACHSHADERPROC glad_glDetachShader; +PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv; +PFNGLGENBUFFERSPROC glad_glGenBuffers; +PFNGLENDQUERYPROC glad_glEndQuery; +PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv; +PFNGLLINEWIDTHPROC glad_glLineWidth; +PFNGLUNIFORM2FVPROC glad_glUniform2fv; +PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced; +PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v; +PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; +PFNGLCOMPILESHADERPROC glad_glCompileShader; +PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying; +PFNGLDELETETEXTURESPROC glad_glDeleteTextures; +PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; +PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; +PFNGLPOLYGONMODEPROC glad_glPolygonMode; +PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange; +PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; +PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; +PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d; +PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; +PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v; +PFNGLISSYNCPROC glad_glIsSync; +PFNGLCLAMPCOLORPROC glad_glClampColor; +PFNGLUNIFORM4IVPROC glad_glUniform4iv; +PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; +PFNGLCLEARSTENCILPROC glad_glClearStencil; +PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture; +PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv; +PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s; +PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex; +PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv; +PFNGLENABLEIPROC glad_glEnablei; +PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; +PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv; +PFNGLGENTEXTURESPROC glad_glGenTextures; +PFNGLDEPTHFUNCPROC glad_glDepthFunc; +PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; +PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; +PFNGLUNIFORM1FPROC glad_glUniform1f; +PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; +PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv; +PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv; +PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; +PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage; +PFNGLISVERTEXARRAYPROC glad_glIsVertexArray; +PFNGLCREATESHADERPROC glad_glCreateShader; +PFNGLISBUFFERPROC glad_glIsBuffer; +PFNGLUNIFORM1IPROC glad_glUniform1i; +PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s; +PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; +PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; +PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv; +PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; +PFNGLDISABLEPROC glad_glDisable; +PFNGLUNIFORM2IPROC glad_glUniform2i; +PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; +PFNGLLOGICOPPROC glad_glLogicOp; +PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv; +PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; +PFNGLCOLORMASKPROC glad_glColorMask; +PFNGLHINTPROC glad_glHint; +PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s; +PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer; +PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv; +PFNGLBLENDEQUATIONPROC glad_glBlendEquation; +PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; +PFNGLSAMPLEMASKIPROC glad_glSampleMaski; +PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; +PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback; +PFNGLCULLFACEPROC glad_glCullFace; +PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv; +PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv; +PFNGLUNIFORM4FVPROC glad_glUniform4fv; +PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv; +PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; +PFNGLUNIFORM1UIVPROC glad_glUniform1uiv; +PFNGLPOINTSIZEPROC glad_glPointSize; +PFNGLGETSTRINGIPROC glad_glGetStringi; +PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv; +PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv; +PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; +PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv; +PFNGLGENQUERIESPROC glad_glGenQueries; +PFNGLWAITSYNCPROC glad_glWaitSync; +PFNGLATTACHSHADERPROC glad_glAttachShader; +PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer; +PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; +PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv; +PFNGLUNIFORM3IPROC glad_glUniform3i; +PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D; +PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D; +PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex; +PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; +PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D; +PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v; +PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex; +PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv; +PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; +PFNGLUNIFORM3FPROC glad_glUniform3f; +PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv; +PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; +PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv; +PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender; +PFNGLDRAWELEMENTSPROC glad_glDrawElements; +PFNGLCOLORMASKIPROC glad_glColorMaski; +PFNGLISENABLEDIPROC glad_glIsEnabledi; +PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv; +PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements; +PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv; +PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays; +PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase; +PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; +PFNGLUNIFORM1IVPROC glad_glUniform1iv; +PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv; +PFNGLUNIFORM4UIVPROC glad_glUniform4uiv; +PFNGLREADBUFFERPROC glad_glReadBuffer; +PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData; +PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray; +PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; +PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender; +PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv; +PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui; +PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; +PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays; +PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D; +PFNGLGETSHADERIVPROC glad_glGetShaderiv; +PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv; +PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv; +PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; +PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv; +PFNGLPOINTPARAMETERIPROC glad_glPointParameteri; +PFNGLBLENDCOLORPROC glad_glBlendColor; +PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; +PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer; +PFNGLDEPTHMASKPROC glad_glDepthMask; +PFNGLPOINTPARAMETERFPROC glad_glPointParameterf; +PFNGLDISABLEIPROC glad_glDisablei; +PFNGLGETDOUBLEVPROC glad_glGetDoublev; +PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv; +PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv; +PFNGLSHADERSOURCEPROC glad_glShaderSource; +PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; +PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; +PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv; +PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv; +PFNGLDRAWARRAYSPROC glad_glDrawArrays; +PFNGLUNIFORM1UIPROC glad_glUniform1ui; +PFNGLISPROGRAMPROC glad_glIsProgram; +PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv; +PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation; +PFNGLGETSYNCIVPROC glad_glGetSynciv; +PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; +PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i; +PFNGLUNIFORM4IPROC glad_glUniform4i; +PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d; +PFNGLCLEARPROC glad_glClear; +PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; +PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName; +PFNGLUNIFORM2FPROC glad_glUniform2f; +PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample; +PFNGLACTIVETEXTUREPROC glad_glActiveTexture; +PFNGLBEGINQUERYPROC glad_glBeginQuery; +PFNGLUNIFORM2IVPROC glad_glUniform2iv; +PFNGLBINDBUFFERPROC glad_glBindBuffer; +PFNGLISENABLEDPROC glad_glIsEnabled; +PFNGLSTENCILOPPROC glad_glStencilOp; +PFNGLREADPIXELSPROC glad_glReadPixels; +PFNGLCLEARDEPTHPROC glad_glClearDepth; +PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv; +PFNGLUNIFORM4FPROC glad_glUniform4f; +PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; +PFNGLMAPBUFFERPROC glad_glMapBuffer; +PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d; +PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub; +PFNGLUNIFORM3FVPROC glad_glUniform3fv; +PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; +PFNGLBUFFERDATAPROC glad_glBufferData; +PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv; +PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D; +PFNGLTEXIMAGE1DPROC glad_glTexImage1D; +PFNGLDELETESYNCPROC glad_glDeleteSync; +PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D; +PFNGLGETERRORPROC glad_glGetError; +PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; +PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; +PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; +PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements; +PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; +PFNGLGETFLOATVPROC glad_glGetFloatv; +PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D; +PFNGLUNIFORM3IVPROC glad_glUniform3iv; +PFNGLGETTEXIMAGEPROC glad_glGetTexImage; +PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; +PFNGLUSEPROGRAMPROC glad_glUseProgram; +PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv; +PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv; +PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i; +PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; +PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; +PFNGLDRAWBUFFERSPROC glad_glDrawBuffers; +PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv; +PFNGLSTENCILFUNCPROC glad_glStencilFunc; +PFNGLGETINTEGERVPROC glad_glGetIntegerv; +PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; +PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding; +PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; +PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv; +PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv; +PFNGLDRAWBUFFERPROC glad_glDrawBuffer; +PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D; +PFNGLUNIFORM1FVPROC glad_glUniform1fv; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample; +PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange; +PFNGLISQUERYPROC glad_glIsQuery; +PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv; +PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; +PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; +PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv; +PFNGLGETQUERYIVPROC glad_glGetQueryiv; +PFNGLTEXIMAGE2DPROC glad_glTexImage2D; +PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; +PFNGLSTENCILMASKPROC glad_glStencilMask; +PFNGLUNIFORM4UIPROC glad_glUniform4ui; +PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv; +PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; +PFNGLISTEXTUREPROC glad_glIsTexture; +PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices; +PFNGLISSHADERPROC glad_glIsShader; +PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; +PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv; +PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv; +PFNGLGETINTEGER64VPROC glad_glGetInteger64v; +PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; +PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; +PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData; +PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; +PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv; +PFNGLENABLEPROC glad_glEnable; +PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv; +PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced; +PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i; +PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; +PFNGLDELETEQUERIESPROC glad_glDeleteQueries; +PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv; +PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; +PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui; +PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D; +PFNGLFINISHPROC glad_glFinish; +PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; +PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv; +PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv; +PFNGLDELETESHADERPROC glad_glDeleteShader; +PFNGLBLENDFUNCPROC glad_glBlendFunc; +PFNGLCREATEPROGRAMPROC glad_glCreateProgram; +PFNGLTEXIMAGE3DPROC glad_glTexImage3D; +PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv; +PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; +PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui; +PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange; +PFNGLVIEWPORTPROC glad_glViewport; +PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv; +PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d; +PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings; +PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; +PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv; +PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex; +PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex; +PFNGLUNIFORM2UIPROC glad_glUniform2ui; +PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; +PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv; +PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i; +PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s; +PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample; +PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; +PFNGLDEPTHRANGEPROC glad_glDepthRange; +PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; +PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv; +PFNGLTEXPARAMETERFPROC glad_glTexParameterf; +PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi; +PFNGLTEXPARAMETERIPROC glad_glTexParameteri; +PFNGLFRONTFACEPROC glad_glFrontFace; +PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; +PFNGLSCISSORPROC glad_glScissor; +PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex; +PFNGLGETBOOLEANVPROC glad_glGetBooleanv; +PFNGLTEXBUFFERPROC glad_glTexBuffer; +PFNGLPIXELSTOREIPROC glad_glPixelStorei; +PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; +PFNGLPIXELSTOREFPROC glad_glPixelStoref; +PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv; +PFNGLUNIFORM3UIVPROC glad_glUniform3uiv; +PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v; +PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer; +static void load_GL_VERSION_1_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_0) return; + glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace"); + glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace"); + glad_glHint = (PFNGLHINTPROC)load("glHint"); + glad_glLineWidth = (PFNGLLINEWIDTHPROC)load("glLineWidth"); + glad_glPointSize = (PFNGLPOINTSIZEPROC)load("glPointSize"); + glad_glPolygonMode = (PFNGLPOLYGONMODEPROC)load("glPolygonMode"); + glad_glScissor = (PFNGLSCISSORPROC)load("glScissor"); + glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load("glTexParameterf"); + glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load("glTexParameterfv"); + glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load("glTexParameteri"); + glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load("glTexParameteriv"); + glad_glTexImage1D = (PFNGLTEXIMAGE1DPROC)load("glTexImage1D"); + glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load("glTexImage2D"); + glad_glDrawBuffer = (PFNGLDRAWBUFFERPROC)load("glDrawBuffer"); + glad_glClear = (PFNGLCLEARPROC)load("glClear"); + glad_glClearColor = (PFNGLCLEARCOLORPROC)load("glClearColor"); + glad_glClearStencil = (PFNGLCLEARSTENCILPROC)load("glClearStencil"); + glad_glClearDepth = (PFNGLCLEARDEPTHPROC)load("glClearDepth"); + glad_glStencilMask = (PFNGLSTENCILMASKPROC)load("glStencilMask"); + glad_glColorMask = (PFNGLCOLORMASKPROC)load("glColorMask"); + glad_glDepthMask = (PFNGLDEPTHMASKPROC)load("glDepthMask"); + glad_glDisable = (PFNGLDISABLEPROC)load("glDisable"); + glad_glEnable = (PFNGLENABLEPROC)load("glEnable"); + glad_glFinish = (PFNGLFINISHPROC)load("glFinish"); + glad_glFlush = (PFNGLFLUSHPROC)load("glFlush"); + glad_glBlendFunc = (PFNGLBLENDFUNCPROC)load("glBlendFunc"); + glad_glLogicOp = (PFNGLLOGICOPPROC)load("glLogicOp"); + glad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load("glStencilFunc"); + glad_glStencilOp = (PFNGLSTENCILOPPROC)load("glStencilOp"); + glad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load("glDepthFunc"); + glad_glPixelStoref = (PFNGLPIXELSTOREFPROC)load("glPixelStoref"); + glad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load("glPixelStorei"); + glad_glReadBuffer = (PFNGLREADBUFFERPROC)load("glReadBuffer"); + glad_glReadPixels = (PFNGLREADPIXELSPROC)load("glReadPixels"); + glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load("glGetBooleanv"); + glad_glGetDoublev = (PFNGLGETDOUBLEVPROC)load("glGetDoublev"); + glad_glGetError = (PFNGLGETERRORPROC)load("glGetError"); + glad_glGetFloatv = (PFNGLGETFLOATVPROC)load("glGetFloatv"); + glad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load("glGetIntegerv"); + glad_glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); + glad_glGetTexImage = (PFNGLGETTEXIMAGEPROC)load("glGetTexImage"); + glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load("glGetTexParameterfv"); + glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load("glGetTexParameteriv"); + glad_glGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)load("glGetTexLevelParameterfv"); + glad_glGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)load("glGetTexLevelParameteriv"); + glad_glIsEnabled = (PFNGLISENABLEDPROC)load("glIsEnabled"); + glad_glDepthRange = (PFNGLDEPTHRANGEPROC)load("glDepthRange"); + glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport"); +} +static void load_GL_VERSION_1_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_1) return; + glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays"); + glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements"); + glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset"); + glad_glCopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC)load("glCopyTexImage1D"); + glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load("glCopyTexImage2D"); + glad_glCopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC)load("glCopyTexSubImage1D"); + glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load("glCopyTexSubImage2D"); + glad_glTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)load("glTexSubImage1D"); + glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load("glTexSubImage2D"); + glad_glBindTexture = (PFNGLBINDTEXTUREPROC)load("glBindTexture"); + glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load("glDeleteTextures"); + glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures"); + glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture"); +} +static void load_GL_VERSION_1_2(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_2) return; + glad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load("glDrawRangeElements"); + glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load("glTexImage3D"); + glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load("glTexSubImage3D"); + glad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load("glCopyTexSubImage3D"); +} +static void load_GL_VERSION_1_3(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_3) return; + glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture"); + glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage"); + glad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load("glCompressedTexImage3D"); + glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load("glCompressedTexImage2D"); + glad_glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)load("glCompressedTexImage1D"); + glad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load("glCompressedTexSubImage3D"); + glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load("glCompressedTexSubImage2D"); + glad_glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)load("glCompressedTexSubImage1D"); + glad_glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)load("glGetCompressedTexImage"); +} +static void load_GL_VERSION_1_4(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_4) return; + glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate"); + glad_glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)load("glMultiDrawArrays"); + glad_glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)load("glMultiDrawElements"); + glad_glPointParameterf = (PFNGLPOINTPARAMETERFPROC)load("glPointParameterf"); + glad_glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)load("glPointParameterfv"); + glad_glPointParameteri = (PFNGLPOINTPARAMETERIPROC)load("glPointParameteri"); + glad_glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)load("glPointParameteriv"); + glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); + glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); +} +static void load_GL_VERSION_1_5(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_5) return; + glad_glGenQueries = (PFNGLGENQUERIESPROC)load("glGenQueries"); + glad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load("glDeleteQueries"); + glad_glIsQuery = (PFNGLISQUERYPROC)load("glIsQuery"); + glad_glBeginQuery = (PFNGLBEGINQUERYPROC)load("glBeginQuery"); + glad_glEndQuery = (PFNGLENDQUERYPROC)load("glEndQuery"); + glad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load("glGetQueryiv"); + glad_glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)load("glGetQueryObjectiv"); + glad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load("glGetQueryObjectuiv"); + glad_glBindBuffer = (PFNGLBINDBUFFERPROC)load("glBindBuffer"); + glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load("glDeleteBuffers"); + glad_glGenBuffers = (PFNGLGENBUFFERSPROC)load("glGenBuffers"); + glad_glIsBuffer = (PFNGLISBUFFERPROC)load("glIsBuffer"); + glad_glBufferData = (PFNGLBUFFERDATAPROC)load("glBufferData"); + glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load("glBufferSubData"); + glad_glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)load("glGetBufferSubData"); + glad_glMapBuffer = (PFNGLMAPBUFFERPROC)load("glMapBuffer"); + glad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load("glUnmapBuffer"); + glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv"); + glad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load("glGetBufferPointerv"); +} +static void load_GL_VERSION_2_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_2_0) return; + glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate"); + glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load("glDrawBuffers"); + glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate"); + glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load("glStencilFuncSeparate"); + glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load("glStencilMaskSeparate"); + glad_glAttachShader = (PFNGLATTACHSHADERPROC)load("glAttachShader"); + glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load("glBindAttribLocation"); + glad_glCompileShader = (PFNGLCOMPILESHADERPROC)load("glCompileShader"); + glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load("glCreateProgram"); + glad_glCreateShader = (PFNGLCREATESHADERPROC)load("glCreateShader"); + glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load("glDeleteProgram"); + glad_glDeleteShader = (PFNGLDELETESHADERPROC)load("glDeleteShader"); + glad_glDetachShader = (PFNGLDETACHSHADERPROC)load("glDetachShader"); + glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load("glDisableVertexAttribArray"); + glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load("glEnableVertexAttribArray"); + glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load("glGetActiveAttrib"); + glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load("glGetActiveUniform"); + glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load("glGetAttachedShaders"); + glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load("glGetAttribLocation"); + glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load("glGetProgramiv"); + glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load("glGetProgramInfoLog"); + glad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load("glGetShaderiv"); + glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load("glGetShaderInfoLog"); + glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load("glGetShaderSource"); + glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load("glGetUniformLocation"); + glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load("glGetUniformfv"); + glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load("glGetUniformiv"); + glad_glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)load("glGetVertexAttribdv"); + glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load("glGetVertexAttribfv"); + glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load("glGetVertexAttribiv"); + glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load("glGetVertexAttribPointerv"); + glad_glIsProgram = (PFNGLISPROGRAMPROC)load("glIsProgram"); + glad_glIsShader = (PFNGLISSHADERPROC)load("glIsShader"); + glad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load("glLinkProgram"); + glad_glShaderSource = (PFNGLSHADERSOURCEPROC)load("glShaderSource"); + glad_glUseProgram = (PFNGLUSEPROGRAMPROC)load("glUseProgram"); + glad_glUniform1f = (PFNGLUNIFORM1FPROC)load("glUniform1f"); + glad_glUniform2f = (PFNGLUNIFORM2FPROC)load("glUniform2f"); + glad_glUniform3f = (PFNGLUNIFORM3FPROC)load("glUniform3f"); + glad_glUniform4f = (PFNGLUNIFORM4FPROC)load("glUniform4f"); + glad_glUniform1i = (PFNGLUNIFORM1IPROC)load("glUniform1i"); + glad_glUniform2i = (PFNGLUNIFORM2IPROC)load("glUniform2i"); + glad_glUniform3i = (PFNGLUNIFORM3IPROC)load("glUniform3i"); + glad_glUniform4i = (PFNGLUNIFORM4IPROC)load("glUniform4i"); + glad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load("glUniform1fv"); + glad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load("glUniform2fv"); + glad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load("glUniform3fv"); + glad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load("glUniform4fv"); + glad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load("glUniform1iv"); + glad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load("glUniform2iv"); + glad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load("glUniform3iv"); + glad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load("glUniform4iv"); + glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load("glUniformMatrix2fv"); + glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load("glUniformMatrix3fv"); + glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load("glUniformMatrix4fv"); + glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load("glValidateProgram"); + glad_glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)load("glVertexAttrib1d"); + glad_glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)load("glVertexAttrib1dv"); + glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load("glVertexAttrib1f"); + glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load("glVertexAttrib1fv"); + glad_glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)load("glVertexAttrib1s"); + glad_glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)load("glVertexAttrib1sv"); + glad_glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)load("glVertexAttrib2d"); + glad_glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)load("glVertexAttrib2dv"); + glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load("glVertexAttrib2f"); + glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load("glVertexAttrib2fv"); + glad_glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)load("glVertexAttrib2s"); + glad_glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)load("glVertexAttrib2sv"); + glad_glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)load("glVertexAttrib3d"); + glad_glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)load("glVertexAttrib3dv"); + glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load("glVertexAttrib3f"); + glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load("glVertexAttrib3fv"); + glad_glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)load("glVertexAttrib3s"); + glad_glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)load("glVertexAttrib3sv"); + glad_glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)load("glVertexAttrib4Nbv"); + glad_glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)load("glVertexAttrib4Niv"); + glad_glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)load("glVertexAttrib4Nsv"); + glad_glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)load("glVertexAttrib4Nub"); + glad_glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)load("glVertexAttrib4Nubv"); + glad_glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)load("glVertexAttrib4Nuiv"); + glad_glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)load("glVertexAttrib4Nusv"); + glad_glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)load("glVertexAttrib4bv"); + glad_glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)load("glVertexAttrib4d"); + glad_glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)load("glVertexAttrib4dv"); + glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load("glVertexAttrib4f"); + glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load("glVertexAttrib4fv"); + glad_glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)load("glVertexAttrib4iv"); + glad_glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)load("glVertexAttrib4s"); + glad_glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)load("glVertexAttrib4sv"); + glad_glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)load("glVertexAttrib4ubv"); + glad_glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)load("glVertexAttrib4uiv"); + glad_glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)load("glVertexAttrib4usv"); + glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer"); +} +static void load_GL_VERSION_2_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_2_1) return; + glad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load("glUniformMatrix2x3fv"); + glad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load("glUniformMatrix3x2fv"); + glad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load("glUniformMatrix2x4fv"); + glad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)load("glUniformMatrix4x2fv"); + glad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load("glUniformMatrix3x4fv"); + glad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load("glUniformMatrix4x3fv"); +} +static void load_GL_VERSION_3_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_0) return; + glad_glColorMaski = (PFNGLCOLORMASKIPROC)load("glColorMaski"); + glad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)load("glGetBooleani_v"); + glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); + glad_glEnablei = (PFNGLENABLEIPROC)load("glEnablei"); + glad_glDisablei = (PFNGLDISABLEIPROC)load("glDisablei"); + glad_glIsEnabledi = (PFNGLISENABLEDIPROC)load("glIsEnabledi"); + glad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)load("glBeginTransformFeedback"); + glad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)load("glEndTransformFeedback"); + glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); + glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); + glad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load("glTransformFeedbackVaryings"); + glad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load("glGetTransformFeedbackVarying"); + glad_glClampColor = (PFNGLCLAMPCOLORPROC)load("glClampColor"); + glad_glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)load("glBeginConditionalRender"); + glad_glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)load("glEndConditionalRender"); + glad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load("glVertexAttribIPointer"); + glad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load("glGetVertexAttribIiv"); + glad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load("glGetVertexAttribIuiv"); + glad_glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)load("glVertexAttribI1i"); + glad_glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)load("glVertexAttribI2i"); + glad_glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)load("glVertexAttribI3i"); + glad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load("glVertexAttribI4i"); + glad_glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)load("glVertexAttribI1ui"); + glad_glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)load("glVertexAttribI2ui"); + glad_glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)load("glVertexAttribI3ui"); + glad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load("glVertexAttribI4ui"); + glad_glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)load("glVertexAttribI1iv"); + glad_glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)load("glVertexAttribI2iv"); + glad_glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)load("glVertexAttribI3iv"); + glad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load("glVertexAttribI4iv"); + glad_glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)load("glVertexAttribI1uiv"); + glad_glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)load("glVertexAttribI2uiv"); + glad_glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)load("glVertexAttribI3uiv"); + glad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load("glVertexAttribI4uiv"); + glad_glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)load("glVertexAttribI4bv"); + glad_glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)load("glVertexAttribI4sv"); + glad_glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)load("glVertexAttribI4ubv"); + glad_glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)load("glVertexAttribI4usv"); + glad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load("glGetUniformuiv"); + glad_glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)load("glBindFragDataLocation"); + glad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)load("glGetFragDataLocation"); + glad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load("glUniform1ui"); + glad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load("glUniform2ui"); + glad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load("glUniform3ui"); + glad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load("glUniform4ui"); + glad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load("glUniform1uiv"); + glad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load("glUniform2uiv"); + glad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load("glUniform3uiv"); + glad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load("glUniform4uiv"); + glad_glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)load("glTexParameterIiv"); + glad_glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)load("glTexParameterIuiv"); + glad_glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)load("glGetTexParameterIiv"); + glad_glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)load("glGetTexParameterIuiv"); + glad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load("glClearBufferiv"); + glad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load("glClearBufferuiv"); + glad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load("glClearBufferfv"); + glad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load("glClearBufferfi"); + glad_glGetStringi = (PFNGLGETSTRINGIPROC)load("glGetStringi"); + glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); + glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); + glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); + glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); + glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); + glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv"); + glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); + glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); + glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); + glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); + glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); + glad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load("glFramebufferTexture1D"); + glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); + glad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load("glFramebufferTexture3D"); + glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); + glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv"); + glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); + glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer"); + glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample"); + glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer"); + glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); + glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); + glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); + glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); + glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); + glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); +} +static void load_GL_VERSION_3_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_1) return; + glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced"); + glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced"); + glad_glTexBuffer = (PFNGLTEXBUFFERPROC)load("glTexBuffer"); + glad_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)load("glPrimitiveRestartIndex"); + glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); + glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); + glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); + glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName"); + glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); + glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); + glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); + glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); +} +static void load_GL_VERSION_3_2(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_2) return; + glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); + glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); + glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); + glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex"); + glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); + glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); + glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); + glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); + glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); + glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); + glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); + glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); + glad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load("glGetInteger64i_v"); + glad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load("glGetBufferParameteri64v"); + glad_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)load("glFramebufferTexture"); + glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); + glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); + glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); + glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); +} +static void find_extensionsGL(void) { +} + +static void find_coreGL(void) { + + /* Thank you @elmindreda + * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176 + * https://github.com/glfw/glfw/blob/master/src/context.c#L36 + */ + int i, major, minor; + + const char* version; + const char* prefixes[] = { + "OpenGL ES-CM ", + "OpenGL ES-CL ", + "OpenGL ES ", + NULL + }; + + version = (const char*) glGetString(GL_VERSION); + if (!version) return; + + for (i = 0; prefixes[i]; i++) { + const size_t length = strlen(prefixes[i]); + if (strncmp(version, prefixes[i], length) == 0) { + version += length; + break; + } + } + + sscanf(version, "%d.%d", &major, &minor); + GLVersion.major = major; GLVersion.minor = minor; + GLAD_GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1; + GLAD_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1; + GLAD_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1; + GLAD_GL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1; + GLAD_GL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1; + GLAD_GL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1; + GLAD_GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; + GLAD_GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2; + GLAD_GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3; + GLAD_GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3; + GLAD_GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3; +} + +int gladLoadGLLoader(GLADloadproc load) { + GLVersion.major = 0; GLVersion.minor = 0; + glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); + if(glGetString == NULL) return 0; + if(glGetString(GL_VERSION) == NULL) return 0; + find_coreGL(); + load_GL_VERSION_1_0(load); + load_GL_VERSION_1_1(load); + load_GL_VERSION_1_2(load); + load_GL_VERSION_1_3(load); + load_GL_VERSION_1_4(load); + load_GL_VERSION_1_5(load); + load_GL_VERSION_2_0(load); + load_GL_VERSION_2_1(load); + load_GL_VERSION_3_0(load); + load_GL_VERSION_3_1(load); + load_GL_VERSION_3_2(load); + + find_extensionsGL(); + return GLVersion.major != 0 || GLVersion.minor != 0; +} \ No newline at end of file diff --git a/libhybris/CMakeLists.txt b/libhybris/CMakeLists.txt new file mode 100644 index 0000000..04712c0 --- /dev/null +++ b/libhybris/CMakeLists.txt @@ -0,0 +1,37 @@ +cmake_minimum_required (VERSION 3.1) + +project(hybris) + +set(THREADS_PREFER_PTHREAD_FLAG ON) +find_package(Threads REQUIRED) + +set(HYBRIS_SOURCES src/cache.c src/dlfcn.c src/hooks.c src/hooks_shm.c src/logging.c src/properties.c src/ctype.c src/sysconf.c src/jb/dlfcn.c src/jb/linker.c src/jb/linker_environ.c src/jb/linker_format.c src/jb/rt.c src/hooks_pthread.c src/hooks_dirent.c src/hooks_io.c src/hooks_net.c src/hooks_list.c) +set(HYBRIS_EXTRA_DEFS ) +if(APPLE) + set(HYBRIS_SOURCES ${HYBRIS_SOURCES} src/hooks_net_darwin.c src/hooks_darwin_pthread_once.cpp) + set(HYBRIS_SOURCES ${HYBRIS_SOURCES} src/bionic/arch-x86/setjmp.S src/bionic/setjmp_cookie.c) + set(HYBRIS_EXTRA_DEFS ${HYBRIS_EXTRA_DEFS} USE_BIONIC_SETJMP) +else() + set(HYBRIS_SOURCES ${HYBRIS_SOURCES} src/strlcpy.c src/hooks_list.c src/hooks_list.h) +endif() + +add_library(hybris ${HYBRIS_SOURCES}) +include_directories(hybris PUBLIC include/) +target_link_libraries(hybris Threads::Threads) + +target_compile_definitions(hybris PRIVATE ${HYBRIS_EXTRA_DEFS}) +if (${IS_ARM_BUILD}) + target_compile_definitions(hybris PRIVATE HAVE_ARM_TLS_REGISTER ANDROID_ARM_LINKER _GNU_SOURCE LINKER_TEXT_BASE=0xB0000100 LINKER_AREA_SIZE=0x01000000 LINKER_DEBUG=1) + if (${IS_ARMHF_BUILD}) + target_compile_definitions(hybris PRIVATE AVOID_FLOAT_POINT_HOOKS) + endif() +else() + set_target_properties(hybris PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32") + target_compile_definitions(hybris PRIVATE ANDROID_X86_LINKER _GNU_SOURCE LINKER_TEXT_BASE=0xB0000100 LINKER_AREA_SIZE=0x01000000 LINKER_DEBUG=1) +endif() + +if(APPLE) + target_link_libraries(hybris epoll-shim osx-elf-header) +else() + target_link_libraries(hybris rt) +endif() diff --git a/libhybris/LICENSE b/libhybris/LICENSE new file mode 100644 index 0000000..0f41c47 --- /dev/null +++ b/libhybris/LICENSE @@ -0,0 +1,251 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + + + +Part of this project is also licensed under other free licenses: + +== strlcpy.c - ISC License == + +Copyright (c) 1998 Todd C. Miller + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +== ctype.c - BSD License 2.0 == + +Copyright (c) 1989 The Regents of the University of California. +All rights reserved. +(c) UNIX System Laboratories, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. diff --git a/libhybris/include/hybris/binding.h b/libhybris/include/hybris/binding.h new file mode 100644 index 0000000..641f652 --- /dev/null +++ b/libhybris/include/hybris/binding.h @@ -0,0 +1,448 @@ + +/** + * Copyright (C) 2013 Simon Busch + * 2012 Canonical Ltd + * 2013 Jolla Ltd. + * + * Auto-generated via "generate_wrapper_macros.py" + * + * 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. + **/ + +#ifndef HYBRIS_BINDING_H_ +#define HYBRIS_BINDING_H_ + +/* floating_point_abi.h defines FP_ATTRIB */ +#include "floating_point_abi.h" + +void *android_dlopen(const char *filename, int flag); +void *android_dlsym(void *name, const char *symbol); +int android_dlclose(void *handle); +const char *android_dlerror(void); +int android_dladdr(const void *addr, void *info); + + + +/** + * XXX AUTO-GENERATED FILE XXX + * + * Do not edit this file directly, but update the templates in + * utils/generate_wrapper_macros.py and run it again to build + * an updated version of this header file: + * + * python utils/generate_wrapper_macros.py > \ + * hybris/include/hybris/common/binding.h + * + * If you need macros with more arguments, just customize the + * MAX_ARGS variable in generate_wrapper_macros.py. + * + * XXX AUTO-GENERATED FILE XXX + **/ + + +#define HYBRIS_DLSYSM(name, fptr, sym) \ + if (!name##_handle) \ + hybris_##name##_initialize(); \ + if (*(fptr) == NULL) \ + { \ + *(fptr) = (void *) android_dlsym(name##_handle, sym); \ + } + +#define HYBRIS_LIBRARY_INITIALIZE(name, path) \ + void *name##_handle; \ + void hybris_##name##_initialize() \ + { \ + name##_handle = android_dlopen(path, RTLD_LAZY); \ + } + + + +#define HYBRIS_IMPLEMENT_FUNCTION0(name, return_type, symbol) \ + return_type symbol() \ + { \ + static return_type (*f)() FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION1(name, return_type, symbol, a1) \ + return_type symbol(a1 n1) \ + { \ + static return_type (*f)(a1) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION2(name, return_type, symbol, a1, a2) \ + return_type symbol(a1 n1, a2 n2) \ + { \ + static return_type (*f)(a1, a2) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION3(name, return_type, symbol, a1, a2, a3) \ + return_type symbol(a1 n1, a2 n2, a3 n3) \ + { \ + static return_type (*f)(a1, a2, a3) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION4(name, return_type, symbol, a1, a2, a3, a4) \ + return_type symbol(a1 n1, a2 n2, a3 n3, a4 n4) \ + { \ + static return_type (*f)(a1, a2, a3, a4) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3, n4); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION5(name, return_type, symbol, a1, a2, a3, a4, a5) \ + return_type symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5) \ + { \ + static return_type (*f)(a1, a2, a3, a4, a5) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3, n4, n5); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION6(name, return_type, symbol, a1, a2, a3, a4, a5, a6) \ + return_type symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6) \ + { \ + static return_type (*f)(a1, a2, a3, a4, a5, a6) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3, n4, n5, n6); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION7(name, return_type, symbol, a1, a2, a3, a4, a5, a6, a7) \ + return_type symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7) \ + { \ + static return_type (*f)(a1, a2, a3, a4, a5, a6, a7) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3, n4, n5, n6, n7); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION8(name, return_type, symbol, a1, a2, a3, a4, a5, a6, a7, a8) \ + return_type symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8) \ + { \ + static return_type (*f)(a1, a2, a3, a4, a5, a6, a7, a8) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3, n4, n5, n6, n7, n8); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION9(name, return_type, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9) \ + return_type symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9) \ + { \ + static return_type (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3, n4, n5, n6, n7, n8, n9); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION10(name, return_type, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) \ + return_type symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10) \ + { \ + static return_type (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION11(name, return_type, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) \ + return_type symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11) \ + { \ + static return_type (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION12(name, return_type, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) \ + return_type symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11, a12 n12) \ + { \ + static return_type (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION13(name, return_type, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) \ + return_type symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11, a12 n12, a13 n13) \ + { \ + static return_type (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION14(name, return_type, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) \ + return_type symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11, a12 n12, a13 n13, a14 n14) \ + { \ + static return_type (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION15(name, return_type, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) \ + return_type symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11, a12 n12, a13 n13, a14 n14, a15 n15) \ + { \ + static return_type (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION16(name, return_type, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) \ + return_type symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11, a12 n12, a13 n13, a14 n14, a15 n15, a16 n16) \ + { \ + static return_type (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION17(name, return_type, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) \ + return_type symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11, a12 n12, a13 n13, a14 n14, a15 n15, a16 n16, a17 n17) \ + { \ + static return_type (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION18(name, return_type, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) \ + return_type symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11, a12 n12, a13 n13, a14 n14, a15 n15, a16 n16, a17 n17, a18 n18) \ + { \ + static return_type (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18); \ + } + + +#define HYBRIS_IMPLEMENT_FUNCTION19(name, return_type, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) \ + return_type symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11, a12 n12, a13 n13, a14 n14, a15 n15, a16 n16, a17 n17, a18 n18, a19 n19) \ + { \ + static return_type (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + return f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION0(name, symbol) \ + void symbol() \ + { \ + static void (*f)() FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION1(name, symbol, a1) \ + void symbol(a1 n1) \ + { \ + static void (*f)(a1) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION2(name, symbol, a1, a2) \ + void symbol(a1 n1, a2 n2) \ + { \ + static void (*f)(a1, a2) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION3(name, symbol, a1, a2, a3) \ + void symbol(a1 n1, a2 n2, a3 n3) \ + { \ + static void (*f)(a1, a2, a3) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION4(name, symbol, a1, a2, a3, a4) \ + void symbol(a1 n1, a2 n2, a3 n3, a4 n4) \ + { \ + static void (*f)(a1, a2, a3, a4) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3, n4); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION5(name, symbol, a1, a2, a3, a4, a5) \ + void symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5) \ + { \ + static void (*f)(a1, a2, a3, a4, a5) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3, n4, n5); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION6(name, symbol, a1, a2, a3, a4, a5, a6) \ + void symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6) \ + { \ + static void (*f)(a1, a2, a3, a4, a5, a6) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3, n4, n5, n6); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION7(name, symbol, a1, a2, a3, a4, a5, a6, a7) \ + void symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7) \ + { \ + static void (*f)(a1, a2, a3, a4, a5, a6, a7) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3, n4, n5, n6, n7); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION8(name, symbol, a1, a2, a3, a4, a5, a6, a7, a8) \ + void symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8) \ + { \ + static void (*f)(a1, a2, a3, a4, a5, a6, a7, a8) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3, n4, n5, n6, n7, n8); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION9(name, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9) \ + void symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9) \ + { \ + static void (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3, n4, n5, n6, n7, n8, n9); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION10(name, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) \ + void symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10) \ + { \ + static void (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION11(name, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) \ + void symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11) \ + { \ + static void (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION12(name, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) \ + void symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11, a12 n12) \ + { \ + static void (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION13(name, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) \ + void symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11, a12 n12, a13 n13) \ + { \ + static void (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION14(name, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) \ + void symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11, a12 n12, a13 n13, a14 n14) \ + { \ + static void (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION15(name, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) \ + void symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11, a12 n12, a13 n13, a14 n14, a15 n15) \ + { \ + static void (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION16(name, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) \ + void symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11, a12 n12, a13 n13, a14 n14, a15 n15, a16 n16) \ + { \ + static void (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION17(name, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) \ + void symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11, a12 n12, a13 n13, a14 n14, a15 n15, a16 n16, a17 n17) \ + { \ + static void (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION18(name, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) \ + void symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11, a12 n12, a13 n13, a14 n14, a15 n15, a16 n16, a17 n17, a18 n18) \ + { \ + static void (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18); \ + } + + +#define HYBRIS_IMPLEMENT_VOID_FUNCTION19(name, symbol, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) \ + void symbol(a1 n1, a2 n2, a3 n3, a4 n4, a5 n5, a6 n6, a7 n7, a8 n8, a9 n9, a10 n10, a11 n11, a12 n12, a13 n13, a14 n14, a15 n15, a16 n16, a17 n17, a18 n18, a19 n19) \ + { \ + static void (*f)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) FP_ATTRIB = NULL; \ + HYBRIS_DLSYSM(name, &f, #symbol); \ + f(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19); \ + } + + +/** + * XXX AUTO-GENERATED FILE XXX + * + * Do not edit this file directly, but update the templates in + * utils/generate_wrapper_macros.py and run it again to build + * an updated version of this header file: + * + * python utils/generate_wrapper_macros.py > \ + * hybris/include/hybris/common/binding.h + * + * If you need macros with more arguments, just customize the + * MAX_ARGS variable in generate_wrapper_macros.py. + * + * XXX AUTO-GENERATED FILE XXX + **/ + + +#endif /* HYBRIS_BINDING_H_ */ + diff --git a/libhybris/include/hybris/dlfcn.h b/libhybris/include/hybris/dlfcn.h new file mode 100644 index 0000000..310c57f --- /dev/null +++ b/libhybris/include/hybris/dlfcn.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2013 Intel Corporation + * + * 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. + * + */ + +#ifndef _HYBRIS_DLFCN_H_ +#define _HYBRIS_DLFCN_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +void *hybris_dlopen(const char *filename, int flag); +void *hybris_dlsym(void *handle, const char *symbol); +int hybris_dlclose(void *handle); +int hybris_dladdr(const void *addr, Dl_info *info); +const char *hybris_dlerror(void); + +#ifdef __cplusplus +} +#endif + +#endif // _HYBRIS_DLFCN_H_ + +// vim: noai:ts=4:sw=4:ss=4:expandtab diff --git a/libhybris/include/hybris/floating_point_abi.h b/libhybris/include/hybris/floating_point_abi.h new file mode 100644 index 0000000..3e14c0e --- /dev/null +++ b/libhybris/include/hybris/floating_point_abi.h @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2013 Jolla Ltd. + * Contact: Thomas Perl + * + * 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. + */ + +#ifndef HYBRIS_FLOATING_POINT_ABI_H_ +#define HYBRIS_FLOATING_POINT_ABI_H_ + +/** + * Make sure to use FP_ATTRIB on all functions that are loaded from + * Android (bionic libc) libraries to make sure floating point arguments + * are passed the right way. + * + * See: http://wiki.debian.org/ArmHardFloatPort/VfpComparison + * http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html + * + * It doesn't hurt to have it added for non-floating point arguments and + * return types, even though it does not really have any effect. + * + * If you use the convenience macros in hybris/common/binding.h, your + * wrapper functions will automatically make use of this attribute. + **/ + +#ifdef __ARM_PCS_VFP +# define FP_ATTRIB __attribute__((pcs("aapcs"))) +#else +# define FP_ATTRIB +#endif + +#endif /* HYBRIS_FLOATING_POINT_ABI_H_ */ diff --git a/libhybris/include/hybris/hook.h b/libhybris/include/hybris/hook.h new file mode 100644 index 0000000..2ea71a0 --- /dev/null +++ b/libhybris/include/hybris/hook.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2013 Intel Corporation + * + * 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. + * + */ + +#ifndef _HYBRIS_HOOK_H_ +#define _HYBRIS_HOOK_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +struct _hook { + const char *name; + void *func; +}; + +void hybris_hook(const char *name, void* func); +void hybris_register_hooks(struct _hook *hooks); + +void *get_hooked_symbol(const char *sym); + +#ifdef __cplusplus +} +#endif + +#endif // _HYBRIS_HOOK_H_ + +// vim: noai:ts=4:sw=4:ss=4:expandtab diff --git a/libhybris/include/hybris/jb/linker.h b/libhybris/include/hybris/jb/linker.h new file mode 100644 index 0000000..c891009 --- /dev/null +++ b/libhybris/include/hybris/jb/linker.h @@ -0,0 +1,220 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _LINKER_H_ +#define _LINKER_H_ + +#include +#include +#include + +#undef PAGE_MASK +#undef PAGE_SIZE +#define PAGE_SIZE 4096 +#define PAGE_MASK 4095 + +void debugger_init(); +const char *addr_to_name(unsigned addr); + +/* magic shared structures that GDB knows about */ + +struct link_map +{ + uintptr_t l_addr; + char * l_name; + uintptr_t l_ld; + struct link_map * l_next; + struct link_map * l_prev; +}; + +/* needed for dl_iterate_phdr to be passed to the callbacks provided */ +struct dl_phdr_info +{ + Elf32_Addr dlpi_addr; + const char *dlpi_name; + const Elf32_Phdr *dlpi_phdr; + Elf32_Half dlpi_phnum; +}; + + +// Values for r_debug->state +enum { + RT_CONSISTENT, + RT_ADD, + RT_DELETE +}; + +struct r_debug +{ + int32_t r_version; + struct link_map * r_map; + void (*r_brk)(void); + int32_t r_state; + uintptr_t r_ldbase; +}; + +typedef struct soinfo soinfo; + +#define FLAG_LINKED 0x00000001 +#define FLAG_ERROR 0x00000002 +#define FLAG_EXE 0x00000004 // The main executable +#define FLAG_LINKER 0x00000010 // The linker itself + +#define SOINFO_NAME_LEN 128 + +struct soinfo +{ + const char name[SOINFO_NAME_LEN]; + Elf32_Phdr *phdr; + int phnum; + unsigned entry; + unsigned base; + unsigned size; + + int unused; // DO NOT USE, maintained for compatibility. + + unsigned *dynamic; + + unsigned wrprotect_start; + unsigned wrprotect_end; + + soinfo *next; + unsigned flags; + + const char *strtab; + Elf32_Sym *symtab; + + unsigned nbucket; + unsigned nchain; + unsigned *bucket; + unsigned *chain; + + unsigned *plt_got; + + Elf32_Rel *plt_rel; + unsigned plt_rel_count; + + Elf32_Rel *rel; + unsigned rel_count; + + unsigned *preinit_array; + unsigned preinit_array_count; + + unsigned *init_array; + unsigned init_array_count; + unsigned *fini_array; + unsigned fini_array_count; + + void (*init_func)(void); + void (*fini_func)(void); + +#ifdef ANDROID_ARM_LINKER + /* ARM EABI section used for stack unwinding. */ + unsigned *ARM_exidx; + unsigned ARM_exidx_count; +#endif + + unsigned refcount; + struct link_map linkmap; + + int constructors_called; + + Elf32_Addr gnu_relro_start; + unsigned gnu_relro_len; + +}; + + +extern soinfo libdl_info; + +#ifdef ANDROID_ARM_LINKER + +#define R_ARM_COPY 20 +#define R_ARM_GLOB_DAT 21 +#define R_ARM_JUMP_SLOT 22 +#define R_ARM_RELATIVE 23 + +/* According to the AAPCS specification, we only + * need the above relocations. However, in practice, + * the following ones turn up from time to time. + */ +#define R_ARM_ABS32 2 +#define R_ARM_REL32 3 + +#elif defined(ANDROID_X86_LINKER) + +#define R_386_32 1 +#define R_386_PC32 2 +#define R_386_GLOB_DAT 6 +#define R_386_JUMP_SLOT 7 +#define R_386_RELATIVE 8 + +#endif + +#ifndef DT_INIT_ARRAY +#define DT_INIT_ARRAY 25 +#endif + +#ifndef DT_FINI_ARRAY +#define DT_FINI_ARRAY 26 +#endif + +#ifndef DT_INIT_ARRAYSZ +#define DT_INIT_ARRAYSZ 27 +#endif + +#ifndef DT_FINI_ARRAYSZ +#define DT_FINI_ARRAYSZ 28 +#endif + +#ifndef DT_PREINIT_ARRAY +#define DT_PREINIT_ARRAY 32 +#endif + +#ifndef DT_PREINIT_ARRAYSZ +#define DT_PREINIT_ARRAYSZ 33 +#endif + +soinfo *load_empty_library(const char *name); +soinfo *find_library(const char *name); +unsigned unload_library(soinfo *si); +Elf32_Sym *lookup_in_library(soinfo *si, const char *name); +Elf32_Sym *lookup(const char *name, soinfo **found, soinfo *start); +soinfo *find_containing_library(const void *addr); +Elf32_Sym *find_containing_symbol(const void *addr, soinfo *si); +const char *linker_get_error(void); +void call_constructors_recursive(soinfo *si); + +#ifdef ANDROID_ARM_LINKER +typedef long unsigned int *_Unwind_Ptr; +_Unwind_Ptr dl_unwind_find_exidx(_Unwind_Ptr pc, int *pcount); +#elif defined(ANDROID_X86_LINKER) +int dl_iterate_phdr(int (*cb)(struct dl_phdr_info *, size_t, void *), void *); +#endif + +#endif diff --git a/libhybris/include/hybris/properties.h b/libhybris/include/hybris/properties.h new file mode 100644 index 0000000..12d56b6 --- /dev/null +++ b/libhybris/include/hybris/properties.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2012 Carsten Munk + * 2013 Simon Busch + * 2008 The Android Open Source Project + * 2013 Canonical Ltd + * + * 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. + * + */ + +#ifndef PROPERTIES_H_ +#define PROPERTIES_H_ + +#include +#include +#include + +/* Based on Android */ +#define PROP_SERVICE_NAME "property_service" + +#define PROP_NAME_MAX 32 +#define PROP_VALUE_MAX 92 + +/* Only SETPROP is defined by Android, for GETPROP and LISTPROP to work + * an extended Android init service needs to be in place */ +#define PROP_MSG_SETPROP 1 +#define PROP_MSG_GETPROP 2 +#define PROP_MSG_LISTPROP 3 + +#ifdef __cplusplus +extern "C" { +#endif + + typedef struct prop_msg_s { + unsigned cmd; + char name[PROP_NAME_MAX]; + char value[PROP_VALUE_MAX]; + } prop_msg_t; + + int property_set(const char *key, const char *value); + int property_get(const char *key, char *value, const char *default_value); + int property_list(void (*propfn)(const char *key, const char *value, void *cookie), void *cookie); + +#ifdef __cplusplus +} +#endif + +#endif // PROPERTIES_H_ diff --git a/libhybris/src/bionic/arch-x86/setjmp.S b/libhybris/src/bionic/arch-x86/setjmp.S new file mode 100644 index 0000000..449a240 --- /dev/null +++ b/libhybris/src/bionic/arch-x86/setjmp.S @@ -0,0 +1,222 @@ +/*- + * Copyright (c) 1990 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * William Jolitz. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "../bionic_asm.h" + +// The internal structure of a jmp_buf is totally private. +// Current layout (changes from release to release): +// +// word name description +// 0 edx registers +// 1 ebx +// 2 esp +// 3 ebp +// 4 esi +// 5 edi +// 6 sigmask 64-bit signal mask (not used with _setjmp / _longjmp) +// 7 " " +// 8 sigflag/cookie setjmp cookie in top 31 bits, signal mask flag in low bit +// 9 checksum checksum of the core registers, to give better error messages. + +#define _JB_EDX 0 +#define _JB_EBX 1 +#define _JB_ESP 2 +#define _JB_EBP 3 +#define _JB_ESI 4 +#define _JB_EDI 5 +#define _JB_SIGMASK 6 +#define _JB_SIGFLAG 8 +#define _JB_CHECKSUM 9 + +.macro m_mangle_registers reg + xorl \reg,%edx + xorl \reg,%ebx + xorl \reg,%esp + xorl \reg,%ebp + xorl \reg,%esi + xorl \reg,%edi +.endm + +.macro m_unmangle_registers reg + m_mangle_registers \reg +.endm + +.macro m_calculate_checksum dst, src + movl $0, \dst + .irp i,0,1,2,3,4,5 + xorl (\i*4)(\src), \dst + .endr +.endm + +ENTRY(bionic_setjmp) +__BIONIC_WEAK_ASM_FOR_NATIVE_BRIDGE(bionic_setjmp) + movl 4(%esp),%ecx + mov $1,%eax + jmp .L_sigsetjmp +END(bionic_setjmp) + +ENTRY(bionic__setjmp) +__BIONIC_WEAK_ASM_FOR_NATIVE_BRIDGE(bionic__setjmp) + movl 4(%esp),%ecx + movl $0,%eax + jmp .L_sigsetjmp +END(bionic__setjmp) + +ENTRY(bionic_sigsetjmp) +__BIONIC_WEAK_ASM_FOR_NATIVE_BRIDGE(bionic_sigsetjmp) + movl 4(%esp),%ecx + movl 8(%esp),%eax + +.L_sigsetjmp: + PIC_PROLOGUE + pushl %ecx + pushl %eax + call PIC_PLT(CDECL(__bionic_setjmp_cookie_get)) + addl $4,%esp + popl %ecx + PIC_EPILOGUE + + // Record the setjmp cookie and whether or not we're saving the signal mask. + movl %eax,(_JB_SIGFLAG * 4)(%ecx) + + // Do we need to save the signal mask? + testl $1,%eax + jz 1f + + // Save the current signal mask. + pushl %ecx + PIC_PROLOGUE + leal (_JB_SIGMASK * 4)(%ecx),%eax + subl $8,%esp + pushl %eax + pushl $0 // NULL + pushl $2 // SIG_SETMASK + call PIC_PLT(CDECL(sigprocmask)) + addl $12,%esp + addl $8,%esp + PIC_EPILOGUE + popl %ecx + +1: + // Fetch the setjmp cookie and clear the signal flag bit. + movl (_JB_SIGFLAG * 4)(%ecx),%eax + andl $-2,%eax + + // Save the callee-save registers. + movl 0(%esp),%edx + m_mangle_registers %eax + movl %edx,(_JB_EDX * 4)(%ecx) + movl %ebx,(_JB_EBX * 4)(%ecx) + movl %esp,(_JB_ESP * 4)(%ecx) + movl %ebp,(_JB_EBP * 4)(%ecx) + movl %esi,(_JB_ESI * 4)(%ecx) + movl %edi,(_JB_EDI * 4)(%ecx) + m_unmangle_registers %eax + + m_calculate_checksum %eax, %ecx + movl %eax, (_JB_CHECKSUM * 4)(%ecx) + + xorl %eax,%eax + ret +END(bionic_sigsetjmp) + +ENTRY(bionic_siglongjmp) +__BIONIC_WEAK_ASM_FOR_NATIVE_BRIDGE(bionic_siglongjmp) + movl 4(%esp),%edx + + // Check the checksum before doing anything. + m_calculate_checksum %eax, %edx + xorl (_JB_CHECKSUM * 4)(%edx), %eax + jnz 3f + + // Do we have a signal mask to restore? + movl (_JB_SIGFLAG * 4)(%edx), %eax + testl $1,%eax + jz 1f + + // Restore the signal mask. + leal (_JB_SIGMASK * 4)(%edx),%eax + PIC_PROLOGUE + pushl $0 // NULL + pushl %eax + pushl $2 // SIG_SETMASK + call PIC_PLT(CDECL(sigprocmask)) + addl $12,%esp + PIC_EPILOGUE + +1: + // Restore the callee-save registers. + movl 4(%esp),%edx + movl 8(%esp),%eax + + movl (_JB_SIGFLAG * 4)(%edx),%ecx + andl $-2,%ecx + + movl %ecx,%ebx + movl %ecx,%esp + movl %ecx,%ebp + movl %ecx,%esi + movl %ecx,%edi + xorl (_JB_EDX * 4)(%edx),%ecx + xorl (_JB_EBX * 4)(%edx),%ebx + xorl (_JB_ESP * 4)(%edx),%esp + xorl (_JB_EBP * 4)(%edx),%ebp + xorl (_JB_ESI * 4)(%edx),%esi + xorl (_JB_EDI * 4)(%edx),%edi + + PIC_PROLOGUE + pushl %eax + pushl %ecx + pushl (_JB_SIGFLAG * 4)(%edx) + call PIC_PLT(CDECL(__bionic_setjmp_cookie_check)) + addl $4,%esp + popl %ecx + popl %eax + PIC_EPILOGUE + + testl %eax,%eax + jnz 2f + incl %eax +2: + movl %ecx,0(%esp) + ret + +3: + PIC_PROLOGUE + pushl (_JB_SIGMASK * 4)(%edx) + call PIC_PLT(CDECL(__bionic_setjmp_checksum_mismatch)) +END(bionic_siglongjmp) + +ALIAS_SYMBOL(bionic_longjmp, bionic_siglongjmp) +__BIONIC_WEAK_ASM_FOR_NATIVE_BRIDGE(bionic_longjmp) +ALIAS_SYMBOL(bionic__longjmp, bionic_siglongjmp) +__BIONIC_WEAK_ASM_FOR_NATIVE_BRIDGE(bionic__longjmp) diff --git a/libhybris/src/bionic/bionic_asm.h b/libhybris/src/bionic/bionic_asm.h new file mode 100644 index 0000000..c006693 --- /dev/null +++ b/libhybris/src/bionic/bionic_asm.h @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _PRIVATE_BIONIC_ASM_H_ +#define _PRIVATE_BIONIC_ASM_H_ + +#define MAX_ERRNO 4095 /* For recognizing system call error returns. */ + +#define __bionic_asm_custom_entry(f) +#define __bionic_asm_custom_end(f) +#define __bionic_asm_function_type @function + +#if defined(__i386__) +#include "bionic_asm_x86.h" +#endif + +#define CDECL(f) _ ## f + +#ifdef __llvm__ +#define ENTRY_NO_DWARF(f) \ + .text; \ + .globl CDECL(f); \ + .balign __bionic_asm_align; \ + CDECL(f): \ + __bionic_asm_custom_entry(CDECL(f)); \ + +#else +#define ENTRY_NO_DWARF(f) \ + .text; \ + .globl f; \ + .balign __bionic_asm_align; \ + .type f, __bionic_asm_function_type; \ + f: \ + __bionic_asm_custom_entry(f); \ + +#endif + +#define ENTRY(f) \ + ENTRY_NO_DWARF(f) \ + .cfi_startproc \ + +#ifdef __llvm__ +#define END_NO_DWARF(f) \ + __bionic_asm_custom_end(CDECL(f)) \ + +#else +#define END_NO_DWARF(f) \ + .size f, .-f; \ + __bionic_asm_custom_end(f) \ + +#endif + +#define END(f) \ + .cfi_endproc; \ + END_NO_DWARF(f) \ + +/* Like ENTRY, but with hidden visibility. */ +#define ENTRY_PRIVATE(f) \ + ENTRY(f); \ + .hidden f \ + +/* Like ENTRY_NO_DWARF, but with hidden visibility. */ +#define ENTRY_PRIVATE_NO_DWARF(f) \ + ENTRY_NO_DWARF(f); \ + .hidden f \ + +#ifdef __llvm__ +#define __BIONIC_WEAK_ASM_FOR_NATIVE_BRIDGE(f) \ + +#define ALIAS_SYMBOL(alias, original) \ + .globl _ ## alias; \ + .equ _ ## alias, _ ## original + +#else +#define __BIONIC_WEAK_ASM_FOR_NATIVE_BRIDGE(f) \ + .weak f; \ + +#define ALIAS_SYMBOL(alias, original) \ + .globl alias; \ + .equ alias, original + +#endif + +#endif diff --git a/libhybris/src/bionic/bionic_asm_x86.h b/libhybris/src/bionic/bionic_asm_x86.h new file mode 100644 index 0000000..2865b1c --- /dev/null +++ b/libhybris/src/bionic/bionic_asm_x86.h @@ -0,0 +1,51 @@ +/* $NetBSD: asm.h,v 1.40 2011/06/16 13:16:20 joerg Exp $ */ + +/*- + * Copyright (c) 1990 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * William Jolitz. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)asm.h 5.5 (Berkeley) 5/7/91 + */ + +#pragma once + +#define PIC_PROLOGUE \ + pushl %ebx; \ + call 666f; \ +666: \ + popl %ebx; \ + // addl $_GLOBAL_OFFSET_TABLE_+(.-666b), %ebx - HACK: currently unused, so we delete it as it causes issues on OS X +#define PIC_EPILOGUE \ + popl %ebx +#define PIC_PLT(x) x@PLT +#define PIC_GOT(x) x@GOT(%ebx) +#define PIC_GOTOFF(x) x@GOTOFF(%ebx) + +#define __bionic_asm_align 16 diff --git a/libhybris/src/bionic/setjmp_cookie.c b/libhybris/src/bionic/setjmp_cookie.c new file mode 100644 index 0000000..82b1ed5 --- /dev/null +++ b/libhybris/src/bionic/setjmp_cookie.c @@ -0,0 +1,60 @@ + +/* + * Copyright (C) 2015 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#include +#include + + +static long setjmp_cookie; + +void __bionic_init_setjmp_cookie() { + long value = (long) arc4random(); + // Mask off the last bit to store the signal flag. + setjmp_cookie = value & ~1; +} +long __bionic_setjmp_cookie_get(long sigflag) { + if (!setjmp_cookie) + __bionic_init_setjmp_cookie(); + if (sigflag & ~1) { + printf("unexpected sigflag value: %ld\n", sigflag); + abort(); + } + return setjmp_cookie | sigflag; +} +// Aborts if cookie doesn't match, returns the signal flag otherwise. +long __bionic_setjmp_cookie_check(long cookie) { + if (setjmp_cookie != (cookie & ~1)) { + printf("setjmp cookie mismatch"); + abort(); + } + return cookie & 1; +} +long __bionic_setjmp_checksum_mismatch() { + printf("setjmp checksum mismatch\n"); + abort(); +} diff --git a/libhybris/src/cache.c b/libhybris/src/cache.c new file mode 100644 index 0000000..caee370 --- /dev/null +++ b/libhybris/src/cache.c @@ -0,0 +1,278 @@ +/* + * Copyright (c) 2012 Carsten Munk + * Copyright (c) 2008 The Android Open Source Project + * Copyright (c) 2013 Simon Busch + * Copyright (c) 2013 Canonical Ltd + * Copyright (c) 2013 Jolla Ltd. + * + * 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. + * + */ + +#include +#include +#include +#include +#include + +#include "../include/hybris/properties.h" +#include "properties_p.h" + +struct hybris_prop_value +{ + char *key; + char *value; +}; + +/* surely enough for anyone */ +#define MAX_PROPS 1000 + +/* the sorted prop array */ +static struct hybris_prop_value prop_array[MAX_PROPS]; + +/* the current highest index in prop_array */ +static int max_prop; + +/* helpers */ +static void cache_update(); +static int prop_qcmp(const void *a, const void *b); +static struct hybris_prop_value *cache_find_internal(const char *key); +static void cache_add_internal(const char *key, const char *value); +static void cache_repopulate_internal(FILE *f); +static void cache_empty_internal(); +static void cache_repopulate_cmdline_internal(); + +/* the inode/mtime of the prop cache, used for invalidation */ +static ino_t static_prop_inode; +static time_t static_prop_mtime; + + +/* public: + * find a prop value from the file cache. + * + * the return value is the value of the given property key, or NULL if the + * property key is not found. the returned value is owned by the caller, + * and must be freed. + */ +char *hybris_propcache_find(const char *key) +{ + char *ret = NULL; + + cache_update(); + + /* then look up the key and do a copy if we get a result */ + struct hybris_prop_value *prop = cache_find_internal(key); + if (prop) + return prop->value; + +out: + return ret; +} + +void hybris_propcache_list(hybris_propcache_list_cb cb, void *cookie) +{ + int n; + struct hybris_prop_value *current; + + if (!cb) + return; + + cache_update(); + + for (n = 0; n < max_prop; n++) { + current = &prop_array[n]; + cb(current->key, current->value, cookie); + } +} + +static void cache_update() +{ + struct stat st; + FILE *f = fopen("/system/build.prop", "r"); + char *ret = NULL; + + if (!f) + return; + + /* before searching, we must first determine whether our cache is valid. if + * it isn't, we must discard our results and re-create the cache. + * + * we use fstat here to avoid a race between stat and something else + * touching the file. + */ + if (fstat(fileno(f), &st) != 0) { + perror("cache_find can't stat build.prop"); + goto out; + } + + /* TODO: is there any better way to detect changes? */ + if (static_prop_inode != st.st_ino || + static_prop_mtime != st.st_mtime) { + static_prop_inode = st.st_ino; + static_prop_mtime = st.st_mtime; + + /* cache is stale. fill it back up with fresh data first. */ + cache_empty_internal(); + cache_repopulate_internal(f); + cache_repopulate_cmdline_internal(); + + /* sort by keys */ + qsort(prop_array, max_prop, sizeof(struct hybris_prop_value), prop_qcmp); + } + +out: + fclose(f); +} + +/* private: + * empties the prop cache, ready for repopulation + */ +static void cache_empty_internal() +{ + int i; + for (i = 0; i < max_prop; ++i) { + free(prop_array[i].key); + free(prop_array[i].value); + } + + max_prop = 0; +} + +/* private: + * compares two hybris_prop_value by key, so as to maintain a qsorted array of + * props, and search the array. + */ +static int prop_qcmp(const void *a, const void *b) +{ + struct hybris_prop_value *aa = (struct hybris_prop_value *)a; + struct hybris_prop_value *bb = (struct hybris_prop_value *)b; + + return strcmp(aa->key, bb->key); +} + +/* private: + * find a given key in the in-memory prop cache. + * + * returns the value of the given property key, or NULL if the property is not + * found. Note that this does not pass ownership of the hybris_prop_value or the + * data inside it. + */ +static struct hybris_prop_value *cache_find_internal(const char *key) +{ + struct hybris_prop_value prop_key; + prop_key.key = (char*)key; + + return bsearch(&prop_key, prop_array, max_prop, sizeof(struct hybris_prop_value), prop_qcmp); +} + +/* private: + * add a given property to the in-memory prop cache for later retrieval. + * + * both `key' and `value' are copied from the caller. + */ +static void cache_add_internal(const char *key, const char *value) +{ + /* Skip values that can be bigger than value max */ + if (strlen(value) >= PROP_VALUE_MAX -1) + return; + + /* preserve current behavior of first prop key => match */ + if (cache_find_internal(key)) + return; + + prop_array[max_prop].key = strdup(key); + prop_array[max_prop++].value = strdup(value); + + if (max_prop >= MAX_PROPS) { + fprintf(stderr, "libhybris: ran out of props, increase MAX_PROPS"); + exit(1); + } +} + +/* private: + * repopulates the prop cache from a given file `f'. + */ +static void cache_repopulate_internal(FILE *f) +{ + char buf[1024]; + char *mkey, *value; + + while (fgets(buf, 1024, f) != NULL) { + if (strchr(buf, '\r')) + *(strchr(buf, '\r')) = '\0'; + if (strchr(buf, '\n')) + *(strchr(buf, '\n')) = '\0'; + + mkey = strtok(buf, "="); + + if (!mkey) + continue; + + value = strtok(NULL, "="); + if (!value) + continue; + + cache_add_internal(mkey, value); + } +} + +/* private: + * repopulate the prop cache from /proc/cmdline + */ +static void cache_repopulate_cmdline_internal() +{ + /* Find a key value from the kernel command line, which is parsed + * by Android at init (on an Android working system) */ + char cmdline[1024]; + char *ptr; + int fd; + + fd = open("/proc/cmdline", O_RDONLY); + if (fd >= 0) { + int n = read(fd, cmdline, 1023); + if (n < 0) n = 0; + + /* get rid of trailing newline, it happens */ + if (n > 0 && cmdline[n-1] == '\n') n--; + + cmdline[n] = 0; + close(fd); + } else { + cmdline[0] = 0; + } + + ptr = cmdline; + + while (ptr && *ptr) { + char *x = strchr(ptr, ' '); + if (x != 0) *x++ = 0; + + char *name = ptr; + ptr = x; + + char *value = strchr(name, '='); + int name_len = strlen(name); + + if (value == 0) continue; + *value++ = 0; + if (name_len == 0) continue; + + if (!strncmp(name, "androidboot.", 12) && name_len > 12) { + const char *boot_prop_name = name + 12; + char prop[PROP_NAME_MAX]; + snprintf(prop, sizeof(prop) -1, "ro.%s", boot_prop_name); + + cache_add_internal(prop, value); + } + } +} diff --git a/libhybris/src/ctype.c b/libhybris/src/ctype.c new file mode 100644 index 0000000..89cff79 --- /dev/null +++ b/libhybris/src/ctype.c @@ -0,0 +1,247 @@ +/* + * Copyright (c) 1989 The Regents of the University of California. + * All rights reserved. + * (c) UNIX System Laboratories, Inc. + * All or some portions of this file are derived from material licensed + * to the University of California by American Telephone and Telegraph + * Co. or Unix System Laboratories, Inc. and are reproduced herein with + * the permission of UNIX System Laboratories, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#include "ctype.h" + +#include +#include + +#define CTYPE_NUM_CHARS 256 + +#define _CTYPE_U 0x01 +#define _CTYPE_L 0x02 +#define _CTYPE_D 0x04 +#define _CTYPE_S 0x08 +#define _CTYPE_P 0x10 +#define _CTYPE_C 0x20 +#define _CTYPE_X 0x40 +#define _CTYPE_B 0x80 +#define _CTYPE_R (_CTYPE_P|_CTYPE_U|_CTYPE_L|_CTYPE_D|_CTYPE_B) +#define _CTYPE_A (_CTYPE_L|_CTYPE_U) +#define _CTYPE_N _CTYPE_D + +const short _hybris_C_tolower_[1 + CTYPE_NUM_CHARS] = { + EOF, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', + 'x', 'y', 'z', 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, + 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, + 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, + 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, + 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff +}; + +const short _hybris_C_toupper_[1 + CTYPE_NUM_CHARS] = { + EOF, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, + 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, + 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, + 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff +}; + + +#define _U _CTYPE_U +#define _L _CTYPE_L +#define _N _CTYPE_N +#define _S _CTYPE_S +#define _P _CTYPE_P +#define _C _CTYPE_C +#define _X _CTYPE_X +#define _B _CTYPE_B +const char _hybris_C_ctype_[1 + CTYPE_NUM_CHARS] = { + 0, + _C, _C, _C, _C, _C, _C, _C, _C, + _C, _C|_S, _C|_S, _C|_S, _C|_S, _C|_S, _C, _C, + _C, _C, _C, _C, _C, _C, _C, _C, + _C, _C, _C, _C, _C, _C, _C, _C, + _S|(char)_B, _P, _P, _P, _P, _P, _P, _P, + _P, _P, _P, _P, _P, _P, _P, _P, + _N, _N, _N, _N, _N, _N, _N, _N, + _N, _N, _P, _P, _P, _P, _P, _P, + _P, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U, + _U, _U, _U, _U, _U, _U, _U, _U, + _U, _U, _U, _U, _U, _U, _U, _U, + _U, _U, _U, _P, _P, _P, _P, _P, + _P, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L, + _L, _L, _L, _L, _L, _L, _L, _L, + _L, _L, _L, _L, _L, _L, _L, _L, + _L, _L, _L, _P, _P, _P, _P, _C, + + 0, 0, 0, 0, 0, 0, 0, 0, /* 80 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* 88 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* 90 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* 98 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* A0 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* A8 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* B0 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* B8 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* C0 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* C8 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* D0 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* D8 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* E0 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* E8 */ + 0, 0, 0, 0, 0, 0, 0, 0, /* F0 */ + 0, 0, 0, 0, 0, 0, 0, 0 /* F8 */ +}; + + +const short *_hybris_tolower_tab_ = _hybris_C_tolower_; +const short *_hybris_toupper_tab_ = _hybris_C_toupper_; +const char *_hybris_ctype_ = _hybris_C_ctype_; + + +int +hybris_isalnum(int c) +{ + return (c == EOF ? 0 : ((_hybris_ctype_ + 1)[(unsigned char)c] & (_U|_L|_N))); +} + +int +hybris_isalpha(int c) +{ + return (c == EOF ? 0 : ((_hybris_ctype_ + 1)[(unsigned char)c] & (_U|_L))); +} + +int +hybris_isblank(int c) +{ + return (c == ' ' || c == '\t'); +} + +int +hybris_iscntrl(int c) +{ + return (c == EOF ? 0 : ((_hybris_ctype_ + 1)[(unsigned char)c] & _C)); +} + +int +hybris_isdigit(int c) +{ + return (c == EOF ? 0 : ((_hybris_ctype_ + 1)[(unsigned char)c] & _N)); +} + +int +hybris_isgraph(int c) +{ + return (c == EOF ? 0 : ((_hybris_ctype_ + 1)[(unsigned char)c] & (_P|_U|_L|_N))); +} + +int +hybris_islower(int c) +{ + return (c == EOF ? 0 : ((_hybris_ctype_ + 1)[(unsigned char)c] & _L)); +} + +int +hybris_isprint(int c) +{ + return (c == EOF ? 0 : ((_hybris_ctype_ + 1)[(unsigned char)c] & (_P|_U|_L|_N|_B))); +} + +int +hybris_ispunct(int c) +{ + return (c == EOF ? 0 : ((_hybris_ctype_ + 1)[(unsigned char)c] & _P)); +} + +int +hybris_isspace(int c) +{ + return (c == EOF ? 0 : ((_hybris_ctype_ + 1)[(unsigned char)c] & _S)); +} + +int +hybris_isupper(int c) +{ + return (c == EOF ? 0 : ((_hybris_ctype_ + 1)[(unsigned char)c] & _U)); +} + +int +hybris_isxdigit(int c) +{ + return (c == EOF ? 0 : ((_hybris_ctype_ + 1)[(unsigned char)c] & (_N|_X))); +} diff --git a/libhybris/src/ctype.h b/libhybris/src/ctype.h new file mode 100644 index 0000000..e7f9ee8 --- /dev/null +++ b/libhybris/src/ctype.h @@ -0,0 +1,44 @@ +#ifndef CTYPE_H_ +#define CTYPE_H_ + +extern const char *_hybris_ctype_; +extern const short *_hybris_tolower_tab_; +extern const short *_hybris_toupper_tab_; + +int +hybris_isalnum(int c); + +int +hybris_isalpha(int c); + +int +hybris_isblank(int c); + +int +hybris_iscntrl(int c); + +int +hybris_isdigit(int c); + +int +hybris_isgraph(int c); + +int +hybris_islower(int c); + +int +hybris_isprint(int c); + +int +hybris_ispunct(int c); + +int +hybris_isspace(int c); + +int +hybris_isupper(int c); + +int +hybris_isxdigit(int c); + +#endif \ No newline at end of file diff --git a/libhybris/src/dlfcn.c b/libhybris/src/dlfcn.c new file mode 100644 index 0000000..7a388ae --- /dev/null +++ b/libhybris/src/dlfcn.c @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2013 Intel Corporation + * + * 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. + * + */ + +#include "../include/hybris/dlfcn.h" +#include "../include/hybris/binding.h" + +void *hybris_dlopen(const char *filename, int flag) +{ + return android_dlopen(filename,flag); +} + + +void *hybris_dlsym(void *handle, const char *symbol) +{ + return android_dlsym(handle,symbol); +} + + +int hybris_dlclose(void *handle) +{ + return android_dlclose(handle); +} + + +int hybris_dladdr(const void *addr, Dl_info *info) +{ + return android_dladdr(addr, info); +} + + +const char *hybris_dlerror(void) +{ + return android_dlerror(); +} + +// vim: noai:ts=4:sw=4:ss=4:expandtab diff --git a/libhybris/src/hooks.c b/libhybris/src/hooks.c new file mode 100644 index 0000000..91fab37 --- /dev/null +++ b/libhybris/src/hooks.c @@ -0,0 +1,878 @@ +/* + * Copyright (c) 2012 Carsten Munk + * Copyright (c) 2012 Canonical Ltd + * Copyright (c) 2013 Christophe Chapuis + * + * 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. + * + */ + +#include "../include/hybris/binding.h" + +#include "hooks_shm.h" + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#ifndef __APPLE__ +#include +#include +#include +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __APPLE__ +#include +#endif + +#include "../include/hybris/hook.h" +#include "../include/hybris/properties.h" +#include "ctype.h" + +static locale_t hybris_locale; +static int locale_inited = 0; + +/* Debug */ +#include "logging.h" +#define LOGD(message, ...) HYBRIS_DEBUG_LOG(HOOKS, message, ##__VA_ARGS__) + +/* we have a value p: + * - if p <= ANDROID_TOP_ADDR_VALUE_MUTEX then it is an android mutex, not one we processed + * - if p > VMALLOC_END, then the pointer is not a result of malloc ==> it is an shm offset + */ + +uintptr_t _hybris_stack_chk_guard = 0; + +#ifndef __APPLE__ +static void __attribute__((constructor)) __init_stack_check_guard() { + _hybris_stack_chk_guard = *((uintptr_t*) getauxval(AT_RANDOM)); +} +#endif + + +/* + * utils, such as malloc, memcpy + * + * Useful to handle hacks such as the one applied for Nvidia, and to + * avoid crashes. + * + * */ + +static void *my_malloc(size_t size) +{ + return (char*)malloc(size); +} + +static void *my_memcpy(void *dst, const void *src, size_t len) +{ + if (src == NULL || dst == NULL) + return NULL; + + return memcpy(dst, src, len); +} + +static size_t my_strlen(const char *s) +{ + + if (s == NULL) + return -1; + + return strlen(s); +} + +size_t my_strlen_chk(const char *s, size_t s_len) { + size_t ret = strlen(s); + if (ret >= s_len) { + LOGD("__strlen_chk: ret >= s_len"); + abort(); + } + return ret; +} + +#ifndef __APPLE__ +extern size_t strlcpy(char *dst, const char *src, size_t siz); +#endif + +#ifdef __APPLE__ + +int darwin_my_fdatasync(int fildes) { + return fcntl(fildes, F_FULLFSYNC); +} + +// Android uses 32-bit offset while Mac OS uses 64-bit one + +ssize_t darwin_my_pread(int fd, void *buf, size_t count, long offset) { + return pread(fd, buf, count, offset); +} + +ssize_t darwin_my_pwrite(int fd, const void *buf, size_t count, long offset) { + return pwrite(fd, buf, count, offset); +} + +struct android_rlimit +{ + unsigned long int rlim_cur; + unsigned long int rlim_max; +}; + +int darwin_my_getrlimit(int resource, struct android_rlimit *rlim) { + if (resource == 7) + resource = RLIMIT_NOFILE; + struct rlimit os_rlim; + int ret = getrlimit(resource, &os_rlim); + rlim->rlim_cur = (unsigned long int) os_rlim.rlim_cur; + rlim->rlim_max = (unsigned long int) os_rlim.rlim_max; + return ret; +} + +int darwin_my_clock_gettime(clockid_t clk_id, struct timespec *tp) { + if (clk_id == 1) + clk_id = CLOCK_MONOTONIC; + return clock_gettime(clk_id, tp); +} + +int darwin_my_ioctl(int s, int cmd, void* arg) { + unsigned long mcmd = cmd; + if (cmd == 0x5421) + mcmd = FIONBIO; + else + printf("potentially unsupported ioctl: %x\n", cmd); + return ioctl(s, mcmd, arg); +} + +int* darwin_my_errno() { + int* ret = &errno; + if (*ret == EAGAIN) *ret = 11; + else if (*ret == ETIMEDOUT) *ret = 110; + else if (*ret == EINPROGRESS) *ret = 115; + return ret; +} + +void* darwin_my_memalign(size_t alignment, size_t size) { + void* ret; + if (posix_memalign(&ret, alignment, size) != 0) + return NULL; + return ret; +} + +int darwin_my_prctl(int opt) { + printf("unsupported prctl %i\n", opt); + return 0; +} + +static void* darwin_my_mmap(void *addr, size_t length, int prot, int flags, + int fd, off_t offset) { + int flags_m = flags & 0xf; + if (flags & 0x10) + flags_m |= MAP_FIXED; + if (flags & 0x20) + flags_m |= MAP_ANON; + if (flags & 0x4000) + flags_m |= MAP_NORESERVE; + return mmap(addr, length, prot, flags_m, fd, offset); +} +#endif + +static int my_set_errno(int oi_errno) +{ + errno = oi_errno; + return -1; +} + +extern long my_sysconf(int name); + +FP_ATTRIB static double my_strtod(const char *nptr, char **endptr) +{ + if (locale_inited == 0) + { + hybris_locale = newlocale(LC_ALL_MASK, "C", 0); + locale_inited = 1; + } + return strtod_l(nptr, endptr, hybris_locale); +} + +extern int __cxa_atexit(void (*)(void*), void*, void*); +extern void __cxa_finalize(void * d); + + +/** + * NOTE: Normally we don't have to wrap __system_property_get (libc.so) as it is only used + * through the property_get (libcutils.so) function. However when property_get is used + * internally in libcutils.so we don't have any chance to hook our replacement in. + * Therefore we have to hook __system_property_get too and just replace it with the + * implementation of our internal property handling + */ + +int my_system_property_get(const char *name, char *value) +{ + return property_get(name, value, NULL); +} + +static __thread void *tls_hooks[16]; + +void *__get_tls_hooks() +{ + return tls_hooks; +} + +extern off_t __umoddi3(off_t a, off_t b); +extern off_t __udivdi3(off_t a, off_t b); +extern off_t __divdi3(off_t a, off_t b); + +void _hybris_stack_stack_chk_fail() { + printf("__stack_chk_fail\n"); + abort(); +} + + +void *get_hooked_symbol(const char *sym); +void *my_android_dlsym(void *handle, const char *symbol) +{ + void *retval = get_hooked_symbol(symbol); + if (retval != NULL) { + return retval; + } + return android_dlsym(handle, symbol); +} + +static void my_assert2(const char* file, int line, const char* function, const char* msg) { + fprintf(stderr, "%s:%u: %s: assertion \"%s\" failed", file, line, function, msg); + abort(); +} +static void my_assert(const char* file, int line, const char* msg) { + fprintf(stderr, "%s:%u: assertion \"%s\" failed", file, line, msg); + abort(); +} + +extern void bionic_setjmp(); +extern void bionic_longjmp(); + + +struct _hook main_hooks[] = { + {"property_get", property_get }, + {"property_set", property_set }, + {"__system_property_get", my_system_property_get }, + {"__stack_chk_fail", _hybris_stack_stack_chk_fail}, + {"__stack_chk_guard", &_hybris_stack_chk_guard}, + {"printf", printf }, + {"malloc", my_malloc }, + // {"pvalloc", pvalloc }, + {"getxattr", getxattr}, + {"__assert", my_assert }, + {"__assert2", my_assert2 }, + {"uname", uname }, + {"sched_yield", sched_yield}, + {"ldexp", ldexp}, +#ifdef __APPLE__ + {"getrlimit", darwin_my_getrlimit}, + {"ioctl", darwin_my_ioctl}, + {"memalign", darwin_my_memalign}, +#else + {"getrlimit", getrlimit}, + {"ioctl", ioctl}, + {"memalign", memalign}, +#endif + {"gettimeofday", gettimeofday}, + {"utime", utime}, + {"setlocale", setlocale}, + {"localeconv", localeconv}, +#ifdef USE_BIONIC_SETJMP + {"setjmp", bionic_setjmp}, + {"longjmp", bionic_longjmp}, +#else + {"setjmp", _setjmp}, + {"longjmp", longjmp}, +#endif + {"__umoddi3", __umoddi3}, + {"__udivdi3", __udivdi3}, + {"__divdi3", __divdi3}, + /* stdlib.h */ + // {"__ctype_get_mb_cur_max", __ctype_get_mb_cur_max}, +#ifndef AVOID_FLOAT_POINT_HOOKS + {"atof", atof}, +#endif + {"atoi", atoi}, + {"atol", atol}, + {"atoll", atoll}, +#ifndef AVOID_FLOAT_POINT_HOOKS + {"strtod", strtod}, + {"strtof", strtof}, + {"strtold", strtold}, +#endif + {"strtol", strtol}, + {"strtoul", strtoul}, + {"strtoq", strtoq}, + {"strtouq", strtouq}, + {"strtoll", strtoll}, + {"strtoull", strtoull}, + // {"strtol_l", strtol_l}, + {"strtoul_l", strtoul_l}, + // {"strtoll_l", strtoll_l}, + // {"strtoull_l", strtoull_l}, + // {"strtod_l", strtod_l}, +#ifndef AVOID_FLOAT_POINT_HOOKS + {"strtof_l", strtof_l}, + {"strtold_l", strtold_l}, +#endif + // {"l64a", l64a}, + // {"a64l", a64l}, + {"random", random}, + {"srandom", srandom}, + {"initstate", initstate}, + {"setstate", setstate}, + // {"random_r", random_r}, + // {"srandom_r", srandom_r}, + // {"initstate_r", initstate_r}, + // {"setstate_r", setstate_r}, + {"rand", rand}, + {"srand", srand}, + {"rand_r", rand_r}, + {"drand48", drand48}, + {"erand48", erand48}, + {"lrand48", lrand48}, + {"nrand48", nrand48}, + {"mrand48", mrand48}, + {"jrand48", jrand48}, + {"srand48", srand48}, + {"seed48", seed48}, + {"lcong48", lcong48}, + // {"drand48_r", drand48_r}, + // {"erand48_r", erand48_r}, + // {"lrand48_r", lrand48_r}, + // {"nrand48_r", nrand48_r}, + // {"mrand48_r", mrand48_r}, + // {"jrand48_r", jrand48_r}, + // {"srand48_r", srand48_r}, + // {"seed48_r", seed48_r}, + // {"lcong48_r", lcong48_r}, + {"calloc", calloc}, + {"realloc", realloc}, + {"free", free}, + {"valloc", valloc}, + {"posix_memalign", posix_memalign}, + // {"aligned_alloc", aligned_alloc}, + {"abort", abort}, + {"atexit", atexit}, + // {"on_exit", on_exit}, + {"exit", exit}, + // {"quick_exit", quick_exit}, + {"_Exit", _Exit}, + {"getenv", getenv}, + // {"secure_getenv", secure_getenv}, + {"putenv", putenv}, + {"setenv", setenv}, + {"unsetenv", unsetenv}, + // {"clearenv", clearenv}, + {"mkstemp", mkstemp}, + // {"mkstemp64", mkstemp64}, + // {"mkstemps", mkstemps}, + // {"mkstemps64", mkstemps64}, + {"mkdtemp", mkdtemp}, + {"mkostemp", mkostemp}, + // {"mkostemp64", mkostemp64}, + // {"mkostemps", mkostemps}, + // {"mkostemps64", mkostemps64}, + {"system", system}, + // {"canonicalize_file_name", canonicalize_file_name}, + {"realpath", realpath}, + {"bsearch", bsearch}, + {"qsort", qsort}, + {"qsort_r", qsort_r}, + {"abs", abs}, + {"labs", labs}, + {"llabs", llabs}, + {"div", div}, + {"ldiv", ldiv}, + {"lldiv", lldiv}, +#ifndef AVOID_FLOAT_POINT_HOOKS + {"ecvt", ecvt}, + {"fcvt", fcvt}, + {"gcvt", gcvt}, +#endif + // {"qecvt", qecvt}, + // {"qfcvt", qfcvt}, + // {"qgcvt", qgcvt}, + // {"ecvt_r", ecvt_r}, + // {"fcvt_r", fcvt_r}, + // {"qecvt_r", qecvt_r}, + // {"qfcvt_r", qfcvt_r}, + {"mblen", mblen}, + {"mbtowc", mbtowc}, + {"wctomb", wctomb}, + {"mbstowcs", mbstowcs}, + {"wcstombs", wcstombs}, + {"wcsrtombs", wcsrtombs}, + // {"rpmatch", rpmatch}, + {"getsubopt", getsubopt}, + {"posix_openpt", posix_openpt}, + {"grantpt", grantpt}, + {"unlockpt", unlockpt}, + {"ptsname", ptsname}, + // {"ptsname_r", ptsname_r}, + // {"getpt", getpt}, + {"getloadavg", getloadavg}, + /* string.h */ + {"memccpy",memccpy}, + {"memchr",memchr}, + // {"memrchr",memrchr}, + {"memcmp",memcmp}, + {"memcpy",my_memcpy}, + {"memmove",memmove}, + {"memset",memset}, + {"memmem",memmem}, + // {"memswap",memswap}, + {"strchr",strchr}, + {"strrchr",strrchr}, + {"strlen",my_strlen}, + {"__strlen_chk",my_strlen_chk}, + {"strcmp",strcmp}, + {"strcpy",strcpy}, + {"strcat",strcat}, + {"strdup",strdup}, + {"strstr",strstr}, + {"strtok",strtok}, + {"strtok_r",strtok_r}, + {"strerror",strerror}, + {"strerror_r",strerror_r}, + {"strnlen",strnlen}, + {"strncat",strncat}, + {"strndup",strndup}, + {"strncmp",strncmp}, + {"strncpy",strncpy}, + // {"strlcat",strlcat}, + {"strlcpy",strlcpy}, + {"strcspn",strcspn}, + {"strpbrk",strpbrk}, + {"strsep",strsep}, + {"strspn",strspn}, + {"strsignal",strsignal}, + {"getgrnam", getgrnam}, + {"strcoll",strcoll}, + {"strxfrm",strxfrm}, + /* wchar.h */ + {"wcslen",wcslen}, + /* strings.h */ + {"bcmp",bcmp}, + {"bcopy",bcopy}, + {"bzero",bzero}, + {"ffs",ffs}, + {"index",index}, + {"rindex",rindex}, + {"strcasecmp",strcasecmp}, + {"strncasecmp",strncasecmp}, + /* errno.h */ +#ifdef __APPLE__ + {"__errno", darwin_my_errno}, +#else + {"__errno", __errno_location}, +#endif + {"__set_errno", my_set_errno}, + {"sysconf", my_sysconf}, + {"dlopen", android_dlopen}, + {"dlerror", android_dlerror}, + {"dlsym", my_android_dlsym}, + {"dladdr", android_dladdr}, + {"dlclose", android_dlclose}, + {"__get_tls_hooks", __get_tls_hooks}, + {"sscanf", sscanf}, + {"scanf", scanf}, + {"vscanf", vscanf}, + {"vsscanf", vsscanf}, + {"openlog", openlog}, + {"syslog", syslog}, + {"closelog", closelog}, + {"vsyslog", vsyslog}, + // {"timer_create", timer_create}, + // {"timer_settime", timer_settime}, + // {"timer_gettime", timer_gettime}, + // {"timer_delete", timer_delete}, + // {"timer_getoverrun", timer_getoverrun}, + {"writev", writev}, + /* unistd.h */ + {"access", access}, + {"lseek", lseek}, + // {"lseek64", lseek64}, + {"close", close}, + {"read", read}, + {"write", write}, +#ifdef __APPLE__ + {"pread", darwin_my_pread}, + {"pwrite", darwin_my_pwrite}, +#else + {"pread", pread}, + {"pwrite", pwrite}, +#endif + // {"pread64", pread64}, + // {"pwrite64", pwrite64}, + {"pipe", pipe}, + // {"pipe2", pipe2}, + {"alarm", alarm}, + {"sleep", sleep}, + {"usleep", usleep}, + {"pause", pause}, + {"chown", chown}, + {"fchown", fchown}, + {"lchown", lchown}, + {"chdir", chdir}, + {"fchdir", fchdir}, + {"getcwd", getcwd}, + // {"get_current_dir_name", get_current_dir_name}, + {"dup", dup}, + {"dup2", dup2}, + // {"dup3", dup3}, + // {"execve", execve}, + {"execv", execv}, + {"execle", execle}, + {"execl", execl}, + {"execvp", execvp}, + {"execlp", execlp}, + // {"execvpe", execvpe}, + {"nice", nice}, + {"_exit", _exit}, + {"pathconf", pathconf}, + {"fpathconf", fpathconf}, + {"confstr", confstr}, + {"getpid", getpid}, + {"getppid", getppid}, + {"getpgrp", getpgrp}, + // {"__getpgid", __getpgid}, + // {"getpgid", getpgid}, + {"setpgid", setpgid}, + {"setpgrp", setpgrp}, + {"setsid", setsid}, + {"getsid", getsid}, + {"getuid", getuid}, + {"geteuid", geteuid}, + {"getgid", getgid}, + {"getegid", getegid}, + {"getgroups", getgroups}, + // {"group_member", group_member}, + {"setuid", setuid}, + {"setreuid", setreuid}, + {"seteuid", seteuid}, + {"setgid", setgid}, + {"setregid", setregid}, + {"setegid", setegid}, + // {"getresuid", getresuid}, + // {"getresgid", getresgid}, + // {"setresuid", setresuid}, + // {"setresgid", setresgid}, + {"fork", fork}, + {"vfork", vfork}, + {"ttyname", ttyname}, + {"ttyname_r", ttyname_r}, + {"isatty", isatty}, + {"ttyslot", ttyslot}, + {"link", link}, + {"symlink", symlink}, + {"readlink", readlink}, + {"unlink", unlink}, + {"rmdir", rmdir}, + {"tcgetpgrp", tcgetpgrp}, + {"getlogin", getlogin}, + {"getlogin_r", getlogin_r}, + {"gethostname", gethostname}, + {"sethostname", sethostname}, + {"sethostid", sethostid}, + {"getdomainname", getdomainname}, + {"setdomainname", setdomainname}, + // {"vhangup", vhangup}, + // {"profil", profil}, + {"acct", acct}, + {"getusershell", getusershell}, + {"endusershell", endusershell}, + {"setusershell", setusershell}, + {"daemon", daemon}, + {"chroot", chroot}, + {"getpass", getpass}, + {"fsync", fsync}, + // {"syncfs", syncfs}, + {"gethostid", gethostid}, + {"sync", sync}, + {"getpagesize", getpagesize}, + {"getdtablesize", getdtablesize}, + {"truncate", truncate}, + // {"truncate64", truncate64}, + {"ftruncate", ftruncate}, + // {"ftruncate64", ftruncate64}, + {"brk", brk}, + {"sbrk", sbrk}, + {"syscall", syscall}, + {"lockf", lockf}, + // {"lockf64", lockf64}, +#ifdef __APPLE__ + {"fdatasync", darwin_my_fdatasync}, +#else + {"fdatasync", fdatasync}, +#endif + {"swab", swab}, + /* time.h */ + {"clock", clock}, + {"time", time}, + {"difftime", difftime}, + {"mktime", mktime}, + {"strftime", strftime}, + {"strptime", strptime}, + {"strftime_l", strftime_l}, + {"strptime_l", strptime_l}, + {"gmtime", gmtime}, + {"localtime", localtime}, + {"gmtime_r", gmtime_r}, + {"localtime_r", localtime_r}, + {"asctime", asctime}, + {"ctime", ctime}, + {"asctime_r", asctime_r}, + {"ctime_r", ctime_r}, + // {"__tzname", __tzname}, + // {"__daylight", &__daylight}, + // {"__timezone", &__timezone}, + {"tzname", tzname}, + {"tzset", tzset}, + {"daylight", &daylight}, + {"timezone", &timezone}, + // {"stime", stime}, + {"timegm", timegm}, + {"timelocal", timelocal}, + // {"dysize", dysize}, + {"nanosleep", nanosleep}, + {"clock_getres", clock_getres}, +#ifdef __APPLE__ + {"clock_gettime", darwin_my_clock_gettime}, +#else + {"clock_gettime", clock_gettime}, +#endif + {"clock_settime", clock_settime}, + // {"clock_nanosleep", clock_nanosleep}, + // {"clock_getcpuclockid", clock_getcpuclockid}, + /* mman.h */ +#ifdef __APPLE__ + {"mmap", darwin_my_mmap}, +#else + {"mmap", mmap}, +#endif + {"munmap", munmap}, + {"mprotect", mprotect}, + {"madvise", madvise}, + {"msync", msync}, + {"mlock", mlock}, + {"munlock", munlock}, + {"mlockall", mlockall}, + {"munlockall", munlockall}, + /* signal.h */ + // {"__sysv_signal", __sysv_signal}, + // {"sysv_signal", sysv_signal}, + {"signal", signal}, + {"bsd_signal", signal}, + {"kill", kill}, + {"killpg", killpg}, + {"raise", raise}, + {"sigaction", sigaction}, + {"sigprocmask", sigprocmask}, + /* sys/epoll.h */ + {"epoll_create", epoll_create}, + // {"epoll_create1", epoll_create1}, + {"epoll_ctl", epoll_ctl}, + {"epoll_wait", epoll_wait}, + /* grp.h */ + {"getgrgid", getgrgid}, + {"__cxa_atexit", __cxa_atexit}, + {"__cxa_finalize", __cxa_finalize}, + /* arpa/inet.h */ + {"inet_addr", inet_addr}, + {"inet_lnaof", inet_lnaof}, + {"inet_makeaddr", inet_makeaddr}, + {"inet_netof", inet_netof}, + {"inet_network", inet_network}, + {"inet_ntoa", inet_ntoa}, + {"inet_pton", inet_pton}, + {"inet_ntop", inet_ntop}, + /* net/if.h */ + {"if_nametoindex", if_nametoindex}, + {"if_indextoname", if_indextoname}, + {"if_nameindex", if_nameindex}, + {"if_freenameindex", if_freenameindex}, + /* ctype.h */ + {"isalnum", hybris_isalnum}, + {"isalpha", hybris_isalpha}, + {"isblank", hybris_isblank}, + {"iscntrl", hybris_iscntrl}, + {"isdigit", hybris_isdigit}, + {"isgraph", hybris_isgraph}, + {"islower", hybris_islower}, + {"isprint", hybris_isprint}, + {"ispunct", hybris_ispunct}, + {"isspace", hybris_isspace}, + {"isupper", hybris_isupper}, + {"isxdigit", hybris_isxdigit}, + {"tolower", tolower}, + {"toupper", toupper}, + {"_tolower_tab_", &_hybris_tolower_tab_}, + {"_toupper_tab_", &_hybris_toupper_tab_}, + {"_ctype_", &_hybris_ctype_}, + /* wctype.h */ + {"wctype", wctype}, + {"iswspace", iswspace}, + {"iswctype", iswctype}, + {"towlower", towlower}, + {"towupper", towupper}, + /* wchar.h */ + {"wctob", wctob}, + {"btowc", btowc}, + {"wmemchr", wmemchr}, + {"wmemcmp", wmemcmp}, + {"wmemcpy", wmemcpy}, + {"wmemset", wmemset}, + {"wmemmove", wmemmove}, + {"wcrtomb", wcrtomb}, + {"mbrtowc", mbrtowc}, + {"wcscoll", wcscoll}, + {"wcsxfrm", wcsxfrm}, + {"wcsftime", wcsftime}, + /* sys/prctl.h */ +#ifdef __APPLE__ + {"prctl", darwin_my_prctl}, +#else + {"prctl", prctl}, +#endif + /* sys/resource.h */ + {"getrusage", getrusage}, + {NULL, NULL}, +}; +static struct _hook* user_hooks = NULL; +static int user_hooks_size = 0; +static int user_hooks_arr_size = 0; + +void user_hooks_resize() { + if (user_hooks_arr_size == 0) { + user_hooks_arr_size = 512; + user_hooks = (struct _hook*) malloc(user_hooks_arr_size * sizeof(struct _hook)); + } else { + user_hooks_arr_size *= 2; + struct _hook* new_array = (struct _hook*) malloc(user_hooks_arr_size * sizeof(struct _hook)); + memcpy(&new_array[0], &user_hooks[0], user_hooks_size * sizeof(struct _hook)); + free(user_hooks); + user_hooks = new_array; + } +} + +void add_user_hook(struct _hook h, int user) { + if (user_hooks_size + 1 >= user_hooks_arr_size) + user_hooks_resize(); + + for (int i = 0; i < user_hooks_size; i++) { + if (strcmp(user_hooks[i].name, h.name) == 0) { + if (!user) + printf("warn: duplicate hook: %s\n", h.name); + user_hooks[i] = h; + return; + } + } + user_hooks[user_hooks_size++] = h; +} + +void hybris_register_hooks(struct _hook *hooks) { + struct _hook *ptr = &hooks[0]; + while (ptr->name != NULL) + { + add_user_hook(*ptr, 0); + ptr++; + } +} + +void hybris_hook(const char *name, void* func) { + struct _hook h; + h.name = name; + h.func = func; + add_user_hook(h, 1); +} + +void *get_hooked_symbol(const char *sym) +{ + int i; + + static int counter = -1; + + for (i = 0; i < user_hooks_size; i++) { + struct _hook* h = &user_hooks[i]; + if (strcmp(sym, h->name) == 0) { + //printf("redirect %s --> %s\n", sym, h->name); + return h->func; + } + } + + if (strstr(sym, "pthread") != NULL) + { + /* safe */ + if (strcmp(sym, "pthread_sigmask") == 0) + return NULL; + /* not safe */ + counter--; + LOGD("%s %i\n", sym, counter); + return (void *) counter; + } + return NULL; +} + +#include "hooks_list.h" + +// This file will be definitely included and therefore it's safe to use __attribute__((constructor)) here. +__attribute__((constructor)) +static void android_linker_init() +{ + hybris_register_default_hooks(); +} diff --git a/libhybris/src/hooks_darwin_pthread_once.cpp b/libhybris/src/hooks_darwin_pthread_once.cpp new file mode 100644 index 0000000..98127f4 --- /dev/null +++ b/libhybris/src/hooks_darwin_pthread_once.cpp @@ -0,0 +1,32 @@ +#include "hooks_darwin_pthread_once.h" + +#include +#include +#include + +void* _pthread_once_done; +std::mutex _pthread_once_mutex; + +extern "C" int darwin_my_pthread_once(void *once_control, void (*init_routine)(void)) { + std::atomic* atm = (std::atomic*) once_control; + std::unique_lock lock (_pthread_once_mutex); + void* ldval = atm->load(); + if (ldval == (void*) &_pthread_once_done) + return 0; + + if (ldval == nullptr) { + std::shared_ptr* once_control_r = new std::shared_ptr(new pthread_once_t()); + **once_control_r = PTHREAD_ONCE_INIT; + atm->store(once_control_r); + lock.unlock(); + pthread_once((*once_control_r).get(), init_routine); + lock.lock(); + atm->store((void*) &_pthread_once_done); + delete once_control_r; // this will delete the pointer as well after all references are gone + } else { + std::shared_ptr once_control_r = *((std::shared_ptr*) ldval); // deref it so we get a copy of the pointer and hold a ref + lock.unlock(); + pthread_once(once_control_r.get(), init_routine); + } + return 0; +} diff --git a/libhybris/src/hooks_darwin_pthread_once.h b/libhybris/src/hooks_darwin_pthread_once.h new file mode 100644 index 0000000..8fb4e98 --- /dev/null +++ b/libhybris/src/hooks_darwin_pthread_once.h @@ -0,0 +1,12 @@ +#ifndef HOOKS_DARWIN_PTHREAD_ONCE_H_ +#define HOOKS_DARWIN_PTHREAD_ONCE_H_ + +#ifdef __cplusplus +extern "C" { +#endif +int darwin_my_pthread_once(void *once_control, void (*init_routine)(void)); +#ifdef __cplusplus +} +#endif + +#endif /* HOOKS_DARWIN_PTHREAD_ONCE_H_ */ diff --git a/libhybris/src/hooks_dirent.c b/libhybris/src/hooks_dirent.c new file mode 100644 index 0000000..7f2809b --- /dev/null +++ b/libhybris/src/hooks_dirent.c @@ -0,0 +1,182 @@ +#include +#include +#include +#include +#include + +#include "../include/hybris/hook.h" + +/* "struct dirent" from bionic/libc/include/dirent.h */ +struct bionic_dirent { + uint64_t d_ino; + int64_t d_off; + unsigned short d_reclen; + unsigned char d_type; + char d_name[256]; +}; + +static struct bionic_dirent *my_readdir(DIR *dirp) +{ + /** + * readdir(3) manpage says: + * The data returned by readdir() may be overwritten by subsequent calls + * to readdir() for the same directory stream. + * + * XXX: At the moment, for us, the data will be overwritten even by + * subsequent calls to /different/ directory streams. Eventually fix that + * (e.g. by storing per-DIR * bionic_dirent structs, and removing them on + * closedir, requires hooking of all funcs returning/taking DIR *) and + * handling the additional data attachment there) + **/ + + static struct bionic_dirent result; + + struct dirent *real_result = readdir(dirp); + if (!real_result) { + return NULL; + } + + result.d_ino = real_result->d_ino; +#ifndef __APPLE__ + result.d_off = real_result->d_off; +#endif + result.d_reclen = real_result->d_reclen; + result.d_type = real_result->d_type; + memcpy(result.d_name, real_result->d_name, sizeof(result.d_name)); + + // Make sure the string is zero-terminated, even if cut off (which + // shouldn't happen, as both bionic and glibc have d_name defined + // as fixed array of 256 chars) + result.d_name[sizeof(result.d_name)-1] = '\0'; + return &result; +} + +static int my_readdir_r(DIR *dir, struct bionic_dirent *entry, + struct bionic_dirent **result) +{ + struct dirent entry_r; + struct dirent *result_r; + + int res = readdir_r(dir, &entry_r, &result_r); + + if (res == 0) { + if (result_r != NULL) { + *result = entry; + + entry->d_ino = entry_r.d_ino; +#ifndef __APPLE__ + entry->d_off = entry_r.d_off; +#endif + entry->d_reclen = entry_r.d_reclen; + entry->d_type = entry_r.d_type; + memcpy(entry->d_name, entry_r.d_name, sizeof(entry->d_name)); + + // Make sure the string is zero-terminated, even if cut off (which + // shouldn't happen, as both bionic and glibc have d_name defined + // as fixed array of 256 chars) + entry->d_name[sizeof(entry->d_name) - 1] = '\0'; + } else { + *result = NULL; + } + } + + return res; +} + +static int my_alphasort(struct bionic_dirent **a, + struct bionic_dirent **b) +{ + return strcoll((*a)->d_name, (*b)->d_name); +} + +#ifndef __APPLE__ +static int my_versionsort(struct bionic_dirent **a, + struct bionic_dirent **b) +{ + return strverscmp((*a)->d_name, (*b)->d_name); +} + +static int my_scandirat(int fd, const char *dir, + struct bionic_dirent ***namelist, + int (*filter) (const struct bionic_dirent *), + int (*compar) (const struct bionic_dirent **, + const struct bionic_dirent **)) +{ + struct dirent **namelist_r; + struct bionic_dirent **result; + struct bionic_dirent *filter_r; + + int i = 0; + size_t nItems = 0; + + int res = scandirat(fd, dir, &namelist_r, NULL, NULL); + + if (res != 0 && namelist_r != NULL) { + + result = malloc(res * sizeof(struct bionic_dirent)); + if (!result) + return -1; + + for (i = 0; i < res; i++) { + filter_r = malloc(sizeof(struct bionic_dirent)); + if (!filter_r) { + while (i-- > 0) + free(result[i]); + free(result); + return -1; + } + filter_r->d_ino = namelist_r[i]->d_ino; + filter_r->d_off = namelist_r[i]->d_off; + filter_r->d_reclen = namelist_r[i]->d_reclen; + filter_r->d_type = namelist_r[i]->d_type; + + strcpy(filter_r->d_name, namelist_r[i]->d_name); + filter_r->d_name[sizeof(namelist_r[i]->d_name) - 1] = '\0'; + + if (filter != NULL && !(*filter)(filter_r)) {//apply filter + free(filter_r); + continue; + } + + result[nItems++] = filter_r; + } + if (nItems && compar != NULL) // sort + qsort(result, nItems, sizeof(struct bionic_dirent *), (int (*)(const void*, const void*)) compar); + + *namelist = result; + } + + return res; +} + +static int my_scandir(const char *dir, + struct bionic_dirent ***namelist, + int (*filter) (const struct bionic_dirent *), + int (*compar) (const struct bionic_dirent **, + const struct bionic_dirent **)) +{ + return my_scandirat(AT_FDCWD, dir, namelist, filter, compar); +} +#endif + + + +struct _hook dirent_hooks[] = { + /* dirent.h */ + {"opendir", opendir}, + {"fdopendir", fdopendir}, + {"closedir", closedir}, + {"readdir", my_readdir}, + {"readdir_r", my_readdir_r}, + {"rewinddir", rewinddir}, + {"seekdir", seekdir}, + {"telldir", telldir}, + {"dirfd", dirfd}, +#ifndef __APPLE__ + {"scandir", my_scandir}, + {"scandirat", my_scandirat}, + {"versionsort", my_versionsort}, +#endif + {"alphasort", my_alphasort}, + {NULL, NULL} +}; \ No newline at end of file diff --git a/libhybris/src/hooks_io.c b/libhybris/src/hooks_io.c new file mode 100644 index 0000000..35af936 --- /dev/null +++ b/libhybris/src/hooks_io.c @@ -0,0 +1,691 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef __APPLE__ +#include +#endif + +#include "../include/hybris/hook.h" +#include "../include/hybris/binding.h" + +struct open_redirect { + const char *from; + const char *to; +}; + +struct open_redirect open_redirects[] = { + { "/dev/log/main", "/dev/log_main" }, + { "/dev/log/radio", "/dev/log_radio" }, + { "/dev/log/system", "/dev/log_system" }, + { "/dev/log/events", "/dev/log_events" }, + { NULL, NULL } +}; + +#ifdef __APPLE__ + +int darwin_convert_fd_flags_to_native(int flags) +{ + int ret = flags & 4; + if (flags & 0100) ret |= O_CREAT; + if (flags & 0200) ret |= O_EXCL; + if (flags & 01000) ret |= O_TRUNC; + if (flags & 02000) ret |= O_APPEND; + if (flags & 04000) ret |= O_NONBLOCK; + return ret; +} + +int darwin_convert_fd_flags_from_native(int flags) +{ + int ret = flags & 4; + if (flags & O_CREAT) + ret |= 0100; + return ret; +} + +#endif + +int my_open(const char *pathname, int flags, ...) +{ + va_list ap; + mode_t mode = 0; + const char *target_path = pathname; + + if (pathname != NULL) { + struct open_redirect *entry = &open_redirects[0]; + while (entry->from != NULL) { + if (strcmp(pathname, entry->from) == 0) { + target_path = entry->to; + break; + } + entry++; + } + } + +#ifdef __APPLE__ + flags = darwin_convert_fd_flags_to_native(flags); +#endif + + if (flags & O_CREAT) { + va_start(ap, flags); + mode = (mode_t) va_arg(ap, int); + va_end(ap); + } + + return open(target_path, flags, mode); +} + + +struct bionic_stat64 { + unsigned long long st_dev; + unsigned char __pad0[4]; + unsigned long __st_ino; + unsigned int st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + unsigned long long st_rdev; + unsigned char __pad3[4]; + long long st_size; + unsigned long st_blksize; + unsigned long long st_blocks; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + unsigned long long st_ino; +}; + +void stat_to_bionic_stat(struct stat *s, struct bionic_stat64 *b) { + b->st_dev = s->st_dev; + b->__st_ino = s->st_ino; + b->st_mode = s->st_mode; + b->st_nlink = s->st_nlink; + b->st_uid = s->st_uid; + b->st_gid = s->st_gid; + b->st_rdev = s->st_rdev; + b->st_size = s->st_size; + b->st_blksize = (unsigned long) s->st_blksize; + b->st_blocks = (unsigned long long) s->st_blocks; +#ifdef __APPLE__ + b->st_atim = s->st_atimespec; + b->st_mtim = s->st_mtimespec; + b->st_ctim = s->st_ctimespec; +#else + b->st_atim = s->st_atim; + b->st_mtim = s->st_mtim; + b->st_ctim = s->st_ctim; +#endif + b->st_ino = s->st_ino; +} + +#ifndef __APPLE__ +void stat64_to_bionic_stat(struct stat64 *s, struct bionic_stat64 *b) { + b->st_dev = s->st_dev; + b->__st_ino = s->__st_ino; + b->st_mode = s->st_mode; + b->st_nlink = s->st_nlink; + b->st_uid = s->st_uid; + b->st_gid = s->st_gid; + b->st_rdev = s->st_rdev; + b->st_size = s->st_size; + b->st_blksize = (unsigned long) s->st_blksize; + b->st_blocks = (unsigned long long) s->st_blocks; + b->st_atim = s->st_atim; + b->st_mtim = s->st_mtim; + b->st_ctim = s->st_ctim; + b->st_ino = s->st_ino; +} +#endif + +int my_stat(const char* path, struct bionic_stat64 *s) +{ + struct stat tmp; + int ret = stat(path, &tmp); + stat_to_bionic_stat(&tmp, s); + return ret; +} + +int my_fstat(int fd, struct bionic_stat64 *s) +{ + struct stat tmp; + int ret = fstat(fd, &tmp); + stat_to_bionic_stat(&tmp, s); + return ret; +} + +#ifndef __APPLE__ +int my_stat64(const char* path, struct bionic_stat64 *s) +{ + struct stat64 tmp; + int ret = stat64(path, &tmp); + stat64_to_bionic_stat(&tmp, s); + return ret; +} + +int my_fstat64(int fd, struct bionic_stat64 *s) +{ + struct stat64 tmp; + int ret = fstat64(fd, &tmp); + stat64_to_bionic_stat(&tmp, s); + return ret; +} +#endif + +#ifdef __APPLE__ + +struct android_flock { + short l_type; + short l_whence; + long l_start; + long l_len; + long l_sysid; + int l_pid; + long pad[4]; +}; + +int darwin_my_fcntl(int fd, int cmd, ...) +{ + int ret = -1; + va_list ap; + va_start(ap, cmd); + if (cmd == 2) { + int flags = va_arg(ap, int); + ret = fcntl(fd, F_SETFD, flags); + } else if (cmd == 4) { + int flags = va_arg(ap, int); + ret = fcntl(fd, F_SETFL, darwin_convert_fd_flags_to_native(flags)); + } else if (cmd == 6) { + struct android_flock* afl = va_arg(ap, struct android_flock*); + struct flock fl; + memset(&fl, 0, sizeof(fl)); + fl.l_type = afl->l_type; + fl.l_whence = afl->l_whence; + fl.l_start = afl->l_start; + fl.l_len = afl->l_len; + fl.l_pid = afl->l_pid; + ret = fcntl(fd, F_SETLK, &fl); + } else { + printf("unsupported fcntl %i\n", cmd); + } + va_end(ap); + return ret; +} + +#endif + + +/* + * __isthreaded is used in bionic's stdio.h to choose between a fast internal implementation + * and a more classic stdio function call. + * For example: + * #define __sfeof(p) (((p)->_flags & __SEOF) != 0) + * #define feof(p) (!__isthreaded ? __sfeof(p) : (feof)(p)) + * + * We see here that if __isthreaded is false, then it will use directly the bionic's FILE structure + * instead of calling one of the hooked methods. + * Therefore we need to set __isthreaded to true, even if we are not in a multi-threaded context. + */ +static int __my_isthreaded = 1; + +struct aFILE { + unsigned char* _p; + int _r, _w; +#if defined(__LP64__) + int _flags, _file; +#else + short _flags, _file; +#endif + FILE* actual; +}; + +/* + * redirection for bionic's __sF, which is defined as: + * FILE __sF[3]; + * #define stdin &__sF[0]; + * #define stdout &__sF[1]; + * #define stderr &__sF[2]; + * So the goal here is to catch the call to file methods where the FILE* pointer + * is either stdin, stdout or stderr, and translate that pointer to a valid glibc + * pointer. + * Currently, only fputs is managed. + */ +#define BIONIC_SIZEOF_FILE 84 +static char my_sF[3*BIONIC_SIZEOF_FILE] = {0}; +static FILE *_get_actual_fp(struct aFILE *fp) +{ + char *c_fp = (char*)fp; + if (c_fp == &my_sF[0]) + return stdin; + else if (c_fp == &my_sF[BIONIC_SIZEOF_FILE]) + return stdout; + else if (c_fp == &my_sF[BIONIC_SIZEOF_FILE*2]) + return stderr; + + return fp->actual; +} + +static void my_clearerr(struct aFILE *fp) +{ + clearerr(_get_actual_fp(fp)); +} + +static struct aFILE* my_fopen(const char *filename, const char *mode) +{ + FILE* file = fopen(filename, mode); + if (file == NULL) + return NULL; + struct aFILE* afile = (struct aFILE*) malloc(sizeof(struct aFILE)); + afile->_file = (short) fileno(file); + afile->actual = file; + afile->_flags = 0; + return afile; +} + +static struct aFILE* my_fdopen(int fd, const char *mode) +{ + FILE* file = fdopen(fd, mode); + if (file == NULL) + return NULL; + struct aFILE* afile = (struct aFILE*) malloc(sizeof(struct aFILE)); + afile->_file = (short) fileno(file); + afile->actual = file; + return afile; +} + +static int my_fclose(struct aFILE* fp) +{ + return fclose(_get_actual_fp(fp)); +} + +static int my_feof(struct aFILE* fp) +{ + return feof(_get_actual_fp(fp)); +} + +static int my_ferror(struct aFILE* fp) +{ + return ferror(_get_actual_fp(fp)); +} + +static int my_fflush(struct aFILE* fp) +{ + return fflush(_get_actual_fp(fp)); +} + +static int my_fgetc(struct aFILE* fp) +{ + return fgetc(_get_actual_fp(fp)); +} + +static int my_fgetpos(struct aFILE* fp, fpos_t *pos) +{ + return fgetpos(_get_actual_fp(fp), pos); +} + +static char* my_fgets(char *s, int n, struct aFILE* fp) +{ + return fgets(s, n, _get_actual_fp(fp)); +} + +FP_ATTRIB static int my_fprintf(struct aFILE* fp, const char *fmt, ...) +{ + int ret = 0; + + va_list args; + va_start(args,fmt); + ret = vfprintf(_get_actual_fp(fp), fmt, args); + va_end(args); + + return ret; +} + +static int my_fputc(int c, struct aFILE* fp) +{ + return fputc(c, _get_actual_fp(fp)); +} + +static int my_fputs(const char *s, struct aFILE* fp) +{ + return fputs(s, _get_actual_fp(fp)); +} + +static size_t my_fread(void *ptr, size_t size, size_t nmemb, struct aFILE* fp) +{ + size_t ret = fread(ptr, size, nmemb, _get_actual_fp(fp)); + fp->_flags = (short) (feof_unlocked(_get_actual_fp(fp)) ? 0x0020 : 0); + return ret; +} + +static FILE* my_freopen(const char *filename, const char *mode, struct aFILE* fp) +{ + return freopen(filename, mode, _get_actual_fp(fp)); +} + +FP_ATTRIB static int my_fscanf(struct aFILE* fp, const char *fmt, ...) +{ + int ret = 0; + + va_list args; + va_start(args,fmt); + ret = vfscanf(_get_actual_fp(fp), fmt, args); + va_end(args); + + return ret; +} + +static int my_fseek(struct aFILE* fp, long offset, int whence) +{ + return fseek(_get_actual_fp(fp), offset, whence); +} + +static int my_fseeko(struct aFILE* fp, off_t offset, int whence) +{ + return fseeko(_get_actual_fp(fp), offset, whence); +} + +static int my_fsetpos(struct aFILE* fp, const fpos_t *pos) +{ + return fsetpos(_get_actual_fp(fp), pos); +} + +static long my_ftell(struct aFILE* fp) +{ + return ftell(_get_actual_fp(fp)); +} + +static off_t my_ftello(struct aFILE* fp) +{ + return ftello(_get_actual_fp(fp)); +} + +static size_t my_fwrite(const void *ptr, size_t size, size_t nmemb, struct aFILE* fp) +{ + return fwrite(ptr, size, nmemb, _get_actual_fp(fp)); +} + +static int my_getc(struct aFILE* fp) +{ + return getc(_get_actual_fp(fp)); +} + +static ssize_t my_getdelim(char ** lineptr, size_t *n, int delimiter, struct aFILE* fp) +{ + return getdelim(lineptr, n, delimiter, _get_actual_fp(fp)); +} + +static ssize_t my_getline(char **lineptr, size_t *n, struct aFILE* fp) +{ + return getline(lineptr, n, _get_actual_fp(fp)); +} + + +static int my_putc(int c, struct aFILE* fp) +{ + return putc(c, _get_actual_fp(fp)); +} + +static void my_rewind(struct aFILE* fp) +{ + rewind(_get_actual_fp(fp)); +} + +static void my_setbuf(struct aFILE* fp, char *buf) +{ + setbuf(_get_actual_fp(fp), buf); +} + +static int my_setvbuf(struct aFILE* fp, char *buf, int mode, size_t size) +{ + return setvbuf(_get_actual_fp(fp), buf, mode, size); +} + +static int my_ungetc(int c, struct aFILE* fp) +{ + return ungetc(c, _get_actual_fp(fp)); +} + +static int my_vfprintf(struct aFILE* fp, const char *fmt, va_list arg) +{ + return vfprintf(_get_actual_fp(fp), fmt, arg); +} + + +static int my_vfscanf(struct aFILE* fp, const char *fmt, va_list arg) +{ + return vfscanf(_get_actual_fp(fp), fmt, arg); +} + +static int my_fileno(struct aFILE* fp) +{ + return fileno(_get_actual_fp(fp)); +} + + +static int my_pclose(struct aFILE* fp) +{ + return pclose(_get_actual_fp(fp)); +} + +static void my_flockfile(struct aFILE* fp) +{ + return flockfile(_get_actual_fp(fp)); +} + +static int my_ftrylockfile(struct aFILE* fp) +{ + return ftrylockfile(_get_actual_fp(fp)); +} + +static void my_funlockfile(struct aFILE* fp) +{ + return funlockfile(_get_actual_fp(fp)); +} + + +static int my_getc_unlocked(struct aFILE* fp) +{ + return getc_unlocked(_get_actual_fp(fp)); +} + +static int my_putc_unlocked(int c, struct aFILE* fp) +{ + return putc_unlocked(c, _get_actual_fp(fp)); +} + +/* exists only on the BSD platform +static char* my_fgetln(FILE *fp, size_t *len) +{ + return fgetln(_get_actual_fp(fp), len); +} +*/ + +static int my_fpurge(struct aFILE* fp) +{ +#ifdef __APPLE__ + fpurge(_get_actual_fp(fp)); +#else + __fpurge(_get_actual_fp(fp)); +#endif + + return 0; +} + +static int my_getw(struct aFILE* fp) +{ + return getw(_get_actual_fp(fp)); +} + +static int my_putw(int w, struct aFILE* fp) +{ + return putw(w, _get_actual_fp(fp)); +} + +static void my_setbuffer(struct aFILE* fp, char *buf, int size) +{ + setbuffer(_get_actual_fp(fp), buf, size); +} + +static int my_setlinebuf(struct aFILE* fp) +{ + setlinebuf(_get_actual_fp(fp)); + + return 0; +} + +static wint_t my_getwc(struct aFILE* fp) +{ + return getwc(_get_actual_fp(fp)); +} + +static wint_t my_ungetwc(wint_t c, struct aFILE* fp) +{ + return ungetwc(c, _get_actual_fp(fp)); +} + +static wint_t my_putwc(wchar_t c, struct aFILE* fp) +{ + return putwc(c, _get_actual_fp(fp)); +} + +#ifdef __APPLE__ + +int darwin_my_poll(struct pollfd *fds, nfds_t nfds, int timeout) +{ + // Mac OS has a broken poll implementation + struct timeval t; + t.tv_sec = timeout / 1000; + t.tv_usec = (timeout % 1000) * 1000; + + fd_set r_fdset, w_fdset, e_fdset; + int maxfd = 0; + FD_ZERO(&r_fdset); + FD_ZERO(&w_fdset); + FD_ZERO(&e_fdset); + for (nfds_t i = 0; i < nfds; i++) { + if (fds[i].fd > maxfd) + maxfd = fds[i].fd; + if (fds[i].events & POLLIN || fds[i].events & POLLPRI) + FD_SET(fds[i].fd, &r_fdset); + if (fds[i].events & POLLOUT) + FD_SET(fds[i].fd, &w_fdset); + FD_SET(fds[i].fd, &e_fdset); + } + int ret = select(maxfd + 1, &r_fdset, &w_fdset, &e_fdset, &t); + for (nfds_t i = 0; i < nfds; i++) { + fds[i].revents = 0; + if (FD_ISSET(fds[i].fd, &r_fdset)) + fds[i].revents |= POLLIN; + if (FD_ISSET(fds[i].fd, &w_fdset)) + fds[i].revents |= POLLOUT; + if (FD_ISSET(fds[i].fd, &e_fdset)) + fds[i].revents |= POLLERR; + } + return ret; +} + +#endif + +struct _hook io_hooks[] = { + /* fcntl.h */ + {"open", my_open}, +#ifdef __APPLE__ + {"fcntl", darwin_my_fcntl}, +#else + {"fcntl", fcntl}, +#endif + /* sys/stat.h */ + {"stat", my_stat}, + {"fstat", my_fstat}, +#ifdef __APPLE__ + {"stat64", my_stat}, + {"fstat64", my_fstat}, +#else + {"stat64", my_stat64}, + {"fstat64", my_fstat64}, +#endif + {"chmod", chmod}, + {"fchmod", fchmod}, + {"umask", umask}, + {"mkdir", mkdir}, + /* stdio.h */ + {"__isthreaded", &__my_isthreaded}, + {"__sF", &my_sF}, + {"fopen", my_fopen}, + {"fdopen", my_fdopen}, + {"popen", popen}, + {"puts", puts}, + {"vprintf", vprintf}, + {"sprintf", sprintf}, + {"__sprintf_chk", sprintf}, + {"asprintf", asprintf}, + {"vasprintf", vasprintf}, + {"snprintf", snprintf}, + {"vsprintf", vsprintf}, + {"vsnprintf", vsnprintf}, + {"clearerr", my_clearerr}, + {"fclose", my_fclose}, + {"feof", my_feof}, + {"ferror", my_ferror}, + {"fflush", my_fflush}, + {"fgetc", my_fgetc}, + {"fgetpos", my_fgetpos}, + {"fgets", my_fgets}, + {"fprintf", my_fprintf}, + {"fputc", my_fputc}, + {"fputs", my_fputs}, + {"fread", my_fread}, + {"freopen", my_freopen}, + {"fscanf", my_fscanf}, + {"fseek", my_fseek}, + {"fseeko", my_fseeko}, + {"fsetpos", my_fsetpos}, + {"ftell", my_ftell}, + {"ftello", my_ftello}, + {"fwrite", my_fwrite}, + {"getc", my_getc}, + {"getdelim", my_getdelim}, + {"getline", my_getline}, + {"putc", my_putc}, + {"rewind", my_rewind}, + {"setbuf", my_setbuf}, + {"setvbuf", my_setvbuf}, + {"ungetc", my_ungetc}, + {"vfprintf", my_vfprintf}, + {"vfscanf", my_vfscanf}, + {"fileno", my_fileno}, + {"pclose", my_pclose}, + {"perror", perror}, + {"flockfile", my_flockfile}, + {"ftrylockfile", my_ftrylockfile}, + {"funlockfile", my_funlockfile}, + {"getc_unlocked", my_getc_unlocked}, + {"putc_unlocked", my_putc_unlocked}, + //{"fgetln", my_fgetln}, + {"fpurge", my_fpurge}, + {"getw", my_getw}, + {"putw", my_putw}, + {"setbuffer", my_setbuffer}, + {"setlinebuf", my_setlinebuf}, + {"putchar", putchar}, + {"tmpfile", tmpfile}, + {"tmpnam", tmpnam}, + {"remove", remove}, + {"rename", rename}, + /* wchar.t */ + {"getwc", my_getwc}, + {"ungetwc", my_ungetwc}, + {"putwc", my_putwc}, + /* poll.h */ +#ifdef __APPLE__ + {"poll", darwin_my_poll}, +#else + {"poll", poll}, +#endif + {"select", select}, + {NULL, NULL} +}; \ No newline at end of file diff --git a/libhybris/src/hooks_list.c b/libhybris/src/hooks_list.c new file mode 100644 index 0000000..1b17df9 --- /dev/null +++ b/libhybris/src/hooks_list.c @@ -0,0 +1,23 @@ +#include "hooks_list.h" +#include + +extern struct _hook main_hooks[]; +extern struct _hook dirent_hooks[]; +extern struct _hook io_hooks[]; +extern struct _hook net_hooks[]; +extern struct _hook pthread_hooks[]; +#ifdef __APPLE__ +extern struct _hook net_darwin_hooks[]; +#endif + +void hybris_register_default_hooks() { + hybris_register_hooks(main_hooks); + hybris_register_hooks(dirent_hooks); + hybris_register_hooks(io_hooks); + hybris_register_hooks(net_hooks); + hybris_register_hooks(pthread_hooks); + +#ifdef __APPLE__ + hybris_register_hooks(net_darwin_hooks); +#endif +} \ No newline at end of file diff --git a/libhybris/src/hooks_list.h b/libhybris/src/hooks_list.h new file mode 100644 index 0000000..080239a --- /dev/null +++ b/libhybris/src/hooks_list.h @@ -0,0 +1,3 @@ +#pragma once + +void hybris_register_default_hooks(); \ No newline at end of file diff --git a/libhybris/src/hooks_net.c b/libhybris/src/hooks_net.c new file mode 100644 index 0000000..267368b --- /dev/null +++ b/libhybris/src/hooks_net.c @@ -0,0 +1,144 @@ +#include +#include +#include +#include "hooks_net.h" + +#include "../include/hybris/hook.h" + +#ifndef __APPLE__ +struct android_addrinfo { + int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */ + int ai_family; /* PF_xxx */ + int ai_socktype; /* SOCK_xxx */ + int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ + socklen_t ai_addrlen; /* length of ai_addr */ + char *ai_canonname; /* canonical name for hostname */ + struct sockaddr *ai_addr; /* binary address */ + struct android_addrinfo *ai_next; /* next structure in linked list */ +}; + +struct android_addrinfo* convert_addrinfo(struct addrinfo* res) +{ + struct android_addrinfo* ares = (struct android_addrinfo*) malloc( + sizeof(struct android_addrinfo) + sizeof(struct addrinfo *)); + ares->ai_flags = res->ai_flags; + ares->ai_family = res->ai_family; + ares->ai_socktype = res->ai_socktype; + ares->ai_protocol = res->ai_protocol; + ares->ai_addrlen = res->ai_addrlen; + ares->ai_canonname = res->ai_canonname; + ares->ai_addr = res->ai_addr; + ares->ai_next = NULL; + if (res->ai_next != NULL) { + ares->ai_next = convert_addrinfo(res->ai_next); + } + *((struct addrinfo **) (ares + 1)) = res; + return ares; +} + +int my_getaddrinfo(const char *node, const char *service, + const struct android_addrinfo *ahints, + struct android_addrinfo **ares) { + struct addrinfo hints; + if (ahints != NULL) { + hints.ai_flags = ahints->ai_flags; + hints.ai_family = ahints->ai_family; + hints.ai_socktype = ahints->ai_socktype; + hints.ai_protocol = ahints->ai_protocol; + hints.ai_addrlen = ahints->ai_addrlen; + hints.ai_canonname = ahints->ai_canonname; + hints.ai_addr = ahints->ai_addr; + } + struct addrinfo* res; + int ret = getaddrinfo(node, service, (ahints == NULL ? NULL : &hints), &res); + if (ret != 0) { + return ret; + } + if (res != NULL) { + *ares = convert_addrinfo(res); + } else { + *ares = NULL; + } + return ret; +} + +void my_freeaddrinfo(struct android_addrinfo *ai) { + freeaddrinfo(*((struct addrinfo **) (ai + 1))); + struct android_addrinfo *ai_next; + while (ai) { + ai_next = ai->ai_next; + free(ai); + ai = ai_next; + } +} +#endif + +#define A_NI_NOFQDN 0x00000001 +#define A_NI_NUMERICHOST 0x00000002 +#define A_NI_NAMEREQD 0x00000004 +#define A_NI_NUMERICSERV 0x00000008 +#define A_NI_DGRAM 0x00000010 + +int convert_getnameinfo_flags(int flags) { + int glibc_flags = 0; + if (flags & A_NI_NOFQDN) + glibc_flags |= A_NI_NOFQDN; + if (flags & A_NI_NUMERICHOST) + glibc_flags |= NI_NUMERICHOST; + if (flags & A_NI_NAMEREQD) + glibc_flags |= NI_NAMEREQD; + if (flags & A_NI_NUMERICSERV) + glibc_flags |= NI_NUMERICSERV; + if (flags & A_NI_DGRAM) + glibc_flags |= NI_DGRAM; + return glibc_flags; +} + +#ifndef __APPLE__ +int my_getnameinfo (const struct sockaddr *__restrict sa, + socklen_t salen, char *__restrict host, + socklen_t hostlen, char *__restrict serv, + socklen_t servlen, int flags) { + int glibc_flags = convert_getnameinfo_flags(flags); + return getnameinfo(sa, salen, host, hostlen, serv, servlen, glibc_flags); +} +#endif + + +struct _hook net_hooks[] = { + /* net specifics, to avoid __res_get_state */ +#ifndef __APPLE__ + {"getaddrinfo", my_getaddrinfo}, + {"freeaddrinfo", my_freeaddrinfo}, + {"getnameinfo", my_getnameinfo}, +#endif + {"gethostbyaddr", gethostbyaddr}, + {"gethostbyname", gethostbyname}, + {"gethostbyname2", gethostbyname2}, + {"gethostent", gethostent}, + {"gai_strerror", gai_strerror}, + /* socket.h */ +#ifndef __APPLE__ + {"socket", socket}, + {"bind", bind}, + {"connect", connect}, + {"sendto", sendto}, + {"recvfrom", recvfrom}, + {"getsockname", getsockname}, + {"getsockopt", getsockopt}, + {"setsockopt", setsockopt}, +#endif + {"socketpair", socketpair}, + {"getpeername", getpeername}, + {"send", send}, + {"recv", recv}, + {"sendmsg", sendmsg}, + // {"sendmmsg", sendmmsg}, + {"recvmsg", recvmsg}, + // {"recvmmsg", recvmmsg}, + {"listen", listen}, + {"accept", accept}, + // {"accept4", accept4}, + {"shutdown", shutdown}, + {NULL, NULL} +}; diff --git a/libhybris/src/hooks_net.h b/libhybris/src/hooks_net.h new file mode 100644 index 0000000..7c94dde --- /dev/null +++ b/libhybris/src/hooks_net.h @@ -0,0 +1,6 @@ +#ifndef HOOKS_NET_H +#define HOOKS_NET_H + +int convert_getnameinfo_flags(int flags); + +#endif /* HOOKS_NET_H */ diff --git a/libhybris/src/hooks_net_darwin.c b/libhybris/src/hooks_net_darwin.c new file mode 100644 index 0000000..c7913c7 --- /dev/null +++ b/libhybris/src/hooks_net_darwin.c @@ -0,0 +1,366 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include "hooks_net.h" + +#include "../include/hybris/hook.h" + +struct android_sockaddr { + unsigned short sa_family; + char sa_data[14]; +}; + +struct android_addrinfo { + int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */ + int ai_family; /* PF_xxx */ + int ai_socktype; /* SOCK_xxx */ + int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ + socklen_t ai_addrlen; /* length of ai_addr */ + char *ai_canonname; /* canonical name for hostname */ + struct android_sockaddr *ai_addr; /* binary address */ + struct android_addrinfo *ai_next; /* next structure in linked list */ +}; + +static int darwin_convert_sockopt_socket_option(int opt) +{ + if (opt == 1) return SO_DEBUG; + if (opt == 2) return SO_REUSEADDR; + if (opt == 3) return SO_TYPE; + if (opt == 4) return SO_ERROR; + if (opt == 5) return SO_DONTROUTE; + if (opt == 6) return SO_BROADCAST; + if (opt == 7) return SO_SNDBUF; + if (opt == 8) return SO_RCVBUF; + //if (opt == 32) return SO_SNDBUFFORCE; + //if (opt == 33) return SO_RCVBUFFORCE; + if (opt == 9) return SO_KEEPALIVE; + if (opt == 10) return SO_OOBINLINE; + //if (opt == 11) return SO_NO_CHECK; + //if (opt == 12) return SO_PRIORITY; + if (opt == 13) return SO_LINGER; + //if (opt == 14) return SO_BSDCOMPAT; + if (opt == 15) return SO_REUSEPORT; + return -1; +} + +static int darwin_convert_sockopt_ip_option(int opt) +{ + if (opt == 1) return IP_TOS; + if (opt == 2) return IP_TTL; + if (opt == 3) return IP_HDRINCL; + if (opt == 4) return IP_OPTIONS; + //if (opt == 5) return IP_ROUTER_ALERT; + if (opt == 6) return IP_RECVOPTS; + if (opt == 7) return IP_RETOPTS; + //if (opt == 8) return IP_PKTINFO; + //if (opt == 9) return IP_PKTOPTIONS; + //if (opt == 10) return IP_MTU_DISCOVER; + //if (opt == 11) return IP_RECVERR; + //if (opt == 12) return IP_RECVTTL; + //if (opt == 13) return IP_RECVTOS; + //if (opt == 14) return IP_MTU; + //if (opt == 15) return IP_FREEBIND; + if (opt == 16) return IP_IPSEC_POLICY; + //if (opt == 17) return IP_XFRM_POLICY; + //if (opt == 18) return IP_PASSSEC; + + if (opt == 32) return IP_MULTICAST_IF; + if (opt == 33) return IP_MULTICAST_TTL; + if (opt == 34) return IP_MULTICAST_LOOP; + if (opt == 35) return IP_ADD_MEMBERSHIP; + if (opt == 36) return IP_DROP_MEMBERSHIP; + //if (opt == 37) return IP_UNBLOCK_SOURCE; + //if (opt == 38) return IP_BLOCK_SOURCE; + //if (opt == 39) return IP_ADD_SOURCE_MEMBERSHIP; + //if (opt == 40) return IP_DROP_SOURCE_MEMBERSHIP; + //if (opt == 41) return IP_MSFILTER; + return -1; +} + +static int darwin_convert_sockopt_ipv6_option(int opt) +{ + // if (opt == 1) return IPV6_ADDRFORM; + if (opt == 2) return IPV6_2292PKTINFO; + if (opt == 3) return IPV6_2292HOPOPTS; + if (opt == 4) return IPV6_2292DSTOPTS; + if (opt == 5) return IPV6_2292RTHDR; + if (opt == 6) return IPV6_2292PKTOPTIONS; + if (opt == 7) return IPV6_CHECKSUM; + if (opt == 8) return IPV6_2292HOPLIMIT; + // if (opt == 9) return IPV6_NEXTHOP; + // if (opt == 10) return IPV6_AUTHHDR; + if (opt == 16) return IPV6_UNICAST_HOPS; + if (opt == 17) return IPV6_MULTICAST_IF; + if (opt == 18) return IPV6_MULTICAST_HOPS; + if (opt == 19) return IPV6_MULTICAST_LOOP; + if (opt == 20) return IPV6_JOIN_GROUP; + if (opt == 21) return IPV6_LEAVE_GROUP; + // if (opt == 22) return IPV6_ROUTER_ALERT; + // if (opt == 23) return IPV6_MTU_DISCOVER; + // if (opt == 24) return IPV6_MTU; + // if (opt == 25) return IPV6_RECVERR; + if (opt == 26) return IPV6_V6ONLY; + ///if (opt == 27) return IPV6_JOIN_ANYCAST; + // if (opt == 28) return IPV6_LEAVE_ANYCAST; + if (opt == 34) return IPV6_IPSEC_POLICY; + // if (opt == 35) return IPV6_XFRM_POLICY; + // if (opt == 36) return IPV6_HDRINCL; + return -1; +} + +static int darwin_convert_sockopt_option(int *level, int *optname) +{ + if (*level == 1) { // SOL_SOCKET + *level = SOL_SOCKET; + *optname = darwin_convert_sockopt_socket_option(*optname); + } + if (*level == IPPROTO_IP) { + *optname = darwin_convert_sockopt_ip_option(*optname); + } + if (*level == IPPROTO_IPV6) { + *optname = darwin_convert_sockopt_ipv6_option(*optname); + } + if (*optname == -1) { + printf("WARN: unknown sockopt\n"); + return 0; + } + return 1; +} + +int darwin_my_getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen) +{ + if (!darwin_convert_sockopt_option(&level, &optname)) + return 0; + return getsockopt(sockfd, level, optname, optval, optlen); +} + +int darwin_my_setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen) +{ + if (!darwin_convert_sockopt_option(&level, &optname)) + return 0; + return setsockopt(sockfd, level, optname, optval, optlen); +} + + +sa_family_t darwin_convert_family_to_native(unsigned short family) +{ + if (family == 0) return AF_UNSPEC; + if (family == 2) return AF_INET; + if (family == 10) return AF_INET6; + printf("darwin_convert_family_to_native: unsupported family %i\n", family); + return family; +} + +unsigned short darwin_convert_family_from_native(sa_family_t family) +{ + if (family == AF_UNSPEC) return 0; + if (family == AF_INET) return 2; + if (family == AF_INET6) return 10; + printf("darwin_convert_family_to_native: unsupported family %i\n", family); + return family; +} + +int darwin_get_addr_size(__const struct android_sockaddr *from_addr) +{ + sa_family_t family = darwin_convert_family_to_native(from_addr->sa_family); + if (family == AF_INET) { + return sizeof(struct sockaddr_in); + } else if (family == AF_INET6) { + return sizeof(struct sockaddr_in6); + } else { + printf("darwin_get_addr_size: unsupported family\n"); + return 0; + } +} + +int darwin_convert_addr_to_native(__const struct android_sockaddr *from_addr, struct sockaddr *to_addr) +{ + sa_family_t family = darwin_convert_family_to_native(from_addr->sa_family); + if (family == AF_INET) { + memcpy(to_addr, from_addr, sizeof(struct sockaddr_in)); + to_addr->sa_len = sizeof(struct sockaddr_in); + } else if (family == AF_INET6) { + memcpy(to_addr, from_addr, sizeof(struct sockaddr_in6)); + to_addr->sa_len = sizeof(struct sockaddr_in6); + } else { + printf("darwin_convert_addr_to_native: unsupported family\n"); + return 0; + } + to_addr->sa_family = family; + return 1; +} + +int darwin_convert_addr_from_native(__const struct sockaddr *from_addr, struct android_sockaddr *to_addr, + size_t max_size) +{ + size_t size = from_addr->sa_len; + if (max_size < size) + size = max_size; + memcpy(to_addr, from_addr, size); + to_addr->sa_family = darwin_convert_family_from_native(from_addr->sa_family); + return 1; +} + +int darwin_my_socket(int socket_family, int socket_type, int protocol) +{ + socket_family = darwin_convert_family_to_native(socket_family); + return socket(socket_family, socket_type, protocol); +} + +int darwin_my_bind(int sockfd, const struct android_sockaddr *addr, socklen_t addrlen) +{ + struct sockaddr *conv_addr = alloca(darwin_get_addr_size(addr)); + if (!darwin_convert_addr_to_native(addr, conv_addr)) + return -1; + return bind(sockfd, conv_addr, addrlen); +} + +int darwin_my_connect(int sockfd, const struct android_sockaddr *addr, socklen_t addrlen) +{ + struct sockaddr *conv_addr = alloca(darwin_get_addr_size(addr)); + if (!darwin_convert_addr_to_native(addr, conv_addr)) + return -1; + return connect(sockfd, conv_addr, addrlen); +} + +ssize_t darwin_my_sendto(int socket, const void *buffer, size_t length, int flags, + const struct android_sockaddr *dest_addr, socklen_t dest_len) +{ + struct sockaddr *conv_addr = alloca(darwin_get_addr_size(dest_addr)); + if (!darwin_convert_addr_to_native(dest_addr, conv_addr)) + return -1; + return sendto(socket, buffer, length, flags, conv_addr, dest_len); +} + +ssize_t darwin_my_recvfrom(int sockfd, void *buf, size_t len, int flags, + struct android_sockaddr *addr, socklen_t *addrlen) +{ + struct sockaddr_storage stor; + socklen_t ret_size = sizeof(stor); + int ret = recvfrom(sockfd, buf, len, flags, (struct sockaddr *) &stor, &ret_size); + if (ret >= 0) { + //stor.ss_len = ret_size; + if (!darwin_convert_addr_from_native((struct sockaddr *) &stor, addr, *addrlen)) + return -1; + *addrlen = ret_size - 1; + } + return ret; +} + +int darwin_my_getsockname(int sockfd, struct android_sockaddr *addr, socklen_t *addrlen) +{ + struct sockaddr_storage stor; + socklen_t ret_size = sizeof(stor); + int ret = getsockname(sockfd, (struct sockaddr *) &stor, &ret_size); + if (ret == 0) { + //stor.ss_len = ret_size; + if (!darwin_convert_addr_from_native((struct sockaddr *) &stor, addr, *addrlen)) + return -1; + *addrlen = ret_size - 1; + } + return ret; +} + +struct android_addrinfo* darwin_convert_addrinfo(struct addrinfo* res) +{ + struct android_addrinfo* ares = (struct android_addrinfo*) malloc(sizeof(struct android_addrinfo)); + ares->ai_flags = res->ai_flags; + ares->ai_family = darwin_convert_family_from_native(res->ai_family); + ares->ai_socktype = res->ai_socktype; + ares->ai_protocol = res->ai_protocol; + ares->ai_addrlen = res->ai_addrlen; + ares->ai_canonname = NULL; + if (ares->ai_canonname) { + ares->ai_canonname = malloc(strlen(res->ai_canonname) + 1); + strcpy(ares->ai_canonname, res->ai_canonname); + } + size_t conv_addrlen = res->ai_addrlen; + struct android_sockaddr *conv_addr = malloc(conv_addrlen); + darwin_convert_addr_from_native(res->ai_addr, conv_addr, conv_addrlen); + ares->ai_addrlen = res->ai_addrlen; + ares->ai_addr = conv_addr; + ares->ai_next = NULL; + if (res->ai_next != NULL) { + ares->ai_next = darwin_convert_addrinfo(res->ai_next); + } + return ares; +} + +int darwin_my_getaddrinfo(const char *node, const char *service, + const struct android_addrinfo *ahints, + struct android_addrinfo **ares) +{ + struct addrinfo hints; + if (ahints != NULL) { + hints.ai_flags = ahints->ai_flags; + hints.ai_family = darwin_convert_family_to_native(ahints->ai_family); + hints.ai_socktype = ahints->ai_socktype; + hints.ai_protocol = ahints->ai_protocol; + hints.ai_addrlen = ahints->ai_addrlen; + hints.ai_canonname = ahints->ai_canonname; + hints.ai_addr = NULL; + if (ahints->ai_addr != NULL) { + hints.ai_addr = alloca(darwin_get_addr_size(ahints->ai_addr)); + darwin_convert_addr_to_native(ahints->ai_addr, hints.ai_addr); + } + } + struct addrinfo* res; + int ret = getaddrinfo(node, service, (ahints == NULL ? NULL : &hints), &res); + if (ret != 0) { + return ret; + } + if (res != NULL) { + *ares = darwin_convert_addrinfo(res); + freeaddrinfo(res); + } else { + *ares = NULL; + } + return ret; +} + +void darwin_my_freeaddrinfo(struct android_addrinfo *ai) +{ + struct android_addrinfo *ai_next; + while (ai) { + if (ai->ai_canonname) + free(ai->ai_canonname); + if (ai->ai_addr) + free(ai->ai_addr); + ai_next = ai->ai_next; + free(ai); + ai = ai_next; + } +} + +int darwin_my_getnameinfo (const struct android_sockaddr *__restrict sa, + socklen_t salen, char *__restrict host, + socklen_t hostlen, char *__restrict serv, + socklen_t servlen, int flags) { + socklen_t conv_salen = darwin_get_addr_size(sa); + struct sockaddr *conv_addr = alloca(conv_salen); + if (!darwin_convert_addr_to_native(sa, conv_addr)) + return -1; + int glibc_flags = convert_getnameinfo_flags(flags); + return getnameinfo(conv_addr, conv_salen, host, hostlen, serv, servlen, glibc_flags); +} + + +struct _hook net_darwin_hooks[] = { + {"socket", darwin_my_socket}, + {"bind", darwin_my_bind}, + {"connect", darwin_my_connect}, + {"sendto", darwin_my_sendto}, + {"recvfrom", darwin_my_recvfrom}, + {"getsockname", darwin_my_getsockname}, + {"getsockopt", darwin_my_getsockopt}, + {"setsockopt", darwin_my_setsockopt}, + {"getaddrinfo", darwin_my_getaddrinfo}, + {"freeaddrinfo", darwin_my_freeaddrinfo}, + {"getnameinfo", darwin_my_getnameinfo}, + {NULL, NULL} +}; diff --git a/libhybris/src/hooks_pthread.c b/libhybris/src/hooks_pthread.c new file mode 100644 index 0000000..497aa4e --- /dev/null +++ b/libhybris/src/hooks_pthread.c @@ -0,0 +1,1181 @@ +#include +#include +#include +#include +#include +#ifdef __APPLE__ +#include +#include +#include +#include "hooks_darwin_pthread_once.h" +#else +#include +#include +#endif +#include "../include/hybris/hook.h" +#include "hooks_shm.h" + +#include "logging.h" +#define LOGD(message, ...) HYBRIS_DEBUG_LOG(HOOKS, message, ##__VA_ARGS__) + +/* TODO: +* - Check if the int arguments at attr_set/get match the ones at Android +* - Check how to deal with memory leaks (specially with static initializers) +* - Check for shared rwlock +*/ + +/* Base address to check for Android specifics */ +#define ANDROID_TOP_ADDR_VALUE_MUTEX 0xFFFF +#define ANDROID_TOP_ADDR_VALUE_COND 0xFFFF +#define ANDROID_TOP_ADDR_VALUE_RWLOCK 0xFFFF + +#define ANDROID_MUTEX_SHARED_MASK 0x2000 +#define ANDROID_COND_SHARED_MASK 0x0001 +#define ANDROID_RWLOCKATTR_SHARED_MASK 0x0010 + +/* For the static initializer types */ +#define ANDROID_PTHREAD_MUTEX_INITIALIZER 0 +#define ANDROID_PTHREAD_RECURSIVE_MUTEX_INITIALIZER 0x4000 +#define ANDROID_PTHREAD_ERRORCHECK_MUTEX_INITIALIZER 0x8000 +#define ANDROID_PTHREAD_COND_INITIALIZER 0 +#define ANDROID_PTHREAD_RWLOCK_INITIALIZER 0 + +static pthread_mutex_t hybris_static_init_mutex = PTHREAD_MUTEX_INITIALIZER; + +/* Helpers */ +static int hybris_check_android_shared_mutex(unsigned int mutex_addr) +{ + /* If not initialized or initialized by Android, it should contain a low + * address, which is basically just the int values for Android's own + * pthread_mutex_t */ + if ((mutex_addr <= ANDROID_TOP_ADDR_VALUE_MUTEX) && + (mutex_addr & ANDROID_MUTEX_SHARED_MASK)) + return 1; + + return 0; +} + +static int hybris_check_android_shared_cond(unsigned int cond_addr) +{ + /* If not initialized or initialized by Android, it should contain a low + * address, which is basically just the int values for Android's own + * pthread_cond_t */ + if ((cond_addr <= ANDROID_TOP_ADDR_VALUE_COND) && + (cond_addr & ANDROID_COND_SHARED_MASK)) + return 1; + + return 0; +} + +static void hybris_set_mutex_attr(unsigned int android_value, pthread_mutexattr_t *attr) +{ + /* Init already sets as PTHREAD_MUTEX_NORMAL */ + pthread_mutexattr_init(attr); + + if (android_value & ANDROID_PTHREAD_RECURSIVE_MUTEX_INITIALIZER) { + pthread_mutexattr_settype(attr, PTHREAD_MUTEX_RECURSIVE); + } else if (android_value & ANDROID_PTHREAD_ERRORCHECK_MUTEX_INITIALIZER) { + pthread_mutexattr_settype(attr, PTHREAD_MUTEX_ERRORCHECK); + } +} + +static pthread_mutex_t* hybris_alloc_init_mutex(unsigned int android_mutex) +{ + pthread_mutex_t *realmutex = malloc(sizeof(pthread_mutex_t)); + pthread_mutexattr_t attr; + hybris_set_mutex_attr(android_mutex, &attr); + pthread_mutex_init(realmutex, &attr); + return realmutex; +} + +static pthread_cond_t* hybris_alloc_init_cond(void) +{ + pthread_cond_t *realcond = malloc(sizeof(pthread_cond_t)); + pthread_condattr_t attr; + pthread_condattr_init(&attr); + pthread_cond_init(realcond, &attr); + return realcond; +} + +static pthread_rwlock_t* hybris_alloc_init_rwlock(void) +{ + pthread_rwlock_t *realrwlock = malloc(sizeof(pthread_rwlock_t)); + pthread_rwlockattr_t attr; + pthread_rwlockattr_init(&attr); + pthread_rwlock_init(realrwlock, &attr); + return realrwlock; +} + +/* + * Main pthread functions + * + * Custom implementations to workaround difference between Bionic and Glibc. + * Our own pthread_create helps avoiding direct handling of TLS. + * + * */ + +static int my_pthread_create(pthread_t *thread, const pthread_attr_t *__attr, + void *(*start_routine)(void*), void *arg) +{ + pthread_attr_t *realattr = NULL; + + if (__attr != NULL) + realattr = (pthread_attr_t *) *(unsigned int *) __attr; + + return pthread_create(thread, realattr, start_routine, arg); +} + +/* + * pthread_attr_* functions + * + * Specific implementations to workaround the differences between at the + * pthread_attr_t struct differences between Bionic and Glibc. + * + * */ + +static int my_pthread_attr_init(pthread_attr_t *__attr) +{ + pthread_attr_t *realattr; + + realattr = malloc(sizeof(pthread_attr_t)); + *((unsigned int *)__attr) = (unsigned int) realattr; + + return pthread_attr_init(realattr); +} + +static int my_pthread_attr_destroy(pthread_attr_t *__attr) +{ + int ret; + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + + ret = pthread_attr_destroy(realattr); + /* We need to release the memory allocated at my_pthread_attr_init + * Possible side effects if destroy is called without our init */ + free(realattr); + + return ret; +} + +static int my_pthread_attr_setdetachstate(pthread_attr_t *__attr, int state) +{ + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + return pthread_attr_setdetachstate(realattr, state); +} + +static int my_pthread_attr_getdetachstate(pthread_attr_t const *__attr, int *state) +{ + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + return pthread_attr_getdetachstate(realattr, state); +} + +static int my_pthread_attr_setschedpolicy(pthread_attr_t *__attr, int policy) +{ + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + return pthread_attr_setschedpolicy(realattr, policy); +} + +static int my_pthread_attr_getschedpolicy(pthread_attr_t const *__attr, int *policy) +{ + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + return pthread_attr_getschedpolicy(realattr, policy); +} + +#ifndef __APPLE__ +static int my_pthread_attr_setschedparam(pthread_attr_t *__attr, struct sched_param const *param) +{ + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + return pthread_attr_setschedparam(realattr, param); +} + +static int my_pthread_attr_getschedparam(pthread_attr_t const *__attr, struct sched_param *param) +{ + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + return pthread_attr_getschedparam(realattr, param); +} +#endif + +static int my_pthread_attr_setstacksize(pthread_attr_t *__attr, size_t stack_size) +{ + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + return pthread_attr_setstacksize(realattr, stack_size); +} + +static int my_pthread_attr_getstacksize(pthread_attr_t const *__attr, size_t *stack_size) +{ + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + return pthread_attr_getstacksize(realattr, stack_size); +} + +static int my_pthread_attr_setstack(pthread_attr_t *__attr, void *stack_base, size_t stack_size) +{ + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + return pthread_attr_setstack(realattr, stack_base, stack_size); +} + +static int my_pthread_attr_getstack(pthread_attr_t const *__attr, void **stack_base, size_t *stack_size) +{ + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + return pthread_attr_getstack(realattr, stack_base, stack_size); +} + +static int my_pthread_attr_setguardsize(pthread_attr_t *__attr, size_t guard_size) +{ + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + return pthread_attr_setguardsize(realattr, guard_size); +} + +static int my_pthread_attr_getguardsize(pthread_attr_t const *__attr, size_t *guard_size) +{ + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + return pthread_attr_getguardsize(realattr, guard_size); +} + +static int my_pthread_attr_setscope(pthread_attr_t *__attr, int scope) +{ + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + return pthread_attr_setscope(realattr, scope); +} + +static int my_pthread_attr_getscope(pthread_attr_t const *__attr) +{ + int scope; + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + + /* Android doesn't have the scope attribute because it always + * returns PTHREAD_SCOPE_SYSTEM */ + pthread_attr_getscope(realattr, &scope); + + return scope; +} + +#ifndef __APPLE__ +static int my_pthread_getattr_np(pthread_t thid, pthread_attr_t *__attr) +{ + pthread_attr_t *realattr; + + realattr = malloc(sizeof(pthread_attr_t)); + *((unsigned int *)__attr) = (unsigned int) realattr; + + return pthread_getattr_np(thid, realattr); +} +#endif + +/* + * pthread_mutex* functions + * + * Specific implementations to workaround the differences between at the + * pthread_mutex_t struct differences between Bionic and Glibc. + * + * */ + +#ifdef __APPLE__ +static pthread_mutexattr_t *hybris_get_real_mutexattr(__const pthread_mutexattr_t *attr) { + if (!attr) + return NULL; + pthread_mutexattr_t *realattr = (pthread_mutexattr_t *) *(unsigned int *) attr; + return realattr; +} +#endif + +static int my_pthread_mutex_init(pthread_mutex_t *__mutex, + __const pthread_mutexattr_t *__mutexattr) +{ + pthread_mutex_t *realmutex = NULL; + +#ifdef __APPLE__ + __mutexattr = hybris_get_real_mutexattr(__mutexattr); +#endif + + int pshared = PTHREAD_PROCESS_PRIVATE; + if (__mutexattr) + pthread_mutexattr_getpshared(__mutexattr, &pshared); + + if (pshared == PTHREAD_PROCESS_PRIVATE) { + /* non shared, standard mutex: use malloc */ + realmutex = malloc(sizeof(pthread_mutex_t)); + + *((unsigned int *)__mutex) = (unsigned int) realmutex; + } + else { + /* process-shared mutex: use the shared memory segment */ + hybris_shm_pointer_t handle = hybris_shm_alloc(sizeof(pthread_mutex_t)); + + *((hybris_shm_pointer_t *)__mutex) = handle; + + if (handle) + realmutex = (pthread_mutex_t *)hybris_get_shmpointer(handle); + } + + return pthread_mutex_init(realmutex, __mutexattr); +} + +static int my_pthread_mutex_destroy(pthread_mutex_t *__mutex) +{ + int ret; + + if (!__mutex) + return EINVAL; + + pthread_mutex_t *realmutex = (pthread_mutex_t *) *(unsigned int *) __mutex; + + if (!realmutex) + return EINVAL; + + if (!hybris_is_pointer_in_shm((void*)realmutex)) { + ret = pthread_mutex_destroy(realmutex); + free(realmutex); + } + else { + realmutex = (pthread_mutex_t *)hybris_get_shmpointer((hybris_shm_pointer_t)realmutex); + ret = pthread_mutex_destroy(realmutex); + } + + *((unsigned int *)__mutex) = 0; + + return ret; +} + +static pthread_mutex_t *my_static_init_mutex(pthread_mutex_t *__mutex) { + pthread_mutex_lock(&hybris_static_init_mutex); + unsigned int value = (*(unsigned int *) __mutex); + pthread_mutex_t *realmutex = (pthread_mutex_t *) value; + if (value <= ANDROID_TOP_ADDR_VALUE_MUTEX) { + realmutex = hybris_alloc_init_mutex(value); + *((unsigned int*) __mutex) = (unsigned int) realmutex; + } + pthread_mutex_unlock(&hybris_static_init_mutex); + return realmutex; +} + + +static pthread_cond_t *my_static_init_cond(pthread_cond_t *__cond) { + pthread_mutex_lock(&hybris_static_init_mutex); + unsigned int value = (*(unsigned int *) __cond); + pthread_cond_t *realcond = (pthread_cond_t *) value; + if (value <= ANDROID_TOP_ADDR_VALUE_MUTEX) { + realcond = hybris_alloc_init_cond(); + *((unsigned int*) __cond) = (unsigned int) realcond; + } + pthread_mutex_unlock(&hybris_static_init_mutex); + return realcond; +} + +static int my_pthread_mutex_lock(pthread_mutex_t *__mutex) +{ + if (!__mutex) { + LOGD("Null mutex lock, not locking."); + return 0; + } + + unsigned int value = (*(unsigned int *) __mutex); + if (hybris_check_android_shared_mutex(value)) { + LOGD("Shared mutex with Android, not locking."); + return 0; + } + + pthread_mutex_t *realmutex = (pthread_mutex_t *) value; + if (hybris_is_pointer_in_shm((void*)value)) + realmutex = (pthread_mutex_t *)hybris_get_shmpointer((hybris_shm_pointer_t)value); + + if (value <= ANDROID_TOP_ADDR_VALUE_MUTEX) { + realmutex = my_static_init_mutex(__mutex); + } + + return pthread_mutex_lock(realmutex); +} + +static int my_pthread_mutex_trylock(pthread_mutex_t *__mutex) +{ + unsigned int value = (*(unsigned int *) __mutex); + + if (hybris_check_android_shared_mutex(value)) { + LOGD("Shared mutex with Android, not try locking."); + return 0; + } + + pthread_mutex_t *realmutex = (pthread_mutex_t *) value; + if (hybris_is_pointer_in_shm((void*)value)) + realmutex = (pthread_mutex_t *)hybris_get_shmpointer((hybris_shm_pointer_t)value); + + if (value <= ANDROID_TOP_ADDR_VALUE_MUTEX) { + realmutex = my_static_init_mutex(__mutex); + } + + return pthread_mutex_trylock(realmutex); +} + +static int my_pthread_mutex_unlock(pthread_mutex_t *__mutex) +{ + if (!__mutex) { + LOGD("Null mutex lock, not unlocking."); + return 0; + } + + unsigned int value = (*(unsigned int *) __mutex); + if (hybris_check_android_shared_mutex(value)) { + LOGD("Shared mutex with Android, not unlocking."); + return 0; + } + + if (value <= ANDROID_TOP_ADDR_VALUE_MUTEX) { + LOGD("Trying to unlock a lock that's not locked/initialized" + " by Hybris, not unlocking."); + return 0; + } + + pthread_mutex_t *realmutex = (pthread_mutex_t *) value; + if (hybris_is_pointer_in_shm((void*)value)) + realmutex = (pthread_mutex_t *)hybris_get_shmpointer((hybris_shm_pointer_t)value); + + return pthread_mutex_unlock(realmutex); +} + +#ifndef __APPLE__ +static int my_pthread_mutex_lock_timeout_np(pthread_mutex_t *__mutex, unsigned __msecs) +{ + struct timespec tv; + pthread_mutex_t *realmutex; + unsigned int value = (*(unsigned int *) __mutex); + + if (hybris_check_android_shared_mutex(value)) { + LOGD("Shared mutex with Android, not lock timeout np."); + return 0; + } + + realmutex = (pthread_mutex_t *) value; + + if (value <= ANDROID_TOP_ADDR_VALUE_MUTEX) { + realmutex = my_static_init_mutex(__mutex); + } + + clock_gettime(CLOCK_REALTIME, &tv); + tv.tv_sec += __msecs/1000; + tv.tv_nsec += (__msecs % 1000) * 1000000; + if (tv.tv_nsec >= 1000000000) { + tv.tv_sec++; + tv.tv_nsec -= 1000000000; + } + + return pthread_mutex_timedlock(realmutex, &tv); +} +#endif + +/* + * pthread_cond* functions + * + * Specific implementations to workaround the differences between at the + * pthread_cond_t struct differences between Bionic and Glibc. + * + * */ + +static int my_pthread_cond_init(pthread_cond_t *cond, + const pthread_condattr_t *attr) +{ + pthread_cond_t *realcond = NULL; + + int pshared = PTHREAD_PROCESS_PRIVATE; + + if (attr) + pthread_condattr_getpshared(attr, &pshared); + + if (pshared == PTHREAD_PROCESS_PRIVATE) { + /* non shared, standard cond: use malloc */ + realcond = malloc(sizeof(pthread_cond_t)); + + *((unsigned int *) cond) = (unsigned int) realcond; + } + else { + /* process-shared condition: use the shared memory segment */ + hybris_shm_pointer_t handle = hybris_shm_alloc(sizeof(pthread_cond_t)); + + *((unsigned int *)cond) = (unsigned int) handle; + + if (handle) + realcond = (pthread_cond_t *)hybris_get_shmpointer(handle); + } + + return pthread_cond_init(realcond, attr); +} + +static int my_pthread_cond_destroy(pthread_cond_t *cond) +{ + int ret; + pthread_cond_t *realcond = (pthread_cond_t *) *(unsigned int *) cond; + + if (!realcond) { + return EINVAL; + } + + if (!hybris_is_pointer_in_shm((void*)realcond)) { + ret = pthread_cond_destroy(realcond); + free(realcond); + } + else { + realcond = (pthread_cond_t *)hybris_get_shmpointer((hybris_shm_pointer_t)realcond); + ret = pthread_cond_destroy(realcond); + } + + *((unsigned int *)cond) = 0; + + return ret; +} + +static int my_pthread_cond_broadcast(pthread_cond_t *cond) +{ + unsigned int value = (*(unsigned int *) cond); + if (hybris_check_android_shared_cond(value)) { + LOGD("shared condition with Android, not broadcasting."); + return 0; + } + + pthread_cond_t *realcond = (pthread_cond_t *) value; + if (hybris_is_pointer_in_shm((void*)value)) + realcond = (pthread_cond_t *)hybris_get_shmpointer((hybris_shm_pointer_t)value); + + if (value <= ANDROID_TOP_ADDR_VALUE_COND) { + realcond = hybris_alloc_init_cond(); + *((unsigned int *) cond) = (unsigned int) realcond; + } + + return pthread_cond_broadcast(realcond); +} + +static int my_pthread_cond_signal(pthread_cond_t *cond) +{ + unsigned int value = (*(unsigned int *) cond); + + if (hybris_check_android_shared_cond(value)) { + LOGD("Shared condition with Android, not signaling."); + return 0; + } + + pthread_cond_t *realcond = (pthread_cond_t *) value; + if (hybris_is_pointer_in_shm((void*)value)) + realcond = (pthread_cond_t *)hybris_get_shmpointer((hybris_shm_pointer_t)value); + + if (value <= ANDROID_TOP_ADDR_VALUE_COND) { + realcond = hybris_alloc_init_cond(); + *((unsigned int *) cond) = (unsigned int) realcond; + } + + return pthread_cond_signal(realcond); +} + +static int my_pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) +{ + /* Both cond and mutex can be statically initialized, check for both */ + unsigned int cvalue = (*(unsigned int *) cond); + unsigned int mvalue = (*(unsigned int *) mutex); + + if (hybris_check_android_shared_cond(cvalue) || + hybris_check_android_shared_mutex(mvalue)) { + LOGD("Shared condition/mutex with Android, not waiting."); + return 0; + } + + pthread_cond_t *realcond = (pthread_cond_t *) cvalue; + if (hybris_is_pointer_in_shm((void*)cvalue)) + realcond = (pthread_cond_t *)hybris_get_shmpointer((hybris_shm_pointer_t)cvalue); + + if (cvalue <= ANDROID_TOP_ADDR_VALUE_COND) { + realcond = my_static_init_cond(cond); + } + + pthread_mutex_t *realmutex = (pthread_mutex_t *) mvalue; + if (hybris_is_pointer_in_shm((void*)mvalue)) + realmutex = (pthread_mutex_t *)hybris_get_shmpointer((hybris_shm_pointer_t)mvalue); + + if (mvalue <= ANDROID_TOP_ADDR_VALUE_MUTEX) { + realmutex = my_static_init_mutex(mutex); + } + + return pthread_cond_wait(realcond, realmutex); +} + +static int my_pthread_cond_timedwait(pthread_cond_t *cond, + pthread_mutex_t *mutex, const struct timespec *abstime) +{ + /* Both cond and mutex can be statically initialized, check for both */ + unsigned int cvalue = (*(unsigned int *) cond); + unsigned int mvalue = (*(unsigned int *) mutex); + + if (hybris_check_android_shared_cond(cvalue) || + hybris_check_android_shared_mutex(mvalue)) { + LOGD("Shared condition/mutex with Android, not waiting."); + return 0; + } + + pthread_cond_t *realcond = (pthread_cond_t *) cvalue; + if (hybris_is_pointer_in_shm((void*)cvalue)) + realcond = (pthread_cond_t *)hybris_get_shmpointer((hybris_shm_pointer_t)cvalue); + + if (cvalue <= ANDROID_TOP_ADDR_VALUE_COND) { + realcond = my_static_init_cond(cond); + } + + pthread_mutex_t *realmutex = (pthread_mutex_t *) mvalue; + if (hybris_is_pointer_in_shm((void*)mvalue)) + realmutex = (pthread_mutex_t *)hybris_get_shmpointer((hybris_shm_pointer_t)mvalue); + + if (mvalue <= ANDROID_TOP_ADDR_VALUE_MUTEX) { + realmutex = my_static_init_mutex(mutex); + } + + return pthread_cond_timedwait(realcond, realmutex, abstime); +} + +#ifndef __APPLE__ +static int my_pthread_cond_timedwait_relative_np(pthread_cond_t *cond, + pthread_mutex_t *mutex, const struct timespec *reltime) +{ + /* Both cond and mutex can be statically initialized, check for both */ + unsigned int cvalue = (*(unsigned int *) cond); + unsigned int mvalue = (*(unsigned int *) mutex); + + if (hybris_check_android_shared_cond(cvalue) || + hybris_check_android_shared_mutex(mvalue)) { + LOGD("Shared condition/mutex with Android, not waiting."); + return 0; + } + + pthread_cond_t *realcond = (pthread_cond_t *) cvalue; + if( hybris_is_pointer_in_shm((void*)cvalue) ) + realcond = (pthread_cond_t *)hybris_get_shmpointer((hybris_shm_pointer_t)cvalue); + + if (cvalue <= ANDROID_TOP_ADDR_VALUE_COND) { + realcond = my_static_init_cond(cond); + } + + pthread_mutex_t *realmutex = (pthread_mutex_t *) mvalue; + if (hybris_is_pointer_in_shm((void*)mvalue)) + realmutex = (pthread_mutex_t *)hybris_get_shmpointer((hybris_shm_pointer_t)mvalue); + + if (mvalue <= ANDROID_TOP_ADDR_VALUE_MUTEX) { + realmutex = my_static_init_mutex(mutex); + } + + struct timespec tv; + clock_gettime(CLOCK_REALTIME, &tv); + tv.tv_sec += reltime->tv_sec; + tv.tv_nsec += reltime->tv_nsec; + if (tv.tv_nsec >= 1000000000) { + tv.tv_sec++; + tv.tv_nsec -= 1000000000; + } + return pthread_cond_timedwait(realcond, realmutex, &tv); +} +#endif + +/* + * pthread_rwlockattr_* functions + * + * Specific implementations to workaround the differences between at the + * pthread_rwlockattr_t struct differences between Bionic and Glibc. + * + * */ + +static int my_pthread_rwlockattr_init(pthread_rwlockattr_t *__attr) +{ + pthread_rwlockattr_t *realattr; + + realattr = malloc(sizeof(pthread_rwlockattr_t)); + *((unsigned int *)__attr) = (unsigned int) realattr; + + return pthread_rwlockattr_init(realattr); +} + +static int my_pthread_rwlockattr_destroy(pthread_rwlockattr_t *__attr) +{ + int ret; + pthread_rwlockattr_t *realattr = (pthread_rwlockattr_t *) *(unsigned int *) __attr; + + ret = pthread_rwlockattr_destroy(realattr); + free(realattr); + + return ret; +} + +static int my_pthread_rwlockattr_setpshared(pthread_rwlockattr_t *__attr, + int pshared) +{ + pthread_rwlockattr_t *realattr = (pthread_rwlockattr_t *) *(unsigned int *) __attr; +#ifdef __APPLE__ + pshared = pshared == 1 ? PTHREAD_PROCESS_SHARED : PTHREAD_PROCESS_PRIVATE; +#endif + return pthread_rwlockattr_setpshared(realattr, pshared); +} + +static int my_pthread_rwlockattr_getpshared(pthread_rwlockattr_t *__attr, + int *pshared) +{ + pthread_rwlockattr_t *realattr = (pthread_rwlockattr_t *) *(unsigned int *) __attr; +#ifdef __APPLE__ + int ret = pthread_rwlockattr_getpshared(realattr, pshared); + if (*pshared == PTHREAD_PROCESS_PRIVATE) + *pshared = 0; + else if (*pshared == PTHREAD_PROCESS_SHARED) + *pshared = 1; + return ret; +#else + return pthread_rwlockattr_getpshared(realattr, pshared); +#endif +} + +/* + * pthread_rwlock_* functions + * + * Specific implementations to workaround the differences between at the + * pthread_rwlock_t struct differences between Bionic and Glibc. + * + * */ + +static int my_pthread_rwlock_init(pthread_rwlock_t *__rwlock, + __const pthread_rwlockattr_t *__attr) +{ + pthread_rwlock_t *realrwlock = NULL; + pthread_rwlockattr_t *realattr = NULL; + int pshared = PTHREAD_PROCESS_PRIVATE; + + if (__attr != NULL) + realattr = (pthread_rwlockattr_t *) *(unsigned int *) __attr; + + if (realattr) + pthread_rwlockattr_getpshared(realattr, &pshared); + + if (pshared == PTHREAD_PROCESS_PRIVATE) { + /* non shared, standard rwlock: use malloc */ + realrwlock = malloc(sizeof(pthread_rwlock_t)); + + *((unsigned int *) __rwlock) = (unsigned int) realrwlock; + } + else { + /* process-shared condition: use the shared memory segment */ + hybris_shm_pointer_t handle = hybris_shm_alloc(sizeof(pthread_rwlock_t)); + + *((unsigned int *)__rwlock) = (unsigned int) handle; + + if (handle) + realrwlock = (pthread_rwlock_t *)hybris_get_shmpointer(handle); + } + + return pthread_rwlock_init(realrwlock, realattr); +} + +static int my_pthread_rwlock_destroy(pthread_rwlock_t *__rwlock) +{ + int ret; + pthread_rwlock_t *realrwlock = (pthread_rwlock_t *) *(unsigned int *) __rwlock; + + if (!hybris_is_pointer_in_shm((void*)realrwlock)) { + ret = pthread_rwlock_destroy(realrwlock); + free(realrwlock); + } + else { + ret = pthread_rwlock_destroy(realrwlock); + realrwlock = (pthread_rwlock_t *)hybris_get_shmpointer((hybris_shm_pointer_t)realrwlock); + } + + return ret; +} + +static pthread_rwlock_t* hybris_set_realrwlock(pthread_rwlock_t *rwlock) +{ + unsigned int value = (*(unsigned int *) rwlock); + pthread_rwlock_t *realrwlock = (pthread_rwlock_t *) value; + if (hybris_is_pointer_in_shm((void*)value)) + realrwlock = (pthread_rwlock_t *)hybris_get_shmpointer((hybris_shm_pointer_t)value); + + if ((unsigned int)realrwlock <= ANDROID_TOP_ADDR_VALUE_RWLOCK) { + realrwlock = hybris_alloc_init_rwlock(); + *((unsigned int *)rwlock) = (unsigned int) realrwlock; + } + return realrwlock; +} + +static int my_pthread_rwlock_rdlock(pthread_rwlock_t *__rwlock) +{ + pthread_rwlock_t *realrwlock = hybris_set_realrwlock(__rwlock); + return pthread_rwlock_rdlock(realrwlock); +} + +static int my_pthread_rwlock_tryrdlock(pthread_rwlock_t *__rwlock) +{ + pthread_rwlock_t *realrwlock = hybris_set_realrwlock(__rwlock); + return pthread_rwlock_tryrdlock(realrwlock); +} + +static int my_pthread_rwlock_wrlock(pthread_rwlock_t *__rwlock) +{ + pthread_rwlock_t *realrwlock = hybris_set_realrwlock(__rwlock); + return pthread_rwlock_wrlock(realrwlock); +} + +static int my_pthread_rwlock_trywrlock(pthread_rwlock_t *__rwlock) +{ + pthread_rwlock_t *realrwlock = hybris_set_realrwlock(__rwlock); + return pthread_rwlock_trywrlock(realrwlock); +} + +#ifndef __APPLE__ + +static int my_pthread_rwlock_timedrdlock(pthread_rwlock_t *__rwlock, + __const struct timespec *abs_timeout) +{ + pthread_rwlock_t *realrwlock = hybris_set_realrwlock(__rwlock); + return pthread_rwlock_timedrdlock(realrwlock, abs_timeout); +} + +static int my_pthread_rwlock_timedwrlock(pthread_rwlock_t *__rwlock, + __const struct timespec *abs_timeout) +{ + pthread_rwlock_t *realrwlock = hybris_set_realrwlock(__rwlock); + return pthread_rwlock_timedwrlock(realrwlock, abs_timeout); +} + +#endif + +static int my_pthread_rwlock_unlock(pthread_rwlock_t *__rwlock) +{ + unsigned int value = (*(unsigned int *) __rwlock); + if (value <= ANDROID_TOP_ADDR_VALUE_RWLOCK) { + LOGD("Trying to unlock a rwlock that's not locked/initialized" + " by Hybris, not unlocking."); + return 0; + } + pthread_rwlock_t *realrwlock = (pthread_rwlock_t *) value; + if (hybris_is_pointer_in_shm((void*)value)) + realrwlock = (pthread_rwlock_t *)hybris_get_shmpointer((hybris_shm_pointer_t)value); + + return pthread_rwlock_unlock(realrwlock); +} + +static void my_pthread_cleanup_push(void (*routine)(void *), + void *arg) +{ + LOGD("pthread_cleanup_push: not implemented"); +} + +static void my_pthread_cleanup_pop(int execute) +{ + LOGD("pthread_cleanup_pop: not implemented"); +} + + +static pid_t my_gettid( void ) +{ +#ifdef __APPLE__ + return (pid_t) (void*) pthread_self(); +#else + return syscall( __NR_gettid ); +#endif +} + +#ifdef __APPLE__ + +static int darwin_my_pthread_mutexattr_init(pthread_mutexattr_t *__attr) +{ + pthread_mutexattr_t *attr = malloc(sizeof(pthread_mutexattr_t)); + *((unsigned int *) __attr) = (unsigned int) attr; + return pthread_mutexattr_init(attr); +} + +static int darwin_my_pthread_mutexattr_destroy(pthread_mutexattr_t *__attr) +{ + pthread_mutexattr_t *attr = hybris_get_real_mutexattr(__attr); + int ret = pthread_mutexattr_destroy(attr); + free(attr); + return ret; +} + +static int darwin_my_pthread_mutexattr_gettype(pthread_mutexattr_t *__attr, + int *__kind) +{ + return pthread_mutexattr_gettype(hybris_get_real_mutexattr(__attr), __kind); +} + +static int darwin_my_pthread_mutexattr_settype(pthread_mutexattr_t *__attr, + int __kind) +{ + return pthread_mutexattr_settype(hybris_get_real_mutexattr(__attr), __kind); +} + +static int darwin_my_pthread_mutexattr_getpshared(pthread_mutexattr_t *__attr, + int *pshared) +{ + int ret = pthread_mutexattr_getpshared(hybris_get_real_mutexattr(__attr), pshared); + if (*pshared == PTHREAD_PROCESS_PRIVATE) + *pshared = 0; + else if (*pshared == PTHREAD_PROCESS_SHARED) + *pshared = 1; + return ret; +} + +static int darwin_my_pthread_mutexattr_setpshared(pthread_mutexattr_t *__attr, + int pshared) +{ + pshared = pshared == 1 ? PTHREAD_PROCESS_SHARED : PTHREAD_PROCESS_PRIVATE; + return pthread_mutexattr_setpshared(__attr, pshared); +} + + +struct bionic_sched_param { + int sched_priority; +}; + +static int darwin_my_pthread_getschedparam(pthread_t thread, int *policy, struct bionic_sched_param *param) +{ + struct sched_param realparam; + int ret = pthread_getschedparam(thread, policy, &realparam); + if (param != NULL) + param->sched_priority = realparam.sched_priority; + return ret; +} + +static int darwin_my_pthread_setschedparam(pthread_t thread, int policy, struct bionic_sched_param *param) +{ + struct sched_param realparam; + pthread_getschedparam(thread, NULL, &realparam); + realparam.sched_priority = param->sched_priority; + return pthread_setschedparam(thread, policy, &realparam); +} + +static int darwin_my_pthread_attr_setschedparam(pthread_attr_t *__attr, struct bionic_sched_param const *param) +{ + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + struct sched_param realparam; + pthread_attr_getschedparam(realattr, &realparam); + realparam.sched_priority = param->sched_priority; + return pthread_attr_setschedparam(realattr, &realparam); +} + +static int darwin_my_pthread_attr_getschedparam(pthread_attr_t const *__attr, struct bionic_sched_param *param) +{ + pthread_attr_t *realattr = (pthread_attr_t *) *(unsigned int *) __attr; + struct sched_param realparam; + int ret = pthread_attr_getschedparam(realattr, &realparam); + if (param != NULL) + param->sched_priority = realparam.sched_priority; + return ret; +} + + +#endif + +#ifndef __APPLE__ + +static int my_sem_init(sem_t **sem, int pshared, unsigned int value) { + *sem = (sem_t*) malloc(sizeof(sem_t)); + if (!(*sem)) { + errno = ENOMEM; + return -1; + } + int ret = sem_init(*sem, pshared, value); + if (ret) { + free(*sem); + *sem = NULL; + } + return ret; +} + +static int my_sem_destroy(sem_t **sem) { + if (!(*sem)) + return 0; + int ret = sem_destroy(*sem); + free(*sem); + *sem = NULL; + return ret; +} + +static int my_sem_wait(sem_t **sem) { + return sem_wait(*sem); +} + +static int my_sem_timedwait(sem_t **sem, const struct timespec *abs_timeout) { + return sem_timedwait(*sem, abs_timeout); +} + +static int my_sem_post(sem_t **sem) { + return sem_post(*sem); +} + +#else + +struct darwin_my_sem_info { + semaphore_t sem; +}; +static int darwin_my_sem_init(struct darwin_my_sem_info **sem, int pshared, unsigned int value) { + if (pshared) { + printf("sem_init: pshared not supported\n"); + } + *sem = malloc(sizeof(struct darwin_my_sem_info)); + kern_return_t res = semaphore_create(mach_task_self(), &(*sem)->sem, SYNC_POLICY_FIFO, value); + if (res) { + free(*sem); + *sem = NULL; + if (res == KERN_INVALID_ARGUMENT) + errno = EINVAL; + if (res == KERN_RESOURCE_SHORTAGE) + errno = ENOMEM; + return -1; + } + return 0; +} +static int darwin_my_sem_destroy(struct darwin_my_sem_info **sem) { + semaphore_destroy(mach_task_self(), (*sem)->sem); + free(*sem); + return 0; +} +static int darwin_my_sem_wait(struct darwin_my_sem_info **sem) { + return semaphore_wait((*sem)->sem); +} +static int darwin_my_sem_timedwait(struct darwin_my_sem_info **sem, const struct timespec *abs_timeout) { + struct timespec now; + clock_gettime(CLOCK_REALTIME, &now); + mach_timespec_t ts; + if (abs_timeout->tv_sec > now.tv_sec || + (abs_timeout->tv_sec == now.tv_sec && abs_timeout->tv_nsec > now.tv_nsec)) { + ts.tv_sec = (unsigned int) (abs_timeout->tv_sec - now.tv_sec); + ts.tv_nsec = abs_timeout->tv_nsec - now.tv_nsec; + } else { + ts.tv_sec = 0; + ts.tv_nsec = 0; + } + kern_return_t result = semaphore_timedwait((*sem)->sem, ts); + if (result == KERN_SUCCESS) + return 0; + if (result == KERN_OPERATION_TIMED_OUT) + errno = ETIMEDOUT; + if (result == KERN_ABORTED) + errno = EINTR; + return -1; +} +static int darwin_my_sem_post(struct darwin_my_sem_info **sem) { + return semaphore_signal((*sem)->sem); +} + +#endif + +struct _hook pthread_hooks[] = { + /* pthread.h */ + // {"getauxval", getauxval}, + {"gettid", my_gettid}, + {"pthread_atfork", pthread_atfork}, + {"pthread_create", my_pthread_create}, + {"pthread_kill", pthread_kill}, + {"pthread_exit", pthread_exit}, + {"pthread_join", pthread_join}, + {"pthread_detach", pthread_detach}, + {"pthread_self", pthread_self}, + {"pthread_equal", pthread_equal}, +#ifdef __APPLE__ + {"pthread_getschedparam", darwin_my_pthread_getschedparam}, + {"pthread_setschedparam", darwin_my_pthread_setschedparam}, +#else + {"pthread_getschedparam", pthread_getschedparam}, + {"pthread_setschedparam", pthread_setschedparam}, +#endif + {"pthread_mutex_init", my_pthread_mutex_init}, + {"pthread_mutex_destroy", my_pthread_mutex_destroy}, + {"pthread_mutex_lock", my_pthread_mutex_lock}, + {"pthread_mutex_unlock", my_pthread_mutex_unlock}, + {"pthread_mutex_trylock", my_pthread_mutex_trylock}, +#ifndef __APPLE__ + {"pthread_mutex_lock_timeout_np", my_pthread_mutex_lock_timeout_np}, +#endif +#ifdef __APPLE__ + {"pthread_mutexattr_init", darwin_my_pthread_mutexattr_init}, + {"pthread_mutexattr_destroy", darwin_my_pthread_mutexattr_destroy}, + {"pthread_mutexattr_gettype", darwin_my_pthread_mutexattr_gettype}, + {"pthread_mutexattr_settype", darwin_my_pthread_mutexattr_settype}, + {"pthread_mutexattr_getpshared", darwin_my_pthread_mutexattr_getpshared}, + {"pthread_mutexattr_setpshared", darwin_my_pthread_mutexattr_setpshared}, +#else + {"pthread_mutexattr_init", pthread_mutexattr_init}, + {"pthread_mutexattr_destroy", pthread_mutexattr_destroy}, + {"pthread_mutexattr_gettype", pthread_mutexattr_gettype}, + {"pthread_mutexattr_settype", pthread_mutexattr_settype}, + {"pthread_mutexattr_getpshared", pthread_mutexattr_getpshared}, + {"pthread_mutexattr_setpshared", pthread_mutexattr_setpshared}, +#endif + {"pthread_condattr_init", pthread_condattr_init}, + {"pthread_condattr_getpshared", pthread_condattr_getpshared}, + {"pthread_condattr_setpshared", pthread_condattr_setpshared}, + {"pthread_condattr_destroy", pthread_condattr_destroy}, + {"pthread_cond_init", my_pthread_cond_init}, + {"pthread_cond_destroy", my_pthread_cond_destroy}, + {"pthread_cond_broadcast", my_pthread_cond_broadcast}, + {"pthread_cond_signal", my_pthread_cond_signal}, + {"pthread_cond_wait", my_pthread_cond_wait}, + {"pthread_cond_timedwait", my_pthread_cond_timedwait}, + {"pthread_cond_timedwait_monotonic", my_pthread_cond_timedwait}, + {"pthread_cond_timedwait_monotonic_np", my_pthread_cond_timedwait}, +#ifndef __APPLE__ + {"pthread_cond_timedwait_relative_np", my_pthread_cond_timedwait_relative_np}, +#endif + {"pthread_key_delete", pthread_key_delete}, + {"pthread_setname_np", pthread_setname_np}, +#ifdef __APPLE__ + {"pthread_once", darwin_my_pthread_once}, +#else + {"pthread_once", pthread_once}, +#endif + {"pthread_key_create", pthread_key_create}, + {"pthread_setspecific", pthread_setspecific}, + {"pthread_getspecific", pthread_getspecific}, + {"pthread_attr_init", my_pthread_attr_init}, + {"pthread_attr_destroy", my_pthread_attr_destroy}, + {"pthread_attr_setdetachstate", my_pthread_attr_setdetachstate}, + {"pthread_attr_getdetachstate", my_pthread_attr_getdetachstate}, + {"pthread_attr_setschedpolicy", my_pthread_attr_setschedpolicy}, + {"pthread_attr_getschedpolicy", my_pthread_attr_getschedpolicy}, +#ifdef __APPLE__ + {"pthread_attr_setschedparam", darwin_my_pthread_attr_setschedparam}, + {"pthread_attr_getschedparam", darwin_my_pthread_attr_getschedparam}, +#else + {"pthread_attr_setschedparam", my_pthread_attr_setschedparam}, + {"pthread_attr_getschedparam", my_pthread_attr_getschedparam}, +#endif + {"pthread_attr_setstacksize", my_pthread_attr_setstacksize}, + {"pthread_attr_getstacksize", my_pthread_attr_getstacksize}, + {"pthread_attr_setstack", my_pthread_attr_setstack}, + {"pthread_attr_getstack", my_pthread_attr_getstack}, + {"pthread_attr_setguardsize", my_pthread_attr_setguardsize}, + {"pthread_attr_getguardsize", my_pthread_attr_getguardsize}, + {"pthread_attr_setscope", my_pthread_attr_setscope}, + {"pthread_attr_getscope", my_pthread_attr_getscope}, +#ifndef __APPLE__ + {"pthread_getattr_np", my_pthread_getattr_np}, +#endif + {"pthread_rwlockattr_init", my_pthread_rwlockattr_init}, + {"pthread_rwlockattr_destroy", my_pthread_rwlockattr_destroy}, + {"pthread_rwlockattr_setpshared", my_pthread_rwlockattr_setpshared}, + {"pthread_rwlockattr_getpshared", my_pthread_rwlockattr_getpshared}, + {"pthread_rwlock_init", my_pthread_rwlock_init}, + {"pthread_rwlock_destroy", my_pthread_rwlock_destroy}, + {"pthread_rwlock_unlock", my_pthread_rwlock_unlock}, + {"pthread_rwlock_wrlock", my_pthread_rwlock_wrlock}, + {"pthread_rwlock_rdlock", my_pthread_rwlock_rdlock}, + {"pthread_rwlock_tryrdlock", my_pthread_rwlock_tryrdlock}, + {"pthread_rwlock_trywrlock", my_pthread_rwlock_trywrlock}, +#ifndef __APPLE__ + {"pthread_rwlock_timedrdlock", my_pthread_rwlock_timedrdlock}, + {"pthread_rwlock_timedwrlock", my_pthread_rwlock_timedwrlock}, +#endif + {"__pthread_cleanup_push", my_pthread_cleanup_push}, + {"__pthread_cleanup_pop", my_pthread_cleanup_pop}, + /* semaphore.h */ +#ifndef __APPLE__ + {"sem_init", my_sem_init}, + {"sem_destroy", my_sem_destroy}, + {"sem_wait", my_sem_wait}, + {"sem_timedwait", my_sem_timedwait}, + {"sem_post", my_sem_post}, +#else + {"sem_init", darwin_my_sem_init}, + {"sem_destroy", darwin_my_sem_destroy}, + {"sem_wait", darwin_my_sem_wait}, + {"sem_timedwait", darwin_my_sem_timedwait}, + {"sem_post", darwin_my_sem_post}, +#endif + {NULL, NULL} +}; diff --git a/libhybris/src/hooks_shm.c b/libhybris/src/hooks_shm.c new file mode 100644 index 0000000..207a2e5 --- /dev/null +++ b/libhybris/src/hooks_shm.c @@ -0,0 +1,260 @@ +/* + * Copyright (c) 2012 Carsten Munk + * Copyright (c) 2013 Christophe Chapuis + * + * 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. + * + */ + +#include "hooks_shm.h" + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* Debug */ +#include "logging.h" +#define LOGD(message, ...) HYBRIS_DEBUG_LOG(HOOKS, message, ##__VA_ARGS__) + +#define HYBRIS_DATA_SIZE 4000 +#define HYBRIS_SHM_MASK 0xFF000000UL +#define HYBRIS_SHM_PATH "/hybris_shm_data" + +/* Structure of a shared memory region */ +typedef struct _hybris_shm_data_t { + pthread_mutex_t access_mutex; + int current_offset; + int max_offset; + unsigned char data; +} hybris_shm_data_t; + +/* A helper to switch between the size of the data and the size of the shm object */ +const int HYBRIS_SHM_DATA_HEADER_SIZE = (sizeof(hybris_shm_data_t) - sizeof(unsigned char)); + +/* pointer to the shared memory region */ +static hybris_shm_data_t *_hybris_shm_data = NULL; + +/* the SHM mem_id of the shared memory region */ +static int _hybris_shm_fd = -1; + +/* the size of the shared memory region that is currently mmap'ed to this process */ +static int _current_mapped_size = 0; + +/* forward-declare the internal static methods */ +static void _release_shm(void); +static void _sync_mmap_with_shm(void); +static void _hybris_shm_init(void); +static void _hybris_shm_extend_region(void); + +/* + * Detach the allocated memory region, and mark it for deletion + */ +static void _release_shm(void) +{ + if (_hybris_shm_data) { + munmap(_hybris_shm_data, _current_mapped_size); /* unmap from this process */ + _hybris_shm_data = NULL; /* pointer is no more valid */ + } + if (_hybris_shm_fd >= 0) { + close(_hybris_shm_fd); /* close the shm file descriptor */ + _hybris_shm_fd = -1; + } + shm_unlink(HYBRIS_SHM_PATH); /* request the deletion of the shm region */ +} + +/* + * Synchronize the size of the mmap with the size of the shm region + */ +static void _sync_mmap_with_shm() +{ + if (_hybris_shm_fd >= 0 && _hybris_shm_data) { + if (_current_mapped_size < _hybris_shm_data->max_offset + HYBRIS_SHM_DATA_HEADER_SIZE) { + /* Note that mremap may change the address pointed by _hybris_shm_data. + * But as we never point directly into _hybris_shm_data, it's fine. + * */ +#ifdef __APPLE__ + // TODO: Implement it somehow? + abort(); +#else + _hybris_shm_data = (hybris_shm_data_t *)mremap( _hybris_shm_data, _current_mapped_size, + _hybris_shm_data->max_offset + HYBRIS_SHM_DATA_HEADER_SIZE, + MREMAP_MAYMOVE ); +#endif + + _current_mapped_size = _hybris_shm_data->max_offset + HYBRIS_SHM_DATA_HEADER_SIZE; + } + } +} + +/* + * Initialize the shared memory region for hybris, in order to store + * pshared mutex, condition and rwlock + */ +static void _hybris_shm_init() +{ + if (_hybris_shm_fd < 0) { + const size_t size_to_map = HYBRIS_SHM_DATA_HEADER_SIZE + HYBRIS_DATA_SIZE; /* 4000 bytes for the data, plus the header size */ + + /* initialize or get shared memory segment */ + _hybris_shm_fd = shm_open(HYBRIS_SHM_PATH, O_RDWR, 0660); + if (_hybris_shm_fd >= 0) { + /* Map the memory object */ + _hybris_shm_data = (hybris_shm_data_t *)mmap( NULL, size_to_map, + PROT_READ | PROT_WRITE, MAP_SHARED, + _hybris_shm_fd, 0 ); + _current_mapped_size = size_to_map; + + _sync_mmap_with_shm(); + } + else { + LOGD("Creating a new shared memory segment."); + + _hybris_shm_fd = shm_open(HYBRIS_SHM_PATH, O_RDWR | O_CREAT, 0660); + if (_hybris_shm_fd >= 0) { + ftruncate( _hybris_shm_fd, size_to_map ); + /* Map the memory object */ + _hybris_shm_data = (hybris_shm_data_t *)mmap( NULL, size_to_map, + PROT_READ | PROT_WRITE, MAP_SHARED, + _hybris_shm_fd, 0 ); + if (_hybris_shm_data == MAP_FAILED) { + HYBRIS_ERROR_LOG(HOOKS, "ERROR: mmap failed: %s\n", strerror(errno)); + _release_shm(); + } + else { + _current_mapped_size = size_to_map; + /* Initialize the memory object */ + memset((void*)_hybris_shm_data, 0, size_to_map); + _hybris_shm_data->max_offset = HYBRIS_DATA_SIZE; + + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED); + pthread_mutex_init(&_hybris_shm_data->access_mutex, &attr); + pthread_mutexattr_destroy(&attr); + + atexit(_release_shm); + } + } + else { + HYBRIS_ERROR_LOG(HOOKS, "ERROR: Couldn't create shared memory segment !"); + } + } + } +} + +/* + * Extend the SHM region's size + */ +static void _hybris_shm_extend_region() +{ + printf("WARN: extend shim region\n"); + ftruncate( _hybris_shm_fd, _current_mapped_size + HYBRIS_DATA_SIZE ); + _hybris_shm_data->max_offset += HYBRIS_DATA_SIZE; + + _sync_mmap_with_shm(); +} + +/************ public functions *******************/ + + /* + * Determine if the pointer that has been extracted by hybris is + * pointing to an address in the shared memory + */ +int hybris_is_pointer_in_shm(void *ptr) +{ + if ((unsigned int)ptr >= HYBRIS_SHM_MASK) + return 1; + + return 0; +} + +/* + * Convert this offset pointer to the shared memory to an + * absolute pointer that can be used in user space + */ +void *hybris_get_shmpointer(hybris_shm_pointer_t handle) +{ + void *realpointer = NULL; + if (hybris_is_pointer_in_shm((void*)handle)) { + if (_hybris_shm_fd < 0) { + /* if we are not yet attached to any shm region, then do it now */ + _hybris_shm_init(); + } + + pthread_mutex_lock(&_hybris_shm_data->access_mutex); + + _sync_mmap_with_shm(); /* make sure our mmap is sync'ed */ + + if (_hybris_shm_data != NULL) { + unsigned int offset = handle & (~HYBRIS_SHM_MASK); + realpointer = &(_hybris_shm_data->data) + offset; + + /* Be careful when activating this trace: this method is called *a lot* ! + LOGD("handle = %x, offset = %d, realpointer = %x)", handle, offset, realpointer); + */ + } + + pthread_mutex_unlock(&_hybris_shm_data->access_mutex); + } + + return realpointer; +} + +/* + * Allocate a space in the shared memory region of hybris + */ +hybris_shm_pointer_t hybris_shm_alloc(size_t size) +{ + hybris_shm_pointer_t location = 0; + + if (_hybris_shm_fd < 0) { + /* if we are not yet attached to any shm region, then do it now */ + _hybris_shm_init(); + } + + pthread_mutex_lock(&_hybris_shm_data->access_mutex); + + /* Make sure our mmap is sync'ed */ + _sync_mmap_with_shm(); + + if (_hybris_shm_data == NULL || _hybris_shm_fd < 0) + return 0; + + if (_hybris_shm_data->current_offset + size >= _hybris_shm_data->max_offset) { + /* the current buffer if full: extend it a little bit more */ + _hybris_shm_extend_region(); + _sync_mmap_with_shm(); + } + + /* there is now enough place in this pool */ + location = _hybris_shm_data->current_offset | HYBRIS_SHM_MASK; + LOGD("Allocated a shared object (size = %d, at offset %d)", size, _hybris_shm_data->current_offset); + + _hybris_shm_data->current_offset += size; + + pthread_mutex_unlock(&_hybris_shm_data->access_mutex); + + return location; +} diff --git a/libhybris/src/hooks_shm.h b/libhybris/src/hooks_shm.h new file mode 100644 index 0000000..aabf5cd --- /dev/null +++ b/libhybris/src/hooks_shm.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2012 Carsten Munk + * + * 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. + * + */ + +#ifndef HOOKS_SHM_H_ +#define HOOKS_SHM_H_ + +#include + +typedef unsigned int hybris_shm_pointer_t; + +/* + * Allocate a space in the shared memory region of hybris + */ +hybris_shm_pointer_t hybris_shm_alloc(size_t size); +/* + * Test if the pointers points to the shm region + */ +int hybris_is_pointer_in_shm(void *ptr); +/* + * Convert an offset pointer to the shared memory to an absolute pointer that can be used in user space + * This function will return a NULL pointer if the handle does not actually point to the shm region + */ +void *hybris_get_shmpointer(hybris_shm_pointer_t handle); + +#endif + +// vim:ts=4:sw=4:noexpandtab diff --git a/libhybris/src/jb/arch/arm/begin.S b/libhybris/src/jb/arch/arm/begin.S new file mode 100644 index 0000000..e259902 --- /dev/null +++ b/libhybris/src/jb/arch/arm/begin.S @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + + .text + .align 4 + .type _start,#function + .globl _start + +_start: + mov r0, sp + mov r1, #0 + bl __linker_init + + /* linker init returns the _entry address in the main image */ + mov pc, r0 + + .section .ctors, "wa" + .globl __CTOR_LIST__ +__CTOR_LIST__: + .long -1 diff --git a/libhybris/src/jb/arch/x86/begin.S b/libhybris/src/jb/arch/x86/begin.S new file mode 100644 index 0000000..b4427e0 --- /dev/null +++ b/libhybris/src/jb/arch/x86/begin.S @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +.text +.align 4 +.type _start, @function +.globl _start + +_start: + /* save the elfdata ptr to %eax, AND push it onto the stack */ + mov %esp, %eax + pushl %esp + + pushl %eax + call __linker_init + + /* linker init returns (%eax) the _entry address in the main image */ + /* entry point expects sp to point to elfdata */ + popl %esp + jmp *%eax + diff --git a/libhybris/src/jb/debugger.c b/libhybris/src/jb/debugger.c new file mode 100644 index 0000000..756b5cf --- /dev/null +++ b/libhybris/src/jb/debugger.c @@ -0,0 +1,240 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "linker.h" + +#include +#include + +extern int tgkill(int tgid, int tid, int sig); + +void notify_gdb_of_libraries(); + +#define DEBUGGER_SOCKET_NAME "android:debuggerd" + +typedef enum { + // dump a crash + DEBUGGER_ACTION_CRASH, + // dump a tombstone file + DEBUGGER_ACTION_DUMP_TOMBSTONE, + // dump a backtrace only back to the socket + DEBUGGER_ACTION_DUMP_BACKTRACE, +} debugger_action_t; + +/* message sent over the socket */ +typedef struct { + debugger_action_t action; + pid_t tid; +} debugger_msg_t; + +#define RETRY_ON_EINTR(ret,cond) \ + do { \ + ret = (cond); \ + } while (ret < 0 && errno == EINTR) + +// see man(2) prctl, specifically the section about PR_GET_NAME +#define MAX_TASK_NAME_LEN (16) + +static int socket_abstract_client(const char *name, int type) +{ + struct sockaddr_un addr; + size_t namelen; + socklen_t alen; + int s, err; + + namelen = strlen(name); + + // Test with length +1 for the *initial* '\0'. + if ((namelen + 1) > sizeof(addr.sun_path)) { + errno = EINVAL; + return -1; + } + + /* This is used for abstract socket namespace, we need + * an initial '\0' at the start of the Unix socket path. + * + * Note: The path in this case is *not* supposed to be + * '\0'-terminated. ("man 7 unix" for the gory details.) + */ + memset (&addr, 0, sizeof addr); + addr.sun_family = AF_LOCAL; + addr.sun_path[0] = 0; + memcpy(addr.sun_path + 1, name, namelen); + + alen = namelen + offsetof(struct sockaddr_un, sun_path) + 1; + + s = socket(AF_LOCAL, type, 0); + if(s < 0) return -1; + + RETRY_ON_EINTR(err,connect(s, (struct sockaddr *) &addr, alen)); + if (err < 0) { + close(s); + s = -1; + } + + return s; +} + +#include "linker_format.h" +#include <../libc/private/logd.h> + +/* + * Writes a summary of the signal to the log file. + * + * We could be here as a result of native heap corruption, or while a + * mutex is being held, so we don't want to use any libc functions that + * could allocate memory or hold a lock. + */ +static void logSignalSummary(int signum, const siginfo_t* info) +{ + char buffer[128]; + char threadname[MAX_TASK_NAME_LEN + 1]; // one more for termination + + char* signame; + switch (signum) { + case SIGILL: signame = "SIGILL"; break; + case SIGABRT: signame = "SIGABRT"; break; + case SIGBUS: signame = "SIGBUS"; break; + case SIGFPE: signame = "SIGFPE"; break; + case SIGSEGV: signame = "SIGSEGV"; break; + case SIGSTKFLT: signame = "SIGSTKFLT"; break; + case SIGPIPE: signame = "SIGPIPE"; break; + default: signame = "???"; break; + } + + if (prctl(PR_GET_NAME, (unsigned long)threadname, 0, 0, 0) != 0) { + strcpy(threadname, ""); + } else { + // short names are null terminated by prctl, but the manpage + // implies that 16 byte names are not. + threadname[MAX_TASK_NAME_LEN] = 0; + } + format_buffer(buffer, sizeof(buffer), + "Fatal signal %d (%s) at 0x%08x (code=%d), thread %d (%s)", + signum, signame, info->si_addr, info->si_code, gettid(), threadname); + + __libc_android_log_write(ANDROID_LOG_FATAL, "libc", buffer); +} + +/* + * Catches fatal signals so we can ask debuggerd to ptrace us before + * we crash. + */ +void debugger_signal_handler(int n, siginfo_t* info, void* unused) +{ + char msgbuf[128]; + unsigned tid; + int s; + + logSignalSummary(n, info); + + tid = gettid(); + s = socket_abstract_client(DEBUGGER_SOCKET_NAME, SOCK_STREAM); + + if (s >= 0) { + /* debugger knows our pid from the credentials on the + * local socket but we need to tell it our tid. It + * is paranoid and will verify that we are giving a tid + * that's actually in our process + */ + int ret; + debugger_msg_t msg; + msg.action = DEBUGGER_ACTION_CRASH; + msg.tid = tid; + RETRY_ON_EINTR(ret, write(s, &msg, sizeof(msg))); + if (ret == sizeof(msg)) { + /* if the write failed, there is no point to read on + * the file descriptor. */ + RETRY_ON_EINTR(ret, read(s, &tid, 1)); + int savedErrno = errno; + notify_gdb_of_libraries(); + errno = savedErrno; + } + + if (ret < 0) { + /* read or write failed -- broken connection? */ + format_buffer(msgbuf, sizeof(msgbuf), + "Failed while talking to debuggerd: %s", strerror(errno)); + __libc_android_log_write(ANDROID_LOG_FATAL, "libc", msgbuf); + } + + close(s); + } else { + /* socket failed; maybe process ran out of fds */ + format_buffer(msgbuf, sizeof(msgbuf), + "Unable to open connection to debuggerd: %s", strerror(errno)); + __libc_android_log_write(ANDROID_LOG_FATAL, "libc", msgbuf); + } + + /* remove our net so we fault for real when we return */ + signal(n, SIG_DFL); + + /* + * These signals are not re-thrown when we resume. This means that + * crashing due to (say) SIGPIPE doesn't work the way you'd expect it + * to. We work around this by throwing them manually. We don't want + * to do this for *all* signals because it'll screw up the address for + * faults like SIGSEGV. + */ + switch (n) { + case SIGABRT: + case SIGFPE: + case SIGPIPE: + case SIGSTKFLT: + (void) tgkill(getpid(), gettid(), n); + break; + default: // SIGILL, SIGBUS, SIGSEGV + break; + } +} + +void debugger_init() +{ + struct sigaction act; + memset(&act, 0, sizeof(act)); + act.sa_sigaction = debugger_signal_handler; + act.sa_flags = SA_RESTART | SA_SIGINFO; + sigemptyset(&act.sa_mask); + + sigaction(SIGILL, &act, NULL); + sigaction(SIGABRT, &act, NULL); + sigaction(SIGBUS, &act, NULL); + sigaction(SIGFPE, &act, NULL); + sigaction(SIGSEGV, &act, NULL); + sigaction(SIGSTKFLT, &act, NULL); + sigaction(SIGPIPE, &act, NULL); +} diff --git a/libhybris/src/jb/dlfcn.c b/libhybris/src/jb/dlfcn.c new file mode 100644 index 0000000..22ff33f --- /dev/null +++ b/libhybris/src/jb/dlfcn.c @@ -0,0 +1,309 @@ +/* + * Copyright (C) 2007 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. + */ + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include +#include +#include +#include + +#ifdef __APPLE__ +#include +#endif + +#include "hybris/jb/linker.h" +#include "linker_format.h" + +/* This file hijacks the symbols stubbed out in libdl.so. */ + +#define DL_SUCCESS 0 +#define DL_ERR_CANNOT_LOAD_LIBRARY 1 +#define DL_ERR_INVALID_LIBRARY_HANDLE 2 +#define DL_ERR_BAD_SYMBOL_NAME 3 +#define DL_ERR_SYMBOL_NOT_FOUND 4 +#define DL_ERR_SYMBOL_NOT_GLOBAL 5 + +static char dl_err_buf[1024]; +static const char *dl_err_str; + +static const char *dl_errors[] = { + [DL_ERR_CANNOT_LOAD_LIBRARY] = "Cannot load library", + [DL_ERR_INVALID_LIBRARY_HANDLE] = "Invalid library handle", + [DL_ERR_BAD_SYMBOL_NAME] = "Invalid symbol name", + [DL_ERR_SYMBOL_NOT_FOUND] = "Symbol not found", + [DL_ERR_SYMBOL_NOT_GLOBAL] = "Symbol is not global", +}; + +#define likely(expr) __builtin_expect (expr, 1) +#define unlikely(expr) __builtin_expect (expr, 0) + +#ifdef __APPLE__ +static pthread_mutex_t dl_lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER; +#else +static pthread_mutex_t dl_lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; +#endif + +static void set_dlerror(int err) +{ + format_buffer(dl_err_buf, sizeof(dl_err_buf), "%s: %s", dl_errors[err], + linker_get_error()); + dl_err_str = (const char *)&dl_err_buf[0]; +}; + +void *android_dlopen(const char *filename, int flag) +{ + soinfo *ret; + + pthread_mutex_lock(&dl_lock); + ret = find_library(filename); + if (unlikely(ret == NULL)) { + set_dlerror(DL_ERR_CANNOT_LOAD_LIBRARY); + } else { + call_constructors_recursive(ret); + ret->refcount++; + } + pthread_mutex_unlock(&dl_lock); + return ret; +} + +const char *android_dlerror(void) +{ + const char *tmp = dl_err_str; + dl_err_str = NULL; + return (const char *)tmp; +} + +void *android_dlsym(void *handle, const char *symbol) +{ + soinfo *found; + Elf32_Sym *sym; + unsigned bind; + + pthread_mutex_lock(&dl_lock); + + if(unlikely(handle == 0)) { + set_dlerror(DL_ERR_INVALID_LIBRARY_HANDLE); + goto err; + } + if(unlikely(symbol == 0)) { + set_dlerror(DL_ERR_BAD_SYMBOL_NAME); + goto err; + } + + if(handle == RTLD_DEFAULT) { + sym = lookup(symbol, &found, NULL); + } else if(handle == RTLD_NEXT) { + void *ret_addr = __builtin_return_address(0); + soinfo *si = find_containing_library(ret_addr); + + sym = NULL; + if(si && si->next) { + sym = lookup(symbol, &found, si->next); + } + } else { + found = (soinfo*)handle; + sym = lookup_in_library(found, symbol); + } + + if(likely(sym != 0)) { + bind = ELF32_ST_BIND(sym->st_info); + + if(likely((bind == STB_GLOBAL || bind == STB_WEAK) && (sym->st_shndx != 0))) { + unsigned ret = sym->st_value + found->base; + pthread_mutex_unlock(&dl_lock); + return (void*)ret; + } + + set_dlerror(DL_ERR_SYMBOL_NOT_GLOBAL); + } + else + set_dlerror(DL_ERR_SYMBOL_NOT_FOUND); + +err: + pthread_mutex_unlock(&dl_lock); + return 0; +} + +int android_dladdr(const void *addr, Dl_info *info) +{ + int ret = 0; + + pthread_mutex_lock(&dl_lock); + + /* Determine if this address can be found in any library currently mapped */ + soinfo *si = find_containing_library(addr); + + if(si) { + memset(info, 0, sizeof(Dl_info)); + + info->dli_fname = si->name; + info->dli_fbase = (void*)si->base; + + /* Determine if any symbol in the library contains the specified address */ + Elf32_Sym *sym = find_containing_symbol(addr, si); + + if(sym != NULL) { + info->dli_sname = si->strtab + sym->st_name; + info->dli_saddr = (void*)(si->base + sym->st_value); + } + + ret = 1; + } + + pthread_mutex_unlock(&dl_lock); + + return ret; +} + +int android_dlclose(void *handle) +{ + pthread_mutex_lock(&dl_lock); + (void)unload_library((soinfo*)handle); + pthread_mutex_unlock(&dl_lock); + return 0; +} + +int android_dl_iterate_phdr(int (*cb)(struct dl_phdr_info *info, size_t size, void *data),void *data); + +static int android_get_application_target_sdk_version() { + return 0; +} + +#if defined(ANDROID_ARM_LINKER) +// 0000000 00011111 111112 22222222 2333333 333344444444445555555 +// 0123456 78901234 567890 12345678 9012345 678901234567890123456 +#define ANDROID_LIBDL_STRTAB \ + "dlopen\0dlclose\0dlsym\0dlerror\0dladdr\0dl_unwind_find_exidx\0dl_iterate_phdr\0" \ + "android_get_application_target_sdk_version\0" + +_Unwind_Ptr android_dl_unwind_find_exidx(_Unwind_Ptr pc, int *pcount); + +#elif defined(ANDROID_X86_LINKER) +// 0000000 00011111 111112 22222222 2333333 3333444444444455 +// 0123456 78901234 567890 12345678 9012345 6789012345678901 +#define ANDROID_LIBDL_STRTAB \ + "dlopen\0dlclose\0dlsym\0dlerror\0dladdr\0dl_iterate_phdr\0" +#elif defined(ANDROID_SH_LINKER) +// 0000000 00011111 111112 22222222 2333333 3333444444444455 +// 0123456 78901234 567890 12345678 9012345 6789012345678901 +#define ANDROID_LIBDL_STRTAB \ + "dlopen\0dlclose\0dlsym\0dlerror\0dladdr\0dl_iterate_phdr\0" + +#else /* !defined(ANDROID_ARM_LINKER) && !defined(ANDROID_X86_LINKER) */ +#error Unsupported architecture. Only ARM and x86 are presently supported. +#endif + +static Elf32_Sym libdl_symtab[] = { + // total length of libdl_info.strtab, including trailing 0 + // This is actually the the STH_UNDEF entry. Technically, it's + // supposed to have st_name == 0, but instead, it points to an index + // in the strtab with a \0 to make iterating through the symtab easier. + { st_name: sizeof(ANDROID_LIBDL_STRTAB) - 1, + }, + { st_name: 0, // starting index of the name in libdl_info.strtab + st_value: (Elf32_Addr) &android_dlopen, + st_info: STB_GLOBAL << 4, + st_shndx: 1, + }, + { st_name: 7, + st_value: (Elf32_Addr) &android_dlclose, + st_info: STB_GLOBAL << 4, + st_shndx: 1, + }, + { st_name: 15, + st_value: (Elf32_Addr) &android_dlsym, + st_info: STB_GLOBAL << 4, + st_shndx: 1, + }, + { st_name: 21, + st_value: (Elf32_Addr) &android_dlerror, + st_info: STB_GLOBAL << 4, + st_shndx: 1, + }, + { st_name: 29, + st_value: (Elf32_Addr) &android_dladdr, + st_info: STB_GLOBAL << 4, + st_shndx: 1, + }, +#ifdef ANDROID_ARM_LINKER + { st_name: 36, + st_value: (Elf32_Addr) &android_dl_unwind_find_exidx, + st_info: STB_GLOBAL << 4, + st_shndx: 1, + }, + { st_name: 57, +#else + { st_name: 36, +#endif + st_value: (Elf32_Addr) &android_dl_iterate_phdr, + st_info: STB_GLOBAL << 4, + st_shndx: 1, + }, +#ifdef ANDROID_ARM_LINKER + { st_name: 73, + st_value: (Elf32_Addr) &android_get_application_target_sdk_version, + st_info: STB_GLOBAL << 4, + st_shndx: 1, + }, +#endif +}; + +/* Fake out a hash table with a single bucket. + * A search of the hash table will look through + * libdl_symtab starting with index [1], then + * use libdl_chains to find the next index to + * look at. libdl_chains should be set up to + * walk through every element in libdl_symtab, + * and then end with 0 (sentinel value). + * + * I.e., libdl_chains should look like + * { 0, 2, 3, ... N, 0 } where N is the number + * of actual symbols, or nelems(libdl_symtab)-1 + * (since the first element of libdl_symtab is not + * a real symbol). + * + * (see _elf_lookup()) + * + * Note that adding any new symbols here requires + * stubbing them out in libdl. + */ +static unsigned libdl_buckets[1] = { 1 }; +#if defined(ANDROID_ARM_LINKER) +static unsigned libdl_chains[9] = { 0, 2, 3, 4, 5, 6, 7, 8, 0 }; +#else +static unsigned libdl_chains[7] = { 0, 2, 3, 4, 5, 6, 0 }; +#endif + +soinfo libdl_info = { + name: "libdl.so", + flags: FLAG_LINKED, + + strtab: ANDROID_LIBDL_STRTAB, + symtab: libdl_symtab, + + refcount: 1, + nbucket: 1, +#if defined(ANDROID_ARM_LINKER) + nchain: 8, +#else + nchain: 7, +#endif + bucket: libdl_buckets, + chain: libdl_chains, +}; diff --git a/libhybris/src/jb/linker.c b/libhybris/src/jb/linker.c new file mode 100644 index 0000000..1aef110 --- /dev/null +++ b/libhybris/src/jb/linker.c @@ -0,0 +1,2371 @@ +/* + * Copyright (C) 2008, 2009 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef __APPLE__ +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +/* special private C library header - see Android.mk */ +//#include "bionic_tls.h" + +#include "hybris/jb/linker.h" +#include "hybris/hook.h" +#include "linker_debug.h" +#include "linker_environ.h" +#include "linker_format.h" + +#define ALLOW_SYMBOLS_FROM_MAIN 1 +#define SO_MAX 128 + +/* Assume average path length of 64 and max 8 paths */ +#define LDPATH_BUFSIZE 512 +#define LDPATH_MAX 8 + +#define LDPRELOAD_BUFSIZE 512 +#define LDPRELOAD_MAX 8 + +/* >>> IMPORTANT NOTE - READ ME BEFORE MODIFYING <<< + * + * Do NOT use malloc() and friends or pthread_*() code here. + * Don't use printf() either; it's caused mysterious memory + * corruption in the past. + * The linker runs before we bring up libc and it's easiest + * to make sure it does not depend on any complex libc features + * + * open issues / todo: + * + * - are we doing everything we should for ARM_COPY relocations? + * - cleaner error reporting + * - after linking, set as much stuff as possible to READONLY + * and NOEXEC + * - linker hardcodes PAGE_SIZE and PAGE_MASK because the kernel + * headers provide versions that are negative... + * - allocate space for soinfo structs dynamically instead of + * having a hard limit (64) +*/ + + +static int link_image(soinfo *si, unsigned wr_offset); + +static int socount = 0; +static soinfo sopool[SO_MAX]; +static soinfo *freelist = NULL; +static soinfo *solist = &libdl_info; +static soinfo *sonext = &libdl_info; +#if ALLOW_SYMBOLS_FROM_MAIN +static soinfo *somain; /* main process, always the one after libdl_info */ +#endif + + +static inline int validate_soinfo(soinfo *si) +{ + return (si >= sopool && si < sopool + SO_MAX) || + si == &libdl_info; +} + +static char ldpaths_buf[LDPATH_BUFSIZE]; +static const char *ldpaths[LDPATH_MAX + 1]; + +static char ldpreloads_buf[LDPRELOAD_BUFSIZE]; +static const char *ldpreload_names[LDPRELOAD_MAX + 1]; + +static soinfo *preloads[LDPRELOAD_MAX + 1]; + +#if LINKER_DEBUG +int debug_verbosity = 0; +int debug_stdout = 0; +#endif + +static int pid; + +/* This boolean is set if the program being loaded is setuid */ +static int program_is_setuid; + +#if STATS +struct _link_stats linker_stats; +#endif + +#if COUNT_PAGES +unsigned bitmask[4096]; +#endif + +#ifndef PT_ARM_EXIDX +#define PT_ARM_EXIDX 0x70000001 /* .ARM.exidx segment */ +#endif + +#ifndef __APPLE__ +extern size_t strlcpy(char *dst, const char *src, size_t siz); +#endif + +#if 0 +// disable abort() since this is not a linker anymore +#define HOODLUM(name, ret, ...) \ + ret name __VA_ARGS__ \ + { \ + char errstr[] = "ERROR: " #name " called from the dynamic linker!\n"; \ + write(2, errstr, sizeof(errstr)); \ + abort(); \ + } +HOODLUM(malloc, void *, (size_t size)); +HOODLUM(free, void, (void *ptr)); +HOODLUM(realloc, void *, (void *ptr, size_t size)); +HOODLUM(calloc, void *, (size_t cnt, size_t size)); +#endif + +static char tmp_err_buf[768]; +static char __linker_dl_err_buf[768]; +#define DL_ERR(fmt, x...) \ + do { \ + format_buffer(__linker_dl_err_buf, sizeof(__linker_dl_err_buf), \ + "%s[%d]: " fmt, __func__, __LINE__, ##x); \ + ERROR(fmt "\n", ##x); \ + } while(0) + +const char *linker_get_error(void) +{ + return (const char *)&__linker_dl_err_buf[0]; +} + +/* + * This function is an empty stub where GDB locates a breakpoint to get notified + * about linker activity. + */ +extern void __attribute__((noinline)) rtld_db_dlactivity(void); + +static struct r_debug _r_debug = {1, NULL, &rtld_db_dlactivity, + RT_CONSISTENT, 0}; +static struct link_map *r_debug_tail = 0; + +static pthread_mutex_t _r_debug_lock = PTHREAD_MUTEX_INITIALIZER; + +static void insert_soinfo_into_debug_map(soinfo * info) +{ + struct link_map * map; + + /* Copy the necessary fields into the debug structure. + */ + map = &(info->linkmap); + map->l_addr = info->base; + map->l_name = (char*) info->name; + map->l_ld = (uintptr_t)info->dynamic; + + /* Stick the new library at the end of the list. + * gdb tends to care more about libc than it does + * about leaf libraries, and ordering it this way + * reduces the back-and-forth over the wire. + */ + if (r_debug_tail) { + r_debug_tail->l_next = map; + map->l_prev = r_debug_tail; + map->l_next = 0; + } else { + _r_debug.r_map = map; + map->l_prev = 0; + map->l_next = 0; + } + r_debug_tail = map; +} + +static void remove_soinfo_from_debug_map(soinfo * info) +{ + struct link_map * map = &(info->linkmap); + + if (r_debug_tail == map) + r_debug_tail = map->l_prev; + + if (map->l_prev) map->l_prev->l_next = map->l_next; + if (map->l_next) map->l_next->l_prev = map->l_prev; +} + +void notify_gdb_of_load(soinfo * info) +{ + if (info->flags & FLAG_EXE) { + // GDB already knows about the main executable + return; + } + + pthread_mutex_lock(&_r_debug_lock); + + _r_debug.r_state = RT_ADD; + rtld_db_dlactivity(); + + insert_soinfo_into_debug_map(info); + + _r_debug.r_state = RT_CONSISTENT; + rtld_db_dlactivity(); + + pthread_mutex_unlock(&_r_debug_lock); +} + +void notify_gdb_of_unload(soinfo * info) +{ + if (info->flags & FLAG_EXE) { + // GDB already knows about the main executable + return; + } + + pthread_mutex_lock(&_r_debug_lock); + + _r_debug.r_state = RT_DELETE; + rtld_db_dlactivity(); + + remove_soinfo_from_debug_map(info); + + _r_debug.r_state = RT_CONSISTENT; + rtld_db_dlactivity(); + + pthread_mutex_unlock(&_r_debug_lock); +} + +void notify_gdb_of_libraries() +{ + pthread_mutex_lock(&_r_debug_lock); + _r_debug.r_state = RT_ADD; + rtld_db_dlactivity(); + _r_debug.r_state = RT_CONSISTENT; + rtld_db_dlactivity(); + pthread_mutex_unlock(&_r_debug_lock); +} + +static soinfo *alloc_info(const char *name) +{ + soinfo *si; + + if(strlen(name) >= SOINFO_NAME_LEN) { + DL_ERR("%5d library name %s too long", pid, name); + return NULL; + } + + /* The freelist is populated when we call free_info(), which in turn is + done only by dlclose(), which is not likely to be used. + */ + if (!freelist) { + if(socount == SO_MAX) { + DL_ERR("%5d too many libraries when loading %s", pid, name); + return NULL; + } + freelist = sopool + socount++; + freelist->next = NULL; + } + + si = freelist; + freelist = freelist->next; + + /* Make sure we get a clean block of soinfo */ + memset(si, 0, sizeof(soinfo)); + strlcpy((char*) si->name, name, sizeof(si->name)); + sonext->next = si; + si->next = NULL; + si->refcount = 0; + sonext = si; + + TRACE("%5d name %s: allocated soinfo @ %p\n", pid, name, si); + return si; +} + +static void free_info(soinfo *si) +{ + soinfo *prev = NULL, *trav; + + TRACE("%5d name %s: freeing soinfo @ %p\n", pid, si->name, si); + + for(trav = solist; trav != NULL; trav = trav->next){ + if (trav == si) + break; + prev = trav; + } + if (trav == NULL) { + /* si was not ni solist */ + DL_ERR("%5d name %s is not in solist!", pid, si->name); + return; + } + + /* prev will never be NULL, because the first entry in solist is + always the static libdl_info. + */ + prev->next = si->next; + if (si == sonext) sonext = prev; + si->next = freelist; + freelist = si; +} + +const char *addr_to_name(unsigned addr) +{ + soinfo *si; + + for(si = solist; si != 0; si = si->next){ + if((addr >= si->base) && (addr < (si->base + si->size))) { + return si->name; + } + } + + return ""; +} + +/* For a given PC, find the .so that it belongs to. + * Returns the base address of the .ARM.exidx section + * for that .so, and the number of 8-byte entries + * in that section (via *pcount). + * + * Intended to be called by libc's __gnu_Unwind_Find_exidx(). + * + * This function is exposed via dlfcn.c and libdl.so. + */ +#ifdef ANDROID_ARM_LINKER +_Unwind_Ptr android_dl_unwind_find_exidx(_Unwind_Ptr pc, int *pcount) +{ + soinfo *si; + unsigned addr = (unsigned)pc; + + for (si = solist; si != 0; si = si->next){ + if ((addr >= si->base) && (addr < (si->base + si->size))) { + *pcount = si->ARM_exidx_count; + return (_Unwind_Ptr)(si->base + (unsigned long)si->ARM_exidx); + } + } + *pcount = 0; + return NULL; +} +#endif +/* Here, we only have to provide a callback to iterate across all the + * loaded libraries. gcc_eh does the rest. */ +int +android_dl_iterate_phdr(int (*cb)(struct dl_phdr_info *info, size_t size, void *data), + void *data) +{ + soinfo *si; + struct dl_phdr_info dl_info; + int rv = 0; + + for (si = solist; si != NULL; si = si->next) { + dl_info.dlpi_addr = si->linkmap.l_addr; + dl_info.dlpi_name = si->linkmap.l_name; + dl_info.dlpi_phdr = si->phdr; + dl_info.dlpi_phnum = si->phnum; + rv = cb(&dl_info, sizeof (struct dl_phdr_info), data); + if (rv != 0) + break; + } + return rv; +} + +static Elf32_Sym *_elf_lookup(soinfo *si, unsigned hash, const char *name) +{ + Elf32_Sym *s; + Elf32_Sym *symtab = si->symtab; + const char *strtab = si->strtab; + unsigned n; + + if (si->nbucket == 0) + return NULL; + + TRACE_TYPE(LOOKUP, "%5d SEARCH %s in %s@0x%08x %08x %d\n", pid, + name, si->name, si->base, hash, hash % si->nbucket); + n = hash % si->nbucket; + + for(n = si->bucket[hash % si->nbucket]; n != 0; n = si->chain[n]){ + s = symtab + n; + if(strcmp(strtab + s->st_name, name)) continue; + + /* only concern ourselves with global and weak symbol definitions */ + switch(ELF32_ST_BIND(s->st_info)){ + case STB_GLOBAL: + case STB_WEAK: + /* no section == undefined */ + if(s->st_shndx == 0) continue; + + TRACE_TYPE(LOOKUP, "%5d FOUND %s in %s (%08x) %d\n", pid, + name, si->name, s->st_value, s->st_size); + return s; + } + } + + return NULL; +} + +unsigned elfhash(const char *_name) +{ + const unsigned char *name = (const unsigned char *) _name; + unsigned h = 0, g; + + while(*name) { + h = (h << 4) + *name++; + g = h & 0xf0000000; + h ^= g; + h ^= g >> 24; + } + return h; +} + +static Elf32_Sym * +_do_lookup(soinfo *si, const char *name, unsigned *base) +{ + unsigned elf_hash = elfhash(name); + Elf32_Sym *s; + unsigned *d; + soinfo *lsi = si; + int i; + + /* Look for symbols in the local scope (the object who is + * searching). This happens with C++ templates on i386 for some + * reason. + * + * Notes on weak symbols: + * The ELF specs are ambigious about treatment of weak definitions in + * dynamic linking. Some systems return the first definition found + * and some the first non-weak definition. This is system dependent. + * Here we return the first definition found for simplicity. */ + + s = _elf_lookup(si, elf_hash, name); + if(s != NULL) + goto done; + + /* Next, look for it in the preloads list */ + for(i = 0; preloads[i] != NULL; i++) { + lsi = preloads[i]; + s = _elf_lookup(lsi, elf_hash, name); + if(s != NULL) + goto done; + } + + for(d = si->dynamic; *d; d += 2) { + if(d[0] == DT_NEEDED){ + lsi = (soinfo *)d[1]; + if (!validate_soinfo(lsi)) { + DL_ERR("%5d bad DT_NEEDED pointer in %s", + pid, si->name); + return NULL; + } + + DEBUG("%5d %s: looking up %s in %s\n", + pid, si->name, name, lsi->name); + s = _elf_lookup(lsi, elf_hash, name); + if ((s != NULL) && (s->st_shndx != SHN_UNDEF)) + goto done; + } + } + +#if ALLOW_SYMBOLS_FROM_MAIN + /* If we are resolving relocations while dlopen()ing a library, it's OK for + * the library to resolve a symbol that's defined in the executable itself, + * although this is rare and is generally a bad idea. + */ + if (somain) { + lsi = somain; + DEBUG("%5d %s: looking up %s in executable %s\n", + pid, si->name, name, lsi->name); + s = _elf_lookup(lsi, elf_hash, name); + } +#endif + +done: + if(s != NULL) { + TRACE_TYPE(LOOKUP, "%5d si %s sym %s s->st_value = 0x%08x, " + "found in %s, base = 0x%08x\n", + pid, si->name, name, s->st_value, lsi->name, lsi->base); + *base = lsi->base; + return s; + } + + return NULL; +} + +/* This is used by dl_sym(). It performs symbol lookup only within the + specified soinfo object and not in any of its dependencies. + */ +Elf32_Sym *lookup_in_library(soinfo *si, const char *name) +{ + return _elf_lookup(si, elfhash(name), name); +} + +/* This is used by dl_sym(). It performs a global symbol lookup. + */ +Elf32_Sym *lookup(const char *name, soinfo **found, soinfo *start) +{ + unsigned elf_hash = elfhash(name); + Elf32_Sym *s = NULL; + soinfo *si; + + if(start == NULL) { + start = solist; + } + + for(si = start; (s == NULL) && (si != NULL); si = si->next) + { + if(si->flags & FLAG_ERROR) + continue; + s = _elf_lookup(si, elf_hash, name); + if (s != NULL) { + *found = si; + break; + } + } + + if(s != NULL) { + TRACE_TYPE(LOOKUP, "%5d %s s->st_value = 0x%08x, " + "si->base = 0x%08x\n", pid, name, s->st_value, si->base); + return s; + } + + return NULL; +} + +soinfo *find_containing_library(const void *addr) +{ + soinfo *si; + + for(si = solist; si != NULL; si = si->next) + { + if((unsigned)addr >= si->base && (unsigned)addr - si->base < si->size) { + return si; + } + } + + return NULL; +} + +Elf32_Sym *find_containing_symbol(const void *addr, soinfo *si) +{ + unsigned int i; + unsigned soaddr = (unsigned)addr - si->base; + + /* Search the library's symbol table for any defined symbol which + * contains this address */ + for(i=0; inchain; i++) { + Elf32_Sym *sym = &si->symtab[i]; + + if(sym->st_shndx != SHN_UNDEF && + soaddr >= sym->st_value && + soaddr < sym->st_value + sym->st_size) { + return sym; + } + } + + return NULL; +} + +#if 0 +static void dump(soinfo *si) +{ + Elf32_Sym *s = si->symtab; + unsigned n; + + for(n = 0; n < si->nchain; n++) { + TRACE("%5d %04d> %08x: %02x %04x %08x %08x %s\n", pid, n, s, + s->st_info, s->st_shndx, s->st_value, s->st_size, + si->strtab + s->st_name); + s++; + } +} +#endif + +static const char *sopaths[] = { + "/vendor/lib", + "/system/lib", + 0 +}; + +static int _open_lib(const char *name) +{ + int fd; + struct stat filestat; + + if ((stat(name, &filestat) >= 0) && S_ISREG(filestat.st_mode)) { + if ((fd = open(name, O_RDONLY)) >= 0) + return fd; + } + + return -1; +} + +static void parse_library_path(const char *path, char *delim); + +static int open_library(const char *name) +{ + int fd; + char buf[512]; + const char **path; + int n; + + TRACE("[ %5d opening %s ]\n", pid, name); + + if(name == 0) return -1; + if(strlen(name) > 256) return -1; + + if ((name[0] == '/') && ((fd = _open_lib(name)) >= 0)) + return fd; + +#ifdef DEFAULT_HYBRIS_LD_LIBRARY_PATH + if (getenv("HYBRIS_LD_LIBRARY_PATH") == NULL && *ldpaths == 0) + { + parse_library_path(DEFAULT_HYBRIS_LD_LIBRARY_PATH, ":"); + } +#endif + if (getenv("HYBRIS_LD_LIBRARY_PATH") != NULL && *ldpaths == 0) + { + parse_library_path(getenv("HYBRIS_LD_LIBRARY_PATH"), ":"); + } + + for (path = ldpaths; *path; path++) { + n = format_buffer(buf, sizeof(buf), "%s/%s", *path, name); + if (n < 0 || n >= (int)sizeof(buf)) { + WARN("Ignoring very long library path: %s/%s\n", *path, name); + continue; + } + if ((fd = _open_lib(buf)) >= 0) + return fd; + } + for (path = sopaths; *path; path++) { + n = format_buffer(buf, sizeof(buf), "%s/%s", *path, name); + if (n < 0 || n >= (int)sizeof(buf)) { + WARN("Ignoring very long library path: %s/%s\n", *path, name); + continue; + } + if ((fd = _open_lib(buf)) >= 0) + return fd; + } + + return -1; +} + +/* temporary space for holding the first page of the shared lib + * which contains the elf header (with the pht). */ +static unsigned char __header[PAGE_SIZE]; + +typedef struct { + long mmap_addr; + char tag[4]; /* 'P', 'R', 'E', ' ' */ +} prelink_info_t; + +/* Returns the requested base address if the library is prelinked, + * and 0 otherwise. */ +static unsigned long +is_prelinked(int fd, const char *name) +{ + off_t sz; + prelink_info_t info; + + sz = lseek(fd, -sizeof(prelink_info_t), SEEK_END); + if (sz < 0) { + DL_ERR("lseek() failed!"); + return 0; + } + + if (read(fd, &info, sizeof(info)) != sizeof(info)) { + INFO("Could not read prelink_info_t structure for `%s`\n", name); + return 0; + } + + if (strncmp(info.tag, "PRE ", 4)) { + INFO("`%s` is not a prelinked library\n", name); + return 0; + } + + return (unsigned long)info.mmap_addr; +} + +/* verify_elf_object + * Verifies if the object @ base is a valid ELF object + * + * Args: + * + * Returns: + * 0 on success + * -1 if no valid ELF object is found @ base. + */ +static int +verify_elf_object(void *base, const char *name) +{ + Elf32_Ehdr *hdr = (Elf32_Ehdr *) base; + + if (hdr->e_ident[EI_MAG0] != ELFMAG0) return -1; + if (hdr->e_ident[EI_MAG1] != ELFMAG1) return -1; + if (hdr->e_ident[EI_MAG2] != ELFMAG2) return -1; + if (hdr->e_ident[EI_MAG3] != ELFMAG3) return -1; + + /* TODO: Should we verify anything else in the header? */ +#ifdef ANDROID_ARM_LINKER + if (hdr->e_machine != EM_ARM) return -1; +#elif defined(ANDROID_X86_LINKER) + if (hdr->e_machine != EM_386) return -1; +#endif + return 0; +} + + +/* get_lib_extents + * Retrieves the base (*base) address where the ELF object should be + * mapped and its overall memory size (*total_sz). + * + * Args: + * fd: Opened file descriptor for the library + * name: The name of the library + * _hdr: Pointer to the header page of the library + * total_sz: Total size of the memory that should be allocated for + * this library + * + * Returns: + * -1 if there was an error while trying to get the lib extents. + * The possible reasons are: + * - Could not determine if the library was prelinked. + * - The library provided is not a valid ELF object + * 0 if the library did not request a specific base offset (normal + * for non-prelinked libs) + * > 0 if the library requests a specific address to be mapped to. + * This indicates a pre-linked library. + */ +static unsigned +get_lib_extents(int fd, const char *name, void *__hdr, unsigned *total_sz) +{ + unsigned req_base; + unsigned min_vaddr = 0xffffffff; + unsigned max_vaddr = 0; + unsigned char *_hdr = (unsigned char *)__hdr; + Elf32_Ehdr *ehdr = (Elf32_Ehdr *)_hdr; + Elf32_Phdr *phdr; + int cnt; + + TRACE("[ %5d Computing extents for '%s'. ]\n", pid, name); + if (verify_elf_object(_hdr, name) < 0) { + DL_ERR("%5d - %s is not a valid ELF object", pid, name); + return (unsigned)-1; + } + + req_base = (unsigned) is_prelinked(fd, name); + if (req_base == (unsigned)-1) + return -1; + else if (req_base != 0) { + TRACE("[ %5d - Prelinked library '%s' requesting base @ 0x%08x ]\n", + pid, name, req_base); + } else { + TRACE("[ %5d - Non-prelinked library '%s' found. ]\n", pid, name); + } + + phdr = (Elf32_Phdr *)(_hdr + ehdr->e_phoff); + + /* find the min/max p_vaddrs from all the PT_LOAD segments so we can + * get the range. */ + for (cnt = 0; cnt < ehdr->e_phnum; ++cnt, ++phdr) { + if (phdr->p_type == PT_LOAD) { + if ((phdr->p_vaddr + phdr->p_memsz) > max_vaddr) + max_vaddr = phdr->p_vaddr + phdr->p_memsz; + if (phdr->p_vaddr < min_vaddr) + min_vaddr = phdr->p_vaddr; + } + } + + if ((min_vaddr == 0xffffffff) && (max_vaddr == 0)) { + DL_ERR("%5d - No loadable segments found in %s.", pid, name); + return (unsigned)-1; + } + + /* truncate min_vaddr down to page boundary */ + min_vaddr &= ~PAGE_MASK; + + /* round max_vaddr up to the next page */ + max_vaddr = (max_vaddr + PAGE_SIZE - 1) & ~PAGE_MASK; + + *total_sz = (max_vaddr - min_vaddr); + return (unsigned)req_base; +} + +/* reserve_mem_region + * + * This function reserves a chunk of memory to be used for mapping in + * a prelinked shared library. We reserve the entire memory region here, and + * then the rest of the linker will relocate the individual loadable + * segments into the correct locations within this memory range. + * + * Args: + * si->base: The requested base of the allocation. + * si->size: The size of the allocation. + * + * Returns: + * -1 on failure, and 0 on success. On success, si->base will contain + * the virtual address at which the library will be mapped. + */ + +static int reserve_mem_region(soinfo *si) +{ + void *base = mmap((void *)si->base, si->size, PROT_NONE, + MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (base == MAP_FAILED) { + DL_ERR("%5d can NOT map (%sprelinked) library '%s' at 0x%08x " + "as requested, will try general pool: %d (%s)", + pid, (si->base ? "" : "non-"), si->name, si->base, + errno, strerror(errno)); + return -1; + } else if (base != (void *)si->base) { + DL_ERR("OOPS: %5d %sprelinked library '%s' mapped at 0x%08x, " + "not at 0x%08x", pid, (si->base ? "" : "non-"), + si->name, (unsigned)base, si->base); + munmap(base, si->size); + return -1; + } + return 0; +} + +static int alloc_mem_region(soinfo *si) +{ + if (si->base) { + /* Attempt to mmap a prelinked library. */ + return reserve_mem_region(si); + } + + /* This is not a prelinked library, so we use the kernel's default + allocator. + */ + + void *base = mmap(NULL, si->size, PROT_NONE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (base == MAP_FAILED) { + DL_ERR("%5d mmap of library '%s' failed: %d (%s)\n", + pid, si->name, + errno, strerror(errno)); + goto err; + } + si->base = (unsigned) base; + INFO("%5d mapped library '%s' to %08x via kernel allocator.\n", + pid, si->name, si->base); + return 0; + +err: + DL_ERR("OOPS: %5d cannot map library '%s'. no vspace available.", + pid, si->name); + return -1; +} + +#define MAYBE_MAP_FLAG(x,from,to) (((x) & (from)) ? (to) : 0) +#define PFLAGS_TO_PROT(x) (MAYBE_MAP_FLAG((x), PF_X, PROT_EXEC) | \ + MAYBE_MAP_FLAG((x), PF_R, PROT_READ) | \ + MAYBE_MAP_FLAG((x), PF_W, PROT_WRITE)) +/* load_segments + * + * This function loads all the loadable (PT_LOAD) segments into memory + * at their appropriate memory offsets off the base address. + * + * Args: + * fd: Open file descriptor to the library to load. + * header: Pointer to a header page that contains the ELF header. + * This is needed since we haven't mapped in the real file yet. + * si: ptr to soinfo struct describing the shared object. + * + * Returns: + * 0 on success, -1 on failure. + */ +static int +load_segments(int fd, void *header, soinfo *si) +{ + Elf32_Ehdr *ehdr = (Elf32_Ehdr *)header; + Elf32_Phdr *phdr = (Elf32_Phdr *)((unsigned char *)header + ehdr->e_phoff); + Elf32_Addr base = (Elf32_Addr) si->base; + int cnt; + unsigned len; + Elf32_Addr tmp; + unsigned char *pbase; + unsigned char *extra_base; + unsigned extra_len; + unsigned total_sz = 0; + + si->wrprotect_start = 0xffffffff; + si->wrprotect_end = 0; + + TRACE("[ %5d - Begin loading segments for '%s' @ 0x%08x ]\n", + pid, si->name, (unsigned)si->base); + /* Now go through all the PT_LOAD segments and map them into memory + * at the appropriate locations. */ + for (cnt = 0; cnt < ehdr->e_phnum; ++cnt, ++phdr) { + if (phdr->p_type == PT_LOAD) { + DEBUG_DUMP_PHDR(phdr, "PT_LOAD", pid); + /* we want to map in the segment on a page boundary */ + tmp = base + (phdr->p_vaddr & (~PAGE_MASK)); + /* add the # of bytes we masked off above to the total length. */ + len = phdr->p_filesz + (phdr->p_vaddr & PAGE_MASK); + + TRACE("[ %d - Trying to load segment from '%s' @ 0x%08x " + "(0x%08x). p_vaddr=0x%08x p_offset=0x%08x ]\n", pid, si->name, + (unsigned)tmp, len, phdr->p_vaddr, phdr->p_offset); + pbase = mmap((void *)tmp, len, PFLAGS_TO_PROT(phdr->p_flags), + MAP_PRIVATE | MAP_FIXED, fd, + phdr->p_offset & (~PAGE_MASK)); + if (pbase == MAP_FAILED) { + DL_ERR("%d failed to map segment from '%s' @ 0x%08x (0x%08x). " + "p_vaddr=0x%08x p_offset=0x%08x", pid, si->name, + (unsigned)tmp, len, phdr->p_vaddr, phdr->p_offset); + goto fail; + } + + /* If 'len' didn't end on page boundary, and it's a writable + * segment, zero-fill the rest. */ + if ((len & PAGE_MASK) && (phdr->p_flags & PF_W)) + memset((void *)(pbase + len), 0, PAGE_SIZE - (len & PAGE_MASK)); + + /* Check to see if we need to extend the map for this segment to + * cover the diff between filesz and memsz (i.e. for bss). + * + * base _+---------------------+ page boundary + * . . + * | | + * . . + * pbase _+---------------------+ page boundary + * | | + * . . + * base + p_vaddr _| | + * . \ \ . + * . | filesz | . + * pbase + len _| / | | + * <0 pad> . . . + * extra_base _+------------|--------+ page boundary + * / . . . + * | . . . + * | +------------|--------+ page boundary + * extra_len-> | | | | + * | . | memsz . + * | . | . + * \ _| / | + * . . + * | | + * _+---------------------+ page boundary + */ + tmp = (Elf32_Addr)(((unsigned)pbase + len + PAGE_SIZE - 1) & + (~PAGE_MASK)); + if (tmp < (base + phdr->p_vaddr + phdr->p_memsz)) { + extra_len = base + phdr->p_vaddr + phdr->p_memsz - tmp; + TRACE("[ %5d - Need to extend segment from '%s' @ 0x%08x " + "(0x%08x) ]\n", pid, si->name, (unsigned)tmp, extra_len); + /* map in the extra page(s) as anonymous into the range. + * This is probably not necessary as we already mapped in + * the entire region previously, but we just want to be + * sure. This will also set the right flags on the region + * (though we can probably accomplish the same thing with + * mprotect). + */ + extra_base = mmap((void *)tmp, extra_len, + PFLAGS_TO_PROT(phdr->p_flags), + MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS, + -1, 0); + if (extra_base == MAP_FAILED) { + DL_ERR("[ %5d - failed to extend segment from '%s' @ 0x%08x" + " (0x%08x) ]", pid, si->name, (unsigned)tmp, + extra_len); + goto fail; + } + /* TODO: Check if we need to memset-0 this region. + * Anonymous mappings are zero-filled copy-on-writes, so we + * shouldn't need to. */ + TRACE("[ %5d - Segment from '%s' extended @ 0x%08x " + "(0x%08x)\n", pid, si->name, (unsigned)extra_base, + extra_len); + } + /* set the len here to show the full extent of the segment we + * just loaded, mostly for debugging */ + len = (((unsigned)base + phdr->p_vaddr + phdr->p_memsz + + PAGE_SIZE - 1) & (~PAGE_MASK)) - (unsigned)pbase; + TRACE("[ %5d - Successfully loaded segment from '%s' @ 0x%08x " + "(0x%08x). p_vaddr=0x%08x p_offset=0x%08x\n", pid, si->name, + (unsigned)pbase, len, phdr->p_vaddr, phdr->p_offset); + total_sz += len; + /* Make the section writable just in case we'll have to write to + * it during relocation (i.e. text segment). However, we will + * remember what range of addresses should be write protected. + * + */ + if (!(phdr->p_flags & PF_W)) { + if ((unsigned)pbase < si->wrprotect_start) + si->wrprotect_start = (unsigned)pbase; + if (((unsigned)pbase + len) > si->wrprotect_end) + si->wrprotect_end = (unsigned)pbase + len; + mprotect(pbase, len, + PFLAGS_TO_PROT(phdr->p_flags) | PROT_WRITE); + } + } else if (phdr->p_type == PT_DYNAMIC) { + DEBUG_DUMP_PHDR(phdr, "PT_DYNAMIC", pid); + /* this segment contains the dynamic linking information */ + si->dynamic = (unsigned *)(base + phdr->p_vaddr); + } else if (phdr->p_type == PT_GNU_RELRO) { + if ((phdr->p_vaddr >= si->size) + || ((phdr->p_vaddr + phdr->p_memsz) > si->size) + || ((base + phdr->p_vaddr + phdr->p_memsz) < base)) { + DL_ERR("%d invalid GNU_RELRO in '%s' " + "p_vaddr=0x%08x p_memsz=0x%08x", pid, si->name, + phdr->p_vaddr, phdr->p_memsz); + goto fail; + } + si->gnu_relro_start = (Elf32_Addr) (base + phdr->p_vaddr); + si->gnu_relro_len = (unsigned) phdr->p_memsz; + } else { +#ifdef ANDROID_ARM_LINKER + if (phdr->p_type == PT_ARM_EXIDX) { + DEBUG_DUMP_PHDR(phdr, "PT_ARM_EXIDX", pid); + /* exidx entries (used for stack unwinding) are 8 bytes each. + */ + si->ARM_exidx = (unsigned *)phdr->p_vaddr; + si->ARM_exidx_count = phdr->p_memsz / 8; + } +#endif + } + + } + + /* Sanity check */ + if (total_sz > si->size) { + DL_ERR("%5d - Total length (0x%08x) of mapped segments from '%s' is " + "greater than what was allocated (0x%08x). THIS IS BAD!", + pid, total_sz, si->name, si->size); + goto fail; + } + + TRACE("[ %5d - Finish loading segments for '%s' @ 0x%08x. " + "Total memory footprint: 0x%08x bytes ]\n", pid, si->name, + (unsigned)si->base, si->size); + return 0; + +fail: + /* We can just blindly unmap the entire region even though some things + * were mapped in originally with anonymous and others could have been + * been mapped in from the file before we failed. The kernel will unmap + * all the pages in the range, irrespective of how they got there. + */ + munmap((void *)si->base, si->size); + si->flags |= FLAG_ERROR; + return -1; +} + +/* TODO: Implement this to take care of the fact that Android ARM + * ELF objects shove everything into a single loadable segment that has the + * write bit set. wr_offset is then used to set non-(data|bss) pages to be + * non-writable. + */ +#if 0 +static unsigned +get_wr_offset(int fd, const char *name, Elf32_Ehdr *ehdr) +{ + Elf32_Shdr *shdr_start; + Elf32_Shdr *shdr; + int shdr_sz = ehdr->e_shnum * sizeof(Elf32_Shdr); + int cnt; + unsigned wr_offset = 0xffffffff; + + shdr_start = mmap(0, shdr_sz, PROT_READ, MAP_PRIVATE, fd, + ehdr->e_shoff & (~PAGE_MASK)); + if (shdr_start == MAP_FAILED) { + WARN("%5d - Could not read section header info from '%s'. Will not " + "not be able to determine write-protect offset.\n", pid, name); + return (unsigned)-1; + } + + for(cnt = 0, shdr = shdr_start; cnt < ehdr->e_shnum; ++cnt, ++shdr) { + if ((shdr->sh_type != SHT_NULL) && (shdr->sh_flags & SHF_WRITE) && + (shdr->sh_addr < wr_offset)) { + wr_offset = shdr->sh_addr; + } + } + + munmap(shdr_start, shdr_sz); + return wr_offset; +} +#endif + +static soinfo * +load_library(const char *name) +{ + int fd = open_library(name); + int cnt; + unsigned ext_sz; + unsigned req_base; + const char *bname; + soinfo *si = NULL; + Elf32_Ehdr *hdr; + + if(fd == -1) { + DL_ERR("Library '%s' not found", name); + return NULL; + } + + /* We have to read the ELF header to figure out what to do with this image + */ + if (lseek(fd, 0, SEEK_SET) < 0) { + DL_ERR("lseek() failed!"); + goto fail; + } + + if ((cnt = read(fd, &__header[0], PAGE_SIZE)) < 0) { + DL_ERR("read() failed!"); + goto fail; + } + + /* Parse the ELF header and get the size of the memory footprint for + * the library */ + req_base = get_lib_extents(fd, name, &__header[0], &ext_sz); + if (req_base == (unsigned)-1) + goto fail; + TRACE("[ %5d - '%s' (%s) wants base=0x%08x sz=0x%08x ]\n", pid, name, + (req_base ? "prelinked" : "not pre-linked"), req_base, ext_sz); + + /* Now configure the soinfo struct where we'll store all of our data + * for the ELF object. If the loading fails, we waste the entry, but + * same thing would happen if we failed during linking. Configuring the + * soinfo struct here is a lot more convenient. + */ + bname = strrchr(name, '/'); + si = alloc_info(bname ? bname + 1 : name); + if (si == NULL) + goto fail; + + /* Carve out a chunk of memory where we will map in the individual + * segments */ + si->base = req_base; + si->size = ext_sz; + si->flags = 0; + si->entry = 0; + si->dynamic = (unsigned *)-1; + if (alloc_mem_region(si) < 0) + goto fail; + + TRACE("[ %5d allocated memory for %s @ %p (0x%08x) ]\n", + pid, name, (void *)si->base, (unsigned) ext_sz); + + /* Now actually load the library's segments into right places in memory */ + if (load_segments(fd, &__header[0], si) < 0) { + goto fail; + } + + /* this might not be right. Technically, we don't even need this info + * once we go through 'load_segments'. */ + hdr = (Elf32_Ehdr *)si->base; + si->phdr = (Elf32_Phdr *)((unsigned char *)si->base + hdr->e_phoff); + si->phnum = hdr->e_phnum; + /**/ + + close(fd); + return si; + +fail: + if (si) free_info(si); + close(fd); + return NULL; +} + +soinfo * +load_empty_library(const char *name) +{ + const char *bname; + soinfo *si = NULL; + + bname = strrchr(name, '/'); + si = alloc_info(bname ? bname + 1 : name); + if (si == NULL) + goto fail; + + si->base = 0; + si->size = 0; + si->flags = FLAG_LINKED; + si->entry = 0; + si->dynamic = (unsigned *)-1; + si->constructors_called = 1; + + return si; + + fail: + if (si) free_info(si); + return NULL; +} + +static soinfo * +init_library(soinfo *si) +{ + unsigned wr_offset = 0xffffffff; + +#if LINKER_DEBUG + /* Has to be set via init_library as we don't get called via the + * traditional android init library path */ + const char* env; + env = getenv("HYBRIS_LINKER_DEBUG"); + if (env) + debug_verbosity = atoi(env); + if (getenv("HYBRIS_LINKER_STDOUT")) + debug_stdout = 1; + + INFO("[ HYBRIS: initializing library '%s']\n", si->name); +#endif + + /* At this point we know that whatever is loaded @ base is a valid ELF + * shared library whose segments are properly mapped in. */ + TRACE("[ %5d init_library base=0x%08x sz=0x%08x name='%s') ]\n", + pid, si->base, si->size, si->name); + + if(link_image(si, wr_offset)) { + /* We failed to link. However, we can only restore libbase + ** if no additional libraries have moved it since we updated it. + */ + munmap((void *)si->base, si->size); + return NULL; + } + + return si; +} + +soinfo *find_library(const char *name) +{ + soinfo *si; + const char *bname; + +#if ALLOW_SYMBOLS_FROM_MAIN + if (name == NULL) + return somain; +#else + if (name == NULL) + return NULL; +#endif + + bname = strrchr(name, '/'); + bname = bname ? bname + 1 : name; + + for(si = solist; si != 0; si = si->next){ + if(!strcmp(bname, si->name)) { + if(si->flags & FLAG_ERROR) { + DL_ERR("%5d '%s' failed to load previously", pid, bname); + return NULL; + } + if(si->flags & FLAG_LINKED) return si; + DL_ERR("OOPS: %5d recursive link to '%s'", pid, si->name); + return NULL; + } + } + + TRACE("[ %5d '%s' has not been loaded yet. Locating...]\n", pid, name); + si = load_library(name); + if(si == NULL) + return NULL; + return init_library(si); +} + +/* TODO: + * notify gdb of unload + * for non-prelinked libraries, find a way to decrement libbase + */ +static void call_destructors(soinfo *si); +unsigned unload_library(soinfo *si) +{ + unsigned *d; + if (si->refcount == 1) { + TRACE("%5d unloading '%s'\n", pid, si->name); + call_destructors(si); + + /* + * Make sure that we undo the PT_GNU_RELRO protections we added + * in link_image. This is needed to undo the DT_NEEDED hack below. + */ + if ((si->gnu_relro_start != 0) && (si->gnu_relro_len != 0)) { + Elf32_Addr start = (si->gnu_relro_start & ~PAGE_MASK); + unsigned len = (si->gnu_relro_start - start) + si->gnu_relro_len; + if (mprotect((void *) start, len, PROT_READ | PROT_WRITE) < 0) + DL_ERR("%5d %s: could not undo GNU_RELRO protections. " + "Expect a crash soon. errno=%d (%s)", + pid, si->name, errno, strerror(errno)); + + } + + for(d = si->dynamic; *d; d += 2) { + if(d[0] == DT_NEEDED){ + soinfo *lsi = (soinfo *)d[1]; + + // The next line will segfault if the we don't undo the + // PT_GNU_RELRO protections (see comments above and in + // link_image(). + d[1] = 0; + + if (validate_soinfo(lsi)) { + TRACE("%5d %s needs to unload %s\n", pid, + si->name, lsi->name); + unload_library(lsi); + } + else + DL_ERR("%5d %s: could not unload dependent library", + pid, si->name); + } + } + + munmap((char *)si->base, si->size); + notify_gdb_of_unload(si); + free_info(si); + si->refcount = 0; + } + else { + si->refcount--; + INFO("%5d not unloading '%s', decrementing refcount to %d\n", + pid, si->name, si->refcount); + } + return si->refcount; +} + +/* TODO: don't use unsigned for addrs below. It works, but is not + * ideal. They should probably be either uint32_t, Elf32_Addr, or unsigned + * long. + */ +static int reloc_library(soinfo *si, Elf32_Rel *rel, unsigned count) +{ + Elf32_Sym *symtab = si->symtab; + const char *strtab = si->strtab; + Elf32_Sym *s; + unsigned base; + Elf32_Rel *start = rel; + unsigned idx; + + for (idx = 0; idx < count; ++idx) { + unsigned type = ELF32_R_TYPE(rel->r_info); + unsigned sym = ELF32_R_SYM(rel->r_info); + unsigned reloc = (unsigned)(rel->r_offset + si->base); + unsigned sym_addr = 0; + char *sym_name = NULL; + + DEBUG("%5d Processing '%s' relocation at index %d\n", pid, + si->name, idx); + if(sym != 0) { + sym_name = (char *)(strtab + symtab[sym].st_name); + INFO("HYBRIS: '%s' checking hooks for sym '%s'\n", si->name, sym_name); + sym_addr = (unsigned int) get_hooked_symbol(sym_name); + if (sym_addr) { + INFO("HYBRIS: '%s' hooked symbol %s to %x\n", si->name, + sym_name, sym_addr); + } else { + s = _do_lookup(si, sym_name, &base); + } + if(!sym_addr) { + if(s == NULL) { + /* We only allow an undefined symbol if this is a weak + reference.. */ + s = &symtab[sym]; + if (ELF32_ST_BIND(s->st_info) != STB_WEAK && strcmp(si->name, "libdsyscalls.so") != 0) { + DL_ERR("%5d cannot locate '%s'...\n", pid, sym_name); + return -1; + } + + /* IHI0044C AAELF 4.5.1.1: + + Libraries are not searched to resolve weak references. + It is not an error for a weak reference to remain + unsatisfied. + + During linking, the value of an undefined weak reference is: + - Zero if the relocation type is absolute + - The address of the place if the relocation is pc-relative + - The address of nominial base address if the relocation + type is base-relative. + */ + + switch (type) { +#if defined(ANDROID_ARM_LINKER) + case R_ARM_JUMP_SLOT: + case R_ARM_GLOB_DAT: + case R_ARM_ABS32: + case R_ARM_RELATIVE: /* Don't care. */ + case R_ARM_NONE: /* Don't care. */ +#elif defined(ANDROID_X86_LINKER) + case R_386_JUMP_SLOT: + case R_386_GLOB_DAT: + case R_386_32: + case R_386_RELATIVE: /* Dont' care. */ +#endif /* ANDROID_*_LINKER */ + /* sym_addr was initialized to be zero above or relocation + code below does not care about value of sym_addr. + No need to do anything. */ + break; + +#if defined(ANDROID_X86_LINKER) + case R_386_PC32: + sym_addr = reloc; + break; +#endif /* ANDROID_X86_LINKER */ + +#if defined(ANDROID_ARM_LINKER) + case R_ARM_COPY: + /* Fall through. Can't really copy if weak symbol is + not found in run-time. */ +#endif /* ANDROID_ARM_LINKER */ + default: + DL_ERR("%5d unknown weak reloc type %d @ %p (%d)\n", + pid, type, rel, (int) (rel - start)); + return -1; + } + } else { + /* We got a definition. */ +#if 0 + if((base == 0) && (si->base != 0)){ + /* linking from libraries to main image is bad */ + DL_ERR("%5d cannot locate '%s'...", + pid, strtab + symtab[sym].st_name); + return -1; + } +#endif + sym_addr = (unsigned)(s->st_value + base); + } + } + COUNT_RELOC(RELOC_SYMBOL); + } else { + s = NULL; + } + +/* TODO: This is ugly. Split up the relocations by arch into + * different files. + */ + switch(type){ +#if defined(ANDROID_ARM_LINKER) + case R_ARM_JUMP_SLOT: + COUNT_RELOC(RELOC_ABSOLUTE); + MARK(rel->r_offset); + TRACE_TYPE(RELO, "%5d RELO JMP_SLOT %08x <- %08x %s\n", pid, + reloc, sym_addr, sym_name); + *((unsigned*)reloc) = sym_addr; + break; + case R_ARM_GLOB_DAT: + COUNT_RELOC(RELOC_ABSOLUTE); + MARK(rel->r_offset); + TRACE_TYPE(RELO, "%5d RELO GLOB_DAT %08x <- %08x %s\n", pid, + reloc, sym_addr, sym_name); + *((unsigned*)reloc) = sym_addr; + break; + case R_ARM_ABS32: + COUNT_RELOC(RELOC_ABSOLUTE); + MARK(rel->r_offset); + TRACE_TYPE(RELO, "%5d RELO ABS %08x <- %08x %s\n", pid, + reloc, sym_addr, sym_name); + *((unsigned*)reloc) += sym_addr; + break; + case R_ARM_REL32: + COUNT_RELOC(RELOC_RELATIVE); + MARK(rel->r_offset); + TRACE_TYPE(RELO, "%5d RELO REL32 %08x <- %08x - %08x %s\n", pid, + reloc, sym_addr, rel->r_offset, sym_name); + *((unsigned*)reloc) += sym_addr - rel->r_offset; + break; +#elif defined(ANDROID_X86_LINKER) + case R_386_JUMP_SLOT: + COUNT_RELOC(RELOC_ABSOLUTE); + MARK(rel->r_offset); + TRACE_TYPE(RELO, "%5d RELO JMP_SLOT %08x <- %08x %s\n", pid, + reloc, sym_addr, sym_name); + *((unsigned*)reloc) = sym_addr; + break; + case R_386_GLOB_DAT: + COUNT_RELOC(RELOC_ABSOLUTE); + MARK(rel->r_offset); + TRACE_TYPE(RELO, "%5d RELO GLOB_DAT %08x <- %08x %s\n", pid, + reloc, sym_addr, sym_name); + *((unsigned*)reloc) = sym_addr; + break; +#endif /* ANDROID_*_LINKER */ + +#if defined(ANDROID_ARM_LINKER) + case R_ARM_RELATIVE: +#elif defined(ANDROID_X86_LINKER) + case R_386_RELATIVE: +#endif /* ANDROID_*_LINKER */ + COUNT_RELOC(RELOC_RELATIVE); + MARK(rel->r_offset); + if(sym){ + DL_ERR("%5d odd RELATIVE form...", pid); + return -1; + } + TRACE_TYPE(RELO, "%5d RELO RELATIVE %08x <- +%08x\n", pid, + reloc, si->base); + *((unsigned*)reloc) += si->base; + break; + +#if defined(ANDROID_X86_LINKER) + case R_386_32: + COUNT_RELOC(RELOC_RELATIVE); + MARK(rel->r_offset); + + TRACE_TYPE(RELO, "%5d RELO R_386_32 %08x <- +%08x %s\n", pid, + reloc, sym_addr, sym_name); + *((unsigned *)reloc) += (unsigned)sym_addr; + break; + + case R_386_PC32: + COUNT_RELOC(RELOC_RELATIVE); + MARK(rel->r_offset); + TRACE_TYPE(RELO, "%5d RELO R_386_PC32 %08x <- " + "+%08x (%08x - %08x) %s\n", pid, reloc, + (sym_addr - reloc), sym_addr, reloc, sym_name); + *((unsigned *)reloc) += (unsigned)(sym_addr - reloc); + break; +#endif /* ANDROID_X86_LINKER */ + +#ifdef ANDROID_ARM_LINKER + case R_ARM_COPY: + COUNT_RELOC(RELOC_COPY); + MARK(rel->r_offset); + TRACE_TYPE(RELO, "%5d RELO %08x <- %d @ %08x %s\n", pid, + reloc, s->st_size, sym_addr, sym_name); + memcpy((void*)reloc, (void*)sym_addr, s->st_size); + break; + case R_ARM_NONE: + break; +#endif /* ANDROID_ARM_LINKER */ + + default: + DL_ERR("%5d unknown reloc type %d @ %p (%d)", + pid, type, rel, (int) (rel - start)); + return -1; + } + rel++; + } + return 0; +} + +/* Please read the "Initialization and Termination functions" functions. + * of the linker design note in bionic/linker/README.TXT to understand + * what the following code is doing. + * + * The important things to remember are: + * + * DT_PREINIT_ARRAY must be called first for executables, and should + * not appear in shared libraries. + * + * DT_INIT should be called before DT_INIT_ARRAY if both are present + * + * DT_FINI should be called after DT_FINI_ARRAY if both are present + * + * DT_FINI_ARRAY must be parsed in reverse order. + */ + +static void call_array(unsigned *ctor, int count, int reverse) +{ + int n, inc = 1; + + if (reverse) { + ctor += (count-1); + inc = -1; + } + + for(n = count; n > 0; n--) { + TRACE("[ %5d Looking at %s *0x%08x == 0x%08x ]\n", pid, + reverse ? "dtor" : "ctor", + (unsigned)ctor, (unsigned)*ctor); + void (*func)() = (void (*)()) *ctor; + ctor += inc; + if(((int) func == 0) || ((int) func == -1)) continue; + TRACE("[ %5d Calling func @ 0x%08x ]\n", pid, (unsigned)func); + func(); + } +} + +void call_constructors_recursive(soinfo *si) +{ + if (si->constructors_called) + return; + if (strcmp(si->name,"libc.so") == 0) { + INFO("HYBRIS: =============> Skipping libc.so\n"); + return; + } + + // Set this before actually calling the constructors, otherwise it doesn't + // protect against recursive constructor calls. One simple example of + // constructor recursion is the libc debug malloc, which is implemented in + // libc_malloc_debug_leak.so: + // 1. The program depends on libc, so libc's constructor is called here. + // 2. The libc constructor calls dlopen() to load libc_malloc_debug_leak.so. + // 3. dlopen() calls call_constructors_recursive() with the newly created + // soinfo for libc_malloc_debug_leak.so. + // 4. The debug so depends on libc, so call_constructors_recursive() is + // called again with the libc soinfo. If it doesn't trigger the early- + // out above, the libc constructor will be called again (recursively!). + si->constructors_called = 1; + + if (si->flags & FLAG_EXE) { + TRACE("[ %5d Calling preinit_array @ 0x%08x [%d] for '%s' ]\n", + pid, (unsigned)si->preinit_array, si->preinit_array_count, + si->name); + call_array(si->preinit_array, si->preinit_array_count, 0); + TRACE("[ %5d Done calling preinit_array for '%s' ]\n", pid, si->name); + } else { + if (si->preinit_array) { + DL_ERR("%5d Shared library '%s' has a preinit_array table @ 0x%08x." + " This is INVALID.", pid, si->name, + (unsigned)si->preinit_array); + } + } + + if (si->dynamic) { + unsigned *d; + for(d = si->dynamic; *d; d += 2) { + if(d[0] == DT_NEEDED){ + soinfo* lsi = (soinfo *)d[1]; + if (!validate_soinfo(lsi)) { + DL_ERR("%5d bad DT_NEEDED pointer in %s", + pid, si->name); + } else { + call_constructors_recursive(lsi); + } + } + } + } + + if (si->init_func) { + TRACE("[ %5d Calling init_func @ 0x%08x for '%s' ]\n", pid, + (unsigned)si->init_func, si->name); + si->init_func(); + TRACE("[ %5d Done calling init_func for '%s' ]\n", pid, si->name); + } + + if (si->init_array) { + TRACE("[ %5d Calling init_array @ 0x%08x [%d] for '%s' ]\n", pid, + (unsigned)si->init_array, si->init_array_count, si->name); + call_array(si->init_array, si->init_array_count, 0); + TRACE("[ %5d Done calling init_array for '%s' ]\n", pid, si->name); + } + +} + +static void call_destructors(soinfo *si) +{ + if (si->fini_array) { + TRACE("[ %5d Calling fini_array @ 0x%08x [%d] for '%s' ]\n", pid, + (unsigned)si->fini_array, si->fini_array_count, si->name); + call_array(si->fini_array, si->fini_array_count, 1); + TRACE("[ %5d Done calling fini_array for '%s' ]\n", pid, si->name); + } + + if (si->fini_func) { + TRACE("[ %5d Calling fini_func @ 0x%08x for '%s' ]\n", pid, + (unsigned)si->fini_func, si->name); + si->fini_func(); + TRACE("[ %5d Done calling fini_func for '%s' ]\n", pid, si->name); + } +} + +/* Force any of the closed stdin, stdout and stderr to be associated with + /dev/null. */ +static int nullify_closed_stdio (void) +{ + int dev_null, i, status; + int return_value = 0; + + dev_null = open("/dev/null", O_RDWR); + if (dev_null < 0) { + DL_ERR("Cannot open /dev/null."); + return -1; + } + TRACE("[ %5d Opened /dev/null file-descriptor=%d]\n", pid, dev_null); + + /* If any of the stdio file descriptors is valid and not associated + with /dev/null, dup /dev/null to it. */ + for (i = 0; i < 3; i++) { + /* If it is /dev/null already, we are done. */ + if (i == dev_null) + continue; + + TRACE("[ %5d Nullifying stdio file descriptor %d]\n", pid, i); + /* The man page of fcntl does not say that fcntl(..,F_GETFL) + can be interrupted but we do this just to be safe. */ + do { + status = fcntl(i, F_GETFL); + } while (status < 0 && errno == EINTR); + + /* If file is openned, we are good. */ + if (status >= 0) + continue; + + /* The only error we allow is that the file descriptor does not + exist, in which case we dup /dev/null to it. */ + if (errno != EBADF) { + DL_ERR("nullify_stdio: unhandled error %s", strerror(errno)); + return_value = -1; + continue; + } + + /* Try dupping /dev/null to this stdio file descriptor and + repeat if there is a signal. Note that any errors in closing + the stdio descriptor are lost. */ + do { + status = dup2(dev_null, i); + } while (status < 0 && errno == EINTR); + + if (status < 0) { + DL_ERR("nullify_stdio: dup2 error %s", strerror(errno)); + return_value = -1; + continue; + } + } + + /* If /dev/null is not one of the stdio file descriptors, close it. */ + if (dev_null > 2) { + TRACE("[ %5d Closing /dev/null file-descriptor=%d]\n", pid, dev_null); + do { + status = close(dev_null); + } while (status < 0 && errno == EINTR); + + if (status < 0) { + DL_ERR("nullify_stdio: close error %s", strerror(errno)); + return_value = -1; + } + } + + close(dev_null); + return return_value; +} + +static int link_image(soinfo *si, unsigned wr_offset) +{ + unsigned *d; + Elf32_Phdr *phdr = si->phdr; + int phnum = si->phnum; + + INFO("[ %5d linking %s ]\n", pid, si->name); + DEBUG("%5d si->base = 0x%08x si->flags = 0x%08x\n", pid, + si->base, si->flags); + + if (si->flags & (FLAG_EXE | FLAG_LINKER)) { + /* Locate the needed program segments (DYNAMIC/ARM_EXIDX) for + * linkage info if this is the executable or the linker itself. + * If this was a dynamic lib, that would have been done at load time. + * + * TODO: It's unfortunate that small pieces of this are + * repeated from the load_library routine. Refactor this just + * slightly to reuse these bits. + */ + si->size = 0; + for(; phnum > 0; --phnum, ++phdr) { +#ifdef ANDROID_ARM_LINKER + if(phdr->p_type == PT_ARM_EXIDX) { + /* exidx entries (used for stack unwinding) are 8 bytes each. + */ + si->ARM_exidx = (unsigned *)phdr->p_vaddr; + si->ARM_exidx_count = phdr->p_memsz / 8; + } +#endif + if (phdr->p_type == PT_LOAD) { + /* For the executable, we use the si->size field only in + dl_unwind_find_exidx(), so the meaning of si->size + is not the size of the executable; it is the distance + between the load location of the executable and the last + address of the loadable part of the executable. + We use the range [si->base, si->base + si->size) to + determine whether a PC value falls within the executable + section. Of course, if a value is between si->base and + (si->base + phdr->p_vaddr), it's not in the executable + section, but a) we shouldn't be asking for such a value + anyway, and b) if we have to provide an EXIDX for such a + value, then the executable's EXIDX is probably the better + choice. + */ + DEBUG_DUMP_PHDR(phdr, "PT_LOAD", pid); + if (phdr->p_vaddr + phdr->p_memsz > si->size) + si->size = phdr->p_vaddr + phdr->p_memsz; + /* try to remember what range of addresses should be write + * protected */ + if (!(phdr->p_flags & PF_W)) { + unsigned _end; + + if (si->base + phdr->p_vaddr < si->wrprotect_start) + si->wrprotect_start = si->base + phdr->p_vaddr; + _end = (((si->base + phdr->p_vaddr + phdr->p_memsz + PAGE_SIZE - 1) & + (~PAGE_MASK))); + if (_end > si->wrprotect_end) + si->wrprotect_end = _end; + /* Make the section writable just in case we'll have to + * write to it during relocation (i.e. text segment). + * However, we will remember what range of addresses + * should be write protected. + */ + mprotect((void *) (si->base + phdr->p_vaddr), + phdr->p_memsz, + PFLAGS_TO_PROT(phdr->p_flags) | PROT_WRITE); + } + } else if (phdr->p_type == PT_DYNAMIC) { + if (si->dynamic != (unsigned *)-1) { + DL_ERR("%5d multiple PT_DYNAMIC segments found in '%s'. " + "Segment at 0x%08x, previously one found at 0x%08x", + pid, si->name, si->base + phdr->p_vaddr, + (unsigned)si->dynamic); + goto fail; + } + DEBUG_DUMP_PHDR(phdr, "PT_DYNAMIC", pid); + si->dynamic = (unsigned *) (si->base + phdr->p_vaddr); + } else if (phdr->p_type == PT_GNU_RELRO) { + if ((phdr->p_vaddr >= si->size) + || ((phdr->p_vaddr + phdr->p_memsz) > si->size) + || ((si->base + phdr->p_vaddr + phdr->p_memsz) < si->base)) { + DL_ERR("%d invalid GNU_RELRO in '%s' " + "p_vaddr=0x%08x p_memsz=0x%08x", pid, si->name, + phdr->p_vaddr, phdr->p_memsz); + goto fail; + } + si->gnu_relro_start = (Elf32_Addr) (si->base + phdr->p_vaddr); + si->gnu_relro_len = (unsigned) phdr->p_memsz; + } + } + } + + if (si->dynamic == (unsigned *)-1) { + DL_ERR("%5d missing PT_DYNAMIC?!", pid); + goto fail; + } + + DEBUG("%5d dynamic = %p\n", pid, si->dynamic); + + /* extract useful information from dynamic section */ + for(d = si->dynamic; *d; d++){ + DEBUG("%5d d = %p, d[0] = 0x%08x d[1] = 0x%08x\n", pid, d, d[0], d[1]); + switch(*d++){ + case DT_HASH: + si->nbucket = ((unsigned *) (si->base + *d))[0]; + si->nchain = ((unsigned *) (si->base + *d))[1]; + si->bucket = (unsigned *) (si->base + *d + 8); + si->chain = (unsigned *) (si->base + *d + 8 + si->nbucket * 4); + break; + case DT_STRTAB: + si->strtab = (const char *) (si->base + *d); + break; + case DT_SYMTAB: + si->symtab = (Elf32_Sym *) (si->base + *d); + break; + case DT_PLTREL: + if(*d != DT_REL) { + DL_ERR("DT_RELA not supported"); + goto fail; + } + break; + case DT_JMPREL: + si->plt_rel = (Elf32_Rel*) (si->base + *d); + break; + case DT_PLTRELSZ: + si->plt_rel_count = *d / 8; + break; + case DT_REL: + si->rel = (Elf32_Rel*) (si->base + *d); + break; + case DT_RELSZ: + si->rel_count = *d / 8; + break; + case DT_PLTGOT: + /* Save this in case we decide to do lazy binding. We don't yet. */ + si->plt_got = (unsigned *)(si->base + *d); + break; + case DT_DEBUG: + // Set the DT_DEBUG entry to the addres of _r_debug for GDB + *d = (int) &_r_debug; + break; + case DT_RELA: + DL_ERR("%5d DT_RELA not supported", pid); + goto fail; + case DT_INIT: + si->init_func = (void (*)(void))(si->base + *d); + DEBUG("%5d %s constructors (init func) found at %p\n", + pid, si->name, si->init_func); + break; + case DT_FINI: + si->fini_func = (void (*)(void))(si->base + *d); + DEBUG("%5d %s destructors (fini func) found at %p\n", + pid, si->name, si->fini_func); + break; + case DT_INIT_ARRAY: + si->init_array = (unsigned *)(si->base + *d); + DEBUG("%5d %s constructors (init_array) found at %p\n", + pid, si->name, si->init_array); + break; + case DT_INIT_ARRAYSZ: + si->init_array_count = ((unsigned)*d) / sizeof(Elf32_Addr); + break; + case DT_FINI_ARRAY: + si->fini_array = (unsigned *)(si->base + *d); + DEBUG("%5d %s destructors (fini_array) found at %p\n", + pid, si->name, si->fini_array); + break; + case DT_FINI_ARRAYSZ: + si->fini_array_count = ((unsigned)*d) / sizeof(Elf32_Addr); + break; + case DT_PREINIT_ARRAY: + si->preinit_array = (unsigned *)(si->base + *d); + DEBUG("%5d %s constructors (preinit_array) found at %p\n", + pid, si->name, si->preinit_array); + break; + case DT_PREINIT_ARRAYSZ: + si->preinit_array_count = ((unsigned)*d) / sizeof(Elf32_Addr); + break; + case DT_TEXTREL: + /* TODO: make use of this. */ + /* this means that we might have to write into where the text + * segment was loaded during relocation... Do something with + * it. + */ + DEBUG("%5d Text segment should be writable during relocation.\n", + pid); + break; + } + } + + DEBUG("%5d si->base = 0x%08x, si->strtab = %p, si->symtab = %p\n", + pid, si->base, si->strtab, si->symtab); + + if((si->strtab == 0) || (si->symtab == 0)) { + DL_ERR("%5d missing essential tables", pid); + goto fail; + } + + /* if this is the main executable, then load all of the preloads now */ + if(si->flags & FLAG_EXE) { + int i; + memset(preloads, 0, sizeof(preloads)); + for(i = 0; ldpreload_names[i] != NULL; i++) { + soinfo *lsi = find_library(ldpreload_names[i]); + if(lsi == 0) { + strlcpy(tmp_err_buf, linker_get_error(), sizeof(tmp_err_buf)); + DL_ERR("%5d could not load needed library '%s' for '%s' (%s)", + pid, ldpreload_names[i], si->name, tmp_err_buf); + goto fail; + } + lsi->refcount++; + preloads[i] = lsi; + } + } + + for(d = si->dynamic; *d; d += 2) { + if(d[0] == DT_NEEDED){ + DEBUG("%5d %s needs %s\n", pid, si->name, si->strtab + d[1]); + soinfo *lsi = find_library(si->strtab + d[1]); + if(lsi == 0) { + strlcpy(tmp_err_buf, linker_get_error(), sizeof(tmp_err_buf)); + DL_ERR("%5d could not load needed library '%s' for '%s' (%s)", + pid, si->strtab + d[1], si->name, tmp_err_buf); + goto fail; + } + /* Save the soinfo of the loaded DT_NEEDED library in the payload + of the DT_NEEDED entry itself, so that we can retrieve the + soinfo directly later from the dynamic segment. This is a hack, + but it allows us to map from DT_NEEDED to soinfo efficiently + later on when we resolve relocations, trying to look up a symbol + with dlsym(). + */ + d[1] = (unsigned)lsi; + lsi->refcount++; + } + } + + if(si->plt_rel) { + DEBUG("[ %5d relocating %s plt ]\n", pid, si->name ); + if(reloc_library(si, si->plt_rel, si->plt_rel_count)) + goto fail; + } + if(si->rel) { + DEBUG("[ %5d relocating %s ]\n", pid, si->name ); + if(reloc_library(si, si->rel, si->rel_count)) + goto fail; + } + + si->flags |= FLAG_LINKED; + DEBUG("[ %5d finished linking %s ]\n", pid, si->name); + +#if 0 + /* This is the way that the old dynamic linker did protection of + * non-writable areas. It would scan section headers and find where + * .text ended (rather where .data/.bss began) and assume that this is + * the upper range of the non-writable area. This is too coarse, + * and is kept here for reference until we fully move away from single + * segment elf objects. See the code in get_wr_offset (also #if'd 0) + * that made this possible. + */ + if(wr_offset < 0xffffffff){ + mprotect((void*) si->base, wr_offset, PROT_READ | PROT_EXEC); + } +#else + /* TODO: Verify that this does the right thing in all cases, as it + * presently probably does not. It is possible that an ELF image will + * come with multiple read-only segments. What we ought to do is scan + * the program headers again and mprotect all the read-only segments. + * To prevent re-scanning the program header, we would have to build a + * list of loadable segments in si, and then scan that instead. */ + if (si->wrprotect_start != 0xffffffff && si->wrprotect_end != 0) { + mprotect((void *)si->wrprotect_start, + si->wrprotect_end - si->wrprotect_start, + PROT_READ | PROT_WRITE | PROT_EXEC); // NOTE: added PROT_WRITE there so we can patch the library + } +#endif + + if (si->gnu_relro_start != 0 && si->gnu_relro_len != 0) { + Elf32_Addr start = (si->gnu_relro_start & ~PAGE_MASK); + unsigned len = (si->gnu_relro_start - start) + si->gnu_relro_len; + if (mprotect((void *) start, len, PROT_READ | PROT_WRITE) < 0) { // NOTE: added PROT_WRITE + DL_ERR("%5d GNU_RELRO mprotect of library '%s' failed: %d (%s)\n", + pid, si->name, errno, strerror(errno)); + goto fail; + } + } + + /* If this is a SET?ID program, dup /dev/null to opened stdin, + stdout and stderr to close a security hole described in: + + ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-02:23.stdio.asc + + */ + if (program_is_setuid) + nullify_closed_stdio (); + notify_gdb_of_load(si); + return 0; + +fail: + ERROR("failed to link %s\n", si->name); + si->flags |= FLAG_ERROR; + return -1; +} + +static void parse_library_path(const char *path, char *delim) +{ + size_t len; + char *ldpaths_bufp = ldpaths_buf; + int i = 0; + + len = strlcpy(ldpaths_buf, path, sizeof(ldpaths_buf)); + + while (i < LDPATH_MAX && (ldpaths[i] = strsep(&ldpaths_bufp, delim))) { + if (*ldpaths[i] != '\0') + ++i; + } + + /* Forget the last path if we had to truncate; this occurs if the 2nd to + * last char isn't '\0' (i.e. not originally a delim). */ + if (i > 0 && len >= sizeof(ldpaths_buf) && + ldpaths_buf[sizeof(ldpaths_buf) - 2] != '\0') { + ldpaths[i - 1] = NULL; + } else { + ldpaths[i] = NULL; + } +} + +static void parse_preloads(const char *path, char *delim) +{ + size_t len; + char *ldpreloads_bufp = ldpreloads_buf; + int i = 0; + + len = strlcpy(ldpreloads_buf, path, sizeof(ldpreloads_buf)); + + while (i < LDPRELOAD_MAX && (ldpreload_names[i] = strsep(&ldpreloads_bufp, delim))) { + if (*ldpreload_names[i] != '\0') { + ++i; + } + } + + /* Forget the last path if we had to truncate; this occurs if the 2nd to + * last char isn't '\0' (i.e. not originally a delim). */ + if (i > 0 && len >= sizeof(ldpreloads_buf) && + ldpreloads_buf[sizeof(ldpreloads_buf) - 2] != '\0') { + ldpreload_names[i - 1] = NULL; + } else { + ldpreload_names[i] = NULL; + } +} + +/* + * This code is called after the linker has linked itself and + * fixed it's own GOT. It is safe to make references to externs + * and other non-local data at this point. + */ +static unsigned __linker_init_post_relocation(unsigned **elfdata) +{ + static soinfo linker_soinfo; + + int argc = (int) *elfdata; + char **argv = (char**) (elfdata + 1); + unsigned *vecs = (unsigned*) (argv + argc + 1); + unsigned *v; + soinfo *si; + struct link_map * map; + const char *ldpath_env = NULL; + const char *ldpreload_env = NULL; + + /* NOTE: we store the elfdata pointer on a special location + * of the temporary TLS area in order to pass it to + * the C Library's runtime initializer. + * + * The initializer must clear the slot and reset the TLS + * to point to a different location to ensure that no other + * shared library constructor can access it. + */ + //__libc_init_tls(elfdata); + + pid = getpid(); + +#if TIMING + struct timeval t0, t1; + gettimeofday(&t0, 0); +#endif + + /* Initialize environment functions, and get to the ELF aux vectors table */ + vecs = linker_env_init(vecs); + + /* Check auxv for AT_SECURE first to see if program is setuid, setgid, + has file caps, or caused a SELinux/AppArmor domain transition. */ + for (v = vecs; v[0]; v += 2) { + if (v[0] == AT_SECURE) { + /* kernel told us whether to enable secure mode */ + program_is_setuid = v[1]; + goto sanitize; + } + } + + /* Kernel did not provide AT_SECURE - fall back on legacy test. */ + program_is_setuid = (getuid() != geteuid()) || (getgid() != getegid()); + +sanitize: + /* Sanitize environment if we're loading a setuid program */ + if (program_is_setuid) + linker_env_secure(); + + //debugger_init(); + + /* Get a few environment variables */ + { +#if LINKER_DEBUG + const char* env; + env = linker_env_get("DEBUG"); /* XXX: TODO: Change to LD_DEBUG */ + if (env) + debug_verbosity = atoi(env); +#endif + + /* Normally, these are cleaned by linker_env_secure, but the test + * against program_is_setuid doesn't cost us anything */ + if (!program_is_setuid) { + ldpath_env = linker_env_get("LD_LIBRARY_PATH"); + ldpreload_env = linker_env_get("LD_PRELOAD"); + } + } + + INFO("[ android linker & debugger ]\n"); + DEBUG("%5d elfdata @ 0x%08x\n", pid, (unsigned)elfdata); + + si = alloc_info(argv[0]); + if(si == 0) { + exit(-1); + } + + /* bootstrap the link map, the main exe always needs to be first */ + si->flags |= FLAG_EXE; + map = &(si->linkmap); + + map->l_addr = 0; + map->l_name = argv[0]; + map->l_prev = NULL; + map->l_next = NULL; + + _r_debug.r_map = map; + r_debug_tail = map; + + /* gdb expects the linker to be in the debug shared object list, + * and we need to make sure that the reported load address is zero. + * Without this, gdb gets the wrong idea of where rtld_db_dlactivity() + * is. Don't use alloc_info(), because the linker shouldn't + * be on the soinfo list. + */ + strlcpy((char*) linker_soinfo.name, "/system/bin/linker", sizeof linker_soinfo.name); + linker_soinfo.flags = 0; + linker_soinfo.base = 0; // This is the important part; must be zero. + insert_soinfo_into_debug_map(&linker_soinfo); + + /* extract information passed from the kernel */ + while(vecs[0] != 0){ + switch(vecs[0]){ + case AT_PHDR: + si->phdr = (Elf32_Phdr*) vecs[1]; + break; + case AT_PHNUM: + si->phnum = (int) vecs[1]; + break; + case AT_ENTRY: + si->entry = vecs[1]; + break; + } + vecs += 2; + } + + /* Compute the value of si->base. We can't rely on the fact that + * the first entry is the PHDR because this will not be true + * for certain executables (e.g. some in the NDK unit test suite) + */ + int nn; + si->base = 0; + for ( nn = 0; nn < si->phnum; nn++ ) { + if (si->phdr[nn].p_type == PT_PHDR) { + si->base = (Elf32_Addr) si->phdr - si->phdr[nn].p_vaddr; + break; + } + } + si->dynamic = (unsigned *)-1; + si->wrprotect_start = 0xffffffff; + si->wrprotect_end = 0; + si->refcount = 1; + si->gnu_relro_start = 0; + si->gnu_relro_len = 0; + + /* Use LD_LIBRARY_PATH if we aren't setuid/setgid */ + if (ldpath_env) + parse_library_path(ldpath_env, ":"); + + if (ldpreload_env) { + parse_preloads(ldpreload_env, " :"); + } + + if(link_image(si, 0)) { + char errmsg[] = "CANNOT LINK EXECUTABLE\n"; + write(2, __linker_dl_err_buf, strlen(__linker_dl_err_buf)); + write(2, errmsg, sizeof(errmsg)); + exit(-1); + } + + call_constructors_recursive(si); + +#if ALLOW_SYMBOLS_FROM_MAIN + /* Set somain after we've loaded all the libraries in order to prevent + * linking of symbols back to the main image, which is not set up at that + * point yet. + */ + somain = si; +#endif + +#if TIMING + gettimeofday(&t1,NULL); + PRINT("LINKER TIME: %s: %d microseconds\n", argv[0], (int) ( + (((long long)t1.tv_sec * 1000000LL) + (long long)t1.tv_usec) - + (((long long)t0.tv_sec * 1000000LL) + (long long)t0.tv_usec) + )); +#endif +#if STATS + PRINT("RELO STATS: %s: %d abs, %d rel, %d copy, %d symbol\n", argv[0], + linker_stats.reloc[RELOC_ABSOLUTE], + linker_stats.reloc[RELOC_RELATIVE], + linker_stats.reloc[RELOC_COPY], + linker_stats.reloc[RELOC_SYMBOL]); +#endif +#if COUNT_PAGES + { + unsigned n; + unsigned i; + unsigned count = 0; + for(n = 0; n < 4096; n++){ + if(bitmask[n]){ + unsigned x = bitmask[n]; + for(i = 0; i < 8; i++){ + if(x & 1) count++; + x >>= 1; + } + } + } + PRINT("PAGES MODIFIED: %s: %d (%dKB)\n", argv[0], count, count * 4); + } +#endif + +#if TIMING || STATS || COUNT_PAGES + fflush(stdout); +#endif + + TRACE("[ %5d Ready to execute '%s' @ 0x%08x ]\n", pid, si->name, + si->entry); + return si->entry; +} + +/* + * Find the value of AT_BASE passed to us by the kernel. This is the load + * location of the linker. + */ +static unsigned find_linker_base(unsigned **elfdata) { + int argc = (int) *elfdata; + char **argv = (char**) (elfdata + 1); + unsigned *vecs = (unsigned*) (argv + argc + 1); + while (vecs[0] != 0) { + vecs++; + } + + /* The end of the environment block is marked by two NULL pointers */ + vecs++; + + while(vecs[0]) { + if (vecs[0] == AT_BASE) { + return vecs[1]; + } + vecs += 2; + } + + return 0; // should never happen +} + +/* + * This is the entry point for the linker, called from begin.S. This + * method is responsible for fixing the linker's own relocations, and + * then calling __linker_init_post_relocation(). + * + * Because this method is called before the linker has fixed it's own + * relocations, any attempt to reference an extern variable, extern + * function, or other GOT reference will generate a segfault. + */ +unsigned __linker_init(unsigned **elfdata) { + unsigned linker_addr = find_linker_base(elfdata); + Elf32_Ehdr *elf_hdr = (Elf32_Ehdr *) linker_addr; + Elf32_Phdr *phdr = + (Elf32_Phdr *)((unsigned char *) linker_addr + elf_hdr->e_phoff); + + soinfo linker_so; + memset(&linker_so, 0, sizeof(soinfo)); + + linker_so.base = linker_addr; + linker_so.dynamic = (unsigned *) -1; + linker_so.phdr = phdr; + linker_so.phnum = elf_hdr->e_phnum; + linker_so.flags |= FLAG_LINKER; + linker_so.wrprotect_start = 0xffffffff; + linker_so.wrprotect_end = 0; + linker_so.gnu_relro_start = 0; + linker_so.gnu_relro_len = 0; + + if (link_image(&linker_so, 0)) { + // It would be nice to print an error message, but if the linker + // can't link itself, there's no guarantee that we'll be able to + // call write() (because it involves a GOT reference). + // + // This situation should never occur unless the linker itself + // is corrupt. + exit(-1); + } + + // We have successfully fixed our own relocations. It's safe to run + // the main part of the linker now. + return __linker_init_post_relocation(elfdata); +} diff --git a/libhybris/src/jb/linker_debug.h b/libhybris/src/jb/linker_debug.h new file mode 100644 index 0000000..8701b74 --- /dev/null +++ b/libhybris/src/jb/linker_debug.h @@ -0,0 +1,151 @@ +/* + * Copyright (C) 2008-2010 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _LINKER_DEBUG_H_ +#define _LINKER_DEBUG_H_ + +#include + +#ifndef LINKER_DEBUG +#error LINKER_DEBUG should be defined to either 1 or 0 in Android.mk +#endif + +#define TRACE_DEBUG 1 +#define DO_TRACE_LOOKUP 1 +#define DO_TRACE_RELO 1 +#define TIMING 0 +#define STATS 0 +#define COUNT_PAGES 0 + +/********************************************************************* + * You shouldn't need to modify anything below unless you are adding + * more debugging information. + * + * To enable/disable specific debug options, change the defines above + *********************************************************************/ + + +/*********************************************************************/ +#undef TRUE +#undef FALSE +#define TRUE 1 +#define FALSE 0 + +/* Only use printf() during debugging. We have seen occasional memory + * corruption when the linker uses printf(). + */ +#if LINKER_DEBUG +#include "linker_format.h" +extern int debug_verbosity; +extern int debug_stdout; +extern int format_log(int, const char *, const char *, ...); +extern int format_fd(int, const char *, ...); +#define _PRINTVF(v,f,x...) \ + do { \ + if (debug_verbosity > (v)) { \ + if (debug_stdout) { \ + format_fd(1, x); \ + } else { \ + format_log(5-(v),"linker",x); \ + } \ + } \ + } while (0) +#else /* !LINKER_DEBUG */ +#define _PRINTVF(v,f,x...) do {} while(0) +#endif /* LINKER_DEBUG */ + +#define PRINT(x...) _PRINTVF(-1, FALSE, x) +#define INFO(x...) _PRINTVF(0, TRUE, x) +#define TRACE(x...) _PRINTVF(1, TRUE, x) +#define WARN(fmt,args...) \ + _PRINTVF(-1, TRUE, "%s:%d| WARNING: " fmt, __FILE__, __LINE__, ## args) +#define ERROR(fmt,args...) \ + _PRINTVF(-1, TRUE, "%s:%d| ERROR: " fmt, __FILE__, __LINE__, ## args) + + +#if TRACE_DEBUG +#define DEBUG(x...) _PRINTVF(2, TRUE, "DEBUG: " x) +#else /* !TRACE_DEBUG */ +#define DEBUG(x...) do {} while (0) +#endif /* TRACE_DEBUG */ + +#if LINKER_DEBUG +#define TRACE_TYPE(t,x...) do { if (DO_TRACE_##t) { TRACE(x); } } while (0) +#else /* !LINKER_DEBUG */ +#define TRACE_TYPE(t,x...) do {} while (0) +#endif /* LINKER_DEBUG */ + +#if STATS +#define RELOC_ABSOLUTE 0 +#define RELOC_RELATIVE 1 +#define RELOC_COPY 2 +#define RELOC_SYMBOL 3 +#define NUM_RELOC_STATS 4 + +struct _link_stats { + int reloc[NUM_RELOC_STATS]; +}; +extern struct _link_stats linker_stats; + +#define COUNT_RELOC(type) \ + do { if (type >= 0 && type < NUM_RELOC_STATS) { \ + linker_stats.reloc[type] += 1; \ + } else { \ + PRINT("Unknown reloc stat requested\n"); \ + } \ + } while(0) +#else /* !STATS */ +#define COUNT_RELOC(type) do {} while(0) +#endif /* STATS */ + +#if TIMING +#undef WARN +#define WARN(x...) do {} while (0) +#endif /* TIMING */ + +#if COUNT_PAGES +extern unsigned bitmask[]; +#define MARK(offset) do { \ + bitmask[((offset) >> 12) >> 3] |= (1 << (((offset) >> 12) & 7)); \ + } while(0) +#else +#define MARK(x) do {} while (0) +#endif + +#define DEBUG_DUMP_PHDR(phdr, name, pid) do { \ + DEBUG("%5d %s (phdr = 0x%08x)\n", (pid), (name), (unsigned)(phdr)); \ + DEBUG("\t\tphdr->offset = 0x%08x\n", (unsigned)((phdr)->p_offset)); \ + DEBUG("\t\tphdr->p_vaddr = 0x%08x\n", (unsigned)((phdr)->p_vaddr)); \ + DEBUG("\t\tphdr->p_paddr = 0x%08x\n", (unsigned)((phdr)->p_paddr)); \ + DEBUG("\t\tphdr->p_filesz = 0x%08x\n", (unsigned)((phdr)->p_filesz)); \ + DEBUG("\t\tphdr->p_memsz = 0x%08x\n", (unsigned)((phdr)->p_memsz)); \ + DEBUG("\t\tphdr->p_flags = 0x%08x\n", (unsigned)((phdr)->p_flags)); \ + DEBUG("\t\tphdr->p_align = 0x%08x\n", (unsigned)((phdr)->p_align)); \ + } while (0) + +#endif /* _LINKER_DEBUG_H_ */ diff --git a/libhybris/src/jb/linker_environ.c b/libhybris/src/jb/linker_environ.c new file mode 100644 index 0000000..b71dd80 --- /dev/null +++ b/libhybris/src/jb/linker_environ.c @@ -0,0 +1,204 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#include "linker_environ.h" +#include + +static char** _envp; + +/* Returns 1 if 'str' points to a valid environment variable definition. + * For now, we check that: + * - It is smaller than MAX_ENV_LEN (to detect non-zero terminated strings) + * - It contains at least one equal sign that is not the first character + */ +static int +_is_valid_definition(const char* str) +{ + int pos = 0; + int first_equal_pos = -1; + + /* According to its sources, the kernel uses 32*PAGE_SIZE by default + * as the maximum size for an env. variable definition. + */ + const int MAX_ENV_LEN = 32*4096; + + if (str == NULL) + return 0; + + /* Parse the string, looking for the first '=' there, and its size */ + do { + if (str[pos] == '\0') + break; + if (str[pos] == '=' && first_equal_pos < 0) + first_equal_pos = pos; + pos++; + } while (pos < MAX_ENV_LEN); + + if (pos >= MAX_ENV_LEN) /* Too large */ + return 0; + + if (first_equal_pos < 1) /* No equal sign, or it is the first character */ + return 0; + + return 1; +} + +unsigned* +linker_env_init(unsigned* vecs) +{ + /* Store environment pointer - can't be NULL */ + _envp = (char**) vecs; + + /* Skip over all definitions */ + while (vecs[0] != 0) + vecs++; + /* The end of the environment block is marked by two NULL pointers */ + vecs++; + + /* As a sanity check, we're going to remove all invalid variable + * definitions from the environment array. + */ + { + char** readp = _envp; + char** writep = _envp; + for ( ; readp[0] != NULL; readp++ ) { + if (!_is_valid_definition(readp[0])) + continue; + writep[0] = readp[0]; + writep++; + } + writep[0] = NULL; + } + + /* Return the address of the aux vectors table */ + return vecs; +} + +/* Check if the environment variable definition at 'envstr' + * starts with '=', and if so return the address of the + * first character after the equal sign. Otherwise return NULL. + */ +static char* +env_match(char* envstr, const char* name) +{ + size_t cnt = 0; + + while (envstr[cnt] == name[cnt] && name[cnt] != '\0') + cnt++; + + if (name[cnt] == '\0' && envstr[cnt] == '=') + return envstr + cnt + 1; + + return NULL; +} + +#define MAX_ENV_LEN (16*4096) + +const char* +linker_env_get(const char* name) +{ + char** readp = _envp; + + if (name == NULL || name[0] == '\0') + return NULL; + + for ( ; readp[0] != NULL; readp++ ) { + char* val = env_match(readp[0], name); + if (val != NULL) { + /* Return NULL for empty strings, or if it is too large */ + if (val[0] == '\0') + val = NULL; + return val; + } + } + return NULL; +} + + +void +linker_env_unset(const char* name) +{ + char** readp = _envp; + char** writep = readp; + + if (name == NULL || name[0] == '\0') + return; + + for ( ; readp[0] != NULL; readp++ ) { + if (env_match(readp[0], name)) + continue; + writep[0] = readp[0]; + writep++; + } + /* end list with a NULL */ + writep[0] = NULL; +} + + + +/* Remove unsafe environment variables. This should be used when + * running setuid programs. */ +void +linker_env_secure(void) +{ + /* The same list than GLibc at this point */ + static const char* const unsec_vars[] = { + "GCONV_PATH", + "GETCONF_DIR", + "HOSTALIASES", + "LD_AUDIT", + "LD_DEBUG", + "LD_DEBUG_OUTPUT", + "LD_DYNAMIC_WEAK", + "LD_LIBRARY_PATH", + "LD_ORIGIN_PATH", + "LD_PRELOAD", + "LD_PROFILE", + "LD_SHOW_AUXV", + "LD_USE_LOAD_BIAS", + "LOCALDOMAIN", + "LOCPATH", + "MALLOC_TRACE", + "MALLOC_CHECK_", + "NIS_PATH", + "NLSPATH", + "RESOLV_HOST_CONF", + "RES_OPTIONS", + "TMPDIR", + "TZDIR", + "LD_AOUT_LIBRARY_PATH", + "LD_AOUT_PRELOAD", + }; + + const char* const* cp = unsec_vars; + const char* const* endp = cp + sizeof(unsec_vars)/sizeof(unsec_vars[0]); + + while (cp < endp) { + linker_env_unset(*cp); + cp++; + } +} diff --git a/libhybris/src/jb/linker_environ.h b/libhybris/src/jb/linker_environ.h new file mode 100644 index 0000000..98ad1de --- /dev/null +++ b/libhybris/src/jb/linker_environ.h @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#ifndef LINKER_ENVIRON_H +#define LINKER_ENVIRON_H + +/* Call this function before anything else. 'vecs' must be the pointer + * to the environment block in the ELF data block. The function returns + * the start of the aux vectors after the env block. + */ +extern unsigned* linker_env_init(unsigned* vecs); + +/* Unset a given environment variable. In case the variable is defined + * multiple times, unset all instances. This modifies the environment + * block, so any pointer returned by linker_env_get() after this call + * might become invalid */ +extern void linker_env_unset(const char* name); + + +/* Returns the value of environment variable 'name' if defined and not + * empty, or NULL otherwise. Note that the returned pointer may become + * invalid if linker_env_unset() or linker_env_secure() are called + * after this function. */ +extern const char* linker_env_get(const char* name); + +/* Remove unsecure environment variables. This should be used when + * running setuid programs. */ +extern void linker_env_secure(void); + +#endif /* LINKER_ENVIRON_H */ diff --git a/libhybris/src/jb/linker_format.c b/libhybris/src/jb/linker_format.c new file mode 100644 index 0000000..36b73d8 --- /dev/null +++ b/libhybris/src/jb/linker_format.c @@ -0,0 +1,703 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include "linker_format.h" +#include "linker_debug.h" + +/* define UNIT_TESTS to build this file as a single executable that runs + * the formatter's unit tests + */ +#define xxUNIT_TESTS + +/*** Generic output sink + ***/ + +typedef struct { + void *opaque; + void (*send)(void *opaque, const char *data, int len); +} Out; + +static void +out_send(Out *o, const void *data, size_t len) +{ + o->send(o->opaque, data, (int)len); +} + +static void +out_send_repeat(Out *o, char ch, int count) +{ + char pad[8]; + const int padSize = (int)sizeof(pad); + + memset(pad, ch, sizeof(pad)); + while (count > 0) { + int avail = count; + if (avail > padSize) { + avail = padSize; + } + o->send(o->opaque, pad, avail); + count -= avail; + } +} + +/* forward declaration */ +static void +out_vformat(Out *o, const char *format, va_list args); + +/*** Bounded buffer output + ***/ + +typedef struct { + Out out[1]; + char *buffer; + char *pos; + char *end; + int total; +} BufOut; + +static void +buf_out_send(void *opaque, const char *data, int len) +{ + BufOut *bo = opaque; + + if (len < 0) + len = strlen(data); + + bo->total += len; + + while (len > 0) { + int avail = bo->end - bo->pos; + if (avail == 0) + break; + if (avail > len) + avail = len; + memcpy(bo->pos, data, avail); + bo->pos += avail; + bo->pos[0] = '\0'; + len -= avail; + } +} + +static Out* +buf_out_init(BufOut *bo, char *buffer, size_t size) +{ + if (size == 0) + return NULL; + + bo->out->opaque = bo; + bo->out->send = buf_out_send; + bo->buffer = buffer; + bo->end = buffer + size - 1; + bo->pos = bo->buffer; + bo->pos[0] = '\0'; + bo->total = 0; + + return bo->out; +} + +static int +buf_out_length(BufOut *bo) +{ + return bo->total; +} + +static int +vformat_buffer(char *buff, size_t buffsize, const char *format, va_list args) +{ + BufOut bo; + Out *out; + + out = buf_out_init(&bo, buff, buffsize); + if (out == NULL) + return 0; + + out_vformat(out, format, args); + + return buf_out_length(&bo); +} + +int +format_buffer(char *buff, size_t buffsize, const char *format, ...) +{ + va_list args; + int ret; + + va_start(args, format); + ret = vformat_buffer(buff, buffsize, format, args); + va_end(args); + + return ret; +} + +/* The __stack_chk_fail() function calls __libc_android_log_print() + * which calls vsnprintf(). + * + * We define our version of the function here to avoid dragging + * about 25 KB of C library routines related to formatting. + */ +#if 0 +int +vsnprintf(char *buff, size_t bufsize, const char *format, va_list args) +{ + return format_buffer(buff, bufsize, format, args); +} +#endif + +#if LINKER_DEBUG + +/*** File descriptor output + ***/ + +typedef struct { + Out out[1]; + int fd; + int total; +} FdOut; + +static void +fd_out_send(void *opaque, const char *data, int len) +{ + FdOut *fdo = opaque; + + if (len < 0) + len = strlen(data); + + while (len > 0) { + int ret = write(fdo->fd, data, len); + if (ret < 0) { + if (errno == EINTR) + continue; + break; + } + data += ret; + len -= ret; + fdo->total += ret; + } +} + +static Out* +fd_out_init(FdOut *fdo, int fd) +{ + fdo->out->opaque = fdo; + fdo->out->send = fd_out_send; + fdo->fd = fd; + fdo->total = 0; + + return fdo->out; +} + +static int +fd_out_length(FdOut *fdo) +{ + return fdo->total; +} + + +int +format_fd(int fd, const char *format, ...) +{ + FdOut fdo; + Out* out; + va_list args; + + out = fd_out_init(&fdo, fd); + if (out == NULL) + return 0; + + va_start(args, format); + out_vformat(out, format, args); + va_end(args); + + return fd_out_length(&fdo); +} + +/*** Log output + ***/ + +/* We need our own version of __libc_android_log_vprint, otherwise + * the log output is completely broken. Probably due to the fact + * that the C library is not initialized yet. + * + * You can test that by setting CUSTOM_LOG_VPRINT to 0 + */ +#define CUSTOM_LOG_VPRINT 1 + +#if CUSTOM_LOG_VPRINT + +#include +#include +#include + +static int log_vprint(int prio, const char *tag, const char *fmt, va_list args) +{ + char buf[1024]; + int result; + static int log_fd = -1; + + result = vformat_buffer(buf, sizeof buf, fmt, args); + + if (log_fd < 0) { + log_fd = open("/dev/log/main", O_WRONLY); + if (log_fd < 0) { + log_fd = fileno(stdout); // kernel doesn't have android log + return result; + } + } + + { + ssize_t ret; + struct iovec vec[3]; + + vec[0].iov_base = (unsigned char *) &prio; + vec[0].iov_len = 1; + vec[1].iov_base = (void *) tag; + vec[1].iov_len = strlen(tag) + 1; + vec[2].iov_base = (void *) buf; + vec[2].iov_len = strlen(buf) + 1; + + do { + ret = writev(log_fd, vec, 3); + } while ((ret < 0) && (errno == EINTR)); + } + return result; +} + +#define __libc_android_log_vprint log_vprint + +#else /* !CUSTOM_LOG_VPRINT */ + +extern int __libc_android_log_vprint(int prio, const char* tag, const char* format, va_list ap); + +#endif /* !CUSTOM_LOG_VPRINT */ + +int +format_log(int prio, const char *tag, const char *format, ...) +{ + int ret; + va_list args; + va_start(args, format); + ret = __libc_android_log_vprint(prio, tag, format, args); + va_end(args); + return ret; +} + +#endif /* LINKER_DEBUG */ + +/*** formatted output implementation + ***/ + +/* Parse a decimal string from 'format + *ppos', + * return the value, and writes the new position past + * the decimal string in '*ppos' on exit. + * + * NOTE: Does *not* handle a sign prefix. + */ +static unsigned +parse_decimal(const char *format, int *ppos) +{ + const char* p = format + *ppos; + unsigned result = 0; + + for (;;) { + int ch = *p; + unsigned d = (unsigned)(ch - '0'); + + if (d >= 10U) + break; + + result = result*10 + d; + p++; + } + *ppos = p - format; + return result; +} + +/* write an octal/decimal/number into a bounded buffer. + * assumes that bufsize > 0, and 'digits' is a string of + * digits of at least 'base' values. + */ +static void +format_number(char *buffer, size_t bufsize, uint64_t value, int base, const char *digits) +{ + char *pos = buffer; + char *end = buffer + bufsize - 1; + + /* generate digit string in reverse order */ + while (value) { + unsigned d = value % base; + value /= base; + if (pos < end) { + *pos++ = digits[d]; + } + } + + /* special case for 0 */ + if (pos == buffer) { + if (pos < end) { + *pos++ = '0'; + } + } + pos[0] = '\0'; + + /* now reverse digit string in-place */ + end = pos - 1; + pos = buffer; + while (pos < end) { + int ch = pos[0]; + pos[0] = end[0]; + end[0] = (char) ch; + pos++; + end--; + } +} + +/* Write an integer (octal or decimal) into a buffer, assumes buffsize > 2 */ +static void +format_integer(char *buffer, size_t buffsize, uint64_t value, int base, int isSigned) +{ + if (isSigned && (int64_t)value < 0) { + buffer[0] = '-'; + buffer += 1; + buffsize -= 1; + value = (uint64_t)(-(int64_t)value); + } + + format_number(buffer, buffsize, value, base, "0123456789"); +} + +/* Write an octal into a buffer, assumes buffsize > 2 */ +static void +format_octal(char *buffer, size_t buffsize, uint64_t value, int isSigned) +{ + format_integer(buffer, buffsize, value, 8, isSigned); +} + +/* Write a decimal into a buffer, assumes buffsize > 2 */ +static void +format_decimal(char *buffer, size_t buffsize, uint64_t value, int isSigned) +{ + format_integer(buffer, buffsize, value, 10, isSigned); +} + +/* Write an hexadecimal into a buffer, isCap is true for capital alphas. + * Assumes bufsize > 2 */ +static void +format_hex(char *buffer, size_t buffsize, uint64_t value, int isCap) +{ + const char *digits = isCap ? "0123456789ABCDEF" : "0123456789abcdef"; + + format_number(buffer, buffsize, value, 16, digits); +} + + +/* Perform formatted output to an output target 'o' */ +static void +out_vformat(Out *o, const char *format, va_list args) +{ + int nn = 0; + + for (;;) { + int mm; + int padZero = 0; + int padLeft = 0; + char sign = '\0'; + int width = -1; + int prec = -1; + size_t bytelen = sizeof(int); + const char* str; + int slen; + char buffer[32]; /* temporary buffer used to format numbers */ + + char c; + + /* first, find all characters that are not 0 or '%' */ + /* then send them to the output directly */ + mm = nn; + do { + c = format[mm]; + if (c == '\0' || c == '%') + break; + mm++; + } while (1); + + if (mm > nn) { + out_send(o, format+nn, mm-nn); + nn = mm; + } + + /* is this it ? then exit */ + if (c == '\0') + break; + + /* nope, we are at a '%' modifier */ + nn++; // skip it + + /* parse flags */ + for (;;) { + c = format[nn++]; + if (c == '\0') { /* single trailing '%' ? */ + c = '%'; + out_send(o, &c, 1); + return; + } + else if (c == '0') { + padZero = 1; + continue; + } + else if (c == '-') { + padLeft = 1; + continue; + } + else if (c == ' ' || c == '+') { + sign = c; + continue; + } + break; + } + + /* parse field width */ + if ((c >= '0' && c <= '9')) { + nn --; + width = (int)parse_decimal(format, &nn); + c = format[nn++]; + } + + /* parse precision */ + if (c == '.') { + prec = (int)parse_decimal(format, &nn); + c = format[nn++]; + } + + /* length modifier */ + switch (c) { + case 'h': + bytelen = sizeof(short); + if (format[nn] == 'h') { + bytelen = sizeof(char); + nn += 1; + } + c = format[nn++]; + break; + case 'l': + bytelen = sizeof(long); + if (format[nn] == 'l') { + bytelen = sizeof(long long); + nn += 1; + } + c = format[nn++]; + break; + case 'z': + bytelen = sizeof(size_t); + c = format[nn++]; + break; + case 't': + bytelen = sizeof(ptrdiff_t); + c = format[nn++]; + break; + default: + ; + } + + /* conversion specifier */ + if (c == 's') { + /* string */ + str = va_arg(args, const char*); + } else if (c == 'c') { + /* character */ + /* NOTE: char is promoted to int when passed through the stack */ + buffer[0] = (char) va_arg(args, int); + buffer[1] = '\0'; + str = buffer; + } else if (c == 'p') { + uint64_t value = (uintptr_t) va_arg(args, void*); + buffer[0] = '0'; + buffer[1] = 'x'; + format_hex(buffer + 2, sizeof buffer-2, value, 0); + str = buffer; + } else { + /* integers - first read value from stack */ + uint64_t value; + int isSigned = (c == 'd' || c == 'i' || c == 'o'); + + /* NOTE: int8_t and int16_t are promoted to int when passed + * through the stack + */ + switch (bytelen) { + case 1: value = (uint8_t) va_arg(args, int); break; + case 2: value = (uint16_t) va_arg(args, int); break; + case 4: value = va_arg(args, uint32_t); break; + case 8: value = va_arg(args, uint64_t); break; + default: return; /* should not happen */ + } + + /* sign extension, if needed */ + if (isSigned) { + int shift = 64 - 8*bytelen; + value = (uint64_t)(((int64_t)(value << shift)) >> shift); + } + + /* format the number properly into our buffer */ + switch (c) { + case 'i': case 'd': + format_integer(buffer, sizeof buffer, value, 10, isSigned); + break; + case 'o': + format_integer(buffer, sizeof buffer, value, 8, isSigned); + break; + case 'x': case 'X': + format_hex(buffer, sizeof buffer, value, (c == 'X')); + break; + default: + buffer[0] = '\0'; + } + /* then point to it */ + str = buffer; + } + + /* if we are here, 'str' points to the content that must be + * outputted. handle padding and alignment now */ + + slen = strlen(str); + + if (slen < width && !padLeft) { + char padChar = padZero ? '0' : ' '; + out_send_repeat(o, padChar, width - slen); + } + + out_send(o, str, slen); + + if (slen < width && padLeft) { + char padChar = padZero ? '0' : ' '; + out_send_repeat(o, padChar, width - slen); + } + } +} + + +#ifdef UNIT_TESTS + +#include + +static int gFails = 0; + +#define MARGIN 40 + +#define UTEST_CHECK(condition,message) \ + printf("Checking %-*s: ", MARGIN, message); fflush(stdout); \ + if (!(condition)) { \ + printf("KO\n"); \ + gFails += 1; \ + } else { \ + printf("ok\n"); \ + } + +static void +utest_BufOut(void) +{ + char buffer[16]; + BufOut bo[1]; + Out* out; + int ret; + + buffer[0] = '1'; + out = buf_out_init(bo, buffer, sizeof buffer); + UTEST_CHECK(buffer[0] == '\0', "buf_out_init clears initial byte"); + out_send(out, "abc", 3); + UTEST_CHECK(!memcmp(buffer, "abc", 4), "out_send() works with BufOut"); + out_send_repeat(out, 'X', 4); + UTEST_CHECK(!memcmp(buffer, "abcXXXX", 8), "out_send_repeat() works with BufOut"); + buffer[sizeof buffer-1] = 'x'; + out_send_repeat(out, 'Y', 2*sizeof(buffer)); + UTEST_CHECK(buffer[sizeof buffer-1] == '\0', "overflows always zero-terminates"); + + out = buf_out_init(bo, buffer, sizeof buffer); + out_send_repeat(out, 'X', 2*sizeof(buffer)); + ret = buf_out_length(bo); + UTEST_CHECK(ret == 2*sizeof(buffer), "correct size returned on overflow"); +} + +static void +utest_expect(const char* result, const char* format, ...) +{ + va_list args; + BufOut bo[1]; + char buffer[256]; + Out* out = buf_out_init(bo, buffer, sizeof buffer); + + printf("Checking %-*s: ", MARGIN, format); fflush(stdout); + va_start(args, format); + out_vformat(out, format, args); + va_end(args); + + if (strcmp(result, buffer)) { + printf("KO. got '%s' expecting '%s'\n", buffer, result); + gFails += 1; + } else { + printf("ok. got '%s'\n", result); + } +} + +int main(void) +{ + utest_BufOut(); + utest_expect("", ""); + utest_expect("a", "a"); + utest_expect("01234", "01234", ""); + utest_expect("01234", "%s", "01234"); + utest_expect("aabbcc", "aa%scc", "bb"); + utest_expect("a", "%c", 'a'); + utest_expect("1234", "%d", 1234); + utest_expect("-8123", "%d", -8123); + utest_expect("16", "%hd", 0x7fff0010); + utest_expect("16", "%hhd", 0x7fffff10); + utest_expect("68719476736", "%lld", 0x1000000000LL); + utest_expect("70000", "%ld", 70000); + utest_expect("0xb0001234", "%p", (void*)0xb0001234); + utest_expect("12ab", "%x", 0x12ab); + utest_expect("12AB", "%X", 0x12ab); + utest_expect("00123456", "%08x", 0x123456); + utest_expect("01234", "0%d", 1234); + utest_expect(" 1234", "%5d", 1234); + utest_expect("01234", "%05d", 1234); + utest_expect(" 1234", "%8d", 1234); + utest_expect("1234 ", "%-8d", 1234); + utest_expect("abcdef ", "%-11s", "abcdef"); + utest_expect("something:1234", "%s:%d", "something", 1234); + utest_expect("005:5:05", "%03d:%d:%02d", 5, 5, 5); + utest_expect("5,0x0", "%d,%p", 5, NULL); + utest_expect("68719476736,6,7,8", "%lld,%d,%d,%d", 0x1000000000LL, 6, 7, 8); + return gFails != 0; +} + +#endif /* UNIT_TESTS */ diff --git a/libhybris/src/jb/linker_format.h b/libhybris/src/jb/linker_format.h new file mode 100644 index 0000000..6ae2bad --- /dev/null +++ b/libhybris/src/jb/linker_format.h @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#ifndef _LINKER_FORMAT_H +#define _LINKER_FORMAT_H + +#include +#include + +/* Formatting routines for the dynamic linker's debug traces */ +/* We want to avoid dragging the whole C library fprintf() */ +/* implementation into the dynamic linker since this creates */ +/* issues (it uses malloc()/free()) and increases code size */ + +int format_buffer(char *buffer, size_t bufsize, const char *format, ...); + +#endif /* _LINKER_FORMAT_H */ diff --git a/libhybris/src/jb/rt.c b/libhybris/src/jb/rt.c new file mode 100644 index 0000000..30d5a48 --- /dev/null +++ b/libhybris/src/jb/rt.c @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * This function is an empty stub where GDB locates a breakpoint to get notified + * about linker activity. + */ +void __attribute__((noinline)) rtld_db_dlactivity(void) +{ +} + diff --git a/libhybris/src/logging.c b/libhybris/src/logging.c new file mode 100644 index 0000000..0c4c79b --- /dev/null +++ b/libhybris/src/logging.c @@ -0,0 +1,133 @@ + +/* + * Copyright (c) 2013 Thomas Perl + * + * 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. + * + */ + + +#include "logging.h" + +#include +#include +#include +#include +#include + +FILE *hybris_logging_target = NULL; + +pthread_mutex_t hybris_logging_mutex; + +static enum hybris_log_level +hybris_minimum_log_level = HYBRIS_LOG_WARN; + +static enum hybris_log_format _hybris_logging_format = HYBRIS_LOG_FORMAT_NORMAL; + +static int _hybris_should_trace = 0; + +static int +hybris_logging_initialized = 0; + +static void +hybris_logging_initialize() +{ + const char *env = getenv("HYBRIS_LOGGING_LEVEL"); + + if (env == NULL) { + /* Nothing to do - use default level */ + } else if (strcmp(env, "debug") == 0) { + hybris_minimum_log_level = HYBRIS_LOG_DEBUG; + } else if (strcmp(env, "info") == 0) { + hybris_minimum_log_level = HYBRIS_LOG_INFO; + } else if (strcmp(env, "warn") == 0) { + hybris_minimum_log_level = HYBRIS_LOG_WARN; + } else if (strcmp(env, "error") == 0) { + hybris_minimum_log_level = HYBRIS_LOG_ERROR; + } else if (strcmp(env, "disabled") == 0) { + hybris_minimum_log_level = HYBRIS_LOG_DISABLED; + } + + env = getenv("HYBRIS_LOGGING_TARGET"); + if (env != NULL) + { + hybris_logging_target = fopen(env, "a"); + } + if (hybris_logging_target == NULL) + hybris_logging_target = stderr; + + env = getenv("HYBRIS_LOGGING_FORMAT"); + if (env != NULL) + { + if (strcmp(env, "systrace") == 0) { + _hybris_logging_format = HYBRIS_LOG_FORMAT_SYSTRACE; + } + else + _hybris_logging_format = HYBRIS_LOG_FORMAT_NORMAL; + } + + env = getenv("HYBRIS_TRACE"); + if (env != NULL) + { + if (strcmp(env, "1") == 0) { + _hybris_should_trace = 1; + } + } + pthread_mutex_init(&hybris_logging_mutex, NULL); +} + +int +hybris_should_log(enum hybris_log_level level) +{ + /* Initialize logging level from environment */ + if (!hybris_logging_initialized) { + hybris_logging_initialized = 1; + hybris_logging_initialize(); + } + + return (level >= hybris_minimum_log_level); +} + +void +hybris_set_log_level(enum hybris_log_level level) +{ + hybris_minimum_log_level = level; +} + +void * +hybris_get_thread_id() +{ + return (void *)pthread_self(); +} + +double +hybris_get_thread_time() +{ + struct timespec now; + if(clock_gettime(CLOCK_THREAD_CPUTIME_ID, &now) == 0) { + return (double)now.tv_sec + (double)now.tv_nsec / 1000000000.0; + } else { + return -1.0; + } +} + +int +hybris_should_trace(const char *module, const char *tracepoint) +{ + return _hybris_should_trace; +} + +enum hybris_log_format hybris_logging_format() +{ + return _hybris_logging_format; +} diff --git a/libhybris/src/logging.h b/libhybris/src/logging.h new file mode 100644 index 0000000..f4841b9 --- /dev/null +++ b/libhybris/src/logging.h @@ -0,0 +1,165 @@ + +/* + * Copyright (c) 2013 Thomas Perl + * + * 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. + * + */ + +#ifndef HYBRIS_LOGGING_H +#define HYBRIS_LOGGING_H + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +enum hybris_log_level { + /* Most verbose logging level */ + HYBRIS_LOG_DEBUG = 0, + + /* Normal logging levels */ + HYBRIS_LOG_INFO, + HYBRIS_LOG_WARN, + HYBRIS_LOG_ERROR, + + /** + * "Fake" level at which no messages are logged. + * Can be used with hybris_set_log_level(). + **/ + HYBRIS_LOG_DISABLED, +}; + +enum hybris_log_format { + HYBRIS_LOG_FORMAT_NORMAL, + HYBRIS_LOG_FORMAT_SYSTRACE +}; + +/** + * Returns nonzero if messages at level "level" should be logged. + * Only used by the HYBRIS_LOG() macro, no need to call it manually. + **/ +int +hybris_should_log(enum hybris_log_level level); + + +/** + * Sets the minimum log level that is logged, for example a minimum + * log level of HYBRIS_LOG_DEBUG would print all log messages, a + * minimum log level of HYBRIS_LOG_WARN would only print warnings and + * errors. The default log level is HYBRIS_LOG_WARN. + **/ +void +hybris_set_log_level(enum hybris_log_level level); + +void * +hybris_get_thread_id(); + +double +hybris_get_thread_time(); + +enum hybris_log_format hybris_logging_format(); + +int hybris_should_trace(const char *module, const char *tracepoint); + +extern pthread_mutex_t hybris_logging_mutex; + +#ifdef __cplusplus +} +#endif + +extern FILE *hybris_logging_target; + +#if defined(DEBUG) +# define HYBRIS_LOG_(level, module, message, ...) do { \ + if (hybris_should_log(level)) { \ + pthread_mutex_lock(&hybris_logging_mutex); \ + if (hybris_logging_format() == HYBRIS_LOG_FORMAT_NORMAL) \ + { \ + fprintf(hybris_logging_target, "%s %s:%d (%s) %s: " message "\n", \ + module, __FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #level + 11 /* + 11 = strip leading "HYBRIS_LOG_" */, \ + ##__VA_ARGS__); \ + fflush(hybris_logging_target); \ + } else if (hybris_logging_format() == HYBRIS_LOG_FORMAT_SYSTRACE) { \ + fprintf(hybris_logging_target, "B|%i|%.9f|%s(%s) %s:%d (%s) " message "\n", \ + getpid(), hybris_get_thread_time(), module, __PRETTY_FUNCTION__, __FILE__, __LINE__, \ + #level + 11 /* + 11 = strip leading "HYBRIS_LOG_" */, \ + ##__VA_ARGS__); \ + fflush(hybris_logging_target); \ + fprintf(hybris_logging_target, "E|%i|%.9f|%s(%s) %s:%d (%s) " message "\n", \ + getpid(), hybris_get_thread_time(), module, __PRETTY_FUNCTION__, __FILE__, __LINE__, \ + #level + 11 /* + 11 = strip leading "HYBRIS_LOG_" */, \ + ##__VA_ARGS__); \ + fflush(hybris_logging_target); \ + } \ + pthread_mutex_unlock(&hybris_logging_mutex); \ + } \ + } while(0) + +#define HYBRIS_TRACE_RECORD(module, what, tracepoint, message, ...) do { \ + if (hybris_should_trace(module, tracepoint)) { \ + pthread_mutex_lock(&hybris_logging_mutex); \ + if (hybris_logging_format() == HYBRIS_LOG_FORMAT_NORMAL) \ + { \ + fprintf(hybris_logging_target, "PID: %i TTIME: %.9f Tracepoint-%c/%s::%s" message "\n", \ + getpid(), hybris_get_thread_time(), what, tracepoint, module, \ + ##__VA_ARGS__); \ + fflush(hybris_logging_target); \ + } else if (hybris_logging_format() == HYBRIS_LOG_FORMAT_SYSTRACE) { \ + if (what == 'B') \ + fprintf(hybris_logging_target, "B|%i|%.9f|%s::%s" message "", \ + getpid(), hybris_get_thread_time(), tracepoint, module, ##__VA_ARGS__); \ + else if (what == 'E') \ + fprintf(hybris_logging_target, "E"); \ + else \ + fprintf(hybris_logging_target, "C|%i|%.9f|%s::%s-%i|" message "", \ + getpid(), hybris_get_thread_time(), tracepoint, module, getpid(), ##__VA_ARGS__); \ + fflush(hybris_logging_target); \ + } \ + pthread_mutex_unlock(&hybris_logging_mutex); \ + } \ + } while(0) +# define HYBRIS_TRACE_BEGIN(module, tracepoint, message, ...) HYBRIS_TRACE_RECORD(module, 'B', tracepoint, message, ##__VA_ARGS__) +# define HYBRIS_TRACE_END(module, tracepoint, message, ...) HYBRIS_TRACE_RECORD(module, 'E', tracepoint, message, ##__VA_ARGS__) +# define HYBRIS_TRACE_COUNTER(module, tracepoint, message, ...) HYBRIS_TRACE_RECORD(module, 'C', tracepoint, message, ##__VA_ARGS__) +#else +# define HYBRIS_LOG_(level, module, message, ...) while (0) {} +# define HYBRIS_TRACE_BEGIN(module, tracepoint, message, ...) while (0) {} +# define HYBRIS_TRACE_END(module, tracepoint, message, ...) while (0) {} +# define HYBRIS_TRACE_COUNTER(module, tracepoint, message, ...) while (0) {} +#endif + + +/* Generic logging functions taking the module name and a message */ +#define HYBRIS_DEBUG_LOG(module, message, ...) HYBRIS_LOG_(HYBRIS_LOG_DEBUG, #module, message, ##__VA_ARGS__) +#define HYBRIS_WARN_LOG(module, message, ...) HYBRIS_LOG_(HYBRIS_LOG_WARN, #module, message, ##__VA_ARGS__) +#define HYBRIS_INFO_LOG(module, message, ...) HYBRIS_LOG_(HYBRIS_LOG_INFO, #module, message, ##__VA_ARGS__) +#define HYBRIS_ERROR_LOG(module, message, ...) HYBRIS_LOG_(HYBRIS_LOG_ERROR, #module, message, ##__VA_ARGS__) + + +/* Module-specific logging functions can be defined like this */ +#define HYBRIS_DEBUG(message, ...) HYBRIS_DEBUG_LOG(HYBRIS, message, ##__VA_ARGS__) +#define HYBRIS_WARN(message, ...) HYBRIS_WARN_LOG(HYBRIS, message, ##__VA_ARGS__) +#define HYBRIS_INFO(message, ...) HYBRIS_INFO_LOG(HYBRIS, message, ##__VA_ARGS__) +#define HYBRIS_ERROR(message, ...) HYBRIS_ERROR_LOG(HYBRIS, message, ##__VA_ARGS__) + +/* for compatibility reasons */ +#define TRACE(message, ...) HYBRIS_DEBUG_LOG(EGL, message, ##__VA_ARGS__) + +#endif /* HYBRIS_LOGGING_H */ +// vim: noai:ts=4:sw=4:ss=4:expandtab diff --git a/libhybris/src/properties.c b/libhybris/src/properties.c new file mode 100644 index 0000000..4775160 --- /dev/null +++ b/libhybris/src/properties.c @@ -0,0 +1,224 @@ +/* + * Copyright (c) 2012 Carsten Munk + * 2008 The Android Open Source Project + * 2013 Simon Busch + * 2013 Canonical Ltd + * + * 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. + * + */ + +#ifndef __USE_GNU +#define __USE_GNU +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../include/hybris/properties.h" +#include "properties_p.h" + +#ifdef __APPLE__ +#define TEMP_FAILURE_RETRY(expression) \ +(__extension__ \ + ({ long int __result; \ + do __result = (long int) (expression); \ + while (__result == -1L && errno == EINTR); \ + __result; })) +#endif + + +static const char property_service_socket[] = "/dev/socket/" PROP_SERVICE_NAME; +static int send_prop_msg_no_reply = 0; + +/* Get/Set a property from the Android Init property socket */ +static int send_prop_msg(prop_msg_t *msg, + void (*propfn)(const char *, const char *, void *), + void *cookie) +{ + struct pollfd pollfds[1]; + union { + struct sockaddr_un addr; + struct sockaddr addr_g; + } addr; + socklen_t alen; + size_t namelen; + int s; + int r; + int result = -1; + int patched_init = 0; + + /* if we tried to talk to the server in the past and didn't get a reply, + * it's fairly safe to say that init is not patched and this is all + * hopeless, so we should just quit while we're ahead + */ + if (send_prop_msg_no_reply == 1) + return -EIO; + + s = socket(AF_LOCAL, SOCK_STREAM, 0); + if (s < 0) { + return result; + } + + memset(&addr, 0, sizeof(addr)); + namelen = strlen(property_service_socket); + strncpy(addr.addr.sun_path, property_service_socket, + sizeof(addr.addr.sun_path)); + addr.addr.sun_family = AF_LOCAL; + alen = namelen + offsetof(struct sockaddr_un, sun_path) + 1; + + if (TEMP_FAILURE_RETRY(connect(s, &addr.addr_g, alen) < 0)) { + close(s); + return result; + } + + r = TEMP_FAILURE_RETRY(send(s, msg, sizeof(prop_msg_t), 0)); + + if (r == sizeof(prop_msg_t)) { + pollfds[0].fd = s; + pollfds[0].events = 0; + // We successfully wrote to the property server, so use recv + // in case we need to get a property. Once the other side is + // finished, the socket is closed. + while ((r = recv(s, msg, sizeof(prop_msg_t), 0)) > 0) { + if (r != sizeof(prop_msg_t)) { + close(s); + return result; + } + + /* If we got a reply, this is a patched init */ + if (!patched_init) + patched_init = 1; + + if (propfn) + propfn(msg->name, msg->value, cookie); + } + + /* We also just get a close in case of setprop */ + if ((r >= 0) && (patched_init || + (msg->cmd == PROP_MSG_SETPROP))) { + result = 0; + } else { + send_prop_msg_no_reply = 1; + } + } + + close(s); + return result; +} + +int property_list(void (*propfn)(const char *key, const char *value, void *cookie), void *cookie) +{ + int err; + prop_msg_t msg; + + memset(&msg, 0, sizeof(msg)); + msg.cmd = PROP_MSG_LISTPROP; + + err = send_prop_msg(&msg, propfn, cookie); + if (err < 0) + /* fallback to property cache */ + hybris_propcache_list((hybris_propcache_list_cb) propfn, cookie); + + return 0; +} + +static int property_get_socket(const char *key, char *value, const char *default_value) +{ + int err; + prop_msg_t msg; + + memset(&msg, 0, sizeof(msg)); + msg.cmd = PROP_MSG_GETPROP; + + if (key) { + strncpy(msg.name, key, sizeof(msg.name)); + err = send_prop_msg(&msg, NULL, NULL); + if (err < 0) + return err; + } + + /* In case it's null, just use the default */ + if ((strlen(msg.value) == 0) && (default_value)) { + if (strlen(default_value) >= PROP_VALUE_MAX -1) return -1; + strcpy(msg.value, default_value); + } + + strcpy(value, msg.value); + + return 0; +} + +int property_get(const char *key, char *value, const char *default_value) +{ + char *ret = NULL; + + if ((key) && (strlen(key) >= PROP_NAME_MAX -1)) return -1; + if (value == NULL) return -1; + + if (property_get_socket(key, value, default_value) == 0) + return strlen(value); + + /* In case the socket is not available, search the property file cache by hand */ + ret = hybris_propcache_find(key); + + if (ret) { + strcpy(value, ret); + return strlen(value); + } else if (default_value != NULL) { + strcpy(value, default_value); + return strlen(value); + } else { + value = '\0'; + } + + return 0; +} + +int property_set(const char *key, const char *value) +{ + int err; + prop_msg_t msg; + + if (key == 0) return -1; + if (value == 0) value = ""; + if (strlen(key) >= PROP_NAME_MAX -1) return -1; + if (strlen(value) >= PROP_VALUE_MAX -1) return -1; + + memset(&msg, 0, sizeof(msg)); + msg.cmd = PROP_MSG_SETPROP; + strncpy(msg.name, key, sizeof(msg.name)); + strncpy(msg.value, value, sizeof(msg.value)); + + err = send_prop_msg(&msg, NULL, NULL); + if (err < 0) { + return err; + } + + return 0; +} + +// vim:ts=4:sw=4:noexpandtab diff --git a/libhybris/src/properties_p.h b/libhybris/src/properties_p.h new file mode 100644 index 0000000..5b2de85 --- /dev/null +++ b/libhybris/src/properties_p.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2013 Jolla Ltd. + * + * 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. + * + */ + +#ifndef HYBRIS_PROPERTIES +#define HYBRIS_PROPERTIES + +typedef void (*hybris_propcache_list_cb)(const char *key, const char *value, void *cookie); + +void hybris_propcache_list(hybris_propcache_list_cb cb, void *cookie); +char *hybris_propcache_find(const char *key); + +#endif diff --git a/libhybris/src/strlcpy.c b/libhybris/src/strlcpy.c new file mode 100644 index 0000000..d32b659 --- /dev/null +++ b/libhybris/src/strlcpy.c @@ -0,0 +1,51 @@ +/* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */ + +/* + * Copyright (c) 1998 Todd C. Miller + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include + +/* + * Copy src to string dst of size siz. At most siz-1 characters + * will be copied. Always NUL terminates (unless siz == 0). + * Returns strlen(src); if retval >= siz, truncation occurred. + */ +size_t +strlcpy(char *dst, const char *src, size_t siz) +{ + char *d = dst; + const char *s = src; + size_t n = siz; + + /* Copy as many bytes as will fit */ + if (n != 0) { + while (--n != 0) { + if ((*d++ = *s++) == '\0') + break; + } + } + + /* Not enough room in dst, add NUL and traverse rest of src */ + if (n == 0) { + if (siz != 0) + *d = '\0'; /* NUL-terminate dst */ + while (*s++) + ; + } + + return(s - src - 1); /* count does not include NUL */ +} diff --git a/libhybris/src/sysconf.c b/libhybris/src/sysconf.c new file mode 100644 index 0000000..93535cc --- /dev/null +++ b/libhybris/src/sysconf.c @@ -0,0 +1,376 @@ +#include + +/* + * bionic/libc/include/sys/sysconf.h processed with s/define _\(\w*\)\(.*\)/define \1\2\r#ifdef _\1\rMAP_TO_UNISTD(\1),\r#endif/g + */ +#define MAP_TO_UNISTD(a) [a]=_##a +static int sysconf_map[]= { +#define SC_ARG_MAX 0x0000 +#ifdef _SC_ARG_MAX +MAP_TO_UNISTD(SC_ARG_MAX), +#endif +#define SC_BC_BASE_MAX 0x0001 +#ifdef _SC_BC_BASE_MAX +MAP_TO_UNISTD(SC_BC_BASE_MAX), +#endif +#define SC_BC_DIM_MAX 0x0002 +#ifdef _SC_BC_DIM_MAX +MAP_TO_UNISTD(SC_BC_DIM_MAX), +#endif +#define SC_BC_SCALE_MAX 0x0003 +#ifdef _SC_BC_SCALE_MAX +MAP_TO_UNISTD(SC_BC_SCALE_MAX), +#endif +#define SC_BC_STRING_MAX 0x0004 +#ifdef _SC_BC_STRING_MAX +MAP_TO_UNISTD(SC_BC_STRING_MAX), +#endif +#define SC_CHILD_MAX 0x0005 +#ifdef _SC_CHILD_MAX +MAP_TO_UNISTD(SC_CHILD_MAX), +#endif +#define SC_CLK_TCK 0x0006 +#ifdef _SC_CLK_TCK +MAP_TO_UNISTD(SC_CLK_TCK), +#endif +#define SC_COLL_WEIGHTS_MAX 0x0007 +#ifdef _SC_COLL_WEIGHTS_MAX +MAP_TO_UNISTD(SC_COLL_WEIGHTS_MAX), +#endif +#define SC_EXPR_NEST_MAX 0x0008 +#ifdef _SC_EXPR_NEST_MAX +MAP_TO_UNISTD(SC_EXPR_NEST_MAX), +#endif +#define SC_LINE_MAX 0x0009 +#ifdef _SC_LINE_MAX +MAP_TO_UNISTD(SC_LINE_MAX), +#endif +#define SC_NGROUPS_MAX 0x000a +#ifdef _SC_NGROUPS_MAX +MAP_TO_UNISTD(SC_NGROUPS_MAX), +#endif +#define SC_OPEN_MAX 0x000b +#ifdef _SC_OPEN_MAX +MAP_TO_UNISTD(SC_OPEN_MAX), +#endif +#define SC_PASS_MAX 0x000c +#ifdef _SC_PASS_MAX +MAP_TO_UNISTD(SC_PASS_MAX), +#endif +#define SC_2_C_BIND 0x000d +#ifdef _SC_2_C_BIND +MAP_TO_UNISTD(SC_2_C_BIND), +#endif +#define SC_2_C_DEV 0x000e +#ifdef _SC_2_C_DEV +MAP_TO_UNISTD(SC_2_C_DEV), +#endif +#define SC_2_C_VERSION 0x000f +#ifdef _SC_2_C_VERSION +MAP_TO_UNISTD(SC_2_C_VERSION), +#endif +#define SC_2_CHAR_TERM 0x0010 +#ifdef _SC_2_CHAR_TERM +MAP_TO_UNISTD(SC_2_CHAR_TERM), +#endif +#define SC_2_FORT_DEV 0x0011 +#ifdef _SC_2_FORT_DEV +MAP_TO_UNISTD(SC_2_FORT_DEV), +#endif +#define SC_2_FORT_RUN 0x0012 +#ifdef _SC_2_FORT_RUN +MAP_TO_UNISTD(SC_2_FORT_RUN), +#endif +#define SC_2_LOCALEDEF 0x0013 +#ifdef _SC_2_LOCALEDEF +MAP_TO_UNISTD(SC_2_LOCALEDEF), +#endif +#define SC_2_SW_DEV 0x0014 +#ifdef _SC_2_SW_DEV +MAP_TO_UNISTD(SC_2_SW_DEV), +#endif +#define SC_2_UPE 0x0015 +#ifdef _SC_2_UPE +MAP_TO_UNISTD(SC_2_UPE), +#endif +#define SC_2_VERSION 0x0016 +#ifdef _SC_2_VERSION +MAP_TO_UNISTD(SC_2_VERSION), +#endif +#define SC_JOB_CONTROL 0x0017 +#ifdef _SC_JOB_CONTROL +MAP_TO_UNISTD(SC_JOB_CONTROL), +#endif +#define SC_SAVED_IDS 0x0018 +#ifdef _SC_SAVED_IDS +MAP_TO_UNISTD(SC_SAVED_IDS), +#endif +#define SC_VERSION 0x0019 +#ifdef _SC_VERSION +MAP_TO_UNISTD(SC_VERSION), +#endif +#define SC_RE_DUP_MAX 0x001a +#ifdef _SC_RE_DUP_MAX +MAP_TO_UNISTD(SC_RE_DUP_MAX), +#endif +#define SC_STREAM_MAX 0x001b +#ifdef _SC_STREAM_MAX +MAP_TO_UNISTD(SC_STREAM_MAX), +#endif +#define SC_TZNAME_MAX 0x001c +#ifdef _SC_TZNAME_MAX +MAP_TO_UNISTD(SC_TZNAME_MAX), +#endif +#define SC_XOPEN_CRYPT 0x001d +#ifdef _SC_XOPEN_CRYPT +MAP_TO_UNISTD(SC_XOPEN_CRYPT), +#endif +#define SC_XOPEN_ENH_I18N 0x001e +#ifdef _SC_XOPEN_ENH_I18N +MAP_TO_UNISTD(SC_XOPEN_ENH_I18N), +#endif +#define SC_XOPEN_SHM 0x001f +#ifdef _SC_XOPEN_SHM +MAP_TO_UNISTD(SC_XOPEN_SHM), +#endif +#define SC_XOPEN_VERSION 0x0020 +#ifdef _SC_XOPEN_VERSION +MAP_TO_UNISTD(SC_XOPEN_VERSION), +#endif +#define SC_XOPEN_XCU_VERSION 0x0021 +#ifdef _SC_XOPEN_XCU_VERSION +MAP_TO_UNISTD(SC_XOPEN_XCU_VERSION), +#endif +#define SC_XOPEN_REALTIME 0x0022 +#ifdef _SC_XOPEN_REALTIME +MAP_TO_UNISTD(SC_XOPEN_REALTIME), +#endif +#define SC_XOPEN_REALTIME_THREADS 0x0023 +#ifdef _SC_XOPEN_REALTIME_THREADS +MAP_TO_UNISTD(SC_XOPEN_REALTIME_THREADS), +#endif +#define SC_XOPEN_LEGACY 0x0024 +#ifdef _SC_XOPEN_LEGACY +MAP_TO_UNISTD(SC_XOPEN_LEGACY), +#endif +#define SC_ATEXIT_MAX 0x0025 +#ifdef _SC_ATEXIT_MAX +MAP_TO_UNISTD(SC_ATEXIT_MAX), +#endif +#define SC_IOV_MAX 0x0026 +#ifdef _SC_IOV_MAX +MAP_TO_UNISTD(SC_IOV_MAX), +#endif +#define SC_PAGESIZE 0x0027 +#ifdef _SC_PAGESIZE +MAP_TO_UNISTD(SC_PAGESIZE), +#endif +#define SC_PAGE_SIZE 0x0028 +#ifdef _SC_PAGE_SIZE +MAP_TO_UNISTD(SC_PAGE_SIZE), +#endif +#define SC_XOPEN_UNIX 0x0029 +#ifdef _SC_XOPEN_UNIX +MAP_TO_UNISTD(SC_XOPEN_UNIX), +#endif +#define SC_XBS5_ILP32_OFF32 0x002a +#ifdef _SC_XBS5_ILP32_OFF32 +MAP_TO_UNISTD(SC_XBS5_ILP32_OFF32), +#endif +#define SC_XBS5_ILP32_OFFBIG 0x002b +#ifdef _SC_XBS5_ILP32_OFFBIG +MAP_TO_UNISTD(SC_XBS5_ILP32_OFFBIG), +#endif +#define SC_XBS5_LP64_OFF64 0x002c +#ifdef _SC_XBS5_LP64_OFF64 +MAP_TO_UNISTD(SC_XBS5_LP64_OFF64), +#endif +#define SC_XBS5_LPBIG_OFFBIG 0x002d +#ifdef _SC_XBS5_LPBIG_OFFBIG +MAP_TO_UNISTD(SC_XBS5_LPBIG_OFFBIG), +#endif +#define SC_AIO_LISTIO_MAX 0x002e +#ifdef _SC_AIO_LISTIO_MAX +MAP_TO_UNISTD(SC_AIO_LISTIO_MAX), +#endif +#define SC_AIO_MAX 0x002f +#ifdef _SC_AIO_MAX +MAP_TO_UNISTD(SC_AIO_MAX), +#endif +#define SC_AIO_PRIO_DELTA_MAX 0x0030 +#ifdef _SC_AIO_PRIO_DELTA_MAX +MAP_TO_UNISTD(SC_AIO_PRIO_DELTA_MAX), +#endif +#define SC_DELAYTIMER_MAX 0x0031 +#ifdef _SC_DELAYTIMER_MAX +MAP_TO_UNISTD(SC_DELAYTIMER_MAX), +#endif +#define SC_MQ_OPEN_MAX 0x0032 +#ifdef _SC_MQ_OPEN_MAX +MAP_TO_UNISTD(SC_MQ_OPEN_MAX), +#endif +#define SC_MQ_PRIO_MAX 0x0033 +#ifdef _SC_MQ_PRIO_MAX +MAP_TO_UNISTD(SC_MQ_PRIO_MAX), +#endif +#define SC_RTSIG_MAX 0x0034 +#ifdef _SC_RTSIG_MAX +MAP_TO_UNISTD(SC_RTSIG_MAX), +#endif +#define SC_SEM_NSEMS_MAX 0x0035 +#ifdef _SC_SEM_NSEMS_MAX +MAP_TO_UNISTD(SC_SEM_NSEMS_MAX), +#endif +#define SC_SEM_VALUE_MAX 0x0036 +#ifdef _SC_SEM_VALUE_MAX +MAP_TO_UNISTD(SC_SEM_VALUE_MAX), +#endif +#define SC_SIGQUEUE_MAX 0x0037 +#ifdef _SC_SIGQUEUE_MAX +MAP_TO_UNISTD(SC_SIGQUEUE_MAX), +#endif +#define SC_TIMER_MAX 0x0038 +#ifdef _SC_TIMER_MAX +MAP_TO_UNISTD(SC_TIMER_MAX), +#endif +#define SC_ASYNCHRONOUS_IO 0x0039 +#ifdef _SC_ASYNCHRONOUS_IO +MAP_TO_UNISTD(SC_ASYNCHRONOUS_IO), +#endif +#define SC_FSYNC 0x003a +#ifdef _SC_FSYNC +MAP_TO_UNISTD(SC_FSYNC), +#endif +#define SC_MAPPED_FILES 0x003b +#ifdef _SC_MAPPED_FILES +MAP_TO_UNISTD(SC_MAPPED_FILES), +#endif +#define SC_MEMLOCK 0x003c +#ifdef _SC_MEMLOCK +MAP_TO_UNISTD(SC_MEMLOCK), +#endif +#define SC_MEMLOCK_RANGE 0x003d +#ifdef _SC_MEMLOCK_RANGE +MAP_TO_UNISTD(SC_MEMLOCK_RANGE), +#endif +#define SC_MEMORY_PROTECTION 0x003e +#ifdef _SC_MEMORY_PROTECTION +MAP_TO_UNISTD(SC_MEMORY_PROTECTION), +#endif +#define SC_MESSAGE_PASSING 0x003f +#ifdef _SC_MESSAGE_PASSING +MAP_TO_UNISTD(SC_MESSAGE_PASSING), +#endif +#define SC_PRIORITIZED_IO 0x0040 +#ifdef _SC_PRIORITIZED_IO +MAP_TO_UNISTD(SC_PRIORITIZED_IO), +#endif +#define SC_PRIORITY_SCHEDULING 0x0041 +#ifdef _SC_PRIORITY_SCHEDULING +MAP_TO_UNISTD(SC_PRIORITY_SCHEDULING), +#endif +#define SC_REALTIME_SIGNALS 0x0042 +#ifdef _SC_REALTIME_SIGNALS +MAP_TO_UNISTD(SC_REALTIME_SIGNALS), +#endif +#define SC_SEMAPHORES 0x0043 +#ifdef _SC_SEMAPHORES +MAP_TO_UNISTD(SC_SEMAPHORES), +#endif +#define SC_SHARED_MEMORY_OBJECTS 0x0044 +#ifdef _SC_SHARED_MEMORY_OBJECTS +MAP_TO_UNISTD(SC_SHARED_MEMORY_OBJECTS), +#endif +#define SC_SYNCHRONIZED_IO 0x0045 +#ifdef _SC_SYNCHRONIZED_IO +MAP_TO_UNISTD(SC_SYNCHRONIZED_IO), +#endif +#define SC_TIMERS 0x0046 +#ifdef _SC_TIMERS +MAP_TO_UNISTD(SC_TIMERS), +#endif +#define SC_GETGR_R_SIZE_MAX 0x0047 +#ifdef _SC_GETGR_R_SIZE_MAX +MAP_TO_UNISTD(SC_GETGR_R_SIZE_MAX), +#endif +#define SC_GETPW_R_SIZE_MAX 0x0048 +#ifdef _SC_GETPW_R_SIZE_MAX +MAP_TO_UNISTD(SC_GETPW_R_SIZE_MAX), +#endif +#define SC_LOGIN_NAME_MAX 0x0049 +#ifdef _SC_LOGIN_NAME_MAX +MAP_TO_UNISTD(SC_LOGIN_NAME_MAX), +#endif +#define SC_THREAD_DESTRUCTOR_ITERATIONS 0x004a +#ifdef _SC_THREAD_DESTRUCTOR_ITERATIONS +MAP_TO_UNISTD(SC_THREAD_DESTRUCTOR_ITERATIONS), +#endif +#define SC_THREAD_KEYS_MAX 0x004b +#ifdef _SC_THREAD_KEYS_MAX +MAP_TO_UNISTD(SC_THREAD_KEYS_MAX), +#endif +#define SC_THREAD_STACK_MIN 0x004c +#ifdef _SC_THREAD_STACK_MIN +MAP_TO_UNISTD(SC_THREAD_STACK_MIN), +#endif +#define SC_THREAD_THREADS_MAX 0x004d +#ifdef _SC_THREAD_THREADS_MAX +MAP_TO_UNISTD(SC_THREAD_THREADS_MAX), +#endif +#define SC_TTY_NAME_MAX 0x004e +#ifdef _SC_TTY_NAME_MAX +MAP_TO_UNISTD(SC_TTY_NAME_MAX), +#endif + +#define SC_THREADS 0x004f +#ifdef _SC_THREADS +MAP_TO_UNISTD(SC_THREADS), +#endif +#define SC_THREAD_ATTR_STACKADDR 0x0050 +#ifdef _SC_THREAD_ATTR_STACKADDR +MAP_TO_UNISTD(SC_THREAD_ATTR_STACKADDR), +#endif +#define SC_THREAD_ATTR_STACKSIZE 0x0051 +#ifdef _SC_THREAD_ATTR_STACKSIZE +MAP_TO_UNISTD(SC_THREAD_ATTR_STACKSIZE), +#endif +#define SC_THREAD_PRIORITY_SCHEDULING 0x0052 +#ifdef _SC_THREAD_PRIORITY_SCHEDULING +MAP_TO_UNISTD(SC_THREAD_PRIORITY_SCHEDULING), +#endif +#define SC_THREAD_PRIO_INHERIT 0x0053 +#ifdef _SC_THREAD_PRIO_INHERIT +MAP_TO_UNISTD(SC_THREAD_PRIO_INHERIT), +#endif +#define SC_THREAD_PRIO_PROTECT 0x0054 +#ifdef _SC_THREAD_PRIO_PROTECT +MAP_TO_UNISTD(SC_THREAD_PRIO_PROTECT), +#endif +#define SC_THREAD_SAFE_FUNCTIONS 0x0055 +#ifdef _SC_THREAD_SAFE_FUNCTIONS +MAP_TO_UNISTD(SC_THREAD_SAFE_FUNCTIONS), +#endif + +#define SC_NPROCESSORS_CONF 0x0060 +#ifdef _SC_NPROCESSORS_CONF +MAP_TO_UNISTD(SC_NPROCESSORS_CONF), +#endif +#define SC_NPROCESSORS_ONLN 0x0061 +#ifdef _SC_NPROCESSORS_ONLN +MAP_TO_UNISTD(SC_NPROCESSORS_ONLN), +#endif +#define SC_PHYS_PAGES 0x0062 +#ifdef _SC_PHYS_PAGES +MAP_TO_UNISTD(SC_PHYS_PAGES), +#endif +#define SC_AVPHYS_PAGES 0x0063 +#ifdef _SC_AVPHYS_PAGES +MAP_TO_UNISTD(SC_AVPHYS_PAGES), +#endif +}; +#undef MAP_TO_UNISTD + +long my_sysconf(int name) +{ + return sysconf(sysconf_map[name]); +} diff --git a/libs/arm/libEGL.so b/libs/arm/libEGL.so new file mode 100755 index 0000000000000000000000000000000000000000..4277dfa31ede487b0329427432398f611ab0591e GIT binary patch literal 6328 zcmeHLU2GIp6uz@9QlQip5h@a#2r+F!r+>Tc))(7CLE`cwf{~|Tc4lZ-W@px!DN=(W zF=%*bQlmcj2JywjM`H|$#E@u=Q6GH32VcwrsUfB+Bxo8%*6+Ksw+@I&6g7!1p|mWFi|g^oh!t6(ix$*%ijCp{m{_M+HbA3h*vP6q zijux;5`w&fT612X-xJ_B(J^|w$@UW86&z3L+iyyACZC#$+==VJ%z zzliPOp5v=r!gv(7z(!W>52F2ljgJ^&&w$}ajQLI&lpN_d9O%Dqzkn@^hH?Y>{_OCw zu*(5)e2Uhg(5)0m>UruqAB@Y*+A}QZd?fl)Ea-eBx-d=qq-9#Md$JUZ!k+OR!YdVR zBMK<3BofpT+_92xd8JoeVY-eLTd)?R$c$nujA8N}HgY`TL3kaKIcBbtmYt%THo0aX z$0xp9_~hDKr@nvbh0V0{T~hLWC=7~AL_b_dd}i>b(m(U&`)jzYNslH%)<1+Y*9Xa7 zORpJ$WhjYjbt6g(b$O#M7atR113J1*iB6lVJ@d`gbMtN0xoXRePv>VhqtO?0SGBKZ zug>1SIIqfQP;M6I=7pH6{$8v7bQA;GQtQ3)7s^5$xQ4RU4qddLztRd^tDayp`dsyA zV5+rRtq*N3)@r9Y*9J8r(1<`I0*weXBG8CHBLa;GG$PQ5z&{b-_xqc;Fq{JO-mrl0 zb>0v7z0dFZQ5bnA=%{lSbl#CV!Mqpn&i6;H7O*Yv9^c@jdkrMp^QN#J&Q?Pn0snTV z7Mz97yU9n8{60SbrlhY;VBRBmHK1P&L{7LXR3|@5YSRcvT`CKlWAIas1 z^TXNVfHgRfbBC>5|4?yc#K{llb0Z`6(6Mg4YiTTn!t;BRexnmU@3D;Ss=D00@35E* zJV)<0`Ug0r9y~19Dwc${6~zZuuN-U9R%KQ#o$vEPO5X~d>yKmBaHAZ8q(82mjA#`*Ah|YKPyI0D z?9w1KaSVDPrH9a&`(Vz4_uAJXpH9`!LFf8RNRznHl>VNog5>-@fP4r2w?bwzt>QDt zrSWFk#JA8nUpYS1Ux$7kx(-SFuaGKFqh;D-Iq-8op8~T=OOOJIBr9bjfo}f4W?BLush*0O1F*Yu4AjS#n%IPE0b- zAuE~RkOki=yTUD3;u#FhtS3+EBMHryL#tAO^Yr+jxaH~Ci_B?1#I&N=4b9{3jHoAG z%$-N}jqTmDLzue@`^U!$=Kfu~o|`yi9vT}jOqiHC9HjCz%S^@y1NoYgX@#LRBaE?w zdktiHoRh*pwkH{;O+v|yJ0i#?j99<>2Ri;V5h8T>aJF%BYU*UC0iKL6nc)WB1%fm zl&LS9wgb5mjKAT#@{P&?_XLT1i01)u+C1A)L4`V|jj(P=5f2dCK)<_I0A22PIiQ#!c z9MAX#;MiV~YV$P=oC9$(&kfvSU58lemuHFUm;b2?aISKf3P-uMj_adBLh!gY6wwFy zZ7|ofq6@(B{VG!9+XDl}#%W8s44k19NctlE2v+ZsdNV$tE}?P*%KWaPKQt9TfH_x1 apX1|dLOFp^6)&Tl#;w9+e^HH6xW54mxE%EW literal 0 HcmV?d00001 diff --git a/libs/arm/libGLESv1_CM.so b/libs/arm/libGLESv1_CM.so new file mode 100755 index 0000000000000000000000000000000000000000..4277dfa31ede487b0329427432398f611ab0591e GIT binary patch literal 6328 zcmeHLU2GIp6uz@9QlQip5h@a#2r+F!r+>Tc))(7CLE`cwf{~|Tc4lZ-W@px!DN=(W zF=%*bQlmcj2JywjM`H|$#E@u=Q6GH32VcwrsUfB+Bxo8%*6+Ksw+@I&6g7!1p|mWFi|g^oh!t6(ix$*%ijCp{m{_M+HbA3h*vP6q zijux;5`w&fT612X-xJ_B(J^|w$@UW86&z3L+iyyACZC#$+==VJ%z zzliPOp5v=r!gv(7z(!W>52F2ljgJ^&&w$}ajQLI&lpN_d9O%Dqzkn@^hH?Y>{_OCw zu*(5)e2Uhg(5)0m>UruqAB@Y*+A}QZd?fl)Ea-eBx-d=qq-9#Md$JUZ!k+OR!YdVR zBMK<3BofpT+_92xd8JoeVY-eLTd)?R$c$nujA8N}HgY`TL3kaKIcBbtmYt%THo0aX z$0xp9_~hDKr@nvbh0V0{T~hLWC=7~AL_b_dd}i>b(m(U&`)jzYNslH%)<1+Y*9Xa7 zORpJ$WhjYjbt6g(b$O#M7atR113J1*iB6lVJ@d`gbMtN0xoXRePv>VhqtO?0SGBKZ zug>1SIIqfQP;M6I=7pH6{$8v7bQA;GQtQ3)7s^5$xQ4RU4qddLztRd^tDayp`dsyA zV5+rRtq*N3)@r9Y*9J8r(1<`I0*weXBG8CHBLa;GG$PQ5z&{b-_xqc;Fq{JO-mrl0 zb>0v7z0dFZQ5bnA=%{lSbl#CV!Mqpn&i6;H7O*Yv9^c@jdkrMp^QN#J&Q?Pn0snTV z7Mz97yU9n8{60SbrlhY;VBRBmHK1P&L{7LXR3|@5YSRcvT`CKlWAIas1 z^TXNVfHgRfbBC>5|4?yc#K{llb0Z`6(6Mg4YiTTn!t;BRexnmU@3D;Ss=D00@35E* zJV)<0`Ug0r9y~19Dwc${6~zZuuN-U9R%KQ#o$vEPO5X~d>yKmBaHAZ8q(82mjA#`*Ah|YKPyI0D z?9w1KaSVDPrH9a&`(Vz4_uAJXpH9`!LFf8RNRznHl>VNog5>-@fP4r2w?bwzt>QDt zrSWFk#JA8nUpYS1Ux$7kx(-SFuaGKFqh;D-Iq-8op8~T=OOOJIBr9bjfo}f4W?BLush*0O1F*Yu4AjS#n%IPE0b- zAuE~RkOki=yTUD3;u#FhtS3+EBMHryL#tAO^Yr+jxaH~Ci_B?1#I&N=4b9{3jHoAG z%$-N}jqTmDLzue@`^U!$=Kfu~o|`yi9vT}jOqiHC9HjCz%S^@y1NoYgX@#LRBaE?w zdktiHoRh*pwkH{;O+v|yJ0i#?j99<>2Ri;V5h8T>aJF%BYU*UC0iKL6nc)WB1%fm zl&LS9wgb5mjKAT#@{P&?_XLT1i01)u+C1A)L4`V|jj(P=5f2dCK)<_I0A22PIiQ#!c z9MAX#;MiV~YV$P=oC9$(&kfvSU58lemuHFUm;b2?aISKf3P-uMj_adBLh!gY6wwFy zZ7|ofq6@(B{VG!9+XDl}#%W8s44k19NctlE2v+ZsdNV$tE}?P*%KWaPKQt9TfH_x1 apX1|dLOFp^6)&Tl#;w9+e^HH6xW54mxE%EW literal 0 HcmV?d00001 diff --git a/libs/arm/libOpenSLES.so b/libs/arm/libOpenSLES.so new file mode 100755 index 0000000000000000000000000000000000000000..4277dfa31ede487b0329427432398f611ab0591e GIT binary patch literal 6328 zcmeHLU2GIp6uz@9QlQip5h@a#2r+F!r+>Tc))(7CLE`cwf{~|Tc4lZ-W@px!DN=(W zF=%*bQlmcj2JywjM`H|$#E@u=Q6GH32VcwrsUfB+Bxo8%*6+Ksw+@I&6g7!1p|mWFi|g^oh!t6(ix$*%ijCp{m{_M+HbA3h*vP6q zijux;5`w&fT612X-xJ_B(J^|w$@UW86&z3L+iyyACZC#$+==VJ%z zzliPOp5v=r!gv(7z(!W>52F2ljgJ^&&w$}ajQLI&lpN_d9O%Dqzkn@^hH?Y>{_OCw zu*(5)e2Uhg(5)0m>UruqAB@Y*+A}QZd?fl)Ea-eBx-d=qq-9#Md$JUZ!k+OR!YdVR zBMK<3BofpT+_92xd8JoeVY-eLTd)?R$c$nujA8N}HgY`TL3kaKIcBbtmYt%THo0aX z$0xp9_~hDKr@nvbh0V0{T~hLWC=7~AL_b_dd}i>b(m(U&`)jzYNslH%)<1+Y*9Xa7 zORpJ$WhjYjbt6g(b$O#M7atR113J1*iB6lVJ@d`gbMtN0xoXRePv>VhqtO?0SGBKZ zug>1SIIqfQP;M6I=7pH6{$8v7bQA;GQtQ3)7s^5$xQ4RU4qddLztRd^tDayp`dsyA zV5+rRtq*N3)@r9Y*9J8r(1<`I0*weXBG8CHBLa;GG$PQ5z&{b-_xqc;Fq{JO-mrl0 zb>0v7z0dFZQ5bnA=%{lSbl#CV!Mqpn&i6;H7O*Yv9^c@jdkrMp^QN#J&Q?Pn0snTV z7Mz97yU9n8{60SbrlhY;VBRBmHK1P&L{7LXR3|@5YSRcvT`CKlWAIas1 z^TXNVfHgRfbBC>5|4?yc#K{llb0Z`6(6Mg4YiTTn!t;BRexnmU@3D;Ss=D00@35E* zJV)<0`Ug0r9y~19Dwc${6~zZuuN-U9R%KQ#o$vEPO5X~d>yKmBaHAZ8q(82mjA#`*Ah|YKPyI0D z?9w1KaSVDPrH9a&`(Vz4_uAJXpH9`!LFf8RNRznHl>VNog5>-@fP4r2w?bwzt>QDt zrSWFk#JA8nUpYS1Ux$7kx(-SFuaGKFqh;D-Iq-8op8~T=OOOJIBr9bjfo}f4W?BLush*0O1F*Yu4AjS#n%IPE0b- zAuE~RkOki=yTUD3;u#FhtS3+EBMHryL#tAO^Yr+jxaH~Ci_B?1#I&N=4b9{3jHoAG z%$-N}jqTmDLzue@`^U!$=Kfu~o|`yi9vT}jOqiHC9HjCz%S^@y1NoYgX@#LRBaE?w zdktiHoRh*pwkH{;O+v|yJ0i#?j99<>2Ri;V5h8T>aJF%BYU*UC0iKL6nc)WB1%fm zl&LS9wgb5mjKAT#@{P&?_XLT1i01)u+C1A)L4`V|jj(P=5f2dCK)<_I0A22PIiQ#!c z9MAX#;MiV~YV$P=oC9$(&kfvSU58lemuHFUm;b2?aISKf3P-uMj_adBLh!gY6wwFy zZ7|ofq6@(B{VG!9+XDl}#%W8s44k19NctlE2v+ZsdNV$tE}?P*%KWaPKQt9TfH_x1 apX1|dLOFp^6)&Tl#;w9+e^HH6xW54mxE%EW literal 0 HcmV?d00001 diff --git a/libs/arm/libandroid.so b/libs/arm/libandroid.so new file mode 100755 index 0000000000000000000000000000000000000000..4277dfa31ede487b0329427432398f611ab0591e GIT binary patch literal 6328 zcmeHLU2GIp6uz@9QlQip5h@a#2r+F!r+>Tc))(7CLE`cwf{~|Tc4lZ-W@px!DN=(W zF=%*bQlmcj2JywjM`H|$#E@u=Q6GH32VcwrsUfB+Bxo8%*6+Ksw+@I&6g7!1p|mWFi|g^oh!t6(ix$*%ijCp{m{_M+HbA3h*vP6q zijux;5`w&fT612X-xJ_B(J^|w$@UW86&z3L+iyyACZC#$+==VJ%z zzliPOp5v=r!gv(7z(!W>52F2ljgJ^&&w$}ajQLI&lpN_d9O%Dqzkn@^hH?Y>{_OCw zu*(5)e2Uhg(5)0m>UruqAB@Y*+A}QZd?fl)Ea-eBx-d=qq-9#Md$JUZ!k+OR!YdVR zBMK<3BofpT+_92xd8JoeVY-eLTd)?R$c$nujA8N}HgY`TL3kaKIcBbtmYt%THo0aX z$0xp9_~hDKr@nvbh0V0{T~hLWC=7~AL_b_dd}i>b(m(U&`)jzYNslH%)<1+Y*9Xa7 zORpJ$WhjYjbt6g(b$O#M7atR113J1*iB6lVJ@d`gbMtN0xoXRePv>VhqtO?0SGBKZ zug>1SIIqfQP;M6I=7pH6{$8v7bQA;GQtQ3)7s^5$xQ4RU4qddLztRd^tDayp`dsyA zV5+rRtq*N3)@r9Y*9J8r(1<`I0*weXBG8CHBLa;GG$PQ5z&{b-_xqc;Fq{JO-mrl0 zb>0v7z0dFZQ5bnA=%{lSbl#CV!Mqpn&i6;H7O*Yv9^c@jdkrMp^QN#J&Q?Pn0snTV z7Mz97yU9n8{60SbrlhY;VBRBmHK1P&L{7LXR3|@5YSRcvT`CKlWAIas1 z^TXNVfHgRfbBC>5|4?yc#K{llb0Z`6(6Mg4YiTTn!t;BRexnmU@3D;Ss=D00@35E* zJV)<0`Ug0r9y~19Dwc${6~zZuuN-U9R%KQ#o$vEPO5X~d>yKmBaHAZ8q(82mjA#`*Ah|YKPyI0D z?9w1KaSVDPrH9a&`(Vz4_uAJXpH9`!LFf8RNRznHl>VNog5>-@fP4r2w?bwzt>QDt zrSWFk#JA8nUpYS1Ux$7kx(-SFuaGKFqh;D-Iq-8op8~T=OOOJIBr9bjfo}f4W?BLush*0O1F*Yu4AjS#n%IPE0b- zAuE~RkOki=yTUD3;u#FhtS3+EBMHryL#tAO^Yr+jxaH~Ci_B?1#I&N=4b9{3jHoAG z%$-N}jqTmDLzue@`^U!$=Kfu~o|`yi9vT}jOqiHC9HjCz%S^@y1NoYgX@#LRBaE?w zdktiHoRh*pwkH{;O+v|yJ0i#?j99<>2Ri;V5h8T>aJF%BYU*UC0iKL6nc)WB1%fm zl&LS9wgb5mjKAT#@{P&?_XLT1i01)u+C1A)L4`V|jj(P=5f2dCK)<_I0A22PIiQ#!c z9MAX#;MiV~YV$P=oC9$(&kfvSU58lemuHFUm;b2?aISKf3P-uMj_adBLh!gY6wwFy zZ7|ofq6@(B{VG!9+XDl}#%W8s44k19NctlE2v+ZsdNV$tE}?P*%KWaPKQt9TfH_x1 apX1|dLOFp^6)&Tl#;w9+e^HH6xW54mxE%EW literal 0 HcmV?d00001 diff --git a/libs/arm/libc.so b/libs/arm/libc.so new file mode 100755 index 0000000000000000000000000000000000000000..3d0f9834b0171a40f957f13d16a71019221eaf98 GIT binary patch literal 678432 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

*^|11M~3a7hiiAd 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 gJ@6FrYm#{o_Nw%j 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

w&o_ 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 apX1|dLOFp^6)&Tl#;w9+e^HH6xW54mxE%EW literal 0 HcmV?d00001 diff --git a/libs/arm/libm.so b/libs/arm/libm.so new file mode 100755 index 0000000000000000000000000000000000000000..593bbcccf32dd5772639c3baf46b08e47418f6fe GIT binary patch literal 132824 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 literal 0 HcmV?d00001 diff --git a/libs/x86/libGLESv1_CM.so b/libs/x86/libGLESv1_CM.so new file mode 100755 index 0000000000000000000000000000000000000000..e08754282b7e43eab2b3c20a6ced157215929755 GIT binary patch literal 5156 zcmeI0&1+m$7{<>eqaAISMjNm;QLi#+`r##sQCkzRX=17(wM{CBQ6@JtH<_XH5oWG2 zDFs`i#S#Wwi0eQ%qOMe2xhTxmMG*ghA{8dkMU^gs7RTpzXHGJW8{N2?mpu3Vdd_>! zeeaoY&;9U~Hzp&Ih_TXXI*s*)6^uUA$P63D>@oeO$Lu%vD@4xXhHMaR!j6|4%B&LL zKD=%d*1s7y=H}xKI2r(`OTI(uw(_@?2V3$1dFD9tYmiRJuozVgkOOCxm->f<^%b2` zzIFaS%?)h*-2;`{mWO3&iQ9tz*tTa3zAHqXMzGubR)2n%Keo#^$z*ETOU`EtUM_pV zZ@OOKFJ}We<-kjwPo^^Glk;9SXOe!}3p~Z=%4KpTar{EsU6GY`1!?P1-n!0*uz=`?mc`y(yaoA`{$YPykaDshQ9NJ#w)Rf7V$2+wOOLpzomNp zS~xDWx^&G5X7ff}a*b|gNN;Y0eh)su&Fk`~YhTK|Ts^5KSJH`EW%YpktIDoKGUatP$cTc^EL`bv7{8?+#S_HG;<43^H{;G!JT_L1M;UWYm{9(O)_i&=A1IzyzPBac z{aPbWGe2wQc^U}wd?C#KRj;3rHu2bGyzBLSdxPk*dHLYT;i1G+gpo*Z=g3jjW{-@D z|Fi6i(zDWEOTQ}pqx2=|E@54O&+`ilv@h)rv^&u5K)VC&4zxSa?m)W(?GF5p9a!h^ z(iF}!HJwukagumM7?sl_%~2N|m2b~^yr*+G`J-MhGKP2H9=*%&mFB&gGt)=%ACz7e zc)z|YUw>v&Kufzt%%D&Fy#=TYI7eBR@!#T0d1QB|qnTW&aShSllrNEmrZhECqUdcCfP%>`DD`$+WN@NW2j#e7z2<05j7UkBDVGiitXmnXDgO>Nde04XZk literal 0 HcmV?d00001 diff --git a/libs/x86/libOpenSLES.so b/libs/x86/libOpenSLES.so new file mode 100755 index 0000000000000000000000000000000000000000..e08754282b7e43eab2b3c20a6ced157215929755 GIT binary patch literal 5156 zcmeI0&1+m$7{<>eqaAISMjNm;QLi#+`r##sQCkzRX=17(wM{CBQ6@JtH<_XH5oWG2 zDFs`i#S#Wwi0eQ%qOMe2xhTxmMG*ghA{8dkMU^gs7RTpzXHGJW8{N2?mpu3Vdd_>! zeeaoY&;9U~Hzp&Ih_TXXI*s*)6^uUA$P63D>@oeO$Lu%vD@4xXhHMaR!j6|4%B&LL zKD=%d*1s7y=H}xKI2r(`OTI(uw(_@?2V3$1dFD9tYmiRJuozVgkOOCxm->f<^%b2` zzIFaS%?)h*-2;`{mWO3&iQ9tz*tTa3zAHqXMzGubR)2n%Keo#^$z*ETOU`EtUM_pV zZ@OOKFJ}We<-kjwPo^^Glk;9SXOe!}3p~Z=%4KpTar{EsU6GY`1!?P1-n!0*uz=`?mc`y(yaoA`{$YPykaDshQ9NJ#w)Rf7V$2+wOOLpzomNp zS~xDWx^&G5X7ff}a*b|gNN;Y0eh)su&Fk`~YhTK|Ts^5KSJH`EW%YpktIDoKGUatP$cTc^EL`bv7{8?+#S_HG;<43^H{;G!JT_L1M;UWYm{9(O)_i&=A1IzyzPBac z{aPbWGe2wQc^U}wd?C#KRj;3rHu2bGyzBLSdxPk*dHLYT;i1G+gpo*Z=g3jjW{-@D z|Fi6i(zDWEOTQ}pqx2=|E@54O&+`ilv@h)rv^&u5K)VC&4zxSa?m)W(?GF5p9a!h^ z(iF}!HJwukagumM7?sl_%~2N|m2b~^yr*+G`J-MhGKP2H9=*%&mFB&gGt)=%ACz7e zc)z|YUw>v&Kufzt%%D&Fy#=TYI7eBR@!#T0d1QB|qnTW&aShSllrNEmrZhECqUdcCfP%>`DD`$+WN@NW2j#e7z2<05j7UkBDVGiitXmnXDgO>Nde04XZk literal 0 HcmV?d00001 diff --git a/libs/x86/libandroid.so b/libs/x86/libandroid.so new file mode 100755 index 0000000000000000000000000000000000000000..e08754282b7e43eab2b3c20a6ced157215929755 GIT binary patch literal 5156 zcmeI0&1+m$7{<>eqaAISMjNm;QLi#+`r##sQCkzRX=17(wM{CBQ6@JtH<_XH5oWG2 zDFs`i#S#Wwi0eQ%qOMe2xhTxmMG*ghA{8dkMU^gs7RTpzXHGJW8{N2?mpu3Vdd_>! zeeaoY&;9U~Hzp&Ih_TXXI*s*)6^uUA$P63D>@oeO$Lu%vD@4xXhHMaR!j6|4%B&LL zKD=%d*1s7y=H}xKI2r(`OTI(uw(_@?2V3$1dFD9tYmiRJuozVgkOOCxm->f<^%b2` zzIFaS%?)h*-2;`{mWO3&iQ9tz*tTa3zAHqXMzGubR)2n%Keo#^$z*ETOU`EtUM_pV zZ@OOKFJ}We<-kjwPo^^Glk;9SXOe!}3p~Z=%4KpTar{EsU6GY`1!?P1-n!0*uz=`?mc`y(yaoA`{$YPykaDshQ9NJ#w)Rf7V$2+wOOLpzomNp zS~xDWx^&G5X7ff}a*b|gNN;Y0eh)su&Fk`~YhTK|Ts^5KSJH`EW%YpktIDoKGUatP$cTc^EL`bv7{8?+#S_HG;<43^H{;G!JT_L1M;UWYm{9(O)_i&=A1IzyzPBac z{aPbWGe2wQc^U}wd?C#KRj;3rHu2bGyzBLSdxPk*dHLYT;i1G+gpo*Z=g3jjW{-@D z|Fi6i(zDWEOTQ}pqx2=|E@54O&+`ilv@h)rv^&u5K)VC&4zxSa?m)W(?GF5p9a!h^ z(iF}!HJwukagumM7?sl_%~2N|m2b~^yr*+G`J-MhGKP2H9=*%&mFB&gGt)=%ACz7e zc)z|YUw>v&Kufzt%%D&Fy#=TYI7eBR@!#T0d1QB|qnTW&aShSllrNEmrZhECqUdcCfP%>`DD`$+WN@NW2j#e7z2<05j7UkBDVGiitXmnXDgO>Nde04XZk literal 0 HcmV?d00001 diff --git a/libs/x86/libc.so b/libs/x86/libc.so new file mode 100644 index 0000000000000000000000000000000000000000..d0eb5481aeb9bf0d2d5150d2fff4e22a7264b8c4 GIT binary patch literal 1068921 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

    ;-PjuV(;#} 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 z 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

    qMQKg$2$ZI~DCw>B#B8_lJ*}xcAGx&Z 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 E4?1y^4*&oF literal 0 HcmV?d00001 diff --git a/libs/x86/liblog.so b/libs/x86/liblog.so new file mode 100755 index 0000000000000000000000000000000000000000..e08754282b7e43eab2b3c20a6ced157215929755 GIT binary patch literal 5156 zcmeI0&1+m$7{<>eqaAISMjNm;QLi#+`r##sQCkzRX=17(wM{CBQ6@JtH<_XH5oWG2 zDFs`i#S#Wwi0eQ%qOMe2xhTxmMG*ghA{8dkMU^gs7RTpzXHGJW8{N2?mpu3Vdd_>! zeeaoY&;9U~Hzp&Ih_TXXI*s*)6^uUA$P63D>@oeO$Lu%vD@4xXhHMaR!j6|4%B&LL zKD=%d*1s7y=H}xKI2r(`OTI(uw(_@?2V3$1dFD9tYmiRJuozVgkOOCxm->f<^%b2` zzIFaS%?)h*-2;`{mWO3&iQ9tz*tTa3zAHqXMzGubR)2n%Keo#^$z*ETOU`EtUM_pV zZ@OOKFJ}We<-kjwPo^^Glk;9SXOe!}3p~Z=%4KpTar{EsU6GY`1!?P1-n!0*uz=`?mc`y(yaoA`{$YPykaDshQ9NJ#w)Rf7V$2+wOOLpzomNp zS~xDWx^&G5X7ff}a*b|gNN;Y0eh)su&Fk`~YhTK|Ts^5KSJH`EW%YpktIDoKGUatP$cTc^EL`bv7{8?+#S_HG;<43^H{;G!JT_L1M;UWYm{9(O)_i&=A1IzyzPBac z{aPbWGe2wQc^U}wd?C#KRj;3rHu2bGyzBLSdxPk*dHLYT;i1G+gpo*Z=g3jjW{-@D z|Fi6i(zDWEOTQ}pqx2=|E@54O&+`ilv@h)rv^&u5K)VC&4zxSa?m)W(?GF5p9a!h^ z(iF}!HJwukagumM7?sl_%~2N|m2b~^yr*+G`J-MhGKP2H9=*%&mFB&gGt)=%ACz7e zc)z|YUw>v&Kufzt%%D&Fy#=TYI7eBR@!#T0d1QB|qnTW&aShSllrNEmrZhECqUdcCfP%>`DD`$+WN@NW2j#e7z2<05j7UkBDVGiitXmnXDgO>Nde04XZk literal 0 HcmV?d00001 diff --git a/libs/x86/libm.so b/libs/x86/libm.so new file mode 100644 index 0000000000000000000000000000000000000000..e5d3916732819615cfb49d6f31c51120fdb197c3 GIT binary patch literal 542624 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�#CT;%q446?KW$8d=1v{ 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 Qe!C4nQpCT^%bO4WFT=Sw+W-In literal 0 HcmV?d00001 diff --git a/libs/x86/libstdc++.so b/libs/x86/libstdc++.so new file mode 100644 index 0000000000000000000000000000000000000000..4177996dd6c7cbd41c56514dd44214d4ffceb38c GIT binary patch literal 13404 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 bSIQyBy)RdC_D$MmG8~ZmeohFOe3t(PYo>*? literal 0 HcmV?d00001 diff --git a/ninecraft/CMakeLists.txt b/ninecraft/CMakeLists.txt new file mode 100644 index 0000000..50a45ea --- /dev/null +++ b/ninecraft/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required (VERSION 3.1) + +project(ninecraft) + +include(../cmake/FindGLFW3.cmake) + +find_package(PNG REQUIRED) +find_package(OpenAL REQUIRED) + +include_directories(../libhybris/include) +include_directories(../glad/include) + +file(GLOB SOURCE_FILES src/*.cpp) + +add_executable(ninecraft ${GLAD_SOURCES} ${SOURCE_FILES}) +target_include_directories(ninecraft PUBLIC include/) +target_link_libraries(ninecraft ${CMAKE_DL_LIBS} hybris glad ${GLFW3_LIBRARY} ${OPENAL_LIBRARY} ${PNG_LIBRARIES}) +include_directories(ninecraft PUBLIC include/) +if (NOT ${IS_ARM_BUILD}) +set_target_properties(ninecraft PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32") +endif() \ No newline at end of file diff --git a/ninecraft/include/ninecraft/AppPlatform_linux.hpp b/ninecraft/include/ninecraft/AppPlatform_linux.hpp new file mode 100644 index 0000000..93f4ec6 --- /dev/null +++ b/ninecraft/include/ninecraft/AppPlatform_linux.hpp @@ -0,0 +1,86 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include "textures.hpp" +#include + +typedef struct { + void **vtable; + unsigned char filler[0xd0]; + void *handle; +} AppPlatform_linux; + +typedef struct { + char *data; + int size; +} asset_file; + +enum class TextureFormat { + U8888, U888, U565, U5551, U4444, C565, C5551, C4444 +}; + +void AppPlatform_linux$AppPlatform_linux(AppPlatform_linux *app_platform, void *handle); + +void AppPlatform_linux$_tick(AppPlatform_linux *app_platform); + +void AppPlatform_linux$buyGame(AppPlatform_linux *app_platform); + +int32_t AppPlatform_linux$checkLicense(AppPlatform_linux *app_platform); + +void AppPlatform_linux$createUserInput(AppPlatform_linux *app_platform); + +void AppPlatform_linux$finish(AppPlatform_linux *app_platform); + +android_string AppPlatform_linux$getDateString(AppPlatform_linux *app_platform, unsigned int seconds); + +int32_t AppPlatform_linux$getKeyFromKeyCode(AppPlatform_linux *app_platform, unsigned int key_code, unsigned int meta_state, unsigned int device_id); + +int AppPlatform_linux$getOptionStrings(AppPlatform_linux *app_platform); + +float AppPlatform_linux$getPixelsPerMillimeter(AppPlatform_linux *app_platform); + +android_string AppPlatform_linux$getPlatformStringVar(AppPlatform_linux *app_platform, int zero); + +int AppPlatform_linux$getScreenHeight(AppPlatform_linux *app_platform); + +int AppPlatform_linux$getScreenWidth(AppPlatform_linux *app_platform); + +android_string *AppPlatform_linux$getUserInput(AppPlatform_linux *app_platform); + +int AppPlatform_linux$getUserInputStatus(AppPlatform_linux *app_platform); + +bool AppPlatform_linux$hasBuyButtonWhenInvalidLicense(AppPlatform_linux *app_platform); + +void AppPlatform_linux$hideKeyboard(AppPlatform_linux *app_platform); + +bool AppPlatform_linux$isKeyboardVisible(AppPlatform_linux *app_platform); + +bool AppPlatform_linux$isNetworkEnabled(AppPlatform_linux *app_platform); + +bool AppPlatform_linux$isPowerVR(AppPlatform_linux *app_platform); + +bool AppPlatform_linux$isTouchscreen(AppPlatform_linux *app_platform); + +TextureData AppPlatform_linux$loadTexture(AppPlatform_linux *app_platform, void *path_str, bool alpha); + +void AppPlatform_linux$playSound(AppPlatform_linux *app_platform, const android_string& sound_name, float volume, float pitch); + +asset_file AppPlatform_linux$readAssetFile(AppPlatform_linux *app_platform, void *path_str); + +void AppPlatform_linux$saveScreenshot(AppPlatform_linux *app_platform, const android_string& path, int32_t width, int32_t height); + +void AppPlatform_linux$showDialog(AppPlatform_linux *app_platform, int32_t dialog_id); + +void AppPlatform_linux$showKeyboard(AppPlatform_linux *app_platform); + +void AppPlatform_linux$uploadPlatformDependentData(AppPlatform_linux *app_platform, int32_t size, void *data); + +void AppPlatform_linux$vibrate(AppPlatform_linux *app_platform, int32_t milliseconds); + +void AppPlatform_linux$destroy(AppPlatform_linux *app_platform); \ No newline at end of file diff --git a/ninecraft/include/ninecraft/android_string.hpp b/ninecraft/include/ninecraft/android_string.hpp new file mode 100644 index 0000000..5e18b79 --- /dev/null +++ b/ninecraft/include/ninecraft/android_string.hpp @@ -0,0 +1,7 @@ +#pragma once + +typedef struct { + char filler[4]; +} android_string; + +char *to_str(void *str, char *cstr, void *handle); \ No newline at end of file diff --git a/ninecraft/include/ninecraft/audio_engine.hpp b/ninecraft/include/ninecraft/audio_engine.hpp new file mode 100644 index 0000000..46d5823 --- /dev/null +++ b/ninecraft/include/ninecraft/audio_engine.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int audio_engine_create_audio_device(ALCdevice **device, ALCcontext **context); + +int audio_engine_destroy_audio_device(ALCdevice **device, ALCcontext **context); + +ALuint audio_engine_create_sound_effect(void *symbol); + +void audio_engine_play(ALuint buffer); + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/ninecraft/include/ninecraft/hooks.hpp b/ninecraft/include/ninecraft/hooks.hpp new file mode 100644 index 0000000..ee02f3f --- /dev/null +++ b/ninecraft/include/ninecraft/hooks.hpp @@ -0,0 +1,7 @@ +#pragma once + +#include + +typedef void (*NinecraftApp$construct)(void *); + +typedef void (*NinecraftApp$init)(void *); \ No newline at end of file diff --git a/ninecraft/include/ninecraft/minecraft_keys.hpp b/ninecraft/include/ninecraft/minecraft_keys.hpp new file mode 100644 index 0000000..1899344 --- /dev/null +++ b/ninecraft/include/ninecraft/minecraft_keys.hpp @@ -0,0 +1,33 @@ +#pragma once + +/* + key.forward - MCKEY_FORWARD + key.left - MCKEY_STEP_LEFT + key.back - MCKEY_BACKWARDS + key.right - MCKEY_STEP_RIGHT + key.jump - MCKEY_JUMP + key.inventory - MCKEY_INVENTORY + key.crafting - MCKEY_CRAFTING + key.drop + key.chat + key.fog + key.sneak + key.destroy - MCKEY_BREAK + key.use - MCKEY_PLACE + key.menu.next - MCKEY_HOTBAR_NEXT + key.menu.previous - MCKEY_HOTBAR_PREVIOUS + key.menu.cancel +*/ + +#define MCKEY_HOTBAR_NEXT 4 +#define MCKEY_FORWARD 19 +#define MCKEY_BACKWARDS 20 +#define MCKEY_STEP_LEFT 21 +#define MCKEY_STEP_RIGHT 22 +#define MCKEY_JUMP 23 +#define MCKEY_PAUSE 82 +#define MCKEY_HOTBAR_PREVIOUS 99 +#define MCKEY_INVENTORY 100 +#define MCKEY_BREAK 102 +#define MCKEY_PLACE 103 +#define MCKEY_CRAFTING 109 \ No newline at end of file diff --git a/ninecraft/include/ninecraft/symbols.hpp b/ninecraft/include/ninecraft/symbols.hpp new file mode 100644 index 0000000..7b36c08 --- /dev/null +++ b/ninecraft/include/ninecraft/symbols.hpp @@ -0,0 +1,612 @@ +#ifndef MCPER_SYMBOLS +#define MCPER_SYMBOLS + +const char *gles_1_symbols[] = { + "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", + "glColorPointerBounds", + "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", + "glFlush", + "glFogf", + "glFogfv", + "glFogx", + "glFogxOES", + "glFogxv", + "glFogxvOES", + "glFramebufferRenderbufferOES", + "glFramebufferTexture2DMultisampleIMG", + "glFramebufferTexture2DOES", + "glFrontFace", + "glFrustumf", + "glFrustumfOES", + "glFrustumx", + "glFrustumxOES", + "glGenBuffers", + "glGenFencesNV", + "glGenFramebuffersOES", + "glGenRenderbuffersOES", + "glGenTextures", + "glGenVertexArraysOES", + "glGenerateMipmapOES", + "glGetBooleanv", + "glGetBufferParameteriv", + "glGetBufferPointervOES", + "glGetClipPlanef", + "glGetClipPlanefOES", + "glGetClipPlanex", + "glGetClipPlanexOES", + "glGetDriverControlStringQCOM", + "glGetDriverControlsQCOM", + "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", + "glLightModelf", + "glLightModelfv", + "glLightModelx", + "glLightModelxOES", + "glLightModelxv", + "glLightModelxvOES", + "glLightf", + "glLightfv", + "glLightx", + "glLightxOES", + "glLightxv", + "glLightxvOES", + "glLineWidth", + "glLineWidthx", + "glLineWidthxOES", + "glLoadIdentity", + "glLoadMatrixf", + "glLoadMatrixx", + "glLoadMatrixxOES", + "glLoadPaletteFromModelViewMatrixOES", + "glLogicOp", + "glMapBufferOES", + "glMaterialf", + "glMaterialfv", + "glMaterialx", + "glMaterialxOES", + "glMaterialxv", + "glMaterialxvOES", + "glMatrixIndexPointerOES", + "glMatrixIndexPointerOESBounds", + "glMatrixMode", + "glMultMatrixf", + "glMultMatrixx", + "glMultMatrixxOES", + "glMultiDrawArraysEXT", + "glMultiDrawElementsEXT", + "glMultiTexCoord4f", + "glMultiTexCoord4x", + "glMultiTexCoord4xOES", + "glNormal3f", + "glNormal3x", + "glNormal3xOES", + "glNormalPointer", + "glNormalPointerBounds", + "glOrthof", + "glOrthofOES", + "glOrthox", + "glOrthoxOES", + "glPixelStorei", + "glPointParameterf", + "glPointParameterfv", + "glPointParameterx", + "glPointParameterxOES", + "glPointParameterxv", + "glPointParameterxvOES", + "glPointSize", + "glPointSizePointerOES", + "glPointSizePointerOESBounds", + "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", + "glTexCoordPointerBounds", + "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", + "glVertexPointerBounds", + "glViewport", + "glWeightPointerOES", + "glWeightPointerOESBounds", + NULL +}; + +const char *egl_symbols[] = { + "eglBindAPI", + "eglBindTexImage", + "eglChooseConfig", + "eglClientWaitSyncKHR", + "eglCopyBuffers", + "eglCreateContext", + "eglCreateImageKHR", + "eglCreatePbufferFromClientBuffer", + "eglCreatePbufferSurface", + "eglCreatePixmapSurface", + "eglCreateSyncKHR", + "eglCreateWindowSurface", + "eglDestroyContext", + "eglDestroyImageKHR", + "eglDestroySurface", + "eglDestroySyncKHR", + "eglGetConfigAttrib", + "eglGetConfigs", + "eglGetCurrentContext", + "eglGetCurrentDisplay", + "eglGetCurrentSurface", + "eglGetDisplay", + "eglGetError", + "eglGetProcAddress", + "eglGetSyncAttribKHR", + "eglGetSystemTimeFrequencyNV", + "eglGetSystemTimeNV", + "eglInitialize", + "eglLockSurfaceKHR", + "eglMakeCurrent", + "eglPresentationTimeANDROID", + "eglQueryAPI", + "eglQueryContext", + "eglQueryString", + "eglQuerySurface", + "eglReleaseTexImage", + "eglReleaseThread", + "eglSignalSyncKHR", + "eglSurfaceAttrib", + "eglSwapBuffers", + "eglSwapInterval", + "eglTerminate", + "eglUnlockSurfaceKHR", + "eglWaitClient", + "eglWaitGL", + "eglWaitNative", + "eglWaitSyncKHR", + NULL +}; + +const char *android_symbols[] = { + "ANativeWindow_setBuffersGeometry", + "AAssetManager_open", + "AAsset_getLength", + "AAsset_getBuffer", + "AAsset_close", + "ALooper_pollAll", + "ANativeActivity_finish", + "AInputQueue_getEvent", + "AKeyEvent_getKeyCode", + "AInputQueue_preDispatchEvent", + "AInputQueue_finishEvent", + "AKeyEvent_getAction", + "AMotionEvent_getAxisValue", + "AKeyEvent_getRepeatCount", + "AKeyEvent_getMetaState", + "AInputEvent_getDeviceId", + "AInputEvent_getType", + "AInputEvent_getSource", + "AMotionEvent_getAction", + "AMotionEvent_getPointerId", + "AMotionEvent_getX", + "AMotionEvent_getRawX", + "AMotionEvent_getY", + "AMotionEvent_getRawY", + "AMotionEvent_getPointerCount", + "AConfiguration_new", + "AConfiguration_fromAssetManager", + "AConfiguration_getLanguage", + "AConfiguration_getCountry", + "ALooper_prepare", + "ALooper_addFd", + "AInputQueue_detachLooper", + "AConfiguration_delete", + "AInputQueue_attachLooper", + NULL +}; + +const char *sles_symbols[] = { + "slQueryNumSupportedEngineInterfaces", + "slCreateEngine", + "slQuerySupportedEngineInterfaces", + "SL_IID_ENGINE", + "SL_IID_BUFFERQUEUE", + "SL_IID_VOLUME", + "SL_IID_PLAY", + NULL +}; + +const char *math_symbols[] = { + "acos", + "acosf", + "acosh", + "acoshf", + "acoshl", + "acosl", + "asin", + "asinf", + "asinh", + "asinhf", + "asinhl", + "asinl", + "atan", + "atan2", + "atan2f", + "atan2l", + "atanf", + "atanh", + "atanhf", + "atanhl", + "atanl", + "cabsl", + "cbrt", + "cbrtf", + "cbrtl", + "ceil", + "ceilf", + "ceill", + "copysign", + "copysignf", + "copysignl", + "cos", + "cosf", + "cosh", + "coshf", + "coshl", + "cosl", + "cprojl", + "csqrtl", + "drem", + "dremf", + "erf", + "erfc", + "erfcf", + "erfcl", + "erff", + "erfl", + "exp", + "exp2", + "exp2f", + "exp2l", + "expf", + "expl", + "expm1", + "expm1f", + "expm1l", + "fabs", + "fabsf", + "fabsl", + "fdim", + "fdimf", + "fdiml", + "feclearexcept", + "fedisableexcept", + "feenableexcept", + "fegetenv", + "fegetexcept", + "fegetexceptflag", + "fegetround", + "feholdexcept", + "feraiseexcept", + "fesetenv", + "fesetexceptflag", + "fesetround", + "fetestexcept", + "feupdateenv", + "finite", + "finitef", + "floor", + "floorf", + "floorl", + "fma", + "fmaf", + "fmal", + "fmax", + "fmaxf", + "fmaxl", + "fmin", + "fminf", + "fminl", + "fmod", + "fmodf", + "fmodl", + "frexp", + "frexpf", + "frexpl", + "gamma", + "gammaf", + "gammaf_r", + "gamma_r", + "hypot", + "hypotf", + "hypotl", + "ilogb", + "ilogbf", + "ilogbl", + "j0", + "j0f", + "j1", + "j1f", + "jn", + "jnf", + "ldexpf", + "ldexpl", + "lgamma", + "lgammaf", + "lgammaf_r", + "lgammal", + "lgammal_r", + "lgamma_r", + "llrint", + "llrintf", + "llrintl", + "llround", + "llroundf", + "llroundl", + "log", + "log10", + "log10f", + "log10l", + "log1p", + "log1pf", + "log1pl", + "log2", + "log2f", + "log2l", + "logb", + "logbf", + "logbl", + "logf", + "logl", + "lrint", + "lrintf", + "lrintl", + "lround", + "lroundf", + "lroundl", + "modf", + "modff", + "modfl", + "nan", + "nanf", + "nanl", + "nearbyint", + "nearbyintf", + "nearbyintl", + "nextafter", + "nextafterf", + "nextafterl", + "nexttoward", + "nexttowardf", + "nexttowardl", + "pow", + "powf", + "powl", + "remainder", + "remainderf", + "remainderl", + "remquo", + "remquof", + "remquol", + "rint", + "rintf", + "rintl", + "round", + "roundf", + "roundl", + "scalb", + "scalbf", + "scalbln", + "scalblnf", + "scalblnl", + "scalbn", + "scalbnf", + "scalbnl", + "__signbit", + "__signbitf", + "__signbitl", + "signgam", + "significand", + "significandf", + "significandl", + "sin", + "sincos", + "sincosf", + "sincosl", + "sinf", + "sinh", + "sinhf", + "sinhl", + "sinl", + "sqrt", + "sqrtf", + "sqrtl", + "tan", + "tanf", + "tanh", + "tanhf", + "tanhl", + "tanl", + "tgamma", + "tgammaf", + "tgammal", + "trunc", + "truncf", + "truncl", + "y0", + "y0f", + "y1", + "y1f", + "yn", + "ynf", + NULL +}; + +#endif \ No newline at end of file diff --git a/ninecraft/include/ninecraft/textures.hpp b/ninecraft/include/ninecraft/textures.hpp new file mode 100644 index 0000000..d982dcd --- /dev/null +++ b/ninecraft/include/ninecraft/textures.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include + +typedef struct { + int width; + int height; + unsigned char *pixels; + int unknown; + unsigned char alpha; + char unknown2[3]; + int mipmap_level; +} TextureData; + +TextureData read_png(char *path, bool alpha); + +GLuint load_texture(TextureData texture); \ No newline at end of file diff --git a/ninecraft/src/AppPlatform_linux.cpp b/ninecraft/src/AppPlatform_linux.cpp new file mode 100644 index 0000000..2f422f3 --- /dev/null +++ b/ninecraft/src/AppPlatform_linux.cpp @@ -0,0 +1,323 @@ +#include +#include +#include + +void AppPlatform_linux$AppPlatform_linux(AppPlatform_linux *app_platform, void *handle) { + memset(app_platform->filler, 0, 0xd0); + app_platform->vtable = (void **) operator new(31 * sizeof(void *)); + app_platform->vtable[0] = (void *) AppPlatform_linux$destroy; + app_platform->vtable[1] = (void *) AppPlatform_linux$destroy; + app_platform->vtable[2] = (void *) AppPlatform_linux$saveScreenshot; + app_platform->vtable[3] = (void *) AppPlatform_linux$loadTexture; + app_platform->vtable[4] = (void *) AppPlatform_linux$playSound; + app_platform->vtable[5] = (void *) AppPlatform_linux$showDialog; + app_platform->vtable[6] = (void *) AppPlatform_linux$createUserInput; + app_platform->vtable[7] = (void *) AppPlatform_linux$getUserInputStatus; + app_platform->vtable[8] = (void *) AppPlatform_linux$getUserInput; + app_platform->vtable[9] = (void *) AppPlatform_linux$getDateString; + app_platform->vtable[10] = (void *) AppPlatform_linux$checkLicense; + app_platform->vtable[11] = (void *) AppPlatform_linux$hasBuyButtonWhenInvalidLicense; + app_platform->vtable[12] = (void *) AppPlatform_linux$uploadPlatformDependentData; + app_platform->vtable[13] = (void *) AppPlatform_linux$readAssetFile; + app_platform->vtable[14] = (void *) AppPlatform_linux$_tick; + app_platform->vtable[15] = (void *) AppPlatform_linux$getScreenWidth; + app_platform->vtable[16] = (void *) AppPlatform_linux$getScreenHeight; + app_platform->vtable[17] = (void *) AppPlatform_linux$getPixelsPerMillimeter; + app_platform->vtable[18] = (void *) AppPlatform_linux$isNetworkEnabled; + app_platform->vtable[19] = (void *) AppPlatform_linux$getOptionStrings; + app_platform->vtable[20] = (void *) AppPlatform_linux$isPowerVR; + app_platform->vtable[21] = (void *) AppPlatform_linux$getKeyFromKeyCode; + app_platform->vtable[22] = (void *) AppPlatform_linux$buyGame; + app_platform->vtable[23] = (void *) AppPlatform_linux$finish; + app_platform->vtable[24] = (void *) AppPlatform_linux$isTouchscreen; + app_platform->vtable[25] = (void *) AppPlatform_linux$vibrate; + app_platform->vtable[26] = (void *) AppPlatform_linux$getPlatformStringVar; + app_platform->vtable[27] = (void *) AppPlatform_linux$showKeyboard; + app_platform->vtable[28] = (void *) AppPlatform_linux$hideKeyboard; + app_platform->vtable[29] = (void *) AppPlatform_linux$isKeyboardVisible; + app_platform->vtable[30] = (void *) AppPlatform_linux$showKeyboard; + app_platform->handle = handle; +} + +void AppPlatform_linux$_tick(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::_tick" << std::endl; +} + +void AppPlatform_linux$buyGame(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::buyGame" << std::endl; +} + +int AppPlatform_linux$checkLicense(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::checkLicense" << std::endl; + return 0; +} + +void AppPlatform_linux$createUserInput(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::createUserInput" << std::endl; +} + +void AppPlatform_linux$finish(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::finish" << std::endl; +} + +android_string AppPlatform_linux$getDateString(AppPlatform_linux *app_platform, unsigned int seconds) { + std::cout << "debug: AppPlatform_linux::getDateString" << std::endl; + android_string str; + + std::string ans = ""; + + int daysOfMonth[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + long int currYear, daysTillNow, extraTime, extraDays, index, date, month, hours, minutes, secondss, flag = 0; + + daysTillNow = seconds / (24 * 60 * 60); + extraTime = seconds % (24 * 60 * 60); + currYear = 1970; + + // Calculating current year + while (daysTillNow >= 365) { + if (currYear % 400 == 0 + || (currYear % 4 == 0 + && currYear % 100 != 0)) { + daysTillNow -= 366; + } + else { + daysTillNow -= 365; + } + currYear += 1; + } + + extraDays = daysTillNow + 1; + + if (currYear % 400 == 0 + || (currYear % 4 == 0 + && currYear % 100 != 0)) + flag = 1; + + month = 0, index = 0; + if (flag == 1) { + while (true) { + + if (index == 1) { + if (extraDays - 29 < 0) + break; + month += 1; + extraDays -= 29; + } + else { + if (extraDays + - daysOfMonth[index] + < 0) { + break; + } + month += 1; + extraDays -= daysOfMonth[index]; + } + index += 1; + } + } + else { + while (true) { + + if (extraDays + - daysOfMonth[index] + < 0) { + break; + } + month += 1; + extraDays -= daysOfMonth[index]; + index += 1; + } + } + + if (extraDays > 0) { + month += 1; + date = extraDays; + } + else { + if (month == 2 && flag == 1) + date = 29; + else { + date = daysOfMonth[month - 1]; + } + } + + hours = extraTime / 3600; + minutes = (extraTime % 3600) / 60; + secondss = (extraTime % 3600) % 60; + + ans += std::to_string(date); + ans += "/"; + ans += std::to_string(month); + ans += "/"; + ans += std::to_string(currYear); + ans += " "; + ans += std::to_string(hours); + ans += ":"; + ans += std::to_string(minutes); + ans += ":"; + ans += std::to_string(secondss); + + to_str(&str, (char *) ans.c_str(), app_platform->handle); + return str; +} + +int AppPlatform_linux$getKeyFromKeyCode(AppPlatform_linux *app_platform, unsigned int key_code, unsigned int meta_state, unsigned int device_id) { + std::cout << "debug: AppPlatform_linux::getKeyFromKeyCode" << std::endl; + return 0; +} + +int AppPlatform_linux$getOptionStrings(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::getOptionsStrings" << std::endl; + /*std::string *strarr = new std::string[1024]; + for (unsigned int i = 0; i < 1024; ++i) { + strarr[i] = NULL; + } + return strarr;*/ + char *buf = (char *) hybris_dlsym(app_platform->handle, "_ZZN19AppPlatform_android16getOptionStringsEvE3buf"); + return 1; +} + +float AppPlatform_linux$getPixelsPerMillimeter(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::getPixelsPerMillimeter" << std::endl; + return 1.f; +} + +android_string AppPlatform_linux$getPlatformStringVar(AppPlatform_linux *app_platform, int zero) { + std::cout << "debug: AppPlatform_linux::getPlatformStringVar" << std::endl; + android_string str; + to_str(&str, "Linux", app_platform->handle); + return str; +} + +int AppPlatform_linux$getScreenHeight(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::getScreenHeight" << std::endl; + return 1440; +} + +int AppPlatform_linux$getScreenWidth(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::getScreenWidth" << std::endl; + return 900; +} + +android_string *AppPlatform_linux$getUserInput(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::getUserInput" << std::endl; + return NULL; +} + +int AppPlatform_linux$getUserInputStatus(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::getUserInputStatus" << std::endl; + return -1; +} + +bool AppPlatform_linux$hasBuyButtonWhenInvalidLicense(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::hasBuyButtonWhenInvalidLicense" << std::endl; + return true; +} + +void AppPlatform_linux$hideKeyboard(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::hideKeyboard" << std::endl; +} + +bool AppPlatform_linux$isKeyboardVisible(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::isKeyboardVisible" << std::endl; + return false; +} + +bool AppPlatform_linux$isNetworkEnabled(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::isNetworkEnabled" << std::endl; + return true; +} + +bool AppPlatform_linux$isPowerVR(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::isPowerVR" << std::endl; + return false; +} + +bool AppPlatform_linux$isTouchscreen(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::isTouchscreen" << std::endl; + return false; +} + +TextureData AppPlatform_linux$loadTexture(AppPlatform_linux *app_platform, void *path_str, bool alpha) { + std::cout << "debug: AppPlatform_linux::loadTexture" << std::endl; + printf("%p\n", app_platform); + char *path = *(char **)(path_str + 20); + size_t pathlen = strlen(path); + char *fullpath = (char *) malloc(10 + pathlen); + fullpath[0] = '.'; + fullpath[1] = '/'; + fullpath[2] = 'a'; + fullpath[3] = 's'; + fullpath[4] = 's'; + fullpath[5] = 'e'; + fullpath[6] = 't'; + fullpath[7] = 's'; + fullpath[8] = '/'; + memcpy(fullpath+9, path, pathlen+1); + return read_png(fullpath, alpha); +} + +void AppPlatform_linux$playSound(AppPlatform_linux *app_platform, const android_string& sound_name, float volume, float pitch) { + std::cout << "debug: AppPlatform_linux::playSound" << std::endl; +} + +asset_file AppPlatform_linux$readAssetFile(AppPlatform_linux *app_platform, void *path_str) { + std::cout << "debug: AppPlatform_linux::readAssetFile" << std::endl; + android_string str; + char *path = *(char **)(path_str + 20); + size_t pathlen = strlen(path); + char *fullpath = (char *) malloc(8 + pathlen); + + fullpath[0] = 'a'; + fullpath[1] = 's'; + fullpath[2] = 's'; + fullpath[3] = 'e'; + fullpath[4] = 't'; + fullpath[5] = 's'; + fullpath[6] = '/'; + asset_file asset; + + memcpy(fullpath+7, path, pathlen+1); + + FILE *file = fopen(fullpath, "r"); + if (!file) { + printf("Error[%d] failed to read %s\n", errno, fullpath); + to_str((void *) &str, "", app_platform->handle); + asset.data = 0; + asset.size = -1; + return asset; + } + printf("Read asset: %s\n", fullpath); + fseek(file, 0, SEEK_END); + asset.size = ftell(file); + asset.data = (char *) malloc(asset.size); + fseek(file, 0, SEEK_SET); + fread(asset.data, 1, asset.size, file); + asset.size; + return asset; +} + +void AppPlatform_linux$saveScreenshot(AppPlatform_linux *app_platform, const android_string& path, int width, int height) { + std::cout << "debug: AppPlatform_linux::saveScreenshot" << std::endl; +} + +void AppPlatform_linux$showDialog(AppPlatform_linux *app_platform, int dialog_id) { + std::cout << "debug: AppPlatform_linux::showDialog" << std::endl; +} + +void AppPlatform_linux$showKeyboard(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::showKeyboard" << std::endl; +} + +void AppPlatform_linux$uploadPlatformDependentData(AppPlatform_linux *app_platform, int size, void *data) { + std::cout << "debug: AppPlatform_linux::uploadPlatformDependentData" << std::endl; +} + +void AppPlatform_linux$vibrate(AppPlatform_linux *app_platform, int milliseconds) { + std::cout << "debug: AppPlatform_linux::vibrate" << std::endl; +} + +void AppPlatform_linux$destroy(AppPlatform_linux *app_platform) { + std::cout << "debug: AppPlatform_linux::destroy" << std::endl; + operator delete(app_platform->vtable); +} \ No newline at end of file diff --git a/ninecraft/src/android_string.cpp b/ninecraft/src/android_string.cpp new file mode 100644 index 0000000..be2008b --- /dev/null +++ b/ninecraft/src/android_string.cpp @@ -0,0 +1,18 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +char *to_str(void *str, char *cstr, void *handle) { + size_t length = strlen(cstr); + *(void **)(str + 16) = str; + *(void **)(str + 20) = str; + ((void (*)(void *, unsigned int)) hybris_dlsym(handle, "_ZNSt4priv12_String_baseIcSaIcEE17_M_allocate_blockEj"))(str, length + 1); + memcpy(*(char **)(str + 20), cstr, length+1); + *(void **)(str + 16) = &(*(char **)(str + 20))[length]; +} \ No newline at end of file diff --git a/ninecraft/src/audio_engine.cpp b/ninecraft/src/audio_engine.cpp new file mode 100644 index 0000000..83aebff --- /dev/null +++ b/ninecraft/src/audio_engine.cpp @@ -0,0 +1,123 @@ +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct pcm_metadata { + int32_t channels; + int32_t frame_size; + int32_t sample_rate; + int32_t frames; +}; + +int audio_engine_create_audio_device(ALCdevice **device, ALCcontext **context) { + *device = alcOpenDevice(NULL); + if (!*device) { + printf("errorr!!! 1\n"); + return 0; + } + + *context = alcCreateContext(*device, NULL); + if (!*context) { + printf("errorr!!! 2\n"); + return 0; + } + + alcMakeContextCurrent(*context); + ALenum err = alGetError(); + if (err != AL_NO_ERROR) { + printf("errorr!!! 3\n"); + return 0; + } + alEnable(AL_SOURCE_DISTANCE_MODEL); + err = alGetError(); + if (err != AL_NO_ERROR) { + printf("errorr!!! 4\n"); + return 0; + } + + const ALCchar* name = NULL; + if (alcIsExtensionPresent(*device, "ALC_ENUMERATE_ALL_EXT")) + name = alcGetString(*device, ALC_ALL_DEVICES_SPECIFIER); + if (!name || alcGetError(*device) != AL_NO_ERROR) + name = alcGetString(*device, ALC_DEVICE_SPECIFIER); + printf("Opened \"%s\"\n", name); + + puts("alls good"); + return 1; +} + +int audio_engine_destroy_audio_device(ALCdevice **device, ALCcontext **context) { + alcMakeContextCurrent(NULL); + ALenum err = alGetError(); + if (err != AL_NO_ERROR) { + return 0; + } + alcDestroyContext(*context); + err = alGetError(); + if (err != AL_NO_ERROR) { + return 0; + } + alcCloseDevice(*device); + err = alGetError(); + if (err != AL_NO_ERROR) { + return 0; + } + return 1; +} + +ALuint audio_engine_create_sound_effect(void *symbol) { + struct pcm_metadata *meta = (struct pcm_metadata *) symbol; + + ALenum format = AL_NONE; + if (meta->channels == 1) { + format = meta->frame_size == 2 ? AL_FORMAT_MONO16 : AL_FORMAT_MONO8; + } else if (meta->channels == 2) { + format = meta->frame_size == 2 ? AL_FORMAT_STEREO16 : AL_FORMAT_STEREO8; + } else { + puts("errrrr form!!!"); + return 0; + } + + ALsizei data_size = meta->channels * meta->frames * meta->frame_size; + void *data = (void *) (((int)symbol)+sizeof(struct pcm_metadata)); + + ALuint buffer = 0; + alGenBuffers(1, &buffer); + alBufferData(buffer, format, data, data_size, meta->sample_rate); + + ALenum err = alGetError(); + if (err != AL_NO_ERROR) { + puts("errrrr buff!!!"); + if (buffer && alIsBuffer(buffer)) { + alDeleteBuffers(1, &buffer); + } + return 0; + } + + puts("alls good buf"); + + return buffer; +} + +void audio_engine_play(ALuint buffer) { + ALuint p_Source; + alGenSources(1, &p_Source); + alSourcef(p_Source, AL_PITCH, 1.f); + alSourcef(p_Source, AL_GAIN, 1.f); + alSource3f(p_Source, AL_POSITION, 0.f, 0.f, 0.f); + alSource3f(p_Source, AL_VELOCITY, 0.f, 0.f, 0.f); + alSourcei(p_Source, AL_LOOPING, AL_FALSE); + alSourcei(p_Source, AL_SOURCE_RELATIVE, AL_TRUE); + alSourcei(p_Source, AL_BUFFER, buffer); + alSourcePlay(p_Source); + //alDeleteSources(1, &p_Source); +} + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/ninecraft/src/main.cpp b/ninecraft/src/main.cpp new file mode 100644 index 0000000..1e80036 --- /dev/null +++ b/ninecraft/src/main.cpp @@ -0,0 +1,551 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +const char *libs[] = { + "libc.so", + "libstdc++.so", + "libm.so", + "libandroid.so", + "liblog.so", + "libEGL.so", + "libOpenSLES.so", + "libGLESv1_CM.so"}; + +void *handle; +GLFWwindow* _window; + +float y_cam = 0.0; +float x_cam = 0.0; + +int window_width = 720; +int window_height = 480; + +std::string getCWD() +{ + char _cwd[MAXPATHLEN]; + getcwd(_cwd, MAXPATHLEN); + return std::string(_cwd) + "/"; +} + +#ifdef __i386__ + +void detour(void *dst_addr, void *src_addr, bool jump) { + uint32_t page_size = sysconf(_SC_PAGESIZE); + void *protect = (void *)((uintptr_t)(dst_addr) & -page_size); + mprotect(protect, page_size, PROT_READ | PROT_WRITE | PROT_EXEC); + uint32_t addr = ((uint32_t)src_addr) - ((uint32_t)dst_addr) - 5; + *(uint8_t *)(dst_addr) = jump ? 0xE9 : 0xE8; + *(uint32_t *)(((uint32_t)dst_addr) + 1) = addr; + mprotect(protect, page_size, PROT_EXEC); +} + +#else + +#ifdef __arm__ + +uint32_t encode_branch(uint32_t pc, uint32_t branch_to, uint8_t has_link, uint8_t is_relative) { + uint32_t offset = branch_to - ((pc + 4) & 0xFFFFFFFE); + uint8_t s = (offset >> 24) & 1; + uint8_t j = (~((offset >> 23) & 1) ^ s) & 1; + uint8_t j2 = (~((offset >> 22) & 1) ^ s) & 1; + uint16_t h = (offset >> 12) & 0x3ff; + uint16_t l = (offset >> 1) & 0x7ff; + uint8_t type = has_link ? 0b11 : 0b10; + uint8_t thumb_bit = is_relative ? 1 : 0; + uint8_t opcode = 0b11110; + uint32_t result = opcode << 27; + result |= s << 26; + result |= h << 16; + result |= type << 14; + result |= j << 13; + result |= thumb_bit << 12; + result |= j2 << 11; + result |= l; + return ((result & 0xffff) << 16) | ((result >> 16) & 0xffff); +} + +void detour(void *dst_addr, void *src_addr, bool jump) { + long page_size = sysconf(_SC_PAGESIZE); + void *protect = (void *)((uintptr_t)(dst_addr-1) & -page_size); + mprotect(protect, page_size, PROT_READ | PROT_WRITE | PROT_EXEC); + uint32_t b = encode_branch((int) dst_addr-1, (int) src_addr-1, jump ? 0 : 1, 1); + memcpy(dst_addr-1, (void *) &b, sizeof(uint32_t)); + mprotect(protect, page_size, PROT_EXEC); +} + +#else + +void detour(void *dst_addr, void *src_addr, bool jump); + +#endif + +#endif + +bool load_library(std::string path) { + #ifdef __i386__ + std::string arch = "x86"; + #else + #ifdef __arm__ + std::string arch = "arm"; + #else + std::string arch = ""; + #endif + #endif + std::string fullpath = getCWD() + "/libs/" + arch + "/" + path; + void *handle = hybris_dlopen(fullpath.c_str(), RTLD_LAZY); + if (handle == NULL) + { + std::cout << "failed to load library " << fullpath << ": " << hybris_dlerror() << "\n"; + return false; + } + std::cout << "lib: " << fullpath << ": " << (int)handle << "\n"; + return true; +} + +void *load_minecraftpe() +{ + #ifdef __i386__ + std::string arch = "x86"; + #else + #ifdef __arm__ + std::string arch = "arm"; + #else + std::string arch = ""; + #endif + #endif + std::string fullpath = getCWD() + "/libs/" + arch + "/libminecraftpe.so"; + void *handle = hybris_dlopen(fullpath.c_str(), RTLD_LAZY); + if (handle == NULL) + { + std::cout << "failed to load library " << fullpath << ": " << hybris_dlerror() << "\n"; + return NULL; + } + std::cout << "lib: " << fullpath << ": " << (int)handle << "\n"; + return handle; +} + +void *load_library_os(std::string path, const char **symbols) +{ + void *handle = dlopen(path.c_str(), RTLD_LAZY); + if (handle == NULL) + { + std::cout << "failed to load library " << path << ": " << dlerror() << "\n"; + return NULL; + } + std::cout << "oslib: " << path << ": " << (int)handle << "\n"; + int i = 0; + while (true) + { + const char *sym = symbols[i]; + if (sym == NULL) + break; + void *ptr = dlsym(handle, sym); + hybris_hook(sym, ptr); + ++i; + } + return handle; +} + +void stub_symbols(const char **symbols, void *stub_func) +{ + int i = 0; + while (true) + { + const char *sym = symbols[i]; + if (sym == NULL) + { + break; + } + hybris_hook(sym, stub_func); + ++i; + } +} + +extern "C" void __android_log_print(int prio, const char *tag, const char *fmt, ...) +{ + va_list args; + va_start(args, fmt); + printf("[%s] ", tag); + vprintf(fmt, args); + printf("\n"); + va_end(args); +} + +void android_stub() +{ + std::cout << "warn: android call\n"; +} + +void egl_stub() +{ + std::cout << "warn: egl call\n"; +} + +void sles_stub() +{ + std::cout << "warn: sles call\n"; +} + +void sound_engine_stub() +{ + // std::cout << "warn: sound engine\n"; +} + +void *ninecraft_app; + +struct KeyboardAction +{ + int action; + int keyCode; +}; + +static std::vector *keyboard_inputs; +static int *keyboard_states; + +static unsigned char *controller_states; +static float *controller_x_stick; +static float *controller_y_stick; + +ALCdevice *audio_device; +ALCcontext *audio_context; + +static void minecraft_draw() +{ + ((void (*)(void *))hybris_dlsym(handle, "_ZN12NinecraftApp6updateEv"))(ninecraft_app); +} + +bool mouse_pointer_hidden = false; + +int mouseToGameKeyCode(int keyCode) { + if (keyCode == GLFW_MOUSE_BUTTON_LEFT) { + return MCKEY_BREAK; + } else if (keyCode == GLFW_MOUSE_BUTTON_RIGHT) { + return MCKEY_PLACE; + } +} + +static void mouse_click_callback(GLFWwindow* window, int button, int action, int mods) { + double xpos, ypos; + glfwGetCursorPos(window, &xpos, &ypos); + if (!mouse_pointer_hidden) { + int mc_button = (button == GLFW_MOUSE_BUTTON_LEFT ? 1 : (button == GLFW_MOUSE_BUTTON_RIGHT ? 2 : 0)); + ((void (*)(char, char, short, short, short, short))hybris_dlsym(handle, "_ZN5Mouse4feedEccssss"))((char) mc_button, (char) (action == GLFW_PRESS ? 1 : 0), (short)xpos, (short)ypos, 0, 0); + } else { + int game_keycode = mouseToGameKeyCode(button); + + if (action == GLFW_PRESS) { + keyboard_inputs->push_back({1, game_keycode}); + keyboard_states[game_keycode] = 1; + } else if (action == GLFW_RELEASE) { + keyboard_inputs->push_back({0, game_keycode}); + keyboard_states[game_keycode] = 0; + } + } +} + +static void mouse_scroll_callback(GLFWwindow* window, double xoffset, double yoffset) { + double xpos, ypos; + glfwGetCursorPos(window, &xpos, &ypos); + printf("%lf %lf\n", xoffset, yoffset); + char key_code = 0; + if (yoffset > 0) { + key_code = MCKEY_HOTBAR_PREVIOUS; + } else if (yoffset < 0) { + key_code = MCKEY_HOTBAR_NEXT; + } + keyboard_inputs->push_back({1, key_code}); + keyboard_states[key_code] = 1; + keyboard_inputs->push_back({0, key_code}); + keyboard_states[key_code] = 0; +} + +static void mouse_pos_callback(GLFWwindow* window, double xpos, double ypos) { + if (!mouse_pointer_hidden) { + ((void (*)(char, char, short, short, short, short))hybris_dlsym(handle, "_ZN5Mouse4feedEccssss"))(0, 0, (short)xpos, (short)ypos, 0, 0); + } else { + int cx; + int cy; + glfwGetWindowSize(window, &cx, &cy); + cx /= 2; + cy /= 2; + if ((int)xpos != cy || (int)ypos != cy) { + glfwSetCursorPos(window, cx, cy); + y_cam -= ((float) ypos - (float)cy) / 8.0; + x_cam += ((float)xpos - (float)cx) / 6.0; + } + } +} + +int getGameKeyCode(int keycode) { + if (keycode == GLFW_KEY_W) { + return MCKEY_FORWARD; + } else if (keycode == GLFW_KEY_A) { + return MCKEY_STEP_LEFT; + } else if (keycode == GLFW_KEY_S) { + return MCKEY_BACKWARDS; + } else if (keycode == GLFW_KEY_D) { + return MCKEY_STEP_RIGHT; + } else if (keycode == GLFW_KEY_SPACE) { + return MCKEY_JUMP; + } else if (keycode == GLFW_KEY_E) { + return MCKEY_INVENTORY; + } else if (keycode == GLFW_KEY_ESCAPE) { + return MCKEY_PAUSE; + } else if (keycode == GLFW_KEY_C) { + return MCKEY_CRAFTING; + } else { + return 0; + } +} + +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) { + if (key == GLFW_KEY_F11) { + if (action == GLFW_PRESS) { + // todo fullscreen + } + } else { + if (mouse_pointer_hidden) { + int game_keycode = getGameKeyCode(key); + if (key == GLFW_KEY_LEFT_SHIFT) { + if (action == GLFW_PRESS) { + controller_states[0] = 1; + } else if (action == GLFW_RELEASE) { + controller_states[0] = 0; + } + } else { + if (action == GLFW_PRESS) { + keyboard_inputs->push_back({1, game_keycode}); + keyboard_states[game_keycode] = 1; + } else if (action == GLFW_RELEASE) { + keyboard_inputs->push_back({0, game_keycode}); + keyboard_states[game_keycode] = 0; + } + } + } + } +} + +static void resize_callback(GLFWwindow* window, int width, int height) { + window_width = width; + window_height = height; + ((void (*)(void *, int, int))hybris_dlsym(handle, "_ZN9Minecraft7setSizeEii"))(ninecraft_app, width, height); +} + +static void char_callback(GLFWwindow* window, unsigned int codepoint) { + ((void (*)(char))hybris_dlsym(handle, "_ZN8Keyboard8feedTextEc"))((char)codepoint); +} + +void mcinit() +{ + if (!*((int *)ninecraft_app + 183)) + { + ((void (*)(void *))hybris_dlsym(handle, "_ZN9Minecraft12_reloadInputEv"))(ninecraft_app); + } +} + +void grab_mouse() { + std::cout << "grab_mouse" << std::endl; + mouse_pointer_hidden = true; + glfwSetInputMode(_window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN); +} + +void release_mouse() { + std::cout << "release_mouse" << std::endl; + mouse_pointer_hidden = false; + glfwSetInputMode(_window, GLFW_CURSOR, GLFW_CURSOR_NORMAL); +} + +ALuint effect; + +void sound_engine_playui_stub(void *sound_engine, const char *sound_name, float volume) +{ + std::cout << sound_name << std::endl; + audio_engine_play(effect); +} + +void render_menu_background(void *screen, void *texture_name) { + /*std::cout << "rnder this\n"; + TextureData image = read_png("./assets/background.png", true); + GLuint texid = load_texture(image); + glBindTexture(GL_TEXTURE_2D, texid); + glPushMatrix(); + glBegin(0x0007); + glTexCoord2f(0, 0); + glVertex2f(0, 0); // Upper left + + glTexCoord2f(1, 0); + glVertex2f(window_width, 0); // Upper right + + glTexCoord2f(1, 1); + glVertex2f(window_width, window_height); // Lower right + + glTexCoord2f(0, 1); + glVertex2f(0, window_height); // Lower left + glEnd(); + glPopMatrix(); + free(image.pixels);*/ +} + +android_string get_game_version() { + android_string out; + to_str(&out, "Ninecraft 1.0.0", handle); + return out; +} + +int main(int argc, char **argv) +{ + struct stat st = {0}; + if (stat("storage", &st) == -1) { + mkdir("storage", 0700); + if (stat("storage/internal", &st) == -1) { + mkdir("storage/internal", 0700); + } + if (stat("storage/external", &st) == -1) { + mkdir("storage/external", 0700); + } + } + void *gles = load_library_os("libGLESv1_CM.so", gles_1_symbols); + void *math = load_library_os("libm.so.6", math_symbols); + hybris_hook("__android_log_print", (void *)__android_log_print); + stub_symbols(android_symbols, (void *)android_stub); + stub_symbols(egl_symbols, (void *)egl_stub); + stub_symbols(sles_symbols, (void *)sles_stub); + int i; + for (i = 0; i < 8; ++i) + { + load_library(libs[i]); + } + handle = load_minecraftpe(); + + audio_engine_create_audio_device(&audio_device, &audio_context); + char *buf = (char *) hybris_dlsym(handle, "PCM_click"); + effect = audio_engine_create_sound_effect(buf); + + keyboard_inputs = (std::vector *)hybris_dlsym(handle, "_ZN8Keyboard7_inputsE"); + keyboard_states = (int *)hybris_dlsym(handle, "_ZN8Keyboard7_statesE"); + controller_states = (unsigned char *)hybris_dlsym(handle, "_ZN10Controller15isTouchedValuesE"); + controller_x_stick = (float *)hybris_dlsym(handle, "_ZN10Controller12stickValuesXE"); + controller_y_stick = (float *)hybris_dlsym(handle, "_ZN10Controller12stickValuesYE"); + + detour(hybris_dlsym(handle, "_ZN12MouseHandler4grabEv"), (void *)grab_mouse, true); + detour(hybris_dlsym(handle, "_ZN12MouseHandler7releaseEv"), (void *)release_mouse, true); + + //detour(hybris_dlsym(handle, "_ZN6Screen20renderDirtBackgroundEi"), (void *)render_menu_background, true); + + unsigned char *dat = (unsigned char *)hybris_dlsym(handle, "_ZN15StartMenuScreenC1Ev"); + + #ifdef __i386__ + dat[268] = 0xa0; + #endif + + detour(hybris_dlsym(handle, "_ZN6Common20getGameVersionStringERKSs"), (void *)get_game_version, true); + + detour(hybris_dlsym(handle, "_ZN9Minecraft13reloadOptionsEv"), (void *)mcinit, true); + detour(hybris_dlsym(handle, "_ZN11SoundEngineC1Ef"), (void *)sound_engine_stub, true); + detour(hybris_dlsym(handle, "_ZN11SoundEngine4initEP9MinecraftP7Options"), (void *)sound_engine_stub, true); + detour(hybris_dlsym(handle, "_ZN11SoundEngine14_getVolumeMultEfff"), (void *)sound_engine_stub, true); + detour(hybris_dlsym(handle, "_ZN11SoundEngine7destroyEv"), (void *)sound_engine_stub, true); + detour(hybris_dlsym(handle, "_ZN11SoundEngine6enableEb"), (void *)sound_engine_stub, true); + detour(hybris_dlsym(handle, "_ZN11SoundEngine4playERKSsfffff"), (void *)sound_engine_stub, true); + detour(hybris_dlsym(handle, "_ZN11SoundEngine6playUIERKSsff"), (void *)sound_engine_playui_stub, true); + detour(hybris_dlsym(handle, "_ZN11SoundEngine6updateEP3Mobf"), (void *)sound_engine_stub, true); + detour(hybris_dlsym(handle, "_ZN11SoundEngine13updateOptionsEv"), (void *)sound_engine_stub, true); + detour(hybris_dlsym(handle, "_ZN11SoundEngineD1Ev"), (void *)sound_engine_stub, true); + detour(hybris_dlsym(handle, "_ZN11SoundEngineD2Ev"), (void *)sound_engine_stub, true); + ninecraft_app = operator new(0xe6c); + + if (!glfwInit()) { + // Initialization failed + } + + + glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API) ; + glfwWindowHint(GLFW_CONTEXT_CREATION_API, GLFW_EGL_CONTEXT_API); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 1); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1); + _window = glfwCreateWindow(window_width, window_height, "Ninecraft", NULL, NULL); + if (!_window) { + puts("cant create"); + } + glfwMakeContextCurrent(_window); + gladLoadGLLoader((GLADloadproc) glfwGetProcAddress); + + glfwInit(); + + printf("%s\n", glGetString(GL_VERSION)); + + NinecraftApp$construct ninecraft_app_construct = (NinecraftApp$construct)hybris_dlsym(handle, "_ZN12NinecraftAppC2Ev"); + printf("%p\n", ninecraft_app_construct); + ninecraft_app_construct(ninecraft_app); + + ((void (*)(int, const char *))hybris_dlsym(handle, "_ZNSsaSEPKc"))((int)ninecraft_app + 3544, "./storage/internal/"); + ((void (*)(int, const char *))hybris_dlsym(handle, "_ZNSsaSEPKc"))((int)ninecraft_app + 3568, "./storage/external/"); + AppPlatform_linux platform; + AppPlatform_linux$AppPlatform_linux(&platform, handle); + *(uintptr_t *)(((int)ninecraft_app) + 0x14) = (uintptr_t)&platform; + printf("%p\n", &platform); + NinecraftApp$init ninecraft_app_init = (NinecraftApp$init)hybris_dlsym(handle, "_ZN12NinecraftApp4initEv"); + ninecraft_app_init(ninecraft_app); + + + printf("%d\n", *(char *)(ninecraft_app+84)); + printf("%d\n", *(char *)(ninecraft_app+112)); + printf("%d\n", *(char *)(ninecraft_app+280)); + printf("%d\n", *(char *)(ninecraft_app+196)); + printf("%d\n", *(char *)(ninecraft_app+140)); + printf("%d\n", *(char *)(ninecraft_app+168)); + printf("%d\n", *(char *)(ninecraft_app+224)); + printf("%d\n", *(char *)(ninecraft_app+252)); + printf("%d\n", *(char *)(ninecraft_app+336)); + printf("%d\n", *(char *)(ninecraft_app+364)); + printf("%d\n", *(char *)(ninecraft_app+392)); + printf("%d\n", *(char *)(ninecraft_app+420)); + printf("%d\n", *(char *)(ninecraft_app+448)); + printf("%d\n", *(char *)(ninecraft_app+476)); + + ((void (*)(void *, int, int))hybris_dlsym(handle, "_ZN9Minecraft7setSizeEii"))(ninecraft_app, 720, 480); + + glfwSetKeyCallback(_window, key_callback); + glfwSetCharCallback(_window, char_callback); + glfwSetMouseButtonCallback(_window, mouse_click_callback); + glfwSetScrollCallback(_window, mouse_scroll_callback); + glfwSetCursorPosCallback(_window, mouse_pos_callback); + glfwSetWindowSizeCallback(_window, resize_callback); + + while (true) { + if (mouse_pointer_hidden) { + controller_states[1] = 1; + controller_y_stick[1] = (float)(y_cam - 180.0) * 0.0055555557; + controller_x_stick[1] = ((float)((x_cam - 483.0)) * 0.0020703934); + } + minecraft_draw(); + glfwSwapBuffers(_window); + glfwPollEvents(); + } + + return 0; +} \ No newline at end of file diff --git a/ninecraft/src/textures.cpp b/ninecraft/src/textures.cpp new file mode 100644 index 0000000..af73117 --- /dev/null +++ b/ninecraft/src/textures.cpp @@ -0,0 +1,81 @@ +#include +#include +#include +#include + +TextureData read_png(char *path, bool alpha) { + TextureData texture_data; + FILE *file = fopen(path, "r"); + + if (!file) { + printf("Error[%d] failed to read %s\n", errno, path); + texture_data.height = 0; + texture_data.width = 0; + return texture_data; + } + + png_structp png = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if (!png) { + texture_data.height = 0; + texture_data.width = 0; + return texture_data; + } + png_infop info = png_create_info_struct(png); + if (!info) { + texture_data.height = 0; + texture_data.width = 0; + return texture_data; + } + if (setjmp(png_jmpbuf(png))) { + texture_data.height = 0; + texture_data.width = 0; + return texture_data; + } + png_init_io(png, file); + png_read_info(png, info); + texture_data.width = png_get_image_width(png, info); + texture_data.height = png_get_image_height(png, info); + png_byte color_type = png_get_color_type(png, info); + png_byte bit_depth = png_get_bit_depth(png, info); + if (bit_depth == 16) + png_set_strip_16(png); + if (color_type == PNG_COLOR_TYPE_PALETTE) + png_set_palette_to_rgb(png); + if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) + png_set_expand_gray_1_2_4_to_8(png); + if (png_get_valid(png, info, PNG_INFO_tRNS)) + png_set_tRNS_to_alpha(png); + if (color_type == PNG_COLOR_TYPE_RGB || color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_PALETTE) { + png_set_filler(png, 0xFF, PNG_FILLER_AFTER); + } + if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { + png_set_gray_to_rgb(png); + } + png_read_update_info(png, info); + png_size_t rowbytes = png_get_rowbytes(png, info); + texture_data.pixels = (unsigned char *)malloc(rowbytes * texture_data.height); + png_bytep *row_pointers = (png_bytep*)malloc(sizeof(png_bytep) * texture_data.height); + for (unsigned int y = 0; y < texture_data.height; ++y) { + row_pointers[y] = (png_byte *)&texture_data.pixels[y * rowbytes]; + } + png_read_image(png, row_pointers); + fclose(file); + free(row_pointers); + texture_data.alpha = alpha; + texture_data.mipmap_level = 0; + return texture_data; +} + +GLuint load_texture(TextureData texture) { + GLuint textureID; + glGenTextures(1, &textureID); + glBindTexture(GL_TEXTURE_2D, textureID); + glTexImage2D(GL_TEXTURE_2D, 0, texture.alpha ? GL_RGBA : GL_RGB, texture.width, texture.height, 0, texture.alpha ? GL_RGBA : GL_RGB, GL_UNSIGNED_BYTE, texture.pixels); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, texture.alpha ? GL_CLAMP_TO_EDGE : GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, texture.alpha ? GL_CLAMP_TO_EDGE : GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + //glGenerateMipmap(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, 0); + return textureID; +} \ No newline at end of file diff --git a/tools/extract.sh b/tools/extract.sh new file mode 100755 index 0000000..d14e873 --- /dev/null +++ b/tools/extract.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +if [ -z ${1} ]; then + echo "Please specify the archive" + exit +fi +if [ ! -f ${1} ]; then + echo "The specified file doesn't exist!" + exit +fi +if ! [[ ${1} =~ \.apk$ ]]; then + echo "The file must be an .apk" + exit +fi + +rm -rf assets/ + +unzip ${1} "assets/*" + +if [[ ${2} = "arm" ]]; then +unzip -p ${1} lib/armeabi-v7a/libminecraftpe.so > libs/arm/libminecraftpe.so +else +unzip -p ${1} lib/x86/libminecraftpe.so > libs/x86/libminecraftpe.so +fi \ No newline at end of file