diff options
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elflink.c | 6 | ||||
-rw-r--r-- | ld/ChangeLog | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/i386.exp | 5 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/pr27193.dd | 5 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/pr27193a.o.bz2 | bin | 0 -> 468 bytes | |||
-rw-r--r-- | ld/testsuite/ld-i386/pr27193b.s | 8 |
7 files changed, 36 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index dbb240a..b947c51 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2021-01-17 H.J. Lu <hongjiu.lu@intel.com> + + PR ld/27193 + * elflink.c (elf_create_symbuf): Also ignore section symbols. + 2021-01-16 H.J. Lu <hongjiu.lu@intel.com> PR ld/23169 diff --git a/bfd/elflink.c b/bfd/elflink.c index 8794864..59a6080 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -8126,8 +8126,12 @@ elf_create_symbuf (size_t symcount, Elf_Internal_Sym *isymbuf) if (indbuf == NULL) return NULL; + /* NB: When checking if 2 sections define the same set of local and + global symbols, ignore both undefined and section symbols in the + symbol table. */ for (ind = indbuf, i = 0; i < symcount; i++) - if (isymbuf[i].st_shndx != SHN_UNDEF) + if (isymbuf[i].st_shndx != SHN_UNDEF + && ELF_ST_TYPE (isymbuf[i].st_info) != STT_SECTION) *ind++ = &isymbuf[i]; indbufend = ind; diff --git a/ld/ChangeLog b/ld/ChangeLog index 6b602d6..92fa8a4 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,11 @@ +2021-01-17 H.J. Lu <hongjiu.lu@intel.com> + + PR ld/27193 + * testsuite/ld-i386/i386.exp: Run PR ld/27193 test. + * testsuite/ld-i386/pr27193.dd: New file. + * testsuite/ld-i386/pr27193a.o.bz2: Likewise. + * testsuite/ld-i386/pr27193b.s: Likewise. + 2021-01-16 H.J. Lu <hongjiu.lu@intel.com> PR binutils/23460 diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp index f3e62a4..0be6b86 100644 --- a/ld/testsuite/ld-i386/i386.exp +++ b/ld/testsuite/ld-i386/i386.exp @@ -245,6 +245,11 @@ set i386tests { "-melf_i386 -shared -Bsymbolic -z notext" "" "--32 -mx86-used-note=yes" { pr19827a.S } {{readelf {-rW} pr19827.rd}} "pr19827.so"} + {"Build pr27193.so" + "-melf_i386 -shared" "" + "--32" + { pr27193a.o.bz2 pr27193b.s } + {{objdump {-dw} pr27193.dd}} "pr27193.so"} } proc iamcu_tests {} { diff --git a/ld/testsuite/ld-i386/pr27193.dd b/ld/testsuite/ld-i386/pr27193.dd new file mode 100644 index 0000000..7d1e799 --- /dev/null +++ b/ld/testsuite/ld-i386/pr27193.dd @@ -0,0 +1,5 @@ +#... +0+[a-f0-9]+ <__x86.get_pc_thunk.bx>: + +[a-f0-9]+: 8b 1c 24 mov \(%esp\),%ebx + +[a-f0-9]+: c3 ret +#pass diff --git a/ld/testsuite/ld-i386/pr27193a.o.bz2 b/ld/testsuite/ld-i386/pr27193a.o.bz2 Binary files differnew file mode 100644 index 0000000..365899d --- /dev/null +++ b/ld/testsuite/ld-i386/pr27193a.o.bz2 diff --git a/ld/testsuite/ld-i386/pr27193b.s b/ld/testsuite/ld-i386/pr27193b.s new file mode 100644 index 0000000..9b27a6f --- /dev/null +++ b/ld/testsuite/ld-i386/pr27193b.s @@ -0,0 +1,8 @@ + .section .text.__x86.get_pc_thunk.bx,"axG",%progbits,__x86.get_pc_thunk.bx,comdat + .globl __x86.get_pc_thunk.bx + .hidden __x86.get_pc_thunk.bx + .type __x86.get_pc_thunk.bx, %function + .p2align 4 +__x86.get_pc_thunk.bx: + mov (%esp),%ebx + ret |