#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "libdwelfP.h"
ssize_t
dwelf_dwarf_gnu_debugaltlink (Dwarf *dwarf,
const char **name_p,
const void **build_idp)
{
Elf_Data *data = dwarf->sectiondata[IDX_gnu_debugaltlink];
if (data == NULL)
{
return 0;
}
const void *ptr = memchr (data->d_buf, '\0', data->d_size);
if (ptr == NULL)
{
__libdw_seterrno (DWARF_E_INVALID_ELF);
return -1;
}
size_t build_id_len = data->d_size - (ptr - data->d_buf + 1);
if (build_id_len == 0 || (size_t) (ssize_t) build_id_len != build_id_len)
{
__libdw_seterrno (DWARF_E_INVALID_ELF);
return -1;
}
*name_p = data->d_buf;
*build_idp = ptr + 1;
return build_id_len;
}
INTDEF(dwelf_dwarf_gnu_debugaltlink)