Mercurial > hg > CbC > CbC_gcc
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; |