ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Что это? Переопределение функций?
@ 2017-07-30 16:56 Дмитрий Ханжин
  2017-07-30 17:00 ` Pavel Vainerman
  0 siblings, 1 reply; 11+ messages in thread
From: Дмитрий Ханжин @ 2017-07-30 16:56 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 373 bytes --]

Привет.
Собираю новый релиз icewm, не пойму, что там наворотили.
Такое впечатление, что переопределяются strlcpy и strlcat.
Что это, и с чего начать, попробовать откатить
https://github.com/bbidulock/icewm/commit/a81206ffa7ae42ec32ed0c2b3e558a5ce72c6c41

[-- Attachment #2: log.txt --]
[-- Type: text/plain, Size: 9831 bytes --]

-- Build files have been written to: /usr/src/RPM/BUILD/icewm-githubmod/BUILD
+ popd
~/RPM/BUILD/icewm-githubmod
+ pushd BUILD
~/RPM/BUILD/icewm-githubmod/BUILD ~/RPM/BUILD/icewm-githubmod
+ '[' -n '' ']'
+ NPROCS=4
+ make -j4
make: Entering directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
make[1]: Entering directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
make[2]: Entering directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
make[2]: Entering directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
make[2]: Entering directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
make[2]: Entering directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
Scanning dependencies of target icesh
make[2]: Leaving directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
Scanning dependencies of target icewm-session
make[2]: Entering directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
make[2]: Leaving directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
Scanning dependencies of target icewmhint
Scanning dependencies of target genpref
make[2]: Entering directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
make[2]: Leaving directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
make[2]: Leaving directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
make[2]: Entering directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
[  0%] Building CXX object src/CMakeFiles/icesh.dir/icesh.cc.o
make[2]: Entering directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
[  0%] Building CXX object src/CMakeFiles/icewm-session.dir/icesm.cc.o
[  0%] Building CXX object src/CMakeFiles/icewmhint.dir/icewmhint.cc.o
[  0%] Building CXX object src/CMakeFiles/genpref.dir/genpref.cc.o
In file included from /usr/src/RPM/BUILD/icewm-githubmod/src/mstring.h:5:0,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/upath.h:4,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/ypixmap.h:6,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/ypaint.h:5,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/ypaths.h:12,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/yapp.h:4,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/yxapp.h:4,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/icesm.cc:4:
/usr/include/string.h:583:15: error: conflicting declaration of 'size_t strlcpy(char*, const char*, size_t)' with 'C' linkage
 extern size_t strlcpy (char *__restrict __dest,
               ^~~~~~~
In file included from /usr/src/RPM/BUILD/icewm-githubmod/src/icesm.cc:2:0:
/usr/src/RPM/BUILD/icewm-githubmod/src/base.h:47:8: note: previous declaration with 'C++' linkage
 size_t strlcpy(char *dest, const char *from, size_t dest_size);
        ^~~~~~~
In file included from /usr/src/RPM/BUILD/icewm-githubmod/src/mstring.h:5:0,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/upath.h:4,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/ypixmap.h:6,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/ypaint.h:5,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/ypaths.h:12,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/yapp.h:4,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/yxapp.h:4,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/icesm.cc:4:
/usr/include/string.h:583:15: error: declaration of 'size_t strlcpy(char*, const char*, size_t) throw ()' has a different exception specifier
 extern size_t strlcpy (char *__restrict __dest,
               ^~~~~~~
In file included from /usr/src/RPM/BUILD/icewm-githubmod/src/icesm.cc:2:0:
/usr/src/RPM/BUILD/icewm-githubmod/src/base.h:47:8: note: from previous declaration 'size_t strlcpy(char*, const char*, size_t)'
 size_t strlcpy(char *dest, const char *from, size_t dest_size);
        ^~~~~~~
In file included from /usr/src/RPM/BUILD/icewm-githubmod/src/mstring.h:5:0,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/upath.h:4,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/ypixmap.h:6,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/ypaint.h:5,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/ypaths.h:12,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/yapp.h:4,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/yxapp.h:4,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/icesm.cc:4:
/usr/include/string.h:589:15: error: conflicting declaration of 'size_t strlcat(char*, const char*, size_t)' with 'C' linkage
 extern size_t strlcat (char *__restrict __dest,
               ^~~~~~~
In file included from /usr/src/RPM/BUILD/icewm-githubmod/src/icesm.cc:2:0:
/usr/src/RPM/BUILD/icewm-githubmod/src/base.h:49:8: note: previous declaration with 'C++' linkage
 size_t strlcat(char *dest, const char *from, size_t dest_size);
        ^~~~~~~
In file included from /usr/src/RPM/BUILD/icewm-githubmod/src/mstring.h:5:0,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/upath.h:4,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/ypixmap.h:6,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/ypaint.h:5,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/ypaths.h:12,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/yapp.h:4,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/yxapp.h:4,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/icesm.cc:4:
/usr/include/string.h:589:15: error: declaration of 'size_t strlcat(char*, const char*, size_t) throw ()' has a different exception specifier
 extern size_t strlcat (char *__restrict __dest,
               ^~~~~~~
In file included from /usr/src/RPM/BUILD/icewm-githubmod/src/icesm.cc:2:0:
/usr/src/RPM/BUILD/icewm-githubmod/src/base.h:49:8: note: from previous declaration 'size_t strlcat(char*, const char*, size_t)'
 size_t strlcat(char *dest, const char *from, size_t dest_size);
        ^~~~~~~
In file included from /usr/src/RPM/BUILD/icewm-githubmod/src/sysdep.h:16:0,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/genpref.cc:9:
/usr/include/string.h:583:15: error: conflicting declaration of 'size_t strlcpy(char*, const char*, size_t)' with 'C' linkage
 extern size_t strlcpy (char *__restrict __dest,
               ^~~~~~~
In file included from /usr/src/RPM/BUILD/icewm-githubmod/src/genpref.cc:2:0:
/usr/src/RPM/BUILD/icewm-githubmod/src/base.h:47:8: note: previous declaration with 'C++' linkage
 size_t strlcpy(char *dest, const char *from, size_t dest_size);
        ^~~~~~~
In file included from /usr/src/RPM/BUILD/icewm-githubmod/src/sysdep.h:16:0,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/genpref.cc:9:
/usr/include/string.h:583:15: error: declaration of 'size_t strlcpy(char*, const char*, size_t) throw ()' has a different exception specifier
 extern size_t strlcpy (char *__restrict __dest,
               ^~~~~~~
In file included from /usr/src/RPM/BUILD/icewm-githubmod/src/genpref.cc:2:0:
/usr/src/RPM/BUILD/icewm-githubmod/src/base.h:47:8: note: from previous declaration 'size_t strlcpy(char*, const char*, size_t)'
 size_t strlcpy(char *dest, const char *from, size_t dest_size);
        ^~~~~~~
In file included from /usr/src/RPM/BUILD/icewm-githubmod/src/sysdep.h:16:0,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/genpref.cc:9:
/usr/include/string.h:589:15: error: conflicting declaration of 'size_t strlcat(char*, const char*, size_t)' with 'C' linkage
 extern size_t strlcat (char *__restrict __dest,
               ^~~~~~~
In file included from /usr/src/RPM/BUILD/icewm-githubmod/src/genpref.cc:2:0:
/usr/src/RPM/BUILD/icewm-githubmod/src/base.h:49:8: note: previous declaration with 'C++' linkage
 size_t strlcat(char *dest, const char *from, size_t dest_size);
        ^~~~~~~
In file included from /usr/src/RPM/BUILD/icewm-githubmod/src/sysdep.h:16:0,
                 from /usr/src/RPM/BUILD/icewm-githubmod/src/genpref.cc:9:
/usr/include/string.h:589:15: error: declaration of 'size_t strlcat(char*, const char*, size_t) throw ()' has a different exception specifier
 extern size_t strlcat (char *__restrict __dest,
               ^~~~~~~
In file included from /usr/src/RPM/BUILD/icewm-githubmod/src/genpref.cc:2:0:
/usr/src/RPM/BUILD/icewm-githubmod/src/base.h:49:8: note: from previous declaration 'size_t strlcat(char*, const char*, size_t)'
 size_t strlcat(char *dest, const char *from, size_t dest_size);
        ^~~~~~~
make[2]: *** [src/CMakeFiles/genpref.dir/genpref.cc.o] Error 1
make[2]: Leaving directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
make[1]: *** [src/CMakeFiles/genpref.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[  0%] Building CXX object src/CMakeFiles/icewmhint.dir/misc.cc.o
[  0%] Building CXX object src/CMakeFiles/icesh.dir/misc.cc.o
make[2]: *** [src/CMakeFiles/icewm-session.dir/icesm.cc.o] Error 1
make[2]: Leaving directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
make[1]: *** [src/CMakeFiles/icewm-session.dir/all] Error 2
[  1%] Building CXX object src/CMakeFiles/icesh.dir/mstring.cc.o
[  1%] Linking CXX executable ../icewmhint
[  1%] Linking CXX executable ../icesh
make[2]: Leaving directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
[  1%] Built target icewmhint
make[2]: Leaving directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
[  1%] Built target icesh
make[1]: Leaving directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
make: *** [all] Error 2
make: Leaving directory `/usr/src/RPM/BUILD/icewm-githubmod/BUILD'
error: Bad exit status from /usr/src/tmp/rpm-tmp.97538 (%build)


