1  /* OS independent definitions for AMD x86-64.
       2     Copyright (C) 2001-2023 Free Software Foundation, Inc.
       3     Contributed by Bo Thorsen <bo@suse.de>.
       4  
       5  This file is part of GCC.
       6  
       7  GCC is free software; you can redistribute it and/or modify
       8  it under the terms of the GNU General Public License as published by
       9  the Free Software Foundation; either version 3, or (at your option)
      10  any later version.
      11  
      12  GCC is distributed in the hope that it will be useful,
      13  but WITHOUT ANY WARRANTY; without even the implied warranty of
      14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      15  GNU General Public License for more details.
      16  
      17  Under Section 7 of GPL version 3, you are granted additional
      18  permissions described in the GCC Runtime Library Exception, version
      19  3.1, as published by the Free Software Foundation.
      20  
      21  You should have received a copy of the GNU General Public License and
      22  a copy of the GCC Runtime Library Exception along with this program;
      23  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
      24  <http://www.gnu.org/licenses/>.  */
      25  
      26  #undef ASM_COMMENT_START
      27  #define ASM_COMMENT_START "#"
      28  
      29  #undef DEBUGGER_REGNO
      30  #define DEBUGGER_REGNO(n) \
      31    (TARGET_64BIT ? debugger64_register_map[n] : svr4_debugger_register_map[n])
      32  
      33  /* Output assembler code to FILE to call the profiler.  */
      34  #define NO_PROFILE_COUNTERS 1
      35  
      36  #undef MCOUNT_NAME
      37  #define MCOUNT_NAME "mcount"
      38  
      39  #undef SIZE_TYPE
      40  #define SIZE_TYPE (TARGET_LP64 ? "long unsigned int" : "unsigned int")
      41  
      42  #undef PTRDIFF_TYPE
      43  #define PTRDIFF_TYPE (TARGET_LP64 ? "long int" : "int")
      44  
      45  #undef WCHAR_TYPE
      46  #define WCHAR_TYPE "int"
      47  
      48  #undef WCHAR_TYPE_SIZE
      49  #define WCHAR_TYPE_SIZE 32
      50  
      51  #undef ASM_SPEC
      52  #define ASM_SPEC "%{m16|m32:--32} %{m64:--64} %{mx32:--x32}"
      53  
      54  #undef ASM_OUTPUT_ALIGNED_BSS
      55  #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
      56    x86_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
      57  
      58  #undef  ASM_OUTPUT_ALIGNED_DECL_COMMON
      59  #define ASM_OUTPUT_ALIGNED_DECL_COMMON(FILE, DECL, NAME, SIZE, ALIGN)		\
      60    x86_elf_aligned_decl_common (FILE, DECL, NAME, SIZE, ALIGN);
      61  
      62  #undef  ASM_OUTPUT_ALIGNED_DECL_LOCAL
      63  #define ASM_OUTPUT_ALIGNED_DECL_LOCAL(FILE, DECL, NAME, SIZE, ALIGN)  \
      64    do								      \
      65      {								      \
      66        fprintf ((FILE), "%s", LOCAL_ASM_OP);			      \
      67        assemble_name ((FILE), (NAME));				      \
      68        fprintf ((FILE), "\n");					      \
      69        ASM_OUTPUT_ALIGNED_DECL_COMMON (FILE, DECL, NAME, SIZE, ALIGN); \
      70      }								      \
      71    while (0)
      72  
      73  #define SUBALIGN_LOG 3
      74  
      75  /* i386 System V Release 4 uses DWARF debugging info.
      76     x86-64 ABI specifies DWARF2.  */
      77  
      78  #define DWARF2_DEBUGGING_INFO 1
      79  #define DWARF2_UNWIND_INFO 1
      80  
      81  #undef PREFERRED_DEBUGGING_TYPE
      82  #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
      83  
      84  #undef TARGET_ASM_SELECT_SECTION
      85  #define TARGET_ASM_SELECT_SECTION  x86_64_elf_select_section
      86  
      87  #undef TARGET_ASM_UNIQUE_SECTION
      88  #define TARGET_ASM_UNIQUE_SECTION  x86_64_elf_unique_section
      89  
      90  #undef TARGET_SECTION_TYPE_FLAGS
      91  #define TARGET_SECTION_TYPE_FLAGS  x86_64_elf_section_type_flags