/* Darwin support for GDB, the GNU debugger.
- Copyright (C) 2008-2014 Free Software Foundation, Inc.
+ Copyright (C) 2008-2015 Free Software Foundation, Inc.
Contributed by AdaCore.
#include "gdbcmd.h"
#include "gdbcore.h"
#include "mach-o.h"
-#include "gdb_assert.h"
#include "aout/stab_gnu.h"
#include "vec.h"
#include "psympriv.h"
#include "complaints.h"
#include "gdb_bfd.h"
-#include <string.h>
-
/* If non-zero displays debugging message. */
static unsigned int mach_o_debug_level = 0;
if (sym->flags & (BSF_GLOBAL | BSF_LOCAL | BSF_WEAK))
{
CORE_ADDR symaddr;
- CORE_ADDR offset;
enum minimal_symbol_type ms_type;
- offset = ANOFFSET (objfile->section_offsets,
- gdb_bfd_section_index (objfile->obfd, sym->section));
-
/* Bfd symbols are section relative. */
symaddr = sym->value + sym->section->vma;
- /* Select global/local/weak symbols. Note that bfd puts abs
- symbols in their own section, so all symbols we are
- interested in will have a section. */
- /* Relocate all non-absolute and non-TLS symbols by the
- section offset. */
- if (sym->section != bfd_abs_section_ptr
- && !(sym->section->flags & SEC_THREAD_LOCAL))
- symaddr += offset;
-
if (sym->section == bfd_abs_section_ptr)
ms_type = mst_abs;
else if (sym->section->flags & SEC_CODE)
static int
get_archive_prefix_len (const char *name)
{
- char *lparen;
+ const char *lparen;
int name_len = strlen (name);
if (name_len == 0 || name[name_len - 1] != ')')
macho_resolve_oso_sym_with_minsym (struct objfile *main_objfile, asymbol *sym)
{
/* For common symbol and global symbols, use the min symtab. */
- struct minimal_symbol *msym;
+ struct bound_minimal_symbol msym;
const char *name = sym->name;
if (name[0] == bfd_get_symbol_leading_char (main_objfile->obfd))
++name;
msym = lookup_minimal_symbol (name, NULL, main_objfile);
- if (msym == NULL)
+ if (msym.minsym == NULL)
{
warning (_("can't find symbol '%s' in minsymtab"), name);
return 0;
}
else
- return MSYMBOL_VALUE_ADDRESS (msym);
+ return BMSYMBOL_VALUE_ADDRESS (msym);
}
/* Add oso file OSO/ABFD as a symbol file. */
size_t dsym_len = strlen (DSYM_SUFFIX);
const char *base_name = lbasename (objfile_name (objfile));
size_t base_len = strlen (base_name);
- char *dsym_filename = alloca (name_len + dsym_len + base_len + 1);
+ char *dsym_filename = (char *) alloca (name_len + dsym_len + base_len + 1);
bfd *dsym_bfd;
bfd_mach_o_load_command *main_uuid;
bfd_mach_o_load_command *dsym_uuid;
const char *bfd_sect_name = osect->the_bfd_section->name;
int sect_index = osect - objfile->sections;;
- if (strncmp (bfd_sect_name, "LC_SEGMENT.", 11) == 0)
+ if (startswith (bfd_sect_name, "LC_SEGMENT."))
bfd_sect_name += 11;
if (strcmp (bfd_sect_name, "__TEXT") == 0
|| strcmp (bfd_sect_name, "__TEXT.__text") == 0)