同步操作将从 src-openEuler/binutils 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
From d7c082ef88547077b24d3b27144daf4ce4e442f4 Mon Sep 17 00:00:00 2001From: Jinyang He <hejinyang@loongson.cn>Date: Mon, 8 Jul 2024 11:27:52 +0800Subject: [PATCH 101/123] LoongArch: Not alloc dynamic relocs if symbol isabsoluteThe absolute symbol should be resolved to const when link to dso or exe.Alloc dynamic relocs will cause extra space and R_LARCH_NONE finally.---bfd/elfnn-loongarch.c | 14 +++++++-------ld/testsuite/ld-loongarch-elf/abssym.s | 3 +++ld/testsuite/ld-loongarch-elf/abssym_pie.d | 6 ++++++ld/testsuite/ld-loongarch-elf/abssym_shared.d | 6 ++++++ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp | 2 ++5 files changed, 24 insertions(+), 7 deletions(-)create mode 100644 ld/testsuite/ld-loongarch-elf/abssym.screate mode 100644 ld/testsuite/ld-loongarch-elf/abssym_pie.dcreate mode 100644 ld/testsuite/ld-loongarch-elf/abssym_shared.ddiff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.cindex d11189b4..af4d8baa 100644--- a/bfd/elfnn-loongarch.c+++ b/bfd/elfnn-loongarch.c@@ -899,6 +899,7 @@ loongarch_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,unsigned int r_type;unsigned int r_symndx;struct elf_link_hash_entry *h;+ bool is_abs_symbol = false;Elf_Internal_Sym *isym = NULL;r_symndx = ELFNN_R_SYM (rel->r_info);@@ -917,6 +918,7 @@ loongarch_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,if (isym == NULL)return false;+ is_abs_symbol = isym->st_shndx == SHN_ABS;if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC){h = elfNN_loongarch_get_local_sym_hash (htab, abfd, rel, true);@@ -935,6 +937,7 @@ loongarch_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,while (h->root.type == bfd_link_hash_indirect|| h->root.type == bfd_link_hash_warning)h = (struct elf_link_hash_entry *) h->root.u.i.link;+ is_abs_symbol = bfd_is_abs_symbol (&h->root);}/* It is referenced by a non-shared object. */@@ -1142,13 +1145,6 @@ loongarch_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,&& bfd_link_pic (info)&& (sec->flags & SEC_ALLOC) != 0){- bool is_abs_symbol = false;-- if (r_symndx < symtab_hdr->sh_info)- is_abs_symbol = isym->st_shndx == SHN_ABS;- else- is_abs_symbol = bfd_is_abs_symbol (&h->root);-if (!is_abs_symbol){_bfd_error_handler@@ -1165,6 +1161,10 @@ loongarch_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,case R_LARCH_JUMP_SLOT:case R_LARCH_64:+ /* Resolved to const. */+ if (is_abs_symbol)+ break;+need_dynreloc = 1;/* If resolved symbol is defined in this object,diff --git a/ld/testsuite/ld-loongarch-elf/abssym.s b/ld/testsuite/ld-loongarch-elf/abssym.snew file mode 100644index 00000000..3eacc766--- /dev/null+++ b/ld/testsuite/ld-loongarch-elf/abssym.s@@ -0,0 +1,3 @@+.section .data,"aw"+.quad _size8+.word _size4diff --git a/ld/testsuite/ld-loongarch-elf/abssym_pie.d b/ld/testsuite/ld-loongarch-elf/abssym_pie.dnew file mode 100644index 00000000..dfc3e35b--- /dev/null+++ b/ld/testsuite/ld-loongarch-elf/abssym_pie.d@@ -0,0 +1,6 @@+#source: abssym.s+#ld: -pie -e 0 --defsym _size8=0 --defsym _size4=0+#readelf: -r+#...+There are no relocations in this file.+#...diff --git a/ld/testsuite/ld-loongarch-elf/abssym_shared.d b/ld/testsuite/ld-loongarch-elf/abssym_shared.dnew file mode 100644index 00000000..2db7e890--- /dev/null+++ b/ld/testsuite/ld-loongarch-elf/abssym_shared.d@@ -0,0 +1,6 @@+#source: abssym.s+#ld: -shared --defsym _size8=0 --defsym _size4=0+#readelf: -r+#...+There are no relocations in this file.+#...diff --git a/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp b/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.expindex 2be67651..032b9bad 100644--- a/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp+++ b/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp@@ -141,6 +141,7 @@ if [istarget "loongarch64-*-*"] {run_dump_test "relr-discard-shared"run_dump_test "relr-got-shared"run_dump_test "relr-text-shared"+ run_dump_test "abssym_shared"}if [check_pie_support] {@@ -149,6 +150,7 @@ if [istarget "loongarch64-*-*"] {run_dump_test "relr-discard-pie"run_dump_test "relr-got-pie"run_dump_test "relr-text-pie"+ run_dump_test "abssym_pie"}run_dump_test "max_imm_b16"--2.33.0
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。