diff options
| author | Michael Brown | 2008-03-24 01:23:11 +0100 |
|---|---|---|
| committer | Michael Brown | 2008-03-24 01:23:11 +0100 |
| commit | dbf8a02e8f719390cc862866414781801d602ecf (patch) | |
| tree | a1ec98c03b4b2c11ebd44ed97f04c22b9b0023f8 /src | |
| parent | [Settings] copy_settings() should not fail if some settings are missing! (diff) | |
| download | ipxe-dbf8a02e8f719390cc862866414781801d602ecf.tar.gz ipxe-dbf8a02e8f719390cc862866414781801d602ecf.tar.xz ipxe-dbf8a02e8f719390cc862866414781801d602ecf.zip | |
[libc] Use __builtin_va_list et al in stdarg.h
The home-grown versions don't work properly for static variadic
functions, when gcc can choose to use a non-standard calling convention.
Diffstat (limited to 'src')
| -rw-r--r-- | src/arch/i386/include/stdarg.h | 22 | ||||
| -rw-r--r-- | src/include/stdarg.h | 10 |
2 files changed, 10 insertions, 22 deletions
diff --git a/src/arch/i386/include/stdarg.h b/src/arch/i386/include/stdarg.h deleted file mode 100644 index 1742cb3f4..000000000 --- a/src/arch/i386/include/stdarg.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef _STDARG_H -#define _STDARG_H - -typedef void * va_list; - -#define va_start( ap, last ) do { \ - ap = ( &last + 1 ); \ - } while ( 0 ) - -#define va_arg( ap, type ) ({ \ - type *_this = ap; \ - ap = ( _this + 1 ); \ - *(_this); \ - }) - -#define va_end( ap ) do { } while ( 0 ) - -#define va_copy( dest, src ) do { \ - dest = src; \ - } while ( 0 ) - -#endif /* _STDARG_H */ diff --git a/src/include/stdarg.h b/src/include/stdarg.h new file mode 100644 index 000000000..a4eb711d0 --- /dev/null +++ b/src/include/stdarg.h @@ -0,0 +1,10 @@ +#ifndef _STDARG_H +#define _STDARG_H + +typedef __builtin_va_list va_list; +#define va_start( ap, last ) __builtin_va_start ( ap, last ) +#define va_arg( ap, type ) __builtin_va_arg ( ap, type ) +#define va_end( ap ) __builtin_va_end ( ap ) +#define va_copy( dest, src ) __builtin_va_copy ( dest, src ) + +#endif /* _STDARG_H */ |
