<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>32108</bug_id>
          
          <creation_ts>2016-05-17 16:46:16 +0300</creation_ts>
          <short_desc>Q: why our glibc-devel provides strlcpy?</short_desc>
          <delta_ts>2021-06-15 10:34:18 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>glibc-devel</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://marc.info/?i=1421156604-30603-3-git-send-email-vgupta%40synopsys.com</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>relnote</keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</reporter>
          <assigned_to name="Gleb F-Malinovskiy">glebfm</assigned_to>
          <cc>evg</cc>
    
    <cc>glebfm</cc>
    
    <cc>lav</cc>
    
    <cc>ldv</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>156841</commentid>
    <comment_count>0</comment_count>
    <who name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</who>
    <bug_when>2016-05-17 16:46:16 +0300</bug_when>
    <thetext>Почему-то только мы и uCLibc провайдим strlcpy в /usr/include/string.h, есть ли объяснение этому курьезу?

В настроящий момент это ломает сборку компонентов ядра с включенным CONFIG_HAVE_STACK_VALIDATION, который бывает очень полезен:

  HOSTLD  scripts/mod/modpost
  CC       /usr/src/RPM/BUILD/kernel-image-lks-wks-4.6.0-alt0.1/kernel-source-4.6/tools/objtool/libstring.o
  HOSTLD  arch/x86/tools/relocs
In file included from ../lib/string.c:18:0:
/usr/src/RPM/BUILD/kernel-image-lks-wks-4.6.0-alt0.1/kernel-source-4.6/tools/include/linux/string.h:12:15: error: redundant redeclaration of &apos;strlcpy&apos; [-Werror=redundant-decls]
 extern size_t strlcpy(char *dest, const char *src, size_t size);
               ^
In file included from ../lib/string.c:16:0:
/usr/include/string.h:571:15: note: previous declaration of &apos;strlcpy&apos; was here
 extern size_t strlcpy (char *__dst, __const char *__src, size_t __n)
               ^
cc1: all warnings being treated as errors

В настоящий момент в ядре уже есть затычка для uCLibc:

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a83d869f300bf91df07443b5272db7a5a8eb18b7

Не хочется плодить сущности без надобности, но разве мы уже тоже стали собираться из uCLibc, и если это так, то почему не провайдим нужный define?

Вывод на машине с Fedora:

$ fgrep -r strlcpy /usr/include/
/usr/include/python3.4m/pyconfig-64.h:/* Define to 1 if you have the `strlcpy&apos; function. */
$

Вывод на машине с ALTLinux:

$ fgrep -r strlcpy /usr/include/|fgrep string
/usr/include/string.h:extern size_t strlcpy (char *__dst, __const char *__src, size_t __n)
$

