1/* Definitions for 64-bit SPARC running Linux-based GNU systems with ELF. 2 Copyright 1996, 1997, 1998, 2000 Free Software Foundation, Inc. 3 Contributed by David S. Miller (davem@caip.rutgers.edu) 4 5This file is part of GNU CC. 6 7GNU CC is free software; you can redistribute it and/or modify 8it under the terms of the GNU General Public License as published by 9the Free Software Foundation; either version 2, or (at your option) 10any later version. 11 12GNU CC is distributed in the hope that it will be useful, 13but WITHOUT ANY WARRANTY; without even the implied warranty of 14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15GNU General Public License for more details. 16 17You should have received a copy of the GNU General Public License 18along with GNU CC; see the file COPYING. If not, write to 19the Free Software Foundation, 59 Temple Place - Suite 330, 20Boston, MA 02111-1307, USA. */ 21 22#define LINUX_DEFAULT_ELF 23 24/* Don't assume anything about the header files. */ 25#define NO_IMPLICIT_EXTERN_C 26 27#undef MD_EXEC_PREFIX 28#undef MD_STARTFILE_PREFIX 29 30#if TARGET_CPU_DEFAULT == TARGET_CPU_v9 || TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc 31/* A 64 bit v9 compiler with stack-bias, 32 in a Medium/Low code model environment. */ 33 34#undef TARGET_DEFAULT 35#define TARGET_DEFAULT \ 36 (MASK_V9 + MASK_PTR64 + MASK_64BIT /* + MASK_HARD_QUAD */ \
|
37 + MASK_STACK_BIAS + MASK_APP_REGS + MASK_EPILOGUE + MASK_FPU + MASK_LONG_DOUBLE_128)
|
37 + MASK_STACK_BIAS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128) |
38#endif 39 40#undef ASM_CPU_DEFAULT_SPEC 41#define ASM_CPU_DEFAULT_SPEC "-Av9a" 42 43#ifdef SPARC_BI_ARCH 44 45#undef CPP_ARCH32_SPEC 46#define CPP_ARCH32_SPEC "%{mlong-double-128:-D__LONG_DOUBLE_128__} \ 47-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int \ 48-D__GCC_NEW_VARARGS__ -Acpu=sparc -Amachine=sparc" 49 50#endif 51 52/* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add 53 the GNU/Linux magical crtbegin.o file (see crtstuff.c) which 54 provides part of the support for getting C++ file-scope static 55 object constructed before entering `main'. */ 56 57#undef STARTFILE_SPEC 58 59#define STARTFILE_SPEC32 \ 60 "%{!shared: \
|
61 %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}}\
62 crti.o%s %{static:crtbeginT.o%s}\
|
61 %{pg:/usr/lib/gcrt1.o%s} %{!pg:%{/usr/lib/p:gcrt1.o%s} %{!p:/usr/lib/crt1.o%s}}}\ 62 /usr/lib/crti.o%s %{static:crtbeginT.o%s}\ |
63 %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}" 64 65#define STARTFILE_SPEC64 \ 66 "%{!shared: \ 67 %{pg:/usr/lib64/gcrt1.o%s} %{!pg:%{p:/usr/lib64/gcrt1.o%s} %{!p:/usr/lib64/crt1.o%s}}}\ 68 /usr/lib64/crti.o%s %{static:crtbeginT.o%s}\ 69 %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}" 70 71#ifdef SPARC_BI_ARCH 72 73#if DEFAULT_ARCH32_P 74#define STARTFILE_SPEC "\ 75%{m32:" STARTFILE_SPEC32 "} \ 76%{m64:" STARTFILE_SPEC64 "} \ 77%{!m32:%{!m64:" STARTFILE_SPEC32 "}}" 78#else 79#define STARTFILE_SPEC "\ 80%{m32:" STARTFILE_SPEC32 "} \ 81%{m64:" STARTFILE_SPEC64 "} \ 82%{!m32:%{!m64:" STARTFILE_SPEC64 "}}" 83#endif 84 85#else 86 87#define STARTFILE_SPEC STARTFILE_SPEC64 88 89#endif 90 91/* Provide a ENDFILE_SPEC appropriate for GNU/Linux. Here we tack on 92 the GNU/Linux magical crtend.o file (see crtstuff.c) which 93 provides part of the support for getting C++ file-scope static 94 object constructed before entering `main', followed by a normal 95 GNU/Linux "finalizer" file, `crtn.o'. */ 96 97#undef ENDFILE_SPEC 98 99#define ENDFILE_SPEC32 \
|
100 "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
|
100 "%{!shared:crtend.o%s} %{shared:crtendS.o%s} /usr/lib/crtn.o%s" |
101 102#define ENDFILE_SPEC64 \ 103 "%{!shared:crtend.o%s} %{shared:crtendS.o%s} /usr/lib64/crtn.o%s" 104
|
105#define ENDFILE_SPEC_COMMON \ 106 "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s}" 107 |
108#ifdef SPARC_BI_ARCH 109 110#if DEFAULT_ARCH32_P 111#define ENDFILE_SPEC "\ 112%{m32:" ENDFILE_SPEC32 "} \ 113%{m64:" ENDFILE_SPEC64 "} \
|
111%{!m32:%{!m64:" ENDFILE_SPEC32 "}}"
|
114%{!m32:%{!m64:" ENDFILE_SPEC32 "}} " \ 115ENDFILE_SPEC_COMMON |
116#else 117#define ENDFILE_SPEC "\ 118%{m32:" ENDFILE_SPEC32 "} \ 119%{m64:" ENDFILE_SPEC64 "} \
|
116%{!m32:%{!m64:" ENDFILE_SPEC64 "}}"
|
120%{!m32:%{!m64:" ENDFILE_SPEC64 "}} " \ 121ENDFILE_SPEC_COMMON |
122#endif 123 124#else 125
|
121#define ENDFILE_SPEC ENDFILE_SPEC64
|
126#define ENDFILE_SPEC ENDFILE_SPEC64 " " ENDFILE_SPEC_COMMON |
127 128#endif 129 130/* The GNU C++ standard library requires that these macros be defined. */ 131#undef CPLUSPLUS_CPP_SPEC 132#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)" 133 134#undef TARGET_VERSION 135#define TARGET_VERSION fprintf (stderr, " (sparc64 GNU/Linux with ELF)"); 136 137/* The default code model. */ 138#undef SPARC_DEFAULT_CMODEL 139#define SPARC_DEFAULT_CMODEL CM_MEDLOW 140 141#undef SUBTARGET_SWITCHES 142#define SUBTARGET_SWITCHES \ 143{"long-double-64", -MASK_LONG_DOUBLE_128, N_("Use 64 bit long doubles") }, \ 144{"long-double-128", MASK_LONG_DOUBLE_128, N_("Use 128 bit long doubles") }, 145 146#undef WCHAR_TYPE 147#define WCHAR_TYPE "int" 148 149#undef WCHAR_TYPE_SIZE 150#define WCHAR_TYPE_SIZE 32 151
|
147#undef MAX_WCHAR_TYPE_SIZE
148
|
152/* Define for support of TFmode long double and REAL_ARITHMETIC. 153 Sparc ABI says that long double is 4 words. */ 154#undef LONG_DOUBLE_TYPE_SIZE 155#define LONG_DOUBLE_TYPE_SIZE (TARGET_LONG_DOUBLE_128 ? 128 : 64) 156 157/* Constant which presents upper bound of the above value. */ 158#undef MAX_LONG_DOUBLE_TYPE_SIZE 159#define MAX_LONG_DOUBLE_TYPE_SIZE 128 160 161/* Define this to set long double type size to use in libgcc2.c, which can 162 not depend on target_flags. */ 163#if defined(__arch64__) || defined(__LONG_DOUBLE_128__) 164#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 128 165#else 166#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 64 167#endif 168 169#undef CPP_PREDEFINES
|
167#define CPP_PREDEFINES "-D__ELF__ -Dunix -D_LONGLONG -D__sparc__ -Dlinux -Asystem=unix -Asystem=posix"
|
170#define CPP_PREDEFINES "-D__ELF__ -Dunix -D_LONGLONG -D__sparc__ -D__gnu_linux__ -Dlinux -Asystem=unix -Asystem=posix" |
171 172#undef CPP_SUBTARGET_SPEC 173#define CPP_SUBTARGET_SPEC "\ 174%{fPIC:-D__PIC__ -D__pic__} \ 175%{fpic:-D__PIC__ -D__pic__} \ 176%{posix:-D_POSIX_SOURCE} \ 177%{pthread:-D_REENTRANT} \ 178" 179 180#undef LIB_SPEC 181#define LIB_SPEC \ 182 "%{shared: -lc} \ 183 %{!shared: %{mieee-fp:-lieee} %{pthread:-lpthread} \ 184 %{profile:-lc_p} %{!profile: -lc}}" 185 186/* Provide a LINK_SPEC appropriate for GNU/Linux. Here we provide support 187 for the special GCC options -static and -shared, which allow us to 188 link things in one of these three modes by applying the appropriate 189 combinations of options at link-time. We like to support here for 190 as many of the other GNU linker options as possible. But I don't 191 have the time to search for those flags. I am sure how to add 192 support for -soname shared_object_name. H.J. 193 194 I took out %{v:%{!V:-V}}. It is too much :-(. They can use 195 -Wl,-V. 196 197 When the -shared link option is used a final link is not being 198 done. */ 199 200/* If ELF is the default format, we should not use /lib/elf. */ 201 202#ifdef SPARC_BI_ARCH 203 204#undef SUBTARGET_EXTRA_SPECS 205#define SUBTARGET_EXTRA_SPECS \ 206 { "link_arch32", LINK_ARCH32_SPEC }, \ 207 { "link_arch64", LINK_ARCH64_SPEC }, \ 208 { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ 209 { "link_arch", LINK_ARCH_SPEC }, 210 211#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ 212 %{!shared: \ 213 %{!ibcs: \ 214 %{!static: \ 215 %{rdynamic:-export-dynamic} \ 216 %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ 217 %{static:-static}}} \ 218" 219 220#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ 221 %{!shared: \ 222 %{!ibcs: \ 223 %{!static: \ 224 %{rdynamic:-export-dynamic} \ 225 %{!dynamic-linker:-dynamic-linker /lib64/ld-linux.so.2}} \ 226 %{static:-static}}} \ 227" 228 229#define LINK_ARCH_SPEC "\ 230%{m32:%(link_arch32)} \ 231%{m64:%(link_arch64)} \ 232%{!m32:%{!m64:%(link_arch_default)}} \ 233" 234 235#define LINK_ARCH_DEFAULT_SPEC \ 236(DEFAULT_ARCH32_P ? LINK_ARCH32_SPEC : LINK_ARCH64_SPEC) 237 238#undef LINK_SPEC 239#define LINK_SPEC "\ 240%(link_arch) \ 241%{mlittle-endian:-EL} \ 242%{!mno-relax:%{!r:-relax}} \ 243" 244 245#undef CC1_SPEC 246#if DEFAULT_ARCH32_P 247#define CC1_SPEC "\ 248%{sun4:} %{target:} \ 249%{mcypress:-mcpu=cypress} \ 250%{msparclite:-mcpu=sparclite} %{mf930:-mcpu=f930} %{mf934:-mcpu=f934} \ 251%{mv8:-mcpu=v8} %{msupersparc:-mcpu=supersparc} \
|
252%{m32:%{m64:%emay not use both -m32 and -m64}} \ |
253%{m64:-mptr64 -mstack-bias -mlong-double-128 \ 254 %{!mcpu*:%{!mcypress:%{!msparclite:%{!mf930:%{!mf934:%{!mv8:%{!msupersparc:-mcpu=ultrasparc}}}}}}} \ 255 %{!mno-vis:%{!mcpu=v9:-mvis}}} \ 256" 257#else 258#define CC1_SPEC "\ 259%{sun4:} %{target:} \ 260%{mcypress:-mcpu=cypress} \ 261%{msparclite:-mcpu=sparclite} %{mf930:-mcpu=f930} %{mf934:-mcpu=f934} \ 262%{mv8:-mcpu=v8} %{msupersparc:-mcpu=supersparc} \
|
263%{m32:%{m64:%emay not use both -m32 and -m64}} \ |
264%{m32:-mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \ 265 %{!mcpu*:%{!mcypress:%{!msparclite:%{!mf930:%{!mf934:%{!mv8:%{!msupersparc:-mcpu=cypress}}}}}}}} \ 266%{!m32:%{!mcpu*:-mcpu=ultrasparc}} \ 267%{!mno-vis:%{!m32:%{!mcpu=v9:-mvis}}} \ 268" 269#endif 270 271#if DEFAULT_ARCH32_P 272#define MULTILIB_DEFAULTS { "m32" } 273#else 274#define MULTILIB_DEFAULTS { "m64" } 275#endif 276 277#else /* !SPARC_BI_ARCH */ 278 279#undef LINK_SPEC 280#define LINK_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ 281 %{!shared: \ 282 %{!ibcs: \ 283 %{!static: \ 284 %{rdynamic:-export-dynamic} \ 285 %{!dynamic-linker:-dynamic-linker /lib64/ld-linux.so.2}} \ 286 %{static:-static}}} \ 287%{mlittle-endian:-EL} \ 288%{!mno-relax:%{!r:-relax}} \ 289" 290 291#endif /* !SPARC_BI_ARCH */ 292 293/* The sun bundled assembler doesn't accept -Yd, (and neither does gas). 294 It's safe to pass -s always, even if -g is not used. */ 295#undef ASM_SPEC 296#define ASM_SPEC "\ 297%{V} \ 298%{v:%{!V:-V}} \ 299%{!Qn:-Qy} \ 300%{n} \ 301%{T} \ 302%{Ym,*} \ 303%{Wa,*:%*} \ 304-s %{fpic:-K PIC} %{fPIC:-K PIC} \ 305%{mlittle-endian:-EL} \ 306%(asm_cpu) %(asm_arch) %(asm_relax)" 307 308/* Same as sparc.h */ 309#undef DBX_REGISTER_NUMBER 310#define DBX_REGISTER_NUMBER(REGNO) (REGNO) 311 312/* System V Release 4 uses DWARF debugging info. Buf DWARF1 doesn't do 313 64-bit anything, so we use DWARF2. */ 314 315#undef DWARF2_DEBUGGING_INFO 316#undef DWARF_DEBUGGING_INFO 317#undef DBX_DEBUGGING_INFO 318#define DWARF2_DEBUGGING_INFO 319#define DBX_DEBUGGING_INFO 320 321#undef ASM_OUTPUT_ALIGNED_LOCAL 322#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \ 323do { \ 324 fputs ("\t.local\t", (FILE)); \ 325 assemble_name ((FILE), (NAME)); \ 326 putc ('\n', (FILE)); \ 327 ASM_OUTPUT_ALIGNED_COMMON (FILE, NAME, SIZE, ALIGN); \ 328} while (0) 329 330#undef COMMON_ASM_OP 331#define COMMON_ASM_OP "\t.common\t" 332
|
333#undef LOCAL_LABEL_PREFIX 334#define LOCAL_LABEL_PREFIX "." 335 |
336/* This is how to output a definition of an internal numbered label where 337 PREFIX is the class of label and NUM is the number within the class. */ 338 339#undef ASM_OUTPUT_INTERNAL_LABEL 340#define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) \ 341 fprintf (FILE, ".L%s%d:\n", PREFIX, NUM) 342 343/* This is how to output a reference to an internal numbered label where 344 PREFIX is the class of label and NUM is the number within the class. */ 345 346#undef ASM_OUTPUT_INTERNAL_LABELREF 347#define ASM_OUTPUT_INTERNAL_LABELREF(FILE,PREFIX,NUM) \ 348 fprintf (FILE, ".L%s%d", PREFIX, NUM) 349 350/* This is how to store into the string LABEL 351 the symbol_ref name of an internal numbered label where 352 PREFIX is the class of label and NUM is the number within the class. 353 This is suitable for output with `assemble_name'. */ 354 355#undef ASM_GENERATE_INTERNAL_LABEL 356#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \ 357 sprintf (LABEL, "*.L%s%ld", PREFIX, (long)(NUM)) 358 359/* DWARF bits. */ 360 361/* Follow Irix 6 and not the Dwarf2 draft in using 64-bit offsets. 362 Obviously the Dwarf2 folks haven't tried to actually build systems 363 with their spec. On a 64-bit system, only 64-bit relocs become 364 RELATIVE relocations. */ 365 366/* #define DWARF_OFFSET_SIZE PTR_SIZE */ 367 368#if defined(HAVE_LD_EH_FRAME_HDR) 369#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " 370#endif 371
|
372/* Don't be different from other Linux platforms in this regard. */ 373#define HANDLE_PRAGMA_PACK_PUSH_POP 374 375/* We use GNU ld so undefine this so that attribute((init_priority)) works. */ 376#undef CTORS_SECTION_ASM_OP 377#undef DTORS_SECTION_ASM_OP 378 379/* Do code reading to identify a signal frame, and set the frame 380 state data appropriately. See unwind-dw2.c for the structs. */ 381 382/* Handle multilib correctly. */ 383#if defined(__arch64__) 384/* 64-bit Sparc version */ 385#define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \ 386 do { \ 387 unsigned int *pc_ = (CONTEXT)->ra; \ 388 long new_cfa_, i_; \ 389 long regs_off_, fpu_save_off_; \ 390 long this_cfa_, fpu_save_; \ 391 \ 392 if (pc_[0] != 0x82102065 /* mov NR_rt_sigreturn, %g1 */ \ 393 || pc_[1] != 0x91d0206d) /* ta 0x6d */ \ 394 break; \ 395 regs_off_ = 192 + 128; \ 396 fpu_save_off_ = regs_off_ + (16 * 8) + (3 * 8) + (2 * 4); \ 397 this_cfa_ = (long) (CONTEXT)->cfa; \ 398 new_cfa_ = *(long *)(((CONTEXT)->cfa) + (regs_off_ + (14 * 8))); \ 399 new_cfa_ += 2047; /* Stack bias */ \ 400 fpu_save_ = *(long *)((this_cfa_) + (fpu_save_off_)); \ 401 (FS)->cfa_how = CFA_REG_OFFSET; \ 402 (FS)->cfa_reg = 14; \ 403 (FS)->cfa_offset = new_cfa_ - (long) (CONTEXT)->cfa; \ 404 for (i_ = 1; i_ < 16; ++i_) \ 405 { \ 406 (FS)->regs.reg[i_].how = REG_SAVED_OFFSET; \ 407 (FS)->regs.reg[i_].loc.offset = \ 408 this_cfa_ + (regs_off_ + (i_ * 8)) - new_cfa_; \ 409 } \ 410 for (i_ = 0; i_ < 16; ++i_) \ 411 { \ 412 (FS)->regs.reg[i_ + 16].how = REG_SAVED_OFFSET; \ 413 (FS)->regs.reg[i_ + 16].loc.offset = \ 414 this_cfa_ + (i_ * 8) - new_cfa_; \ 415 } \ 416 if (fpu_save_) \ 417 { \ 418 for (i_ = 0; i_ < 64; ++i_) \ 419 { \ 420 if (i_ > 32 && (i_ & 0x1)) \ 421 continue; \ 422 (FS)->regs.reg[i_ + 32].how = REG_SAVED_OFFSET; \ 423 (FS)->regs.reg[i_ + 32].loc.offset = \ 424 (fpu_save_ + (i_ * 4)) - new_cfa_; \ 425 } \ 426 } \ 427 /* Stick return address into %g0, same trick Alpha uses. */ \ 428 (FS)->regs.reg[0].how = REG_SAVED_OFFSET; \ 429 (FS)->regs.reg[0].loc.offset = \ 430 this_cfa_ + (regs_off_ + (16 * 8) + 8) - new_cfa_; \ 431 (FS)->retaddr_column = 0; \ 432 goto SUCCESS; \ 433 } while (0) 434#else 435/* 32-bit Sparc version */ 436#define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \ 437 do { \ 438 unsigned int *pc_ = (CONTEXT)->ra; \ 439 int new_cfa_, i_, oldstyle_; \ 440 int regs_off_, fpu_save_off_; \ 441 int fpu_save_, this_cfa_; \ 442 \ 443 if (pc_[1] != 0x91d02010) /* ta 0x10 */ \ 444 break; \ 445 if (pc_[0] == 0x821020d8) /* mov NR_sigreturn, %g1 */ \ 446 oldstyle_ = 1; \ 447 else if (pc_[0] == 0x82102065) /* mov NR_rt_sigreturn, %g1 */ \ 448 oldstyle_ = 0; \ 449 else \ 450 break; \ 451 if (oldstyle_) \ 452 { \ 453 regs_off_ = 96; \ 454 fpu_save_off_ = regs_off_ + (4 * 4) + (16 * 4); \ 455 } \ 456 else \ 457 { \ 458 regs_off_ = 96 + 128; \ 459 fpu_save_off_ = regs_off_ + (4 * 4) + (16 * 4) + (2 * 4); \ 460 } \ 461 this_cfa_ = (int) (CONTEXT)->cfa; \ 462 new_cfa_ = *(int *)(((CONTEXT)->cfa) + (regs_off_+(4*4)+(14 * 4))); \ 463 fpu_save_ = *(int *)((this_cfa_) + (fpu_save_off_)); \ 464 (FS)->cfa_how = CFA_REG_OFFSET; \ 465 (FS)->cfa_reg = 14; \ 466 (FS)->cfa_offset = new_cfa_ - (int) (CONTEXT)->cfa; \ 467 for (i_ = 1; i_ < 16; ++i_) \ 468 { \ 469 if (i_ == 14) \ 470 continue; \ 471 (FS)->regs.reg[i_].how = REG_SAVED_OFFSET; \ 472 (FS)->regs.reg[i_].loc.offset = \ 473 this_cfa_ + (regs_off_+(4 * 4)+(i_ * 4)) - new_cfa_; \ 474 } \ 475 for (i_ = 0; i_ < 16; ++i_) \ 476 { \ 477 (FS)->regs.reg[i_ + 16].how = REG_SAVED_OFFSET; \ 478 (FS)->regs.reg[i_ + 16].loc.offset = \ 479 this_cfa_ + (i_ * 4) - new_cfa_; \ 480 } \ 481 if (fpu_save_) \ 482 { \ 483 for (i_ = 0; i_ < 32; ++i_) \ 484 { \ 485 (FS)->regs.reg[i_ + 32].how = REG_SAVED_OFFSET; \ 486 (FS)->regs.reg[i_ + 32].loc.offset = \ 487 (fpu_save_ + (i_ * 4)) - new_cfa_; \ 488 } \ 489 } \ 490 /* Stick return address into %g0, same trick Alpha uses. */ \ 491 (FS)->regs.reg[0].how = REG_SAVED_OFFSET; \ 492 (FS)->regs.reg[0].loc.offset = this_cfa_+(regs_off_+4)-new_cfa_; \ 493 (FS)->retaddr_column = 0; \ 494 goto SUCCESS; \ 495 } while (0) 496#endif |
|