1 /* OS independent definitions for AMD x86-64. 2 Copyright (C) 2001-2021 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 DBX_REGISTER_NUMBER 30 #define DBX_REGISTER_NUMBER(n) \ 31 (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_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 /* This is used to align code labels according to Intel recommendations. */ 74 75 #define SUBALIGN_LOG 3 76 77 #ifdef HAVE_GAS_MAX_SKIP_P2ALIGN 78 #define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \ 79 do { \ 80 if ((LOG) != 0) { \ 81 if ((MAX_SKIP) == 0 || (MAX_SKIP) >= (1 << (LOG)) - 1) \ 82 fprintf ((FILE), "\t.p2align %d\n", (LOG)); \ 83 else \ 84 fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \ 85 } \ 86 } while (0) 87 #undef ASM_OUTPUT_MAX_SKIP_PAD 88 #define ASM_OUTPUT_MAX_SKIP_PAD(FILE, LOG, MAX_SKIP) \ 89 if ((LOG) != 0) \ 90 { \ 91 if ((MAX_SKIP) == 0 || (MAX_SKIP) >= (1 << (LOG)) - 1) \ 92 fprintf ((FILE), "\t.p2align %d\n", (LOG)); \ 93 else \ 94 fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \ 95 } 96 #endif 97 98 99 /* i386 System V Release 4 uses DWARF debugging info. 100 x86-64 ABI specifies DWARF2. */ 101 102 #define DWARF2_DEBUGGING_INFO 1 103 #define DWARF2_UNWIND_INFO 1 104 105 #undef PREFERRED_DEBUGGING_TYPE 106 #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG 107 108 #undef TARGET_ASM_SELECT_SECTION 109 #define TARGET_ASM_SELECT_SECTION x86_64_elf_select_section 110 111 #undef TARGET_ASM_UNIQUE_SECTION 112 #define TARGET_ASM_UNIQUE_SECTION x86_64_elf_unique_section 113 114 #undef TARGET_SECTION_TYPE_FLAGS 115 #define TARGET_SECTION_TYPE_FLAGS x86_64_elf_section_type_flags 116