summaryrefslogtreecommitdiff
path: root/include/stdio.h
diff options
context:
space:
mode:
authorsin2015-03-13 14:22:41 +0000
committersin2015-03-13 14:22:41 +0000
commitc2b0ad0bf55d5fe63c6e56e64cbd252a772dbbc0 (patch)
tree40ee48fc065bc5c2baa8a94478cb72f36d514fd7 /include/stdio.h
parent2b6657b759551ce485746d3e7f59725fa9f28dbf (diff)
Re-order vsnprintf() and vsprintf()
vsprintf() needs to access __vsnprintf_orig().
Diffstat (limited to 'include/stdio.h')
-rw-r--r--include/stdio.h24
1 files changed, 12 insertions, 12 deletions
diff --git a/include/stdio.h b/include/stdio.h
index f5fb144..f157038 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -54,6 +54,18 @@ size_t fwrite(const void *dst, size_t n, size_t nmemb, FILE *fp)
54 return __fwrite_orig(dst, n, nmemb, fp); 54 return __fwrite_orig(dst, n, nmemb, fp);
55} 55}
56 56
57extern int __vsnprintf_orig(char *, size_t, const char *, __builtin_va_list)
58 __asm__(__USER_LABEL_PREFIX__ "vsnprintf");
59extern __inline __attribute__((__always_inline__,__gnu_inline__))
60int vsnprintf(char *s, size_t n, const char *fmt, __builtin_va_list ap)
61{
62 size_t bos = __builtin_object_size(s, 0);
63
64 if (n > bos)
65 __builtin_trap();
66 return __vsnprintf_orig(s, n, fmt, ap);
67}
68
57extern int __vsprintf_orig(char *, const char *, __builtin_va_list) 69extern int __vsprintf_orig(char *, const char *, __builtin_va_list)
58 __asm__(__USER_LABEL_PREFIX__ "vsprintf"); 70 __asm__(__USER_LABEL_PREFIX__ "vsprintf");
59extern __inline __attribute__((__always_inline__,__gnu_inline__)) 71extern __inline __attribute__((__always_inline__,__gnu_inline__))
@@ -72,18 +84,6 @@ int vsprintf(char *s, const char *fmt, __builtin_va_list ap)
72 return r; 84 return r;
73} 85}
74 86
75extern int __vsnprintf_orig(char *, size_t, const char *, __builtin_va_list)
76 __asm__(__USER_LABEL_PREFIX__ "vsnprintf");
77extern __inline __attribute__((__always_inline__,__gnu_inline__))
78int vsnprintf(char *s, size_t n, const char *fmt, __builtin_va_list ap)
79{
80 size_t bos = __builtin_object_size(s, 0);
81
82 if (n > bos)
83 __builtin_trap();
84 return __vsnprintf_orig(s, n, fmt, ap);
85}
86
87#undef snprintf 87#undef snprintf
88#define snprintf(s, n, fmt, ...) ({ \ 88#define snprintf(s, n, fmt, ...) ({ \
89 size_t _n = n; \ 89 size_t _n = n; \