Skip to content
Snippets Groups Projects
  1. Jan 28, 2024
    • Iain Sandoe's avatar
      Fix __builtin_nested_func_ptr_{created,deleted} symbol versions [PR113402] · 837827f8
      Iain Sandoe authored
      
      The symbols for the functions supporting heap-based trampolines were
      exported at an incorrect symbol version, the following patch fixes that.
      
      As requested in the PR, this also renames __builtin_nested_func_ptr* to
      __gcc_nested_func_ptr*.  In carrying our the rename, we move the builtins
      to use DEF_EXT_LIB_BUILTIN.
      
      	PR libgcc/113402
      
      gcc/ChangeLog:
      
      	* builtins.cc (expand_builtin): Handle BUILT_IN_GCC_NESTED_PTR_CREATED
      	and BUILT_IN_GCC_NESTED_PTR_DELETED.
      	* builtins.def (BUILT_IN_GCC_NESTED_PTR_CREATED,
      	BUILT_IN_GCC_NESTED_PTR_DELETED): Make these builtins LIB-EXT and
      	rename the library fallbacks to __gcc_nested_func_ptr_created and
      	__gcc_nested_func_ptr_deleted.
      	* doc/invoke.texi: Rename these to __gcc_nested_func_ptr_created
      	and __gcc_nested_func_ptr_deleted.
      	* tree-nested.cc (finalize_nesting_tree_1): Use builtin_explicit for
      	BUILT_IN_GCC_NESTED_PTR_CREATED and BUILT_IN_GCC_NESTED_PTR_DELETED.
      	* tree.cc (build_common_builtin_nodes): Build the
      	BUILT_IN_GCC_NESTED_PTR_CREATED and BUILT_IN_GCC_NESTED_PTR_DELETED local
      	builtins only for non-explicit.
      
      libgcc/ChangeLog:
      
      	* config/aarch64/heap-trampoline.c: Rename
      	__builtin_nested_func_ptr_created to __gcc_nested_func_ptr_created and
      	__builtin_nested_func_ptr_deleted to __gcc_nested_func_ptr_deleted.
      	* config/i386/heap-trampoline.c: Likewise.
      	* libgcc2.h: Likewise.
      	* libgcc-std.ver.in (GCC_7.0.0): Likewise and then move
      	__gcc_nested_func_ptr_created and
      	__gcc_nested_func_ptr_deleted from this symbol version to ...
      	(GCC_14.0.0): ... this one.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      Co-authored-by: default avatarJakub Jelinek <jakub@redhat.com>
      837827f8
  2. Jan 03, 2024
  3. Dec 06, 2023
    • Alexandre Oliva's avatar
      Introduce strub: machine-independent stack scrubbing · f0a90c7d
      Alexandre Oliva authored
      This patch adds the strub attribute for function and variable types,
      command-line options, passes and adjustments to implement it,
      documentation, and tests.
      
      Stack scrubbing is implemented in a machine-independent way: functions
      with strub enabled are modified so that they take an extra stack
      watermark argument, that they update with their stack use, and the
      caller can then zero it out once it regains control, whether by return
      or exception.  There are two ways to go about it: at-calls, that
      modifies the visible interface (signature) of the function, and
      internal, in which the body is moved to a clone, the clone undergoes
      the interface change, and the function becomes a wrapper, preserving
      its original interface, that calls the clone and then clears the stack
      used by it.
      
      Variables can also be annotated with the strub attribute, so that
      functions that read from them get stack scrubbing enabled implicitly,
      whether at-calls, for functions only usable within a translation unit,
      or internal, for functions whose interfaces must not be modified.
      
      There is a strict mode, in which functions that have their stack
      scrubbed can only call other functions with stack-scrubbing
      interfaces, or those explicitly marked as callable from strub
      contexts, so that an entire call chain gets scrubbing, at once or
      piecemeal depending on optimization levels.  In the default mode,
      relaxed, this requirement is not enforced by the compiler.
      
      The implementation adds two IPA passes, one that assigns strub modes
      early on, another that modifies interfaces and adds calls to the
      builtins that jointly implement stack scrubbing.  Another builtin,
      that obtains the stack pointer, is added for use in the implementation
      of the builtins, whether expanded inline or called in libgcc.
      
      There are new command-line options to change operation modes and to
      force the feature disabled; it is enabled by default, but it has no
      effect and is implicitly disabled if the strub attribute is never
      used.  There are also options meant to use for testing the feature,
      enabling different strubbing modes for all (viable) functions.
      
      
      for  gcc/ChangeLog
      
      	* Makefile.in (OBJS): Add ipa-strub.o.
      	(GTFILES): Add ipa-strub.cc.
      	* builtins.def (BUILT_IN_STACK_ADDRESS): New.
      	(BUILT_IN___STRUB_ENTER): New.
      	(BUILT_IN___STRUB_UPDATE): New.
      	(BUILT_IN___STRUB_LEAVE): New.
      	* builtins.cc: Include ipa-strub.h.
      	(STACK_STOPS, STACK_UNSIGNED): Define.
      	(expand_builtin_stack_address): New.
      	(expand_builtin_strub_enter): New.
      	(expand_builtin_strub_update): New.
      	(expand_builtin_strub_leave): New.
      	(expand_builtin): Call them.
      	* common.opt (fstrub=*): New options.
      	* doc/extend.texi (strub): New type attribute.
      	(__builtin_stack_address): New function.
      	(Stack Scrubbing): New section.
      	* doc/invoke.texi (-fstrub=*): New options.
      	(-fdump-ipa-*): New passes.
      	* gengtype-lex.l: Ignore multi-line pp-directives.
      	* ipa-inline.cc: Include ipa-strub.h.
      	(can_inline_edge_p): Test strub_inlinable_to_p.
      	* ipa-split.cc: Include ipa-strub.h.
      	(execute_split_functions): Test strub_splittable_p.
      	* ipa-strub.cc, ipa-strub.h: New.
      	* passes.def: Add strub_mode and strub passes.
      	* tree-cfg.cc (gimple_verify_flow_info): Note on debug stmts.
      	* tree-pass.h (make_pass_ipa_strub_mode): Declare.
      	(make_pass_ipa_strub): Declare.
      	(make_pass_ipa_function_and_variable_visibility): Fix
      	formatting.
      	* tree-ssa-ccp.cc (optimize_stack_restore): Keep restores
      	before strub leave.
      	* attribs.cc: Include ipa-strub.h.
      	(decl_attributes): Support applying attributes to function
      	type, rather than pointer type, at handler's request.
      	(comp_type_attributes): Combine strub_comptypes and target
      	comp_type results.
      	* doc/tm.texi.in (TARGET_STRUB_USE_DYNAMIC_ARRAY): New.
      	(TARGET_STRUB_MAY_USE_MEMSET): New.
      	* doc/tm.texi: Rebuilt.
      	* cgraph.h (symtab_node::reset): Add preserve_comdat_group
      	param, with a default.
      	* cgraphunit.cc (symtab_node::reset): Use it.
      
      for  gcc/c-family/ChangeLog
      
      	* c-attribs.cc: Include ipa-strub.h.
      	(handle_strub_attribute): New.
      	(c_common_attribute_table): Add strub.
      
      for  gcc/ada/ChangeLog
      
      	* gcc-interface/trans.cc: Include ipa-strub.h.
      	(gigi): Make internal decls for targets of compiler-generated
      	calls strub-callable too.
      	(build_raise_check): Likewise.
      	* gcc-interface/utils.cc: Include ipa-strub.h.
      	(handle_strub_attribute): New.
      	(gnat_internal_attribute_table): Add strub.
      
      for  gcc/testsuite/ChangeLog
      
      	* c-c++-common/strub-O0.c: New.
      	* c-c++-common/strub-O1.c: New.
      	* c-c++-common/strub-O2.c: New.
      	* c-c++-common/strub-O2fni.c: New.
      	* c-c++-common/strub-O3.c: New.
      	* c-c++-common/strub-O3fni.c: New.
      	* c-c++-common/strub-Og.c: New.
      	* c-c++-common/strub-Os.c: New.
      	* c-c++-common/strub-all1.c: New.
      	* c-c++-common/strub-all2.c: New.
      	* c-c++-common/strub-apply1.c: New.
      	* c-c++-common/strub-apply2.c: New.
      	* c-c++-common/strub-apply3.c: New.
      	* c-c++-common/strub-apply4.c: New.
      	* c-c++-common/strub-at-calls1.c: New.
      	* c-c++-common/strub-at-calls2.c: New.
      	* c-c++-common/strub-defer-O1.c: New.
      	* c-c++-common/strub-defer-O2.c: New.
      	* c-c++-common/strub-defer-O3.c: New.
      	* c-c++-common/strub-defer-Os.c: New.
      	* c-c++-common/strub-internal1.c: New.
      	* c-c++-common/strub-internal2.c: New.
      	* c-c++-common/strub-parms1.c: New.
      	* c-c++-common/strub-parms2.c: New.
      	* c-c++-common/strub-parms3.c: New.
      	* c-c++-common/strub-relaxed1.c: New.
      	* c-c++-common/strub-relaxed2.c: New.
      	* c-c++-common/strub-short-O0-exc.c: New.
      	* c-c++-common/strub-short-O0.c: New.
      	* c-c++-common/strub-short-O1.c: New.
      	* c-c++-common/strub-short-O2.c: New.
      	* c-c++-common/strub-short-O3.c: New.
      	* c-c++-common/strub-short-Os.c: New.
      	* c-c++-common/strub-strict1.c: New.
      	* c-c++-common/strub-strict2.c: New.
      	* c-c++-common/strub-tail-O1.c: New.
      	* c-c++-common/strub-tail-O2.c: New.
      	* c-c++-common/torture/strub-callable1.c: New.
      	* c-c++-common/torture/strub-callable2.c: New.
      	* c-c++-common/torture/strub-const1.c: New.
      	* c-c++-common/torture/strub-const2.c: New.
      	* c-c++-common/torture/strub-const3.c: New.
      	* c-c++-common/torture/strub-const4.c: New.
      	* c-c++-common/torture/strub-data1.c: New.
      	* c-c++-common/torture/strub-data2.c: New.
      	* c-c++-common/torture/strub-data3.c: New.
      	* c-c++-common/torture/strub-data4.c: New.
      	* c-c++-common/torture/strub-data5.c: New.
      	* c-c++-common/torture/strub-indcall1.c: New.
      	* c-c++-common/torture/strub-indcall2.c: New.
      	* c-c++-common/torture/strub-indcall3.c: New.
      	* c-c++-common/torture/strub-inlinable1.c: New.
      	* c-c++-common/torture/strub-inlinable2.c: New.
      	* c-c++-common/torture/strub-ptrfn1.c: New.
      	* c-c++-common/torture/strub-ptrfn2.c: New.
      	* c-c++-common/torture/strub-ptrfn3.c: New.
      	* c-c++-common/torture/strub-ptrfn4.c: New.
      	* c-c++-common/torture/strub-pure1.c: New.
      	* c-c++-common/torture/strub-pure2.c: New.
      	* c-c++-common/torture/strub-pure3.c: New.
      	* c-c++-common/torture/strub-pure4.c: New.
      	* c-c++-common/torture/strub-run1.c: New.
      	* c-c++-common/torture/strub-run2.c: New.
      	* c-c++-common/torture/strub-run3.c: New.
      	* c-c++-common/torture/strub-run4.c: New.
      	* c-c++-common/torture/strub-run4c.c: New.
      	* c-c++-common/torture/strub-run4d.c: New.
      	* c-c++-common/torture/strub-run4i.c: New.
      	* g++.dg/strub-run1.C: New.
      	* g++.dg/torture/strub-init1.C: New.
      	* g++.dg/torture/strub-init2.C: New.
      	* g++.dg/torture/strub-init3.C: New.
      	* gnat.dg/strub_attr.adb, gnat.dg/strub_attr.ads: New.
      	* gnat.dg/strub_ind.adb, gnat.dg/strub_ind.ads: New.
      
      for  libgcc/ChangeLog
      
      	* Makefile.in (LIB2ADD): Add strub.c.
      	* libgcc2.h (__strub_enter, __strub_update, __strub_leave):
      	Declare.
      	* strub.c: New.
      	* libgcc-std.ver.in (__strub_enter): Add to GCC_14.0.0.
      	(__strub_update, __strub_leave): Likewise.
      f0a90c7d
  4. Dec 01, 2023
    • Alexandre Oliva's avatar
      hardcfr: libgcc sym versioning · c4a49ebd
      Alexandre Oliva authored
      The libgcc-exported runtime component of control flow redundancy
      hardening was missing symbol versioning information.  Add it.
      
      
      for  libgcc/ChangeLog
      
      	* libgcc-std.ver.in (__hardcfr_check): Add to GCC_14.0.0.
      c4a49ebd
  5. Oct 22, 2023
    • Andrew Burgess's avatar
      libgcc: support heap-based trampolines · 8abddb18
      Andrew Burgess authored
      
      Add support for heap-based trampolines on x86_64-linux, aarch64-linux,
      and x86_64-darwin. Implement the __builtin_nested_func_ptr_created and
      __builtin_nested_func_ptr_deleted functions for these targets.
      
      Co-Authored-By: default avatarMaxim Blinov <maxim.blinov@embecosm.com>
      Co-Authored-By: default avatarIain Sandoe <iain@sandoe.co.uk>
      Co-Authored-By: default avatarFrancois-Xavier Coudert <fxcoudert@gcc.gnu.org>
      
      libgcc/ChangeLog:
      
      	* libgcc2.h (__builtin_nested_func_ptr_created): Declare.
      	(__builtin_nested_func_ptr_deleted): Declare.
      	* libgcc-std.ver.in: Add the new symbols.
      	* config/aarch64/heap-trampoline.c: Implement heap-based
      	trampolines for aarch64.
      	* config/aarch64/t-heap-trampoline: Add rule to build
      	config/aarch64/heap-trampoline.c
      	* config/i386/heap-trampoline.c: Implement heap-based
      	trampolines for x86_64.
      	* config/i386/t-heap-trampoline: Add rule to build
      	config/i386/heap-trampoline.cc
      	* config.host: Handle --enable-heap-trampolines on
      	x86_64-*-linux*, aarch64-*-linux*, x86_64-*-darwin*.
      8abddb18
  6. Sep 06, 2023
    • Jakub Jelinek's avatar
      libgcc _BitInt support [PR102989] · 2ce182e2
      Jakub Jelinek authored
      This patch adds the library helpers for multiplication, division + modulo
      and casts from and to floating point (both binary and decimal).
      As described in the intro, the first step is try to reduce further the
      passed in precision by skipping over most significant limbs with just zeros
      or sign bit copies.  For multiplication and division I've implemented
      a simple algorithm, using something smarter like Karatsuba or Toom N-Way
      might be faster for very large _BitInts (which we don't support right now
      anyway), but could mean more code in libgcc, which maybe isn't what people
      are willing to accept.
      For the to/from floating point conversions the patch uses soft-fp, because
      it already has tons of handy macros which can be used for that.  In theory
      it could be implemented using {,unsigned} long long or {,unsigned} __int128
      to/from floating point conversions with some frexp before/after, but at that
      point we already need to force it into integer registers and analyze it
      anyway.  Plus, for 32-bit arches there is no __int128 that could be used
      for XF/TF mode stuff.
      I know that soft-fp is owned by glibc and I think the op-common.h change
      should be propagated there, but the bitint stuff is really GCC specific
      and IMHO doesn't belong into the glibc copy.
      
      2023-09-06  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c/102989
      libgcc/
      	* config/aarch64/t-softfp (softfp_extras): Use += rather than :=.
      	* config/i386/64/t-softfp (softfp_extras): Likewise.
      	* config/i386/libgcc-glibc.ver (GCC_14.0.0): Export _BitInt support
      	routines.
      	* config/i386/t-softfp (softfp_extras): Add fixxfbitint and
      	bf, hf and xf mode floatbitint.
      	(CFLAGS-floatbitintbf.c, CFLAGS-floatbitinthf.c): Add -msse2.
      	* config/riscv/t-softfp32 (softfp_extras): Use += rather than :=.
      	* config/rs6000/t-e500v1-fp (softfp_extras): Likewise.
      	* config/rs6000/t-e500v2-fp (softfp_extras): Likewise.
      	* config/t-softfp (softfp_floatbitint_funcs): New.
      	(softfp_bid_list): New.
      	(softfp_func_list): Add sf and df mode from and to _BitInt libcalls.
      	(softfp_bid_file_list): New.
      	(LIB2ADD_ST): Add $(softfp_bid_file_list).
      	* config/t-softfp-sfdftf (softfp_extras): Add fixtfbitint and
      	floatbitinttf.
      	* config/t-softfp-tf (softfp_extras): Likewise.
      	* libgcc2.c (bitint_reduce_prec): New inline function.
      	(BITINT_INC, BITINT_END): Define.
      	(bitint_mul_1, bitint_addmul_1): New helper functions.
      	(__mulbitint3): New function.
      	(bitint_negate, bitint_submul_1): New helper functions.
      	(__divmodbitint4): New function.
      	* libgcc2.h (LIBGCC2_UNITS_PER_WORD): When building _BitInt support
      	libcalls, redefine depending on __LIBGCC_BITINT_LIMB_WIDTH__.
      	(__mulbitint3, __divmodbitint4): Declare.
      	* libgcc-std.ver.in (GCC_14.0.0): Export _BitInt support routines.
      	* Makefile.in (lib2funcs): Add _mulbitint3.
      	(LIB2_DIVMOD_FUNCS): Add _divmodbitint4.
      	* soft-fp/bitint.h: New file.
      	* soft-fp/fixdfbitint.c: New file.
      	* soft-fp/fixsfbitint.c: New file.
      	* soft-fp/fixtfbitint.c: New file.
      	* soft-fp/fixxfbitint.c: New file.
      	* soft-fp/floatbitintbf.c: New file.
      	* soft-fp/floatbitintdf.c: New file.
      	* soft-fp/floatbitinthf.c: New file.
      	* soft-fp/floatbitintsf.c: New file.
      	* soft-fp/floatbitinttf.c: New file.
      	* soft-fp/floatbitintxf.c: New file.
      	* soft-fp/op-common.h (_FP_FROM_INT): Add support for rsize up to
      	4 * _FP_W_TYPE_SIZE rather than just 2 * _FP_W_TYPE_SIZE.
      	* soft-fp/bitintpow10.c: New file.
      	* soft-fp/fixsdbitint.c: New file.
      	* soft-fp/fixddbitint.c: New file.
      	* soft-fp/fixtdbitint.c: New file.
      	* soft-fp/floatbitintsd.c: New file.
      	* soft-fp/floatbitintdd.c: New file.
      	* soft-fp/floatbitinttd.c: New file.
      2ce182e2
  7. Jan 16, 2023
  8. Jan 03, 2022
  9. Jan 04, 2021
  10. Jan 01, 2020
  11. Jan 01, 2019
  12. Jan 03, 2018
  13. Jan 01, 2017
  14. Nov 02, 2016
    • Uros Bizjak's avatar
      Makefile.in (LIB2_DIVMOD_FUNCS): Add _divmoddi4. · 18362447
      Uros Bizjak authored
      	* Makefile.in (LIB2_DIVMOD_FUNCS): Add _divmoddi4.
      	* libgcc2.c (__divmoddi4): New function.
      	* libgcc2.h (__divmoddi4): Declare.
      	* libgcc-std.ver.in (GCC_7.0.0): New. Add __PFX_divmoddi4
      	and __PFX_divmodti4.
      
      From-SVN: r241804
      18362447
  15. Jan 04, 2016
  16. Jan 05, 2015
  17. Jan 02, 2014
  18. Feb 04, 2013
  19. Nov 20, 2012
  20. Nov 28, 2011
  21. Nov 09, 2011
    • Ian Lance Taylor's avatar
      generic-morestack.c: Include <string.h>. · e14304ef
      Ian Lance Taylor authored
      libgcc/:
      	* generic-morestack.c: Include <string.h>.
      	(uintptr_type): Define.
      	(struct initial_sp): Add dont_block_signals field.  Reduce size of
      	extra array by 1.
      	(allocate_segment): Set prev field to NULL.  Don't set
      	__morestack_current_segment or __morestack_segments.
      	(__generic_morestack): Update current->prev and *pp after calling
      	allocate_segment.
      	(__morestack_block_signals): Don't do anything if
      	dont_block_signals is set.
      	(__morestack_unblock_signals): Likewise.
      	(__generic_findstack): Check for initial_sp == NULL.  Add casts to
      	uintptr_type.
      	(__splitstack_block_signals): New function.
      	(enum __splitstack_content_offsets): Define.
      	(__splitstack_getcontext, __splitstack_setcontext): New functions.
      	(__splitstack_makecontext): New function.
      	(__splitstack_block_signals_context): New function.
      	(__splitstack_find_context): New function.
      	* config/i386/morestack.S (__morestack_get_guard): New function.
      	(__morestack_set_guard, __morestack_make_guard): New functions.
      	* libgcc-std.ver.in: Add new functions to GCC_4.7.0.
      
      gcc/testsuite/:
      	* lib/target-supports.exp (check_effective_target_ucontext_h): New
      	procedure.
      	* gcc.dg/split-5.c: New test.
      
      From-SVN: r181234
      e14304ef
  22. Aug 01, 2011
    • Julian Brown's avatar
      Makefile.in (LIBGCC_VER_FIXEDPOINT_GNU_PREFIX): New. · 247eb06f
      Julian Brown authored
      	libgcc/
      	* Makefile.in (LIBGCC_VER_FIXEDPOINT_GNU_PREFIX): New.
      	(libgcc-std.ver.in): Use above.
      	* fixed-bit.h (LIBGCC2_FIXEDBIT_GNU_PREFIX): Define, if
      	LIBGCC2_GNU_PREFIX is defined.  Use instead of LIBGCC2_GNU_PREFIX
      	throughout file.
      	* config/t-fixedpoint-gnu-prefix: New file.
      	* config/t-gnu-prefix (LIBGCC_VER_FIXEDPOINT_GNU_PREFIX): Set.
      	* libgcc-std.ver.in (fixed-point routines): Use __FIXPTPFX__
      	instead of __PFX__.
      
      From-SVN: r177019
      247eb06f
  23. Jun 21, 2011
    • Bernd Schmidt's avatar
      Makefile.in (lib2funcs): Add _clrsbsi2 and _clrsbdi2. · 3801c801
      Bernd Schmidt authored
      	libgcc/
      	* Makefile.in (lib2funcs): Add _clrsbsi2 and _clrsbdi2.
      	* libgcc-std.ver.in (GCC_4.7.0): New section.
      
      	gcc/
      	* doc/extend.texi (__builtin_clrsb, __builtin_clrsbl,
      	__builtin_clrsbll): Document.
      	* doc/rtl.texi (clrsb): New entry.
      	* optabs.c (widen_leading): Renamed from widen_clz.  New argument
      	UNOPTAB.  All callers changed.  Use UNOPTAB instead of clz_optab.
      	(expand_unop): Handle clrsb_optab.
      	(init_optabs): Initialize it.
      	* optabs.h (enum optab_index): New entry OTI_clrsb.
      	(clrsb_optab): Define.
      	* genopinit.c (optabs): Add an entry for it.
      	* builtins.c (expand_builtin): Handle clrsb builtin functions.
      	* builtins.def (BUILT_IN_CLRSB, BUILT_IN_CLRSBIMAX, BUILT_IN_CLRSBL,
      	BUILT_IN_CLRSBLL): New.
      	* rtl.def (CLRSB): New code.
      	* dwarf2out.c (mem_loc_descriptor): Handle it.
      	* simplify-rtx.c (simplify_const_unary_operation): Likewise.
      	Use op_mode rather than mode when optimizing ffs, clz, ctz, parity
      	and popcount.
      	* libgcc2.c (__clrsbSI2, __clrsbDI2): New functions.
      	* libgcc2.h (__clrsbSI2, __clrsbDI2): Define and declare.
      	(__ctzDI2): Move declaration.
      	* config/bfin/bfin.md (clrsbsi2): New expander.
      	(signbitssi2): Use the CLRSB rtx.
      	(clrsbhi2): Renamed from signbitshi2.  Use the CLRSB rtx.
      	* config/bfin/bfin.c (bdesc_1arg): Changed accordingly.
      
      	gcc/testsuite/
      	* gcc.c-torture/excute/builtin-bitops-1.c (MAKE_FUNS): Make
      	my_clrsb test functions.
      	(main): Test clrsb.
      	* gcc.dg/builtin-protos-1.c (test_s, test_u, test_sl, test_ul,
      	test_sll, test_ull): Add clrsb tests.
      	* gcc.dg/torture/builtin-attr-1.c: Add tests for clrsb, clrsbl,
      	clrsbll.
      
      From-SVN: r175261
      3801c801
  24. May 25, 2011
    • Bernd Schmidt's avatar
      libgcc2.h (__NW, __NDW): Define using a __gnu_ prefix if LIBGCC2_GNU_PREFIX is defined. · cdbf4541
      Bernd Schmidt authored
      	gcc/
      	* libgcc2.h (__NW, __NDW): Define using a __gnu_ prefix if
      	LIBGCC2_GNU_PREFIX is defined.
      	(__N): New macro.
      	(__powisf2, __powidf2, __powitf2, __powixf2, __bswapsi2, __bswapdi2,
      	__mulsc3, __muldc3, __mulxc3, __multc3, __divsc3, __divdc3, __divxc3,
      	__divtc3, __udiv_w_sdiv, __clear_cache, __enable_execute_stack,
      	__clz_tab): Define using __N.
      	(__absvsi2, __negvsi2, __addvsi3, __subvsi3, __mulvsi3): Likewise if
      	COMPAT_SIMODE_TRAPPING_ARITHMETIC.
      	* target.def (libfunc_gnu_prefix): New hook.
      	* doc/tm.texi.in (LIBGCC2_GNU_PREFIX): Document.
      	(TARGET_LIBFUNC_GNU_PREFIX): Add hook.
      	* doc/tm.texi: Regenerate.
      	* system.h (LIBGCC2_GNU_PREFIX): Poison.
      	* optabs.c (gen_libfunc): Take the libfunc_gnu_prefix hook into
      	account.
      	(gen_interclass_conv_libfunc, gen_intraclass_conv_libfunc): Likewise.
      	(init_optabs): Likewise for the bswap libfuncs.
      	* tree.c (build_common_builtin_nodes): Likewise for complex multiply
      	and divide.
      	* config/t-slibgcc-elf-ver (SHLIB_MAPFILES): Use $$(libgcc_objdir).
      	* config/t-slibgcc-sld (SHLIB_MAPFILES): Likewise.
      	* libgcc-std.ver: Remove.
      	* Makefile.in (srcdirify): Handle $$(libgcc_objdir).
      	* config/frv/t-linux (SHLIB_MAPFILES): Use $$(libgcc_objdir) for
      	libgcc-std.ver.
      	* config/i386/t-linux (SHLIB_MAPFILES): Likewise.
      	* config/mips/t-slibgcc-irix (SHLIB_MAPFILES): Likewise.
      	* config/rs6000/t-aix43 (SHLIB_MAPFILES): Likewise.
      	* config/rs6000/t-aix52 (SHLIB_MAPFILES): Likewise.
      	* config/sparc/t-linux (SHLIB_MAPFILES): Likewise.
      	* config/i386/t-linux (SHLIB_MAPFILES): Likewise.
      	* config/i386/t-linux (SHLIB_MAPFILES): Likewise.
      	* config/fixed-bit.h (FIXED_OP): Define differently depending on
      	LIBGCC2_GNU_PREFIX. All uses changed not to pass leading underscores.
      	(FIXED_CONVERT_OP, FIXED_CONVERT_OP2): Likewise.
      
      	libgcc/
      	* libgcc-std.ver.in: New file.
      	* Makefile.in (LIBGCC_VER_GNU_PREFIX, LIBGCC_VER_SYMBOLS_PREFIX): New
      	variables.
      	(libgcc-std.ver): New rule.
      	* config/t-gnu-prefix: New file.
      
      From-SVN: r174187
      cdbf4541
Loading