From 76480b6b18868754fc95ff41d02885898c54367f Mon Sep 17 00:00:00 2001 From: Nicolás Reynolds Date: Tue, 17 Apr 2012 20:37:01 -0300 Subject: Updating the cross toolchain for mips64el Added patches from upstream and diff'ed with them. Binutils and linux-libre-api-headers are already built. GCC Core builts but `mips64el-unknown-linux-gnu-gcc -v dummy.c` fails because of missing -EL on i686-pc-linux-gnu-as. Exporting mips64el-...-binutils to the PATH solves the problem but mips64el-...-ld fails with missing crt*. No idea why target gcc decides to use the host as instead of the target one, since the PKGBUILD hasn't fundamentally changed. --- .../glibc-2.15-fmtmsg-locking.patch | 148 +++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 cross/mips64el-unknown-linux-gnu-glibc/glibc-2.15-fmtmsg-locking.patch (limited to 'cross/mips64el-unknown-linux-gnu-glibc/glibc-2.15-fmtmsg-locking.patch') diff --git a/cross/mips64el-unknown-linux-gnu-glibc/glibc-2.15-fmtmsg-locking.patch b/cross/mips64el-unknown-linux-gnu-glibc/glibc-2.15-fmtmsg-locking.patch new file mode 100644 index 000000000..f5976abd9 --- /dev/null +++ b/cross/mips64el-unknown-linux-gnu-glibc/glibc-2.15-fmtmsg-locking.patch @@ -0,0 +1,148 @@ +diff --git a/stdlib/fmtmsg.c b/stdlib/fmtmsg.c +index 9203317..4c02302 100644 +--- a/stdlib/fmtmsg.c ++++ b/stdlib/fmtmsg.c +@@ -103,7 +103,6 @@ fmtmsg (long int classification, const char *label, int severity, + const char *text, const char *action, const char *tag) + { + __libc_once_define (static, once); +- int result = MM_OK; + struct severity_info *severity_rec; + + /* Make sure everything is initialized. */ +@@ -124,17 +123,6 @@ fmtmsg (long int classification, const char *label, int severity, + return MM_NOTOK; + } + +- for (severity_rec = severity_list; severity_rec != NULL; +- severity_rec = severity_rec->next) +- if (severity == severity_rec->severity) +- /* Bingo. */ +- break; +- +- /* If we don't know anything about the severity level return an error. */ +- if (severity_rec == NULL) +- return MM_NOTOK; +- +- + #ifdef __libc_ptf_call + /* We do not want this call to be cut short by a thread + cancellation. Therefore disable cancellation for now. */ +@@ -143,54 +131,73 @@ fmtmsg (long int classification, const char *label, int severity, + 0); + #endif + +- /* Now we can print. */ +- if (classification & MM_PRINT) +- { +- int do_label = (print & label_mask) && label != MM_NULLLBL; +- int do_severity = (print & severity_mask) && severity != MM_NULLSEV; +- int do_text = (print & text_mask) && text != MM_NULLTXT; +- int do_action = (print & action_mask) && action != MM_NULLACT; +- int do_tag = (print & tag_mask) && tag != MM_NULLTAG; +- +- if (__fxprintf (stderr, "%s%s%s%s%s%s%s%s%s%s\n", +- do_label ? label : "", +- do_label && (do_severity | do_text | do_action | do_tag) +- ? ": " : "", +- do_severity ? severity_rec->string : "", +- do_severity && (do_text | do_action | do_tag) +- ? ": " : "", +- do_text ? text : "", +- do_text && (do_action | do_tag) ? "\n" : "", +- do_action ? "TO FIX: " : "", +- do_action ? action : "", +- do_action && do_tag ? " " : "", +- do_tag ? tag : "") < 0) +- /* Oh, oh. An error occurred during the output. */ +- result = MM_NOMSG; +- } ++ __libc_lock_lock (lock); + +- if (classification & MM_CONSOLE) ++ for (severity_rec = severity_list; severity_rec != NULL; ++ severity_rec = severity_rec->next) ++ if (severity == severity_rec->severity) ++ /* Bingo. */ ++ break; ++ ++ /* If we don't know anything about the severity level return an error. */ ++ int result = MM_NOTOK; ++ if (severity_rec != NULL) + { +- int do_label = label != MM_NULLLBL; +- int do_severity = severity != MM_NULLSEV; +- int do_text = text != MM_NULLTXT; +- int do_action = action != MM_NULLACT; +- int do_tag = tag != MM_NULLTAG; +- +- syslog (LOG_ERR, "%s%s%s%s%s%s%s%s%s%s\n", +- do_label ? label : "", +- do_label && (do_severity | do_text | do_action | do_tag) +- ? ": " : "", +- do_severity ? severity_rec->string : "", +- do_severity && (do_text | do_action | do_tag) ? ": " : "", +- do_text ? text : "", +- do_text && (do_action | do_tag) ? "\n" : "", +- do_action ? "TO FIX: " : "", +- do_action ? action : "", +- do_action && do_tag ? " " : "", +- do_tag ? tag : ""); ++ result = MM_OK; ++ ++ /* Now we can print. */ ++ if (classification & MM_PRINT) ++ { ++ int do_label = (print & label_mask) && label != MM_NULLLBL; ++ int do_severity = (print & severity_mask) && severity != MM_NULLSEV; ++ int do_text = (print & text_mask) && text != MM_NULLTXT; ++ int do_action = (print & action_mask) && action != MM_NULLACT; ++ int do_tag = (print & tag_mask) && tag != MM_NULLTAG; ++ int need_colon = (do_label ++ && (do_severity | do_text | do_action | do_tag)); ++ ++ if (__fxprintf (stderr, "%s%s%s%s%s%s%s%s%s%s\n", ++ do_label ? label : "", ++ need_colon ? ": " : "", ++ do_severity ? severity_rec->string : "", ++ do_severity && (do_text | do_action | do_tag) ++ ? ": " : "", ++ do_text ? text : "", ++ do_text && (do_action | do_tag) ? "\n" : "", ++ do_action ? "TO FIX: " : "", ++ do_action ? action : "", ++ do_action && do_tag ? " " : "", ++ do_tag ? tag : "") < 0) ++ /* Oh, oh. An error occurred during the output. */ ++ result = MM_NOMSG; ++ } ++ ++ if (classification & MM_CONSOLE) ++ { ++ int do_label = label != MM_NULLLBL; ++ int do_severity = severity != MM_NULLSEV; ++ int do_text = text != MM_NULLTXT; ++ int do_action = action != MM_NULLACT; ++ int do_tag = tag != MM_NULLTAG; ++ int need_colon = (do_label ++ && (do_severity | do_text | do_action | do_tag)); ++ ++ syslog (LOG_ERR, "%s%s%s%s%s%s%s%s%s%s\n", ++ do_label ? label : "", ++ need_colon ? ": " : "", ++ do_severity ? severity_rec->string : "", ++ do_severity && (do_text | do_action | do_tag) ? ": " : "", ++ do_text ? text : "", ++ do_text && (do_action | do_tag) ? "\n" : "", ++ do_action ? "TO FIX: " : "", ++ do_action ? action : "", ++ do_action && do_tag ? " " : "", ++ do_tag ? tag : ""); ++ } + } + ++ __libc_lock_unlock (lock); ++ + #ifdef __libc_ptf_call + __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0); + #endif -- cgit v1.2.3