Annotation of GNUtools/cc/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: #if NeXT || !defined(CROSS_COMPILE)
        !            26: #undef INCLUDE_DEFAULTS
        !            27: #define INCLUDE_DEFAULTS                               \
        !            28:   {                                                    \
        !            29:     { "/NextDeveloper/Headers/g++", 1},                        \
        !            30:     { "/NextDeveloper/Headers", 0},                    \
        !            31:     { "/NextDeveloper/Headers/ansi", 0},               \
        !            32:     { "/NextDeveloper/Headers/bsd", 0},                        \
        !            33:     { "/LocalDeveloper/Headers", 2},                   \
        !            34:     { "/LocalDeveloper/Headers/ansi", 0},              \
        !            35:     { "/LocalDeveloper/Headers/bsd", 0},               \
        !            36:     { "/NextDeveloper/2.0CompatibleHeaders", 0},       \
        !            37:     { STANDARD_INCLUDE_DIR, 0},                                \
        !            38:     { "/usr/include/bsd", 0},                          \
        !            39:     { "FakeSystemHeaders", 0},                         \
        !            40:     { 0, 0}                                            \
        !            41:   }
        !            42: #endif /* CROSS_COMPILE */
        !            43: 
        !            44: /* Report errors to make application. */
        !            45: 
        !            46: #define REPORT_EVENT(TYPE, NAME, FILE, LINE, MSG, ARG1, ARG2, ARG3)   \
        !            47:   make_support (TYPE, NAME, FILE, LINE, MSG, ARG1, ARG2, ARG3)
        !            48:   
        !            49: #undef EXTRA_FORMAT_FUNCTIONS
        !            50: #define EXTRA_FORMAT_FUNCTIONS \
        !            51:       "NXPrintf",      FALSE,  2,      FALSE,  \
        !            52:       "NXScanf",       TRUE,   2,      FALSE,  \
        !            53:       "NXVPrintf",     FALSE,  2,      TRUE,   \
        !            54:       "NXVScanf",      TRUE,   2,      TRUE,   \
        !            55:       "DPSPrintf",     FALSE,  2,      FALSE,  \
        !            56:       "bsd_sprintf",   FALSE,  2,      FALSE,  \
        !            57:       "bsd_vsprintf",  FALSE,  2,      TRUE,
        !            58: 
        !            59: /* Make the compiler look here for standard stuff */
        !            60: 
        !            61: #ifdef STANDARD_EXEC_PREFIX
        !            62: #undef STANDARD_EXEC_PREFIX
        !            63: #endif
        !            64: #define STANDARD_EXEC_PREFIX "/lib/"
        !            65: 
        !            66: /* Make -fnext-runtime the default.  */
        !            67: 
        !            68: #define NEXT_OBJC_RUNTIME
        !            69: 
        !            70: /* Support -arch xx flags */
        !            71: 
        !            72: #define NEXT_FAT_OUTPUT
        !            73: 
        !            74: /* support the precompiled header cpp */
        !            75: 
        !            76: #define NEXT_CPP_PRECOMP
        !            77: 
        !            78: /* Don't make the compiler think it knows which headerfiles are
        !            79:    c++ and which are not.   */
        !            80: /* #define NO_IMPLICIT_EXTERN_C */
        !            81: 
        !            82: /* change semantics of things around the compiler... */
        !            83: 
        !            84: #define NEXT_SEMANTICS
        !            85: 
        !            86: /* make the library functions in libgcc have only one underbar
        !            87:    in front of them.  */
        !            88: #define NEXT_LIBGCC_NAMES
        !            89: 
        !            90: /* We have atexit.  */
        !            91: 
        !            92: #define HAVE_ATEXIT
        !            93: 
        !            94: /* Enable recent gcc to compile under the old gcc in Next release 1.0.  */
        !            95: 
        !            96: #define __inline inline
        !            97: 
        !            98: /* wchar_t is unsigned short */
        !            99: 
        !           100: #undef WCHAR_TYPE
        !           101: #define WCHAR_TYPE "short unsigned int"
        !           102: #undef WCHAR_TYPE_SIZE
        !           103: #define WCHAR_TYPE_SIZE (BITS_PER_WORD / 2)
        !           104: 
        !           105: /* Don't default to pcc-struct-return, because gcc is the only compiler, and
        !           106:    we want to retain compatibility with older gcc versions.  */
        !           107: 
        !           108: #undef DEFAULT_PCC_STRUCT_RETURN
        !           109: #define DEFAULT_PCC_STRUCT_RETURN 0
        !           110: 
        !           111: /* These compiler options take n arguments.  */
        !           112: 
        !           113: #undef WORD_SWITCH_TAKES_ARG
        !           114: #define WORD_SWITCH_TAKES_ARG(STR)             \
        !           115:   (DEFAULT_WORD_SWITCH_TAKES_ARG (STR) ? 1 :   \
        !           116:    !strcmp (STR, "segalign") ? 1 :             \
        !           117:    !strcmp (STR, "seg1addr") ? 1 :             \
        !           118:    !strcmp (STR, "segaddr") ? 2 :              \
        !           119:    !strcmp (STR, "sectobjectsymbols") ? 2 :    \
        !           120:    !strcmp (STR, "segprot") ? 3 :              \
        !           121:    !strcmp (STR, "sectcreate") ? 3 :           \
        !           122:    !strcmp (STR, "sectalign") ? 3 :            \
        !           123:    !strcmp (STR, "segcreate") ? 3 :            \
        !           124:    !strcmp (STR, "sectorder") ? 3 :            \
        !           125:    !strcmp (STR, "siff-mask") ? 1 :            \
        !           126:    !strcmp (STR, "siff-filter") ? 1 :          \
        !           127:    !strcmp (STR, "siff-warning") ? 1 :         \
        !           128:    !strcmp (STR, "arch") ? 1 :                 \
        !           129:    !strcmp (STR, "NEXTSTEP-deployment-target") ? 1 : \
        !           130:    !strcmp (STR, "pagezero_size") ? 1 :                \
        !           131:    !strcmp (STR, "dylinker_install_name") ? 1 :        \
        !           132:    0)
        !           133: 
        !           134: #undef WORD_SWITCH
        !           135: #define WORD_SWITCH(STR)                       \
        !           136:   (WORD_SWITCH_TAKES_ARG (STR)                 \
        !           137:    || !strcmp (STR, "bsd")                     \
        !           138:    || !strcmp (STR, "object")                  \
        !           139:    || !strcmp (STR, "ObjC")                    \
        !           140:    || !strcmp (STR, "dylinker")                        \
        !           141:    || !strcmp (STR, "output_for_dyld")         \
        !           142:    || !strcmp (STR, "keep_private_externs")    \
        !           143:    || !strcmp (STR, "all_load"))
        !           144: 
        !           145: /* Machine dependent ccp options.  */
        !           146: 
        !           147: #ifndef NX_RELEASE
        !           148: #if defined (RC_RELEASE_3_3)
        !           149: #define NX_RELEASE "330"
        !           150: #else
        !           151: #if defined (RC_RELEASE_3_2hp) || defined (RC_RELEASE_3_2)
        !           152: #define NX_RELEASE "320"
        !           153: #else
        !           154: #define NX_RELEASE "330"
        !           155: #endif
        !           156: #endif
        !           157: #endif
        !           158: 
        !           159: #undef CPP_SPEC
        !           160: #define CPP_SPEC "%{!traditional: -D__STDC__}            \
        !           161:                   %{posixstrict:-D_POSIX_SOURCE}         \
        !           162:                   %{!posixstrict:%{bsd:-D__STRICT_BSD__} \
        !           163:                   %{posix:-D_POSIX_SOURCE}               \
        !           164:                   %{!ansi:-D_NEXT_SOURCE}}               \
        !           165:                  %{mdisable-fpregs:-D__NO_FP__}         \
        !           166:                  -DNX_COMPILER_RELEASE_3_0=300          \
        !           167:                  -DNX_COMPILER_RELEASE_3_1=310          \
        !           168:                  -DNX_COMPILER_RELEASE_3_2=320          \
        !           169:                  -DNX_COMPILER_RELEASE_3_3=330          \
        !           170:                  -DNX_CURRENT_COMPILER_RELEASE=" NX_RELEASE " \
        !           171:                  -DNS_TARGET_MINOR=%{k:3}%:{2} \
        !           172:                  -DNS_TARGET_MAJOR=3           \
        !           173:                  -DNS_TARGET=3%{k:3}%:{2}      \
        !           174:                   %{MD:-MD %M} %{MMD:-MMD %M}"
        !           175: 
        !           176: /* Machine dependent ld options.  */
        !           177: 
        !           178: #undef LINK_SPEC
        !           179: #define LINK_SPEC "%{Z} %{M} \
        !           180: %{execute*} %{preload*} %{fvmlib*} \
        !           181: %{segalign*} %{seg1addr*} %{segaddr*} %{segprot*} \
        !           182: %{pagezero_size*} \
        !           183: %{seglinkedit*} %{noseglinkedit*} \
        !           184: %{sectcreate*} %{sectalign*} %{sectobjectsymbols}\
        !           185: %{segcreate*} %{Mach*} %{whyload} %{w} \
        !           186: %{sectorder*} %{whatsloaded} %{ObjC} %{all_load} %{object} \
        !           187: %{dylinker} %{dylinker_install_name*} %{output_for_dyld} %{keep_private_externs} "
        !           188: 
        !           189: /* Machine dependent libraries.  */
        !           190: 
        !           191: #undef LIB_SPEC
        !           192: #define LIB_SPEC "%{!posix*:-lsys_s} %{posix*:-lposix}"
        !           193: 
        !           194: /* We specify crt0.o as -lcrt0.o so that ld will search the library path. */
        !           195: 
        !           196: #undef STARTFILE_SPEC
        !           197: #define STARTFILE_SPEC  \
        !           198:     "%{!posix*:%{pg:%{!k|object|preload:-lgcrt0.o}%:{-lgcrt1.o}}%{!pg: \
        !           199:      %{p:%e-p profiling is no longer supported.  Use -pg instead.} \
        !           200:      %{!p:%{!k|object|preload:-lcrt0.o}%:{-lcrt1.o}}}}\
        !           201:      %{posix*:%{pg:%{!k|object|preload:-lgposixcrt0.o}%:{-lgposixcrt1.o}}%{!pg: \
        !           202:      %{p:%e-p profiling is no longer supported.  Use -pg instead.} \
        !           203:      %{!p:%{!k|object|preload:-lposixcrt0.o}%:{-lposixcrt1.o}}}}"
        !           204: 
        !           205: /* Why not? */
        !           206: 
        !           207: #undef DOLLARS_IN_IDENTIFIERS
        !           208: #define DOLLARS_IN_IDENTIFIERS 2
        !           209: 
        !           210: /* Allow #sscs (but don't do anything). */
        !           211: 
        !           212: #define SCCS_DIRECTIVE
        !           213: 
        !           214: /* We use Dbx symbol format.  */
        !           215: 
        !           216: #undef SDB_DEBUGGING_INFO
        !           217: #undef XCOFF_DEBUGGING_INFO
        !           218: #define DBX_DEBUGGING_INFO
        !           219: 
        !           220: /* This saves a fair amount of space. */
        !           221: 
        !           222: #undef DBX_CONTIN_LENGTH
        !           223: #define DBX_CONTIN_LENGTH 0
        !           224: 
        !           225: /* These screw up NeXT's gdb at the moment, so don't use them. */
        !           226: 
        !           227: #undef DBX_OUTPUT_MAIN_SOURCE_DIRECTORY
        !           228: #define DBX_OUTPUT_MAIN_SOURCE_DIRECTORY(FILE, FILENAME)
        !           229: 
        !           230: /* These come from bsd386.h, but are specific to sequent, so make sure
        !           231:    they don't bite us.  */
        !           232: 
        !           233: #undef DBX_NO_XREFS
        !           234: #undef DBX_CONTIN_LENGTH
        !           235: 
        !           236: /* gdb needs a null N_SO at the end of each file for scattered loading. */
        !           237: 
        !           238: #undef DBX_OUTPUT_MAIN_SOURCE_FILE_END
        !           239: #define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME)                        \
        !           240:   fprintf (FILE,                                                       \
        !           241:           "\t.text\n\t.stabs \"%s\",%d,0,0,Letext\nLetext:\n",         \
        !           242:           "" , N_SO)
        !           243: 
        !           244: /* Don't use .gcc_compiled symbols to communicate with GDB;
        !           245:    They interfere with numerically sorted symbol lists. */
        !           246: 
        !           247: #undef ASM_IDENTIFY_GCC
        !           248: #define ASM_IDENTIFY_GCC(asm_out_file)
        !           249: #undef INIT_SECTION_ASM_OP
        !           250: #define INIT_SECTION_ASM_OP
        !           251: #undef INVOKE__main
        !           252: 
        !           253: #undef ASM_OUTPUT_CONSTRUCTOR
        !           254: #define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME)                       \
        !           255:   do { constructor_section ();                                  \
        !           256:        ASM_OUTPUT_ALIGN (FILE, 1);                              \
        !           257:        fprintf (FILE, "\t.long ");                              \
        !           258:        assemble_name (FILE, NAME);                              \
        !           259:        fprintf (FILE, "\n");                                    \
        !           260:        fprintf (FILE, ".reference .constructors_used\n");       \
        !           261:       } while (0)
        !           262: 
        !           263: #undef ASM_OUTPUT_DESTRUCTOR
        !           264: #define ASM_OUTPUT_DESTRUCTOR(FILE,NAME)                        \
        !           265:   do { destructor_section ();                                   \
        !           266:        ASM_OUTPUT_ALIGN (FILE, 1);                              \
        !           267:        fprintf (FILE, "\t.long ");                              \
        !           268:        assemble_name (FILE, NAME);                              \
        !           269:        fprintf (FILE, "\n");                                    \
        !           270:        fprintf (FILE, ".reference .destructors_used\n");        \
        !           271:       } while (0)
        !           272: 
        !           273: /* Don't output a .file directive.  That is only used by the assembler for
        !           274:    error reporting.  */
        !           275: #undef ASM_FILE_START
        !           276: #define ASM_FILE_START(FILE)
        !           277: 
        !           278: #undef ASM_FILE_END
        !           279: #define ASM_FILE_END(FILE)                                     \
        !           280:   do {                                                         \
        !           281:     extern char *language_string;                              \
        !           282:     if (strcmp (language_string, "GNU C++") == 0)              \
        !           283:       {                                                                \
        !           284:        constructor_section ();                                 \
        !           285:        destructor_section ();                                  \
        !           286:        ASM_OUTPUT_ALIGN (FILE, 1);                             \
        !           287:       }                                                                \
        !           288:   } while (0)
        !           289: 
        !           290: /* How to parse #pragma's */
        !           291: 
        !           292: #undef HANDLE_PRAGMA
        !           293: #define HANDLE_PRAGMA(finput) handle_pragma (finput, &get_directive_line)
        !           294: 
        !           295: /* Give methods pretty symbol names on NeXT. */
        !           296: 
        !           297: #undef OBJC_GEN_METHOD_LABEL
        !           298: #define OBJC_GEN_METHOD_LABEL(BUF,IS_INST,CLASS_NAME,CAT_NAME,SEL_NAME,NUM) \
        !           299:   do { if (CAT_NAME)                                                   \
        !           300:         sprintf (BUF, "%c[%s(%s) %s]", (IS_INST) ? '-' : '+',          \
        !           301:                  (CLASS_NAME), (CAT_NAME), (SEL_NAME));                \
        !           302:        else                                                            \
        !           303:         sprintf (BUF, "%c[%s %s]", (IS_INST) ? '-' : '+',              \
        !           304:                  (CLASS_NAME), (SEL_NAME));                            \
        !           305:      } while (0)
        !           306: 
        !           307: /* Wrap new method names in quotes so the assembler doesn't gag.
        !           308:    Make Objective-C internal symbols local.  */
        !           309: 
        !           310: #undef ASM_OUTPUT_LABELREF
        !           311: #define ASM_OUTPUT_LABELREF(FILE,NAME) \
        !           312:   do { if (NAME[0] == '+' || NAME[0] == '-') fprintf (FILE, "\"%s\"", NAME); \
        !           313:        else if (!strncmp (NAME, "_OBJC_", 6)) fprintf (FILE, "L%s", NAME);   \
        !           314:        else if (!strncmp (NAME, ".objc_class_name_", 17))              \
        !           315:         fprintf (FILE, "%s", NAME);                                    \
        !           316:        else fprintf (FILE, "_%s", NAME); } while (0)
        !           317: 
        !           318: #undef ALIGN_ASM_OP
        !           319: #define ALIGN_ASM_OP           ".align"
        !           320: 
        !           321: #undef ASM_OUTPUT_ALIGN
        !           322: #define ASM_OUTPUT_ALIGN(FILE,LOG)     \
        !           323:   if ((LOG) != 0)                      \
        !           324:     fprintf (FILE, "\t%s %d\n", ALIGN_ASM_OP, (LOG))
        !           325: 
        !           326: /* Ensure correct alignment of bss data.  */
        !           327: 
        !           328: #undef ASM_OUTPUT_ALIGNED_LOCAL
        !           329: #define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \
        !           330: ( fputs (".lcomm ", (FILE)),                           \
        !           331:   assemble_name ((FILE), (NAME)),                      \
        !           332:   fprintf ((FILE), ",%u,%u\n", (SIZE), floor_log2 ((ALIGN) / BITS_PER_UNIT)))
        !           333: 
        !           334: /* Output #ident as a .ident.  */
        !           335: 
        !           336: #undef ASM_OUTPUT_IDENT
        !           337: #define ASM_OUTPUT_IDENT(FILE, NAME)
        !           338: 
        !           339: /* The maximum alignment which the object file format can support.
        !           340:    For NeXT's Mach-O format, this is 2^15.  */
        !           341: 
        !           342: #undef MAX_OFILE_ALIGNMENT
        !           343: #define MAX_OFILE_ALIGNMENT 0x8000
        !           344: 
        !           345: /* Create new Mach-O sections. */
        !           346: 
        !           347: #undef SECTION_FUNCTION
        !           348: #define SECTION_FUNCTION(FUNCTION, SECTION, DIRECTIVE, WAS_TEXT, OBJC) \
        !           349: void                                                                   \
        !           350: FUNCTION ()                                                            \
        !           351: {                                                                      \
        !           352:   extern void text_section ();                                         \
        !           353:   extern void objc_section_init ();                                    \
        !           354:   extern int flag_no_mach_text_sections;                               \
        !           355:                                                                        \
        !           356:   if (WAS_TEXT && flag_no_mach_text_sections)                          \
        !           357:     text_section ();                                                   \
        !           358:   else if (in_section != SECTION)                                      \
        !           359:     {                                                                  \
        !           360:       if (OBJC)                                                                \
        !           361:        objc_section_init ();                                           \
        !           362:       fprintf (asm_out_file, "%s\n", DIRECTIVE);                       \
        !           363:       in_section = SECTION;                                            \
        !           364:     }                                                                  \
        !           365: }                                                                      \
        !           366: 
        !           367: #undef EXTRA_SECTIONS
        !           368: #define EXTRA_SECTIONS                                 \
        !           369:   in_const, in_cstring, in_literal4, in_literal8,      \
        !           370:   in_constructor, in_destructor,                       \
        !           371:   in_objc_class, in_objc_meta_class, in_objc_category, \
        !           372:   in_objc_class_vars, in_objc_instance_vars,           \
        !           373:   in_objc_cls_meth, in_objc_inst_meth,                 \
        !           374:   in_objc_cat_cls_meth, in_objc_cat_inst_meth,         \
        !           375:   in_objc_selector_refs,                               \
        !           376:   in_objc_symbols, in_objc_module_info,                        \
        !           377:   in_objc_protocol, in_objc_string_object,             \
        !           378:   in_objc_class_names, in_objc_meth_var_names,         \
        !           379:   in_objc_meth_var_types, in_objc_cls_refs,            \
        !           380:   in_machopic_nl_symbol_ptr,                           \
        !           381:   in_machopic_lazy_symbol_ptr,                         \
        !           382:   in_machopic_symbol_stub,                             \
        !           383:   in_machopic_picsymbol_stub
        !           384: 
        !           385: #undef EXTRA_SECTION_FUNCTIONS
        !           386: #define EXTRA_SECTION_FUNCTIONS                        \
        !           387: SECTION_FUNCTION (const_section,               \
        !           388:                  in_const,                     \
        !           389:                  ".const", 1, 0)               \
        !           390: SECTION_FUNCTION (cstring_section,             \
        !           391:                  in_cstring,                   \
        !           392:                  ".cstring", 1, 0)             \
        !           393: SECTION_FUNCTION (literal4_section,            \
        !           394:                  in_literal4,                  \
        !           395:                  ".literal4", 1, 0)            \
        !           396: SECTION_FUNCTION (literal8_section,            \
        !           397:                  in_literal8,                  \
        !           398:                  ".literal8", 1, 0)            \
        !           399: SECTION_FUNCTION (constructor_section,         \
        !           400:                  in_constructor,               \
        !           401:                  ".constructor", 0, 0)         \
        !           402: SECTION_FUNCTION (destructor_section,          \
        !           403:                  in_destructor,                \
        !           404:                  ".destructor", 0, 0)          \
        !           405: SECTION_FUNCTION (objc_class_section,          \
        !           406:                  in_objc_class,                \
        !           407:                  ".objc_class", 0, 1)          \
        !           408: SECTION_FUNCTION (objc_meta_class_section,     \
        !           409:                  in_objc_meta_class,           \
        !           410:                  ".objc_meta_class", 0, 1)     \
        !           411: SECTION_FUNCTION (objc_category_section,       \
        !           412:                  in_objc_category,             \
        !           413:                ".objc_category", 0, 1)         \
        !           414: SECTION_FUNCTION (objc_class_vars_section,     \
        !           415:                  in_objc_class_vars,           \
        !           416:                  ".objc_class_vars", 0, 1)     \
        !           417: SECTION_FUNCTION (objc_instance_vars_section,  \
        !           418:                  in_objc_instance_vars,        \
        !           419:                  ".objc_instance_vars", 0, 1)  \
        !           420: SECTION_FUNCTION (objc_cls_meth_section,       \
        !           421:                  in_objc_cls_meth,             \
        !           422:                  ".objc_cls_meth", 0, 1)       \
        !           423: SECTION_FUNCTION (objc_inst_meth_section,      \
        !           424:                  in_objc_inst_meth,            \
        !           425:                  ".objc_inst_meth", 0, 1)      \
        !           426: SECTION_FUNCTION (objc_cat_cls_meth_section,   \
        !           427:                  in_objc_cat_cls_meth,         \
        !           428:                  ".objc_cat_cls_meth", 0, 1)   \
        !           429: SECTION_FUNCTION (objc_cat_inst_meth_section,  \
        !           430:                  in_objc_cat_inst_meth,        \
        !           431:                  ".objc_cat_inst_meth", 0, 1)  \
        !           432: SECTION_FUNCTION (objc_selector_refs_section,  \
        !           433:                  in_objc_selector_refs,        \
        !           434:                  ".objc_message_refs", 0, 1)   \
        !           435: SECTION_FUNCTION (objc_symbols_section,                \
        !           436:                  in_objc_symbols,              \
        !           437:                  ".objc_symbols", 0, 1)        \
        !           438: SECTION_FUNCTION (objc_module_info_section,    \
        !           439:                  in_objc_module_info,          \
        !           440:                  ".objc_module_info", 0, 1)    \
        !           441: SECTION_FUNCTION (objc_protocol_section,       \
        !           442:                  in_objc_protocol,             \
        !           443:                  ".objc_protocol", 0, 1)       \
        !           444: SECTION_FUNCTION (objc_string_object_section,  \
        !           445:                  in_objc_string_object,        \
        !           446:                  ".objc_string_object", 0, 1)  \
        !           447: SECTION_FUNCTION (objc_class_names_section,    \
        !           448:                in_objc_class_names,            \
        !           449:                ".objc_class_names", 0, 1)      \
        !           450: SECTION_FUNCTION (objc_meth_var_names_section, \
        !           451:                in_objc_meth_var_names,         \
        !           452:                ".objc_meth_var_names", 0, 1)   \
        !           453: SECTION_FUNCTION (objc_meth_var_types_section, \
        !           454:                in_objc_meth_var_types,         \
        !           455:                ".objc_meth_var_types", 0, 1)   \
        !           456: SECTION_FUNCTION (objc_cls_refs_section,       \
        !           457:                in_objc_cls_refs,               \
        !           458:                ".objc_cls_refs", 0, 1)         \
        !           459:                                                \
        !           460: SECTION_FUNCTION (machopic_lazy_symbol_ptr_section,    \
        !           461:                in_machopic_lazy_symbol_ptr,            \
        !           462:                ".lazy_symbol_pointer", 0, 0)           \
        !           463: SECTION_FUNCTION (machopic_nl_symbol_ptr_section,      \
        !           464:                in_machopic_nl_symbol_ptr,              \
        !           465:                ".non_lazy_symbol_pointer", 0, 0)       \
        !           466: SECTION_FUNCTION (machopic_symbol_stub_section,                \
        !           467:                in_machopic_symbol_stub,                \
        !           468:                ".symbol_stub", 0, 0)                   \
        !           469: SECTION_FUNCTION (machopic_picsymbol_stub_section,     \
        !           470:                in_machopic_picsymbol_stub,             \
        !           471:                ".picsymbol_stub", 0, 0)                \
        !           472:                                                        \
        !           473: void                                           \
        !           474: objc_section_init ()                           \
        !           475: {                                              \
        !           476:   static int been_here = 0;                    \
        !           477:                                                \
        !           478:   if (been_here == 0)                          \
        !           479:     {                                          \
        !           480:       been_here = 1;                           \
        !           481:       objc_class_section ();                   \
        !           482:       objc_meta_class_section ();              \
        !           483:       objc_cat_cls_meth_section ();            \
        !           484:       objc_cat_inst_meth_section ();           \
        !           485:       objc_cls_meth_section ();                        \
        !           486:       objc_inst_meth_section ();               \
        !           487:       objc_selector_refs_section ();           \
        !           488:       objc_symbols_section ();                 \
        !           489:       objc_category_section ();                        \
        !           490:       objc_protocol_section ();                        \
        !           491:       objc_class_vars_section ();              \
        !           492:       objc_instance_vars_section ();           \
        !           493:       objc_module_info_section ();             \
        !           494:       objc_string_object_section ();           \
        !           495:       objc_class_names_section ();             \
        !           496:       objc_meth_var_names_section ();          \
        !           497:       objc_meth_var_types_section ();          \
        !           498:       objc_cls_refs_section ();                        \
        !           499:     }                                          \
        !           500: }
        !           501: 
        !           502: #undef READONLY_DATA_SECTION
        !           503: #define READONLY_DATA_SECTION const_section
        !           504: 
        !           505: #undef SELECT_SECTION
        !           506: #define SELECT_SECTION(exp,reloc)                              \
        !           507:   do                                                           \
        !           508:     {                                                          \
        !           509:       if (TREE_CODE (exp) == STRING_CST)                       \
        !           510:        {                                                       \
        !           511:          if (flag_writable_strings)                            \
        !           512:            data_section ();                                    \
        !           513:          else if (TREE_STRING_LENGTH (exp) !=                  \
        !           514:                   strlen (TREE_STRING_POINTER (exp)) + 1)      \
        !           515:            readonly_data_section ();                           \
        !           516:          else                                                  \
        !           517:            cstring_section ();                                 \
        !           518:        }                                                       \
        !           519:       else if (TREE_CODE (exp) == INTEGER_CST                  \
        !           520:               || TREE_CODE (exp) == REAL_CST)                  \
        !           521:         {                                                      \
        !           522:          tree size = TYPE_SIZE (TREE_TYPE (exp));              \
        !           523:                                                                \
        !           524:          if (TREE_CODE (size) == INTEGER_CST &&                \
        !           525:              TREE_INT_CST_LOW (size) == 4 &&                   \
        !           526:              TREE_INT_CST_HIGH (size) == 0)                    \
        !           527:            literal4_section ();                                \
        !           528:          else if (TREE_CODE (size) == INTEGER_CST &&           \
        !           529:              TREE_INT_CST_LOW (size) == 8 &&                   \
        !           530:              TREE_INT_CST_HIGH (size) == 0)                    \
        !           531:            literal8_section ();                                \
        !           532:          else                                                  \
        !           533:            readonly_data_section ();                           \
        !           534:        }                                                       \
        !           535:       else if (TREE_CODE (exp) == CONSTRUCTOR                          \
        !           536:               && TREE_TYPE (exp)                                       \
        !           537:               && TREE_CODE (TREE_TYPE (exp)) == RECORD_TYPE            \
        !           538:               && TYPE_NAME (TREE_TYPE (exp)))                          \
        !           539:        {                                                               \
        !           540:          tree name = TYPE_NAME (TREE_TYPE (exp));                      \
        !           541:          if (TREE_CODE (name) == TYPE_DECL)                            \
        !           542:            name = DECL_NAME (name);                                    \
        !           543:          if (!strcmp (IDENTIFIER_POINTER (name), "NXConstantString"))  \
        !           544:            objc_string_object_section ();                              \
        !           545:          else if ((TREE_READONLY (exp) || TREE_CONSTANT (exp))         \
        !           546:                && !TREE_SIDE_EFFECTS (exp))                            \
        !           547:            readonly_data_section ();                                   \
        !           548:          else                                                          \
        !           549:            data_section ();                                            \
        !           550:       }                                                                        \
        !           551:       else if (TREE_CODE (exp) == VAR_DECL &&                          \
        !           552:               DECL_NAME (exp) &&                                       \
        !           553:               TREE_CODE (DECL_NAME (exp)) == IDENTIFIER_NODE &&        \
        !           554:               IDENTIFIER_POINTER (DECL_NAME (exp)) &&                  \
        !           555:               !strncmp (IDENTIFIER_POINTER (DECL_NAME (exp)), "_OBJC_", 6)) \
        !           556:        {                                                               \
        !           557:          const char *name = IDENTIFIER_POINTER (DECL_NAME (exp));      \
        !           558:                                                                        \
        !           559:          if (!strncmp (name, "_OBJC_CLASS_METHODS_", 20))              \
        !           560:            objc_cls_meth_section ();                                   \
        !           561:          else if (!strncmp (name, "_OBJC_INSTANCE_METHODS_", 23))      \
        !           562:            objc_inst_meth_section ();                                  \
        !           563:          else if (!strncmp (name, "_OBJC_CATEGORY_CLASS_METHODS_", 20)) \
        !           564:            objc_cat_cls_meth_section ();                               \
        !           565:          else if (!strncmp (name, "_OBJC_CATEGORY_INSTANCE_METHODS_", 23)) \
        !           566:            objc_cat_inst_meth_section ();                              \
        !           567:          else if (!strncmp (name, "_OBJC_CLASS_VARIABLES_", 22))       \
        !           568:            objc_class_vars_section ();                                 \
        !           569:          else if (!strncmp (name, "_OBJC_INSTANCE_VARIABLES_", 25))    \
        !           570:            objc_instance_vars_section ();                              \
        !           571:          else if (!strncmp (name, "_OBJC_CLASS_PROTOCOLS_", 22))       \
        !           572:            objc_cat_cls_meth_section ();                               \
        !           573:          else if (!strncmp (name, "_OBJC_CLASS_NAME_", 17))            \
        !           574:            objc_class_names_section ();                                \
        !           575:          else if (!strncmp (name, "_OBJC_METH_VAR_NAME_", 20))         \
        !           576:            objc_meth_var_names_section ();                             \
        !           577:          else if (!strncmp (name, "_OBJC_METH_VAR_TYPE_", 20))         \
        !           578:            objc_meth_var_types_section ();                             \
        !           579:          else if (!strncmp (name, "_OBJC_CLASS_REFERENCES", 22))       \
        !           580:            objc_cls_refs_section ();                                   \
        !           581:          else if (!strncmp (name, "_OBJC_CLASS_", 12))                 \
        !           582:            objc_class_section ();                                      \
        !           583:          else if (!strncmp (name, "_OBJC_METACLASS_", 16))             \
        !           584:            objc_meta_class_section ();                                 \
        !           585:          else if (!strncmp (name, "_OBJC_CATEGORY_", 15))              \
        !           586:            objc_category_section ();                                   \
        !           587:          else if (!strncmp (name, "_OBJC_SELECTOR_REFERENCES", 25))    \
        !           588:            objc_selector_refs_section ();                              \
        !           589:          else if (!strncmp (name, "_OBJC_SYMBOLS", 13))                \
        !           590:            objc_symbols_section ();                                    \
        !           591:          else if (!strncmp (name, "_OBJC_MODULES", 13))                \
        !           592:            objc_module_info_section ();                                \
        !           593:          else if (!strncmp (name, "_OBJC_PROTOCOL_INSTANCE_METHODS_", 32)) \
        !           594:            objc_cat_inst_meth_section ();                              \
        !           595:          else if (!strncmp (name, "_OBJC_PROTOCOL_CLASS_METHODS_", 29)) \
        !           596:            objc_cat_cls_meth_section ();                               \
        !           597:          else if (!strncmp (name, "_OBJC_PROTOCOL_REFS_", 20))         \
        !           598:            objc_cat_cls_meth_section ();                               \
        !           599:          else if (!strncmp (name, "_OBJC_PROTOCOL_", 15))              \
        !           600:            objc_protocol_section ();                                   \
        !           601:          else if ((TREE_READONLY (exp) || TREE_CONSTANT (exp))         \
        !           602:                && !TREE_SIDE_EFFECTS (exp))                            \
        !           603:            readonly_data_section ();                                   \
        !           604:          else                                                          \
        !           605:            data_section ();                                            \
        !           606:        }                                                               \
        !           607:       else if ((TREE_READONLY (exp) || TREE_CONSTANT (exp))    \
        !           608:               && !TREE_SIDE_EFFECTS (exp))                             \
        !           609:        readonly_data_section ();                                       \
        !           610:       else                                                             \
        !           611:         data_section ();                                               \
        !           612:     }                                                                  \
        !           613:   while (0)
        !           614: 
        !           615: #undef SELECT_RTX_SECTION
        !           616: #define SELECT_RTX_SECTION(mode, rtx)                                  \
        !           617:   do                                                                   \
        !           618:     {                                                                  \
        !           619:       if (GET_MODE_SIZE(mode) == 8)                                    \
        !           620:        literal8_section();                                             \
        !           621:       else if (GET_MODE_SIZE(mode) == 4)                               \
        !           622:        literal4_section();                                             \
        !           623:       else                                                             \
        !           624:        const_section ();                                               \
        !           625:     }                                                                  \
        !           626:   while (0)
        !           627: 
        !           628: 
        !           629: #define LINK_COMMAND_SPEC "\
        !           630: %{!fsyntax-only: \
        !           631:  %{!c:%{!M:%{!MM:%{!E:%{!precomp:%{!S:%{ObjC++|.C|.M|.cc:ld++}%:{ld} %l %X \
        !           632:                        -arch %T %{@:-arch_multiple} \
        !           633:                        %{force_cpusubtype_ALL}\
        !           634:                        %{@:-o %f%g-%T.out}%{!@:%{o}} \
        !           635:                         -NEXTSTEP-deployment-target 3.%{k:3}%:{2} \
        !           636:                        %{A} %{d} %{e*} \
        !           637:                        %{m} %{N} %{n} \
        !           638:                        %{p} \
        !           639:                        %{r} %{s} %{S} %{T*} %{t} %{u*} %{X} %{x} %{z} %{y*} \
        !           640:                        %{!A:%{!nostartfiles:%{!nostdlib:%S}}} %{static:}\
        !           641:                        %{L*} %D %o \
        !           642:                        %{!nostdlib: %L %{!A:%E}}\n }}}}}}}"
        !           643: 
        !           644: 
        !           645: #define DECLARE_UNRESOLVED_REFERENCE(NAME)                             \
        !           646:     do { extern FILE* asm_out_file;                                    \
        !           647:         if (flag_pic) fprintf (asm_out_file, "\t.lazy_reference ");    \
        !           648:         else fprintf (asm_out_file, "\t.reference ");                  \
        !           649:         assemble_name (asm_out_file, NAME);                            \
        !           650:         fprintf (asm_out_file, "\n");                                  \
        !           651:        } while (0)
        !           652: 
        !           653: 
        !           654: #define DECLARE_CLASS_REFERENCE(NAME) \
        !           655:     do { extern FILE* asm_out_file; fprintf (asm_out_file, "\t");      \
        !           656:          assemble_name (asm_out_file, NAME);                           \
        !           657:         fprintf (asm_out_file, "=0\n");                                \
        !           658:         assemble_global (NAME);                                        \
        !           659:        } while (0)
        !           660: 
        !           661: #define GO_IF_CPLUSPLUS_INCLUDE_NAME(NAME,LABEL)               \
        !           662:  do { char *_p = (NAME);                                       \
        !           663:       _next: switch (*_p) { case 0: break;                     \
        !           664:       case 'c': case 'C': case 'G': case 'g':                  \
        !           665:       if (_p[1] == '+' && _p[2] == '+') goto LABEL; break;     \
        !           666:       default: _p += 1; goto _next; }} while (0)
        !           667: 
        !           668: #undef ASM_GLOBALIZE_LABEL
        !           669: #define ASM_GLOBALIZE_LABEL(FILE,NAME) \
        !           670:  do { const char* _x = (NAME); if (!!strncmp (_x, "_OBJC_", 6)) { \
        !           671:   (fputs (".globl ", FILE), assemble_name (FILE, _x), fputs ("\n", FILE)); \
        !           672:  }} while (0)
        !           673: 
        !           674: #ifdef NEXT_LIBGCC_NAMES
        !           675: #include "nextstep.def"
        !           676: #endif
        !           677: 
        !           678: #ifndef JUMP_TABLES_IN_TEXT_SECTION
        !           679: #define JUMP_TABLES_IN_TEXT_SECTION 1
        !           680: #endif

unix.superglobalmegacorp.com

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