$ rpm -q glibc-devel
glibc-devel-2.23-alt2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156842</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2016-05-17 17:27:52 +0300</bug_when>
    <thetext>(In reply to comment #0)
&gt; Почему-то только мы и uCLibc провайдим strlcpy в /usr/include/string.h, есть ли
&gt; объяснение этому курьезу?

У нас оно под __USE_MISC, который включают _DEFAULT_SOURCE/_GNU_SOURCE/_BSD_SOURCE.

Я все-таки надеюсь, что strlcat и strlcpy раньше или позже будут в glibc:
https://sourceware.org/ml/libc-alpha/2016-01/msg00205.html

Там оно тоже под __USE_MISC.

Так что мне кажется, что правильнее всего было бы исправить tools/include/linux/string.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156850</commentid>
    <comment_count>2</comment_count>
    <who name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</who>
    <bug_when>2016-05-18 01:09:38 +0300</bug_when>
    <thetext>(In reply to comment #1)
&gt; (In reply to comment #0)
&gt; &gt; Почему-то только мы и uCLibc провайдим strlcpy в /usr/include/string.h, есть ли
&gt; &gt; объяснение этому курьезу?
&gt; 
&gt; У нас оно под __USE_MISC, который включают
&gt; _DEFAULT_SOURCE/_GNU_SOURCE/_BSD_SOURCE.
&gt; 
&gt; Я все-таки надеюсь, что strlcat и strlcpy раньше или позже будут в glibc:
&gt; https://sourceware.org/ml/libc-alpha/2016-01/msg00205.html
&gt; 
&gt; Там оно тоже под __USE_MISC.
&gt; 
&gt; Так что мне кажется, что правильнее всего было бы исправить
&gt; tools/include/linux/string.h

А как мы можем исправить tools/include/linux/string.h, если, например в Fedora нет этой функции в принципе? Т.е. апстрим в лице kernel.org это вряд ли примет, пока эта функция не появится там официально. Или речь идет о локальной правке?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156855</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2016-05-18 16:42:34 +0300</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; (In reply to comment #0)
&gt; &gt; &gt; Почему-то только мы и uCLibc провайдим strlcpy в /usr/include/string.h, есть ли
&gt; &gt; &gt; объяснение этому курьезу?
&gt; &gt; 
&gt; &gt; У нас оно под __USE_MISC, который включают
&gt; &gt; _DEFAULT_SOURCE/_GNU_SOURCE/_BSD_SOURCE.
&gt; &gt; 
&gt; &gt; Я все-таки надеюсь, что strlcat и strlcpy раньше или позже будут в glibc:
&gt; &gt; https://sourceware.org/ml/libc-alpha/2016-01/msg00205.html
&gt; &gt; 
&gt; &gt; Там оно тоже под __USE_MISC.
&gt; &gt; 
&gt; &gt; Так что мне кажется, что правильнее всего было бы исправить
&gt; &gt; tools/include/linux/string.h
&gt; 
&gt; А как мы можем исправить tools/include/linux/string.h, если, например в Fedora
&gt; нет этой функции в принципе?

Я думаю, что появление этих прототипов в Федоре - вопрос времени, может быть, уже в следующей версии glibc (2.24).
Вот буквально сеегодня Флориан отправил 10-ю итерацию:
https://sourceware.org/ml/libc-alpha/2016-05/msg00369.html

&gt; Т.е. апстрим в лице kernel.org это вряд ли примет,
&gt; пока эта функция не появится там официально. Или речь идет о локальной правке?

Честно говоря, я не вижу никаких механизмов в tools, которые бы позволили красиво пропатчить tools/include/linux/string.h таким образом, чтобы он работал у всех.  Можно написать авторам, что назревает проблема, может быть, они какой-нибудь механизм придумают.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156860</commentid>
    <comment_count>4</comment_count>
    <who name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</who>
    <bug_when>2016-05-19 12:11:08 +0300</bug_when>
    <thetext>Создал https://bugzilla.kernel.org/show_bug.cgi?id=118481</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156866</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2016-05-19 17:30:49 +0300</bug_when>
    <thetext>(In reply to comment #4)
&gt; Создал https://bugzilla.kernel.org/show_bug.cgi?id=118481

Спасибо.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188776</commentid>
    <comment_count>6</comment_count>
    <who name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</who>
    <bug_when>2020-03-25 00:21:47 +0300</bug_when>
    <thetext>(In reply to Dmitry V. Levin from comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Создал https://bugzilla.kernel.org/show_bug.cgi?id=118481
&gt; 
&gt; Спасибо.

Наверное, можно закрывать?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188780</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2020-03-25 00:32:47 +0300</bug_when>
    <thetext>(In reply to Konstantin A Lepikhov (L.A. Kostis) from comment #6)
&gt; (In reply to Dmitry V. Levin from comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; Создал https://bugzilla.kernel.org/show_bug.cgi?id=118481
&gt; &gt; 
&gt; &gt; Спасибо.
&gt; 
&gt; Наверное, можно закрывать?

Ту багу?  Да, конечно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196192</commentid>
    <comment_count>8</comment_count>
    <who name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</who>
    <bug_when>2021-02-11 22:50:52 +0300</bug_when>
    <thetext>(In reply to Dmitry V. Levin from comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (In reply to comment #1)
&gt; &gt; &gt; (In reply to comment #0)
....
&gt; Я думаю, что появление этих прототипов в Федоре - вопрос времени, может
&gt; быть, уже в следующей версии glibc (2.24).
&gt; Вот буквально сеегодня Флориан отправил 10-ю итерацию:
&gt; https://sourceware.org/ml/libc-alpha/2016-05/msg00369.html


Есть ли новости из апстрима?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196203</commentid>
    <comment_count>9</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2021-02-12 00:13:11 +0300</bug_when>
    <thetext>(In reply to Konstantin A Lepikhov (L.A. Kostis) from comment #8)
&gt; Есть ли новости из апстрима?

https://git.kernel.org/torvalds/c/6c4798d3f08b81c2c52936b10e0fa872590c96ae</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199189</commentid>
    <comment_count>10</comment_count>
    <who name="Konstantin A Lepikhov (L.A. Kostis)">lakostis</who>
    <bug_when>2021-06-15 10:34:18 +0300</bug_when>
    <thetext>- Закрываю, т.к. в ядре приложен костыль.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>