comparison libgcc/unwind-dw2.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 84e7813d76e9
children
comparison
equal deleted inserted replaced
131:84e7813d76e9 145:1830386684a0
1 /* DWARF2 exception handling and frame unwind runtime interface routines. 1 /* DWARF2 exception handling and frame unwind runtime interface routines.
2 Copyright (C) 1997-2018 Free Software Foundation, Inc. 2 Copyright (C) 1997-2020 Free Software Foundation, Inc.
3 3
4 This file is part of GCC. 4 This file is part of GCC.
5 5
6 GCC is free software; you can redistribute it and/or modify it 6 GCC is free software; you can redistribute it and/or modify it
7 under the terms of the GNU General Public License as published by 7 under the terms of the GNU General Public License as published by
134 struct dwarf_eh_bases bases; 134 struct dwarf_eh_bases bases;
135 /* Signal frame context. */ 135 /* Signal frame context. */
136 #define SIGNAL_FRAME_BIT ((~(_Unwind_Word) 0 >> 1) + 1) 136 #define SIGNAL_FRAME_BIT ((~(_Unwind_Word) 0 >> 1) + 1)
137 /* Context which has version/args_size/by_value fields. */ 137 /* Context which has version/args_size/by_value fields. */
138 #define EXTENDED_CONTEXT_BIT ((~(_Unwind_Word) 0 >> 2) + 1) 138 #define EXTENDED_CONTEXT_BIT ((~(_Unwind_Word) 0 >> 2) + 1)
139 /* Bit reserved on AArch64, return address has been signed with A key. */ 139 /* Bit reserved on AArch64, return address has been signed with A or B
140 #define RA_A_SIGNED_BIT ((~(_Unwind_Word) 0 >> 3) + 1) 140 key. */
141 #define RA_SIGNED_BIT ((~(_Unwind_Word) 0 >> 3) + 1)
141 _Unwind_Word flags; 142 _Unwind_Word flags;
142 /* 0 for now, can be increased when further fields are added to 143 /* 0 for now, can be increased when further fields are added to
143 struct _Unwind_Context. */ 144 struct _Unwind_Context. */
144 _Unwind_Word version; 145 _Unwind_Word version;
145 _Unwind_Word args_size; 146 _Unwind_Word args_size;
223 { 224 {
224 int size, index; 225 int size, index;
225 _Unwind_Context_Reg_Val val; 226 _Unwind_Context_Reg_Val val;
226 227
227 #ifdef DWARF_ZERO_REG 228 #ifdef DWARF_ZERO_REG
228 if (index == DWARF_ZERO_REG) 229 if (regno == DWARF_ZERO_REG)
229 return 0; 230 return 0;
230 #endif 231 #endif
231 232
232 index = DWARF_REG_TO_UNWIND_COLUMN (regno); 233 index = DWARF_REG_TO_UNWIND_COLUMN (regno);
233 gcc_assert (index < (int) sizeof(dwarf_reg_size_table)); 234 gcc_assert (index < (int) sizeof(dwarf_reg_size_table));
500 else if (aug[0] == 'S') 501 else if (aug[0] == 'S')
501 { 502 {
502 fs->signal_frame = 1; 503 fs->signal_frame = 1;
503 aug += 1; 504 aug += 1;
504 } 505 }
506 /* aarch64 B-key pointer authentication. */
507 else if (aug[0] == 'B')
508 {
509 aug += 1;
510 }
505 511
506 /* Otherwise we have an unknown augmentation string. 512 /* Otherwise we have an unknown augmentation string.
507 Bail unless we saw a 'z' prefix. */ 513 Bail unless we saw a 'z' prefix. */
508 else 514 else
509 return ret; 515 return ret;