RPM build errors:
    Bad exit status from /usr/src/tmp/rpm-tmp.97538 (%build)
Command exited with non-zero status 1
2.80user 16.99system 0:16.23elapsed 121%CPU (0avgtext+0avgdata 40236maxresident)k
0inputs+0outputs (0major+607291minor)pagefaults 0swaps
hsh-rebuild: rebuild of `pkg.tar' failed.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] Что это? Переопределение функций?
  2017-07-30 16:56 [devel] Что это? Переопределение функций? Дмитрий Ханжин
@ 2017-07-30 17:00 ` Pavel Vainerman
  2017-07-30 18:12   ` Дмитрий Ханжин
  0 siblings, 1 reply; 11+ messages in thread
From: Pavel Vainerman @ 2017-07-30 17:00 UTC (permalink / raw)
  To: ALT Linux Team development discussions


 Ну вроде как определение здесь
/usr/src/RPM/BUILD/icewm-githubmod/src/base.h
конфликтует с определением здесь
/usr/include/string.h

Здесь не видно.. но судя по.. has a different exception specifier
не совпадает по спецификации исключений.

у меня в /usr/include/string.h

extern size_t strlcpy (char *__dst, __const char *__src, size_t __n)
     __THROW __nonnull ((1, 2));

смотрите что там в icewm-githubmod/src/base.h

-- 
Pavel Vainerman
www.etersoft.ru


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] Что это? Переопределение функций?
  2017-07-30 17:00 ` Pavel Vainerman
