Annotation of gcc/config/nextstep.h, revision 1.1

1.1     ! root        1: /* nextstep.h -- operating system specific defines to be used when
        !             2:    targeting GCC for NeXTSTEP.
        !             3:    Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
        !             4: 
        !             5: This file is part of GNU CC.
        !             6: 
        !             7: GNU CC is free software; you can redistribute it and/or modify
        !             8: it under the terms of the GNU General Public License as published by
        !             9: the Free Software Foundation; either version 2, or (at your option)
        !            10: any later version.
        !            11: 
        !            12: GNU CC is distributed in the hope that it will be useful,
        !            13: but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            15: GNU General Public License for more details.
        !            16: 
        !            17: You should have received a copy of the GNU General Public License
        !            18: along with GNU CC; see the file COPYING.  If not, write to
        !            19: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
        !            20: 
        !            21: /* Use new NeXT include file search path.
        !            22:    In a cross compiler with NeXT as target, don't expect
        !            23:    the host to use Next's directory scheme.  */
        !            24: 
        !            25: #ifndef CROSS_COMPILE
        !            26: #undef INCLUDE_DEFAULTS
        !            27: #define INCLUDE_DEFAULTS                               \
        !            28:   {                                                    \
        !            29:     { GPLUSPLUS_INCLUDE_DIR, 1},                       \
        !            30:     { LOCAL_INCLUDE_DIR, 0},                           \
        !            31:     { TOOL_INCLUDE_DIR, 0 },                           \
        !            32:     { GCC_INCLUDE_DIR, 0},                             \
        !            33:     /* These are for fixincludes-fixed ansi/bsd headers        \
        !            34:        which wouldn't be found otherwise.              \
        !            35:        (The use of string catenation here is OK since  \
        !            36:        NeXT's native compiler is derived from GCC.) */ \
        !            37:     { GCC_INCLUDE_DIR "/ansi", 0 },                    \
        !            38:     { GCC_INCLUDE_DIR "/bsd", 0 },                     \
        !            39:     { "/NextDeveloper/Headers", 0},                    \
        !            40:     { "/NextDeveloper/Headers/ansi", 0},               \
        !            41:     { "/NextDeveloper/Headers/bsd", 0},                        \
        !            42:     { "/LocalDeveloper/Headers", 0},                   \
        !            43:     { "/LocalDeveloper/Headers/ansi", 0},              \
        !            44:     { "/LocalDeveloper/Headers/bsd", 0},               \
        !            45:     { "/NextDeveloper/2.0CompatibleHeaders", 0},       \
        !            46:     { STANDARD_INCLUDE_DIR, 0},                                \
        !            47:     { "/usr/include/bsd", 0},                          \
        !            48:     { 0, 0}                                            \
        !            49:   }
        !            50: #endif /* CROSS_COMPILE */
        !            51: 
        !            52: #undef EXTRA_FORMAT_FUNCTIONS
        !            53: #define EXTRA_FORMAT_FUNCTIONS \
        !            54:       "NXPrintf",      FALSE,  2,      FALSE,  \
        !            55:       "NXScanf",       TRUE,   2,      FALSE,  \
        !            56:       "NXVPrintf",     FALSE,  2,      TRUE,   \
        !            57:       "NXVScanf",      TRUE,   2,      TRUE,   \
        !            58:       "DPSPrintf",     FALSE,  2,      FALSE,  \
        !            59:       "bsd_sprintf",   FALSE,  2,      FALSE,  \
        !            60:       "bsd_vsprintf",  FALSE,  2,      TRUE,
        !            61: 
        !            62: /* Make -fnext-runtime the default.  */
        !            63: 
        !            64: #define NEXT_OBJC_RUNTIME
        !            65: 
        !            66: /* We have atexit.  */
        !            67: 
        !            68: #define HAVE_ATEXIT
        !            69: 
        !            70: /* Enable recent gcc to compile under the old gcc in Next release 1.0.  */
        !            71: 
        !            72: #define __inline inline
        !            73: 
        !            74: /* wchar_t is unsigned short */
        !            75: 
        !            76: #undef WCHAR_TYPE
        !            77: #define WCHAR_TYPE "short unsigned int"
        !            78: #undef WCHAR_TYPE_SIZE
        !            79: #define WCHAR_TYPE_SIZE (BITS_PER_WORD / 2)
        !            80: 
        !            81: /* Don't default to pcc-struct-return, because gcc is the only compiler, and
        !            82:    we want to retain compatibility with older gcc versions.  */
        !            83: 
        !            84: #undef DEFAULT_PCC_STRUCT_RETURN
        !            85: #define DEFAULT_PCC_STRUCT_RETURN 0
        !            86: 
        !            87: /* These compiler options take n arguments.  */
        !            88: 
        !            89: #undef WORD_SWITCH_TAKES_ARG
        !            90: #define WORD_SWITCH_TAKES_ARG(STR)             \
        !            91:   (DEFAULT_WORD_SWITCH_TAKES_ARG (STR) ? 1 :   \
        !            92:    !strcmp (STR, "segalign") ? 1 :             \
        !            93:    !strcmp (STR, "seg1addr") ? 1 :             \
        !            94:    !strcmp (STR, "segaddr") ? 2 :              \
        !            95:    !strcmp (STR, "sectobjectsymbols") ? 2 :    \
        !            96:    !strcmp (STR, "segprot") ? 3 :              \
        !            97:    !strcmp (STR, "sectcreate") ? 3 :           \
        !            98:    !strcmp (STR, "sectalign") ? 3 :            \
        !            99:    !strcmp (STR, "segcreate") ? 3 :            \
        !           100:    !strcmp (STR, "sectorder") ? 3 :            \
        !           101:    !strcmp (STR, "siff-mask") ? 1 :            \
        !           102:    !strcmp (STR, "siff-filter") ? 1 :          \
        !           103:    !strcmp (STR, "siff-warning") ? 1 :         \
        !           104:    !strcmp (STR, "arch") ? 1 :                 \
        !           105:    !strcmp (STR, "pagezero_size") ? 1 :                \
        !           106:    0)
        !           107: 
        !           108: #undef WORD_SWITCH
        !           109: #define WORD_SWITCH(STR)                       \
        !           110:   (WORD_SWITCH_TAKES_ARG (STR)                 \
        !           111:    || !strcmp (STR, "bsd")                     \
        !           112:    || !strcmp (STR, "object")                  \
        !           113:    || !strcmp (STR, "ObjC")                    \
        !           114:    || !strcmp (STR, "all_load"))
        !           115: 
        !           116: /* Machine dependent ccp options.  */
        !           117: 
        !           118: #undef CPP_SPEC
        !           119: #define CPP_SPEC "%{!traditional: -D__STDC__}            \
        !           120:                   %{posixstrict:-D_POSIX_SOURCE}         \
        !           121:                   %{!posixstrict:%{bsd:-D__STRICT_BSD__} \
        !           122:                   %{posix:-D_POSIX_SOURCE}               \
        !           123:                   %{!ansi:-D_NEXT_SOURCE}}               \
        !           124:                   %{MD:-MD %M} %{MMD:-MMD %M}"
        !           125: 
        !           126: /* Machine dependent ld options.  */
        !           127: 
        !           128: #undef LINK_SPEC
        !           129: #define LINK_SPEC "%{Z} %{M} \
        !           130: %{execute*} %{preload*} %{fvmlib*} \
        !           131: %{segalign*} %{seg1addr*} %{segaddr*} %{segprot*} \
        !           132: %{pagezero_size*} \
        !           133: %{seglinkedit*} %{noseglinkedit*} \
        !           134: %{sectcreate*} %{sectalign*} %{sectobjectsymbols}\
        !           135: %{segcreate*} %{Mach*} %{whyload} %{w} \
        !           136: %{sectorder*} %{whatsloaded} %{ObjC} %{all_load} %{object}"
        !           137: 
        !           138: /* Machine dependent libraries.  */
        !           139: 
        !           140: #undef LIB_SPEC
        !           141: #define LIB_SPEC "%{!posix*:-lsys_s} %{posix*:-lposix}"
        !           142: 
        !           143: /* We specify crt0.o as -lcrt0.o so that ld will search the library path. */
        !           144: 
        !           145: #undef STARTFILE_SPEC
        !           146: #define STARTFILE_SPEC  \
        !           147:     "%{!posix*:%{pg:-lgcrt0.o}%{!pg: \
        !           148:      %{p:%e-p profiling is no longer supported.  Use -pg instead.} \
        !           149:      %{!p:-lcrt0.o}}}\
        !           150:      %{posix*:%{pg:-lgposixcrt0.o}%{!pg: \
        !           151:      %{p:%e-p profiling is no longer supported.  Use -pg instead.} \
        !           152:      %{!p:-lposixcrt0.o}}}"
        !           153: 
        !           154: /* Why not? */
        !           155: 
        !           156: #undef DOLLARS_IN_IDENTIFIERS
        !           157: #define DOLLARS_IN_IDENTIFIERS 2
        !           158: 
        !           159: /* Allow #sscs (but don't do anything). */
        !           160: 
        !           161: #define SCCS_DIRECTIVE
        !           162: 
        !           163: /* We use Dbx symbol format.  */
        !           164: 
        !           165: #undef SDB_DEBUGGING_INFO
        !           166: #undef XCOFF_DEBUGGING_INFO
        !           167: #define DBX_DEBUGGING_INFO
        !           168: 
        !           169: /* This saves a fair amount of space. */
        !           170: 
        !           171: #undef DBX_CONTIN_LENGTH
        !           172: #define DBX_CONTIN_LENGTH 0
        !           173: 
        !           174: /* These screw up NeXT's gdb at the moment, so don't use them. */
        !           175: 
        !           176: #undef DBX_OUTPUT_MAIN_SOURCE_DIRECTORY
        !           177: #define DBX_OUTPUT_MAIN_SOURCE_DIRECTORY(FILE, FILENAME)
        !           178: 
        !           179: /* These come from bsd386.h, but are specific to sequent, so make sure
        !           180:    they don't bite us.  */
        !           181: 
        !           182: #undef DBX_NO_XREFS
        !           183: #undef DBX_CONTIN_LENGTH
        !           184: 
        !           185: /* gdb needs a null N_SO at the end of each file for scattered loading. */
        !           186: 
        !           187: #undef DBX_OUTPUT_MAIN_SOURCE_FILE_END
        !           188: #define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME)                        \
        !           189:   fprintf (FILE,                                                       \
        !           190:           "\t.text\n\t.stabs \"%s\",%d,0,0,Letext\nLetext:\n",         \
        !           191:           "" , N_SO)
        !           192: 
        !           193: /* Don't use .gcc_compiled symbols to communicate with GDB;
        !           194:    They interfere with numerically sorted symbol lists. */
        !           195: 
        !           196: #undef ASM_IDENTIFY_GCC
        !           197: #define ASM_IDENTIFY_GCC(asm_out_file)
        !           198: #undef INIT_SECTION_ASM_OP
        !           199: #define INIT_SECTION_ASM_OP
        !           200: #undef INVOKE__main
        !           201: 
        !           202: #undef ASM_OUTPUT_CONSTRUCTOR
        !           203: #define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME)                       \
        !           204:   do { constructor_section ();                                  \
        !           205:        ASM_OUTPUT_ALIGN (FILE, 1);                              \
        !           206:        fprintf (FILE, "\t.long ");                              \
        !           207:        assemble_name (FILE, NAME);                              \
        !           208:        fprintf (FILE, "\n");                                    \
        !           209:        fprintf (FILE, ".reference .constructors_used\n");       \
        !           210:       } while (0)
        !           211: 
        !           212: #undef ASM_OUTPUT_DESTRUCTOR
        !           213: #define ASM_OUTPUT_DESTRUCTOR(FILE,NAME)                        \
        !           214:   do { destructor_section ();                                   \
        !           215:        ASM_OUTPUT_ALIGN (FILE, 1);                              \
        !           216:        fprintf (FILE, "\t.long ");                              \
        !           217:        assemble_name (FILE, NAME);                              \
        !           218:        fprintf (FILE, "\n");                                    \
        !           219:        fprintf (FILE, ".reference .destructors_used\n");        \
        !           220:       } while (0)
        !           221: 
        !           222: /* Don't output a .file directive.  That is only used by the assembler for
        !           223:    error reporting.  */
        !           224: #undef ASM_FILE_START
        !           225: #define ASM_FILE_START(FILE)
        !           226: 
        !           227: #undef ASM_FILE_END
        !           228: #define ASM_FILE_END(FILE)                                     \
        !           229:   do {                                                         \
        !           230:     extern char *language_string;                              \
        !           231:     if (strcmp (language_string, "GNU C++") == 0)              \
        !           232:       {                                                                \
        !           233:        constructor_section ();                                 \
        !           234:        destructor_section ();                                  \
        !           235:        ASM_OUTPUT_ALIGN (FILE, 1);                             \
        !           236:       }                                                                \
        !           237:   } while (0)
        !           238: 
        !           239: /* How to parse #pragma's */
        !           240: 
        !           241: #undef HANDLE_PRAGMA
        !           242: #define HANDLE_PRAGMA(finput) handle_pragma (finput, &get_directive_line)
        !           243: 
        !           244: /* Give methods pretty symbol names on NeXT. */
        !           245: 
        !           246: #undef OBJC_GEN_METHOD_LABEL
        !           247: #define OBJC_GEN_METHOD_LABEL(BUF,IS_INST,CLASS_NAME,CAT_NAME,SEL_NAME,NUM) \
        !           248:   do { if (CAT_NAME)                                                   \
        !           249:         sprintf (BUF, "%c[%s(%s) %s]", (IS_INST) ? '-' : '+',          \
        !           250:                  (CLASS_NAME), (CAT_NAME), (SEL_NAME));                \
        !           251:        else                                                            \
        !           252:         sprintf (BUF, "%c[%s %s]", (IS_INST) ? '-' : '+',              \
        !           253:                  (CLASS_NAME), (SEL_NAME));                            \
        !           254:      } while (0)
        !           255: 
        !           256: /* Wrap new method names in quotes so the assembler doesn't gag.
        !           257:    Make Objective-C internal symbols local.  */
        !           258: 
        !           259: #undef ASM_OUTPUT_LABELREF
        !           260: #define ASM_OUTPUT_LABELREF(FILE,NAME) \
        !           261:   do { if (NAME[0] == '+' || NAME[0] == '-') fprintf (FILE, "\"%s\"", NAME); \
        !           262:        else if (!strncmp (NAME, "_OBJC_", 6)) fprintf (FILE, "L%s", NAME);   \
        !           263:        else if (!strncmp (NAME, ".objc_class_name_", 17))              \
        !           264:         fprintf (FILE, "%s", NAME);                                    \
        !           265:        else fprintf (FILE, "_%s", NAME); } while (0)
        !           266: 
        !           267: #undef ALIGN_ASM_OP
        !           268: #define ALIGN_ASM_OP           ".align"
        !           269: 
        !           270: #undef ASM_OUTPUT_ALIGN
        !           271: #define ASM_OUTPUT_ALIGN(FILE,LOG)     \
        !           272:   if ((LOG) != 0)                      \
        !           273:     fprintf (FILE, "\t%s %d\n", ALIGN_ASM_OP, (LOG))
        !           274: 
        !           275: /* Ensure correct alignment of bss data.  */
        !           276: 
        !           277: #undef ASM_OUTPUT_ALIGNED_LOCAL
        !           278: #define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \
        !           279: ( fputs (".lcomm ", (FILE)),                           \
        !           280:   assemble_name ((FILE), (NAME)),                      \
        !           281:   fprintf ((FILE), ",%u,%u\n", (SIZE), floor_log2 ((ALIGN) / BITS_PER_UNIT)))
        !           282: 
        !           283: /* Output #ident as a .ident.  */
        !           284: 
        !           285: #undef ASM_OUTPUT_IDENT
        !           286: #define ASM_OUTPUT_IDENT(FILE, NAME) fprintf (FILE, "\t.ident \"%s\"\n", NAME);
        !           287: 
        !           288: /* The maximum alignment which the object file format can support.
        !           289:    For NeXT's Mach-O format, this is 2^15.  */
        !           290: 
        !           291: #undef MAX_OFILE_ALIGNMENT
        !           292: #define MAX_OFILE_ALIGNMENT 0x8000
        !           293: 
        !           294: /* Create new Mach-O sections. */
        !           295: 
        !           296: #undef SECTION_FUNCTION
        !           297: #define SECTION_FUNCTION(FUNCTION, SECTION, DIRECTIVE, WAS_TEXT, OBJC) \
        !           298: void                                                                   \
        !           299: FUNCTION ()                                                            \
        !           300: {                                                                      \
        !           301:   extern void text_section ();                                         \
        !           302:   extern void objc_section_init ();                                    \
        !           303:   extern int flag_no_mach_text_sections;                               \
        !           304:                                                                        \
        !           305:   if (WAS_TEXT && flag_no_mach_text_sections)                          \
        !           306:     text_section ();                                                   \
        !           307:   else if (in_section != SECTION)                                      \
        !           308:     {                                                                  \
        !           309:       if (OBJC)                                                                \
        !           310:        objc_section_init ();                                           \
        !           311:       fprintf (asm_out_file, "%s\n", DIRECTIVE);                       \
        !           312:       in_section = SECTION;                                            \
        !           313:     }                                                                  \
        !           314: }                                                                      \
        !           315: 
        !           316: #undef EXTRA_SECTIONS
        !           317: #define EXTRA_SECTIONS                                 \
        !           318:   in_const, in_cstring, in_literal4, in_literal8,      \
        !           319:   in_constructor, in_destructor,                       \
        !           320:   in_objc_class, in_objc_meta_class, in_objc_category, \
        !           321:   in_objc_class_vars, in_objc_instance_vars,           \
        !           322:   in_objc_cls_meth, in_objc_inst_meth,                 \
        !           323:   in_objc_cat_cls_meth, in_objc_cat_inst_meth,         \
        !           324:   in_objc_selector_refs,                               \
        !           325:   in_objc_symbols, in_objc_module_info,                        \
        !           326:   in_objc_protocol, in_objc_string_object,             \
        !           327:   in_objc_class_names, in_objc_meth_var_names,         \
        !           328:   in_objc_meth_var_types, in_objc_cls_refs
        !           329: 
        !           330: #undef EXTRA_SECTION_FUNCTIONS
        !           331: #define EXTRA_SECTION_FUNCTIONS                        \
        !           332: SECTION_FUNCTION (const_section,               \
        !           333:                  in_const,                     \
        !           334:                  ".const", 1, 0)               \
        !           335: SECTION_FUNCTION (cstring_section,             \
        !           336:                  in_cstring,                   \
        !           337:                  ".cstring", 1, 0)             \
        !           338: SECTION_FUNCTION (literal4_section,            \
        !           339:                  in_literal4,                  \
        !           340:                  ".literal4", 1, 0)            \
        !           341: SECTION_FUNCTION (literal8_section,            \
        !           342:                  in_literal8,                  \
        !           343:                  ".literal8", 1, 0)            \
        !           344: SECTION_FUNCTION (constructor_section,         \
        !           345:                  in_constructor,               \
        !           346:                  ".constructor", 0, 0)         \
        !           347: SECTION_FUNCTION (destructor_section,          \
        !           348:                  in_destructor,                \
        !           349:                  ".destructor", 0, 0)          \
        !           350: SECTION_FUNCTION (objc_class_section,          \
        !           351:                  in_objc_class,                \
        !           352:                  ".objc_class", 0, 1)          \
        !           353: SECTION_FUNCTION (objc_meta_class_section,     \
        !           354:                  in_objc_meta_class,           \
        !           355:                  ".objc_meta_class", 0, 1)     \
        !           356: SECTION_FUNCTION (objc_category_section,       \
        !           357:                  in_objc_category,             \
        !           358:                ".objc_category", 0, 1)         \
        !           359: SECTION_FUNCTION (objc_class_vars_section,     \
        !           360:                  in_objc_class_vars,           \
        !           361:                  ".objc_class_vars", 0, 1)     \
        !           362: SECTION_FUNCTION (objc_instance_vars_section,  \
        !           363:                  in_objc_instance_vars,        \
        !           364:                  ".objc_instance_vars", 0, 1)  \
        !           365: SECTION_FUNCTION (objc_cls_meth_section,       \
        !           366:                  in_objc_cls_meth,             \
        !           367:                  ".objc_cls_meth", 0, 1)       \
        !           368: SECTION_FUNCTION (objc_inst_meth_section,      \
        !           369:                  in_objc_inst_meth,            \
        !           370:                  ".objc_inst_meth", 0, 1)      \
        !           371: SECTION_FUNCTION (objc_cat_cls_meth_section,   \
        !           372:                  in_objc_cat_cls_meth,         \
        !           373:                  ".objc_cat_cls_meth", 0, 1)   \
        !           374: SECTION_FUNCTION (objc_cat_inst_meth_section,  \
        !           375:                  in_objc_cat_inst_meth,        \
        !           376:                  ".objc_cat_inst_meth", 0, 1)  \
        !           377: SECTION_FUNCTION (objc_selector_refs_section,  \
        !           378:                  in_objc_selector_refs,        \
        !           379:                  ".objc_message_refs", 0, 1)   \
        !           380: SECTION_FUNCTION (objc_symbols_section,                \
        !           381:                  in_objc_symbols,              \
        !           382:                  ".objc_symbols", 0, 1)        \
        !           383: SECTION_FUNCTION (objc_module_info_section,    \
        !           384:                  in_objc_module_info,          \
        !           385:                  ".objc_module_info", 0, 1)    \
        !           386: SECTION_FUNCTION (objc_protocol_section,       \
        !           387:                  in_objc_protocol,             \
        !           388:                  ".objc_protocol", 0, 1)       \
        !           389: SECTION_FUNCTION (objc_string_object_section,  \
        !           390:                  in_objc_string_object,        \
        !           391:                  ".objc_string_object", 0, 1)  \
        !           392: SECTION_FUNCTION (objc_class_names_section,    \
        !           393:                in_objc_class_names,            \
        !           394:                ".objc_class_names", 0, 1)      \
        !           395: SECTION_FUNCTION (objc_meth_var_names_section, \
        !           396:                in_objc_meth_var_names,         \
        !           397:                ".objc_meth_var_names", 0, 1)   \
        !           398: SECTION_FUNCTION (objc_meth_var_types_section, \
        !           399:                in_objc_meth_var_types,         \
        !           400:                ".objc_meth_var_types", 0, 1)   \
        !           401: SECTION_FUNCTION (objc_cls_refs_section,       \
        !           402:                in_objc_cls_refs,               \
        !           403:                ".objc_cls_refs", 0, 1)         \
        !           404:                                                \
        !           405: void                                           \
        !           406: objc_section_init ()                           \
        !           407: {                                              \
        !           408:   static int been_here = 0;                    \
        !           409:                                                \
        !           410:   if (been_here == 0)                          \
        !           411:     {                                          \
        !           412:       been_here = 1;                           \
        !           413:       objc_class_section ();                   \
        !           414:       objc_meta_class_section ();              \
        !           415:       objc_cat_cls_meth_section ();            \
        !           416:       objc_cat_inst_meth_section ();           \
        !           417:       objc_cls_meth_section ();                        \
        !           418:       objc_inst_meth_section ();               \
        !           419:       objc_selector_refs_section ();           \
        !           420:       objc_symbols_section ();                 \
        !           421:       objc_category_section ();                        \
        !           422:       objc_protocol_section ();                        \
        !           423:       objc_class_vars_section ();              \
        !           424:       objc_instance_vars_section ();           \
        !           425:       objc_module_info_section ();             \
        !           426:       objc_string_object_section ();           \
        !           427:       objc_class_names_section ();             \
        !           428:       objc_meth_var_names_section ();          \
        !           429:       objc_meth_var_types_section ();          \
        !           430:       objc_cls_refs_section ();                        \
        !           431:     }                                          \
        !           432: }
        !           433: 
        !           434: #undef READONLY_DATA_SECTION
        !           435: #define READONLY_DATA_SECTION const_section
        !           436: 
        !           437: #undef SELECT_SECTION
        !           438: #define SELECT_SECTION(exp,reloc)                              \
        !           439:   do                                                           \
        !           440:     {                                                          \
        !           441:       if (TREE_CODE (exp) == STRING_CST)                       \
        !           442:        {                                                       \
        !           443:          if (flag_writable_strings)                            \
        !           444:            data_section ();                                    \
        !           445:          else if (TREE_STRING_LENGTH (exp) !=                  \
        !           446:                   strlen (TREE_STRING_POINTER (exp)) + 1)      \
        !           447:            readonly_data_section ();                           \
        !           448:          else                                                  \
        !           449:            cstring_section ();                                 \
        !           450:        }                                                       \
        !           451:       else if (TREE_CODE (exp) == INTEGER_CST                  \
        !           452:               || TREE_CODE (exp) == REAL_CST)                  \
        !           453:         {                                                      \
        !           454:          tree size = TYPE_SIZE (TREE_TYPE (exp));              \
        !           455:                                                                \
        !           456:          if (TREE_CODE (size) == INTEGER_CST &&                \
        !           457:              TREE_INT_CST_LOW (size) == 4 &&                   \
        !           458:              TREE_INT_CST_HIGH (size) == 0)                    \
        !           459:            literal4_section ();                                \
        !           460:          else if (TREE_CODE (size) == INTEGER_CST &&           \
        !           461:              TREE_INT_CST_LOW (size) == 8 &&                   \
        !           462:              TREE_INT_CST_HIGH (size) == 0)                    \
        !           463:            literal8_section ();                                \
        !           464:          else                                                  \
        !           465:            readonly_data_section ();                           \
        !           466:        }                                                       \
        !           467:       else if (TREE_CODE (exp) == CONSTRUCTOR                          \
        !           468:               && TREE_TYPE (exp)                                       \
        !           469:               && TREE_CODE (TREE_TYPE (exp)) == RECORD_TYPE            \
        !           470:               && TYPE_NAME (TREE_TYPE (exp))                           \
        !           471:               && TREE_CODE (TYPE_NAME (TREE_TYPE (exp))) == IDENTIFIER_NODE \
        !           472:               && IDENTIFIER_POINTER (TYPE_NAME (TREE_TYPE (exp))))     \
        !           473:        {                                                               \
        !           474:          if (!strcmp (IDENTIFIER_POINTER (TYPE_NAME (TREE_TYPE (exp))), \
        !           475:                        "NXConstantString"))                            \
        !           476:          objc_string_object_section ();                                \
        !           477:        else if ((TREE_READONLY (exp) || TREE_CONSTANT (exp))           \
        !           478:                && !TREE_SIDE_EFFECTS (exp))                            \
        !           479:          readonly_data_section ();                                     \
        !           480:        else                                                            \
        !           481:          data_section ();                                              \
        !           482:       }                                                                        \
        !           483:       else if (TREE_CODE (exp) == VAR_DECL &&                          \
        !           484:               DECL_NAME (exp) &&                                       \
        !           485:               TREE_CODE (DECL_NAME (exp)) == IDENTIFIER_NODE &&        \
        !           486:               IDENTIFIER_POINTER (DECL_NAME (exp)) &&                  \
        !           487:               !strncmp (IDENTIFIER_POINTER (DECL_NAME (exp)), "_OBJC_", 6)) \
        !           488:        {                                                               \
        !           489:          const char *name = IDENTIFIER_POINTER (DECL_NAME (exp));      \
        !           490:                                                                        \
        !           491:          if (!strncmp (name, "_OBJC_CLASS_METHODS_", 20))              \
        !           492:            objc_cls_meth_section ();                                   \
        !           493:          else if (!strncmp (name, "_OBJC_INSTANCE_METHODS_", 23))      \
        !           494:            objc_inst_meth_section ();                                  \
        !           495:          else if (!strncmp (name, "_OBJC_CATEGORY_CLASS_METHODS_", 20)) \
        !           496:            objc_cat_cls_meth_section ();                               \
        !           497:          else if (!strncmp (name, "_OBJC_CATEGORY_INSTANCE_METHODS_", 23)) \
        !           498:            objc_cat_inst_meth_section ();                              \
        !           499:          else if (!strncmp (name, "_OBJC_CLASS_VARIABLES_", 22))       \
        !           500:            objc_class_vars_section ();                                 \
        !           501:          else if (!strncmp (name, "_OBJC_INSTANCE_VARIABLES_", 25))    \
        !           502:            objc_instance_vars_section ();                              \
        !           503:          else if (!strncmp (name, "_OBJC_CLASS_PROTOCOLS_", 22))       \
        !           504:            objc_cat_cls_meth_section ();                               \
        !           505:          else if (!strncmp (name, "_OBJC_CLASS_NAME_", 17))            \
        !           506:            objc_class_names_section ();                                \
        !           507:          else if (!strncmp (name, "_OBJC_METH_VAR_NAME_", 20))         \
        !           508:            objc_meth_var_names_section ();                             \
        !           509:          else if (!strncmp (name, "_OBJC_METH_VAR_TYPE_", 20))         \
        !           510:            objc_meth_var_types_section ();                             \
        !           511:          else if (!strncmp (name, "_OBJC_CLASS_REFERENCES", 22))       \
        !           512:            objc_cls_refs_section ();                                   \
        !           513:          else if (!strncmp (name, "_OBJC_CLASS_", 12))                 \
        !           514:            objc_class_section ();                                      \
        !           515:          else if (!strncmp (name, "_OBJC_METACLASS_", 16))             \
        !           516:            objc_meta_class_section ();                                 \
        !           517:          else if (!strncmp (name, "_OBJC_CATEGORY_", 15))              \
        !           518:            objc_category_section ();                                   \
        !           519:          else if (!strncmp (name, "_OBJC_SELECTOR_REFERENCES", 25))    \
        !           520:            objc_selector_refs_section ();                              \
        !           521:          else if (!strncmp (name, "_OBJC_SYMBOLS", 13))                \
        !           522:            objc_symbols_section ();                                    \
        !           523:          else if (!strncmp (name, "_OBJC_MODULES", 13))                \
        !           524:            objc_module_info_section ();                                \
        !           525:          else if (!strncmp (name, "_OBJC_PROTOCOL_INSTANCE_METHODS_", 32)) \
        !           526:            objc_cat_inst_meth_section ();                              \
        !           527:          else if (!strncmp (name, "_OBJC_PROTOCOL_CLASS_METHODS_", 29)) \
        !           528:            objc_cat_cls_meth_section ();                               \
        !           529:          else if (!strncmp (name, "_OBJC_PROTOCOL_REFS_", 20))         \
        !           530:            objc_cat_cls_meth_section ();                               \
        !           531:          else if (!strncmp (name, "_OBJC_PROTOCOL_", 15))              \
        !           532:            objc_protocol_section ();                                   \
        !           533:          else if ((TREE_READONLY (exp) || TREE_CONSTANT (exp))         \
        !           534:                && !TREE_SIDE_EFFECTS (exp))                            \
        !           535:            readonly_data_section ();                                   \
        !           536:          else                                                          \
        !           537:            data_section ();                                            \
        !           538:        }                                                               \
        !           539:       else if ((TREE_READONLY (exp) || TREE_CONSTANT (exp))    \
        !           540:               && !TREE_SIDE_EFFECTS (exp))                             \
        !           541:        readonly_data_section ();                                       \
        !           542:       else                                                             \
        !           543:         data_section ();                                               \
        !           544:     }                                                                  \
        !           545:   while (0)
        !           546: 
        !           547: #undef SELECT_RTX_SECTION
        !           548: #define SELECT_RTX_SECTION(mode, rtx)                                  \
        !           549:   do                                                                   \
        !           550:     {                                                                  \
        !           551:       if (GET_MODE_SIZE(mode) == 8)                                    \
        !           552:        literal8_section();                                             \
        !           553:       else if (GET_MODE_SIZE(mode) == 4)                               \
        !           554:        literal4_section();                                             \
        !           555:       else                                                             \
        !           556:        const_section ();                                               \
        !           557:     }                                                                  \
        !           558:   while (0)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.