| /* codeview.h - CodeView debug support | |
| Copyright (C) 2022-2024 Free Software Foundation, Inc. | |
| This file is part of GAS, the GNU Assembler. | |
| GAS is free software; you can redistribute it and/or modify | |
| it under the terms of the GNU General Public License as published by | |
| the Free Software Foundation; either version 3, or (at your option) | |
| any later version. | |
| GAS is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| GNU General Public License for more details. | |
| You should have received a copy of the GNU General Public License | |
| along with GAS; see the file COPYING. If not, write to the Free | |
| Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA | |
| 02110-1301, USA. */ | |
| /* Header files referred to below can be found in Microsoft's PDB | |
| repository: https://github.com/microsoft/microsoft-pdb. */ | |
| #ifndef GAS_CODEVIEW_H | |
| #define GAS_CODEVIEW_H | |
| #define CV_SIGNATURE_C13 4 | |
| #define DEBUG_S_SYMBOLS 0xf1 | |
| #define DEBUG_S_LINES 0xf2 | |
| #define DEBUG_S_STRINGTABLE 0xf3 | |
| #define DEBUG_S_FILECHKSMS 0xf4 | |
| #define S_OBJNAME 0x1101 | |
| #define S_COMPILE3 0x113c | |
| #define CV_CFL_MASM 0x03 | |
| #define CV_CFL_80386 0x03 | |
| #define CV_CFL_X64 0xD0 | |
| #define CV_CFL_ARM64 0xF6 | |
| #define CHKSUM_TYPE_MD5 1 | |
| /* OBJNAMESYM in cvinfo.h */ | |
| struct OBJNAMESYM | |
| { | |
| uint16_t length; | |
| uint16_t type; | |
| uint32_t signature; | |
| }; | |
| /* COMPILESYM3 in cvinfo.h */ | |
| struct COMPILESYM3 | |
| { | |
| uint16_t length; | |
| uint16_t type; | |
| uint32_t flags; | |
| uint16_t machine; | |
| uint16_t frontend_major; | |
| uint16_t frontend_minor; | |
| uint16_t frontend_build; | |
| uint16_t frontend_qfe; | |
| uint16_t backend_major; | |
| uint16_t backend_minor; | |
| uint16_t backend_build; | |
| uint16_t backend_qfe; | |
| } ATTRIBUTE_PACKED; | |
| /* filedata in dumpsym7.cpp */ | |
| struct file_checksum | |
| { | |
| uint32_t file_id; | |
| uint8_t checksum_length; | |
| uint8_t checksum_type; | |
| } ATTRIBUTE_PACKED; | |
| /* CV_DebugSLinesHeader_t in cvinfo.h */ | |
| struct cv_lines_header | |
| { | |
| uint32_t offset; | |
| uint16_t section; | |
| uint16_t flags; | |
| uint32_t length; | |
| }; | |
| /* CV_DebugSLinesFileBlockHeader_t in cvinfo.h */ | |
| struct cv_lines_block | |
| { | |
| uint32_t file_id; | |
| uint32_t num_lines; | |
| uint32_t length; | |
| }; | |
| /* CV_Line_t in cvinfo.h */ | |
| struct cv_line | |
| { | |
| uint32_t offset; | |
| uint32_t line_no; | |
| }; | |
| extern void codeview_finish (void); | |
| extern void codeview_generate_asm_lineno (void); | |
| #endif |