/* * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. * Distributed under the terms of the MIT License. */ #ifndef POSIX_ERROR_MAPPER_H #define POSIX_ERROR_MAPPER_H #include #include #include #define GET_REAL_FUNCTION(returnValue, function, parameters) \ static returnValue (*sReal_##function)parameters \ = (returnValue (*)parameters)dlsym(RTLD_DEFAULT, #function) #define HIDDEN_FUNCTION(function) asm volatile(".hidden " #function) #define WRAPPER_FUNCTION(returnValue, function, parameters, body) \ returnValue function parameters \ { \ HIDDEN_FUNCTION(function); \ GET_REAL_FUNCTION(returnValue, function, parameters); \ body \ } #endif // POSIX_ERROR_MAPPER_H