Issue #1711 has been updated by Sascha Wildner. Status changed from New to Closed Assignee deleted (0)
All issues fixed, closing. ---------------------------------------- Bug #1711: memmem() in string.h should be more or less VISIBLE on x86_64? http://bugs.dragonflybsd.org/issues/1711 Author: David Shao Status: Closed Priority: Normal Assignee: Category: Target version: 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. -- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://bugs.dragonflybsd.org/my/account
