Skip to content
Snippets Groups Projects
  1. Oct 17, 2024
    • Christophe Lyon's avatar
      aarch64: libgcc: Use -Werror · 71c7b446
      Christophe Lyon authored
      This patch adds -Werror to LIBGCC2_CFLAGS so that aarch64 can catch
      warnings during bootstrap, while not impacting other targets.
      
      The patch also adds -Wno-prio-ctor-dtor to avoid a warning when
      compiling lse_init.c
      
      	libgcc/
      	* config/aarch64/t-aarch64: Always use -Werror
      	-Wno-prio-ctor-dtor.
      71c7b446
    • Christophe Lyon's avatar
      aarch64: libgcc: add prototypes in cpuinfo · d806810f
      Christophe Lyon authored
      Add prototypes for __init_cpu_features_resolver and
      __init_cpu_features to avoid warnings due to -Wmissing-prototypes.
      
      	libgcc/
      	* config/aarch64/cpuinfo.c (__init_cpu_features_resolver): Add
      	prototype.
      	(__init_cpu_features): Likewise.
      d806810f
    • Christophe Lyon's avatar
      aarch64: libgcc: Cleanup warnings in lse.S · e4d41741
      Christophe Lyon authored
      Since
        Commit c608ada2
        Author:     Zac Walker <zacwalker@microsoft.com>
        CommitDate: 2024-01-23 15:32:30 +0000
      
        Ifdef `.hidden`, `.type`, and `.size` pseudo-ops for `aarch64-w64-mingw32` target
      
      lse.S includes aarch64-asm.h, leading to a conflicting definition of macro 'L':
      - in lse.S it expands to either '' or 'L'
      - in aarch64-asm.h it is used to generate .L ## label
      
      lse.S does not use the second, so this patch just undefines L after
      the inclusion of aarch64-asm.h.
      
      libgcc/
      	* config/aarch64/lse.S: Undefine L() macro.
      e4d41741
  2. Oct 16, 2024
  3. Oct 14, 2024
    • Yangyu Chen's avatar
      RISC-V: Add detailed comments on processing implied extensions. [NFC] · 1c507a02
      Yangyu Chen authored
      
      In some cases, we don't need to handle implied extensions. Add detailed
      comments to help developers understand what implied ISAs should be
      considered.
      
      libgcc/ChangeLog:
      
      	* config/riscv/feature_bits.c (__init_riscv_features_bits_linux):
      	Add detailed comments on processing implied extensions.
      
      Signed-off-by: default avatarYangyu Chen <chenyangyu@isrc.iscas.ac.cn>
      1c507a02
    • Kito Cheng's avatar
      RISC-V: Implement __init_riscv_feature_bits, __riscv_feature_bits, and __riscv_vendor_feature_bits · ca44eb7f
      Kito Cheng authored
      This provides a common abstraction layer to probe the available extensions at
      run-time. These functions can be used to implement function multi-versioning or
      to detect available extensions.
      
      The advantages of providing this abstraction layer are:
      - Easy to port to other new platforms.
      - Easier to maintain in GCC for function multi-versioning.
        - For example, maintaining platform-dependent code in C code/libgcc is much
          easier than maintaining it in GCC by creating GIMPLEs...
      
      This API is intended to provide the capability to query minimal common available extensions on the system.
      
      The API is defined in the riscv-c-api-doc:
      https://github.com/riscv-non-isa/riscv-c-api-doc/blob/main/src/c-api.adoc
      
      Proposal to use unsigned long long for marchid and mimpid:
      https://github.com/riscv-non-isa/riscv-c-api-doc/pull/91
      
      
      
      Full function multi-versioning implementation will come later. We are posting
      this first because we intend to backport it to the GCC 14 branch to unblock
      LLVM 19 to use this with GCC 14.2, rather than waiting for GCC 15.
      
      Changes since v7:
      - Remove vendorID field in __riscv_vendor_feature_bits.
      - Fix C implies Zcf only for RV32.
      - Add more comments to kernel versions.
      
      Changes since v6:
      - Implement __riscv_cpu_model.
      - Set new sub extension bits which implied from previous extensions.
      
      Changes since v5:
      - Minor fixes on indentation.
      
      Changes since v4:
      - Bump to newest riscv-c-api-doc with some new extensions like Zve*, Zc*
        Zimop, Zcmop, Zawrs.
      - Rename the return variable name of hwprobe syscall.
      - Minor fixes on indentation.
      
      Changes since v3:
      - Fix non-linux build.
      - Let __init_riscv_feature_bits become constructor
      
      Changes since v2:
      - Prevent it initialize more than once.
      
      Changes since v1:
      - Fix the format.
      - Prevented race conditions by introducing a local variable to avoid load/store
        operations during the computation of the feature bit.
      
      Co-Developed-by: default avatarYangyu Chen <chenyangyu@isrc.iscas.ac.cn>
      Signed-off-by: default avatarYangyu Chen <chenyangyu@isrc.iscas.ac.cn>
      
      libgcc/ChangeLog:
      
      	* config/riscv/feature_bits.c: New.
      	* config/riscv/t-elf (LIB2ADD): Add feature_bits.c.
      ca44eb7f
  4. Oct 11, 2024
  5. Oct 10, 2024
  6. Oct 05, 2024
  7. Oct 04, 2024
  8. Oct 02, 2024
  9. Oct 01, 2024
    • Tsung Chun Lin's avatar
      [PATCH] RISC-V/libgcc: Fix incorrect and missing .cfi_offset for __riscv_save_[0-3] on RV32. · 97fd7772
      Tsung Chun Lin authored
      0001-RISC-V-libgcc-Fix-incorrect-and-missing-.cfi_offset-.patch
      
      From 06a370a0a2329dd4da0ffcab7c35ea7df2353baf Mon Sep 17 00:00:00 2001
      From: Jim Lin <jim@andestech.com>
      Date: Tue, 1 Oct 2024 14:42:56 +0800
      Subject: [PATCH] RISC-V/libgcc: Fix incorrect and missing .cfi_offset for
       __riscv_save_[0-3] on RV32.
      
      libgcc/ChangeLog:
      
      	* config/riscv/save-restore.S: Fix .cfi_offset for
      	__riscv_save_[0-3] on RV32.
      97fd7772
  10. Sep 28, 2024
  11. Sep 27, 2024
  12. Sep 26, 2024
    • Nathaniel Shead's avatar
      libgcc, libstdc++: Make declarations no longer TU-local [PR115126] · 6a4d1c37
      Nathaniel Shead authored
      
      In C++20, modules streaming check for exposures of TU-local entities.
      In general exposing internal linkage functions in a header is liable to
      cause ODR violations in C++, and this is now detected in a module
      context.
      
      This patch goes through and removes 'static' from many declarations
      exposed through libstdc++ to prevent code like the following from
      failing:
      
        export module M;
        extern "C++" {
          #include <bits/stdc++.h>
        }
      
      Since gthreads is used from C as well, we need to choose whether to use
      'inline' or 'static inline' depending on whether we're compiling for C
      or C++ (since the semantics of 'inline' are different between the
      languages).  Additionally we need to remove static global variables, so
      we migrate these to function-local statics to avoid the ODR issues.
      
      There doesn't seem to be a good workaround for weakrefs, so I've left
      them as-is and will work around it in the modules streaming code to
      consider them as not TU-local.
      
      The same issue occurs in the objective-C specific parts of gthreads, but
      I'm not familiar with the surrounding context and we don't currently
      test modules with Objective C++ anyway so I've left it as-is.
      
      	PR libstdc++/115126
      
      libgcc/ChangeLog:
      
      	* gthr-posix.h (__GTHREAD_ALWAYS_INLINE): New macro.
      	(__GTHREAD_INLINE): New macro.
      	(__gthread_active): Convert from variable to (hidden) function.
      	(__gthread_active_p): Mark as __GTHREAD_INLINE instead of
      	static; make visibility("hidden") when it has a static local
      	variable.
      	(__gthread_trigger): Mark as __GTHREAD_INLINE instead of static.
      	(__gthread_create): Likewise.
      	(__gthread_join): Likewise.
      	(__gthread_detach): Likewise.
      	(__gthread_equal): Likewise.
      	(__gthread_self): Likewise.
      	(__gthread_yield): Likewise.
      	(__gthread_once): Likewise.
      	(__gthread_key_create): Likewise.
      	(__gthread_key_delete): Likewise.
      	(__gthread_getspecific): Likewise.
      	(__gthread_setspecific): Likewise.
      	(__gthread_mutex_init_function): Likewise.
      	(__gthread_mutex_destroy): Likewise.
      	(__gthread_mutex_lock): Likewise.
      	(__gthread_mutex_trylock): Likewise.
      	(__gthread_mutex_timedlock): Likewise.
      	(__gthread_mutex_unlock): Likewise.
      	(__gthread_recursive_mutex_init_function): Likewise.
      	(__gthread_recursive_mutex_lock): Likewise.
      	(__gthread_recursive_mutex_trylock): Likewise.
      	(__gthread_recursive_mutex_timedlock): Likewise.
      	(__gthread_recursive_mutex_unlock): Likewise.
      	(__gthread_recursive_mutex_destroy): Likewise.
      	(__gthread_cond_init_function): Likewise.
      	(__gthread_cond_broadcast): Likewise.
      	(__gthread_cond_signal): Likewise.
      	(__gthread_cond_wait): Likewise.
      	(__gthread_cond_timedwait): Likewise.
      	(__gthread_cond_wait_recursive): Likewise.
      	(__gthread_cond_destroy): Likewise.
      	(__gthread_rwlock_rdlock): Likewise.
      	(__gthread_rwlock_tryrdlock): Likewise.
      	(__gthread_rwlock_wrlock): Likewise.
      	(__gthread_rwlock_trywrlock): Likewise.
      	(__gthread_rwlock_unlock): Likewise.
      	* gthr-single.h: (__GTHREAD_ALWAYS_INLINE): New macro.
      	(__GTHREAD_INLINE): New macro.
      	(__gthread_active_p): Mark as __GTHREAD_INLINE instead of static.
      	(__gthread_once): Likewise.
      	(__gthread_key_create): Likewise.
      	(__gthread_key_delete): Likewise.
      	(__gthread_getspecific): Likewise.
      	(__gthread_setspecific): Likewise.
      	(__gthread_mutex_destroy): Likewise.
      	(__gthread_mutex_lock): Likewise.
      	(__gthread_mutex_trylock): Likewise.
      	(__gthread_mutex_unlock): Likewise.
      	(__gthread_recursive_mutex_lock): Likewise.
      	(__gthread_recursive_mutex_trylock): Likewise.
      	(__gthread_recursive_mutex_unlock): Likewise.
      	(__gthread_recursive_mutex_destroy): Likewise.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/shared_ptr.h (std::__is_shared_ptr): Remove
      	unnecessary 'static'.
      	* include/bits/unique_ptr.h (std::__is_unique_ptr): Likewise.
      	* include/std/future (std::__create_task_state): Likewise.
      	* include/std/shared_mutex (_GLIBCXX_GTRHW): Likewise.
      	(__glibcxx_rwlock_init): Likewise.
      	(__glibcxx_rwlock_timedrdlock): Likewise.
      	(__glibcxx_rwlock_timedwrlock): Likewise.
      	(__glibcxx_rwlock_rdlock): Likewise.
      	(__glibcxx_rwlock_tryrdlock): Likewise.
      	(__glibcxx_rwlock_wrlock): Likewise.
      	(__glibcxx_rwlock_trywrlock): Likewise.
      	(__glibcxx_rwlock_unlock): Likewise.
      	(__glibcxx_rwlock_destroy): Likewise.
      	(__glibcxx_rwlock_init): Likewise.
      	* include/pstl/algorithm_impl.h
      	(__pstl::__internal::__set_algo_cut_off): Mark inline.
      	* include/pstl/unseq_backend_simd.h
      	(__pstl::__unseq_backend::__lane_size): Mark inline.
      
      Signed-off-by: default avatarNathaniel Shead <nathanieloshead@gmail.com>
      Reviewed-by: default avatarJonathan Wakely <jwakely@redhat.com>
      Reviewed-by: default avatarJakub Jelinek <jakub@redhat.com>
      6a4d1c37
  13. Sep 25, 2024
  14. Sep 24, 2024
    • Iain Sandoe's avatar
      libgcc, Darwin: Drop the legacy library build for macOS >= 15 [PR116809]. · d9cafa0c
      Iain Sandoe authored
      
      We have been building a legacy libgcc_s.1 DSO to support code that
      was built with older compilers.
      
      From macOS 15,  the unwinder no longer exports some of the symbols used
      in that library which (a) cuases bootstrap fail and (b) means that the
      legacy library is no longer useful.
      
      No open branch of GCC emits references to this library - and any already
      -built code that depends on the symbols would need rework anyway.
      
      	PR target/116809
      
      libgcc/ChangeLog:
      
      	* config.host: Build legacy libgcc_s.1 on hosts before macOS 15.
      	* config/i386/t-darwin: Remove reference to legacy libgcc_s.1
      	* config/rs6000/t-darwin: Likewise.
      	* config/t-darwin-libgccs1: New file.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      d9cafa0c
    • GCC Administrator's avatar
      Daily bump. · 4d6fa5b7
      GCC Administrator authored
      4d6fa5b7
  15. Sep 23, 2024
    • Matthieu Longo's avatar
      dwarf2: add hooks for architecture-specific CFIs · 9e1c71ba
      Matthieu Longo authored
      Architecture-specific CFI directives are currently declared an processed
      among others architecture-independent CFI directives in gcc/dwarf2* files.
      This approach creates confusion, specifically in the case of DWARF
      instructions in the vendor space and using the same instruction code.
      
      Such a clash currently happen between DW_CFA_GNU_window_save (used on
      SPARC) and DW_CFA_AARCH64_negate_ra_state (used on AArch64), and both
      having the same instruction code 0x2d.
      Then AArch64 compilers generates a SPARC CFI directive (.cfi_window_save)
      instead of .cfi_negate_ra_state, contrarilly to what is expected in
      [DWARF for the Arm 64-bit Architecture (AArch64)](https://github.com/
      ARM-software/abi-aa/blob/main/aadwarf64/aadwarf64.rst).
      
      This refactoring does not solve completely the problem, but improve the
      situation by moving some of the processing of those directives (more
      specifically their output in the assembly) to the backend via 2 target
      hooks:
      - DW_CFI_OPRND1_DESC: parse the first operand of the directive (if any).
      - OUTPUT_CFI_DIRECTIVE: output the CFI directive as a string.
      
      Additionally, this patch also contains a renaming of an enum used for
      return address mangling on AArch64.
      
      gcc/ChangeLog:
      
      	* config/aarch64/aarch64.cc
      	(aarch64_output_cfi_directive): New hook for CFI directives.
      	(aarch64_dw_cfi_oprnd1_desc): Same.
      	(TARGET_OUTPUT_CFI_DIRECTIVE): Hook for output_cfi_directive.
      	(TARGET_DW_CFI_OPRND1_DESC): Hook for dw_cfi_oprnd1_desc.
      	* config/sparc/sparc.cc
      	(sparc_output_cfi_directive): New hook for CFI directives.
      	(sparc_dw_cfi_oprnd1_desc): Same.
      	(TARGET_OUTPUT_CFI_DIRECTIVE): Hook for output_cfi_directive.
      	(TARGET_DW_CFI_OPRND1_DESC): Hook for dw_cfi_oprnd1_desc.
      	* coretypes.h
      	(struct dw_cfi_node): Forward declaration of CFI type from
      	gcc/dwarf2out.h.
      	(enum dw_cfi_oprnd_type): Same.
      	(enum dwarf_call_frame_info): Same.
      	* doc/tm.texi: Regenerated from doc/tm.texi.in.
      	* doc/tm.texi.in: Add doc for new target hooks.
      	type of enum to allow forward declaration.
      	* dwarf2cfi.cc
      	(struct dw_cfi_row): Update the description for window_save
      	and ra_mangled.
      	(dwarf2out_frame_debug_cfa_negate_ra_state): Use AArch64 CFI
      	directive instead of the SPARC one.
      	(change_cfi_row): Use the right CFI directive's name for RA
      	mangling.
      	(output_cfi): Remove explicit architecture-specific CFI
      	directive DW_CFA_GNU_window_save that falls into default case.
      	(output_cfi_directive): Use target hook as default.
      	* dwarf2out.cc (dw_cfi_oprnd1_desc): Use target hook as default.
      	* dwarf2out.h (enum dw_cfi_oprnd_type): specify underlying type
      	of enum to allow forward declaration.
      	(dw_cfi_oprnd1_desc): Call target hook.
      	(output_cfi_directive): Use dw_cfi_ref instead of struct
      	dw_cfi_node *.
      	* hooks.cc
      	(hook_bool_dwcfi_dwcfioprndtyperef_false): New.
      	(hook_bool_FILEptr_dwcfiptr_false): New.
      	* hooks.h
      	(hook_bool_dwcfi_dwcfioprndtyperef_false): New.
      	(hook_bool_FILEptr_dwcfiptr_false): New.
      	* target.def: Documentation for new hooks.
      
      include/ChangeLog:
      
      	* dwarf2.h (enum dwarf_call_frame_info): specify underlying
      
      libffi/ChangeLog:
      
      	* include/ffi_cfi.h (cfi_negate_ra_state): Declare AArch64 cfi
      	directive.
      
      libgcc/ChangeLog:
      
      	* config/aarch64/aarch64-asm.h (PACIASP): Replace SPARC CFI
      	directive by AArch64 one.
      	(AUTIASP): Same.
      
      libitm/ChangeLog:
      
      	* config/aarch64/sjlj.S: Replace SPARC CFI directive by
      	AArch64 one.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.target/aarch64/pr94515-1.C: Replace SPARC CFI directive by
      	AArch64 one.
      	* g++.target/aarch64/pr94515-2.C: Same.
      9e1c71ba
    • Matthieu Longo's avatar
      libgcc: hide CIE and FDE data for DWARF architecture extensions behind a handler. · bdf41d62
      Matthieu Longo authored
      This patch provides a new handler MD_ARCH_FRAME_STATE_T to hide an
      architecture-specific structure containing CIE and FDE data related
      to DWARF architecture extensions.
      
      Hiding the architecture-specific attributes behind a handler has the
      following benefits:
      1. isolating those data from the generic ones in _Unwind_FrameState
      2. avoiding casts to custom types.
      3. preserving typing information when debugging with GDB, and so
         facilitating their printing.
      
      This approach required to add a new header md-unwind-def.h included at
      the top of libgcc/unwind-dw2.h, and redirecting to the corresponding
      architecture header via a symbolic link.
      
      An obvious drawback is the increase in complexity with macros, and
      headers. It also caused a split of architecture definitions between
      md-unwind-def.h (types definitions used in unwind-dw2.h) and
      md-unwind.h (local types definitions and handlers implementations).
      The naming of md-unwind.h with .h extension is a bit misleading as
      the file is only included in the middle of unwind-dw2.c. Changing
      this naming would require modification of others backends, which I
      prefered to abstain from. Overall the benefits are worth the added
      complexity from my perspective.
      
      libgcc/ChangeLog:
      
      	* Makefile.in: New target for symbolic link to md-unwind-def.h
      	* config.host: New parameter md_unwind_def_header. Set it to
      	aarch64/aarch64-unwind-def.h for AArch64 targets, or no-unwind.h
      	by default.
      	* config/aarch64/aarch64-unwind.h
      	(aarch64_pointer_auth_key): Move to aarch64-unwind-def.h
      	(aarch64_cie_aug_handler): Update.
      	(aarch64_arch_extension_frame_init): Update.
      	(aarch64_demangle_return_addr): Update.
      	* configure.ac: New substitute variable md_unwind_def_header.
      	* unwind-dw2.h (defined): MD_ARCH_FRAME_STATE_T.
      	* config/aarch64/aarch64-unwind-def.h: New file.
      	* configure: Regenerate.
      	* config/no-unwind.h: Updated comment
      bdf41d62
    • Matthieu Longo's avatar
      aarch64: skip copy of RA state register into target context · ba3e5976
      Matthieu Longo authored
      The RA state register is local to a frame, so it should not be copied to
      the target frame during the context installation.
      
      This patch adds a new backend handler that check whether a register
      needs to be skipped or not before its installation.
      
      libgcc/ChangeLog:
      
      	* config/aarch64/aarch64-unwind.h
      	(MD_FRAME_LOCAL_REGISTER_P): new handler checking whether a register
      	from the current context needs to be skipped before installation into
      	the target context.
      	(aarch64_frame_local_register): Likewise.
      	* unwind-dw2.c (uw_install_context_1): use MD_FRAME_LOCAL_REGISTER_P.
      ba3e5976
    • Matthieu Longo's avatar
      aarch64: store signing key and signing method in DWARF _Unwind_FrameState · f5316739
      Matthieu Longo authored
      This patch is only a refactoring of the existing implementation
      of PAuth and returned-address signing. The existing behavior is
      preserved.
      
      _Unwind_FrameState already contains several CIE and FDE information
      (see the attributes below the comment "The information we care
      about from the CIE/FDE" in libgcc/unwind-dw2.h).
      The patch aims at moving the information from DWARF CIE (signing
      key stored in the augmentation string) and FDE (the used signing
      method) into _Unwind_FrameState along the already-stored CIE and
      FDE information.
      Note: those information have to be saved in frame_state_reg_info
      instead of _Unwind_FrameState as they need to be savable by
      DW_CFA_remember_state and restorable by DW_CFA_restore_state, that
      both rely on the attribute "prev".
      
      Those new information in _Unwind_FrameState simplifies the look-up
      of the signing key when the return address is demangled. It also
      allows future signing methods to be easily added.
      
      _Unwind_FrameState is not a part of the public API of libunwind,
      so the change is backward compatible.
      
      A new architecture-specific handler MD_ARCH_EXTENSION_FRAME_INIT
      allows to reset values (if needed) in the frame state and unwind
      context before changing the frame state to the caller context.
      
      A new architecture-specific handler MD_ARCH_EXTENSION_CIE_AUG_HANDLER
      isolates the architecture-specific augmentation strings in AArch64
      backend, and allows others architectures to reuse augmentation
      strings that would have clashed with AArch64 DWARF extensions.
      
      aarch64_demangle_return_addr, DW_CFA_AARCH64_negate_ra_state and
      DW_CFA_val_expression cases in libgcc/unwind-dw2-execute_cfa.h
      were documented to clarify where the value of the RA state register
      is stored (FS and CONTEXT respectively).
      
      libgcc/ChangeLog:
      
      	* config/aarch64/aarch64-unwind.h
      	(AARCH64_DWARF_RA_STATE_MASK): The mask for RA state register.
      	(aarch64_ra_signing_method_t): The diversifiers used to sign a
      	function's return address.
      	(aarch64_pointer_auth_key): The key used to sign a function's
      	return address.
      	(aarch64_cie_signed_with_b_key): Deleted as the signing key is
      	available now in _Unwind_FrameState.
      	(MD_ARCH_EXTENSION_CIE_AUG_HANDLER): New CIE augmentation string
      	handler for architecture extensions.
      	(MD_ARCH_EXTENSION_FRAME_INIT): New architecture-extension
      	initialization routine for DWARF frame state and context before
      	execution of DWARF instructions.
      	(aarch64_context_ra_state_get): Read RA state register from CONTEXT.
      	(aarch64_ra_state_get): Read RA state register from FS.
      	(aarch64_ra_state_set): Write RA state register into FS.
      	(aarch64_ra_state_toggle): Toggle RA state register in FS.
      	(aarch64_cie_aug_handler): Handler AArch64 augmentation strings.
      	(aarch64_arch_extension_frame_init): Initialize defaults for the
      	signing key (PAUTH_KEY_A), and RA state register (RA_no_signing).
      	(aarch64_demangle_return_addr): Rely on the frame registers and
      	the signing_key attribute in _Unwind_FrameState.
      	* unwind-dw2-execute_cfa.h:
      	Use the right alias DW_CFA_AARCH64_negate_ra_state for __aarch64__
      	instead of DW_CFA_GNU_window_save.
      	(DW_CFA_AARCH64_negate_ra_state): Save the signing method in RA
      	state register. Toggle RA state register without resetting 'how'
      	to REG_UNSAVED.
      	* unwind-dw2.c:
      	(extract_cie_info): Save the signing key in the current
      	_Unwind_FrameState while parsing the augmentation data.
      	(uw_frame_state_for): Reset some attributes related to architecture
      	extensions in _Unwind_FrameState.
      	(uw_update_context): Move authentication code to AArch64 unwinding.
      	* unwind-dw2.h (enum register_rule): Give a name to the existing
      	enum for the register rules, and replace 'unsigned char' by 'enum
      	register_rule' to facilitate debugging in GDB.
      	(_Unwind_FrameState): Add a new architecture-extension attribute
      	to store the signing key.
      f5316739
    • GCC Administrator's avatar
      Daily bump. · ca12354f
      GCC Administrator authored
      ca12354f
  16. Sep 22, 2024
    • Iain Sandoe's avatar
      libgcc, Darwin: From macOS 11, make that the earliest supported. · 43eab549
      Iain Sandoe authored
      
      For libgcc, we have (so far) supported building a DSO that supports
      earlier versions of the OS than the target.  From macOS 11, there are
      APIs that do not exist on earlier OS versions, so limit the libgcc
      range to macOS11..current.
      
      libgcc/ChangeLog:
      
      	* config.host: From macOS 11, limit earliest macOS support
      	to macOS 11.
      	* config/t-darwin-min-11: New file.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      43eab549
  17. Aug 28, 2024
  18. Aug 27, 2024
    • YunQiang Su's avatar
      MIPS: Include missing mips16.S in libgcc/lib1funcs.S · 9522fc8b
      YunQiang Su authored
      mips16.S was missing since
      commit 29b74545
      Date:   Thu Jun 1 10:14:24 2023 +0800
      
          MIPS: Add speculation_barrier support
      
      Without mips16.S included, some symbols will miss for mips16, and
      so some software will fail to build.
      
      libgcc/ChangeLog:
      
      	* config/mips/lib1funcs.S: Includes mips16.S.
      9522fc8b
  19. Jun 15, 2024
  20. Jun 14, 2024
  21. Jun 11, 2024
  22. Jun 10, 2024
  23. Jun 07, 2024
  24. Jun 06, 2024
    • Andre Vieira's avatar
      arm: Add .type and .size to __gnu_cmse_nonsecure_call [PR115360] · c559353a
      Andre Vieira authored
      This patch adds missing assembly directives to the CMSE library wrapper to call
      functions with attribute cmse_nonsecure_call.  Without the .type directive the
      linker will fail to produce the correct veneer if a call to this wrapper
      function is to far from the wrapper itself.  The .size was added for
      completeness, though we don't necessarily have a usecase for it.
      
      libgcc/ChangeLog:
      
      	PR target/115360
      	* config/arm/cmse_nonsecure_call.S: Add .type and .size directives.
      c559353a
    • Thomas Schwinge's avatar
      nvptx, libgcc: Stub unwinding implementation · a29c5852
      Thomas Schwinge authored
      
      Adding stub '_Unwind_Backtrace', '_Unwind_GetIPInfo' functions is necessary
      for linking libbacktrace, as a normal (non-'LIBGFOR_MINIMAL') configuration
      of libgfortran wants to do, for example.
      
      The file 'libgcc/config/nvptx/unwind-nvptx.c' is copied from
      'libgcc/config/gcn/unwind-gcn.c'.
      
      libgcc/ChangeLog:
      
      	* config/nvptx/t-nvptx: Add unwind-nvptx.c.
      	* config/nvptx/unwind-nvptx.c: New file.
      
      Co-authored-by: default avatarAndrew Stubbs <ams@gcc.gnu.org>
      a29c5852
    • Thomas Schwinge's avatar
      nvptx offloading: Global constructor, destructor support, via nvptx-tools 'ld' · 5bbe5350
      Thomas Schwinge authored
      This extends commit d9c90c82
      "nvptx target: Global constructor, destructor support, via nvptx-tools 'ld'"
      for offloading.
      
      	libgcc/
      	* config/nvptx/gbl-ctors.c ["mgomp"]
      	(__do_global_ctors__entry__mgomp)
      	(__do_global_dtors__entry__mgomp): New.
      	[!"mgomp"] (__do_global_ctors__entry, __do_global_dtors__entry):
      	New.
      	libgomp/
      	* plugin/plugin-nvptx.c (nvptx_do_global_cdtors): New.
      	(nvptx_close_device, GOMP_OFFLOAD_load_image)
      	(GOMP_OFFLOAD_unload_image): Call it.
      5bbe5350
    • GCC Administrator's avatar
      Daily bump. · 10cb3336
      GCC Administrator authored
      10cb3336
  25. Jun 05, 2024
    • Wilco Dijkstra's avatar
      AArch64: Fix cpu features initialization [PR115342] · d7cbcfe7
      Wilco Dijkstra authored
      The CPU features initialization code uses CPUID registers (rather than
      HWCAP).  The equality comparisons it uses are incorrect: for example FEAT_SVE
      is not set if SVE2 is available.  Using HWCAPs for these is both simpler and
      correct.  The initialization must also be done atomically to avoid multiple
      threads causing corruption due to non-atomic RMW accesses to the global.
      
      libgcc:
      	PR target/115342
      	* config/aarch64/cpuinfo.c (__init_cpu_features_constructor):
      	Use HWCAP where possible.  Use atomic write for initialization.
      	Fix FEAT_PREDRES comparison.
      	(__init_cpu_features_resolver): Use atomic load for correct
      	initialization.
      	(__init_cpu_features): Likewise.
      d7cbcfe7
  26. Jun 02, 2024
Loading