From 16e311ab6d4d379da18ad03bc5373f621f488f41 Mon Sep 17 00:00:00 2001 From: Felix Willgerodt Date: Thu, 8 Apr 2021 09:16:15 +0200 Subject: 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 * 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. --- gdb/amd64-tdep.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'gdb/amd64-tdep.c') 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); -- cgit v1.1