0001-musl-obstack-fts.patch 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. From 1a62bb8e8f2cb0f180c749946a48114e8f391b55 Mon Sep 17 00:00:00 2001
  2. From: Hongxu Jia <hongxu.jia@windriver.com>
  3. Date: Fri, 23 Aug 2019 10:17:25 +0800
  4. Subject: [PATCH] musl-obstack-fts
  5. Look for libfts and libobstack during configure, these
  6. libraries are external to libc when using musl, whereas
  7. on glibc these libraries are provided in libc itself.
  8. Signed-off-by: Khem Raj <raj.khem@gmail.com>
  9. Upstream-Status: Inappropriate [workaround for musl]
  10. Rebase to 0.177
  11. Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
  12. ---
  13. configure.ac | 54 +++++++++++++++++++++++++++++++++++++++++++++++
  14. libdw/Makefile.am | 2 +-
  15. src/Makefile.am | 6 +++---
  16. 3 files changed, 58 insertions(+), 4 deletions(-)
  17. diff --git a/configure.ac b/configure.ac
  18. index ab9c751..b057d86 100644
  19. --- a/configure.ac
  20. +++ b/configure.ac
  21. @@ -538,6 +538,60 @@ else
  22. fi
  23. AC_SUBST([argp_LDADD])
  24. +dnl Check if we have fts available from our libc
  25. +AC_LINK_IFELSE(
  26. + [AC_LANG_PROGRAM(
  27. + [#if !defined(__x86_64__)
  28. + #undef _FILE_OFFSET_BITS
  29. + #define _FILE_OFFSET_BITS 32
  30. + #endif
  31. + #include <fts.h>],
  32. + [FTS* fts = 0; return fts_close(fts); return 0;]
  33. + )],
  34. + [libc_has_fts="true"],
  35. + [libc_has_fts="false"]
  36. +)
  37. +
  38. +dnl If our libc doesn't provide fts, then test for libfts
  39. +if test "$libc_has_fts" = "false" ; then
  40. + AC_MSG_WARN("libc does not have fts")
  41. + AC_CHECK_LIB([fts], [fts_close], [have_fts="true"], [have_fts="false"])
  42. +
  43. + if test "$have_fts" = "false"; then
  44. + AC_MSG_ERROR("no libfts found")
  45. + else
  46. + fts_LDADD="-lfts"
  47. + fi
  48. +else
  49. + fts_LDADD=""
  50. +fi
  51. +AC_SUBST([fts_LDADD])
  52. +
  53. +dnl Check if we have obstack available from our libc
  54. +AC_LINK_IFELSE(
  55. + [AC_LANG_PROGRAM(
  56. + [#include <obstack.h>],
  57. + [_obstack_begin(0, 0, 0, NULL, NULL); return 0;]
  58. + )],
  59. + [libc_has_obstack="true"],
  60. + [libc_has_obstack="false"]
  61. +)
  62. +
  63. +dnl If our libc doesn't provide obstack, then test for libobstack
  64. +if test "$libc_has_obstack" = "false" ; then
  65. + AC_MSG_WARN("libc does not have obstack")
  66. + AC_CHECK_LIB([obstack], [_obstack_begin], [have_obstack="true"], [have_obstack="false"])
  67. +
  68. + if test "$have_obstack" = "false"; then
  69. + AC_MSG_ERROR("no libobstack found")
  70. + else
  71. + obstack_LDADD="-lobstack"
  72. + fi
  73. +else
  74. + obstack_LDADD=""
  75. +fi
  76. +AC_SUBST([obstack_LDADD])
  77. +
  78. dnl The directories with content.
  79. dnl Documentation.
  80. diff --git a/libdw/Makefile.am b/libdw/Makefile.am
  81. index 33b5838..ff92e02 100644
  82. --- a/libdw/Makefile.am
  83. +++ b/libdw/Makefile.am
  84. @@ -109,7 +109,7 @@ libdw_so_LIBS = ../libebl/libebl_pic.a ../backends/libebl_backends_pic.a \
  85. ../libcpu/libcpu_pic.a libdw_pic.a ../libdwelf/libdwelf_pic.a \
  86. ../libdwfl/libdwfl_pic.a
  87. libdw_so_DEPS = ../lib/libeu.a ../libelf/libelf.so
  88. -libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(zip_LIBS) -pthread
  89. +libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(fts_LDADD) $(zip_LIBS) -pthread
  90. libdw_so_SOURCES =
  91. libdw.so$(EXEEXT): $(srcdir)/libdw.map $(libdw_so_LIBS) $(libdw_so_DEPS)
  92. $(AM_V_CCLD)$(LINK) $(dso_LDFLAGS) -o $@ \
  93. diff --git a/src/Makefile.am b/src/Makefile.am
  94. index 13d9bda..d5a4f7d 100644
  95. --- a/src/Makefile.am
  96. +++ b/src/Makefile.am
  97. @@ -69,7 +69,7 @@ ar_no_Wstack_usage = yes
  98. unstrip_no_Wstack_usage = yes
  99. readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD)
  100. -nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) \
  101. +nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) $(obstack_LDADD) \
  102. $(demanglelib)
  103. size_LDADD = $(libelf) $(libeu) $(argp_LDADD)
  104. strip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD)
  105. @@ -78,9 +78,9 @@ findtextrel_LDADD = $(libdw) $(libelf) $(libeu) $(argp_LDADD)
  106. addr2line_LDADD = $(libdw) $(libelf) $(libeu) $(argp_LDADD) $(demanglelib)
  107. elfcmp_LDADD = $(libebl) $(libdw) $(libelf) $(libeu) $(argp_LDADD)
  108. objdump_LDADD = $(libasm) $(libebl) $(libdw) $(libelf) $(libeu) $(argp_LDADD)
  109. -ranlib_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD)
  110. +ranlib_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD) $(obstack_LDADD)
  111. strings_LDADD = $(libelf) $(libeu) $(argp_LDADD)
  112. -ar_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD)
  113. +ar_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD) $(obstack_LDADD)
  114. unstrip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD)
  115. stack_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) $(demanglelib)
  116. elfcompress_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD)