[git commit master 1/1] ldso: fix fdpic builds
Mike Frysinger
vapier at gentoo.org
Tue Feb 22 01:27:29 UTC 2011
commit: http://git.uclibc.org/uClibc/commit/?id=3ac213101204750950a129e1a245c4730525287f
branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/master
Commit 33cb7f0b4 tried to add a small optimization for skipping unnecessary
.dynamic adjustments, but did so by referencing an opaque type. While this
works for non-fdpic targets (since the type can be cast to an integer), it
falls apart for fdpic targets where the type is actually a structure.
Since FDPIC can't support this optimization without walking a series of
linked structures, just skip it.
Signed-off-by: Mike Frysinger <vapier at gentoo.org>
---
ldso/include/dl-elf.h | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/ldso/include/dl-elf.h b/ldso/include/dl-elf.h
index cbb2100..5aec64f 100644
--- a/ldso/include/dl-elf.h
+++ b/ldso/include/dl-elf.h
@@ -162,8 +162,13 @@ unsigned int __dl_parse_dynamic_info(ElfW(Dyn) *dpnt, unsigned long dynamic_info
if (dynamic_info[tag]) \
dynamic_info[tag] = (unsigned long) DL_RELOC_ADDR(load_off, dynamic_info[tag]); \
} while (0)
- /* Don't adjust .dynamic unnecessarily. */
- if (load_off != 0) {
+ /* Don't adjust .dynamic unnecessarily. For FDPIC targets,
+ we'd have to walk all the loadsegs to find out if it was
+ actually unnecessary, so skip this optimization. */
+#ifndef __FDPIC__
+ if (load_off != 0)
+#endif
+ {
ADJUST_DYN_INFO(DT_HASH, load_off);
ADJUST_DYN_INFO(DT_PLTGOT, load_off);
ADJUST_DYN_INFO(DT_STRTAB, load_off);
--
1.7.3.4
More information about the uClibc-cvs
mailing list