From 030341e663f32bc3740a1edf5e2a01c198c979f2 Mon Sep 17 00:00:00 2001
From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Mon, 22 Nov 2010 17:50:08 +0000
Subject: [PATCH] uClibc: fix ubicom32 compile error with 0.9.32

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@24101 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 .../601-ubicom32_uClibc_fixes.patch           | 32 +++++++++++++++++++
 1 file changed, 32 insertions(+)
 create mode 100644 toolchain/uClibc/patches-0.9.32/601-ubicom32_uClibc_fixes.patch

diff --git a/toolchain/uClibc/patches-0.9.32/601-ubicom32_uClibc_fixes.patch b/toolchain/uClibc/patches-0.9.32/601-ubicom32_uClibc_fixes.patch
new file mode 100644
index 000000000..0333046c2
--- /dev/null
+++ b/toolchain/uClibc/patches-0.9.32/601-ubicom32_uClibc_fixes.patch
@@ -0,0 +1,32 @@
+--- a/ldso/include/dl-elf.h
++++ b/ldso/include/dl-elf.h
+@@ -42,6 +42,10 @@
+ extern int _dl_fixup(struct dyn_elf *rpnt, int flag);
+ extern void _dl_protect_relro (struct elf_resolve *l);
+ 
++#ifndef DL_LOADADDR_ISSET(_loadaddr)
++#define DL_LOADADDR_ISSET(_loadaddr) ((_loadaddr) != 0)
++#endif
++
+ /*
+  * Bitsize related settings for things ElfW()
+  * does not handle already
+@@ -163,7 +167,7 @@
+ 			dynamic_info[tag] = (unsigned long) DL_RELOC_ADDR(load_off, dynamic_info[tag]); \
+ 	} while (0)
+ 	/* Don't adjust .dynamic unnecessarily.  */
+-	if (load_off != 0) {
++	if (DL_LOADADDR_ISSET(load_off)) {
+ 		ADJUST_DYN_INFO(DT_HASH, load_off);
+ 		ADJUST_DYN_INFO(DT_PLTGOT, load_off);
+ 		ADJUST_DYN_INFO(DT_STRTAB, load_off);
+--- a/ldso/ldso/ubicom32/dl-sysdep.h
++++ b/ldso/ldso/ubicom32/dl-sysdep.h
+@@ -101,6 +101,7 @@
+ } while (0)
+ 
+ #define DL_LOADADDR_TYPE struct elf32_fdpic_loadaddr
++#define DL_LOADADDR_ISSET(_loadaddr) ((_loadaddr).map != NULL)
+ 
+ #define DL_RELOC_ADDR(LOADADDR, ADDR) \
+     ((ElfW(Addr))__reloc_pointer ((void*)(ADDR), (LOADADDR).map))
-- 
2.20.1