diff options
author | Abseil Team <absl-team@google.com> | 2019-07-02 12:50:48 -0700 |
---|---|---|
committer | Mark Barolak <mbar@google.com> | 2019-07-02 17:23:45 -0400 |
commit | e6b050212c859fbaf67abac76105da10ec348274 (patch) | |
tree | 820bfd57d6117171e84089e6ff23d6333bb79c43 /absl/debugging/symbolize_elf.inc | |
parent | c964fcffac27bd4a9ff67fe393410dd1146ef8b8 (diff) |
Export of internal Abseil changes.
--
c2e2e2b21c3fe59b63279e7418c93c7289ee3e27 by Mark Barolak <mbar@google.com>:
Import of CCTZ from GitHub.
PiperOrigin-RevId: 256220326
--
3996b01f0c3eb60f72825b154dce8019b6215f1d by Derek Mauro <dmauro@google.com>:
Add GCC 4.9 test script. This will become our new minumum version and
GCC 4.8 will be removed soon.
PiperOrigin-RevId: 256160891
--
2c13aa44bc8e497ebae9abe8b8adf73c2152622d by Abseil Team <absl-team@google.com>:
[Trivial] tweak flat_hash_map.h doc comment
The comment is probably right both ways, but the lack of an "if" here seemed jarring to me.
PiperOrigin-RevId: 256089069
--
16bc03b9b30fbf08d7dc61025fa8ec4b57077be8 by Abseil Team <absl-team@google.com>:
Fix symbolization for elf files whose SYMTAB section is stripped, but have a DYNSYM section.
Previously, if we did not find a SYMTAB section, we would bail out of symbolization early, rather than checking the DYNSYM section.
PiperOrigin-RevId: 256061954
--
4c60ee329b1eeb0b0d10c4f76f282e5fbae2c5b2 by Derek Mauro <dmauro@google.com>:
Update to LLVM r363242 and Bazel 0.27.0
PiperOrigin-RevId: 256024405
--
18e1ba970d33f122026803d8ca90035b9088949d by Eric Fiselier <ericwf@google.com>:
Disable variant tests that break with P0608R3
PiperOrigin-RevId: 255975764
--
0a89858464977e86096b62476faa3b64eb94aa1d by Abseil Team <absl-team@google.com>:
Internal change
PiperOrigin-RevId: 255891019
--
9b7424cac66f5407f0ed74ed288bf3099a4fa330 by CJ Johnson <johnsoncj@google.com>:
Updates the implementation of InlinedVector::insert(...) to be exception safe and adds an exception safety tests for insert(...)
PiperOrigin-RevId: 255881809
--
1288f4ba3883c510d92b09437fb8b051c19aa241 by CJ Johnson <johnsoncj@google.com>:
Updates the implementation of InlinedVector::insert(...) to be exception safe and adds an exception safety tests for insert(...)
PiperOrigin-RevId: 255875277
--
39c04f3621491eaff9e2eda619718d5b5f20fbd9 by Abseil Team <absl-team@google.com>:
Use a typedef to allow building with NVCC
Without this change NVCC fails to compile compressed_tuple.h. NVCC is relevant
because TensorFlow uses NVCC on Ubuntu and inclues abseil.
PiperOrigin-RevId: 255850176
--
e23f0309ccad69eb508ca02c9034cd4cdd740da0 by Abseil Team <absl-team@google.com>:
Internal change
PiperOrigin-RevId: 255787167
--
054aafcebf595077054164f1da3703124ab209b4 by Abseil Team <absl-team@google.com>:
Updates the ScopedAllocatorWorks test for InlinedVector to not rely on the byte count allocated by the standard library
In doing so, removes LegacyNextCapacityFrom(...) impl function from InlinedVector
Also applies clang-format to the test file
PiperOrigin-RevId: 255760356
--
eb05fc9f78e3a163c93f1866e9fe9a8ad0d01622 by Abseil Team <absl-team@google.com>:
Internal change
PiperOrigin-RevId: 255706834
--
97abb824417604c45d9fcbb3e4ff1aa3000836f2 by Jorg Brown <jorg@google.com>:
Enhance compatibility of abseil's strings package with nvcc.
PiperOrigin-RevId: 255688500
--
efc5b9c221ee31e15d10b35d31c8f3ae6eddaa8c by Abseil Team <absl-team@google.com>:
Follow CCTZ's lead and allow GetWeekday() and GetYearDay() to be
called with any civil-time type. A CivilSecond, for example, has
a weekday just as much as a CivilDay does.
PiperOrigin-RevId: 255659840
--
a75acbe954457919d8c6c8f4c2339b543760b375 by Derek Mauro <dmauro@google.com>:
Increase the timeout of randen_engine_test.
It seems to timeout under TSAN often enough to justify the increase.
PiperOrigin-RevId: 255628086
--
160976ba47c7c6eb57af08e21f8eb640aa51e91b by Derek Mauro <dmauro@google.com>:
Update CMake documentation
Fixes https://github.com/abseil/abseil-cpp/issues/332
PiperOrigin-RevId: 255607313
GitOrigin-RevId: c2e2e2b21c3fe59b63279e7418c93c7289ee3e27
Change-Id: Iba4ac7ed23cbcdb22965b4958601f689be92cda4
Diffstat (limited to 'absl/debugging/symbolize_elf.inc')
-rw-r--r-- | absl/debugging/symbolize_elf.inc | 48 |
1 files changed, 19 insertions, 29 deletions
diff --git a/absl/debugging/symbolize_elf.inc b/absl/debugging/symbolize_elf.inc index 5ac7ff5d..e7305213 100644 --- a/absl/debugging/symbolize_elf.inc +++ b/absl/debugging/symbolize_elf.inc @@ -762,37 +762,27 @@ FindSymbolResult Symbolizer::GetSymbolFromObjectFile( } } - // Consult a regular symbol table first. - if (!GetSectionHeaderByType(obj.fd, obj.elf_header.e_shnum, - obj.elf_header.e_shoff, SHT_SYMTAB, &symtab, - tmp_buf, tmp_buf_size)) { - return SYMBOL_NOT_FOUND; - } - if (!ReadFromOffsetExact( - obj.fd, &strtab, sizeof(strtab), - obj.elf_header.e_shoff + symtab.sh_link * sizeof(symtab))) { - return SYMBOL_NOT_FOUND; - } - const FindSymbolResult rc = - FindSymbol(pc, obj.fd, out, out_size, relocation, &strtab, &symtab, - opd_ptr, tmp_buf, tmp_buf_size); - if (rc != SYMBOL_NOT_FOUND) { - return rc; // Found the symbol in a regular symbol table. + // Consult a regular symbol table, then fall back to the dynamic symbol table. + for (const auto symbol_table_type : {SHT_SYMTAB, SHT_DYNSYM}) { + if (!GetSectionHeaderByType(obj.fd, obj.elf_header.e_shnum, + obj.elf_header.e_shoff, symbol_table_type, + &symtab, tmp_buf, tmp_buf_size)) { + continue; + } + if (!ReadFromOffsetExact( + obj.fd, &strtab, sizeof(strtab), + obj.elf_header.e_shoff + symtab.sh_link * sizeof(symtab))) { + continue; + } + const FindSymbolResult rc = + FindSymbol(pc, obj.fd, out, out_size, relocation, &strtab, &symtab, + opd_ptr, tmp_buf, tmp_buf_size); + if (rc != SYMBOL_NOT_FOUND) { + return rc; + } } - // If the symbol is not found, then consult a dynamic symbol table. - if (!GetSectionHeaderByType(obj.fd, obj.elf_header.e_shnum, - obj.elf_header.e_shoff, SHT_DYNSYM, &symtab, - tmp_buf, tmp_buf_size)) { - return SYMBOL_NOT_FOUND; - } - if (!ReadFromOffsetExact( - obj.fd, &strtab, sizeof(strtab), - obj.elf_header.e_shoff + symtab.sh_link * sizeof(symtab))) { - return SYMBOL_NOT_FOUND; - } - return FindSymbol(pc, obj.fd, out, out_size, relocation, &strtab, &symtab, - opd_ptr, tmp_buf, tmp_buf_size); + return SYMBOL_NOT_FOUND; } namespace { |