diff options
author | Tamas Berghammer <tberghammer@google.com> | 2016-02-10 10:43:34 +0000 |
---|---|---|
committer | Tamas Berghammer <tberghammer@google.com> | 2016-02-10 10:43:34 +0000 |
commit | ed844cbc0f5b9391314edb7d34ea71a060b0faa2 (patch) | |
tree | 6677726dba2faf02b4813d3e5eb4d47740c31620 /lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp | |
parent | 10e9923841a993978e3acf13bb7b0f893a118b81 (diff) | |
download | bcm5719-llvm-ed844cbc0f5b9391314edb7d34ea71a060b0faa2.tar.gz bcm5719-llvm-ed844cbc0f5b9391314edb7d34ea71a060b0faa2.zip |
Improve the handling of missing elf symtab and missing symbol sizes
* Generate artificial symbol names from eh_fame during symbol parsing
so these symbols are already present when we calcualte the size of
the symbols where 0 is specified.
* Fix symbol size calculation for the last symbol in the file where
it have to last until the end of the parent section.
Differential revision: http://reviews.llvm.org/D16996
llvm-svn: 260369
Diffstat (limited to 'lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp')
-rw-r--r-- | lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp index c9f209e2c0f..5491775db2f 100644 --- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp +++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp @@ -4517,7 +4517,6 @@ ObjectFileMachO::ParseSymtab () if (function_starts_count > 0) { - char synthetic_function_symbol[PATH_MAX]; uint32_t num_synthetic_function_symbols = 0; for (i=0; i<function_starts_count; ++i) { @@ -4532,7 +4531,6 @@ ObjectFileMachO::ParseSymtab () num_syms = sym_idx + num_synthetic_function_symbols; sym = symtab->Resize (num_syms); } - uint32_t synthetic_function_symbol_idx = 0; for (i=0; i<function_starts_count; ++i) { const FunctionStarts::Entry *func_start_entry = function_starts.GetEntryAtIndex (i); @@ -4567,13 +4565,8 @@ ObjectFileMachO::ParseSymtab () { symbol_byte_size = section_end_file_addr - symbol_file_addr; } - snprintf (synthetic_function_symbol, - sizeof(synthetic_function_symbol), - "___lldb_unnamed_function%u$$%s", - ++synthetic_function_symbol_idx, - module_sp->GetFileSpec().GetFilename().GetCString()); sym[sym_idx].SetID (synthetic_sym_id++); - sym[sym_idx].GetMangled().SetDemangledName(ConstString(synthetic_function_symbol)); + sym[sym_idx].GetMangled().SetDemangledName(GetNextSyntheticSymbolName()); sym[sym_idx].SetType (eSymbolTypeCode); sym[sym_idx].SetIsSynthetic (true); sym[sym_idx].GetAddressRef() = symbol_addr; |