У меня есть приложение, которое выдает ошибку при попытке запустить его:
/lib/libc.so.6: version `GLIBC_2.7' not found
Но единственный символ, который ему нужен от glibc 2.7 - это
__isoc99_sscanf@@GLIBC_2.7
Я хочу написать небольшую одиночную функцию "библиотека" с этим символом в качестве псевдонима для __sscanf ()
Как я могу сделать это с помощью gcc / ld?
Мой вариант не принят, потому что символы "@@"
int __isoc99_sscanf@@GLIBC_2.7(const char *, const char *, ...) __attribute__((alias("__sscanf")));
второй мой вариант
#include <stdarg.h>
int __isoc99_sscanf1(const char *a, const char *b, va_list args)
{
int i;
va_list ap;
va_copy(ap,args);
i=sscanf(a,b,ap);
va_end(ap);
return i;
}
// __asm__(".symver __isoc99_sscanf,__isoc99_sscanf@@GLIBC_2.7");
__asm__(".symver __isoc99_sscanf1,__isoc99_sscanf@@GLIBC_2.7");
но он заканчивается сообщением об ошибке "узел версии не найден для символа __isoc99_sscanf @@ GLIBC_2.7".