1 From 054fedda5ab9b84160d40d90cb967f2f5822b889 Mon Sep 17 00:00:00 2001
2 From: Khem Raj <raj.khem@gmail.com>
3 Date: Thu, 31 Dec 2015 06:35:34 +0000
4 Subject: [PATCH] build: Provide alternatives for glibc assumptions helps
7 Upstream-Status: Pending
8 Signed-off-by: Khem Raj <raj.khem@gmail.com>
11 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
15 lib/crc32_file.c | 1 +
16 lib/fixedsizehash.h | 1 -
17 lib/system.h | 10 ++++++++++
19 libasm/asm_end.c | 2 +-
20 libasm/asm_newscn.c | 2 +-
21 libcpu/i386_gendis.c | 2 +-
22 libcpu/i386_lex.c | 2 +-
23 libcpu/i386_parse.c | 2 +-
24 libdw/Makefile.am | 4 +++-
25 libdw/libdw_alloc.c | 2 +-
26 libdwfl/dwfl_build_id_find_elf.c | 3 ++-
27 libdwfl/dwfl_error.c | 4 +++-
28 libdwfl/dwfl_module_getdwarf.c | 1 +
29 libdwfl/find-debuginfo.c | 2 +-
30 libdwfl/libdwfl_crc32_file.c | 10 ++++++++++
31 libdwfl/linux-kernel-modules.c | 1 +
32 libebl/eblopenbackend.c | 2 +-
33 libelf/elf.h | 8 ++++++--
35 libelf/libelfP.h | 1 +
36 src/addr2line.c | 2 +-
42 src/findtextrel.c | 2 +-
52 tests/addrscopes.c | 2 +-
53 tests/allregs.c | 2 +-
54 tests/backtrace-data.c | 2 +-
55 tests/backtrace-dwarf.c | 2 +-
56 tests/backtrace.c | 2 +-
57 tests/buildid.c | 2 +-
58 tests/debugaltlink.c | 2 +-
59 tests/debuglink.c | 2 +-
60 tests/deleted.c | 2 +-
61 tests/dwfl-addr-sect.c | 2 +-
62 tests/dwfl-bug-addr-overflow.c | 2 +-
63 tests/dwfl-bug-fd-leak.c | 2 +-
64 tests/dwfl-bug-getmodules.c | 2 +-
65 tests/dwfl-report-elf-align.c | 2 +-
66 tests/dwfllines.c | 2 +-
67 tests/dwflmodtest.c | 2 +-
68 tests/dwflsyms.c | 2 +-
69 tests/early-offscn.c | 2 +-
71 tests/find-prologues.c | 2 +-
72 tests/funcretval.c | 2 +-
73 tests/funcscopes.c | 2 +-
74 tests/getsrc_die.c | 2 +-
75 tests/line2addr.c | 2 +-
76 tests/low_high_pc.c | 2 +-
77 tests/md5-sha1-test.c | 2 +-
78 tests/rdwrmmap.c | 2 +-
80 tests/sectiondump.c | 2 +-
81 tests/varlocs.c | 2 +-
82 tests/vdsosyms.c | 2 +-
83 70 files changed, 98 insertions(+), 64 deletions(-)
85 diff --git a/Makefile.am b/Makefile.am
86 index 2ff444e..41f77df 100644
89 @@ -28,7 +28,7 @@ pkginclude_HEADERS = version.h
91 # Add doc back when we have some real content.
92 SUBDIRS = config m4 lib libelf libebl libdwelf libdwfl libdw libcpu libasm \
93 - backends src po tests
96 EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \
97 COPYING COPYING-GPLV2 COPYING-LGPLV3
98 diff --git a/lib/color.c b/lib/color.c
99 index fde2d9d..73292ac 100644
116 /* Prototype for option handler. */
117 diff --git a/lib/crc32_file.c b/lib/crc32_file.c
118 index a8434d4..57e4298 100644
119 --- a/lib/crc32_file.c
120 +++ b/lib/crc32_file.c
123 #include <sys/stat.h>
124 #include <sys/mman.h>
128 crc32_file (int fd, uint32_t *resp)
129 diff --git a/lib/fixedsizehash.h b/lib/fixedsizehash.h
130 index dac2a5f..43016fc 100644
131 --- a/lib/fixedsizehash.h
132 +++ b/lib/fixedsizehash.h
137 -#include <sys/cdefs.h>
141 diff --git a/lib/system.h b/lib/system.h
142 index ccd99d6..0e93e60 100644
147 # error "Unknown byte order"
149 +#ifndef TEMP_FAILURE_RETRY
150 +#define TEMP_FAILURE_RETRY(expression) \
152 + ({ long int __result; \
153 + do __result = (long int) (expression); \
154 + while (__result == -1L && errno == EINTR); \
158 +#define error(status, errno, ...) err(status, __VA_ARGS__)
161 #define MAX(m, n) ((m) < (n) ? (n) : (m))
162 diff --git a/lib/xmalloc.c b/lib/xmalloc.c
163 index 0cde384..217b054 100644
175 diff --git a/libasm/asm_end.c b/libasm/asm_end.c
176 index 191a535..bf5ab06 100644
177 --- a/libasm/asm_end.c
178 +++ b/libasm/asm_end.c
188 diff --git a/libasm/asm_newscn.c b/libasm/asm_newscn.c
189 index ddbb25d..74a598d 100644
190 --- a/libasm/asm_newscn.c
191 +++ b/libasm/asm_newscn.c
201 diff --git a/libcpu/i386_gendis.c b/libcpu/i386_gendis.c
202 index aae5eae..6d76016 100644
203 --- a/libcpu/i386_gendis.c
204 +++ b/libcpu/i386_gendis.c
214 diff --git a/libcpu/i386_lex.c b/libcpu/i386_lex.c
215 index b670608..b842c25 100644
216 --- a/libcpu/i386_lex.c
217 +++ b/libcpu/i386_lex.c
218 @@ -592,7 +592,7 @@ char *i386_text;
227 diff --git a/libcpu/i386_parse.c b/libcpu/i386_parse.c
228 index 724addf..5b67802 100644
229 --- a/libcpu/i386_parse.c
230 +++ b/libcpu/i386_parse.c
237 #include <inttypes.h>
240 diff --git a/libdw/Makefile.am b/libdw/Makefile.am
241 index 082d96c..51cbea0 100644
242 --- a/libdw/Makefile.am
243 +++ b/libdw/Makefile.am
244 @@ -102,6 +102,8 @@ endif
245 libdw_pic_a_SOURCES =
246 am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os)
251 libdw.so$(EXEEXT): $(srcdir)/libdw.map libdw_pic.a ../libdwelf/libdwelf_pic.a \
252 ../libdwfl/libdwfl_pic.a ../libebl/libebl.a \
253 @@ -112,7 +114,7 @@ libdw.so$(EXEEXT): $(srcdir)/libdw.map libdw_pic.a ../libdwelf/libdwelf_pic.a \
254 -Wl,--enable-new-dtags,-rpath,$(pkglibdir) \
255 -Wl,--version-script,$<,--no-undefined \
256 -Wl,--whole-archive $(filter-out $<,$^) -Wl,--no-whole-archive\
257 - -ldl -lz $(argp_LDADD) $(zip_LIBS)
258 + -ldl -lz $(argp_LDADD) $(zip_LIBS) $(fts_LDADD)
260 $(AM_V_at)ln -fs $@ $@.$(VERSION)
262 diff --git a/libdw/libdw_alloc.c b/libdw/libdw_alloc.c
263 index 28a8cf6..29aeb3f 100644
264 --- a/libdw/libdw_alloc.c
265 +++ b/libdw/libdw_alloc.c
275 diff --git a/libdwfl/dwfl_build_id_find_elf.c b/libdwfl/dwfl_build_id_find_elf.c
276 index 903e193..b00d10c 100644
277 --- a/libdwfl/dwfl_build_id_find_elf.c
278 +++ b/libdwfl/dwfl_build_id_find_elf.c
280 not, see <http://www.gnu.org/licenses/>. */
282 #include "libdwflP.h"
284 #include <inttypes.h>
287 @@ -94,7 +95,7 @@ __libdwfl_open_by_build_id (Dwfl_Module *mod, bool debug, char **file_name,
289 if (*file_name != NULL)
291 - *file_name = canonicalize_file_name (name);
292 + *file_name = realpath (name, NULL);
293 if (*file_name == NULL)
296 diff --git a/libdwfl/dwfl_error.c b/libdwfl/dwfl_error.c
297 index 7bcf61c..c345797 100644
298 --- a/libdwfl/dwfl_error.c
299 +++ b/libdwfl/dwfl_error.c
300 @@ -140,6 +140,7 @@ __libdwfl_seterrno (Dwfl_Error error)
302 dwfl_errmsg (int error)
304 + static __thread char s[64] = "";
305 if (error == 0 || error == -1)
307 int last_error = global_error;
308 @@ -154,7 +155,8 @@ dwfl_errmsg (int error)
309 switch (error &~ 0xffff)
311 case OTHER_ERROR (ERRNO):
312 - return strerror_r (error & 0xffff, "bad", 0);
313 + strerror_r (error & 0xffff, s, sizeof(s));
315 case OTHER_ERROR (LIBELF):
316 return elf_errmsg (error & 0xffff);
317 case OTHER_ERROR (LIBDW):
318 diff --git a/libdwfl/dwfl_module_getdwarf.c b/libdwfl/dwfl_module_getdwarf.c
319 index 0e8810b..82ad665 100644
320 --- a/libdwfl/dwfl_module_getdwarf.c
321 +++ b/libdwfl/dwfl_module_getdwarf.c
327 #include "../libdw/libdwP.h" /* DWARF_E_* values are here. */
328 #include "../libelf/libelfP.h"
330 diff --git a/libdwfl/find-debuginfo.c b/libdwfl/find-debuginfo.c
331 index 80515db..80b0148 100644
332 --- a/libdwfl/find-debuginfo.c
333 +++ b/libdwfl/find-debuginfo.c
334 @@ -385,7 +385,7 @@ dwfl_standard_find_debuginfo (Dwfl_Module *mod,
335 /* If FILE_NAME is a symlink, the debug file might be associated
336 with the symlink target name instead. */
338 - char *canon = canonicalize_file_name (file_name);
339 + char *canon = realpath (file_name, NULL);
340 if (canon != NULL && strcmp (file_name, canon))
341 fd = find_debuginfo_in_path (mod, canon,
342 debuglink_file, debuglink_crc,
343 diff --git a/libdwfl/libdwfl_crc32_file.c b/libdwfl/libdwfl_crc32_file.c
344 index 6b6b7d3..debc4a4 100644
345 --- a/libdwfl/libdwfl_crc32_file.c
346 +++ b/libdwfl/libdwfl_crc32_file.c
349 #define crc32_file attribute_hidden __libdwfl_crc32_file
350 #define crc32 __libdwfl_crc32
352 +#ifndef TEMP_FAILURE_RETRY
353 +#define TEMP_FAILURE_RETRY(expression) \
355 + ({ long int __result; \
356 + do __result = (long int) (expression); \
357 + while (__result == -1L && errno == EINTR); \
361 #define LIB_SYSTEM_H 1
362 #include <libdwflP.h>
363 #include "../lib/crc32_file.c"
364 diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c
365 index 9cd8ea9..4dbf4c5 100644
366 --- a/libdwfl/linux-kernel-modules.c
367 +++ b/libdwfl/linux-kernel-modules.c
371 #include "libdwflP.h"
373 #include <inttypes.h>
376 diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c
377 index 34d439a..56d2345 100644
378 --- a/libebl/eblopenbackend.c
379 +++ b/libebl/eblopenbackend.c
389 diff --git a/libelf/elf.h b/libelf/elf.h
390 index 74654d6..81eee8b 100644
395 #include <features.h>
402 /* Standard ELF types. */
404 @@ -3704,6 +3706,8 @@ enum
405 #define R_BPF_NONE 0 /* No reloc */
406 #define R_BPF_MAP_FD 1 /* Map fd to pointer */
414 diff --git a/libelf/libelf.h b/libelf/libelf.h
415 index c0d6389..38a68fd 100644
416 --- a/libelf/libelf.h
417 +++ b/libelf/libelf.h
424 #include <sys/types.h>
426 diff --git a/libelf/libelfP.h b/libelf/libelfP.h
427 index 4459982..1296f20 100644
428 --- a/libelf/libelfP.h
429 +++ b/libelf/libelfP.h
438 diff --git a/src/addr2line.c b/src/addr2line.c
439 index 0222088..cd6a9a6 100644
440 --- a/src/addr2line.c
441 +++ b/src/addr2line.c
449 #include <inttypes.h>
451 diff --git a/src/ar.c b/src/ar.c
452 index f2f322b..6e70031 100644
464 diff --git a/src/arlib.c b/src/arlib.c
465 index e0839aa..1143658 100644
475 #include <inttypes.h>
477 diff --git a/src/arlib2.c b/src/arlib2.c
478 index 553fc57..46443d0 100644
490 diff --git a/src/elfcmp.c b/src/elfcmp.c
491 index 401ab31..873d253 100644
503 diff --git a/src/elflint.c b/src/elflint.c
504 index 7d3f227..074d21c 100644
509 #include <byteswap.h>
515 #include <inttypes.h>
516 diff --git a/src/findtextrel.c b/src/findtextrel.c
517 index dc41502..325888c 100644
518 --- a/src/findtextrel.c
519 +++ b/src/findtextrel.c
529 diff --git a/src/nm.c b/src/nm.c
530 index c54e96f..9e031d9 100644
541 #include <inttypes.h>
542 diff --git a/src/objdump.c b/src/objdump.c
543 index fff4b81..4b1f966 100644
553 #include <inttypes.h>
555 diff --git a/src/ranlib.c b/src/ranlib.c
556 index 41a3bcf..0c7da2c 100644
568 diff --git a/src/readelf.c b/src/readelf.c
569 index d18a4b7..a6cfb35 100644
580 #include <inttypes.h>
581 diff --git a/src/size.c b/src/size.c
582 index de0d791..4639d42 100644
593 #include <inttypes.h>
594 diff --git a/src/stack.c b/src/stack.c
595 index a5a7beb..4c075bc 100644
605 #include <inttypes.h>
607 diff --git a/src/strings.c b/src/strings.c
608 index 49aab8b..09d5b1c 100644
619 #include <inttypes.h>
620 diff --git a/src/strip.c b/src/strip.c
621 index a875ddf..fd76f7f 100644
626 #include <byteswap.h>
633 diff --git a/src/unstrip.c b/src/unstrip.c
634 index d838ae9..0108272 100644
646 diff --git a/tests/addrscopes.c b/tests/addrscopes.c
647 index 791569f..54f4311 100644
648 --- a/tests/addrscopes.c
649 +++ b/tests/addrscopes.c
651 #include <stdio_ext.h>
659 diff --git a/tests/allregs.c b/tests/allregs.c
660 index 286f7e3..c9de089 100644
661 --- a/tests/allregs.c
662 +++ b/tests/allregs.c
672 diff --git a/tests/backtrace-data.c b/tests/backtrace-data.c
673 index b7158da..354fa6a 100644
674 --- a/tests/backtrace-data.c
675 +++ b/tests/backtrace-data.c
684 #if defined(__x86_64__) && defined(__linux__)
685 diff --git a/tests/backtrace-dwarf.c b/tests/backtrace-dwarf.c
686 index a644c8a..b8cbe27 100644
687 --- a/tests/backtrace-dwarf.c
688 +++ b/tests/backtrace-dwarf.c
690 #include <stdio_ext.h>
696 #include <sys/ptrace.h>
697 #include <sys/types.h>
698 diff --git a/tests/backtrace.c b/tests/backtrace.c
699 index 1ff6353..47e3f7b 100644
700 --- a/tests/backtrace.c
701 +++ b/tests/backtrace.c
711 diff --git a/tests/buildid.c b/tests/buildid.c
712 index 87c1877..2953e6b 100644
713 --- a/tests/buildid.c
714 +++ b/tests/buildid.c
716 #include ELFUTILS_HEADER(elf)
717 #include ELFUTILS_HEADER(dwelf)
723 #include <sys/types.h>
724 diff --git a/tests/debugaltlink.c b/tests/debugaltlink.c
725 index 6d97d50..ee7e559 100644
726 --- a/tests/debugaltlink.c
727 +++ b/tests/debugaltlink.c
729 #include ELFUTILS_HEADER(dw)
730 #include ELFUTILS_HEADER(dwelf)
736 #include <sys/types.h>
737 diff --git a/tests/debuglink.c b/tests/debuglink.c
738 index 935d102..741cb81 100644
739 --- a/tests/debuglink.c
740 +++ b/tests/debuglink.c
743 #include ELFUTILS_HEADER(dwelf)
749 #include <sys/types.h>
750 diff --git a/tests/deleted.c b/tests/deleted.c
751 index 6be35bc..0190711 100644
752 --- a/tests/deleted.c
753 +++ b/tests/deleted.c
762 #include <sys/prctl.h>
763 diff --git a/tests/dwfl-addr-sect.c b/tests/dwfl-addr-sect.c
764 index 21e470a..1ea1e3b 100644
765 --- a/tests/dwfl-addr-sect.c
766 +++ b/tests/dwfl-addr-sect.c
768 #include <stdio_ext.h>
775 #include ELFUTILS_HEADER(dwfl)
776 diff --git a/tests/dwfl-bug-addr-overflow.c b/tests/dwfl-bug-addr-overflow.c
777 index aa8030e..02c8bef 100644
778 --- a/tests/dwfl-bug-addr-overflow.c
779 +++ b/tests/dwfl-bug-addr-overflow.c
781 #include <inttypes.h>
783 #include <stdio_ext.h>
787 #include ELFUTILS_HEADER(dwfl)
789 diff --git a/tests/dwfl-bug-fd-leak.c b/tests/dwfl-bug-fd-leak.c
790 index 689cdd7..5973da3 100644
791 --- a/tests/dwfl-bug-fd-leak.c
792 +++ b/tests/dwfl-bug-fd-leak.c
802 diff --git a/tests/dwfl-bug-getmodules.c b/tests/dwfl-bug-getmodules.c
803 index 1ee989f..fd62e65 100644
804 --- a/tests/dwfl-bug-getmodules.c
805 +++ b/tests/dwfl-bug-getmodules.c
808 #include ELFUTILS_HEADER(dwfl)
813 static const Dwfl_Callbacks callbacks =
815 diff --git a/tests/dwfl-report-elf-align.c b/tests/dwfl-report-elf-align.c
816 index a4e97d3..f471587 100644
817 --- a/tests/dwfl-report-elf-align.c
818 +++ b/tests/dwfl-report-elf-align.c
820 #include <inttypes.h>
822 #include <stdio_ext.h>
828 diff --git a/tests/dwfllines.c b/tests/dwfllines.c
829 index 90379dd..cbdf6c4 100644
830 --- a/tests/dwfllines.c
831 +++ b/tests/dwfllines.c
840 main (int argc, char *argv[])
841 diff --git a/tests/dwflmodtest.c b/tests/dwflmodtest.c
842 index 0027f96..e68d3bc 100644
843 --- a/tests/dwflmodtest.c
844 +++ b/tests/dwflmodtest.c
846 #include <stdio_ext.h>
853 #include ELFUTILS_HEADER(dwfl)
854 diff --git a/tests/dwflsyms.c b/tests/dwflsyms.c
855 index 49ac334..cf07830 100644
856 --- a/tests/dwflsyms.c
857 +++ b/tests/dwflsyms.c
860 #include <stdio_ext.h>
867 diff --git a/tests/early-offscn.c b/tests/early-offscn.c
868 index 924cb9e..6f60d5a 100644
869 --- a/tests/early-offscn.c
870 +++ b/tests/early-offscn.c
880 diff --git a/tests/ecp.c b/tests/ecp.c
881 index 38a6859..743cea5 100644
893 diff --git a/tests/find-prologues.c b/tests/find-prologues.c
894 index ba8ae37..76f5f04 100644
895 --- a/tests/find-prologues.c
896 +++ b/tests/find-prologues.c
898 #include <stdio_ext.h>
906 diff --git a/tests/funcretval.c b/tests/funcretval.c
907 index 8d19d11..c8aaa93 100644
908 --- a/tests/funcretval.c
909 +++ b/tests/funcretval.c
911 #include <stdio_ext.h>
919 diff --git a/tests/funcscopes.c b/tests/funcscopes.c
920 index 9c90185..dbccb89 100644
921 --- a/tests/funcscopes.c
922 +++ b/tests/funcscopes.c
924 #include <stdio_ext.h>
932 diff --git a/tests/getsrc_die.c b/tests/getsrc_die.c
933 index 055aede..9c394dd 100644
934 --- a/tests/getsrc_die.c
935 +++ b/tests/getsrc_die.c
943 #include <inttypes.h>
945 diff --git a/tests/line2addr.c b/tests/line2addr.c
946 index e0d65d3..9bf0023 100644
947 --- a/tests/line2addr.c
948 +++ b/tests/line2addr.c
958 diff --git a/tests/low_high_pc.c b/tests/low_high_pc.c
959 index d0f4302..8da4fbd 100644
960 --- a/tests/low_high_pc.c
961 +++ b/tests/low_high_pc.c
963 #include <stdio_ext.h>
971 diff --git a/tests/md5-sha1-test.c b/tests/md5-sha1-test.c
972 index d50355e..3c41f40 100644
973 --- a/tests/md5-sha1-test.c
974 +++ b/tests/md5-sha1-test.c
984 diff --git a/tests/rdwrmmap.c b/tests/rdwrmmap.c
985 index 6f027df..1ce5e6e 100644
986 --- a/tests/rdwrmmap.c
987 +++ b/tests/rdwrmmap.c
997 diff --git a/tests/saridx.c b/tests/saridx.c
998 index 8a450d8..b387801 100644
1000 +++ b/tests/saridx.c
1010 diff --git a/tests/sectiondump.c b/tests/sectiondump.c
1011 index 3033fed..8e888db 100644
1012 --- a/tests/sectiondump.c
1013 +++ b/tests/sectiondump.c
1022 #include <inttypes.h>
1023 diff --git a/tests/varlocs.c b/tests/varlocs.c
1024 index c3fba89..e043ea2 100644
1025 --- a/tests/varlocs.c
1026 +++ b/tests/varlocs.c
1034 #include <sys/types.h>
1035 #include <sys/stat.h>
1036 diff --git a/tests/vdsosyms.c b/tests/vdsosyms.c
1037 index b876c10..afb2823 100644
1038 --- a/tests/vdsosyms.c
1039 +++ b/tests/vdsosyms.c
1046 #include <inttypes.h>