@ 2017-07-30 18:12   ` Дмитрий Ханжин
  2017-07-30 18:57     ` Pavel Vainerman
  0 siblings, 1 reply; 11+ messages in thread
From: Дмитрий Ханжин @ 2017-07-30 18:12 UTC (permalink / raw)
  To: devel

30.07.2017 20:00, Pavel Vainerman пишет:
> 
>   Ну вроде как определение здесь
> /usr/src/RPM/BUILD/icewm-githubmod/src/base.h
> конфликтует с определением здесь
> /usr/include/string.h
> 
> Здесь не видно.. но судя по.. has a different exception specifier
> не совпадает по спецификации исключений.
> 
> у меня в /usr/include/string.h
> 
> extern size_t strlcpy (char *__dst, __const char *__src, size_t __n)
>       __THROW __nonnull ((1, 2));
> 
> смотрите что там в icewm-githubmod/src/base.h
> 

В /usr/include/string.h:
#ifdef __USE_MISC
/* Copy at most N - 1 characters from SRC to DEST.  */
extern size_t strlcpy (char *__restrict __dest,
		       const char *__restrict __src, size_t __n)
   __THROW __nonnull ((2));

/* Append SRC to DEST, possibly with truncation to keep the total size
    below N.  */
extern size_t strlcat (char *__restrict __dest,
		       const char *__restrict __src, size_t __n)
   __THROW __nonnull ((2));
#endif

В src/base.h:
/* Prefer this as a safer alternative over strcpy. Return strlen(from). */
size_t strlcpy(char *dest, const char *from, size_t dest_size);
/* Prefer this over strcat. Return strlen(dest) + strlen(from). */
size_t strlcat(char *dest, const char *from, size_t dest_size);

