update tracy from 11.0 to 13.1 and fix build with tracy enabled
This commit is contained in:
@@ -75,7 +75,7 @@ namespace tracy
|
||||
{
|
||||
|
||||
#ifdef TRACY_DEBUGINFOD
|
||||
int GetDebugInfoDescriptor( const char* buildid_data, size_t buildid_size );
|
||||
int GetDebugInfoDescriptor( const char* buildid_data, size_t buildid_size, const char* filename );
|
||||
#endif
|
||||
|
||||
#if !defined(HAVE_DECL_STRNLEN) || !HAVE_DECL_STRNLEN
|
||||
@@ -643,7 +643,7 @@ elf_symbol_search (const void *vkey, const void *ventry)
|
||||
|
||||
static int
|
||||
elf_initialize_syminfo (struct backtrace_state *state,
|
||||
uintptr_t base_address,
|
||||
struct libbacktrace_base_address base_address,
|
||||
const unsigned char *symtab_data, size_t symtab_size,
|
||||
const unsigned char *strtab, size_t strtab_size,
|
||||
backtrace_error_callback error_callback,
|
||||
@@ -709,7 +709,8 @@ elf_initialize_syminfo (struct backtrace_state *state,
|
||||
= *(const b_elf_addr *) (opd->data + (sym->st_value - opd->addr));
|
||||
else
|
||||
elf_symbols[j].address = sym->st_value;
|
||||
elf_symbols[j].address += base_address;
|
||||
elf_symbols[j].address =
|
||||
libbacktrace_add_base (elf_symbols[j].address, base_address);
|
||||
elf_symbols[j].size = sym->st_size;
|
||||
++j;
|
||||
}
|
||||
@@ -1200,14 +1201,7 @@ elf_fetch_bits_backward (const unsigned char **ppin,
|
||||
val = *pval;
|
||||
|
||||
if (unlikely (pin <= pinend))
|
||||
{
|
||||
if (bits == 0)
|
||||
{
|
||||
elf_uncompress_failed ();
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
return 1;
|
||||
|
||||
pin -= 4;
|
||||
|
||||
@@ -5712,10 +5706,10 @@ elf_uncompress_lzma_block (const unsigned char *compressed,
|
||||
/* Block header CRC. */
|
||||
computed_crc = elf_crc32 (0, compressed + block_header_offset,
|
||||
block_header_size - 4);
|
||||
stream_crc = (compressed[off]
|
||||
| (compressed[off + 1] << 8)
|
||||
| (compressed[off + 2] << 16)
|
||||
| (compressed[off + 3] << 24));
|
||||
stream_crc = ((uint32_t)compressed[off]
|
||||
| ((uint32_t)compressed[off + 1] << 8)
|
||||
| ((uint32_t)compressed[off + 2] << 16)
|
||||
| ((uint32_t)compressed[off + 3] << 24));
|
||||
if (unlikely (computed_crc != stream_crc))
|
||||
{
|
||||
elf_uncompress_failed ();
|
||||
@@ -6222,10 +6216,10 @@ elf_uncompress_lzma_block (const unsigned char *compressed,
|
||||
return 0;
|
||||
}
|
||||
computed_crc = elf_crc32 (0, uncompressed, uncompressed_offset);
|
||||
stream_crc = (compressed[off]
|
||||
| (compressed[off + 1] << 8)
|
||||
| (compressed[off + 2] << 16)
|
||||
| (compressed[off + 3] << 24));
|
||||
stream_crc = ((uint32_t)compressed[off]
|
||||
| ((uint32_t)compressed[off + 1] << 8)
|
||||
| ((uint32_t)compressed[off + 2] << 16)
|
||||
| ((uint32_t)compressed[off + 3] << 24));
|
||||
if (computed_crc != stream_crc)
|
||||
{
|
||||
elf_uncompress_failed ();
|
||||
@@ -6325,10 +6319,10 @@ elf_uncompress_lzma (struct backtrace_state *state,
|
||||
|
||||
/* Next comes a CRC of the stream flags. */
|
||||
computed_crc = elf_crc32 (0, compressed + 6, 2);
|
||||
stream_crc = (compressed[8]
|
||||
| (compressed[9] << 8)
|
||||
| (compressed[10] << 16)
|
||||
| (compressed[11] << 24));
|
||||
stream_crc = ((uint32_t)compressed[8]
|
||||
| ((uint32_t)compressed[9] << 8)
|
||||
| ((uint32_t)compressed[10] << 16)
|
||||
| ((uint32_t)compressed[11] << 24));
|
||||
if (unlikely (computed_crc != stream_crc))
|
||||
{
|
||||
elf_uncompress_failed ();
|
||||
@@ -6369,10 +6363,10 @@ elf_uncompress_lzma (struct backtrace_state *state,
|
||||
|
||||
/* Before that is a footer CRC. */
|
||||
computed_crc = elf_crc32 (0, compressed + offset, 6);
|
||||
stream_crc = (compressed[offset - 4]
|
||||
| (compressed[offset - 3] << 8)
|
||||
| (compressed[offset - 2] << 16)
|
||||
| (compressed[offset - 1] << 24));
|
||||
stream_crc = ((uint32_t)compressed[offset - 4]
|
||||
| ((uint32_t)compressed[offset - 3] << 8)
|
||||
| ((uint32_t)compressed[offset - 2] << 16)
|
||||
| ((uint32_t)compressed[offset - 1] << 24));
|
||||
if (unlikely (computed_crc != stream_crc))
|
||||
{
|
||||
elf_uncompress_failed ();
|
||||
@@ -6428,10 +6422,10 @@ elf_uncompress_lzma (struct backtrace_state *state,
|
||||
/* Next is a CRC of the index. */
|
||||
computed_crc = elf_crc32 (0, compressed + index_offset,
|
||||
offset - index_offset);
|
||||
stream_crc = (compressed[offset]
|
||||
| (compressed[offset + 1] << 8)
|
||||
| (compressed[offset + 2] << 16)
|
||||
| (compressed[offset + 3] << 24));
|
||||
stream_crc = ((uint32_t)compressed[offset]
|
||||
| ((uint32_t)compressed[offset + 1] << 8)
|
||||
| ((uint32_t)compressed[offset + 2] << 16)
|
||||
| ((uint32_t)compressed[offset + 3] << 24));
|
||||
if (unlikely (computed_crc != stream_crc))
|
||||
{
|
||||
elf_uncompress_failed ();
|
||||
@@ -6524,7 +6518,8 @@ backtrace_uncompress_lzma (struct backtrace_state *state,
|
||||
static int
|
||||
elf_add (struct backtrace_state *state, const char *filename, int descriptor,
|
||||
const unsigned char *memory, size_t memory_size,
|
||||
uintptr_t base_address, struct elf_ppc64_opd_data *caller_opd,
|
||||
struct libbacktrace_base_address base_address,
|
||||
struct elf_ppc64_opd_data *caller_opd,
|
||||
backtrace_error_callback error_callback, void *data,
|
||||
fileline *fileline_fn, int *found_sym, int *found_dwarf,
|
||||
struct dwarf_data **fileline_entry, int exe, int debuginfo,
|
||||
@@ -6867,7 +6862,8 @@ elf_add (struct backtrace_state *state, const char *filename, int descriptor,
|
||||
}
|
||||
}
|
||||
|
||||
if (!gnu_debugdata_view_valid
|
||||
if (!debuginfo
|
||||
&& !gnu_debugdata_view_valid
|
||||
&& strcmp (name, ".gnu_debugdata") == 0)
|
||||
{
|
||||
if (!elf_get_view (state, descriptor, memory, memory_size,
|
||||
@@ -7425,6 +7421,7 @@ phdr_callback (struct PhdrIterate *info, void *pdata)
|
||||
const char *filename;
|
||||
int descriptor;
|
||||
int does_not_exist;
|
||||
struct libbacktrace_base_address base_address;
|
||||
fileline elf_fileline_fn;
|
||||
int found_dwarf;
|
||||
|
||||
@@ -7454,7 +7451,8 @@ phdr_callback (struct PhdrIterate *info, void *pdata)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (elf_add (pd->state, filename, descriptor, NULL, 0, info->dlpi_addr, NULL,
|
||||
base_address.m = info->dlpi_addr;
|
||||
if (elf_add (pd->state, filename, descriptor, NULL, 0, base_address, NULL,
|
||||
pd->error_callback, pd->data, &elf_fileline_fn, pd->found_sym,
|
||||
&found_dwarf, NULL, 0, 0, NULL, 0))
|
||||
{
|
||||
@@ -7543,11 +7541,21 @@ backtrace_initialize (struct backtrace_state *state, const char *filename,
|
||||
fileline elf_fileline_fn = elf_nodebug;
|
||||
struct phdr_data pd;
|
||||
|
||||
ret = elf_add (state, filename, descriptor, NULL, 0, 0, NULL, error_callback,
|
||||
data, &elf_fileline_fn, &found_sym, &found_dwarf, NULL, 1, 0,
|
||||
NULL, 0);
|
||||
if (!ret)
|
||||
return 0;
|
||||
|
||||
/* When using fdpic we must use dl_iterate_phdr for all modules, including
|
||||
the main executable, so that we can get the right base address
|
||||
mapping. */
|
||||
if (!libbacktrace_using_fdpic ())
|
||||
{
|
||||
struct libbacktrace_base_address zero_base_address;
|
||||
|
||||
memset (&zero_base_address, 0, sizeof zero_base_address);
|
||||
ret = elf_add (state, filename, descriptor, NULL, 0, zero_base_address,
|
||||
NULL, error_callback, data, &elf_fileline_fn, &found_sym,
|
||||
&found_dwarf, NULL, 1, 0, NULL, 0);
|
||||
if (!ret)
|
||||
return 0;
|
||||
}
|
||||
|
||||
pd.state = state;
|
||||
pd.error_callback = error_callback;
|
||||
|
||||
Reference in New Issue
Block a user