From 85af58487290a46e7252504f2af808ad3c99d5d4 Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Sun, 13 Mar 2016 13:21:31 -0700 Subject: Unbreak powerpc-unknown-linux-uclibc. There is invalid assembly in dmalloc for PowerPC. The issue is that 'stw' expects a memory operand, and =g constraint allows both registers and memory. Newer GCC tends to choose register even at -O0, resulting in invalid assembly. Instead, force a register constraint in 'mflr' and let GCC decide if it wants to store it into memory at all. Reported this upstream. Signed-off-by: Alexey Neyman --- patches/dmalloc/5.5.2/170-ppc-bogus-assembly.patch | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 patches/dmalloc/5.5.2/170-ppc-bogus-assembly.patch (limited to 'patches') diff --git a/patches/dmalloc/5.5.2/170-ppc-bogus-assembly.patch b/patches/dmalloc/5.5.2/170-ppc-bogus-assembly.patch new file mode 100644 index 00000000..d92bd8aa --- /dev/null +++ b/patches/dmalloc/5.5.2/170-ppc-bogus-assembly.patch @@ -0,0 +1,13 @@ +diff -ur dmalloc-5.5.2.orig/return.h dmalloc-5.5.2/return.h +--- dmalloc-5.5.2.orig/return.h 2016-03-13 13:11:48.090431764 -0700 ++++ dmalloc-5.5.2/return.h 2016-03-13 13:12:11.246642618 -0700 +@@ -251,8 +251,7 @@ + + #define GET_RET_ADDR(file) \ + do { \ +- asm("mflr 0"); \ +- asm("stw 0,%0" : "=g" (file)); \ ++ asm("mflr %0" : "=r"(file)); \ + } while(0) + + #endif /* __powerpc__ && __GNUC__ && !__OPTIMIZE__ */ -- cgit v1.2.3 From 2c7f7cf84784dd86ce03665a7e65de927e03c23e Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Sun, 13 Mar 2016 15:40:57 -0700 Subject: Unbreak *-uclibc with native GDB. Currently, native GDB 7.11 fails to build with uClibc-ng due to undefined reference to _obstack_free. On IRC [http://crosstool-ng.osuosl.org/download/ibot-logs/2016-02-28.html], it has been suggested to disable obstack in uClibc configuration. I think it is a workaround rather than a fix: if another library/app needs obstack, this leaves no viable configuration. IMO, if uClibc seeks to mimic the glibc API, it should also provide _obstack_free call (an alias for which it already has, even though commented out). Signed-off-by: Alexey Neyman --- patches/uClibc-ng/1.0.12/100-provide-_obstack_free.patch | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 patches/uClibc-ng/1.0.12/100-provide-_obstack_free.patch (limited to 'patches') diff --git a/patches/uClibc-ng/1.0.12/100-provide-_obstack_free.patch b/patches/uClibc-ng/1.0.12/100-provide-_obstack_free.patch new file mode 100644 index 00000000..9fd4bc3a --- /dev/null +++ b/patches/uClibc-ng/1.0.12/100-provide-_obstack_free.patch @@ -0,0 +1,12 @@ +diff -ur uClibc-ng-1.0.12.orig/libc/misc/gnu/obstack.c uClibc-ng-1.0.12/libc/misc/gnu/obstack.c +--- uClibc-ng-1.0.12.orig/libc/misc/gnu/obstack.c 2016-03-13 15:08:44.408962824 -0700 ++++ uClibc-ng-1.0.12/libc/misc/gnu/obstack.c 2016-03-13 15:13:30.129322998 -0700 +@@ -385,7 +385,7 @@ + abort (); + } + +-# if 0 ++# if 1 + /* Older versions of libc used a function _obstack_free intended to be + called by non-GCC compilers. */ + strong_alias (obstack_free, _obstack_free) -- cgit v1.2.3