[Bug ld/19572] -Ttext-segment accepts out of range value
https://sourceware.org/bugzilla/show_bug.cgi?id=19572 Nick Clifton changed: What|Removed |Added Attachment #9037|0 |1 is obsolete|| --- Comment #6 from Nick Clifton --- Created attachment 9043 --> https://sourceware.org/bugzilla/attachment.cgi?id=9043&action=edit Revised patch Hi H.J. Thanks for the examples. I was unaware of the vagaries of the x32 architecture. This revised patch should work with second test in comment #5, but it will not work with the test from comment #4. The reason for that is that the text segment address set in comment #4 is a 32-bit address, which makes it valid as far as this patch is concerned. If instead the test used this linker command: ./ld -Ttext-segment 0x8 -m elf32_x86_64 -o x x.o then the patched code would issue an error message. Is this version of the patch acceptable to you ? Cheers Nick -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19572] -Ttext-segment accepts out of range value
https://sourceware.org/bugzilla/show_bug.cgi?id=19572 Nick Clifton changed: What|Removed |Added Status|NEW |ASSIGNED -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug gold/19735] New: Incorrect handling of 0-PC-range FDEs
https://sourceware.org/bugzilla/show_bug.cgi?id=19735 Bug ID: 19735 Summary: Incorrect handling of 0-PC-range FDEs Product: binutils Version: 2.27 (HEAD) Status: NEW Severity: normal Priority: P2 Component: gold Assignee: ccoutant at gmail dot com Reporter: gluk47 at gmail dot com CC: ian at airs dot com Target Milestone: --- Created attachment 9044 --> https://sourceware.org/bugzilla/attachment.cgi?id=9044&action=edit Suggested solution There is a case in which gold produces binaries with broken exception handling, while ld.bfd produces correct binaries. If a function is of a non-void return type and its body is completely empty, then clang optimizer marks this function as unreachable and later shrinks its address range to zero (generates no assembly code, if using at least -O1). The FDEs (stack frame unwinder information entries) for such shrunk functions are not deleted, though, but instead, pc_begin and pc_end values for these FDEs are adjusted to be the same values, and PC range of the resulting FDE is 0. ld.bfd discards 0-range FDEs while reading object files (the code for it is in the file 'elf-eh-frame.c', function '_bfd_elf_parse_eh_frame'), while gold includes such entries as-is. Since these FDEs actually belong to the shrunk functions, there usually is another valid function starting with the address which is listed as PC_begin of the 0-range FDE, with its own FDE, containing valid unwinding information. However, the GCC's unwinder (from libgcc_s.so) uses only one FDE for a given PC_begin value (since normally no two different functions share the same starting address), which sometimes happens to be the 0-range FDE depending on the assembler layout. This FDE cannot be applied to any address because of its range; the valid FDE for the stack frame is ignored; the exception is not caught by the corresponding catch clause and eventually triggers std::terminate. It is not clear whether clang behavior is completely sane here; however, it appears reasonable to add a rather simple fix to gold to improve its compatibility with ld.bfd, and to improve its robustness. The original Android test case fixed by the supposed patch is here: https://android.googlesource.com/platform/ndk/+/master/tests/device/test-stlport_static-exception/jni/dyncast2_1.cpp To see the issue reproduced, you can compile the code below using ld.gold and ld.bfd and examine the result with 'readelf -wf'. In the gold-produced binary there will be a potentially faulty entry with zero range like 'pc=0a10..0a10' and later an FDE with the same starting address. int f() {} int main () { try { throw 1; return 1; } catch (int) { return 0; } return 2; } -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19704] Missing dynamic relocation against undefined weak symbol
https://sourceware.org/bugzilla/show_bug.cgi?id=19704 --- Comment #2 from cvs-commit at gcc dot gnu.org --- The master branch has been updated by H.J. Lu : https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=aec6b87e0b66d707ead62ca40d220ee78b4cf5a5 commit aec6b87e0b66d707ead62ca40d220ee78b4cf5a5 Author: H.J. Lu Date: Fri Feb 26 04:16:15 2016 -0800 [x86] Resolve non-PIC undefweak symbols in executable For i386 and x86-64, non-PIC references to undefined weak symbols are resolved without dynamic relocation when creating executable. Resolved undefined weak symbols are removed from the dynamic symbol table in executable. One exception is on i386, we need resolved undefined weak symbols in the dynamic symbol table in PIE if input relocatable files contain branchs without PLT so that we can branch to 0 with dynamic relocation in text section. This makes behaviors of dynamic executable and position independent executable predictable with mixed PIC and non-PIC references to undefined weak symbols. If all references to undefined weak symbols are PIC, dynamic relocations against undefined weak symbols will be generated in executable unless -z nodynamic-undefined-weak is passed to linker. bfd/ PR ld/19636 PR ld/19704 PR ld/19719 * elf32-i386.c (UNDEFINED_WEAK_RESOLVED_TO_ZERO): New. (elf_i386_link_hash_entry): Add has_got_reloc and has_non_got_reloc. (elf_i386_link_hash_table): Add interp. (elf_i386_link_hash_newfunc): Initialize has_got_reloc and has_non_got_reloc. (elf_i386_copy_indirect_symbol): Copy has_got_reloc and has_non_got_reloc. (elf_i386_check_relocs): Set has_got_reloc and has_non_got_reloc. (elf_i386_fixup_symbol): New function. (elf_i386_pie_finish_undefweak_symbol): Likewise. (elf_i386_allocate_dynrelocs): Don't allocate space for dynamic relocations and discard relocations against resolved undefined weak symbols in executable. Don't make resolved undefined weak symbols in executable dynamic. Keep dynamic non-GOT/non-PLT relocation against undefined weak symbols in PIE. (elf_i386_size_dynamic_sections): Set interp to .interp section. (elf_i386_relocate_section): Don't generate dynamic relocations against resolved undefined weak symbols in PIE, except for R_386_PC32. (elf_i386_finish_dynamic_symbol): Keep PLT/GOT entries without dynamic PLT/GOT relocations for resolved undefined weak symbols. Don't generate dynamic relocation against resolved undefined weak symbol in executable. (elf_i386_finish_dynamic_sections): Call elf_i386_pie_finish_undefweak_symbol on all symbols in PIE. (elf_backend_fixup_symbol): New. * elf64-x86-64.c (UNDEFINED_WEAK_RESOLVED_TO_ZERO): New. (elf_x86_64_link_hash_entry): Add has_got_reloc and has_non_got_reloc. (elf_x86_64_link_hash_table): Add interp. (elf_x86_64_link_hash_newfunc): Initialize has_got_reloc and has_non_got_reloc. (elf_x86_64_copy_indirect_symbol): Copy has_got_reloc and has_non_got_reloc. (elf_x86_64_check_relocs): Set has_got_reloc and has_non_got_reloc. (elf_x86_64_fixup_symbol): New function. (elf_x86_64_pie_finish_undefweak_symbol): Likewise. (elf_x86_64_allocate_dynrelocs): Don't allocate space for dynamic relocations and discard relocations against resolved undefined weak symbols in executable. Don't make resolved undefined weak symbols in executable dynamic. (elf_x86_64_size_dynamic_sections): Set interp to .interp section. (elf_x86_64_relocate_section): Check relocation overflow for dynamic relocations against unresolved weak undefined symbols. Don't generate dynamic relocations against resolved weak undefined symbols in PIE. (elf_x86_64_finish_dynamic_symbol): Keep PLT/GOT entries without dynamic PLT/GOT relocations for resolved undefined weak symbols. Don't generate dynamic relocation against resolved undefined weak symbol in executable. (elf_x86_64_finish_dynamic_sections): Call elf_x86_64_pie_finish_undefweak_symbol on all symbols in PIE. (elf_backend_fixup_symbol): New. include/ PR ld/19636 PR ld/19704 PR ld/19719 * bfdlink.h (bfd_link_info): Add dynamic_undefined_weak. ld/ PR ld/19636 PR ld/19704 PR ld/19719 * Makefile.am (ELF_X86_DEPS): Add dynamic_undefined_weak.sh. * Makefile.in: Regenerated. * NEWS: Mention -z nodynamic-undefined-weak. * ld.texinfo: Document -z nodynamic-undefined-weak. * ldmain.c (main): Initialize dynamic_undefined_weak to -1. * emulparams/dynamic_undefined_weak.sh: New file.
[Bug ld/19636] -pie changes program behavior and generate unnecessary dynamic symbols.
https://sourceware.org/bugzilla/show_bug.cgi?id=19636 --- Comment #1 from cvs-commit at gcc dot gnu.org --- The master branch has been updated by H.J. Lu : https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=aec6b87e0b66d707ead62ca40d220ee78b4cf5a5 commit aec6b87e0b66d707ead62ca40d220ee78b4cf5a5 Author: H.J. Lu Date: Fri Feb 26 04:16:15 2016 -0800 [x86] Resolve non-PIC undefweak symbols in executable For i386 and x86-64, non-PIC references to undefined weak symbols are resolved without dynamic relocation when creating executable. Resolved undefined weak symbols are removed from the dynamic symbol table in executable. One exception is on i386, we need resolved undefined weak symbols in the dynamic symbol table in PIE if input relocatable files contain branchs without PLT so that we can branch to 0 with dynamic relocation in text section. This makes behaviors of dynamic executable and position independent executable predictable with mixed PIC and non-PIC references to undefined weak symbols. If all references to undefined weak symbols are PIC, dynamic relocations against undefined weak symbols will be generated in executable unless -z nodynamic-undefined-weak is passed to linker. bfd/ PR ld/19636 PR ld/19704 PR ld/19719 * elf32-i386.c (UNDEFINED_WEAK_RESOLVED_TO_ZERO): New. (elf_i386_link_hash_entry): Add has_got_reloc and has_non_got_reloc. (elf_i386_link_hash_table): Add interp. (elf_i386_link_hash_newfunc): Initialize has_got_reloc and has_non_got_reloc. (elf_i386_copy_indirect_symbol): Copy has_got_reloc and has_non_got_reloc. (elf_i386_check_relocs): Set has_got_reloc and has_non_got_reloc. (elf_i386_fixup_symbol): New function. (elf_i386_pie_finish_undefweak_symbol): Likewise. (elf_i386_allocate_dynrelocs): Don't allocate space for dynamic relocations and discard relocations against resolved undefined weak symbols in executable. Don't make resolved undefined weak symbols in executable dynamic. Keep dynamic non-GOT/non-PLT relocation against undefined weak symbols in PIE. (elf_i386_size_dynamic_sections): Set interp to .interp section. (elf_i386_relocate_section): Don't generate dynamic relocations against resolved undefined weak symbols in PIE, except for R_386_PC32. (elf_i386_finish_dynamic_symbol): Keep PLT/GOT entries without dynamic PLT/GOT relocations for resolved undefined weak symbols. Don't generate dynamic relocation against resolved undefined weak symbol in executable. (elf_i386_finish_dynamic_sections): Call elf_i386_pie_finish_undefweak_symbol on all symbols in PIE. (elf_backend_fixup_symbol): New. * elf64-x86-64.c (UNDEFINED_WEAK_RESOLVED_TO_ZERO): New. (elf_x86_64_link_hash_entry): Add has_got_reloc and has_non_got_reloc. (elf_x86_64_link_hash_table): Add interp. (elf_x86_64_link_hash_newfunc): Initialize has_got_reloc and has_non_got_reloc. (elf_x86_64_copy_indirect_symbol): Copy has_got_reloc and has_non_got_reloc. (elf_x86_64_check_relocs): Set has_got_reloc and has_non_got_reloc. (elf_x86_64_fixup_symbol): New function. (elf_x86_64_pie_finish_undefweak_symbol): Likewise. (elf_x86_64_allocate_dynrelocs): Don't allocate space for dynamic relocations and discard relocations against resolved undefined weak symbols in executable. Don't make resolved undefined weak symbols in executable dynamic. (elf_x86_64_size_dynamic_sections): Set interp to .interp section. (elf_x86_64_relocate_section): Check relocation overflow for dynamic relocations against unresolved weak undefined symbols. Don't generate dynamic relocations against resolved weak undefined symbols in PIE. (elf_x86_64_finish_dynamic_symbol): Keep PLT/GOT entries without dynamic PLT/GOT relocations for resolved undefined weak symbols. Don't generate dynamic relocation against resolved undefined weak symbol in executable. (elf_x86_64_finish_dynamic_sections): Call elf_x86_64_pie_finish_undefweak_symbol on all symbols in PIE. (elf_backend_fixup_symbol): New. include/ PR ld/19636 PR ld/19704 PR ld/19719 * bfdlink.h (bfd_link_info): Add dynamic_undefined_weak. ld/ PR ld/19636 PR ld/19704 PR ld/19719 * Makefile.am (ELF_X86_DEPS): Add dynamic_undefined_weak.sh. * Makefile.in: Regenerated. * NEWS: Mention -z nodynamic-undefined-weak. * ld.texinfo: Document -z nodynamic-undefined-weak. * ldmain.c (main): Initialize dynamic_undefined_weak to -1. * emulparams/dynamic_undefined_weak.sh: New file.
[Bug ld/19719] Mixing PIC and non-PIC input files generates unexpected result
https://sourceware.org/bugzilla/show_bug.cgi?id=19719 --- Comment #1 from cvs-commit at gcc dot gnu.org --- The master branch has been updated by H.J. Lu : https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=aec6b87e0b66d707ead62ca40d220ee78b4cf5a5 commit aec6b87e0b66d707ead62ca40d220ee78b4cf5a5 Author: H.J. Lu Date: Fri Feb 26 04:16:15 2016 -0800 [x86] Resolve non-PIC undefweak symbols in executable For i386 and x86-64, non-PIC references to undefined weak symbols are resolved without dynamic relocation when creating executable. Resolved undefined weak symbols are removed from the dynamic symbol table in executable. One exception is on i386, we need resolved undefined weak symbols in the dynamic symbol table in PIE if input relocatable files contain branchs without PLT so that we can branch to 0 with dynamic relocation in text section. This makes behaviors of dynamic executable and position independent executable predictable with mixed PIC and non-PIC references to undefined weak symbols. If all references to undefined weak symbols are PIC, dynamic relocations against undefined weak symbols will be generated in executable unless -z nodynamic-undefined-weak is passed to linker. bfd/ PR ld/19636 PR ld/19704 PR ld/19719 * elf32-i386.c (UNDEFINED_WEAK_RESOLVED_TO_ZERO): New. (elf_i386_link_hash_entry): Add has_got_reloc and has_non_got_reloc. (elf_i386_link_hash_table): Add interp. (elf_i386_link_hash_newfunc): Initialize has_got_reloc and has_non_got_reloc. (elf_i386_copy_indirect_symbol): Copy has_got_reloc and has_non_got_reloc. (elf_i386_check_relocs): Set has_got_reloc and has_non_got_reloc. (elf_i386_fixup_symbol): New function. (elf_i386_pie_finish_undefweak_symbol): Likewise. (elf_i386_allocate_dynrelocs): Don't allocate space for dynamic relocations and discard relocations against resolved undefined weak symbols in executable. Don't make resolved undefined weak symbols in executable dynamic. Keep dynamic non-GOT/non-PLT relocation against undefined weak symbols in PIE. (elf_i386_size_dynamic_sections): Set interp to .interp section. (elf_i386_relocate_section): Don't generate dynamic relocations against resolved undefined weak symbols in PIE, except for R_386_PC32. (elf_i386_finish_dynamic_symbol): Keep PLT/GOT entries without dynamic PLT/GOT relocations for resolved undefined weak symbols. Don't generate dynamic relocation against resolved undefined weak symbol in executable. (elf_i386_finish_dynamic_sections): Call elf_i386_pie_finish_undefweak_symbol on all symbols in PIE. (elf_backend_fixup_symbol): New. * elf64-x86-64.c (UNDEFINED_WEAK_RESOLVED_TO_ZERO): New. (elf_x86_64_link_hash_entry): Add has_got_reloc and has_non_got_reloc. (elf_x86_64_link_hash_table): Add interp. (elf_x86_64_link_hash_newfunc): Initialize has_got_reloc and has_non_got_reloc. (elf_x86_64_copy_indirect_symbol): Copy has_got_reloc and has_non_got_reloc. (elf_x86_64_check_relocs): Set has_got_reloc and has_non_got_reloc. (elf_x86_64_fixup_symbol): New function. (elf_x86_64_pie_finish_undefweak_symbol): Likewise. (elf_x86_64_allocate_dynrelocs): Don't allocate space for dynamic relocations and discard relocations against resolved undefined weak symbols in executable. Don't make resolved undefined weak symbols in executable dynamic. (elf_x86_64_size_dynamic_sections): Set interp to .interp section. (elf_x86_64_relocate_section): Check relocation overflow for dynamic relocations against unresolved weak undefined symbols. Don't generate dynamic relocations against resolved weak undefined symbols in PIE. (elf_x86_64_finish_dynamic_symbol): Keep PLT/GOT entries without dynamic PLT/GOT relocations for resolved undefined weak symbols. Don't generate dynamic relocation against resolved undefined weak symbol in executable. (elf_x86_64_finish_dynamic_sections): Call elf_x86_64_pie_finish_undefweak_symbol on all symbols in PIE. (elf_backend_fixup_symbol): New. include/ PR ld/19636 PR ld/19704 PR ld/19719 * bfdlink.h (bfd_link_info): Add dynamic_undefined_weak. ld/ PR ld/19636 PR ld/19704 PR ld/19719 * Makefile.am (ELF_X86_DEPS): Add dynamic_undefined_weak.sh. * Makefile.in: Regenerated. * NEWS: Mention -z nodynamic-undefined-weak. * ld.texinfo: Document -z nodynamic-undefined-weak. * ldmain.c (main): Initialize dynamic_undefined_weak to -1. * emulparams/dynamic_undefined_weak.sh: New file.
[Bug gas/19359] gas fails with Error: junk at end of line: `8' on powerpc64le-linux-gnu
https://sourceware.org/bugzilla/show_bug.cgi?id=19359 --- Comment #9 from cvs-commit at gcc dot gnu.org --- The binutils-2_26-branch branch has been updated by Alan Modra : https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=239803398de94a92fdcef24b5d7914842dcc5797 commit 239803398de94a92fdcef24b5d7914842dcc5797 Author: Alan Modra Date: Fri Feb 26 23:35:13 2016 +1030 Enable 2 operand form of powerpc mfcr with -many This is a workaround for a gcc bug. PR 19359 * ppc-opc.c (insert_fxm): Remove "ignored" from error message. (powerpc_opcodes): Remove single-operand mfcr. -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19704] Missing dynamic relocation against undefined weak symbol
https://sourceware.org/bugzilla/show_bug.cgi?id=19704 H.J. Lu changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #3 from H.J. Lu --- Fixed. -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19719] Mixing PIC and non-PIC input files generates unexpected result
https://sourceware.org/bugzilla/show_bug.cgi?id=19719 H.J. Lu changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED Target Milestone|--- |2.27 --- Comment #2 from H.J. Lu --- Fixed. -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19636] -pie changes program behavior and generate unnecessary dynamic symbols.
https://sourceware.org/bugzilla/show_bug.cgi?id=19636 H.J. Lu changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #2 from H.J. Lu --- Fixed. -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19601] Wrong GOT offset used with GOT relocation
https://sourceware.org/bugzilla/show_bug.cgi?id=19601 H.J. Lu changed: What|Removed |Added CC||alexander.warg@kernkonzept. ||com --- Comment #5 from H.J. Lu --- *** Bug 19357 has been marked as a duplicate of this bug. *** -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19357] ld produces invalid GOT entries for R_386_GOT32X relocations
https://sourceware.org/bugzilla/show_bug.cgi?id=19357 H.J. Lu changed: What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |DUPLICATE --- Comment #4 from H.J. Lu --- Dup. *** This bug has been marked as a duplicate of bug 19601 *** -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19553] linking against libs that require pthreads breaks due to symbol changes
https://sourceware.org/bugzilla/show_bug.cgi?id=19553 --- Comment #5 from cvs-commit at gcc dot gnu.org --- The binutils-2_26-branch branch has been updated by H.J. Lu : https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=f558a73bafecee6d3cd45031e44e6e40f80fb241 commit f558a73bafecee6d3cd45031e44e6e40f80fb241 Author: H.J. Lu Date: Mon Feb 1 15:49:52 2016 -0800 Don't add DT_NEEDED for unmatched symbol Don't add DT_NEEDED if a symbol from a library loaded via DT_NEEDED doesn't match the symbol referenced by regular object. Backport from master bfd/ PR ld/19553 * elflink.c (elf_link_add_object_symbols): Don't add DT_NEEDED if a symbol from a library loaded via DT_NEEDED doesn't match the symbol referenced by regular object. ld/testsuite/ PR ld/19553 * testsuite/ld-elf/indirect.exp: Run tests for PR ld/19553. * testsuite/ld-elf/pr19553.map: New file. * testsuite/ld-elf/pr19553.map: Likewise. * testsuite/ld-elf/pr19553a.c: Likewise. * testsuite/ld-elf/pr19553b.c: Likewise. * testsuite/ld-elf/pr19553b.out: Likewise. * testsuite/ld-elf/pr19553c.c: Likewise. * testsuite/ld-elf/pr19553c.out: Likewise. * testsuite/ld-elf/pr19553d.c: Likewise. * testsuite/ld-elf/pr19553d.out: Likewise. -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19553] linking against libs that require pthreads breaks due to symbol changes
https://sourceware.org/bugzilla/show_bug.cgi?id=19553 H.J. Lu changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #6 from H.J. Lu --- Fixed. -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug binutils/19698] [2.26 Regression] mysql qt4 driver plugin not able to open libmysqlclient.so
https://sourceware.org/bugzilla/show_bug.cgi?id=19698 --- Comment #21 from cvs-commit at gcc dot gnu.org --- The binutils-2_26-branch branch has been updated by H.J. Lu : https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=544ddf9322b1b83982e5cb84a54d084ee7e718ea commit 544ddf9322b1b83982e5cb84a54d084ee7e718ea Author: H.J. Lu Date: Wed Feb 24 15:13:35 2016 -0800 Update symbol version for symbol from linker script We need to update symbol version for symbols from linker script. Backport from master bfd/ PR ld/19698 * elflink.c (bfd_elf_record_link_assignment): Set versioned if symbol version is unknown. ld/ PR ld/19698 * testsuite/ld-elf/pr19698.d: New file. * testsuite/ld-elf/pr19698.s: Likewise. * testsuite/ld-elf/pr19698.t: Likewise. -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19698] [2.26 Regression] mysql qt4 driver plugin not able to open libmysqlclient.so
https://sourceware.org/bugzilla/show_bug.cgi?id=19698 H.J. Lu changed: What|Removed |Added Status|WAITING |RESOLVED Component|binutils|ld Resolution|--- |FIXED --- Comment #22 from H.J. Lu --- Fixed for trunk and 2.26 branch. -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/13406] version script: please allow anonymous tag to be combined with other tags
https://sourceware.org/bugzilla/show_bug.cgi?id=13406 H.J. Lu changed: What|Removed |Added Status|RESOLVED|REOPENED Resolution|DUPLICATE |--- --- Comment #6 from H.J. Lu --- Please try binutils 2.26. -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/13406] version script: please allow anonymous tag to be combined with other tags
https://sourceware.org/bugzilla/show_bug.cgi?id=13406 H.J. Lu changed: What|Removed |Added Status|REOPENED|WAITING CC||hjl.tools at gmail dot com -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19572] -Ttext-segment accepts out of range value
https://sourceware.org/bugzilla/show_bug.cgi?id=19572 --- Comment #7 from H.J. Lu --- (In reply to Nick Clifton from comment #6) > Created attachment 9043 [details] > Revised patch testsuite/ld-elf/textaddr8.d should be ld/testsuite/ld-elf/textaddr8.d. > Hi H.J. > > Thanks for the examples. I was unaware of the vagaries of the x32 > architecture. This revised patch should work with second test in comment #5, > but it will not work with the test from comment #4. The reason for that is > that the text segment address set in comment #4 is a 32-bit address, which > makes > it valid as far as this patch is concerned. If instead the test used this > linker command: > > ./ld -Ttext-segment 0x8 -m elf32_x86_64 -o x x.o > > then the patched code would issue an error message. > > Is this version of the patch acceptable to you ? I got this strange message with i386 ld: cc -m32 -c -O2 -ffunction-sections -fPIC -o x.o x.S ./ld.32 -Ttext-segment 0x8000 -m elf_i386 -o x x.o ./ld.32: warning: address of `text-segment' isn't multiple of maximum page size ./ld.32: Segment text-segment address is bigger than maximum address -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19645] STT_COMMON is mishandled
https://sourceware.org/bugzilla/show_bug.cgi?id=19645 --- Comment #4 from cvs-commit at gcc dot gnu.org --- The master branch has been updated by H.J. Lu : https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b8871f357fdfa9c0c06d2d3e5600391d8c994f37 commit b8871f357fdfa9c0c06d2d3e5600391d8c994f37 Author: H.J. Lu Date: Mon Feb 22 09:18:52 2016 -0800 Properly implement STT_COMMON The BFD configure option, --enable-elf-stt-common, can't be to used to verify STT_COMMON implementation with the normal binutils build. Instead, this patch removes it from BFD. It adds --elf-stt-common=[no|yes] to ELF assembler/objcopy and adds -z common/-z nocommon to ld. A configure option, --enable-elf-stt-common, is added to gas to specify whether ELF assembler should generate common symbols with the STT_COMMON type by default. Since BSF_KEEP_G is never used, it is renamed to BSF_ELF_COMMON for ELF common symbols. bfd/ PR ld/19645 * bfd.c (bfd): Change flags to 20 bits. (BFD_CONVERT_ELF_COMMON): New. (BFD_USE_ELF_STT_COMMON): Likewise. (BFD_FLAGS_SAVED): Add BFD_CONVERT_ELF_COMMON and BFD_USE_ELF_STT_COMMON. (BFD_FLAGS_FOR_BFD_USE_MASK): Likewise. * configure.ac: Remove --enable-elf-stt-common. * elf.c (swap_out_syms): Choose STT_COMMON or STT_OBJECT for common symbol depending on BFD_CONVERT_ELF_COMMON and BFD_USE_ELF_STT_COMMON. * elfcode.h (elf_slurp_symbol_table): Set BSF_ELF_COMMON for STT_COMMON. * elflink.c (bfd_elf_link_mark_dynamic_symbol): Also check STT_COMMON. (elf_link_convert_common_type): New function. (elf_link_output_extsym): Choose STT_COMMON or STT_OBJECT for common symbol depending on BFD_CONVERT_ELF_COMMON and BFD_USE_ELF_STT_COMMON. Set sym.st_info after sym.st_shndx. * elfxx-target.h (TARGET_BIG_SYM): Add BFD_CONVERT_ELF_COMMON and BFD_USE_ELF_STT_COMMON to object_flags. (TARGET_LITTLE_SYM): Likewise. * syms.c (BSF_KEEP_G): Renamed to ... (BSF_ELF_COMMON): This. * bfd-in2.h: Regenerated. * config.in: Likewise. * configure: Likewise. binutils/ PR ld/19645 * NEWS: Mention --elf-stt-common= for objcopy. * doc/binutils.texi: Document --elf-stt-common= for objcopy. * objcopy.c (do_elf_stt_common): New. (command_line_switch): Add OPTION_ELF_STT_COMMON. (copy_options): Add --elf-stt-common=. (copy_usage): Add --elf-stt-common=. (copy_object): Also check do_elf_stt_common for ELF targets. (copy_file): Handle do_elf_stt_common. (copy_main): Handle OPTION_ELF_STT_COMMON. * readelf.c (apply_relocations): Support STT_COMMON. * testsuite/binutils-all/common-1.s: New file. * testsuite/binutils-all/common-1a.d: Likewise. * testsuite/binutils-all/common-1b.d: Likewise. * testsuite/binutils-all/common-1c.d: Likewise. * testsuite/binutils-all/common-1d.d: Likewise. * testsuite/binutils-all/common-1e.d: Likewise. * testsuite/binutils-all/common-1f.d: Likewise. * testsuite/binutils-all/common-2.s: Likewise. * testsuite/binutils-all/common-2a.d: Likewise. * testsuite/binutils-all/common-2b.d: Likewise. * testsuite/binutils-all/common-2c.d: Likewise. * testsuite/binutils-all/common-2d.d: Likewise. * testsuite/binutils-all/common-2e.d: Likewise. * testsuite/binutils-all/common-2f.d: Likewise. * testsuite/binutils-all/objcopy.exp (objcopy_test_elf_common_symbols): New proc. Run objcopy_test_elf_common_symbols for ELF targets gas/ PR ld/19645 * NEWS: Mention --enable-elf-stt-common and --elf-stt-common= for ELF assemblers. * as.c (flag_use_elf_stt_common): New. (show_usage): Add --elf-stt-common=. (option_values): Add OPTION_ELF_STT_COMMON. (std_longopts): Add --elf-stt-common=. (parse_args): Handle --elf-stt-common=. * as.h (flag_use_elf_stt_common): New. * config.in: Regenerated. * configure: Likewise. * configure.ac: Add --enable-elf-stt-common and define DEFAULT_GENERATE_ELF_STT_COMMON. * gas/write.c (write_object_file): Set BFD_CONVERT_ELF_COMMON and BFD_USE_ELF_STT_COMMON if flag_use_elf_stt_common is set. * doc/as.texinfo: Document --elf-stt-common=. * testsuite/gas/elf/common3.s: New file. * testsuite/gas/elf/common3a.d: Likewise. * testsuite/gas/elf/common3b.d: Likewise. * testsuite/gas/elf/common4.s: Likewise. * testsuite/gas/elf/common4a.d: Likewise. * testsuite/gas/elf/common4b.d: Likewise. * testsuite/gas/i386/dw2-compress-3b.d: Likewise. * testsuite/gas/i386/dw2-compressed-3b.d: Likewise. * testsuite/gas/elf/elf.
[Bug ld/19645] STT_COMMON is mishandled
https://sourceware.org/bugzilla/show_bug.cgi?id=19645 H.J. Lu changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #5 from H.J. Lu --- Fixed for 2.27. -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19572] -Ttext-segment accepts out of range value
https://sourceware.org/bugzilla/show_bug.cgi?id=19572 --- Comment #8 from H.J. Lu --- (In reply to Nick Clifton from comment #6) > Is this version of the patch acceptable to you ? > For i386-linux, I got FAIL: ld-elf/pr14926 FAIL: ld-elf/textaddr1 FAIL: ld-elf/textaddr2 FAIL: ld-elf/textaddr3 FAIL: ld-elf/textaddr4 FAIL: ld-elf/textaddr5 FAIL: ld-elf/textaddr6 FAIL: ld-elf/textaddr7 FAIL: ld-elf/textaddr8 FAIL: Symbol export class test (final shared object) FAIL: i386 symbol export class test (final shared object) FAIL: PCREL16 absolute reloc FAIL: ld-linkonce/zeroehl32 FAIL: non-zero p_vaddr FAIL: ld-scripts/empty-address-2a FAIL: ld-scripts/empty-address-2b FAIL: ld-scripts/pr14962 FAIL: S-records FAIL: S-records with constructors -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19645] STT_COMMON is mishandled
https://sourceware.org/bugzilla/show_bug.cgi?id=19645 --- Comment #6 from cvs-commit at gcc dot gnu.org --- The master branch has been updated by H.J. Lu : https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=11e5f1ec54e7ae87f131ef8506f5af9d0bb1c6db commit 11e5f1ec54e7ae87f131ef8506f5af9d0bb1c6db Author: H.J. Lu Date: Fri Feb 26 06:44:03 2016 -0800 Add ChangeLog entries for PR ld/19645 -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug gold/19735] Incorrect handling of 0-PC-range FDEs
https://sourceware.org/bugzilla/show_bug.cgi?id=19735 --- Comment #1 from cvs-commit at gcc dot gnu.org --- The master branch has been updated by Cary Coutant : https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=fc5a9bd57cbb974b8fc3aeb9a15d644cd9103451 commit fc5a9bd57cbb974b8fc3aeb9a15d644cd9103451 Author: Cary Coutant Date: Fri Feb 26 07:50:15 2016 -0800 Discard FDEs for zero-length address ranges. 2016-02-26 Egor Kochetov Cary Coutant gold/ PR gold/19735 * ehframe.h (Cie::fde_encoding): New method. * ehframe.cc (Eh_frame::read_fde): Discard FDEs for zero-length address ranges. -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug gold/19735] Incorrect handling of 0-PC-range FDEs
https://sourceware.org/bugzilla/show_bug.cgi?id=19735 Cary Coutant changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #2 from Cary Coutant --- Fixed on trunk. -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19609] [2.26 Regression] Load defined symbol in non-PIC link are wrongly optimized
https://sourceware.org/bugzilla/show_bug.cgi?id=19609 --- Comment #3 from cvs-commit at gcc dot gnu.org --- The master branch has been updated by H.J. Lu : https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=bae420ef26f4331415b0503141c5931318025906 commit bae420ef26f4331415b0503141c5931318025906 Author: H.J. Lu Date: Fri Feb 26 09:38:08 2016 -0800 Optimize x86 GOT32X/GOTPCRELX relocations R_386_GOT32X, R_X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX relocations retrieve the symbol address via its GOT slot. If the symbol address is known at the link-time, we can use it directly by changing instruction encoding. Indirect branch can only be converted to PC relative direct branch. MOV can be changed to LEA or encoded differently with signed address. The subset of binary operations can be encoded only with signed address. If undefined weak symbol is resolved to zero link-time, we can use it as address. Zero addresss can't used with PC relative direct branch when PIC is true since the current PC is unknown. In 64-bit, 32-bit relocation for PC relatiave direct branch to zero may also overflow. If this optimization causes relocation overflow, --no-relax can be used to work around it. bfd/ PR ld/19609 * elf32-i386.c (elf_i386_convert_load): Convert to R_386_32 for load with locally bound symbols if PIC is false or there is no base register. Optimize branch to 0 if PIC is false. (elf_i386_relocate_section): Don't generate dynamic relocations against undefined weak symbols if PIC is false. * elf64-x86-64.c (elf_x86_64_convert_load): Disable optimization if we can't estimate relocation overflow with --no-relax. Convert to R_X86_64_32S/R_X86_64_32 for load with locally bound symbols if PIC is false. Optimize branch to 0 if PIC is false. (elf_x86_64_relocate_section): Don't generate dynamic relocations against undefined weak symbols if PIC is false. ld/ PR ld/19609 * testsuite/ld-i386/got1.dd: Updated. * testsuite/ld-i386/lea1c.d: Likewise. * testsuite/ld-i386/load1-nacl.d: Likewise. * testsuite/ld-i386/load1.d: Likewise. * testsuite/ld-i386/load4b.d: Likewise. * testsuite/ld-i386/load5b.d: Likewise. * testsuite/ld-i386/mov1b.d: Likewise. * testsuite/ld-x86-64/mov1b.d: Likewise. * testsuite/ld-x86-64/mov1d.d: Likewise. * testsuite/ld-ifunc/ifunc-21-i386.d: Likewise. * testsuite/ld-ifunc/ifunc-21-x86-64.d: Likewise. * testsuite/ld-ifunc/ifunc-22-i386.d: Likewise. * testsuite/ld-ifunc/ifunc-22-x86-64.d: Likewise. * testsuite/ld-x86-64/gotpcrel1.dd: Likewise. * testsuite/ld-x86-64/lea1a.d: Likewise. * testsuite/ld-x86-64/lea1b.d: Likewise. * testsuite/ld-x86-64/lea1c.d: Likewise. * testsuite/ld-x86-64/lea1d.d: Likewise. * testsuite/ld-x86-64/lea1e.d: Likewise. * testsuite/ld-x86-64/lea1f.d: Likewise. * testsuite/ld-x86-64/mov1b.d: Likewise. * testsuite/ld-x86-64/mov1d.d: Likewise. * testsuite/ld-x86-64/pr13082-3b.d: Likewise. * testsuite/ld-x86-64/pr13082-4b.d: Likewise. * testsuite/ld-x86-64/lea1.s: Add tests for 32-bit registers. * testsuite/ld-i386/pr19609-1.s: New file. * testsuite/ld-i386/pr19609-1a.d: Likewise. * testsuite/ld-i386/pr19609-1b.d: Likewise. * testsuite/ld-i386/pr19609-1c.d: Likewise. * testsuite/ld-i386/pr19609-1d.d: Likewise. * testsuite/ld-i386/pr19609-1e.d: Likewise. * testsuite/ld-i386/pr19609-1f.d: Likewise. * testsuite/ld-i386/pr19609-1g.d: Likewise. * testsuite/ld-i386/pr19609-1h.d: Likewise. * testsuite/ld-i386/pr19609-1i.d: Likewise. * testsuite/ld-i386/pr19609-2.s: Likewise. * testsuite/ld-i386/pr19609-2a.d: Likewise. * testsuite/ld-i386/pr19609-2b.d: Likewise. * testsuite/ld-i386/pr19609-2c.d: Likewise. * testsuite/ld-i386/undefweak.s: Likewise. * testsuite/ld-i386/undefweaka.d: Likewise. * testsuite/ld-i386/undefweakb.d: Likewise. * testsuite/ld-x86-64/pr13082-3c.d: Likewise. * testsuite/ld-x86-64/pr13082-3d.d: Likewise. * testsuite/ld-x86-64/pr19609-1.s: Likewise. * testsuite/ld-x86-64/pr19609-1a.d: Likewise. * testsuite/ld-x86-64/pr19609-1b.d: Likewise. * testsuite/ld-x86-64/pr19609-1c.d: Likewise. * testsuite/ld-x86-64/pr19609-1d.d: Likewise. * testsuite/ld-x86-64/pr19609-1e.d: Likewise. * testsuite/ld-x86-64/pr19609-1f.d: Likewise. * testsuite/ld-x86-64/pr19609-1g.d: Likewise. * testsuite/ld-x86-64/pr19609-1h.d: Likewise. * testsuite/ld-x86-64/pr19609-1i.d: Likewise. * testsuite/ld-x86-64/pr19609-1j.d: Likewise. * testsuite/ld-x86-64/pr19609-1k.d: Likewise
[Bug ld/19609] [2.26 Regression] Load defined symbol in non-PIC link are wrongly optimized
https://sourceware.org/bugzilla/show_bug.cgi?id=19609 H.J. Lu changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #4 from H.J. Lu --- Fixed for 2.27. No plan to backport to 2.26. -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19579] [Regression] link error linking fortran code on s390x-linux-gnu
https://sourceware.org/bugzilla/show_bug.cgi?id=19579 Andreas Krebbel changed: What|Removed |Added CC||krebbel at linux dot vnet.ibm.com --- Comment #5 from Andreas Krebbel --- I can reproduce the failure building mopac7-1.15 with -fPIC and -pie. The problem disappears when omitting -pie. The error gets reported after elf_s390_finish_dynamic_symbol returned false here: else if (bfd_link_pic (info) && SYMBOL_REFERENCES_LOCAL (info, h)) { /* If this is a static link, or it is a -Bsymbolic link and the symbol is defined locally or was forced to be local because of a version file, we just want to emit a RELATIVE reloc. The entry in the global offset table will already have been initialized in the relocate_section function. */ > if (!h->def_regular) return FALSE; The symbol in question is geovar_ : $ readelf -s ./.libs/libmopac7.so | grep geovar_ 388: 0399f920 8656 OBJECT GLOBAL DEFAULT 22 geovar_ 5819: 0399f920 8656 OBJECT GLOBAL DEFAULT 22 geovar_ $ readelf -s mopac7app.o | grep geovar 160: 0008 5768 OBJECT GLOBAL DEFAULT COM geovar_ It is not clear to me yet how this is supposed to work correctly yet. As usual I've tried to figure out what x86 is doing but I ran into similiar problems: with 2.23.52 I see the very same problem as on s390: /bin/sh ../libtool --tag=F77 --mode=link gfortran -g -O2 -std=legacy -fno-automatic -fPIC -lm -Wl,-- gfortran -g -O2 -std=legacy -fno-automatic -fPIC -Wl,--as-needed -Wl,-z -Wl,defs -pie -o .libs/mopac7 m /usr/bin/ld: final link failed: Nonrepresentable section on output collect2: error: ld returned 1 exit status make[1]: *** [mopac7] Error 1 Using head binutils however I get: gfortran -g -O2 -std=legacy -fno-automatic -fPIC -Wl,--as-needed -Wl,-z -Wl,defs -pie -o .libs/mopac7 mopac7app.o ./.libs/libmopac7.so -lm -Wl,--rpath -Wl,/home/andreas/mopac/install/lib /home/andreas/binutils/binutils-26022016-install/bin/ld: mopac7app.o: relocation R_X86_64_PC32 against undefined symbol `geokst_' can not be used when making a shared object; recompile with -fPIC /home/andreas/binutils/binutils-26022016-install/bin/ld: final link failed: Bad value Although everything is built with -fPIC I'll continue next week. -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils
[Bug ld/19579] [Regression] link error linking fortran code on s390x-linux-gnu
https://sourceware.org/bugzilla/show_bug.cgi?id=19579 H.J. Lu changed: What|Removed |Added CC||hjl.tools at gmail dot com --- Comment #6 from H.J. Lu --- (In reply to Andreas Krebbel from comment #5) > Using head binutils however I get: > gfortran -g -O2 -std=legacy -fno-automatic -fPIC -Wl,--as-needed -Wl,-z > -Wl,defs -pie -o .libs/mopac7 mopac7app.o ./.libs/libmopac7.so -lm > -Wl,--rpath -Wl,/home/andreas/mopac/install/lib > /home/andreas/binutils/binutils-26022016-install/bin/ld: mopac7app.o: > relocation R_X86_64_PC32 against undefined symbol `geokst_' can not be used > when making a shared object; recompile with -fPIC > /home/andreas/binutils/binutils-26022016-install/bin/ld: final link failed: > Bad value > > Although everything is built with -fPIC > I can reproduce it on Fedora 23. It is a bug in redhat-rpm-config, which has redhat-hardened-cc1 and redhat-hardened-ld. But there is no redhat-hardened-f951. mopac7app.o isn't compiled with PIE/PIC. -- You are receiving this mail because: You are on the CC list for the bug. ___ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils