Commit 69044fa9 by Oleg Endo

crt.h: New.

libgcc/
	* config/sh/crt.h: New.
	* config/sh/crti.S: Use GLOBAL macro from crt.h for _init and _fini
	symbols.
	* config/sh/crt1.S: Likewise.

From-SVN: r218807
parent d8a99c7c
2014-12-17 Oleg Endo <olegendo@gcc.gnu.org>
* config/sh/crt.h: New.
* config/sh/crti.S: Use GLOBAL macro from crt.h for _init and _fini
symbols.
* config/sh/crt1.S: Likewise.
2014-12-15 Uros Bizjak <ubizjak@gmail.com> 2014-12-15 Uros Bizjak <ubizjak@gmail.com>
PR libgcc/63832 PR libgcc/63832
......
/* Copyright (C) 2014 Free Software Foundation, Inc.
This file is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3, or (at your option) any
later version.
This file is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
Under Section 7 of GPL version 3, you are granted additional
permissions described in the GCC Runtime Library Exception, version
3.1, as published by the Free Software Foundation.
You should have received a copy of the GNU General Public License and
a copy of the GCC Runtime Library Exception along with this program;
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
#ifndef __USER_LABEL_PREFIX__
#error __USER_LABEL_PREFIX__ not defined
#endif
#define CONCAT(a, b) CONCAT2(a, b)
#define CONCAT2(a, b) a ## b
#define GLOBAL(X) CONCAT(__USER_LABEL_PREFIX__,X)
...@@ -22,6 +22,7 @@ a copy of the GCC Runtime Library Exception along with this program; ...@@ -22,6 +22,7 @@ a copy of the GCC Runtime Library Exception along with this program;
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include "crt.h"
#ifdef MMU_SUPPORT #ifdef MMU_SUPPORT
/* Section used for exception/timer interrupt stack area */ /* Section used for exception/timer interrupt stack area */
...@@ -420,7 +421,7 @@ start: ...@@ -420,7 +421,7 @@ start:
#endif /* MMU_SUPPORT */ #endif /* MMU_SUPPORT */
pt/l .Lzero_bss_loop, tr0 pt/l .Lzero_bss_loop, tr0
pt/l _init, tr5 pt/l GLOBAL(_init), tr5
pt/l ___setup_argv_and_call_main, tr6 pt/l ___setup_argv_and_call_main, tr6
pt/l _exit, tr7 pt/l _exit, tr7
...@@ -452,7 +453,7 @@ start: ...@@ -452,7 +453,7 @@ start:
! arrange for exit to call fini ! arrange for exit to call fini
pt/l _atexit, tr1 pt/l _atexit, tr1
LOAD_ADDR (_fini, r2) LOAD_ADDR (GLOBAL(_fini), r2)
blink tr1, r18 blink tr1, r18
! call init ! call init
...@@ -850,9 +851,9 @@ exit_k: ...@@ -850,9 +851,9 @@ exit_k:
atexit_k: atexit_k:
.long _atexit .long _atexit
init_k: init_k:
.long _init .long GLOBAL(_init)
fini_k: fini_k:
.long _fini .long GLOBAL(_fini)
#ifdef VBR_SETUP #ifdef VBR_SETUP
old_vbr_k: old_vbr_k:
.long old_vbr .long old_vbr
...@@ -1116,9 +1117,7 @@ vbr_600: ...@@ -1116,9 +1117,7 @@ vbr_600:
#if defined(__SH_FPU_ANY__) #if defined(__SH_FPU_ANY__)
.balign 4 .balign 4
pervading_precision_k: pervading_precision_k:
#define CONCAT1(A,B) A##B .long GLOBAL(__fpscr_values)+4
#define CONCAT(A,B) CONCAT1(A,B)
.long CONCAT(__USER_LABEL_PREFIX__,__fpscr_values)+4
#endif #endif
#else #else
mov.l 2f, r0 ! Load the old vbr setting (if any). mov.l 2f, r0 ! Load the old vbr setting (if any).
......
...@@ -22,6 +22,7 @@ a copy of the GCC Runtime Library Exception along with this program; ...@@ -22,6 +22,7 @@ a copy of the GCC Runtime Library Exception along with this program;
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#include "crt.h"
/* The code in sections .init and .fini is supposed to be a single /* The code in sections .init and .fini is supposed to be a single
regular function. The function in .init is called directly from regular function. The function in .init is called directly from
...@@ -44,8 +45,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -44,8 +45,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#else #else
.p2align 1 .p2align 1
#endif #endif
.global _init .global GLOBAL(_init)
_init: GLOBAL(_init):
#if __SHMEDIA__ #if __SHMEDIA__
addi r15, -16, r15 addi r15, -16, r15
st.q r15, 8, r14 st.q r15, 8, r14
...@@ -89,8 +90,8 @@ _init: ...@@ -89,8 +90,8 @@ _init:
#else #else
.p2align 1 .p2align 1
#endif #endif
.global _fini .global GLOBAL(_fini)
_fini: GLOBAL(_fini):
#if __SHMEDIA__ #if __SHMEDIA__
addi r15, -16, r15 addi r15, -16, r15
st.q r15, 8, r14 st.q r15, 8, r14
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment