* [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