Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

97 rindas
3.5KB

  1. /* Definitions for non-Linux based ARM systems using ELF
  2. Copyright (C) 1998-2020 Free Software Foundation, Inc.
  3. Contributed by Catherine Moore <clm@cygnus.com>
  4. This file is part of GCC.
  5. GCC is free software; you can redistribute it and/or modify it
  6. under the terms of the GNU General Public License as published
  7. by the Free Software Foundation; either version 3, or (at your
  8. option) any later version.
  9. GCC is distributed in the hope that it will be useful, but WITHOUT
  10. ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  11. or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
  12. License for more details.
  13. You should have received a copy of the GNU General Public License
  14. along with GCC; see the file COPYING3. If not see
  15. <http://www.gnu.org/licenses/>. */
  16. /* elfos.h should have already been included. Now just override
  17. any conflicting definitions and add any extras. */
  18. /* Run-time Target Specification. */
  19. /* Default to using software floating point. */
  20. #ifndef TARGET_DEFAULT
  21. #define TARGET_DEFAULT (0)
  22. #endif
  23. /* Now we define the strings used to build the spec file. */
  24. #define UNKNOWN_ELF_STARTFILE_SPEC " crti%O%s crtbegin%O%s crt0%O%s"
  25. #undef STARTFILE_SPEC
  26. #define STARTFILE_SPEC \
  27. "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} " \
  28. UNKNOWN_ELF_STARTFILE_SPEC
  29. #define UNKNOWN_ELF_ENDFILE_SPEC "crtend%O%s crtn%O%s"
  30. #undef ENDFILE_SPEC
  31. #define ENDFILE_SPEC UNKNOWN_ELF_ENDFILE_SPEC
  32. /* The __USES_INITFINI__ define is tested in newlib/libc/sys/arm/crt0.S
  33. to see if it needs to invoked _init() and _fini(). */
  34. #undef SUBTARGET_CPP_SPEC
  35. #define SUBTARGET_CPP_SPEC "-D__USES_INITFINI__"
  36. #undef PREFERRED_DEBUGGING_TYPE
  37. #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
  38. /* Return a nonzero value if DECL has a section attribute. */
  39. #define IN_NAMED_SECTION_P(DECL) \
  40. ((TREE_CODE (DECL) == FUNCTION_DECL || TREE_CODE (DECL) == VAR_DECL) \
  41. && DECL_SECTION_NAME (DECL) != NULL)
  42. #undef ASM_OUTPUT_ALIGNED_BSS
  43. #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
  44. do \
  45. { \
  46. if (IN_NAMED_SECTION_P (DECL)) \
  47. switch_to_section (get_named_section (DECL, NULL, 0)); \
  48. else \
  49. switch_to_section (bss_section); \
  50. \
  51. ASM_OUTPUT_ALIGN (FILE, floor_log2 (ALIGN / BITS_PER_UNIT)); \
  52. \
  53. last_assemble_variable_decl = DECL; \
  54. ASM_DECLARE_OBJECT_NAME (FILE, NAME, DECL); \
  55. ASM_OUTPUT_SKIP (FILE, SIZE ? (int)(SIZE) : 1); \
  56. } \
  57. while (0)
  58. #undef ASM_OUTPUT_ALIGNED_DECL_LOCAL
  59. #define ASM_OUTPUT_ALIGNED_DECL_LOCAL(FILE, DECL, NAME, SIZE, ALIGN) \
  60. do \
  61. { \
  62. if ((DECL) != NULL && IN_NAMED_SECTION_P (DECL)) \
  63. switch_to_section (get_named_section (DECL, NULL, 0)); \
  64. else \
  65. switch_to_section (bss_section); \
  66. \
  67. ASM_OUTPUT_ALIGN (FILE, floor_log2 (ALIGN / BITS_PER_UNIT)); \
  68. ASM_OUTPUT_LABEL (FILE, NAME); \
  69. fprintf (FILE, "\t.space\t%d\n", SIZE ? (int) SIZE : 1); \
  70. fprintf (FILE, "\t.size\t%s, %d\n", \
  71. NAME, SIZE ? (int) SIZE : 1); \
  72. } \
  73. while (0)
  74. /* The libgcc udivmod functions may throw exceptions. If newlib is
  75. configured to support long longs in I/O, then printf will depend on
  76. udivmoddi4, which will depend on the exception unwind routines,
  77. which will depend on abort, which is defined in libc. */
  78. #undef LINK_GCC_C_SEQUENCE_SPEC
  79. #define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %{!nolibc:%L} --end-group"