logo

live-bootstrap

Mirror of <https://github.com/fosslinux/live-bootstrap>

dont-skip-weak-symbols-ar.patch (1512B)


  1. SPDX-FileCopyrightText: 2021 Alexander Sosedkin <monk@unboiled.info>
  2. SPDX-License-Identifier: LGPL-2.0-or-later
  3. From da11cf651576f94486dbd043dbfcde469e497574 Mon Sep 17 00:00:00 2001
  4. From: Alexander Sosedkin <monk@unboiled.info>
  5. Date: Sat, 30 Oct 2021 16:04:11 +0200
  6. Subject: [PATCH] Don't skip weak symbols during ar creation
  7. ```
  8. $ echo 'int __attribute__((__weak__)) f(void) { return 4; }' > w.c
  9. $ tcc -c w.c -o w.o
  10. $ tcc-old -ar rc w.a w.o; nm -s w.a # previous behaviour, not indexed
  11. w.o:
  12. 0000000000000000 W f
  13. $ ar rc w.a w.o; nm -s w.a # GNU binutils behaviour, indexed
  14. Archive index:
  15. f in w.o
  16. 0000000000000000 W f
  17. $ tcc-new rc w.a w.o; nm -s w.a # new behaviour, indexed
  18. Archive index:
  19. f in w.o
  20. 0000000000000000 W f
  21. ```
  22. ---
  23. tcctools.c | 3 +++
  24. 1 file changed, 3 insertions(+)
  25. diff --git a/tcctools.c b/tcctools.c
  26. index cf174965..4567b81a 100644
  27. --- tcc-0.9.27/tcctools.c
  28. +++ tcc-0.9.27/tcctools.c
  29. @@ -200,6 +200,9 @@ ST_FUNC int tcc_tool_ar(TCCState *s1, int argc, char **argv)
  30. (sym->st_info == 0x10
  31. || sym->st_info == 0x11
  32. || sym->st_info == 0x12
  33. + || sym->st_info == 0x20
  34. + || sym->st_info == 0x21
  35. + || sym->st_info == 0x22
  36. )) {
  37. //printf("symtab: %2Xh %4Xh %2Xh %s\n", sym->st_info, sym->st_size, sym->st_shndx, strtab + sym->st_name);
  38. istrlen = strlen(strtab + sym->st_name)+1;
  39. --
  40. 2.11.4.GIT