]> xenbits.xensource.com Git - freebsd.git/commitdiff
mips: fix some mcount nits
authorkevans <kevans@FreeBSD.org>
Mon, 2 Sep 2019 01:55:55 +0000 (01:55 +0000)
committerkevans <kevans@FreeBSD.org>
Mon, 2 Sep 2019 01:55:55 +0000 (01:55 +0000)
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

lib/libc/mips/Symbol.map
sys/mips/include/profile.h

index 9ee1d5fbd6a20a0209d9b105c8674aa5f0c33339..b66a26cd91dc18eda63da267ad9f18e687ed9327 100644 (file)
@@ -11,6 +11,7 @@ FBSD_1.0 {
        /* PSEUDO syscalls */
        _exit;
 
+       _mcount;
        _setjmp;
        _longjmp;
        alloca;
index 694ff41ff55efa82f7b34b27e98cf0872791eb36..3f04e298c7c5c93a155cc8736d540d0a77a5b7ea 100644 (file)
@@ -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;"               \