Вроде как определения похожи, нафига продублировали.
Вымарал из base.h, собралось. Работоспособность пока не проверял.
Как же-ж лучше сделать?


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] Что это? Переопределение функций?
  2017-07-30 18:12   ` Дмитрий Ханжин
@ 2017-07-30 18:57     ` Pavel Vainerman
  2017-07-31  5:13       ` Дмитрий Ханжин
  0 siblings, 1 reply; 11+ messages in thread
From: Pavel Vainerman @ 2017-07-30 18:57 UTC (permalink / raw)
  To: devel

30.07.2017 21:12, Дмитрий Ханжин пишет:

> Вроде как определения похожи, нафига продублировали.
> Вымарал из base.h, собралось. Работоспособность пока не проверял.
> Как же-ж лучше сделать?

  Возможно "безопаснее" было бы добавить __THROW __nonnull ((2));
в определения из base.h  не зря ведь их переопределяли, может какая-то
своя "оптимизированная" реализация. Но тут надо знать историю для чего
base.h или это в компиляторе добавили throw..



-- 
Pavel Vainerman
www.etersoft.ru


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] Что это? Переопределение функций?
  2017-07-30 18:57     ` Pavel Vainerman
@ 2017-07-31  5:13       ` Дмитрий Ханжин
  2017-07-31  9:58         ` Michael Shigorin
  0 siblings, 1 reply; 11+ messages in thread
From: Дмитрий Ханжин @ 2017-07-31  5:13 UTC (permalink / raw)
  To: devel

30.07.2017 21:57, Pavel Vainerman пишет:
> 30.07.2017 21:12, Дмитрий Ханжин пишет:
> 
>> Вроде как определения похожи, нафига продублировали.
>> Вымарал из base.h, собралось. Работоспособность пока не проверял.
>> Как же-ж лучше сделать?
> 
>    Возможно "безопаснее" было бы добавить __THROW __nonnull ((2));
> в определения из base.h  не зря ведь их переопределяли, может какая-то
> своя "оптимизированная" реализация. Но тут надо знать историю для чего
> base.h или это в компиляторе добавили throw..
> 

Оказывается, в Дебиане, в string.h, определений strlcpy, strlcat нет.
Спасибо, теперь я примерно представляю, о чем спрашивать апстрим.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] Что это? Переопределение функций?
  2017-07-31  5:13       ` Дмитрий Ханжин
@ 2017-07-31  9:58         ` Michael Shigorin
  2017-07-31 10:15           ` Konstantin Lepikhov
  0 siblings, 1 reply; 11+ messages in thread
From: Michael Shigorin @ 2017-07-31  9:58 UTC (permalink / raw)
  To: devel

On Mon, Jul 31, 2017 at 08:13:12AM +0300, Дмитрий Ханжин wrote:
> >> Вроде как определения похожи, нафига продублировали.
> >> Вымарал из base.h, собралось. Работоспособность пока не проверял.
> >> Как же-ж лучше сделать?
> > Возможно "безопаснее" было бы добавить __THROW __nonnull
> > ((2)); в определения из base.h  не зря ведь их
> > переопределяли, может какая-то своя "оптимизированная"
> > реализация. Но тут надо знать историю для чего
> > base.h или это в компиляторе добавили throw..
> Оказывается, в Дебиане, в string.h, определений strlcpy, strlcat нет.

Это одна из http://altlinux.org/features

> Спасибо, теперь я примерно представляю, о чем спрашивать апстрим.

Скорее стоит им рассказать о том, что такие glibc бывают. :)

-- 
 ---- WBR, Michael Shigorin / http://altlinux.org
  ------ http://opennet.ru / http://anna-news.info


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] Что это? Переопределение функций?
  2017-07-31  9:58         ` Michael Shigorin
@ 2017-07-31 10:15           ` Konstantin Lepikhov
  2017-07-31 10:52             ` Dmitry V. Levin
  0 siblings, 1 reply; 11+ messages in thread
From: Konstantin Lepikhov @ 2017-07-31 10:15 UTC (permalink / raw)
  To: devel

Hi Michael!

On 07/31/17, at 12:58:08 PM you wrote:

> On Mon, Jul 31, 2017 at 08:13:12AM +0300, Дмитрий Ханжин wrote:
> > >> Вроде как определения похожи, нафига продублировали.
> > >> Вымарал из base.h, собралось. Работоспособность пока не проверял.
> > >> Как же-ж лучше сделать?
> > > Возможно "безопаснее" было бы добавить __THROW __nonnull
> > > ((2)); в определения из base.h  не зря ведь их
> > > переопределяли, может какая-то своя "оптимизированная"
> > > реализация. Но тут надо знать историю для чего
> > > base.h или это в компиляторе добавили throw..
> > Оказывается, в Дебиане, в string.h, определений strlcpy, strlcat нет.
> 
> Это одна из http://altlinux.org/features
> 
> > Спасибо, теперь я примерно представляю, о чем спрашивать апстрим.
> 
> Скорее стоит им рассказать о том, что такие glibc бывают. :)
Не поможет - https://bugzilla.kernel.org/show_bug.cgi?id=118481 Скорее,
лучше не делать такую glibc про которую ни один апстрим не знает. Хотя,
это скорее к ldv@ вопрос.

