33 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- a/ldso/include/dl-elf.h
 | 
						|
+++ b/ldso/include/dl-elf.h
 | 
						|
@@ -42,6 +42,10 @@ extern int _dl_linux_resolve(void);
 | 
						|
 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
 | 
						|
@@ -166,7 +170,7 @@ unsigned int __dl_parse_dynamic_info(Elf
 | 
						|
 	   we'd have to walk all the loadsegs to find out if it was
 | 
						|
 	   actually unnecessary, so skip this optimization.  */
 | 
						|
 #if !defined __FDPIC__ && !defined __DSBT__
 | 
						|
-	if (load_off != 0)
 | 
						|
+	if (DL_LOADADDR_ISSET(load_off))
 | 
						|
 #endif
 | 
						|
 	{
 | 
						|
 		ADJUST_DYN_INFO(DT_HASH, load_off);
 | 
						|
--- a/ldso/ldso/ubicom32/dl-sysdep.h
 | 
						|
+++ b/ldso/ldso/ubicom32/dl-sysdep.h
 | 
						|
@@ -101,6 +101,7 @@ do {									\
 | 
						|
 } 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))
 |