0008-prohibit-from-generating-plt-table-when-static-linki.patch 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598
  1. From 3549fcbe22dab50b01361db0d8e5542879ccdfc2 Mon Sep 17 00:00:00 2001
  2. From: "max.ma" <max.ma@starfivetech.com>
  3. Date: Wed, 15 Jun 2022 00:10:33 -0700
  4. Subject: [PATCH 08/19] prohibit from generating plt table when static linking
  5. ---
  6. sysdeps/riscv/rv64/multiarch/ifunc-impl-list.c | 4 ++--
  7. sysdeps/riscv/rv64/multiarch/memchr.c | 5 ++++-
  8. sysdeps/riscv/rv64/multiarch/memchr_as.S | 2 ++
  9. sysdeps/riscv/rv64/multiarch/memchr_riscv.S | 10 +++++++++-
  10. sysdeps/riscv/rv64/multiarch/memchr_vector.S | 6 ++++--
  11. sysdeps/riscv/rv64/multiarch/memcmp.c | 6 +++++-
  12. sysdeps/riscv/rv64/multiarch/memcmp_riscv.c | 9 +++++++--
  13. sysdeps/riscv/rv64/multiarch/memcmp_vector.S | 7 +++++--
  14. sysdeps/riscv/rv64/multiarch/memcpy.c | 5 ++++-
  15. sysdeps/riscv/rv64/multiarch/memcpy_riscv.S | 11 ++++++++++-
  16. sysdeps/riscv/rv64/multiarch/memcpy_vector.S | 6 ++++--
  17. sysdeps/riscv/rv64/multiarch/memmove.c | 5 ++++-
  18. sysdeps/riscv/rv64/multiarch/memmove_riscv.c | 6 ++++--
  19. sysdeps/riscv/rv64/multiarch/memmove_vector.S | 8 +++++---
  20. sysdeps/riscv/rv64/multiarch/memset.c | 5 ++++-
  21. sysdeps/riscv/rv64/multiarch/memset_riscv.c | 6 ++++--
  22. sysdeps/riscv/rv64/multiarch/memset_vector.S | 7 ++++---
  23. sysdeps/riscv/rv64/multiarch/rtld-memcmp.c | 2 +-
  24. sysdeps/riscv/rv64/multiarch/rtld-memmove.c | 2 +-
  25. sysdeps/riscv/rv64/multiarch/rtld-memset.c | 2 +-
  26. sysdeps/riscv/rv64/multiarch/rtld-strlen.c | 2 +-
  27. sysdeps/riscv/rv64/multiarch/strcmp.c | 5 ++++-
  28. sysdeps/riscv/rv64/multiarch/strcmp_riscv.S | 12 ++++++++----
  29. sysdeps/riscv/rv64/multiarch/strcmp_vector.S | 7 ++++---
  30. sysdeps/riscv/rv64/multiarch/strlen.c | 5 ++++-
  31. sysdeps/riscv/rv64/multiarch/strlen_riscv.c | 7 +++++--
  32. sysdeps/riscv/rv64/multiarch/strlen_vector.S | 6 ++++--
  33. 27 files changed, 114 insertions(+), 44 deletions(-)
  34. diff --git a/sysdeps/riscv/rv64/multiarch/ifunc-impl-list.c b/sysdeps/riscv/rv64/multiarch/ifunc-impl-list.c
  35. index 28c6e123f0..1a6611ab88 100644
  36. --- a/sysdeps/riscv/rv64/multiarch/ifunc-impl-list.c
  37. +++ b/sysdeps/riscv/rv64/multiarch/ifunc-impl-list.c
  38. @@ -30,7 +30,7 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
  39. size_t max)
  40. {
  41. size_t i = 0;
  42. -
  43. +#if defined SHARED && defined __riscv_vector
  44. bool use_rvv = (GLRO(dl_hwcap) & HWCAP_ISA_V) != 0;
  45. IFUNC_IMPL (i, name, memcpy,
  46. @@ -60,6 +60,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
  47. IFUNC_IMPL (i, name, memset,
  48. IFUNC_IMPL_ADD (array, i, memset, use_rvv, __memset_vector)
  49. IFUNC_IMPL_ADD (array, i, memset, 1, __memset_riscv));
  50. -
  51. +#endif
  52. return i;
  53. }
  54. diff --git a/sysdeps/riscv/rv64/multiarch/memchr.c b/sysdeps/riscv/rv64/multiarch/memchr.c
  55. index 1544bc3d01..0a059b2977 100644
  56. --- a/sysdeps/riscv/rv64/multiarch/memchr.c
  57. +++ b/sysdeps/riscv/rv64/multiarch/memchr.c
  58. @@ -17,7 +17,8 @@
  59. License along with the GNU C Library; if not, see
  60. <https://www.gnu.org/licenses/>. */
  61. -#if IS_IN (libc)
  62. +#if IS_IN (libc) && defined SHARED && defined __riscv_vector
  63. +
  64. # define memchr __redirect_memchr
  65. # include <string.h>
  66. # undef memchr
  67. @@ -29,4 +30,6 @@
  68. riscv_libc_ifunc_redirected (__redirect_memchr, memchr, IFUNC_SELECTOR);
  69. riscv_libc_ifunc_hidden_def (__redirect_memchr, memchr);
  70. +#else
  71. +# include <string.h>
  72. #endif
  73. diff --git a/sysdeps/riscv/rv64/multiarch/memchr_as.S b/sysdeps/riscv/rv64/multiarch/memchr_as.S
  74. index 557098afda..b8691744f3 100644
  75. --- a/sysdeps/riscv/rv64/multiarch/memchr_as.S
  76. +++ b/sysdeps/riscv/rv64/multiarch/memchr_as.S
  77. @@ -19,6 +19,8 @@
  78. #include <sysdep.h>
  79. + .p2align 6
  80. +
  81. ENTRY (memchr)
  82. zext.b a3,a1
  83. beqz a2, .L_not_found
  84. diff --git a/sysdeps/riscv/rv64/multiarch/memchr_riscv.S b/sysdeps/riscv/rv64/multiarch/memchr_riscv.S
  85. index ce7b64bbe0..ee4394fef9 100644
  86. --- a/sysdeps/riscv/rv64/multiarch/memchr_riscv.S
  87. +++ b/sysdeps/riscv/rv64/multiarch/memchr_riscv.S
  88. @@ -18,8 +18,16 @@
  89. #include <sysdep.h>
  90. +#if IS_IN (libc) && defined SHARED && defined __riscv_vector
  91. +
  92. #define memchr __memchr_riscv
  93. #undef libc_hidden_builtin_def
  94. #define libc_hidden_builtin_def(name)
  95. +#include "memchr_as.S"
  96. +
  97. +
  98. +#elif !defined __riscv_vector
  99. +
  100. +#include "memchr_as.S"
  101. -#include "memchr_as.S"
  102. \ No newline at end of file
  103. +#endif
  104. \ No newline at end of file
  105. diff --git a/sysdeps/riscv/rv64/multiarch/memchr_vector.S b/sysdeps/riscv/rv64/multiarch/memchr_vector.S
  106. index 77693d716d..9441ddb489 100644
  107. --- a/sysdeps/riscv/rv64/multiarch/memchr_vector.S
  108. +++ b/sysdeps/riscv/rv64/multiarch/memchr_vector.S
  109. @@ -19,11 +19,12 @@
  110. #include <sysdep.h>
  111. /* For __riscv_vector this file defines memchr. */
  112. -/* #ifndef __riscv_vector */
  113. +#ifdef __riscv_vector
  114. +#ifdef SHARED
  115. # define memchr __memchr_vector
  116. # undef libc_hidden_builtin_def
  117. # define libc_hidden_builtin_def(a)
  118. -/* #endif */
  119. +#endif
  120. .p2align 6
  121. ENTRY (memchr)
  122. @@ -51,3 +52,4 @@ ENTRY (memchr)
  123. ret
  124. END (memchr)
  125. libc_hidden_builtin_def (memchr)
  126. +#endif
  127. \ No newline at end of file
  128. diff --git a/sysdeps/riscv/rv64/multiarch/memcmp.c b/sysdeps/riscv/rv64/multiarch/memcmp.c
  129. index 29730c6ed1..3dab42ea74 100644
  130. --- a/sysdeps/riscv/rv64/multiarch/memcmp.c
  131. +++ b/sysdeps/riscv/rv64/multiarch/memcmp.c
  132. @@ -17,7 +17,8 @@
  133. License along with the GNU C Library; if not, see
  134. <https://www.gnu.org/licenses/>. */
  135. -#if IS_IN (libc)
  136. +#if IS_IN (libc) && defined SHARED && defined __riscv_vector
  137. +
  138. # define memcmp __redirect_memcmp
  139. # include <string.h>
  140. # undef memcmp
  141. @@ -29,4 +30,7 @@
  142. riscv_libc_ifunc_redirected (__redirect_memcmp, memcmp, IFUNC_SELECTOR);
  143. riscv_libc_ifunc_hidden_def (__redirect_memcmp, memcmp);
  144. +
  145. +#else
  146. +# include <string.h>
  147. #endif
  148. diff --git a/sysdeps/riscv/rv64/multiarch/memcmp_riscv.c b/sysdeps/riscv/rv64/multiarch/memcmp_riscv.c
  149. index dda15d7d35..076431132b 100644
  150. --- a/sysdeps/riscv/rv64/multiarch/memcmp_riscv.c
  151. +++ b/sysdeps/riscv/rv64/multiarch/memcmp_riscv.c
  152. @@ -16,14 +16,19 @@
  153. License along with the GNU C Library; if not, see
  154. <https://www.gnu.org/licenses/>. */
  155. -#if IS_IN (libc)
  156. +#if IS_IN (libc) && defined SHARED && defined __riscv_vector
  157. +
  158. #undef libc_hidden_builtin_def
  159. #define libc_hidden_builtin_def(name)
  160. #undef weak_alias
  161. # define MEMCMP __memcmp_riscv
  162. # include <string/memcmp.c>
  163. -#else
  164. +#elif !defined __riscv_vector
  165. # include <string/memcmp.c>
  166. +
  167. #endif
  168. +
  169. +
  170. +
  171. diff --git a/sysdeps/riscv/rv64/multiarch/memcmp_vector.S b/sysdeps/riscv/rv64/multiarch/memcmp_vector.S
  172. index fe89f92268..4810af026a 100644
  173. --- a/sysdeps/riscv/rv64/multiarch/memcmp_vector.S
  174. +++ b/sysdeps/riscv/rv64/multiarch/memcmp_vector.S
  175. @@ -20,10 +20,13 @@
  176. /* For __riscv_vector this file defines strcmp. */
  177. /* #ifndef __riscv_vector */
  178. +
  179. +#ifdef __riscv_vector
  180. +#ifdef SHARED
  181. # define memcmp __memcmp_vector
  182. # undef libc_hidden_builtin_def
  183. # define libc_hidden_builtin_def(a)
  184. -/* #endif */
  185. +#endif
  186. .p2align 6
  187. ENTRY (memcmp)
  188. @@ -54,4 +57,4 @@ ENTRY (memcmp)
  189. END (memcmp)
  190. weak_alias (memcmp, bcmp)
  191. libc_hidden_builtin_def (memcmp)
  192. -
  193. +#endif
  194. diff --git a/sysdeps/riscv/rv64/multiarch/memcpy.c b/sysdeps/riscv/rv64/multiarch/memcpy.c
  195. index 0f20b7fd44..45cf14f52a 100644
  196. --- a/sysdeps/riscv/rv64/multiarch/memcpy.c
  197. +++ b/sysdeps/riscv/rv64/multiarch/memcpy.c
  198. @@ -17,7 +17,8 @@
  199. License along with the GNU C Library; if not, see
  200. <https://www.gnu.org/licenses/>. */
  201. -#if IS_IN (libc)
  202. +#if IS_IN (libc) && defined SHARED && defined __riscv_vector
  203. +
  204. # define memcpy __redirect_memcpy
  205. # include <string.h>
  206. # undef memcpy
  207. @@ -30,4 +31,6 @@
  208. riscv_libc_ifunc_redirected (__redirect_memcpy, memcpy, IFUNC_SELECTOR);
  209. riscv_libc_ifunc_hidden_def (__redirect_memcpy, memcpy);
  210. +#else
  211. +# include <string.h>
  212. #endif
  213. diff --git a/sysdeps/riscv/rv64/multiarch/memcpy_riscv.S b/sysdeps/riscv/rv64/multiarch/memcpy_riscv.S
  214. index a0ba2150fc..249d4f6067 100644
  215. --- a/sysdeps/riscv/rv64/multiarch/memcpy_riscv.S
  216. +++ b/sysdeps/riscv/rv64/multiarch/memcpy_riscv.S
  217. @@ -18,8 +18,17 @@
  218. #include <sysdep.h>
  219. +#if IS_IN (libc) && defined SHARED && defined __riscv_vector
  220. +
  221. #define memcpy __memcpy_riscv
  222. #undef libc_hidden_builtin_def
  223. #define libc_hidden_builtin_def(name)
  224. -#include "memcpy_as.S"
  225. \ No newline at end of file
  226. +#include "memcpy_as.S"
  227. +
  228. +#elif !defined __riscv_vector
  229. +#include "memcpy_as.S"
  230. +
  231. +#endif
  232. +
  233. +
  234. diff --git a/sysdeps/riscv/rv64/multiarch/memcpy_vector.S b/sysdeps/riscv/rv64/multiarch/memcpy_vector.S
  235. index bae330f6e0..d15f4c3954 100644
  236. --- a/sysdeps/riscv/rv64/multiarch/memcpy_vector.S
  237. +++ b/sysdeps/riscv/rv64/multiarch/memcpy_vector.S
  238. @@ -19,11 +19,12 @@
  239. #include <sysdep.h>
  240. /* For __riscv_vector this file defines memcpy. */
  241. -/* #ifndef __riscv_vector */
  242. +#ifdef __riscv_vector
  243. +#ifdef SHARED
  244. # define memcpy __memcpy_vector
  245. # undef libc_hidden_builtin_def
  246. # define libc_hidden_builtin_def(a)
  247. -/* #endif */
  248. +#endif
  249. .p2align 6
  250. ENTRY (memcpy)
  251. @@ -52,3 +53,4 @@ ENTRY (memcpy)
  252. END (memcpy)
  253. libc_hidden_builtin_def (memcpy)
  254. +#endif
  255. \ No newline at end of file
  256. diff --git a/sysdeps/riscv/rv64/multiarch/memmove.c b/sysdeps/riscv/rv64/multiarch/memmove.c
  257. index 8d33da166d..3fc276e943 100644
  258. --- a/sysdeps/riscv/rv64/multiarch/memmove.c
  259. +++ b/sysdeps/riscv/rv64/multiarch/memmove.c
  260. @@ -17,7 +17,7 @@
  261. License along with the GNU C Library; if not, see
  262. <https://www.gnu.org/licenses/>. */
  263. -#if IS_IN (libc)
  264. +#if IS_IN (libc) && defined SHARED && defined __riscv_vector
  265. # define memmove __redirect_memmove
  266. # include <string.h>
  267. # undef memmove
  268. @@ -29,4 +29,7 @@
  269. riscv_libc_ifunc_redirected (__redirect_memmove, memmove, IFUNC_SELECTOR);
  270. riscv_libc_ifunc_hidden_def (__redirect_memmove, memmove);
  271. +
  272. +#else
  273. +# include <string.h>
  274. #endif
  275. diff --git a/sysdeps/riscv/rv64/multiarch/memmove_riscv.c b/sysdeps/riscv/rv64/multiarch/memmove_riscv.c
  276. index e11a9d1a43..03708e0deb 100644
  277. --- a/sysdeps/riscv/rv64/multiarch/memmove_riscv.c
  278. +++ b/sysdeps/riscv/rv64/multiarch/memmove_riscv.c
  279. @@ -16,14 +16,16 @@
  280. License along with the GNU C Library; if not, see
  281. <https://www.gnu.org/licenses/>. */
  282. -#if IS_IN (libc)
  283. +#if IS_IN (libc) && defined SHARED && defined __riscv_vector
  284. +
  285. #undef libc_hidden_builtin_def
  286. #define libc_hidden_builtin_def(name)
  287. #undef weak_alias
  288. # define MEMMOVE __memmove_riscv
  289. # include <string/memmove.c>
  290. -#else
  291. +#elif !defined __riscv_vector
  292. # include <string/memmove.c>
  293. #endif
  294. +
  295. diff --git a/sysdeps/riscv/rv64/multiarch/memmove_vector.S b/sysdeps/riscv/rv64/multiarch/memmove_vector.S
  296. index 7bf89e6cf6..af748be5b2 100644
  297. --- a/sysdeps/riscv/rv64/multiarch/memmove_vector.S
  298. +++ b/sysdeps/riscv/rv64/multiarch/memmove_vector.S
  299. @@ -19,11 +19,12 @@
  300. #include <sysdep.h>
  301. /* For __riscv_vector this file defines memmov. */
  302. -/* #ifndef __riscv_vector */
  303. +#ifdef __riscv_vector
  304. +#ifdef SHARED
  305. # define memmove __memmove_vector
  306. # undef libc_hidden_builtin_def
  307. # define libc_hidden_builtin_def(a)
  308. -/* #endif */
  309. +#endif
  310. .p2align 6
  311. ENTRY (memmove)
  312. @@ -53,4 +54,5 @@ ENTRY (memmove)
  313. bltu zero,a2,.L_backward_copy_loop
  314. ret
  315. END (memmove)
  316. -libc_hidden_builtin_def (memmove)
  317. \ No newline at end of file
  318. +libc_hidden_builtin_def (memmove)
  319. +#endif
  320. \ No newline at end of file
  321. diff --git a/sysdeps/riscv/rv64/multiarch/memset.c b/sysdeps/riscv/rv64/multiarch/memset.c
  322. index 0d3582e49f..56d7169ad1 100644
  323. --- a/sysdeps/riscv/rv64/multiarch/memset.c
  324. +++ b/sysdeps/riscv/rv64/multiarch/memset.c
  325. @@ -17,7 +17,7 @@
  326. License along with the GNU C Library; if not, see
  327. <https://www.gnu.org/licenses/>. */
  328. -#if IS_IN (libc)
  329. +#if IS_IN (libc) && defined SHARED && defined __riscv_vector
  330. # define memset __redirect_memset
  331. # include <string.h>
  332. # undef memset
  333. @@ -30,4 +30,7 @@
  334. riscv_libc_ifunc_redirected (__redirect_memset, memset, IFUNC_SELECTOR);
  335. riscv_libc_ifunc_hidden_def (__redirect_memset, memset);
  336. +#else
  337. +# include <string.h>
  338. +
  339. #endif
  340. diff --git a/sysdeps/riscv/rv64/multiarch/memset_riscv.c b/sysdeps/riscv/rv64/multiarch/memset_riscv.c
  341. index 1101c10f96..de631eb187 100644
  342. --- a/sysdeps/riscv/rv64/multiarch/memset_riscv.c
  343. +++ b/sysdeps/riscv/rv64/multiarch/memset_riscv.c
  344. @@ -16,14 +16,16 @@
  345. License along with the GNU C Library; if not, see
  346. <https://www.gnu.org/licenses/>. */
  347. -#if IS_IN (libc)
  348. +#if IS_IN (libc) && defined SHARED && defined __riscv_vector
  349. #undef libc_hidden_builtin_def
  350. #define libc_hidden_builtin_def(name)
  351. #undef weak_alias
  352. # define MEMSET __memset_riscv
  353. # include <string/memset.c>
  354. -#else
  355. +#elif !defined __riscv_vector
  356. # include <string/memset.c>
  357. #endif
  358. +
  359. +
  360. diff --git a/sysdeps/riscv/rv64/multiarch/memset_vector.S b/sysdeps/riscv/rv64/multiarch/memset_vector.S
  361. index 54d04238d3..dc407630a6 100644
  362. --- a/sysdeps/riscv/rv64/multiarch/memset_vector.S
  363. +++ b/sysdeps/riscv/rv64/multiarch/memset_vector.S
  364. @@ -19,12 +19,12 @@
  365. #include <sysdep.h>
  366. -/* For __riscv_vector this file defines memcpy. */
  367. -/* #ifndef __riscv_vector */
  368. +#ifdef __riscv_vector
  369. +#ifdef SHARED
  370. # define memset __memset_vector
  371. # undef libc_hidden_builtin_def
  372. # define libc_hidden_builtin_def(a)
  373. -/* #endif */
  374. +#endif
  375. .p2align 6
  376. ENTRY (memset)
  377. @@ -43,3 +43,4 @@ ENTRY (memset)
  378. END (memset)
  379. libc_hidden_builtin_def (memset)
  380. +#endif
  381. \ No newline at end of file
  382. diff --git a/sysdeps/riscv/rv64/multiarch/rtld-memcmp.c b/sysdeps/riscv/rv64/multiarch/rtld-memcmp.c
  383. index 25faa66478..36a22eee60 100644
  384. --- a/sysdeps/riscv/rv64/multiarch/rtld-memcmp.c
  385. +++ b/sysdeps/riscv/rv64/multiarch/rtld-memcmp.c
  386. @@ -1 +1 @@
  387. -#include "memcmp_riscv.c"
  388. +# include <string/memcmp.c>
  389. diff --git a/sysdeps/riscv/rv64/multiarch/rtld-memmove.c b/sysdeps/riscv/rv64/multiarch/rtld-memmove.c
  390. index 435c059184..90e37dbd8b 100644
  391. --- a/sysdeps/riscv/rv64/multiarch/rtld-memmove.c
  392. +++ b/sysdeps/riscv/rv64/multiarch/rtld-memmove.c
  393. @@ -16,4 +16,4 @@
  394. License along with the GNU C Library; if not, see
  395. <https://www.gnu.org/licenses/>. */
  396. -#include "memmove_riscv.c"
  397. +# include <string/memmove.c>
  398. diff --git a/sysdeps/riscv/rv64/multiarch/rtld-memset.c b/sysdeps/riscv/rv64/multiarch/rtld-memset.c
  399. index eff6790df5..fa3c6f4104 100644
  400. --- a/sysdeps/riscv/rv64/multiarch/rtld-memset.c
  401. +++ b/sysdeps/riscv/rv64/multiarch/rtld-memset.c
  402. @@ -1 +1 @@
  403. -#include "memset_riscv.c"
  404. \ No newline at end of file
  405. +# include <string/memset.c>
  406. diff --git a/sysdeps/riscv/rv64/multiarch/rtld-strlen.c b/sysdeps/riscv/rv64/multiarch/rtld-strlen.c
  407. index 73308eb0fa..d3f1dd4a23 100644
  408. --- a/sysdeps/riscv/rv64/multiarch/rtld-strlen.c
  409. +++ b/sysdeps/riscv/rv64/multiarch/rtld-strlen.c
  410. @@ -1 +1 @@
  411. -#include "strlen_riscv.c"
  412. +# include <string/strlen.c>
  413. diff --git a/sysdeps/riscv/rv64/multiarch/strcmp.c b/sysdeps/riscv/rv64/multiarch/strcmp.c
  414. index 56969c77e8..3b65aaf55d 100644
  415. --- a/sysdeps/riscv/rv64/multiarch/strcmp.c
  416. +++ b/sysdeps/riscv/rv64/multiarch/strcmp.c
  417. @@ -17,7 +17,7 @@
  418. License along with the GNU C Library; if not, see
  419. <https://www.gnu.org/licenses/>. */
  420. -#if IS_IN (libc)
  421. +#if IS_IN (libc) && defined SHARED && defined __riscv_vector
  422. # define strcmp __redirect_strcmp
  423. # include <string.h>
  424. # undef strcmp
  425. @@ -30,4 +30,7 @@
  426. riscv_libc_ifunc_redirected (__redirect_strcmp, strcmp, IFUNC_SELECTOR);
  427. riscv_libc_ifunc_hidden_def (__redirect_strcmp, strcmp);
  428. +#else
  429. +# include <string.h>
  430. +
  431. #endif
  432. diff --git a/sysdeps/riscv/rv64/multiarch/strcmp_riscv.S b/sysdeps/riscv/rv64/multiarch/strcmp_riscv.S
  433. index 93e598f0c5..f5be83d5b7 100644
  434. --- a/sysdeps/riscv/rv64/multiarch/strcmp_riscv.S
  435. +++ b/sysdeps/riscv/rv64/multiarch/strcmp_riscv.S
  436. @@ -1,9 +1,13 @@
  437. -/* For __riscv_vector this file defines strcmp. */
  438. -/* #ifndef __riscv_vector */
  439. +#include <sysdep.h>
  440. +
  441. +#if IS_IN (libc) && defined SHARED && defined __riscv_vector
  442. # define strcmp __strcmp_riscv
  443. # undef libc_hidden_builtin_def
  444. # define libc_hidden_builtin_def(a)
  445. -/* #endif */
  446. -#include "strcmp_.S"
  447. \ No newline at end of file
  448. +#include "strcmp_.S"
  449. +#elif !defined __riscv_vector
  450. +
  451. +#include "strcmp_.S"
  452. +#endif
  453. diff --git a/sysdeps/riscv/rv64/multiarch/strcmp_vector.S b/sysdeps/riscv/rv64/multiarch/strcmp_vector.S
  454. index 41d653748a..d0b8e316f9 100644
  455. --- a/sysdeps/riscv/rv64/multiarch/strcmp_vector.S
  456. +++ b/sysdeps/riscv/rv64/multiarch/strcmp_vector.S
  457. @@ -19,11 +19,12 @@
  458. #include <sysdep.h>
  459. /* For __riscv_vector this file defines strcmp. */
  460. -/* #ifndef __riscv_vector */
  461. +#ifdef __riscv_vector
  462. +#ifdef SHARED
  463. # define strcmp __strcmp_vector
  464. # undef libc_hidden_builtin_def
  465. # define libc_hidden_builtin_def(a)
  466. -/* #endif */
  467. +#endif
  468. .p2align 6
  469. ENTRY (strcmp)
  470. @@ -51,4 +52,4 @@ ENTRY (strcmp)
  471. END (strcmp)
  472. libc_hidden_builtin_def (strcmp)
  473. -
  474. +#endif
  475. diff --git a/sysdeps/riscv/rv64/multiarch/strlen.c b/sysdeps/riscv/rv64/multiarch/strlen.c
  476. index 292c9103fa..8fab570609 100644
  477. --- a/sysdeps/riscv/rv64/multiarch/strlen.c
  478. +++ b/sysdeps/riscv/rv64/multiarch/strlen.c
  479. @@ -17,7 +17,7 @@
  480. License along with the GNU C Library; if not, see
  481. <https://www.gnu.org/licenses/>. */
  482. -#if IS_IN (libc)
  483. +#if IS_IN (libc) && defined SHARED && defined __riscv_vector
  484. # define strlen __redirect_strlen
  485. # include <string.h>
  486. # undef strlen
  487. @@ -29,4 +29,7 @@
  488. riscv_libc_ifunc_redirected (__redirect_strlen, strlen, IFUNC_SELECTOR);
  489. riscv_libc_ifunc_hidden_def (__redirect_strlen, strlen);
  490. +#else
  491. +# include <string.h>
  492. +
  493. #endif
  494. diff --git a/sysdeps/riscv/rv64/multiarch/strlen_riscv.c b/sysdeps/riscv/rv64/multiarch/strlen_riscv.c
  495. index e17a5dde31..d605941766 100644
  496. --- a/sysdeps/riscv/rv64/multiarch/strlen_riscv.c
  497. +++ b/sysdeps/riscv/rv64/multiarch/strlen_riscv.c
  498. @@ -16,14 +16,17 @@
  499. License along with the GNU C Library; if not, see
  500. <https://www.gnu.org/licenses/>. */
  501. -#if IS_IN (libc)
  502. +
  503. +#if IS_IN (libc) && defined SHARED && defined __riscv_vector
  504. #undef libc_hidden_builtin_def
  505. #define libc_hidden_builtin_def(name)
  506. #undef weak_alias
  507. # define STRLEN __strlen_riscv
  508. # include <string/strlen.c>
  509. -#else
  510. +#elif !defined __riscv_vector
  511. # include <string/strlen.c>
  512. #endif
  513. +
  514. +
  515. diff --git a/sysdeps/riscv/rv64/multiarch/strlen_vector.S b/sysdeps/riscv/rv64/multiarch/strlen_vector.S
  516. index dd080e3a2f..f674de3a26 100644
  517. --- a/sysdeps/riscv/rv64/multiarch/strlen_vector.S
  518. +++ b/sysdeps/riscv/rv64/multiarch/strlen_vector.S
  519. @@ -19,11 +19,12 @@
  520. #include <sysdep.h>
  521. /* For __riscv_vector this file defines strlen. */
  522. -/* #ifndef __riscv_vector */
  523. +#ifdef __riscv_vector
  524. +#ifdef SHARED
  525. # define strlen __strlen_vector
  526. # undef libc_hidden_builtin_def
  527. # define libc_hidden_builtin_def(a)
  528. -/* #endif */
  529. +#endif
  530. .p2align 6
  531. ENTRY (strlen)
  532. @@ -44,3 +45,4 @@ ENTRY (strlen)
  533. END (strlen)
  534. libc_hidden_builtin_def (strlen)
  535. +#endif
  536. \ No newline at end of file
  537. --
  538. 2.25.1