aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2019-09-02 01:55:55 +0000
committerKyle Evans <kevans@FreeBSD.org>2019-09-02 01:55:55 +0000
commit4b3b82a7566bda945ea28949e82ed776c31ca4d2 (patch)
tree15938e606e53401b1e5dbd6ff518da6913b396d1
parent08cfa56ea35b32be96f439c74fe6677653401e6e (diff)
downloadsrc-4b3b82a7566bda945ea28949e82ed776c31ca4d2.tar.gz
src-4b3b82a7566bda945ea28949e82ed776c31ca4d2.zip
mips: fix some mcount nits
The symbol version for _mcount was removed 12 years ago in r169525 from gmon/Symbol.map, to be added to the per-arch Symbol.map. mips was overlooked in this, so _mcount has no symver. Add it back to where it should have been, rather than where it would go if it were added today, since we're correcting a historical mistake. Additionally, _mcount is getting thrown into .mdebug.abi32 in the llvm80/90 world as it's not getting explicitly thrown into .text, so do this now. This fixes the libc build that was previously failing due to relocations in .mdebug.abi32. This is specifically due to the way clang's integrated AS works and that they emit the .mdebug.abiNN section early in the process. An LLVM bug has been submitted[0] and an agreement has been made that the mips backend should switch to .text following .mdebug.abiNN for compatibility. [0] https://bugs.llvm.org/show_bug.cgi?id=43119 Reviewed by: imp, arichardson MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D21435
Notes
Notes: svn path=/head/; revision=351681
-rw-r--r--lib/libc/mips/Symbol.map1
-rw-r--r--sys/mips/include/profile.h3
2 files changed, 3 insertions, 1 deletions
diff --git a/lib/libc/mips/Symbol.map b/lib/libc/mips/Symbol.map
index 9ee1d5fbd6a2..b66a26cd91dc 100644
--- a/lib/libc/mips/Symbol.map
+++ b/lib/libc/mips/Symbol.map
@@ -11,6 +11,7 @@ FBSD_1.0 {
/* PSEUDO syscalls */
_exit;
+ _mcount;
_setjmp;
_longjmp;
alloca;
diff --git a/sys/mips/include/profile.h b/sys/mips/include/profile.h
index 694ff41ff55e..3f04e298c7c5 100644
--- a/sys/mips/include/profile.h
+++ b/sys/mips/include/profile.h
@@ -46,7 +46,8 @@
/*XXX This is not MIPS64 safe. */
#define MCOUNT \
- __asm(".globl _mcount;" \
+ __asm(".text;" \
+ ".globl _mcount;" \
".type _mcount,@function;" \
"_mcount:;" \
".set noreorder;" \