-- 
WBR et al.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] Что это? Переопределение функций?
  2017-07-31 10:15           ` Konstantin Lepikhov
@ 2017-07-31 10:52             ` Dmitry V. Levin
  2017-07-31 18:56               ` Дмитрий Ханжин
  0 siblings, 1 reply; 11+ messages in thread
From: Dmitry V. Levin @ 2017-07-31 10:52 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 1372 bytes --]

Hi,

On Mon, Jul 31, 2017 at 12:15:47PM +0200, Konstantin Lepikhov wrote:
> On 07/31/17, at 12:58:08 PM you wrote:
> > On Mon, Jul 31, 2017 at 08:13:12AM +0300, Дмитрий Ханжин wrote:
> > > >> Вроде как определения похожи, нафига продублировали.
> > > >> Вымарал из base.h, собралось. Работоспособность пока не проверял.
> > > >> Как же-ж лучше сделать?
> > > > Возможно "безопаснее" было бы добавить __THROW __nonnull
> > > > ((2)); в определения из base.h  не зря ведь их
> > > > переопределяли, может какая-то своя "оптимизированная"
> > > > реализация. Но тут надо знать историю для чего
> > > > base.h или это в компиляторе добавили throw..
> > > Оказывается, в Дебиане, в string.h, определений strlcpy, strlcat нет.
> > 
> > Это одна из http://altlinux.org/features
> > 
> > > Спасибо, теперь я примерно представляю, о чем спрашивать апстрим.
> > 
> > Скорее стоит им рассказать о том, что такие glibc бывают. :)
> Не поможет - https://bugzilla.kernel.org/show_bug.cgi?id=118481 Скорее,
> лучше не делать такую glibc про которую ни один апстрим не знает. Хотя,
> это скорее к ldv@ вопрос.

Текущее состояние по добавлению strlcpy и strlcat в glibc:
https://sourceware.org/ml/libc-alpha/2017-06/msg00703.html
На данный момент остался только один человек, препятствующий принятию
этого патча.  Ну что же, подождём ещё немного.


-- 
ldv

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] Что это? Переопределение функций?
  2017-07-31 10:52             ` Dmitry V. Levin
@ 2017-07-31 18:56               ` Дмитрий Ханжин
  2017-07-31 19:30                 ` Dmitry V. Levin
  0 siblings, 1 reply; 11+ messages in thread
From: Дмитрий Ханжин @ 2017-07-31 18:56 UTC (permalink / raw)
  To: devel

31.07.2017 13:52, Dmitry V. Levin пишет:
> Hi,
> 
> 
> Текущее состояние по добавлению strlcpy и strlcat в glibc:
> https://sourceware.org/ml/libc-alpha/2017-06/msg00703.html
> На данный момент остался только один человек, препятствующий принятию
> этого патча.  Ну что же, подождём ещё немного.
>

Вот что мне ответили:

> Thanks for your comment!
> If we modify the prototype declaration will it then not conflict with other distributions?
> __THROW is a preprocesor symbol which not all compilers may have?
> Similar for __nonnull.
> The declarations we have now originate from OpenBSD/FreeBSD.
> ALT Linux wants to improve on them and so introduces differences?
> Does ALT Linux have a preprocessor symbol by which we can identify it?
> Is there a way we can avoid the ALT Linux declaration from string.h?
> Could you perhaps attach the output of g++ -E /usr/include/string.h ?
> What would be harmless is if you add a extern "C" linkage specification.
> Would that suffice? Probably not.
> What does the ALT Linux team say?
> Sorry for all the questions.

Прокомментируйте, пожалуйста, я так глубоко не интересовался.
Вывод g++ -E /usr/include/string.h на предмет strlcpy и strlcat:

extern size_t strlcpy (char *__restrict __dest,
          const char *__restrict __src, size_t __n)

# 585 "string.h" 3 4
  throw () __attribute__ ((__nonnull__
# 585 "string.h"
          (2)
# 585 "string.h" 3 4
          ))
# 585 "string.h"
                         ;



