aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-06-05gas: avoid GCC 10 warning stringop-overflow in tc-bpf.cJose E. Marchesi2-2/+7
The GAS struct frag ends with a field `fr_literal' whose purpose is to mark the begining of the frag's data: struct frag { ... /* Data begins here. */ char fr_literal[1]; }; The code in gas/config/tc-bpf.c recently committed: where = fixP->fx_frag->fr_literal + fixP->fx_where; where[1] = target_big_endian ? 0x01 : 0x10; triggers the stringop-overflow warning in GCC 10+, since the compiler assumes the size of the modified buffer is 1 byte. This patch slightly modifies the code to make tc-bpf.c buildable with GCC 10+. 2020-06-05 Jose E. Marchesi <jose.marchesi@oracle.com> * config/tc-bpf.c (md_apply_fix): Avoid GCC 10 warning stringop-overflow.
2020-06-05bfin: Initialize picrel to silence GCC warningH.J. Lu2-0/+2
2020-06-05bfin: Skip non SEC_ALLOC sectionH.J. Lu2-0/+8
* elf32-bfin.c (bfinfdpic_relocate_section): Skip non SEC_ALLOC section.
2020-06-05[gdb/NEWS] Fix typosTom de Vries2-12/+16
Fix a few typos in gdb/NEWS. gdb/ChangeLog: 2020-06-05 Tom de Vries <tdevries@suse.de> * NEWS: Fix typos.
2020-06-05Fix a potential infinite loop in the Windows resource parser.Joel Anderson2-8/+15
PR 26082 * mclex.c (yylex): Add test for an empty input stream.
2020-06-05Fix a use before initialization bug in the pdp11.c source file.Nick Clifton2-4/+10
* pdp11.c (aout_link_add_symbols): Fix use before initialisation bug.
2020-06-05bpf stack smashing detectedAlan Modra2-5/+11
* cgen-dis.c (hash_insn_array): Increase size of buf. Assert size is large enough.
2020-06-04Fix unresolved test in binutils for pdp11.Stephen Casner3-1/+49
* binutils/testsuite/binutils-all/pr25662-pdp11.s: Alternate source file for test using section pseudo-ops compatible with pdp11. * binutils/testsuite/binutils-all/objcopy.exp: Select alternate source.
2020-06-05RISC-V: The object without priv spec attributes can be linked with any object.Nelson Chu15-3/+133
bfd/ * elfnn-riscv.c (riscv_merge_attributes): Add new boolean priv_may_conflict, in_priv_zero and out_priv_zero to decide whether the object can be linked according to it's priv attributes. The object without any priv spec attributes can be linked with others. If the first input object doesn't contain any priv attributes, then we need to copy the setting from the next input one. Also report more detailed error messages to user. ld/ * testsuite/ld-riscv-elf/attr-merge-priv-spec.d: Rename to attr-merge-priv-spec-01.d. * testsuite/ld-riscv-elf/attr-merge-priv-spec-c.s: Set priv spec to 1.11. * testsuite/ld-riscv-elf/attr-merge-priv-spec-d.s: Empty priv spec setting. * testsuite/ld-riscv-elf/attr-merge-priv-spec-02.d: New testcase. * testsuite/ld-riscv-elf/attr-merge-priv-spec-03.d: Likewise. * testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-01.d: Likewise. * testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-02.d: Likewise. * testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-03.d: Likewise. * testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-04.d: Likewise. * testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-05.d: Likewise. * testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-06.d: Likewise. * testsuite/ld-riscv-elf/ld-riscv-elf.exp: Updated.
2020-06-05RISC-V: Don't generate the ELF privilege attributes when no CSR are used.Nelson Chu27-57/+75
gas/ * config/tc-riscv.c (explicit_csr): New static boolean. Used to indicate CSR are explictly used. (riscv_ip): Set explicit_csr to TRUE if any CSR is used. (riscv_write_out_attrs): If we already have set elf priv attributes, then generate them. Otherwise, don't generate them when no CSR are used. * testsuite/gas/riscv/attribute-01.d: Remove the priv attributes. * testsuite/gas/riscv/attribute-02.d: Likewise. * testsuite/gas/riscv/attribute-03.d: Likewise. * testsuite/gas/riscv/attribute-04.d: Likewise. * testsuite/gas/riscv/attribute-05.d: Likewise. * testsuite/gas/riscv/attribute-06.d: Likewise. * testsuite/gas/riscv/attribute-07.d: Likewise. * testsuite/gas/riscv/attribute-08.d: Likewise. * testsuite/gas/riscv/attribute-09.d: Likewise. * testsuite/gas/riscv/attribute-10.d: Likewise. * testsuite/gas/riscv/attribute-unknown.d: Likewise. * testsuite/gas/riscv/attribute-11.s: New testcase. * testsuite/gas/riscv/attribute-11.d: New testcase. The CSR is used, so we should output the ELF priv attributes. * testsuite/gas/riscv/attribute-12.d: New testcase. The CSR is used, so output the priv attributes according to the -mpriv-spec. * testsuite/gas/riscv/attribute-13.d: New testcase. The CSR isn't used, so ignore the -mpriv-spec setting. ld/ * testsuite/ld-riscv-elf/attr-merge-arch-01.d: Likewise. * testsuite/ld-riscv-elf/attr-merge-arch-02.d: Likewise. * testsuite/ld-riscv-elf/attr-merge-arch-03.d: Likewise. * testsuite/ld-riscv-elf/attr-merge-stack-align.d: Likewise. * testsuite/ld-riscv-elf/attr-merge-strict-align-01.d: Likewise. * testsuite/ld-riscv-elf/attr-merge-strict-align-02.d: Likewise. * testsuite/ld-riscv-elf/attr-merge-strict-align-03.d: Likewise. * testsuite/ld-riscv-elf/attr-merge-strict-align-04.d: Likewise. * testsuite/ld-riscv-elf/attr-merge-strict-align-05.d: Likewise. * testsuite/ld-riscv-elf/call-relax.d: Add -mno-arch-attr.
2020-06-04Extend pdp11-aout symbol table format and code for .stab symbols.Stephen Casner2-31/+146
* bfd/pdp11.c (pdp11_external_nlist): Repurposed e_unused to e_desc. (N_STAB, is_stab): Needed new function is_stab to disambiguate normal vs. .stab symbol table type values, replacing N_STAB mask. (translate_from_native_sym_flags): Determine correct section for different .stab types. (translate_to_native_sym_flags): Leave .stab types intact. (translate_symbol_table): Error if symbol indicates overlay; store desc field from .stab symbols. (write_syms): Output desc field with symbol. (aout_link_check_ar_symbols): Skip .stab symbols. (aout_link_add_symbols): Correctly distinguish .stab symbols. (aout_link_write_other_symbol): Write 0 for desk and ovly fields. (aout_link_write_symbols): Write 0 for desk and ovly fields; correctly distinguish .stab symbols and select calculate their section and value; and copy desc and ovly fields from input symbol to output symbol.
2020-06-05Automatic date update in version.inGDB Administrator1-1/+1
2020-06-04Correct a comment.Stephen Casner3-2/+8
* bfd/aoutx.h (translate_symbol_table): Comment had external and internal swapped. * bfd/pdp11.c (translate_symbol_table): Likewise.
2020-06-04gas: Fix ip2k-elf and xstormy16-elf buildH.J. Lu3-3/+13
Fix ip2k-elf and xstormy16-elf build due to commit e9bffec9afc45cf7c49308f0b4b8cc6bf68f58f2 Author: Jose E. Marchesi <jose.marchesi@oracle.com> Date: Thu Jun 4 16:15:53 2020 +0200 opcodes: discriminate endianness and insn-endianness in CGEN ports * config/tc-ip2k. (ip2k_apply_fix): Pass endianness to cgen_get_insn_value. * config/tc-xstormy16.c (xstormy16_md_apply_fix): Pass endianness to cgen_get_insn_value and cgen_put_insn_value.
2020-06-04gdb: really share partial symtabs when using .gdb_index or .debug_namesSimon Marchi6-22/+152
Fix/follow-up to commit 17ee85fc2a ("Share DWARF partial symtabs"). In the non-index case, where GDB builds partial symbols from scratch, two objfiles around the same BFD correctly share partial symtabs. The first objfile, which has to do all the work, saves a reference to the created partial symtabs in the shared per_bfd object (at the end of dwarf2_build_psymtabs). The second objfile, when it reaches dwarf2_build_psymtabs, sees that there are already partial symtabs built for this BFD and just uses it. However, that commit missed implementing the same sharing for cases where GDB uses .gdb_index or .debug_names to build the partial symtabs. This patch fixes it by having the first objfile to use the BFD set per_bfd->partial_symtabs at the end of dwarf2_read_gdb_index / dwarf2_read_debug_names. For the subsequent objfiles using that BFD, the partial symtabs are then picked up in dwarf2_initialize_objfile. This patch adds a test that mimics how the issue was originally triggered: 1. Load the test file twice, such that the second objfile re-uses the per_bfd object created for the first objfile. 2. Run to some point where in the backtrace there is a frame for a function that's in a CU that's not yet read in. 3. Check that this frame's information is complete in the "backtrace" output. Step 2 requires an address -> symbol lookup which uses the addrmap at objfile->partial_symtabs->psymtabs_addrmap. If the objfile->partial_symtabs link is not properly setup (as is the case before this patch), the symbol for that frame won't be found and we'll get a frame with incomplete information. The test fails without the fix when using boards "cc-with-gdb-index" and "cc-with-debug-names". gdb/ChangeLog: * dwarf2/read.c (dwarf2_read_gdb_index): Save partial_symtabs in the per_bfd object. (dwarf2_read_debug_names): Likewise. (dwarf2_initialize_objfile): Use partial_symtabs from per_bfd object when re-using a per_bfd object with an index. gdb/testsuite/ChangeLog: * gdb.dwarf2/share-psymtabs-bt.exp: New file. * gdb.dwarf2/share-psymtabs-bt.c: New file. * gdb.dwarf2/share-psymtabs-bt-2.c: New file. Change-Id: Ibb26210e2dfc03b80ba9fa56b875ba4cc58c0352
2020-06-04x86: Remove target_id from elf_x86_link_hash_tableH.J. Lu3-3/+7
Since target_id in elf_x86_link_hash_table is the same as hash_table_id in elf_link_hash_table, we can use elf.hash_table_id instead of target_id. * elfxx-x86.h (elf_x86_link_hash_table): Remove target_id. (is_x86_elf): Check elf.hash_table_id instead of target_id. * elfxx-x86.c (_bfd_x86_elf_link_hash_table_create): Updated.
2020-06-04[gdb/testsuite] Remove path names from error messages in gdb_file_cmdTom de Vries2-7/+15
In gdb_file_cmd, perror is called with error message strings using $arg and $GDB, both of which contain path names, which makes comparison of gdb.sum files more difficult. Fix this by using: - [file tail $arg] instead of $arg - GDB instead of $GDB. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-06-04 Tom de Vries <tdevries@suse.de> * lib/gdb.exp (gdb_file_cmd): Avoid path names in error messages.
2020-06-04gas: simplify code in tc-bpf.c:md_apply_fixJose E. Marchesi2-3/+6
2020-06-04 Jose E. Marchesi <jose.marchesi@oracle.com> * config/tc-bpf.c (md_apply_fix): Simplify and avoid using cgen_put_insn_value.
2020-06-04[gdb/testsuite] Fix error handling in gdb_file_cmdTom de Vries2-15/+13
Consider a gdb_load patch to call the gdb_file_cmd twice: ... proc gdb_load { arg } { if { $arg != "" } { + set res [gdb_file_cmd $arg] + if { $res != 0 } { + return $res + } return [gdb_file_cmd $arg] } return 0 } ... When running test-case gdb.base/index-cache.exp, we run into: ... ERROR: Couldn't load outputs/gdb.base/index-cache/index-cache, other program \ already loaded (timeout). FAIL: gdb.base/index-cache.exp: test_cache_enabled_miss: check index-cache \ stats (GDB internal error) ERROR: Couldn't load outputs/gdb.base/index-cache/index-cache, other program \ already loaded (timeout). ... The first timeout in more detail: ... (gdb) file outputs/gdb.base/index-cache/index-cache^M Load new symbol table from "index-cache"? (y or n) y^M Reading symbols from index-cache...^M src/gdb/dwarf2/read.c:2540: internal-error: \ void create_cus_from_index(dwarf2_per_bfd*, const gdb_byte*, offset_type, \ const gdb_byte*, offset_type): \ Assertion `per_bfd->all_comp_units.empty ()' failed.^M A problem internal to GDB has been detected,^M further debugging may prove unreliable.^M Quit this debugging session? (y or n) ERROR: Couldn't load index-cache, \ other program already loaded (timeout). ... Proc gdb_file_cmd has a gdb_expect handling the result of the file command, and if the result is a "Load new symbol table from index-cache? (y or n) " prompt, it sends a "y" and enters in a nested gdb_expect to handle the result. The first gdb_expect contains code to handle "A problem internal to GDB has been detected", but the second one doesn't, which causes the timeout. Fix this by removing the nested gdb_expect, and using exp_continue instead, such that we have instead: ... ERROR: Couldn't load outputs/gdb.base/index-cache/index-cache -- with new \ symbol table into gdb (GDB internal error). ERROR: Couldn't load outputs/gdb.base/index-cache/index-cache -- with new \ symbol table into gdb (GDB internal error). ... Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-06-04 Tom de Vries <tdevries@suse.de> * lib/gdb.exp (gdb_file_cmd): Replace incomplete gdb_expect by exp_continue.
2020-06-04cpu,gas,opcodes: remove no longer needed workaround from the BPF portJose E. Marchesi10-39/+51
cpu/ChangeLog: 2020-06-02 Jose E. Marchesi <jose.marchesi@oracle.com> * bpf.cpu (define-bpf-isa): Set base-insn-bitsize to 64. * bpf.opc (bpf_print_insn): Do not set endian_code here. gas/ChangeLog: 2020-06-04 Jose E. Marchesi <jose.marchesi@oracle.com> * config/tc-bpf.c (md_begin): Pass CGEN_CPU_OPEN_INSN_ENDIAN to bpf_cgen_cpu_open. (md_assemble): Remove no longer needed hack. opcodes/ChangeLog: 2020-06-04 Jose E. Marchesi <jose.marchesi@oracle.com> * disassemble.c (disassemble_init_for_target): Set endian_code for bpf targets. * bpf-desc.c: Regenerate. * bpf-opc.c: Likewise. * bpf-dis.c: Likewise.
2020-06-04opcodes: discriminate endianness and insn-endianness in CGEN portsJose E. Marchesi40-106/+178
The CGEN support code in opcodes accesses instruction contents using a couple of functions defined in cgen-opc.c: cgen_get_insn_value and cgen_put_insn_value. These functions use the "instruction endianness" in the CPU description to order the read/written bytes. The process of writing an instruction to the object file is: a) cgen_put_insn_value ;; Writes out the opcodes. b) ARCH_cgen_insert_operand insert_normal insert_1 cgen_put_insn_value ;; Writes out the bytes of the ;; operand. Likewise, the process of reading an instruction from the object file is: a) cgen_get_insn_value ;; Reads the opcodes. b) ARCH_cgen_extract_operand extract_normal extract_1 cgen_get_insn_value ;; Reads in the bytes of the ;; operand. As can be seen above, cgen_{get,put}_insn_value are used to both process the instruction opcodes (the constant fields conforming the base instruction) and also the values of the instruction operands, such as immediates. This is problematic for architectures in which the endianness of instructions is different to the endianness of data. An example is BPF, where instructions are always encoded big-endian but the data may be either big or little. This patch changes the cgen_{get,put}_insn_value functions in order to get an extra argument with the endianness to use, and adapts the existin callers to these functions in order to provide cd->endian or cd->insn_endian, whatever appropriate. Callers like extract_1 and insert_1 pass cd->endian (since they are reading/writing operand values) while callers reading/writing the base instruction pass cd->insn_endian instead. A few little adjustments have been needed in some existing CGEN based ports: * The BPF assembler uses cgen_put_insn_value. It has been adapted to pass the new endian argument. * The mep port has code in mep.opc that uses cgen_{get,put}_insn_value. It has been adapted to pass the new endianargument. Ditto for a call in the assembler. Tested with --enable-targets=all. Regested in all supported targets. No regressions. include/ChangeLog: 2020-06-04 Jose E. Marchesi <jose.marchesi@oracle.com> * opcode/cgen.h: Get an `endian' argument in both cgen_get_insn_value and cgen_put_insn_value. opcodes/ChangeLog: 2020-06-04 Jose E. Marchesi <jose.marchesi@oracle.com> * cgen-opc.c (cgen_get_insn_value): Get an `endian' argument. (cgen_put_insn_value): Likewise. (cgen_lookup_insn): Pass endianness to cgen_{get,put}_insn_value. * cgen-dis.in (print_insn): Likewise. * cgen-ibld.in (insert_1): Likewise. (insert_1): Likewise. (insert_insn_normal): Likewise. (extract_1): Likewise. * bpf-dis.c: Regenerate. * bpf-ibld.c: Likewise. * bpf-ibld.c: Likewise. * cgen-dis.in: Likewise. * cgen-ibld.in: Likewise. * cgen-opc.c: Likewise. * epiphany-dis.c: Likewise. * epiphany-ibld.c: Likewise. * fr30-dis.c: Likewise. * fr30-ibld.c: Likewise. * frv-dis.c: Likewise. * frv-ibld.c: Likewise. * ip2k-dis.c: Likewise. * ip2k-ibld.c: Likewise. * iq2000-dis.c: Likewise. * iq2000-ibld.c: Likewise. * lm32-dis.c: Likewise. * lm32-ibld.c: Likewise. * m32c-dis.c: Likewise. * m32c-ibld.c: Likewise. * m32r-dis.c: Likewise. * m32r-ibld.c: Likewise. * mep-dis.c: Likewise. * mep-ibld.c: Likewise. * mt-dis.c: Likewise. * mt-ibld.c: Likewise. * or1k-dis.c: Likewise. * or1k-ibld.c: Likewise. * xc16x-dis.c: Likewise. * xc16x-ibld.c: Likewise. * xstormy16-dis.c: Likewise. * xstormy16-ibld.c: Likewise. gas/ChangeLog: 2020-06-04 Jose E. Marchesi <jose.marchesi@oracle.com> * cgen.c (gas_cgen_finish_insn): Pass the endianness to cgen_put_insn_value. (gas_cgen_md_apply_fix): Likewise. (gas_cgen_md_apply_fix): Likewise. * config/tc-bpf.c (md_apply_fix): Pass data endianness to cgen_put_insn_value. * config/tc-mep.c (mep_check_ivc2_scheduling): Pass endianness to cgen_put_insn_value. cpu/ChangeLog: 2020-06-02 Jose E. Marchesi <jose.marchesi@oracle.com> * mep.opc (print_slot_insn): Pass the insn endianness to cgen_get_insn_value.
2020-06-04opcodes: support insn endianness in cgen_cpu_openJose E. Marchesi34-71/+257
This patch adds support for a new CGEN_OPEN_INSN_ENDIAN argument for @arch@_cgen_cpu_open. This is useful for architectures in which the endianness of the instruction words is not the same than the endianness used for data. An accompanying patch has been sent to the CGEN mailing list that adds support for this argument on the CGEN side [1]. Its been already pre-approved [2], and will be applied simultaneously with this binutils series. [1] https://sourceware.org/pipermail/cgen/2020q2/002733.html [2] https://sourceware.org/pipermail/cgen/2020q2/002737.html include/ChangeLog: 2020-06-04 Jose E. Marchesi <jemarch@gnu.org> * opcode/cgen.h (enum cgen_cpu_open_arg): New value CGEN_CPU_OPEN_INSN_ENDIAN. opcodes/ChangeLog: 2020-06-04 Jose E. Marchesi <jemarch@gnu.org> * cgen-dis.in (cpu_desc_list): New field `insn_endian'. (print_insn_): Handle instruction endian. * bpf-dis.c: Regenerate. * bpf-desc.c: Regenerate. * epiphany-dis.c: Likewise. * epiphany-desc.c: Likewise. * fr30-dis.c: Likewise. * fr30-desc.c: Likewise. * frv-dis.c: Likewise. * frv-desc.c: Likewise. * ip2k-dis.c: Likewise. * ip2k-desc.c: Likewise. * iq2000-dis.c: Likewise. * iq2000-desc.c: Likewise. * lm32-dis.c: Likewise. * lm32-desc.c: Likewise. * m32c-dis.c: Likewise. * m32c-desc.c: Likewise. * m32r-dis.c: Likewise. * m32r-desc.c: Likewise. * mep-dis.c: Likewise. * mep-desc.c: Likewise. * mt-dis.c: Likewise. * mt-desc.c: Likewise. * or1k-dis.c: Likewise. * or1k-desc.c: Likewise. * xc16x-dis.c: Likewise. * xc16x-desc.c: Likewise. * xstormy16-dis.c: Likewise. * xstormy16-desc.c: Likewise. binutils/ChangeLog: 2020-06-04 Jose E. Marchesi <jose.marchesi@oracle.com> * objdump.c (disassemble_data): Set disasm_info.endian_code to disasm_info.endian after the latter is initialized to the endianness reported by BFD.
2020-06-04[gdb/testsuite] Fix use of fail in gdb_cmd_fileTom de Vries2-1/+5
When building gdb using this patch: ... static void file_command (const char *arg, int from_tty) { + gdb_assert (0); ... and running the testsuite, we run into: ... Running src/gdb/testsuite/gdb.ada/O2_float_param.exp ... PASS: gdb.ada/O2_float_param.exp: compilation foo.adb FAIL: gdb.ada/O2_float_param.exp: (outputs/gdb.ada/O2_float_param/foo) \ (GDB internal error) PATH: gdb.ada/O2_float_param.exp: (outputs/gdb.ada/O2_float_param/foo) \ (GDB internal error) FAIL: gdb.ada/O2_float_param.exp: frame ... The FAIL detecting the GDB internal error is generated by this clause in gdb_file_cmd: ... -re "A problem internal to GDB has been detected" { fail "($arg) (GDB internal error)" gdb_internal_error_resync return -1 } ... The fail message has no text outside parenthesis, and could be considered empty. Also, it's the only clause in the gdb_expect that uses fail, the rest uses perror. Fix this by replacing the fail by perror, such that we have: ... Running src/gdb/testsuite/gdb.ada/O2_float_param.exp ... PASS: gdb.ada/O2_float_param.exp: compilation foo.adb ERROR: Couldn't load outputs/gdb.ada/O2_float_param/foo into \ gdb (GDB internal error). UNRESOLVED: gdb.ada/O2_float_param.exp: frame ... Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-06-04 Tom de Vries <tdevries@suse.de> * lib/gdb.exp (gdb_file_cmd): Use perror instead of fail.
2020-06-04ELF: Don't check relocations in non-loaded, non-alloced sectionsH.J. Lu22-136/+62
Don't do anything special with non-loaded, non-alloced sections. In particular, any relocs in such sections should not affect GOT and PLT reference counting (ie. we don't allow them to create GOT or PLT entries), there's no possibility or desire to optimize TLS relocs, and there's not much point in propagating relocs to shared libs that the dynamic linker won't relocate. Since check_relocs is no longer called on non-loaded, non-alloced sections, remove SEC_ALLOC check. Resolve relocation in debug section against symbol defined in shared library to 0. bfd/ PR ld/26080 * elf-m10300.c (mn10300_elf_relocate_section): Resolve relocation in debug section against symbol defined in shared library to 0. * elf32-i386.c (elf_i386_check_relocs): Remove SEC_ALLOC check. * elf32-lm32.c (lm32_elf_check_relocs): Likewise. * elf32-m32r.c (m32r_elf_check_relocs): Likewise. * elf32-nds32.c (nds32_elf_check_relocs): Likewise. * elf32-nios2.c (nios2_elf32_check_relocs): Likewise. * elf32-or1k.c (or1k_elf_check_relocs): Likewise. * elf32-ppc.c (ppc_elf_check_relocs): Likewise. * elf32-sh.c (sh_elf_check_relocs): Likewise. * elf32-xtensa.c (elf_xtensa_check_relocs): Likewise. * elf64-alpha.c (elf64_alpha_check_relocs): Likewise. * elf64-ppc.c (ppc64_elf_check_relocs): Likewise. * elf64-x86-64.c (elf_x86_64_check_relocs): Likewise. * elfxx-mips.c (_bfd_mips_elf_check_relocs): Likewise. * elf32-vax.c (elf_vax_check_relocs): Set non_got_ref for non-GOT reference. (elf_vax_adjust_dynamic_symbol): Generate a copy reloc only if there is non-GOT reference. * elflink.c (_bfd_elf_link_check_relocs): Skip non-loaded, non-alloced sections. ld/ PR ld/26080 * testsuite/ld-elf/comm-data.exp: Remove copy_reloc. * testsuite/ld-elf/comm-data2r.rd: Removed. * testsuite/ld-elf/comm-data2r.sd: Likewise. * testsuite/ld-elf/comm-data2r.xd: Likewise.
2020-06-04tcl global directive outside proc body does nothing (gas)Alan Modra7-7/+10
* testsuite/config/default.exp: Remove global directive outside proc body. * testsuite/gas/mep/complex-relocs.exp: Likewise. * testsuite/gas/microblaze/relax_size.exp: Likewise. * testsuite/gas/microblaze/reloc_sym.exp: Likewise. * testsuite/gas/mt/relocs.exp: Likewise. * testsuite/gas/rx/rx.exp: Likewise.
2020-06-04tcl global directive outside proc body does nothing (binutils)Alan Modra4-7/+7
* testsuite/binutils-all/i386/i386.exp * testsuite/binutils-all/x86-64/objects.exp * testsuite/binutils-all/x86-64/x86-64.exp
2020-06-04tcl global directive outside proc body does nothing (ld)Alan Modra38-111/+41
* testsuite/config/default.exp: Remove global directive outside proc body. * testsuite/ld-bootstrap/bootstrap.exp: Likewise. * testsuite/ld-elf/compress.exp: Likewise. * testsuite/ld-elf/elf.exp: Likewise. * testsuite/ld-elf/exclude.exp: Likewise. * testsuite/ld-elf/frame.exp: Likewise. * testsuite/ld-elf/indirect.exp: Likewise. * testsuite/ld-elf/linux-x86.exp: Likewise. * testsuite/ld-elf/shared.exp: Likewise. * testsuite/ld-elf/tls.exp: Likewise. * testsuite/ld-elf/tls_common.exp: Likewise. * testsuite/ld-elfcomm/elfcomm.exp: Likewise. * testsuite/ld-elfweak/elfweak.exp: Likewise. * testsuite/ld-frv/fdpic.exp: Likewise. * testsuite/ld-frv/tls.exp: Likewise. * testsuite/ld-gc/gc.exp: Likewise. * testsuite/ld-i386/i386.exp: Likewise. * testsuite/ld-i386/no-plt.exp: Likewise. * testsuite/ld-ifunc/ifunc.exp: Likewise. * testsuite/ld-mips-elf/mips-elf-flags.exp: Likewise. * testsuite/ld-nios2/nios2.exp: Likewise. * testsuite/ld-plugin/lto.exp: Likewise. * testsuite/ld-plugin/plugin.exp: Likewise. * testsuite/ld-powerpc/export-class.exp: Likewise. * testsuite/ld-scripts/align.exp: Likewise. * testsuite/ld-scripts/crossref.exp: Likewise. * testsuite/ld-scripts/defined.exp: Likewise. * testsuite/ld-scripts/overlay-size.exp: Likewise. * testsuite/ld-scripts/provide.exp: Likewise. * testsuite/ld-scripts/weak.exp: Likewise. * testsuite/ld-selective/selective.exp: Likewise. * testsuite/ld-sh/rd-sh.exp: Likewise. * testsuite/ld-size/size.exp: Likewise. * testsuite/ld-srec/srec.exp: Likewise. * testsuite/ld-x86-64/mpx.exp: Likewise. * testsuite/ld-x86-64/no-plt.exp: Likewise. * testsuite/ld-x86-64/x86-64.exp: Likewise.
2020-06-04ld-dynamic test fixesAlan Modra6-8/+31
* testsuite/ld-dynamic/export-dynamic-symbol-2.d: Match output for mips-sgi-irix6. * testsuite/ld-dynamic/export-dynamic-symbol-glob.d: Likewise. * testsuite/ld-dynamic/export-dynamic-symbol-list-2.d: Likewise. * testsuite/ld-dynamic/export-dynamic-symbol-list-glob.d: Likewise. * testsuite/ld-dynamic/export-dynamic-symbol.exp: Exclude targets with poor PIE support.
2020-06-04ld testsuite fails with default-PIE compilerAlan Modra3-3/+9
* testsuite/ld-plugin/lto.exp (pr12758.exe): Add NOPIE_LDFLAGS. * testsuite/ld-unique/unique.exp: Add NOPIE_LDFLAGS to unique executable and dynamic executable tests.
2020-06-04Correct PR number in changelogAlan Modra1-1/+1
2020-06-03Copy several years of fixes from bfd/aoutx.h to bfd/pdp11.c.Stephen Casner2-32/+134
* pdp11.c (some_aout_object_p): 4c1534c7a2a - Don't set EXEC_P for files with relocs. (aout_get_external_symbols): 6b8f0fd579d - Return if count is zero. 0301ce1486b PR 22306 - Handle stringsize of zero, and error for any other size that doesn't qcover the header word. bf82069dce1 PR 23056 - Allocate an extra byte at the end of the string table, and zero it. (translate_symbol_table): 0d329c0a83a PR 22887 - Print an error message and set bfd_error on finding an invalid name string offset. (add_to_stringtab): INLINE -> inline (pdp11_aout_swap_reloc_in): 116acb2c268 PR 22887 - Correct r_index bound check. (squirt_out_relocs): e2996cc315d PR 20921 - Check for and report any relocs that could not be recognised. 92744f05809 PR 20929 - Check for relocs without an associated symbol. (find_nearest_line): 808346fcfcf PR 23055 - Check that the symbol name exists and is long enough, before attempting to see if it is for a .o file. c3864421222 - Correct case for N_SO being the last symbol. 50455f1ab29 PR 20891 - Handle the case where the main file name and the directory name are both empty. e82ab856bb4 PR 20892 - Handle the case where function name is empty. (aout_link_add_symbols): e517df3dbf7 PR 19629 - Check for out of range string table offsets. 531336e3a0b PR 20909 - Fix off-by-one error in check for an illegal string offset. (aout_link_includes_newfunc): Add comment. (pdp11_aout_link_input_section): ad756e3f9e6 - Return with an error on unexpected relocation type rather than ASSERT.
2020-06-04Automatic date update in version.inGDB Administrator1-1/+1
2020-06-03[gdb/symtab] Fix missing breakpoint location for inlined functionTom de Vries7-1/+135
Consider the test-case contained in this patch. With -readnow, we have two breakpoint locations: ... $ gdb -readnow -batch breakpoint-locs -ex "b N1::C1::baz" -ex "info break" Breakpoint 1 at 0x4004cb: N1::C1::baz. (2 locations) Num Type Disp Enb Address What 1 breakpoint keep y <MULTIPLE> 1.1 y 0x00000000004004cb in N1::C1::baz() \ at breakpoint-locs.h:6 1.2 y 0x00000000004004f0 in N1::C1::baz() \ at breakpoint-locs.h:6 ... But without -readnow, we have instead only one breakpoint location: ... $ gdb -batch breakpoint-locs -ex "b N1::C1::baz" -ex "info break" Breakpoint 1 at 0x4004f0: file breakpoint-locs.h, line 6. Num Type Disp Enb Address What 1 breakpoint keep y 0x00000000004004f0 in N1::C1::baz() \ at breakpoint-locs.h:6 ... The relevant dwarf is this bit: ... <0><d2>: Abbrev Number: 1 (DW_TAG_compile_unit) <d8> DW_AT_name : breakpoint-locs.cc <1><f4>: Abbrev Number: 2 (DW_TAG_namespace) <f5> DW_AT_name : N1 <2><fe>: Abbrev Number: 3 (DW_TAG_class_type) <ff> DW_AT_name : C1 <3><109>: Abbrev Number: 4 (DW_TAG_subprogram) <10a> DW_AT_name : baz <110> DW_AT_linkage_name: _ZN2N12C13bazEv <2><116>: Abbrev Number: 5 (DW_TAG_subprogram) <117> DW_AT_name : foo <11d> DW_AT_linkage_name: _ZN2N13fooEv <1><146>: Abbrev Number: 8 (DW_TAG_subprogram) <147> DW_AT_specification: <0x116> <14b> DW_AT_low_pc : 0x4004c7 <153> DW_AT_high_pc : 0x10 <2><161>: Abbrev Number: 9 (DW_TAG_inlined_subroutine) <162> DW_AT_abstract_origin: <0x194> <166> DW_AT_low_pc : 0x4004cb <16e> DW_AT_high_pc : 0x9 <1><194>: Abbrev Number: 12 (DW_TAG_subprogram) <195> DW_AT_specification: <0x109> <199> DW_AT_inline : 3 (declared as inline and inlined) ... The missing breakpoint location is specified by DIE 0x161, which is ignored by the partial DIE reader because it's a child of a DW_TAG_subprogram DIE (at 0x146, for foo). Fix this by not ignoring the DIE during partial DIE reading. Tested on x86_64-linux. gdb/ChangeLog: 2020-06-03 Tom de Vries <tdevries@suse.de> PR symtab/26046 * dwarf2/read.c (scan_partial_symbols): Recurse into DW_TAG_subprogram children for C++. (load_partial_dies): Don't skip DW_TAG_inlined_subroutine child of DW_TAG_subprogram. gdb/testsuite/ChangeLog: 2020-06-03 Tom de Vries <tdevries@suse.de> PR symtab/26046 * gdb.cp/breakpoint-locs-2.cc: New test. * gdb.cp/breakpoint-locs.cc: New test. * gdb.cp/breakpoint-locs.exp: New file. * gdb.cp/breakpoint-locs.h: New test.
2020-06-03* gas/doc/c-riscv.texi (RISC-V-Options): Fix non-ASCII apostrophe.Stephen Casner2-1/+5
2020-06-03nios2: Call _bfd_elf_maybe_set_textrel to set DF_TEXTRELH.J. Lu2-10/+21
Call _bfd_elf_maybe_set_textrel to set DF_TEXTREL by scanning dynamic relocations in read-only section. PR ld/26066 * elf32-nios2.c (nios2_elf32_size_dynamic_sections): Call _bfd_elf_maybe_set_textrel to set DF_TEXTREL.
2020-06-03nios2: Don't check relocations in non-loaded, non-alloced sectionsH.J. Lu2-0/+15
Don't do anything special with non-loaded, non-alloced sections. In particular, any relocs in such sections should not affect GOT and PLT reference counting (ie. we don't allow them to create GOT or PLT entries), there's no possibility or desire to optimize TLS relocs, and there's not much point in propagating relocs to shared libs that the dynamic linker won't relocate. PR ld/26066 * elf32-nios2.c (nios2_elf32_check_relocs): Skip non-loaded, non-alloced sections.
2020-06-03frv: Don't generate dynamic relocation for non SEC_ALLOC sectionsH.J. Lu2-1/+9
Don't generate dynamic relocations for non SEC_ALLOC sections because run-time loader won't process them. * elf32-frv.c (elf32_frv_relocate_section): Don't generate dynamic relocations for non SEC_ALLOC sections.
2020-06-03arc: Don't generate dynamic relocation for non SEC_ALLOC sectionsH.J. Lu2-0/+6
Don't generate dynamic relocations for non SEC_ALLOC sections because run-time loader won't process them. * elf32-arc.c (elf_arc_relocate_section): Don't generate dynamic relocations for non SEC_ALLOC sections.
2020-06-03[PATCH] fix windmc typedef bugJoel Anderson4-2/+12
While a typedef can be specified in message files for the messages following with the `MessageIdTypedef` directive, only the last typedef was honored by windmc. This corrects this behavior, matching mc.exe functionality. * windmc.h (struct mc_node): Add id_typecast field. * mcparse.y (message): Initialise the id_typecast field. * windmc.c (write_dbg): Use the id_typecast field as a parameter when calling write_dbg_define. (write_header): Likewise.
2020-06-03[gdb/testsuite] Fix use of verbose in gdb/jit-*.expTom de Vries4-8/+26
When running the gdb/jit-*.exp tests with runtest -v, I get: ... ERROR: internal buffer is full. UNRESOLVED: gdb.base/jit-elf-so.exp: one_jit_test-1: maintenance print objfiles ERROR: internal buffer is full. UNRESOLVED: gdb.base/jit-elf-so.exp: one_jit_test-2: maintenance print objfiles ERROR: internal buffer is full. UNRESOLVED: gdb.base/jit-elf.exp: one_jit_test-1: maintenance print objfiles ERROR: internal buffer is full. UNRESOLVED: gdb.base/jit-elf.exp: one_jit_test-2: maintenance print objfiles ERROR: internal buffer is full. UNRESOLVED: gdb.base/jit-elf.exp: attach: one_jit_test-2: maintenance print objfiles ERROR: internal buffer is full. UNRESOLVED: gdb.base/jit-elf.exp: PIE: one_jit_test-1: maintenance print objfiles FAIL: gdb.base/jit-reader.exp: jit-reader-load FAIL: gdb.base/jit-reader.exp: with jit-reader: before mangling: bt works FAIL: gdb.base/jit-reader.exp: with jit-reader: after mangling: bt works FAIL: gdb.base/jit-reader.exp: with jit-reader again: jit-reader-load FAIL: gdb.base/jit-reader.exp: with jit-reader again: bt ... This is the consequence of the use of global verbose in these tests, which is used to change the actual test, rather than be more verbose about it. Fix this by defining a global test_verbose in each test, and using that instead. Tested on x86_64-linux using runtest -v. gdb/testsuite/ChangeLog: 2020-06-03 Tom de Vries <tdevries@suse.de> PR testsuite/25609 * gdb.base/jit-elf-so.exp: Don't modify testing behaviour based on value of global verbose. * gdb.base/jit-elf.exp: Same. * gdb.base/jit-reader.exp: Same.
2020-06-03Updated Serbian translation for the opcodes sub-directoryNick Clifton2-530/+1480
2020-06-03This patch set for the generic BFD a.out backend removes a dead #define and ↵Gunther Nikl5-16/+25
makes aoutx.h self-contained: [PATCH 1/2]: bfd: remove unused NO_WRITE_HEADER_KLUDGE #define [PATCH 2/2]: bfd: make aoutx.h self-contained * aout64.c (BMAGIC, QMAGIC): Do not define. * aoutx.h (N_IS_BMAGIC, N_SET_QMAGIC): New defines. (NAME (aout, some_aout_object_p)): Use N_IS_QMAGIC and N_IS_BMAGIC to check the file format. (adjust_z_magic): Use N_SET_QMAGIC to set file format. * i386aout.c (NO_WRITE_HEADER_KLUDGE): Delete define. * libaout.h (NO_WRITE_HEADER_KLUDGE): Do not define.
2020-06-03ELF: Consolidate maybe_set_textrelH.J. Lu23-572/+141
All maybe_set_textrel implementations are the same. Consolidate them to a single _bfd_elf_maybe_set_textrel. * elf-bfd.h (_bfd_elf_maybe_set_textrel): New * elf32-arm.c (maybe_set_textrel): Removed. (elf32_arm_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elf32-csky.c (maybe_set_textrel): Removed. (csky_elf_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elf32-hppa.c (maybe_set_textrel): Removed. (elf32_hppa_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elf32-lm32.c (maybe_set_textrel): Removed. (lm32_elf_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elf32-m32r.c (maybe_set_textrel): Removed. (m32r_elf_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elf32-metag.c (maybe_set_textrel): Removed. (elf_metag_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elf32-nds32.c (maybe_set_textrel): Removed. (nds32_elf_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elf32-or1k.c (maybe_set_textrel): Removed. (or1k_elf_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elf32-ppc.c (maybe_set_textrel): Removed. (ppc_elf_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elf32-s390.c (maybe_set_textrel): Removed. (elf_s390_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elf32-sh.c (maybe_set_textrel): Removed. (sh_elf_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elf32-tic6x.c (maybe_set_textrel): Removed. (elf32_tic6x_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elf32-tilepro.c (maybe_set_textrel): Removed. (tilepro_elf_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elf64-ppc.c (maybe_set_textrel): Removed. (ppc64_elf_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elf64-s390.c (maybe_set_textrel): Removed. (elf_s390_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elfnn-aarch64.c (maybe_set_textrel): Removed. (elfNN_aarch64_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elfnn-riscv.c (maybe_set_textrel): Removed. (riscv_elf_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elfxx-sparc.c (maybe_set_textrel): Removed. (_bfd_sparc_elf_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elfxx-tilegx.c (maybe_set_textrel): Removed. (tilegx_elf_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elfxx-x86.c (maybe_set_textrel): Removed. (_bfd_x86_elf_size_dynamic_sections): Replace maybe_set_textrel with _bfd_elf_maybe_set_textrel. * elflink.c (_bfd_elf_maybe_set_textrel): New.
2020-06-03ELF: Copy dyn_relocs in _bfd_elf_link_hash_copy_indirectH.J. Lu21-623/+59
Copy dyn_relocs in _bfd_elf_link_hash_copy_indirect instead of in each target backend. PR ld/26067 * elf32-arm.c (elf32_arm_copy_indirect_symbol): Don't copy dyn_relocs. * elf32-csky.c (csky_elf_copy_indirect_symbol): Likewise. * elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Likewise. * elf32-metag.c (elf_metag_copy_indirect_symbol): Likewise. * elf32-microblaze.c (microblaze_elf_copy_indirect_symbol): Likewise. * elf32-nds32.c (nds32_elf_copy_indirect_symbol): Likewise. * elf32-nios2.c (nios2_elf32_copy_indirect_symbol): Likewise. * elf32-or1k.c (or1k_elf_copy_indirect_symbol): Likewise. * elf32-s390.c (elf_s390_copy_indirect_symbol): Likewise. * elf32-sh.c (sh_elf_copy_indirect_symbol): Likewise. * elf32-tilepro.c (tilepro_elf_copy_indirect_symbol): Likewise. * elf64-s390.c (elf_s390_copy_indirect_symbol): Likewise. * elfnn-aarch64.c (elfNN_aarch64_copy_indirect_symbol): Likewise. * elfnn-riscv.c (riscv_elf_copy_indirect_symbol): Likewise. * elfxx-sparc.c (_bfd_sparc_elf_copy_indirect_symbol): Likewise. * elfxx-tilegx.c (tilegx_elf_copy_indirect_symbol): Likewise. * elfxx-x86.c (_bfd_x86_elf_copy_indirect_symbol): Likewise. * elf32-lm32.c (lm32_elf_copy_indirect_symbol): Removed. (elf_backend_copy_indirect_symbol): Likewise. * elf32-m32r.c (m32r_elf_copy_indirect_symbol): Removed. (elf_backend_copy_indirect_symbol): Likewise. * elflink.c (_bfd_elf_link_hash_copy_indirect): Copy dyn_relocs.
2020-06-03ELF: Consolidate readonly_dynrelocsH.J. Lu24-398/+145
All readonly_dynrelocs implementations are the same. Consolidate them to a single _bfd_elf_readonly_dynrelocs. PR ld/26067 * elf-bfd.h (_bfd_elf_readonly_dynrelocs): New. * elf32-arm.c (readonly_dynrelocs): Removed. (maybe_set_textrel): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. * elf32-csky.c (readonly_dynrelocs): Removed. (maybe_set_textrel): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. * elf32-hppa.c(readonly_dynrelocs): Removed. (alias_readonly_dynrelocs): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. (maybe_set_textrel): Likewise. * elf32-lm32.c (readonly_dynrelocs): Removed. (lm32_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. (maybe_set_textrel): Likewise. * elf32-m32r.c (readonly_dynrelocs): Removed. (m32r_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. (maybe_set_textrel): Likewise. * elf32-metag.c (readonly_dynrelocs): Removed. (elf_metag_adjust_dynamic_symbol): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. (maybe_set_textrel): Likewise. * elf32-microblaze.c (readonly_dynrelocs): Removed. (microblaze_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. * elf32-nds32.c (readonly_dynrelocs): Removed. (nds32_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. (maybe_set_textrel): Likewise. * elf32-or1k.c (readonly_dynrelocs): Removed. (or1k_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. * elf32-ppc.c (readonly_dynrelocs): Removed. (alias_readonly_dynrelocs): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. (ppc_elf_adjust_dynamic_symbol): Likewise. (maybe_set_textrel): Likewise. * elf32-s390.c (readonly_dynrelocs): Removed. (elf_s390_adjust_dynamic_symbol): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. (maybe_set_textrel): Likewise. * elf32-sh.c (readonly_dynrelocs): Removed. (sh_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. (maybe_set_textrel): Likewise. * elf32-tic6x.c (readonly_dynrelocs): Removed. (maybe_set_textrel): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. * elf32-tilepro.c (readonly_dynrelocs): Removed. (tilepro_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. (maybe_set_textrel): Likewise. * elf64-ppc.c (readonly_dynrelocs): Removed. (alias_readonly_dynrelocs): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. (ppc64_elf_adjust_dynamic_symbol): Likewise. (maybe_set_textrel): Likewise. * elf64-s390.c (readonly_dynrelocs): Removed. (elf_s390_adjust_dynamic_symbol): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. (maybe_set_textrel): Likewise. * elflink.c (_bfd_elf_readonly_dynrelocs): New. * elfnn-aarch64.c (readonly_dynrelocs): Removed. (maybe_set_textrel): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. * elfnn-riscv.c (readonly_dynrelocs): Removed. (riscv_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. (maybe_set_textrel): Likewise. * elfxx-sparc.c (readonly_dynrelocs): Removed. (_bfd_sparc_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. (maybe_set_textrel): Likewise. * elfxx-tilegx.c (readonly_dynrelocs): Removed. (tilegx_elf_adjust_dynamic_symbol): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. (maybe_set_textrel): Likewise. * elfxx-x86.c (readonly_dynrelocs): Removed. (maybe_set_textrel): Replace readonly_dynrelocs with _bfd_elf_readonly_dynrelocs. (_bfd_x86_elf_adjust_dynamic_symbol): Likewise.
2020-06-03ld: Pass -fno-sanitize=all to tests with linkerH.J. Lu14-32/+121
When binutils is compiled with -fsanitize=undefined, many tests with linker, instead of $CC, fail with undefined symbol references to sanitize library. Define NOSANTIZE_CFLAGS to -fno-sanitize=all if target compiler supports it and compile such tests with $NOSANTIZE_CFLAGS. * testsuite/config/default.exp (NOSANTIZE_CFLAGS): New. * testsuite/ld-elf/linux-x86.exp: Add $NOSANTIZE_CFLAGS to tests with run_ld_link_exec_tests. * testsuite/ld-elf/shared.exp: Add $NOSANTIZE_CFLAGS to tests with run_ld_link_tests. * testsuite/ld-elf/tls.exp: Likewise. * testsuite/ld-elfweak/elfweak.exp: Add $NOSANTIZE_CFLAGS to tests with ld_link. * testsuite/ld-gc/gc.exp: Add $NOSANTIZE_CFLAGS to cflags. * testsuite/ld-plugin/lto.exp: Add $NOSANTIZE_CFLAGS to tests with run_ld_link_tests.a * testsuite/ld-plugin/plugin.exp: Append $NOSANTIZE_CFLAGS to CFLAGS. * testsuite/ld-selective/selective.exp: Add $NOSANTIZE_CFLAGS to cflags and cxxflags. * testsuite/ld-srec/srec.exp: Append $NOSANTIZE_CFLAGS to CC and CXX. * testsuite/ld-x86-64/plt-main-ibt-x32.dd: Updated for -fsanitize=undefined. * testsuite/ld-x86-64/plt-main-ibt.dd: Likewise. * testsuite/ld-x86-64/x86-64.exp: Add $NOSANTIZE_CFLAGS to tests with run_cc_link_tests and run_ld_link_tests.
2020-06-03ld: Add --export-dynamic-symbol and --export-dynamic-symbol-listFangrui Song22-9/+341
--export-dynamic-symbol-list is like a dynamic list, but without the symbolic property for unspecified symbols. When creating an executable, --export-dynamic-symbol-list is treated like --dynamic-list. When creating a shared library, it is treated like --dynamic-list if -Bsymbolic or --dynamic-list are used, otherwise, it is ignored, so that references to matched symbols will not be bound to the definitions within the shared library. PR ld/25910 * NEWS: Mention --export-dynamic-symbol[-list]. * ld.texi: Document --export-dynamic-symbol[-list]. * ldgram.y: Pass current_dynamic_list_p to lang_append_dynamic_list. * ldlang.c (current_dynamic_list_p): New. (ang_append_dynamic_list): Updated to take a pointer to struct bfd_elf_dynamic_list * argument instead of using link_info.dynamic_list. (lang_append_dynamic_list_cpp_typeinfo): Pass &link_info.dynamic_list to ang_append_dynamic_list. (lang_append_dynamic_list_cpp_new): Likewise. * ldlang.h (current_dynamic_list_p): New. (lang_append_dynamic_list): Add a pointer to struct bfd_elf_dynamic_list * argument. * ldlex.h (option_values): Add OPTION_EXPORT_DYNAMIC_SYMBOL and OPTION_EXPORT_DYNAMIC_SYMBOL_LIST. * lexsup.c (ld_options): Add entries for OPTION_EXPORT_DYNAMIC_SYMBOL and OPTION_EXPORT_DYNAMIC_SYMBOL_LIST. (parse_args): Handle --export-dynamic-symbol and --export-dynamic-symbol-list. * testsuite/ld-dynamic/export-dynamic-symbol-1.d: New. * testsuite/ld-dynamic/export-dynamic-symbol-2.d: New. * testsuite/ld-dynamic/export-dynamic-symbol-glob.d: New. * testsuite/ld-dynamic/export-dynamic-symbol-list-1.d: New. * testsuite/ld-dynamic/export-dynamic-symbol-list-2.d: New. * testsuite/ld-dynamic/export-dynamic-symbol-list-glob.d: New. * testsuite/ld-dynamic/export-dynamic-symbol.exp: New. * testsuite/ld-dynamic/export-dynamic-symbol.s: New. * testsuite/ld-dynamic/foo-bar.list: New. * testsuite/ld-dynamic/foo.list: New. * testsuite/ld-dynamic/foo.s: New. * testsuite/ld-dynamic/fstar.list: New. * testsuite/ld-elf/dlempty.list: New. * testsuite/ld-elf/shared.exp: Add tests for --export-dynamic-symbol and --export-dynamic-symbol-list.
2020-06-03x86: Silence -fsanitize=undefinedH.J. Lu2-3/+8
Replace "&(EH)->elf" with "(struct elf_link_hash_entry *) (EH)" to silence -fsanitize=undefined. * elfxx-x86.h (GENERATE_DYNAMIC_RELOCATION_P): Replace "&(EH)->elf" with "(struct elf_link_hash_entry *) (EH)".
2020-06-03ld: fix ld-elf/linux-x86.exp for r/o source treeJan Beulich2-0/+7
Since the copying ofthe individual files gets done more than once, make sure the destinations can be copied to on subsequent copying attempts.
2020-06-03PR26069, strip/objcopy misaligned address accessesAlan Modra2-27/+29
PR 26069 PR 18758 * peicode.h (pe_ILF_make_a_section): Align data for compilers other than gcc. (pe_ILF_build_a_bfd): Likewise.