DragonFly bugs List (threaded) for 2010-03
[
Date Prev][
Date Next]
[Thread Prev][
Thread Next]
[
Date Index][
Thread Index]
[issue1711] memmem() in string.h should be more or less VISIBLE on x86_64?
New submission from David Shao <davshao@gmail.com>:
The memmem() function has a prototype given in /usr/include/string.h, (and
/usr/src/lib/libc/string/memmem.c exists) only it is required that __BSD_VISIBLE
be defined. Unfortunately a check of gcc 4.1.2
gcc -E -dM - < /dev/null | sort
shows no sign of any *VISIBLE.
Suppose on x86_64 some package, say scmgit-base, detects the existence of
memmem() yet because it too does not define any *VISIBLE uses an implicit
definition of memmem(), as is indicated in the build messages:
checking for memmem... yes
checking for library containing memmem... none required
and
diff.c:369: warning: implicit declaration of function 'memmem'
>From scmgit-base's configure it is just a simple test for memmem(), essentially just
char memmem ();
int
main ()
{
return memmem ();
;
return 0;
}
Then the return value of the actual memmem() that should be (void *) I believe
suddenly becomes an int, so that what used to be a valid pointer after the
return is now possibly not a valid pointer on x86_64 if it is truncated and then
sign extended to a negative 64-bit number. For example, using
git diff HEAD^ HEAD
produces segmentation fault errors.
So far setting
NO_MEMMEM = YesPlease
in git's entry for DragonFly in its Makefile does not appear to have solved the
problem.
----------
keyword: pkgsrc, standards
messages: 8329
nosy: davshao
status: unread
title: memmem() in string.h should be more or less VISIBLE on x86_64?
_____________________________________________________
DragonFly issue tracker <bugs@lists.dragonflybsd.org>
<http://bugs.dragonflybsd.org/issue1711>
_____________________________________________________
[
Date Prev][
Date Next]
[Thread Prev][
Thread Next]
[
Date Index][
Thread Index]