summaryrefslogtreecommitdiff
path: root/sys/arch/mips64/include
diff options
context:
space:
mode:
authorVisa Hankala <visa@cvs.openbsd.org>2019-04-19 09:19:23 +0000
committerVisa Hankala <visa@cvs.openbsd.org>2019-04-19 09:19:23 +0000
commitf690be6b981ffee6b364f8359f60d7f46cbc6a75 (patch)
treef39df8458269bc5f366e52d56ef0a4be12c1f62a /sys/arch/mips64/include
parent006c40ffca12a26e3a47be1c111f0bbff412877e (diff)
Work around a limitation of clang integrated assembler on mips64.
The assembler does not handle undeclared local symbols properly and generates R_MIPS_CALL16 relocations where it should generate local GOT references. For now, get along with the problem by declaring local symbols where necessary. OK kettenis@ guenther@
Diffstat (limited to 'sys/arch/mips64/include')
-rw-r--r--sys/arch/mips64/include/profile.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/arch/mips64/include/profile.h b/sys/arch/mips64/include/profile.h
index 4b48e1c436e..bca5942418f 100644
--- a/sys/arch/mips64/include/profile.h
+++ b/sys/arch/mips64/include/profile.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: profile.h,v 1.4 2011/03/23 16:54:36 pirofti Exp $ */
+/* $OpenBSD: profile.h,v 1.5 2019/04/19 09:19:22 visa Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -55,6 +55,7 @@
"sd $1,0($29);" \
"sd $31,8($29);" \
"move $5,$31;" \
+ ".local ___mcount;" \
"jal ___mcount;" \
"move $4,$1;" \
"ld $4,16($29);" \