diff options
author | Felix Willgerodt <felix.willgerodt@intel.com> | 2021-04-08 09:16:15 +0200 |
---|---|---|
committer | Felix Willgerodt <felix.willgerodt@intel.com> | 2021-04-08 09:19:57 +0200 |
commit | 16e311ab6d4d379da18ad03bc5373f621f488f41 (patch) | |
tree | afa98eda1ca8835ff0f8181b360777be8fab8451 /gdb/amd64-tdep.c | |
parent | fbb3bcfcd8810ecf25a47e71c2f7d46d7a74a6be (diff) | |
download | fsf-binutils-gdb-16e311ab6d4d379da18ad03bc5373f621f488f41.zip fsf-binutils-gdb-16e311ab6d4d379da18ad03bc5373f621f488f41.tar.gz fsf-binutils-gdb-16e311ab6d4d379da18ad03bc5373f621f488f41.tar.bz2 |
gdb: Allow prologue detection via symbols for Intel compilers.
The next-gen Intel Fortran compiler isn't flang-based, but emits
prologue_end in the same manner. As do the newer Intel C/C++ compilers.
This allows prologue detection based on dwarf for all newer Intel compilers.
The cut-off version was not chosen for any specific reason other than the
effort to test this.
gdb/Changelog:
2021-04-08 Felix Willgerodt <felix.willgerodt@intel.com>
* i386-tdep.c (i386_skip_prologue): Use symbol table to find the
prologue end for Intel compilers.
* amd64-tdep.c (amd64_skip_prologue): Likewise.
* producer.c (producer_is_icc_ge_19): New function.
* producer.h (producer_is_icc_ge_19): New declaration.
Diffstat (limited to 'gdb/amd64-tdep.c')
-rw-r--r-- | gdb/amd64-tdep.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c index 47d0063..66a7c02 100644 --- a/gdb/amd64-tdep.c +++ b/gdb/amd64-tdep.c @@ -2527,13 +2527,14 @@ amd64_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc) struct compunit_symtab *cust = find_pc_compunit_symtab (func_addr); /* LLVM backend (Clang/Flang) always emits a line note before the - prologue and another one after. We trust clang to emit usable - line notes. */ + prologue and another one after. We trust clang and newer Intel + compilers to emit usable line notes. */ if (post_prologue_pc && (cust != NULL && COMPUNIT_PRODUCER (cust) != NULL - && producer_is_llvm (COMPUNIT_PRODUCER (cust)))) - return std::max (start_pc, post_prologue_pc); + && (producer_is_llvm (COMPUNIT_PRODUCER (cust)) + || producer_is_icc_ge_19 (COMPUNIT_PRODUCER (cust))))) + return std::max (start_pc, post_prologue_pc); } amd64_init_frame_cache (&cache); |