aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/or1k
diff options
context:
space:
mode:
authorStafford Horne <shorne@gmail.com>2021-10-28 06:54:05 +0900
committerStafford Horne <shorne@gmail.com>2021-10-29 05:31:38 +0900
commit308531d148afa3fd77c0efc82a80b26300f9615a (patch)
tree30d637161691dd33fee4ee2d2a0a7c3e2f87878f /gcc/config/or1k
parent6123b998b185572abac7d7224b34f03955bb91a2 (diff)
downloadgcc-308531d148afa3fd77c0efc82a80b26300f9615a.zip
gcc-308531d148afa3fd77c0efc82a80b26300f9615a.tar.gz
gcc-308531d148afa3fd77c0efc82a80b26300f9615a.tar.bz2
or1k: Add return address argument to _mcount call
This fixes an issue in the glibc port I am working on where the build fails due to the warning: error: calling ‘__builtin_return_address’ with a nonzero argument is unsafe [-Werror=frame-address] This is due to how the current implementation of _mcount in glibc uses __builtin_return_address with a count argument of 1. Fix that by passing the value of LR_REGNUM to the _mcount function, effectivtly providing the value _mcount is after. This is an ABI change, but I think it's OK because the glibc port for or1k is not yet upstreamed. Also, I think just adding an argument should not break anything anyway. gcc/ChangeLog: * config/or1k/or1k.h (PROFILE_HOOK): Add return address argument to _mcount.
Diffstat (limited to 'gcc/config/or1k')
-rw-r--r--gcc/config/or1k/or1k.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/config/or1k/or1k.h b/gcc/config/or1k/or1k.h
index 669907e..8a529f4 100644
--- a/gcc/config/or1k/or1k.h
+++ b/gcc/config/or1k/or1k.h
@@ -394,9 +394,10 @@ do { \
profiling a function entry. */
#define PROFILE_HOOK(LABEL) \
{ \
- rtx fun; \
+ rtx fun, ra; \
+ ra = get_hard_reg_initial_val (Pmode, LR_REGNUM); \
fun = gen_rtx_SYMBOL_REF (Pmode, "_mcount"); \
- emit_library_call (fun, LCT_NORMAL, VOIDmode); \
+ emit_library_call (fun, LCT_NORMAL, VOIDmode, ra, Pmode); \
}
/* All the work is done in PROFILE_HOOK, but this is still required. */