Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(328)

Side by Side Diff: gcc/config/i386/nacl.h

Issue 7740063: Use a NaCl-specific dynamic linker name (Closed) Base URL: http://git.chromium.org/native_client/nacl-gcc.git@master
Patch Set: Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Target definitions for GCC for NativeClient using ELF 1 /* Target definitions for GCC for NativeClient using ELF
2 Copyright (C) 1988, 1991, 1995, 2000, 2001, 2002 2 Copyright (C) 1988, 1991, 1995, 2000, 2001, 2002
3 Free Software Foundation, Inc. 3 Free Software Foundation, Inc.
4 4
5 Derived from sysv4.h written by Ron Guilmette (rfg@netcom.com). 5 Derived from sysv4.h written by Ron Guilmette (rfg@netcom.com).
6 6
7 This file is part of GCC. 7 This file is part of GCC.
8 8
9 GCC is free software; you can redistribute it and/or modify 9 GCC is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by 10 it under the terms of the GNU General Public License as published by
(...skipping 26 matching lines...) Expand all
37 #undef TARGET_VERSION 37 #undef TARGET_VERSION
38 #define TARGET_VERSION fprintf (stderr, " (NativeClient)"); 38 #define TARGET_VERSION fprintf (stderr, " (NativeClient)");
39 39
40 /* Don't enclose system header files in extern "C" {...}. */ 40 /* Don't enclose system header files in extern "C" {...}. */
41 #define NO_IMPLICIT_EXTERN_C 41 #define NO_IMPLICIT_EXTERN_C
42 42
43 /* Provide a STARTFILE_SPEC. Here we add 43 /* Provide a STARTFILE_SPEC. Here we add
44 the GNU/Linux magical crtbegin.o file (see crtstuff.c) which provides part of 44 the GNU/Linux magical crtbegin.o file (see crtstuff.c) which provides part of
45 the support for getting C++ file-scope static object constructed before 45 the support for getting C++ file-scope static object constructed before
46 entering `main'. */ 46 entering `main'. */
47 47
48 #undef STARTFILE_SPEC 48 #undef STARTFILE_SPEC
49 #if defined HAVE_LD_PIE 49 #if defined HAVE_LD_PIE
50 #define STARTFILE_SPEC \ 50 #define STARTFILE_SPEC \
51 "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ 51 "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
52 crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}" 52 crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
53 #else 53 #else
54 #define STARTFILE_SPEC \ 54 #define STARTFILE_SPEC \
55 "%{!shared: %{pg|p|profile:gcrt1.o%s;:crt1.o%s}} \ 55 "%{!shared: %{pg|p|profile:gcrt1.o%s;:crt1.o%s}} \
56 crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}" 56 crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
57 #endif 57 #endif
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 102
103 #if defined(HAVE_LD_EH_FRAME_HDR) 103 #if defined(HAVE_LD_EH_FRAME_HDR)
104 #define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " 104 #define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
105 #endif 105 #endif
106 106
107 /* Use --as-needed -lgcc_s for eh support. */ 107 /* Use --as-needed -lgcc_s for eh support. */
108 #ifdef HAVE_LD_AS_NEEDED 108 #ifdef HAVE_LD_AS_NEEDED
109 #define USE_LD_AS_NEEDED 1 109 #define USE_LD_AS_NEEDED 1
110 #endif 110 #endif
111 111
112 /* TODO(pasko): replace LINUX_DYNAMIC_LINKER with NACL_DYNAMIC_LINKER when we 112 #define NACL_DYNAMIC_LINKER32 "/lib/ld-nacl-x86-32.so.1"
113 implement dynamic linking. */ 113 #define NACL_DYNAMIC_LINKER64 "/lib64/ld-nacl-x86-64.so.1"
114
115 /* Determine which dynamic linker to use depending on whether GLIBC or
116 uClibc is the default C library and whether -muclibc or -mglibc has
117 been passed to change the default. */
118 #if UCLIBC_DEFAULT
119 #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:%{muclibc:%e-mglibc and -muclibc u sed together}" G ";:" U "}"
120 #else
121 #define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:%{mglibc:%e-mglibc and -muclibc u sed together}" U ";:" G "}"
122 #endif
123
124 /* For most targets the following definitions suffice;
125 GLIBC_DYNAMIC_LINKER must be defined for each target using them, or
126 GLIBC_DYNAMIC_LINKER32 and GLIBC_DYNAMIC_LINKER64 for targets
127 supporting both 32-bit and 64-bit compilation. */
128 #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
129 #define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
130 #define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
131 #define LINUX_DYNAMIC_LINKER \
132 CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
133 #define LINUX_DYNAMIC_LINKER32 \
134 CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
135 #define LINUX_DYNAMIC_LINKER64 \
136 CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
137
138 #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
139 #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
140 114
141 /* Determine whether the entire c99 runtime 115 /* Determine whether the entire c99 runtime
142 is present in the runtime library. */ 116 is present in the runtime library. */
143 #define TARGET_C99_FUNCTIONS (OPTION_GLIBC) 117 #define TARGET_C99_FUNCTIONS (OPTION_GLIBC)
144 118
145 /* Whether we have sincos that follows the GNU extension. */ 119 /* Whether we have sincos that follows the GNU extension. */
146 #define TARGET_HAS_SINCOS (OPTION_GLIBC) 120 #define TARGET_HAS_SINCOS (OPTION_GLIBC)
147 121
148 #define TARGET_POSIX_IO 122 #define TARGET_POSIX_IO
149 123
150 #if TARGET_64BIT_DEFAULT 124 #if TARGET_64BIT_DEFAULT
151 #define SPEC_32 "m32" 125 #define SPEC_32 "m32"
152 #define SPEC_64 "!m32" 126 #define SPEC_64 "!m32"
153 #else 127 #else
154 #define SPEC_32 "!m64" 128 #define SPEC_32 "!m64"
155 #define SPEC_64 "m64" 129 #define SPEC_64 "m64"
156 #endif 130 #endif
157 131
158 #undef LINK_SPEC 132 #undef LINK_SPEC
159 #define LINK_SPEC "%{" SPEC_64 ":-m elf64_nacl} %{" SPEC_32 ":-m elf_nacl} \ 133 #define LINK_SPEC "%{" SPEC_64 ":-m elf64_nacl} %{" SPEC_32 ":-m elf_nacl} \
160 %{shared:-shared} \ 134 %{shared:-shared} \
161 %{!shared: \ 135 %{!shared: \
162 %{!static: \ 136 %{!static: \
163 %{rdynamic:-export-dynamic} \ 137 %{rdynamic:-export-dynamic} \
164 %{" SPEC_32 ":%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER32 " }} \ 138 %{" SPEC_32 ":%{!dynamic-linker:-dynamic-linker " NACL_DYNAMIC_LINKER32 "} } \
165 %{" SPEC_64 ":%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER64 " }}} \ 139 %{" SPEC_64 ":%{!dynamic-linker:-dynamic-linker " NACL_DYNAMIC_LINKER64 "} }} \
166 %{static:-static}}" 140 %{static:-static}}"
167 141
168 #undef LINK_GCC_C_SEQUENCE_SPEC 142 #undef LINK_GCC_C_SEQUENCE_SPEC
169 #define LINK_GCC_C_SEQUENCE_SPEC \ 143 #define LINK_GCC_C_SEQUENCE_SPEC \
170 "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" 144 "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
171 145
172 #if TARGET_64BIT_DEFAULT 146 #if TARGET_64BIT_DEFAULT
173 #define MULTILIB_DEFAULTS { "m64" } 147 #define MULTILIB_DEFAULTS { "m64" }
174 #else 148 #else
175 #define MULTILIB_DEFAULTS { "m32" } 149 #define MULTILIB_DEFAULTS { "m32" }
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 #undef TARGET_USE_BT 261 #undef TARGET_USE_BT
288 #define TARGET_USE_BT (ix86_tune_features[X86_TUNE_USE_BT] && !TARGET_ NACL) 262 #define TARGET_USE_BT (ix86_tune_features[X86_TUNE_USE_BT] && !TARGET_ NACL)
289 263
290 #undef DBX_REGISTER_NUMBER 264 #undef DBX_REGISTER_NUMBER
291 #define DBX_REGISTER_NUMBER(n) \ 265 #define DBX_REGISTER_NUMBER(n) \
292 (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n]) 266 (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
293 267
294 #define DWARF2_ADDR_SIZE \ 268 #define DWARF2_ADDR_SIZE \
295 (TARGET_NACL ? (TARGET_64BIT ? 8 : 4) : \ 269 (TARGET_NACL ? (TARGET_64BIT ? 8 : 4) : \
296 (POINTER_SIZE / BITS_PER_UNIT)) 270 (POINTER_SIZE / BITS_PER_UNIT))
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698