summaryrefslogtreecommitdiff
path: root/cross/mips64el-unknown-linux-gnu-glibc/glibc-2.15-fix-res_query-assert.patch
diff options
context:
space:
mode:
authorNicolás Reynolds <apoyosis@correo.inta.gob.ar>2012-04-17 20:37:01 -0300
committerNicolás Reynolds <apoyosis@correo.inta.gob.ar>2012-04-17 20:37:01 -0300
commit76480b6b18868754fc95ff41d02885898c54367f (patch)
treeb3c9945f331f2cadd2be8a7dba5b2097c519998f /cross/mips64el-unknown-linux-gnu-glibc/glibc-2.15-fix-res_query-assert.patch
parent7a97ab610eea972771b91f51cb180f0f195b4da3 (diff)
downloadabslibre-76480b6b18868754fc95ff41d02885898c54367f.tar.gz
abslibre-76480b6b18868754fc95ff41d02885898c54367f.tar.bz2
abslibre-76480b6b18868754fc95ff41d02885898c54367f.zip
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.
Diffstat (limited to 'cross/mips64el-unknown-linux-gnu-glibc/glibc-2.15-fix-res_query-assert.patch')
-rw-r--r--cross/mips64el-unknown-linux-gnu-glibc/glibc-2.15-fix-res_query-assert.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/cross/mips64el-unknown-linux-gnu-glibc/glibc-2.15-fix-res_query-assert.patch b/cross/mips64el-unknown-linux-gnu-glibc/glibc-2.15-fix-res_query-assert.patch
new file mode 100644
index 000000000..a894da9c7
--- /dev/null
+++ b/cross/mips64el-unknown-linux-gnu-glibc/glibc-2.15-fix-res_query-assert.patch
@@ -0,0 +1,51 @@
+--- a/resolv/res_query.c
++++ a/resolv/res_query.c
+@@ -122,6 +122,7 @@ __libc_res_nquery(res_state statp,
+ int *resplen2)
+ {
+ HEADER *hp = (HEADER *) answer;
++ HEADER *hp2;
+ int n, use_malloc = 0;
+ u_int oflags = statp->_flags;
+
+@@ -239,26 +240,25 @@ __libc_res_nquery(res_state statp,
+ /* __libc_res_nsend might have reallocated the buffer. */
+ hp = (HEADER *) *answerp;
+
+- /* We simplify the following tests by assigning HP to HP2. It
+- is easy to verify that this is the same as ignoring all
+- tests of HP2. */
+- HEADER *hp2 = answerp2 ? (HEADER *) *answerp2 : hp;
+-
+- if (n < (int) sizeof (HEADER) && answerp2 != NULL
+- && *resplen2 > (int) sizeof (HEADER))
++ /* We simplify the following tests by assigning HP to HP2 or
++ vice versa. It is easy to verify that this is the same as
++ ignoring all tests of HP or HP2. */
++ if (answerp2 == NULL || *resplen2 < (int) sizeof (HEADER))
+ {
+- /* Special case of partial answer. */
+- assert (hp != hp2);
+- hp = hp2;
++ hp2 = hp;
+ }
+- else if (answerp2 != NULL && *resplen2 < (int) sizeof (HEADER)
+- && n > (int) sizeof (HEADER))
++ else
+ {
+- /* Special case of partial answer. */
+- assert (hp != hp2);
+- hp2 = hp;
++ hp2 = (HEADER *) *answerp2;
++ if (n < (int) sizeof (HEADER))
++ {
++ hp = hp2;
++ }
+ }
+
++ /* Make sure both hp and hp2 are defined */
++ assert((hp != NULL) && (hp2 != NULL));
++
+ if ((hp->rcode != NOERROR || ntohs(hp->ancount) == 0)
+ && (hp2->rcode != NOERROR || ntohs(hp2->ancount) == 0)) {
+ #ifdef DEBUG