extern size_t strlcat (char *__restrict __dest,
          const char *__restrict __src, size_t __n)

# 591 "string.h" 3 4
  throw () __attribute__ ((__nonnull__
# 591 "string.h"
          (2)
# 591 "string.h" 3 4
          ))
# 591 "string.h"
                         ;
Ссылку выше прочитал, но тоже ничего не понял. :-(
Прошу прощения.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] Что это? Переопределение функций?
  2017-07-31 18:56               ` Дмитрий Ханжин
@ 2017-07-31 19:30                 ` Dmitry V. Levin
  2017-08-01 17:42                   ` [devel] [thx] " Дмитрий Ханжин
  0 siblings, 1 reply; 11+ messages in thread
From: Dmitry V. Levin @ 2017-07-31 19:30 UTC (permalink / raw)
  To: ALT Devel discussion list


[-- Attachment #1.1: Type: text/plain, Size: 1540 bytes --]

On Mon, Jul 31, 2017 at 09:56:02PM +0300, Дмитрий Ханжин wrote:
> 31.07.2017 13:52, Dmitry V. Levin пишет:
> > Hi,
> > 
> > Текущее состояние по добавлению strlcpy и strlcat в glibc:
> > https://sourceware.org/ml/libc-alpha/2017-06/msg00703.html
> > На данный момент остался только один человек, препятствующий принятию
> > этого патча.  Ну что же, подождём ещё немного.
> >
> 
> Вот что мне ответили:
> 
> > Thanks for your comment!
> > If we modify the prototype declaration will it then not conflict with other distributions?
> > __THROW is a preprocesor symbol which not all compilers may have?
> > Similar for __nonnull.
> > The declarations we have now originate from OpenBSD/FreeBSD.
> > ALT Linux wants to improve on them and so introduces differences?
> > Does ALT Linux have a preprocessor symbol by which we can identify it?
> > Is there a way we can avoid the ALT Linux declaration from string.h?
> > Could you perhaps attach the output of g++ -E /usr/include/string.h ?
> > What would be harmless is if you add a extern "C" linkage specification.
> > Would that suffice? Probably not.
> > What does the ALT Linux team say?
> > Sorry for all the questions.
> 
> Прокомментируйте, пожалуйста, я так глубоко не интересовался.

Апстрим не в теме, и, судя по коду, не скоро будет в теме.

Попробуйте с приложенным патчем, я его не пробовал компилировать,
но, полагаю, что он поможет.  Не забудьте перегенерить configure.

> Ссылку выше прочитал, но тоже ничего не понял. :-(

Жаль.


-- 
ldv

[-- Attachment #1.2: 0001-Do-not-override-strlcpy-and-strlcat-provided-by-the-.patch --]
[-- Type: text/x-patch, Size: 3122 bytes --]

From 2939af61a1e92f7f03950a57f74abaa5bcd0ac07 Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <ldv@altlinux.org>
Date: Mon, 31 Jul 2017 19:17:17 +0000
Subject: [PATCH] Do not override strlcpy and strlcat provided by the OS

---
 configure.ac | 2 +-
 src/base.h   | 5 +++++
 src/misc.cc  | 7 +++++++
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index fe9176e..b004fd2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -119,7 +119,7 @@ if test x$cross_compling != xyes ; then :; AC_FUNC_MALLOC fi
 AC_FUNC_MMAP
 if test x$cross_compling != xyes ; then :; AC_FUNC_REALLOC fi
 AC_FUNC_STRNLEN
-AC_CHECK_FUNCS([dup2 getcwd gethostbyname gethostname gettimeofday mblen memchr memmove memset mkdir nl_langinfo putenv select setlocale socket strcasecmp strchr strcspn strdup strerror strncasecmp strrchr strspn strstr strtol sysinfo uname abort wordexp])
+AC_CHECK_FUNCS([dup2 getcwd gethostbyname gethostname gettimeofday mblen memchr memmove memset mkdir nl_langinfo putenv select setlocale socket strcasecmp strchr strcspn strdup strerror strlcpy strlcat strncasecmp strrchr strspn strstr strtol sysinfo uname abort wordexp])
 AC_CHECK_FUNCS([gettimeofday putenv select socket strtol strtoul basename])
 AC_CHECK_FUNCS([sysctlbyname asprintf])
 AC_CHECK_FUNC([getloadavg],[AC_DEFINE([HAVE_GETLOADAVG2], 1, [getloadavg() is available])])
diff --git a/src/base.h b/src/base.h
index 0df34cc..b76ec69 100644
--- a/src/base.h
+++ b/src/base.h
@@ -1,6 +1,7 @@
 #ifndef __BASE_H
 #define __BASE_H
 
+#include "config.h"
 #include <stddef.h>
 
 #ifndef __GNUC__
@@ -48,10 +49,14 @@ inline T abs(T v) {
 
 /*** String Functions *********************************************************/
 
+#ifndef HAVE_STRLCPY
 /* Prefer this as a safer alternative over strcpy. Return strlen(from). */
 size_t strlcpy(char *dest, const char *from, size_t dest_size);
+#endif
+#ifndef HAVE_STRLCAT
 /* Prefer this over strcat. Return strlen(dest) + strlen(from). */
 size_t strlcat(char *dest, const char *from, size_t dest_size);
+#endif
 
 char *newstr(char const *str);
 char *newstr(char const *str, int len);
diff --git a/src/misc.cc b/src/misc.cc
index b0ac1c9..3a88276 100644
--- a/src/misc.cc
+++ b/src/misc.cc
@@ -447,6 +447,8 @@ void operator delete[](void *p) {
 
 #endif
 
+#ifndef HAVE_STRLCPY
+
 /* Prefer this as a safer alternative over strcpy. Return strlen(from). */
 size_t strlcpy(char *dest, const char *from, size_t dest_size)
 {
@@ -461,6 +463,9 @@ size_t strlcpy(char *dest, const char *from, size_t dest_size)
     while (*in) ++in;
     return in - from;
 }
+#endif
+
+#ifndef HAVE_STRLCAT
 
 /* Prefer this over strcat. Return strlen(dest) + strlen(from). */
 size_t strlcat(char *dest, const char *from, size_t dest_size)
@@ -471,6 +476,8 @@ size_t strlcat(char *dest, const char *from, size_t dest_size)
     return to - dest + strlcpy(to, from, dest_size - (to - dest));
 }
 
+#endif
+
 char *newstr(char const *str) {
     return (str != NULL ? newstr(str, strlen(str)) : NULL);
 }
-- 
ldv

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] [thx] Что это? Переопределение функций?
  2017-07-31 19:30                 ` Dmitry V. Levin
