xref: /netbsd-src/external/gpl3/gcc.old/dist/gcc/config/lm32/uclinux-elf.h (revision c38e7cc395b1472a774ff828e46123de44c628e9)
1 /* Definitions for LM32 running Linux-based GNU systems using ELF
2    Copyright (C) 1993-2015 Free Software Foundation, Inc.
3    Contributed by Philip Blundell <philb@gnu.org>
4 
5    This file is part of GCC.
6 
7    GCC is free software; you can redistribute it and/or modify it
8    under the terms of the GNU General Public License as published
9    by the Free Software Foundation; either version 3, or (at your
10    option) any later version.
11 
12    GCC is distributed in the hope that it will be useful, but WITHOUT
13    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
15    License for more details.
16 
17    You should have received a copy of the GNU General Public License
18    along with GCC; see the file COPYING3.  If not see
19    <http://www.gnu.org/licenses/>.  */
20 
21 /* elfos.h should have already been included.  Now just override
22    any conflicting definitions and add any extras.  */
23 
24 /* Do not assume anything about header files.  */
25 #undef NO_IMPLICIT_EXTERN_C
26 #define NO_IMPLICIT_EXTERN_C
27 
28 /* The GNU C++ standard library requires that these macros be defined.  */
29 #undef CPLUSPLUS_CPP_SPEC
30 #define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)"
31 
32 /* Now we define the strings used to build the spec file.  */
33 #undef  LIB_SPEC
34 #define LIB_SPEC \
35   "%{pthread:-lpthread} \
36    %{shared:-lc} \
37    %{!shared:-lc} "
38 
39 #define LIBGCC_SPEC "-lgcc"
40 
41 /* Provide a STARTFILE_SPEC appropriate for GNU/Linux.  Here we add
42    the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
43    provides part of the support for getting C++ file-scope static
44    object constructed before entering `main'.  */
45 
46 #undef  STARTFILE_SPEC
47 #define STARTFILE_SPEC \
48   "%{!shared: \
49      %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
50                        %{!p:%{profile:gcrt1.o%s} \
51                          %{!profile:crt1.o%s}}}} \
52    crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
53 
54 /* Provide a ENDFILE_SPEC appropriate for GNU/Linux.  Here we tack on
55    the GNU/Linux magical crtend.o file (see crtstuff.c) which
56    provides part of the support for getting C++ file-scope static
57    object constructed before entering `main', followed by a normal
58    GNU/Linux "finalizer" file, `crtn.o'.  */
59 
60 #undef  ENDFILE_SPEC
61 #define ENDFILE_SPEC \
62   "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
63 
64 #undef  LINK_SPEC
65 #define LINK_SPEC "%{h*} \
66    %{static:-Bstatic} \
67    %{shared:-shared} \
68    %{symbolic:-Bsymbolic} \
69    %{rdynamic:-export-dynamic} \
70    -dynamic-linker /lib/ld-linux.so.2"
71 
72 #define TARGET_OS_CPP_BUILTINS() GNU_USER_TARGET_OS_CPP_BUILTINS()
73 
74 #define LINK_GCC_C_SEQUENCE_SPEC \
75   "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
76 
77 #undef  CC1_SPEC
78 #define CC1_SPEC "%{G*} %{!fno-PIC:-fPIC}"
79