From: Stafford Horne Date: Mon, 14 Oct 2019 06:14:20 +0000 (+0900) Subject: or1k: Implement profile hook calling _mcount X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8cba7cb3202da8b83e4b90280bc42472e110c0d4;p=gcc.git or1k: Implement profile hook calling _mcount Defining this to not abort as found when working on running tests in the glibc test suite. We implement this with a call to _mcount with no arguments. The required return address's will be pulled from the stack. Passing the LR (r9) as an argument had problems as sometimes r9 is clobbered by the GOT logic in the prologue before the call to _mcount. gcc/ChangeLog: * config/or1k/or1k.h (NO_PROFILE_COUNTERS): Define as 1. (PROFILE_HOOK): Define to call _mcount. (FUNCTION_PROFILER): Change from abort to no-op. --- diff --git a/gcc/config/or1k/or1k.h b/gcc/config/or1k/or1k.h index ab1c4bbd2a7..dc579e4a388 100644 --- a/gcc/config/or1k/or1k.h +++ b/gcc/config/or1k/or1k.h @@ -379,8 +379,19 @@ do { \ /* Always pass the SYMBOL_REF for direct calls to the expanders. */ #define NO_FUNCTION_CSE 1 -/* Profiling */ -#define FUNCTION_PROFILER(FILE,LABELNO) (abort (), 0) +#define NO_PROFILE_COUNTERS 1 + +/* Emit rtl for profiling. Output assembler code to call "_mcount" for + profiling a function entry. */ +#define PROFILE_HOOK(LABEL) \ + { \ + rtx fun; \ + fun = gen_rtx_SYMBOL_REF (Pmode, "_mcount"); \ + emit_library_call (fun, LCT_NORMAL, VOIDmode); \ + } + +/* All the work is done in PROFILE_HOOK, but this is still required. */ +#define FUNCTION_PROFILER(STREAM, LABELNO) do { } while (0) /* Dwarf 2 Support */ #define DWARF2_DEBUGGING_INFO 1