freebsd-skq/lib/libc/stdio
Jean-Sébastien Pédron 671c033623 Remove incorrect __restrict qualifier on several pointers
The typical case was:
static __inline int
convert_ccl(FILE *fp, char * __restrict p, [...])
{
        [...]

        if (p == SUPPRESS_PTR) {
		[...]
	} else {
		[...]
	}

	[...]
}

This qualifier says that the pointer is the only one at that time
pointing to the resource.

Here, clang considers that "p" will never match "SUPPRESS_PTR" and
optimize the if{} block out. This leads to segfaults in programs calling
vfscanf(3) and vfwscanf(3) with just the format string (no arguments
following it).

The following softwares were reported to abort with segmentation fault
and this patch fixes it:
    o  cmake
    o  smartd
    o  devel/ORBit2

dim@ opened an LLVM PR to discuss this clang optimization:
    http://llvm.org/bugs/show_bug.cgi?id=12656

Tested by:	bsam@
2012-04-30 11:28:17 +00:00
..
_flock_stub.c
asprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
clrerr.c
dprintf.c
fclose.3
fclose.c Take the spinlock around clearing of the fp->_flags in fclose(3), which 2012-04-24 17:51:36 +00:00
fcloseall.c
fdopen.c
feof.c
ferror.3
ferror.c
fflush.3
fflush.c
fgetc.c
fgetln.3
fgetln.c
fgetpos.c
fgets.3
fgets.c
fgetwc.c Previously, vfscanf()'s wide character processing functions were 2012-04-29 16:28:39 +00:00
fgetwln.3
fgetwln.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
fgetws.3
fgetws.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
fileno.c
findfp.c Take the spinlock around clearing of the fp->_flags in fclose(3), which 2012-04-24 17:51:36 +00:00
flags.c Add support for the 'x' mode option in fopen() as specified in the C1X 2011-10-21 06:35:58 +00:00
floatio.h
flockfile.3
fopen.3 Add support for the 'x' mode option in fopen() as specified in the C1X 2011-10-21 06:35:58 +00:00
fopen.c
fprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
fpurge.c
fputc.c
fputs.3
fputs.c
fputwc.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
fputws.3
fputws.c As noted by Peter Jeremy, r234528 only partially fixed the infinite 2012-04-21 07:31:27 +00:00
fread.3
fread.c
freopen.c When reopening a stream backed by an open file descriptor, do not close 2010-12-09 20:28:30 +00:00
fscanf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
fseek.3
fseek.c
fsetpos.c
ftell.c
funopen.3
funopen.c
fvwrite.c
fvwrite.h
fwalk.c
fwide.3
fwide.c
fwprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
fwrite.c
fwscanf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
getc.3
getc.c
getchar.c
getdelim.c
getline.3 Remove trailing whitespace per mdoc lint warning 2012-03-29 05:02:12 +00:00
getline.c
gets.c
getw.c
getwc.3
getwc.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
getwchar.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
glue.h
local.h Previously, vfscanf()'s wide character processing functions were 2012-04-29 16:28:39 +00:00
makebuf.c
Makefile.inc
mktemp.3 Remove outdated comment of seven years 2012-03-04 16:44:04 +00:00
mktemp.c
perror.c
printf-pos.c Remove two unused variables, left over from the refactoring in r180104. 2010-12-02 13:40:21 +00:00
printf.3 - Fix the claim that the output is always null-terminated. This isn't 2012-04-21 06:09:09 +00:00
printf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
printfcommon.h Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
printflocal.h
putc.3
putc.c
putchar.c
puts.c
putw.c
putwc.3
putwc.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
putwchar.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
refill.c
remove.3
remove.c
rewind.c
rget.c
scanf.3
scanf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
setbuf.3 Fix small documentation mistakes. 2012-04-28 21:50:30 +00:00
setbuf.c
setbuffer.c
setvbuf.c
snprintf.c If the size passed to {,v}s{w,n}printf is larger than INT_MAX+1 2012-04-21 06:10:18 +00:00
sprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
sscanf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
stdio.3
stdio.c
swprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
swscanf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
Symbol.map Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
tempnam.c
tmpfile.c
tmpnam.3
tmpnam.c
ungetc.3
ungetc.c
ungetwc.3
ungetwc.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
vasprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
vdprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
vfprintf.c If the size passed to {,v}s{w,n}printf is larger than INT_MAX+1 2012-04-21 06:10:18 +00:00
vfscanf.c Remove incorrect __restrict qualifier on several pointers 2012-04-30 11:28:17 +00:00
vfwprintf.c If the size passed to {,v}s{w,n}printf is larger than INT_MAX+1 2012-04-21 06:10:18 +00:00
vfwscanf.c Remove incorrect __restrict qualifier on several pointers 2012-04-30 11:28:17 +00:00
vprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
vscanf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
vsnprintf.c If the size passed to {,v}s{w,n}printf is larger than INT_MAX+1 2012-04-21 06:10:18 +00:00
vsprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
vsscanf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
vswprintf.c If the size passed to {,v}s{w,n}printf is larger than INT_MAX+1 2012-04-21 06:10:18 +00:00
vswscanf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
vwprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
vwscanf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
wbuf.c
wprintf.3
wprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
wscanf.3
wscanf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
wsetup.c
xprintf_errno.c
xprintf_float.c
xprintf_hexdump.c
xprintf_int.c
xprintf_quote.c
xprintf_str.c
xprintf_time.c Because we call __printf_out() with a on-stack buffer, also call 2011-03-06 19:47:46 +00:00
xprintf_vis.c
xprintf.c