system.h revision 132718
1/* Get common system includes and various definitions and declarations based 2 on autoconf macros. 3 Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 4 Free Software Foundation, Inc. 5 6This file is part of GCC. 7 8GCC is free software; you can redistribute it and/or modify it under 9the terms of the GNU General Public License as published by the Free 10Software Foundation; either version 2, or (at your option) any later 11version. 12 13GCC is distributed in the hope that it will be useful, but WITHOUT ANY 14WARRANTY; without even the implied warranty of MERCHANTABILITY or 15FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16for more details. 17 18You should have received a copy of the GNU General Public License 19along with GCC; see the file COPYING. If not, write to the Free 20Software Foundation, 59 Temple Place - Suite 330, Boston, MA 2102111-1307, USA. */ 22 23 24#ifndef GCC_SYSTEM_H 25#define GCC_SYSTEM_H 26 27/* We must include stdarg.h before stdio.h. */ 28#include <stdarg.h> 29 30#ifndef va_copy 31# ifdef __va_copy 32# define va_copy(d,s) __va_copy((d),(s)) 33# else 34# define va_copy(d,s) ((d) = (s)) 35# endif 36#endif 37 38#ifdef HAVE_STDDEF_H 39# include <stddef.h> 40#endif 41 42#include <stdio.h> 43 44/* Define a generic NULL if one hasn't already been defined. */ 45#ifndef NULL 46#define NULL 0 47#endif 48 49/* The compiler is not a multi-threaded application and therefore we 50 do not have to use the locking functions. In fact, using the locking 51 functions can cause the compiler to be significantly slower under 52 I/O bound conditions (such as -g -O0 on very large source files). 53 54 HAVE_DECL_PUTC_UNLOCKED actually indicates whether or not the stdio 55 code is multi-thread safe by default. If it is set to 0, then do 56 not worry about using the _unlocked functions. 57 58 fputs_unlocked, fwrite_unlocked, and fprintf_unlocked are 59 extensions and need to be prototyped by hand (since we do not 60 define _GNU_SOURCE). */ 61 62#if defined HAVE_DECL_PUTC_UNLOCKED && HAVE_DECL_PUTC_UNLOCKED 63 64# ifdef HAVE_PUTC_UNLOCKED 65# undef putc 66# define putc(C, Stream) putc_unlocked (C, Stream) 67# endif 68# ifdef HAVE_FPUTC_UNLOCKED 69# undef fputc 70# define fputc(C, Stream) fputc_unlocked (C, Stream) 71# endif 72 73# ifdef HAVE_FPUTS_UNLOCKED 74# undef fputs 75# define fputs(String, Stream) fputs_unlocked (String, Stream) 76# if defined (HAVE_DECL_FPUTS_UNLOCKED) && !HAVE_DECL_FPUTS_UNLOCKED 77extern int fputs_unlocked (const char *, FILE *); 78# endif 79# endif 80# ifdef HAVE_FWRITE_UNLOCKED 81# undef fwrite 82# define fwrite(Ptr, Size, N, Stream) fwrite_unlocked (Ptr, Size, N, Stream) 83# if defined (HAVE_DECL_FWRITE_UNLOCKED) && !HAVE_DECL_FWRITE_UNLOCKED 84extern int fwrite_unlocked (const void *, size_t, size_t, FILE *); 85# endif 86# endif 87# ifdef HAVE_FPRINTF_UNLOCKED 88# undef fprintf 89/* We can't use a function-like macro here because we don't know if 90 we have varargs macros. */ 91# define fprintf fprintf_unlocked 92# if defined (HAVE_DECL_FPRINTF_UNLOCKED) && !HAVE_DECL_FPRINTF_UNLOCKED 93extern int fprintf_unlocked (FILE *, const char *, ...); 94# endif 95# endif 96 97#endif 98 99/* ??? Glibc's fwrite/fread_unlocked macros cause 100 "warning: signed and unsigned type in conditional expression". */ 101#undef fread_unlocked 102#undef fwrite_unlocked 103 104/* There are an extraordinary number of issues with <ctype.h>. 105 The last straw is that it varies with the locale. Use libiberty's 106 replacement instead. */ 107#include <safe-ctype.h> 108 109#include <sys/types.h> 110 111#include <errno.h> 112 113#if !defined (errno) && defined (HAVE_DECL_ERRNO) && !HAVE_DECL_ERRNO 114extern int errno; 115#endif 116 117/* Some of glibc's string inlines cause warnings. Plus we'd rather 118 rely on (and therefore test) GCC's string builtins. */ 119#define __NO_STRING_INLINES 120 121#ifdef STRING_WITH_STRINGS 122# include <string.h> 123# include <strings.h> 124#else 125# ifdef HAVE_STRING_H 126# include <string.h> 127# else 128# ifdef HAVE_STRINGS_H 129# include <strings.h> 130# endif 131# endif 132#endif 133 134#ifdef HAVE_STDLIB_H 135# include <stdlib.h> 136#endif 137 138/* If we don't have an overriding definition, set SUCCESS_EXIT_CODE and 139 FATAL_EXIT_CODE to EXIT_SUCCESS and EXIT_FAILURE respectively, 140 or 0 and 1 if those macros are not defined. */ 141#ifndef SUCCESS_EXIT_CODE 142# ifdef EXIT_SUCCESS 143# define SUCCESS_EXIT_CODE EXIT_SUCCESS 144# else 145# define SUCCESS_EXIT_CODE 0 146# endif 147#endif 148 149#ifndef FATAL_EXIT_CODE 150# ifdef EXIT_FAILURE 151# define FATAL_EXIT_CODE EXIT_FAILURE 152# else 153# define FATAL_EXIT_CODE 1 154# endif 155#endif 156 157#ifdef HAVE_UNISTD_H 158# include <unistd.h> 159#endif 160 161#ifdef HAVE_SYS_PARAM_H 162# include <sys/param.h> 163/* We use this identifier later and it appears in some vendor param.h's. */ 164# undef PREFETCH 165#endif 166 167#if HAVE_LIMITS_H 168# include <limits.h> 169#endif 170 171/* Get definitions of HOST_WIDE_INT and HOST_WIDEST_INT. */ 172#include "hwint.h" 173 174/* A macro to determine whether a VALUE lies inclusively within a 175 certain range without evaluating the VALUE more than once. This 176 macro won't warn if the VALUE is unsigned and the LOWER bound is 177 zero, as it would e.g. with "VALUE >= 0 && ...". Note the LOWER 178 bound *is* evaluated twice, and LOWER must not be greater than 179 UPPER. However the bounds themselves can be either positive or 180 negative. */ 181#define IN_RANGE(VALUE, LOWER, UPPER) \ 182 ((unsigned HOST_WIDE_INT) ((VALUE) - (LOWER)) <= ((UPPER) - (LOWER))) 183 184/* Infrastructure for defining missing _MAX and _MIN macros. Note that 185 macros defined with these cannot be used in #if. */ 186 187/* The extra casts work around common compiler bugs. */ 188#define INTTYPE_SIGNED(t) (! ((t) 0 < (t) -1)) 189/* The outer cast is needed to work around a bug in Cray C 5.0.3.0. 190 It is necessary at least when t == time_t. */ 191#define INTTYPE_MINIMUM(t) ((t) (INTTYPE_SIGNED (t) \ 192 ? ~ (t) 0 << (sizeof(t) * CHAR_BIT - 1) : (t) 0)) 193#define INTTYPE_MAXIMUM(t) ((t) (~ (t) 0 - INTTYPE_MINIMUM (t))) 194 195/* Use that infrastructure to provide a few constants. */ 196#ifndef UCHAR_MAX 197# define UCHAR_MAX INTTYPE_MAXIMUM (unsigned char) 198#endif 199 200#ifdef TIME_WITH_SYS_TIME 201# include <sys/time.h> 202# include <time.h> 203#else 204# if HAVE_SYS_TIME_H 205# include <sys/time.h> 206# else 207# ifdef HAVE_TIME_H 208# include <time.h> 209# endif 210# endif 211#endif 212 213#ifdef HAVE_FCNTL_H 214# include <fcntl.h> 215#else 216# ifdef HAVE_SYS_FILE_H 217# include <sys/file.h> 218# endif 219#endif 220 221#ifndef SEEK_SET 222# define SEEK_SET 0 223# define SEEK_CUR 1 224# define SEEK_END 2 225#endif 226#ifndef F_OK 227# define F_OK 0 228# define X_OK 1 229# define W_OK 2 230# define R_OK 4 231#endif 232#ifndef O_RDONLY 233# define O_RDONLY 0 234#endif 235#ifndef O_WRONLY 236# define O_WRONLY 1 237#endif 238 239/* Some systems define these in, e.g., param.h. We undefine these names 240 here to avoid the warnings. We prefer to use our definitions since we 241 know they are correct. */ 242 243#undef MIN 244#undef MAX 245#define MIN(X,Y) ((X) < (Y) ? (X) : (Y)) 246#define MAX(X,Y) ((X) > (Y) ? (X) : (Y)) 247 248/* Returns the least number N such that N * Y >= X. */ 249#define CEIL(x,y) (((x) + (y) - 1) / (y)) 250 251#ifdef HAVE_SYS_WAIT_H 252#include <sys/wait.h> 253#endif 254 255#ifndef WIFSIGNALED 256#define WIFSIGNALED(S) (((S) & 0xff) != 0 && ((S) & 0xff) != 0x7f) 257#endif 258#ifndef WTERMSIG 259#define WTERMSIG(S) ((S) & 0x7f) 260#endif 261#ifndef WIFEXITED 262#define WIFEXITED(S) (((S) & 0xff) == 0) 263#endif 264#ifndef WEXITSTATUS 265#define WEXITSTATUS(S) (((S) & 0xff00) >> 8) 266#endif 267#ifndef WSTOPSIG 268#define WSTOPSIG WEXITSTATUS 269#endif 270#ifndef WCOREDUMP 271#define WCOREDUMP(S) ((S) & WCOREFLG) 272#endif 273#ifndef WCOREFLG 274#define WCOREFLG 0200 275#endif 276 277/* The HAVE_DECL_* macros are three-state, undefined, 0 or 1. If they 278 are defined to 0 then we must provide the relevant declaration 279 here. These checks will be in the undefined state while configure 280 is running so be careful to test "defined (HAVE_DECL_*)". */ 281 282#if defined (HAVE_DECL_ATOF) && !HAVE_DECL_ATOF 283extern double atof (const char *); 284#endif 285 286#if defined (HAVE_DECL_ATOL) && !HAVE_DECL_ATOL 287extern long atol (const char *); 288#endif 289 290#if defined (HAVE_DECL_FREE) && !HAVE_DECL_FREE 291extern void free (void *); 292#endif 293 294#if defined (HAVE_DECL_GETCWD) && !HAVE_DECL_GETCWD 295extern char *getcwd (char *, size_t); 296#endif 297 298#if defined (HAVE_DECL_GETENV) && !HAVE_DECL_GETENV 299extern char *getenv (const char *); 300#endif 301 302#if defined (HAVE_DECL_GETOPT) && !HAVE_DECL_GETOPT 303extern int getopt (int, char * const *, const char *); 304#endif 305 306#if defined (HAVE_DECL_GETWD) && !HAVE_DECL_GETWD 307extern char *getwd (char *); 308#endif 309 310#if defined (HAVE_DECL_SBRK) && !HAVE_DECL_SBRK 311extern void *sbrk (int); 312#endif 313 314#if defined (HAVE_DECL_STRSTR) && !HAVE_DECL_STRSTR 315extern char *strstr (const char *, const char *); 316#endif 317 318#ifdef HAVE_MALLOC_H 319#include <malloc.h> 320#endif 321 322#if defined (HAVE_DECL_MALLOC) && !HAVE_DECL_MALLOC 323extern void *malloc (size_t); 324#endif 325 326#if defined (HAVE_DECL_CALLOC) && !HAVE_DECL_CALLOC 327extern void *calloc (size_t, size_t); 328#endif 329 330#if defined (HAVE_DECL_REALLOC) && !HAVE_DECL_REALLOC 331extern void *realloc (void *, size_t); 332#endif 333 334/* If the system doesn't provide strsignal, we get it defined in 335 libiberty but no declaration is supplied. */ 336#if !defined (HAVE_STRSIGNAL) \ 337 || (defined (HAVE_DECL_STRSIGNAL) && !HAVE_DECL_STRSIGNAL) 338# ifndef strsignal 339extern const char *strsignal (int); 340# endif 341#endif 342 343#ifdef HAVE_GETRLIMIT 344# if defined (HAVE_DECL_GETRLIMIT) && !HAVE_DECL_GETRLIMIT 345# ifndef getrlimit 346struct rlimit; 347extern int getrlimit (int, struct rlimit *); 348# endif 349# endif 350#endif 351 352#ifdef HAVE_SETRLIMIT 353# if defined (HAVE_DECL_SETRLIMIT) && !HAVE_DECL_SETRLIMIT 354# ifndef setrlimit 355struct rlimit; 356extern int setrlimit (int, const struct rlimit *); 357# endif 358# endif 359#endif 360 361#if defined (HAVE_DECL_ABORT) && !HAVE_DECL_ABORT 362extern void abort (void); 363#endif 364 365#if defined (HAVE_DECL_SNPRINTF) && !HAVE_DECL_SNPRINTF 366extern int snprintf (char *, size_t, const char *, ...); 367#endif 368 369/* 1 if we have C99 designated initializers. */ 370#if !defined(HAVE_DESIGNATED_INITIALIZERS) 371#define HAVE_DESIGNATED_INITIALIZERS \ 372 ((GCC_VERSION >= 2007) || (__STDC_VERSION__ >= 199901L)) 373#endif 374 375/* 1 if we have _Bool. */ 376#ifndef HAVE__BOOL 377# define HAVE__BOOL \ 378 ((GCC_VERSION >= 3000) || (__STDC_VERSION__ >= 199901L)) 379#endif 380 381 382#if HAVE_SYS_STAT_H 383# include <sys/stat.h> 384#endif 385 386/* Test if something is a normal file. */ 387#ifndef S_ISREG 388#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) 389#endif 390 391/* Test if something is a directory. */ 392#ifndef S_ISDIR 393#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) 394#endif 395 396/* Test if something is a character special file. */ 397#ifndef S_ISCHR 398#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) 399#endif 400 401/* Test if something is a block special file. */ 402#ifndef S_ISBLK 403#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) 404#endif 405 406/* Test if something is a socket. */ 407#ifndef S_ISSOCK 408# ifdef S_IFSOCK 409# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) 410# else 411# define S_ISSOCK(m) 0 412# endif 413#endif 414 415/* Test if something is a FIFO. */ 416#ifndef S_ISFIFO 417# ifdef S_IFIFO 418# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) 419# else 420# define S_ISFIFO(m) 0 421# endif 422#endif 423 424/* Approximate O_NONBLOCK. */ 425#ifndef O_NONBLOCK 426#define O_NONBLOCK O_NDELAY 427#endif 428 429/* Approximate O_NOCTTY. */ 430#ifndef O_NOCTTY 431#define O_NOCTTY 0 432#endif 433 434/* Define well known filenos if the system does not define them. */ 435#ifndef STDIN_FILENO 436# define STDIN_FILENO 0 437#endif 438#ifndef STDOUT_FILENO 439# define STDOUT_FILENO 1 440#endif 441#ifndef STDERR_FILENO 442# define STDERR_FILENO 2 443#endif 444 445/* Some systems have mkdir that takes a single argument. */ 446#ifdef MKDIR_TAKES_ONE_ARG 447# define mkdir(a,b) mkdir(a) 448#endif 449 450/* Provide a way to print an address via printf. */ 451#ifndef HOST_PTR_PRINTF 452# ifdef HAVE_PRINTF_PTR 453# define HOST_PTR_PRINTF "%p" 454# elif SIZEOF_INT == SIZEOF_VOID_P 455# define HOST_PTR_PRINTF "%x" 456# elif SIZEOF_LONG == SIZEOF_VOID_P 457# define HOST_PTR_PRINTF "%lx" 458# else 459# define HOST_PTR_PRINTF "%llx" 460# endif 461#endif /* ! HOST_PTR_PRINTF */ 462 463/* By default, colon separates directories in a path. */ 464#ifndef PATH_SEPARATOR 465#define PATH_SEPARATOR ':' 466#endif 467 468/* Filename handling macros. */ 469#include "filenames.h" 470 471/* These should be phased out in favor of IS_DIR_SEPARATOR, where possible. */ 472#ifndef DIR_SEPARATOR 473# define DIR_SEPARATOR '/' 474# ifdef HAVE_DOS_BASED_FILE_SYSTEM 475# define DIR_SEPARATOR_2 '\\' 476# endif 477#endif 478 479/* Get libiberty declarations. */ 480#include "libiberty.h" 481 482/* Provide a default for the HOST_BIT_BUCKET. 483 This suffices for POSIX-like hosts. */ 484 485#ifndef HOST_BIT_BUCKET 486#define HOST_BIT_BUCKET "/dev/null" 487#endif 488 489/* Be conservative and only use enum bitfields with GCC. 490 FIXME: provide a complete autoconf test for buggy enum bitfields. */ 491 492#if (GCC_VERSION > 2000) 493#define ENUM_BITFIELD(TYPE) __extension__ enum TYPE 494#else 495#define ENUM_BITFIELD(TYPE) unsigned int 496#endif 497 498/* We only use bool bitfields with gcc3. Some supposedly C99 499 compilers don't handle them correctly. */ 500#if (GCC_VERSION >= 3000) 501#define BOOL_BITFIELD _Bool 502#else 503#define BOOL_BITFIELD unsigned int 504#endif 505 506#ifndef offsetof 507#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *) 0)->MEMBER) 508#endif 509 510/* Various error reporting routines want to use __FUNCTION__. */ 511#if (GCC_VERSION < 2007) 512#ifndef __FUNCTION__ 513#define __FUNCTION__ "?" 514#endif /* ! __FUNCTION__ */ 515#endif 516 517/* __builtin_expect(A, B) evaluates to A, but notifies the compiler that 518 the most likely value of A is B. This feature was added at some point 519 between 2.95 and 3.0. Let's use 3.0 as the lower bound for now. */ 520#if (GCC_VERSION < 3000) 521#define __builtin_expect(a, b) (a) 522#endif 523 524/* Provide some sort of boolean type. We use stdbool.h if it's 525 available. This must be after all inclusion of system headers, 526 as some of them will mess us up. */ 527#undef bool 528#undef true 529#undef false 530#undef TRUE 531#undef FALSE 532 533#ifdef HAVE_STDBOOL_H 534# include <stdbool.h> 535#else 536# if !HAVE__BOOL 537typedef char _Bool; 538# endif 539# define bool _Bool 540# define true 1 541# define false 0 542#endif 543 544#define TRUE true 545#define FALSE false 546 547/* As the last action in this file, we poison the identifiers that 548 shouldn't be used. Note, luckily gcc-3.0's token-based integrated 549 preprocessor won't trip on poisoned identifiers that arrive from 550 the expansion of macros. E.g. #define strrchr rindex, won't error 551 if rindex is poisoned after this directive is issued and later on 552 strrchr is called. 553 554 Note: We define bypass macros for the few cases where we really 555 want to use the libc memory allocation routines. Otherwise we 556 insist you use the "x" versions from libiberty. */ 557 558#define really_call_malloc malloc 559#define really_call_calloc calloc 560#define really_call_realloc realloc 561 562#if defined(FLEX_SCANNER) || defined(YYBISON) || defined(YYBYACC) 563/* Flex and bison use malloc and realloc. Yuk. Note that this means 564 really_call_* cannot be used in a .l or .y file. */ 565#define malloc xmalloc 566#define realloc xrealloc 567#endif 568 569#if (GCC_VERSION >= 3000) 570 571/* Note autoconf checks for prototype declarations and includes 572 system.h while doing so. Only poison these tokens if actually 573 compiling gcc, so that the autoconf declaration tests for malloc 574 etc don't spuriously fail. */ 575#ifdef IN_GCC 576#undef calloc 577#undef strdup 578 #pragma GCC poison calloc strdup 579 580#if !defined(FLEX_SCANNER) && !defined(YYBISON) 581#undef malloc 582#undef realloc 583 #pragma GCC poison malloc realloc 584#endif 585 586/* Old target macros that have moved to the target hooks structure. */ 587 #pragma GCC poison ASM_OPEN_PAREN ASM_CLOSE_PAREN \ 588 FUNCTION_PROLOGUE FUNCTION_EPILOGUE \ 589 FUNCTION_END_PROLOGUE FUNCTION_BEGIN_EPILOGUE \ 590 DECL_MACHINE_ATTRIBUTES COMP_TYPE_ATTRIBUTES INSERT_ATTRIBUTES \ 591 VALID_MACHINE_DECL_ATTRIBUTE VALID_MACHINE_TYPE_ATTRIBUTE \ 592 SET_DEFAULT_TYPE_ATTRIBUTES SET_DEFAULT_DECL_ATTRIBUTES \ 593 MERGE_MACHINE_TYPE_ATTRIBUTES MERGE_MACHINE_DECL_ATTRIBUTES \ 594 MD_INIT_BUILTINS MD_EXPAND_BUILTIN ASM_OUTPUT_CONSTRUCTOR \ 595 ASM_OUTPUT_DESTRUCTOR SIGNED_CHAR_SPEC MAX_CHAR_TYPE_SIZE \ 596 WCHAR_UNSIGNED UNIQUE_SECTION SELECT_SECTION SELECT_RTX_SECTION \ 597 ENCODE_SECTION_INFO STRIP_NAME_ENCODING ASM_GLOBALIZE_LABEL \ 598 ASM_OUTPUT_MI_THUNK CONST_COSTS RTX_COSTS DEFAULT_RTX_COSTS \ 599 ADDRESS_COST MACHINE_DEPENDENT_REORG ASM_FILE_START ASM_FILE_END \ 600 ASM_SIMPLIFY_DWARF_ADDR INIT_TARGET_OPTABS INIT_SUBTARGET_OPTABS \ 601 INIT_GOFAST_OPTABS MULSI3_LIBCALL MULDI3_LIBCALL DIVSI3_LIBCALL \ 602 DIVDI3_LIBCALL UDIVSI3_LIBCALL UDIVDI3_LIBCALL MODSI3_LIBCALL \ 603 MODDI3_LIBCALL UMODSI3_LIBCALL UMODDI3_LIBCALL BUILD_VA_LIST_TYPE \ 604 PRETEND_OUTGOING_VARARGS_NAMED STRUCT_VALUE_INCOMING_REGNUM \ 605 SPLIT_COMPLEX_ARGS 606 607/* Other obsolete target macros, or macros that used to be in target 608 headers and were not used, and may be obsolete or may never have 609 been used. */ 610 #pragma GCC poison INT_ASM_OP ASM_OUTPUT_EH_REGION_BEG CPP_PREDEFINES \ 611 ASM_OUTPUT_EH_REGION_END ASM_OUTPUT_LABELREF_AS_INT SMALL_STACK \ 612 DOESNT_NEED_UNWINDER EH_TABLE_LOOKUP OBJC_SELECTORS_WITHOUT_LABELS \ 613 OMIT_EH_TABLE EASY_DIV_EXPR IMPLICIT_FIX_EXPR \ 614 LONGJMP_RESTORE_FROM_STACK MAX_INT_TYPE_SIZE ASM_IDENTIFY_GCC \ 615 STDC_VALUE TRAMPOLINE_ALIGN ASM_IDENTIFY_GCC_AFTER_SOURCE \ 616 SLOW_ZERO_EXTEND SUBREG_REGNO_OFFSET DWARF_LINE_MIN_INSTR_LENGTH \ 617 TRADITIONAL_RETURN_FLOAT NO_BUILTIN_SIZE_TYPE \ 618 NO_BUILTIN_PTRDIFF_TYPE NO_BUILTIN_WCHAR_TYPE NO_BUILTIN_WINT_TYPE \ 619 BLOCK_PROFILER BLOCK_PROFILER_CODE FUNCTION_BLOCK_PROFILER \ 620 FUNCTION_BLOCK_PROFILER_EXIT MACHINE_STATE_SAVE \ 621 MACHINE_STATE_RESTORE SCCS_DIRECTIVE SECTION_ASM_OP \ 622 ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL ASM_OUTPUT_INTERNAL_LABEL \ 623 OBJC_PROLOGUE ALLOCATE_TRAMPOLINE HANDLE_PRAGMA ROUND_TYPE_SIZE \ 624 ROUND_TYPE_SIZE_UNIT CONST_SECTION_ASM_OP CRT_GET_RFIB_TEXT \ 625 DBX_LBRAC_FIRST DBX_OUTPUT_ENUM DBX_OUTPUT_SOURCE_FILENAME \ 626 DBX_WORKING_DIRECTORY INSN_CACHE_DEPTH INSN_CACHE_SIZE \ 627 INSN_CACHE_LINE_WIDTH INIT_SECTION_PREAMBLE NEED_ATEXIT ON_EXIT \ 628 EXIT_BODY OBJECT_FORMAT_ROSE MULTIBYTE_CHARS MAP_CHARACTER \ 629 LIBGCC_NEEDS_DOUBLE FINAL_PRESCAN_LABEL DEFAULT_CALLER_SAVES \ 630 LOAD_ARGS_REVERSED MAX_INTEGER_COMPUTATION_MODE \ 631 CONVERT_HARD_REGISTER_TO_SSA_P ASM_OUTPUT_MAIN_SOURCE_FILENAME \ 632 FIRST_INSN_ADDRESS TEXT_SECTION SHARED_BSS_SECTION_ASM_OP \ 633 PROMOTED_MODE EXPAND_BUILTIN_VA_END \ 634 LINKER_DOES_NOT_WORK_WITH_DWARF2 635 636/* Hooks that are no longer used. */ 637 #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \ 638 LANG_HOOKS_MARK_TREE LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES 639 640/* Libiberty macros that are no longer used in GCC. */ 641#undef ANSI_PROTOTYPES 642#undef PTR_CONST 643#undef LONG_DOUBLE 644#undef VPARAMS 645#undef VA_OPEN 646#undef VA_FIXEDARG 647#undef VA_CLOSE 648#undef VA_START 649 #pragma GCC poison ANSI_PROTOTYPES PTR_CONST LONG_DOUBLE VPARAMS VA_OPEN \ 650 VA_FIXEDARG VA_CLOSE VA_START 651#endif /* IN_GCC */ 652 653/* Note: not all uses of the `index' token (e.g. variable names and 654 structure members) have been eliminated. */ 655#undef bcopy 656#undef bzero 657#undef bcmp 658#undef rindex 659 #pragma GCC poison bcopy bzero bcmp rindex 660 661#endif /* GCC >= 3.0 */ 662 663#endif /* ! GCC_SYSTEM_H */ 664