diff options
author | Mark Harmstone <mark@harmstone.com> | 2022-10-17 00:24:19 +0100 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2022-10-20 15:22:37 +1030 |
commit | b41a65333fc89edb418d22164c275212e32b036d (patch) | |
tree | be6144ed139d96e08618f1750cedc6aaaa6edbe9 /ld/pdb.h | |
parent | f6f30f347bb97898a74e59a841982170e42bb265 (diff) | |
download | gdb-b41a65333fc89edb418d22164c275212e32b036d.zip gdb-b41a65333fc89edb418d22164c275212e32b036d.tar.gz gdb-b41a65333fc89edb418d22164c275212e32b036d.tar.bz2 |
ld: Add minimal pdb generation
Diffstat (limited to 'ld/pdb.h')
-rw-r--r-- | ld/pdb.h | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/ld/pdb.h b/ld/pdb.h new file mode 100644 index 0000000..e5f53b4 --- /dev/null +++ b/ld/pdb.h @@ -0,0 +1,111 @@ +/* pdb.h - header file for generating PDB CodeView debugging files. + Copyright (C) 2022 Free Software Foundation, Inc. + + This file is part of the GNU Binutils. + + This program 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 of the License, or + (at your option) any later version. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 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 PDB_H +#define PDB_H + +#include "sysdep.h" +#include "bfd.h" +#include <stdbool.h> + +/* PDBStream70 in pdb1.h */ +struct pdb_stream_70 +{ + uint32_t version; + uint32_t signature; + uint32_t age; + uint8_t guid[16]; +}; + +#define PDB_STREAM_VERSION_VC70 20000404 +#define PDB_STREAM_VERSION_VC140 20140508 + +/* HDR in tpi.h */ +struct pdb_tpi_stream_header +{ + uint32_t version; + uint32_t header_size; + uint32_t type_index_begin; + uint32_t type_index_end; + uint32_t type_record_bytes; + uint16_t hash_stream_index; + uint16_t hash_aux_stream_index; + uint32_t hash_key_size; + uint32_t num_hash_buckets; + uint32_t hash_value_buffer_offset; + uint32_t hash_value_buffer_length; + uint32_t index_offset_buffer_offset; + uint32_t index_offset_buffer_length; + uint32_t hash_adj_buffer_offset; + uint32_t hash_adj_buffer_length; +}; + +#define TPI_STREAM_VERSION_80 20040203 + +#define TPI_FIRST_INDEX 0x1000 + +/* NewDBIHdr in dbi.h */ +struct pdb_dbi_stream_header +{ + uint32_t version_signature; + uint32_t version_header; + uint32_t age; + uint16_t global_stream_index; + uint16_t build_number; + uint16_t public_stream_index; + uint16_t pdb_dll_version; + uint16_t sym_record_stream; + uint16_t pdb_dll_rbld; + uint32_t mod_info_size; + uint32_t section_contribution_size; + uint32_t section_map_size; + uint32_t source_info_size; + uint32_t type_server_map_size; + uint32_t mfc_type_server_index; + uint32_t optional_dbg_header_size; + uint32_t ec_substream_size; + uint16_t flags; + uint16_t machine; + uint32_t padding; +}; + +#define DBI_STREAM_VERSION_70 19990903 + +struct optional_dbg_header +{ + uint16_t fpo_stream; + uint16_t exception_stream; + uint16_t fixup_stream; + uint16_t omap_to_src_stream; + uint16_t omap_from_src_stream; + uint16_t section_header_stream; + uint16_t token_map_stream; + uint16_t xdata_stream; + uint16_t pdata_stream; + uint16_t new_fpo_stream; + uint16_t orig_section_header_stream; +}; + +extern bool create_pdb_file (bfd *, const char *, const unsigned char *); + +#endif |