History

Fixed x86-64 long double passing.

long double arguments require 16-byte alignment on the stack, which requires adjustment when the the stack offset is not an evven number of 8-byte words.

James Lyon committed 13 years ago

Commit 6ee366e1 parent 41d76e14 files · +206 −123Browse files

Showing the changes to include (1 of 4 files). Show all

Unified · Split

include/stdarg.h+2−2
@@ -7,13 +7,13 @@ · 6 unmodified lines
77 typedef void *va_list;
88
99 va_list __va_start(void *fp);
10−void *__va_arg(va_list ap, int arg_type, int size);
10+void *__va_arg(va_list ap, int arg_type, int size, int align);
1111 va_list __va_copy(va_list src);
1212 void __va_end(va_list ap);
1313
1414 #define va_start(ap, last) ((ap) = __va_start(__builtin_frame_address(0)))
1515 #define va_arg(ap, type) \
16− (*(type *)(__va_arg(ap, __builtin_va_arg_types(type), sizeof(type))))
16+ (*(type *)(__va_arg(ap, __builtin_va_arg_types(type), sizeof(type), __alignof__(type))))
1717 #define va_copy(dest, src) ((dest) = __va_copy(src))
1818 #define va_end(ap) __va_end(ap)
1919

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t