1/* DWARF DWZ handling for GDB.
2
3   Copyright (C) 2003-2020 Free Software Foundation, Inc.
4
5   This file is part of GDB.
6
7   This program 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 of the License, or
10   (at your option) any later version.
11
12   This program 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   You should have received a copy of the GNU General Public License
18   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20#include "defs.h"
21#include "dwarf2/dwz.h"
22
23const char *
24dwz_file::read_string (struct objfile *objfile, LONGEST str_offset)
25{
26  str.read (objfile);
27
28  if (str.buffer == NULL)
29    error (_("DW_FORM_GNU_strp_alt used without .debug_str "
30	     "section [in module %s]"),
31	   bfd_get_filename (dwz_bfd.get ()));
32  if (str_offset >= str.size)
33    error (_("DW_FORM_GNU_strp_alt pointing outside of "
34	     ".debug_str section [in module %s]"),
35	   bfd_get_filename (dwz_bfd.get ()));
36  gdb_assert (HOST_CHAR_BIT == 8);
37  if (str.buffer[str_offset] == '\0')
38    return NULL;
39  return (const char *) (str.buffer + str_offset);
40}
41