aboutsummaryrefslogtreecommitdiff
path: root/bfd
AgeCommit message (Collapse)AuthorFilesLines
25 hoursAutomatic date update in version.inGDB Administrator1-1/+1
2 daysRISC-V: Add Zcmt instructions and csr.Jiawei1-0/+6
This patch supports Zcmt[1] instruction 'cm.jt' and 'cm.jalt'. Add new CSR jvt for tablejump using. Since 'cm.jt' and 'cm.jalt' have the same instructiong encoding, use 'match_cm_jt' and 'match_cm_jalt' check the 'zcmt_index' field to distinguish them. [1] https://github.com/riscvarchive/riscv-code-size-reduction/releases Co-Authored by: Charlie Keaney <charlie.keaney@embecosm.com> Co-Authored by: Mary Bennett <mary.bennett@embecosm.com> Co-Authored by: Nandni Jamnadas <nandni.jamnadas@embecosm.com> Co-Authored by: Sinan Lin <sinan.lin@linux.alibaba.com> Co-Authored by: Simon Cook <simon.cook@embecosm.com> Co-Authored by: Shihua Liao <shihua@iscas.ac.cn> Co-Authored by: Yulong Shi <yulong@iscas.ac.cn> bfd/ChangeLog: * elfxx-riscv.c (riscv_multi_subset_supports): New extension. (riscv_multi_subset_supports_ext): Ditto. gas/ChangeLog: * config/tc-riscv.c (enum riscv_csr_class): New CSR. (riscv_csr_address): Ditto. (validate_riscv_insn): New operand. (riscv_ip): Ditto. * testsuite/gas/riscv/csr-version-1p10.d: New CSR. * testsuite/gas/riscv/csr-version-1p10.l: Ditto. * testsuite/gas/riscv/csr-version-1p11.d: Ditto. * testsuite/gas/riscv/csr-version-1p11.l: Ditto. * testsuite/gas/riscv/csr-version-1p12.d: Ditto. * testsuite/gas/riscv/csr-version-1p12.l: Ditto. * testsuite/gas/riscv/csr.s: Ditto. * testsuite/gas/riscv/march-help.l: New extension. * testsuite/gas/riscv/zcmt-fail.d: New test. * testsuite/gas/riscv/zcmt-fail.l: New test. * testsuite/gas/riscv/zcmt-fail.s: New test. * testsuite/gas/riscv/zcmt.d: New test. * testsuite/gas/riscv/zcmt.s: New test. include/ChangeLog: * opcode/riscv-opc.h (MATCH_CM_JT): New opcode. (MASK_CM_JT): New mask. (MATCH_CM_JALT): New opcode. (MASK_CM_JALT): New mask. (CSR_JVT): New CSR. (DECLARE_INSN): New declaration. (DECLARE_CSR): Ditto. * opcode/riscv.h (EXTRACT_ZCMT_INDEX): New marco. (ENCODE_ZCMT_INDEX): Ditto. (enum riscv_insn_class): New class. opcodes/ChangeLog: * riscv-dis.c (print_insn_args): New operand. * riscv-opc.c (match_cm_jt): New function. (match_cm_jalt): Ditto.
2 daysAutomatic date update in version.inGDB Administrator1-1/+1
3 daysRISC-V: Don't report warnings when linking different privileged spec objects.Nelson Chu1-14/+3
Since only the abandoned privileged spec v1.9.1 will have conflict csrs, to keep the compatible we still report warnings when linking privileged spec v1.9.1 objects with others. But don't report warnings for other compatible cases because it is actually a bit noisy and useless... bfd/ * elfnn-riscv.c (riscv_merge_attributes): Only report warnings when linking the abandoned privileged spec v1.9.1 object with others. ld/ * testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-01.d: Removed. * testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-02.d: Removed. * testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-03.d: Removed. * testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-04.d: Removed. * testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-05.d: Removed. * testsuite/ld-riscv-elf/attr-merge-priv-spec-failed-06.d: Removed. * testsuite/ld-riscv-elf/ld-riscv-elf.exp: Updated.
3 daysLoongArch: Do not relax pcalau12i+ld.d when there is overflowLulu Cai1-5/+27
There is no overflow check for the relaxation of pcalau12i+ld.d => pcalau12i+addi.d. For instruction sequences that can be relaxed, they are directly relaxed to pcalau12i+addi.d. However, when the relative distance between the symbol and the pc exceeds the 32-bit range, the symbol value cannot be obtained correctly. Adds an overflow check for the relaxation of pcalau12i+ld.d. If it is found that the relaxation will overflow, it will not be relaxed.
3 daysAutomatic date update in version.inGDB Administrator1-1/+1
3 daysaarch64: remove annoying white spaces in bfd/elfnn-aarch64.cMatthieu Longo1-2/+2
4 daysELF: SHF_STRINGS isn't really tied to SHF_MERGEJan Beulich1-2/+8
It's not overly useful without it, but the spec doesn't name any dependency between the two. People may want to use it for purely informational purposes, for example. Adjust, in particular, entity size processing to be engaged if either flag is set, as mandated by the spec.
4 daysELF: SHF_MERGE vs SHT_NOBITSJan Beulich1-0/+1
bfd/merge.c puts in quite some effort to track mergable sections. That's all wasted for sections which don't have contents, as for them _bfd_write_merged_section() will never be called. With the combination not having any useful effect, also warn about this in gas.
4 daysbfd: fix -std=gnu23 compatibility wrt _BoolSam James5-6/+6
GCC trunk now defaults to -std=gnu23. We return false in a few places which can't work when true/false are a proper type (_Bool). Return NULL where appropriate instead of false. All callers handle this appropriately. ChangeLog: PR ld/32372 * elf32-ppc.c (ppc_elf_tls_setup): Return NULL. * elf32-xtensa.c (translate_reloc_bfd_fix): Ditto. (translate_reloc): Ditto. * elf64-ppc.c (update_local_sym_info): Ditto. * mach-o.c (bfd_mach_o_lookup_uuid_command): Ditto. * xsym.c (bfd_sym_read_name_table): Ditto.
4 daysAutomatic date update in version.inGDB Administrator1-1/+1
5 daysx86-64: Always check IBT PLT before BND PLTH.J. Lu1-48/+48
Since BND PLT has been deprecated and the same IBT PLT is used for both x86-64 and x32, always check IBT PLT before BND PLT when synthesizing PLT symtab. * elf64-x86-64.c (elf_x86_64_get_synthetic_symtab): Always check elf_x86_64_lazy_ibt_plt and elf_x86_64_non_lazy_ibt_plt first. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
5 daysx86-64: Drop x32 references in PLT entry variablesH.J. Lu1-38/+39
e9c11d58b95 x86-64: Remove BND from 64-bit IBT PLT removed the BND prefix from 64-bit IBT PLT by using x32 IBT PLT. Drop x32 references in PLT entry variables. * elf64-x86-64.c (elf_x86_64_lazy_ibt_plt_entry): Renamed to ... (elf_x86_64_lazy_bnd_ibt_plt_entry): This. (elf_x32_lazy_ibt_plt_entry): Renamed to ... (elf_x86_64_lazy_ibt_plt_entry): This. (elf_x86_64_non_lazy_ibt_plt_entry): Renamed to ... (elf_x86_64_non_lazy_bnd_ibt_plt_entry): This. (elf_x32_non_lazy_ibt_plt_entry): Renamed to ... (elf_x86_64_non_lazy_ibt_plt_entry): This. (elf_x86_64_eh_frame_lazy_ibt_plt): Renamed to ... (elf_x86_64_eh_frame_lazy_bnd_ibt_plt): This. (elf_x32_eh_frame_lazy_ibt_plt): Renamed to ... (elf_x86_64_eh_frame_lazy_ibt_plt): This. (elf_x86_64_lazy_ibt_plt): Renamed to ... (elf_x86_64_lazy_bnd_ibt_plt): This. Updated. (elf_x32_lazy_ibt_plt): Renamed to ... (elf_x86_64_lazy_ibt_plt): This. Updated. (elf_x86_64_non_lazy_ibt_plt): Renamed to ... (elf_x86_64_non_lazy_bnd_ibt_plt): This. Updated. (elf_x32_non_lazy_ibt_plt): Renamed to ... (elf_x86_64_non_lazy_ibt_plt): This. Updated. (elf_x86_64_get_synthetic_symtab): Updated. (elf_x86_64_link_setup_gnu_properties): Likewise. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
5 daysAutomatic date update in version.inGDB Administrator1-1/+1
6 daysAutomatic date update in version.inGDB Administrator1-1/+1
7 daysAutomatic date update in version.inGDB Administrator1-1/+1
8 daysAutomatic date update in version.inGDB Administrator1-1/+1
9 daysAutomatic date update in version.inGDB Administrator1-1/+1
9 daysbfd: Add WARN_CFLAGS_FOR_BUILD to doc/chew.c build, fix warningsMark Wielaard3-25/+25
doc/chew.c was compiled without any warning flags set. Adding the common warnings for build showed various issues with non-static functions missing prototypes and globals with common names (ptr and idx) that shadowed local arguments or variables. * doc/local.mk (doc/chew.stamp): Add WARN_CFLAGS_FOR_BUILD. * Makefile.in: Regenerate. * doc/chew.c (idx): Rename to pos_idx. (ptr): Rename to buf_ptr. (xmalloc): Make static. (xrealloc): Likewise. (xstrdup): Likewise. (nextword): Likewise. (newentry): Likewise. (add_to_definition): Likewise. (add_intrinsic): Likewise. (compile): Likewise. (icopy_past_newline): Rename idx to pos_idx, ptr to buf_ptr. (get_stuff_in_command): Likewise. (skip_past_newline): Likewise. (perform): Likewise. (main): Likewise.
10 daysRemove redundant section merge hash table fieldAlan Modra1-61/+64
sec_merge_hash.size duplicates sec_merge_hash.table.count, albeit using bfd_size_type rather than unsigned int. The only reason to have the duplicate field is to catch unsigned int overflows, and that can be done easily enough when and if required. Overflow isn't possible at the moment. See the needs_resize comment. * merge.c (sec_merge_hash): Remove "size" field. (NEEDS_RESIZE): Delete macro, replacing with.. (needs_resize): ..this inline function. (sec_merge_resize): Rename from sec_merge_maybe_resize, removing redundant check. (sec_merge_hash_insert, sec_merge_hash_lookup): Adjust to suit. (sec_merge_init, merge_strings): Likewise.
10 daysRe: tekhex object file output fixesAlan Modra1-18/+20
Commit 8b5a212495 supported *ABS* symbols by allowing "section" to be bfd_abs_section, but bfd_abs_section needs to be treated specially. In particular, bfd_get_next_section_by_name (.., bfd_abs_section_ptr) is invalid. PR 32347 * tekhex.c (first_phase): Guard against modification of _bfd_std_section[] entries.
10 daysAutomatic date update in version.inGDB Administrator1-1/+1
11 daysld, LoongArch: print error about linking without -fPIC or -fPIE flag in more ↵Xin Wang1-10/+26
detail
11 daysAutomatic date update in version.inGDB Administrator1-1/+1
12 daysAutomatic date update in version.inGDB Administrator1-1/+1
13 daysAutomatic date update in version.inGDB Administrator1-1/+1
14 daysbfd: Remove unused static find function from doc/chew.cMark Wielaard1-16/+0
After commit 2e60790cf7c27d79f90f2dcb81e1930dc980bc1c "Remove the paramstuff word" there is no caller left of the static find function in doc/chew.c, so it should be removed. * doc/chew.c (find): Remove.
2024-11-08Automatic date update in version.inGDB Administrator1-1/+1
2024-11-07Automatic date update in version.inGDB Administrator1-1/+1
2024-11-06Automatic date update in version.inGDB Administrator1-1/+1
2024-11-05Automatic date update in version.inGDB Administrator1-1/+1
2024-11-04Automatic date update in version.inGDB Administrator1-1/+1
2024-11-03Automatic date update in version.inGDB Administrator1-1/+1
2024-11-02Automatic date update in version.inGDB Administrator1-1/+1
2024-11-01ld: generate SFrame stack trace info for .plt.gotIndu Bhagat3-9/+125
PR/32298 sframe: no SFrame stack trace info generated for .plt.got Add support to generate SFrame stack trace info for .plt.got section. Enhance the current definition of struct elf_x86_sframe_plt to include initialized SFrame FDE/FREs applicable for .plt.got section. There are two variants of .plt.got entries: 16 byte and 8 byte. 8 byte: ff 25 00 00 00 00 jmpq *name@GOTPCREL(%rip) 66 90 xchg %ax,%ax 16 byte: f3 0f 1e fa endbr64 ff 25 66 2f 00 00 jmpq *name@GOTPCREL(%rip) 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) For the testcase, define some application symbols such that their PLT entry is placed in .plt.got and ensure SFrame information is generated with and without -z ibtplt. ChangeLog: PR/32298 * bfd/elf64-x86-64.c (elf_x86_64_link_setup_gnu_properties): PLT GOT entry size is different for IBT vs non IBT PLTs. * bfd/elfxx-x86.c (enum dynobj_sframe_plt_type): New enum for SFRAME_PLT_GOT. (_bfd_x86_elf_create_sframe_plt): Handle SFRAME_PLT_GOT. (_bfd_x86_elf_write_sframe_plt): Likewise. (_bfd_x86_elf_late_size_sections): Likewise. (_bfd_x86_elf_finish_dynamic_sections): Likewise. * bfd/elfxx-x86.h (struct elf_x86_sframe_plt): Add new members to keep information about PLT GOT entries. (struct elf_x86_link_hash_table): Add support for creating SFrame section for .plt.got. * ld/testsuite/ld-x86-64/x86-64.exp: Add new tests. * ld/testsuite/ld-x86-64/sframe-pltgot-1.d: New test. * ld/testsuite/ld-x86-64/sframe-pltgot-1.s: New test. * ld/testsuite/ld-x86-64/sframe-pltgot-2.d: New test.
2024-11-01ld: fix wrong SFrame info for lazy IBT PLTJosh Poimboeuf2-18/+45
Fix PR/32296 sframe: wrong SFrame info for pltN and .plt.sec for -z ibtplt The x86 psABI defines a 2-PLT scheme for IBT which uses .plt and .plt.sec entries. It was observed that SFrame information for .plt.sec section was incorrect. The erroneous assumption was that SFrame stack trace information for .plt.sec with lazy binding is the same as SFrame stack trace information for .plt with lazy binding. This is corrected now by initializing a new SFrame PLT helper object elf_x86_64_sframe_ibt_plt for lazy PLT with IBT. Add a testcase where linking with -z ibtplt generates .plt.sec entries and ensure correct SFrame information for it. Committed by Indu Bhagat. ChangeLog: PR/32296 * bfd/elf64-x86-64.c (elf_x86_64_sframe_ibt_pltn_fre2): New definition elf_x86_64_sframe_ibt_plt. Use it in elf_x86_64_sframe_plt. (elf_x86_64_link_setup_gnu_properties): Lazy IBT PLT entries are different from lazy PLT. * bfd/elfxx-x86.c (_bfd_x86_elf_create_sframe_plt): Adjust for SFrame for IBT PLT. * ld/testsuite/ld-x86-64/x86-64.exp: Add new test. * ld/testsuite/ld-x86-64/sframe-ibt-plt-1.d: New test.
2024-11-01ld: fix PR/32297Josh Poimboeuf1-2/+2
When _creating_ SFrame information for the linker created .plt.sec, the code correctly checks for presence of .plt.sec. When _writing_ the SFrame section for the corresponding .plt.sec, however, the conditionals were wrongly checking for splt. This was causing an assertion at link time. This issue has been known to affect glibc build with SFrame enabled. No testcase is added just yet. A later commit ensures correct SFrame stack trace information is created for .plt.got. A test case (where only .plt and .plt.got are created) is added then. PR/32297 sframe: bfd assertion with empty main on IBT enabled system Committed by Indu Bhagat. ChangeLog: PR/32297 * bfd/elfxx-x86.c (_bfd_x86_elf_late_size_sections): Check for plt_second member not for splt.
2024-11-01Automatic date update in version.inGDB Administrator1-1/+1
2024-10-31Automatic date update in version.inGDB Administrator1-1/+1
2024-10-30Automatic date update in version.inGDB Administrator1-1/+1
2024-10-29LoongArch: Corrected to GNU style codeLulu Cai1-15/+15
2024-10-29Automatic date update in version.inGDB Administrator1-1/+1
2024-10-28Automatic date update in version.inGDB Administrator1-1/+1
2024-10-27Automatic date update in version.inGDB Administrator1-1/+1
2024-10-26tekhex.c tidy writesymAlan Modra1-13/+5
Simplifies the code a little. No functional changes.
2024-10-25Automatic date update in version.inGDB Administrator1-1/+1
2024-10-24tekhex object file output fixesAlan Modra1-18/+7
writevalue didn't handle 64-bit values, dropping the high 32 bits, and also wrote any value in the range [0,15] as 0. * tekhex.c (first_phase): Handle *ABS* symbols. (writevalue): Rewrite.
2024-10-24Automatic date update in version.inGDB Administrator1-1/+1
2024-10-23Automatic date update in version.inGDB Administrator1-1/+1
2024-10-22stringmerge: don't presize hash tableMichael Matz1-39/+31
originally the reason for pre-sizing was that that's easier for a multi-threaded use of the hash table. That hasn't materialized yet, so there's not much sense in using the very very conservative estimates for pre-sizing. Doing the resize on-demand, whenever we actually need to add a new entry doesn't change performance. bfd/ merge.c (sec_merge_hash_insert): Resize as needed from here ... (record_section): ... not from here. Don't calculate estimates, return bool instead of three-state, regard all errors as soft errors. (_bfd_merge_sections): Adjust.