blob: c618e267b63db76c9d5805f71232bd99deed2f05 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
--- 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))
|