LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

это не глубинная функция, а глубинная переменная. вот пример макроса

https://codebrowser.dev/glibc/glibc/include/errno.h.html

#  undef  errno
#  if IS_IN (libc)
#   define errno __libc_errno
#  else
#   define errno errno		/* For #ifndef errno tests.  */
#  endif

то есть errno есть переименованная __libc_errno

так это и есть сылка на внешнее обьявление переменной __libc_errno, которое вы обыскались, думая что оно функция. а вот самого обьявление вы потеряли где-то. его надо найти и влинковать. или ручками обьявить как int __libc_errno где-нибудь.

__thread int errno;
extern __thread int __libc_errno __attribute__ ((alias ("errno")))
  attribute_hidden;

короче там где-то закопано реальное обьявление int __libc_errno, которое потом перименовывают в errno. вот ищите где

Исправление alysnix, :

это не глубинная функция, а глубинная переменная. вот пример макроса

https://codebrowser.dev/glibc/glibc/include/errno.h.html

#  undef  errno
#  if IS_IN (libc)
#   define errno __libc_errno
#  else
#   define errno errno		/* For #ifndef errno tests.  */
#  endif

то есть errno есть переименованная __libc_errno

так это и есть сылка на внешнее обьявление переменной __libc_errno, которое вы обыскались, думая что оно функция. а вот самого обьявление вы потеряли где-то. его надо найти и влинковать. или ручками обьявить как int __libc_errno где-нибудь.

__thread int errno;
extern __thread int __libc_errno __attribute__ ((alias ("errno")))
  attribute_hidden;

Исправление alysnix, :

это не глубинная функция, а глубинная переменная. вот пример макроса

https://codebrowser.dev/glibc/glibc/include/errno.h.html

#  undef  errno
#  if IS_IN (libc)
#   define errno __libc_errno
#  else
#   define errno errno		/* For #ifndef errno tests.  */
#  endif

то есть errno есть переименованная __libc_errno

так это и есть сылка на внешнее обьявление переменной __libc_errno, которое вы обыскались, думая что оно функция. а вот самого обьявление вы потеряли где-то. его надо найти и влинковать. или ручками обьявить как int __libc_errno где-нибудь.

''' __thread int errno; extern __thread int __libc_errno attribute ((alias («errno»))) attribute_hidden; '''

Исходная версия alysnix, :

это не глубинная функция, а глубинная переменная. вот пример макроса

https://codebrowser.dev/glibc/glibc/include/errno.h.html

#  undef  errno
#  if IS_IN (libc)
#   define errno __libc_errno
#  else
#   define errno errno		/* For #ifndef errno tests.  */
#  endif

то есть errno есть переименованная __libc_errno