mpih-add1-asm.S:47:suffix or operands invalid for `push"mpih-add1-asm.S:48:suffix or operands invalid for `push"mpih-add1-asm.S:78:suffix or operands invalid for `jmp"mpih-add1-asm.S:113:suffix or operands invalid for `pop"mpih-add1-asm.S:114:suffix or operands invalid for `pop"这个错误可通过在configure时增加可选项disable-asm来避免。./configure --disable-asmserv.c:515:41: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c: In function "peer_print_info":serv.c:515: error: "__darwin_obsz" undeclared (first use in this function)serv.c:515: error: (Each undeclared identifier is reported only onceserv.c:515: error: for each function it appears in.)serv.c:515: error: expected expression before ")" tokenserv.c:515: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:517:37: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:517: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:518:31: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:518: error: expected expression before ")" tokenserv.c:518: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:521:71: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:519: error: expected expression before ")" tokenserv.c:519: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:533:51: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:533: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:545:49: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:544: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:553:49: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:552: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:562:43: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:560: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:570:43: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:568: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:581:8: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:579: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:590:78: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:590: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:596:70: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:596: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:601:68: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:601: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:606:63: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:606: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:611:60: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:611: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:619:8: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:618: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:623:54: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:623: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a castserv.c:627:84: error: macro "__darwin_obsz" passed 2 arguments, but takes just 1serv.c:627: warning: passing argument 3 of "__builtin___snprintf_chk" makes integer from pointer without a cast这个错误是由于宏snprintf在Mac OS X 10.6下的不兼容造成的。解决方法是修改serv.c中的代码,将宏tmp2拆成两个宏。具体修改如下:-#define tmp2 &http_buffer[strlen(http_buffer)], len-strlen(http_buffer)+#define tmp2b &http_buffer[strlen(http_buffer)]+#define tmp2l len-strlen(http_buffer)Code built with gcc on Mac OS X 10.6 uses the object size checking feature of gcc by default. This involves redefiningseveral functions as macros; one of these functions is snprintf:#define snprintf(str, len, ...) __builtin___snprintf_chk (str, len, 0, __darwin_obsz(str), __VA_ARGS__)The usage of snprintf in src/serv.c in gnutls-2.10.4 is not compatible with that macro. serv.c attempts touse a macro (tmp2) that expands into two different arguments:#define tmp2 &http_buffer[strlen(http_buffer)], len-strlen(http_buffer)snprintf (tmp2, "%.2X", sesid[i]);Due to how nested macro evaluation works, the snprintf macro sees tmp2 as a single argument, and copies itinto __darwin_obsz(); then, when tmp2 is expanded, __darwin_obsz has two arguments, but it is onlydefined for one, and the result is a compilation error.One way to work around this issue might be to define _FORTIFY_SOURCE=0 so that the snprintf macro is notdefined, or simply doing an #undef snprintf for that file, but it seems safer and more portable to splittmp2 into two macros. I append a patch that does so.GnuTLS 的详细介绍:请点这里
|
|
评论声明
版权所有©石家庄振强科技有限公司2024 冀ICP备08103738号-5 网站地图
|