@ 2017-08-01 17:42                   ` Дмитрий Ханжин
  0 siblings, 0 replies; 11+ messages in thread
From: Дмитрий Ханжин @ 2017-08-01 17:42 UTC (permalink / raw)
  To: devel

31.07.2017 22:30, Dmitry V. Levin пишет:
> On Mon, Jul 31, 2017 at 09:56:02PM +0300, Дмитрий Ханжин wrote:
>> 31.07.2017 13:52, Dmitry V. Levin пишет:
>>> Hi,
>>>
>>> Текущее состояние по добавлению strlcpy и strlcat в glibc:
>>> https://sourceware.org/ml/libc-alpha/2017-06/msg00703.html
>>> На данный момент остался только один человек, препятствующий принятию
>>> этого патча.  Ну что же, подождём ещё немного.
>>>
>>
> 
> Апстрим не в теме, и, судя по коду, не скоро будет в теме.
> 
> Попробуйте с приложенным патчем, я его не пробовал компилировать,
> но, полагаю, что он поможет.  Не забудьте перегенерить configure.
> 
Большое спасибо!

>> Ссылку выше прочитал, но тоже ничего не понял. :-(
> 
> Жаль.
> 
Мне тоже. Но это вопрос времени и некоторого шевеления мозгами.
Таки я в первую очередь шоферюга, а ваяю по-любительски,
в перерывах между сном и едой. :-)


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2017-08-01 17:42 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-30 16:56 [devel] Что это? Переопределение функций? Дмитрий Ханжин
2017-07-30 17:00 ` Pavel Vainerman
2017-07-30 18:12   ` Дмитрий Ханжин
2017-07-30 18:57     ` Pavel Vainerman
2017-07-31  5:13       ` Дмитрий Ханжин
2017-07-31  9:58         ` Michael Shigorin
2017-07-31 10:15           ` Konstantin Lepikhov
2017-07-31 10:52             ` Dmitry V. Levin
2017-07-31 18:56               ` Дмитрий Ханжин
2017-07-31 19:30                 ` Dmitry V. Levin
2017-08-01 17:42                   ` [devel] [thx] " Дмитрий Ханжин

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git