Annotation of GNUtools/cc/config/pa/next-pdo.h, revision 1.1

1.1     ! root        1: /* Target definitions for GNU compiler for hppa running HPUX with NeXT pdo
        !             2:    Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
        !             3: 
        !             4: This file is part of GNU CC.
        !             5: 
        !             6: GNU CC is free software; you can redistribute it and/or modify
        !             7: it under the terms of the GNU General Public License as published by
        !             8: the Free Software Foundation; either version 2, or (at your option)
        !             9: any later version.
        !            10: 
        !            11: GNU CC is distributed in the hope that it will be useful,
        !            12: but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            14: GNU General Public License for more details.
        !            15: 
        !            16: You should have received a copy of the GNU General Public License
        !            17: along with GNU CC; see the file COPYING.  If not, write to
        !            18: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
        !            19: 
        !            20: /* added <jf> */
        !            21: #define USE_GAS
        !            22: 
        !            23: /* this may not work for double values --  hard coded to 32 bit entities */
        !            24: 
        !            25: #define OBJC_FORWARDING_REG_OFFSET(ISREG, OFF, REGNO) \
        !            26:   do { OFF = (FP_REG_CLASS_P( REGNO_REG_CLASS(REGNO)) \
        !            27:               ? -2 * ((REGNO) - 44) - 4               \
        !            28:               :  4 * ((REGNO) - 26) - 4);             \
        !            29:        ISREG = 0; } while (0)
        !            30: 
        !            31: /* pa1-ghpux originally includes pa-ghpux.h and pa.h */
        !            32: #include "pa/pa1-ghpux.h"
        !            33: 
        !            34: #define NEXT_OBJC_RUNTIME
        !            35: 
        !            36: #define OBJC_HPUX_PADDING
        !            37: 
        !            38: #define NEXT_PDO
        !            39: 
        !            40: /* 
        !            41:  * overrides for the funky places we put stuff
        !            42:  *     there was a bug in the beta where the /usr was not prefixed
        !            43:  */
        !            44: #undef INCLUDE_DEFAULTS
        !            45: #define INCLUDE_DEFAULTS                               \
        !            46:   {                                                    \
        !            47:     { GPLUSPLUS_INCLUDE_DIR, 1},                       \
        !            48:     { GCC_INCLUDE_DIR, 0},                             \
        !            49:     { LOCAL_INCLUDE_DIR, 0},                           \
        !            50:     { "/usr/NextDeveloper/Headers", 0},                        \
        !            51:     { "/usr/NextDeveloper/Headers/ansi", 0},           \
        !            52:     { "/usr/NextDeveloper/Headers/bsd", 0},            \
        !            53:     { "/usr/LocalDeveloper/Headers", 0},               \
        !            54:     { "/usr/LocalDeveloper/Headers/ansi", 0},          \
        !            55:     { "/usr/LocalDeveloper/Headers/bsd", 0},           \
        !            56:     { STANDARD_INCLUDE_DIR, 0},                                \
        !            57:     { 0, 0}                                            \
        !            58:   }
        !            59: 
        !            60: /*
        !            61: #define REPORT_EVENT(TYPE, NAME, FILE, LINE, MSG, ARG1, ARG2, ARG3)    \
        !            62:   make_support (TYPE, NAME, FILE, LINE, MSG, ARG1, ARG2, ARG3)
        !            63: */
        !            64: 
        !            65: /*
        !            66:  * override default prefix behavior
        !            67:  */
        !            68: 
        !            69: #undef STANDARD_EXEC_PREFIX
        !            70: #define STANDARD_EXEC_PREFIX "/usr/NextDeveloper/lib/"
        !            71: /* when looking for specs */
        !            72: #undef STANDARD_STARTFILE_PREFIX
        !            73: #define STANDARD_STARTFILE_PREFIX "/usr/NextDeveloper/lib/"
        !            74: #undef TOOLDIR_BASE_PREFIX
        !            75: #define TOOLDIR_BASE_PREFIX "/usr/NextDeveloper/"
        !            76: 
        !            77: /*
        !            78:  * specs
        !            79:  *
        !            80:  */
        !            81: 
        !            82: /* should -L really be in LIB_SPEC ? <jf> */
        !            83: #undef LIB_SPEC
        !            84: #define LIB_SPEC "%{!p:%{!pg:-L/usr/NextDeveloper/lib -lpdo -lc -lm}}%{p:-L/usr/NextDeveloper/lib -L/lib/libp/ -lpdo -lc -lm}%{pg:-L/usr/NextDeveloper/lib -L/lib/libp/ -lpdo -lc -lm}"
        !            85: 
        !            86: #ifndef STARTFILE_SPEC
        !            87: #define STARTFILE_SPEC  \
        !            88:   "%{pg:gcrt0.o%s crtPDO.o%s}%{!pg:%{p:mcrt0.o%s crtPDO.o%s}%{!p:crt0.o%s crtPDO.o%s}}"
        !            89: #endif
        !            90: 
        !            91: /* config.h can define ENDFILE_SPEC to override the default crtn files.  */
        !            92: #ifndef ENDFILE_SPEC
        !            93: #define ENDFILE_SPEC "crtnPDO.o%s"
        !            94: #endif
        !            95: 
        !            96: 
        !            97: /* RIPPED OFF FROM nextstep.h */
        !            98: 
        !            99: /* Give methods pretty symbol names on NeXT. */
        !           100: 
        !           101: #undef OBJC_GEN_METHOD_LABEL
        !           102: #define OBJC_GEN_METHOD_LABEL(BUF,IS_INST,CLASS_NAME,CAT_NAME,SEL_NAME,NUM) \
        !           103:   do { if (CAT_NAME)                                                   \
        !           104:         sprintf (BUF, "%c[%s(%s) %s]", (IS_INST) ? '-' : '+',          \
        !           105:                  (CLASS_NAME), (CAT_NAME), (SEL_NAME));                \
        !           106:        else                                                            \
        !           107:         sprintf (BUF, "%c[%s %s]", (IS_INST) ? '-' : '+',              \
        !           108:                  (CLASS_NAME), (SEL_NAME));                            \
        !           109:      } while (0)
        !           110: 
        !           111: /* Wrap new method names in quotes so the assembler doesn't gag.
        !           112:    Make Objective-C internal symbols local.  */
        !           113: 
        !           114: /* work around the gnu'ism of the @ at the begining of the symbol name */
        !           115: 
        !           116: #undef ASM_OUTPUT_LABELREF
        !           117: #define ASM_OUTPUT_LABELREF(FILE,NAME) \
        !           118:   do {  \
        !           119:        if (FUNCTION_NAME_P (NAME) && (NAME[1] == '+' || NAME[1] == '-')) \
        !           120:                fprintf (FILE, "\"%s\"", NAME+1); \
        !           121:        else if (NAME[0] == '+' || NAME[0] == '-') \
        !           122:                fprintf (FILE, "\"%s\"", NAME[0]); \
        !           123:        else if (!strncmp (NAME, "_OBJC_", 6)) \
        !           124:                fprintf (FILE, "L%s", NAME);   \
        !           125:        else if (!strncmp (NAME, ".objc_class_name_", 17))              \
        !           126:                fprintf (FILE, "%s", NAME);                             \
        !           127:        else fprintf ((FILE), "%s", (NAME) + (FUNCTION_NAME_P (NAME) ? 1 : 0)); } while (0)
        !           128: 
        !           129: 
        !           130: /* This is how to output an assembler line defining an `int' constant.  
        !           131:        this is used in the OBJC_INSTANCE_METHODS segment 
        !           132:        removed code that put P% infront of code being linked to shared libs 
        !           133:  */
        !           134: 
        !           135: #undef ASM_OUTPUT_INT
        !           136: #define ASM_OUTPUT_INT(FILE,VALUE)  \
        !           137: { fprintf (FILE, "\t.word ");                  \
        !           138:   if (function_label_operand (VALUE, VOIDmode)  \
        !           139:       && in_section != in_text)                        \
        !           140:     fprintf (FILE, "P%%");                     \
        !           141:   output_addr_const (FILE, (VALUE));           \
        !           142:   fprintf (FILE, "\n");}
        !           143: 
        !           144: /* from josh */
        !           145: 
        !           146: 
        !           147: #undef SECTION_FUNCTION
        !           148: #define SECTION_FUNCTION(FUNCTION, SECTION, SUBSPACE)                  \
        !           149: void                                                                   \
        !           150: FUNCTION ()                                                            \
        !           151: {                                                                      \
        !           152:   extern void text_section ();                                         \
        !           153:   extern void objc_section_init ();                                    \
        !           154:   extern int flag_no_mach_text_sections;                               \
        !           155:   static int been_here = 0;                                            \
        !           156:                                                                        \
        !           157:   if (in_section != SECTION)                                           \
        !           158:     {                                                                  \
        !           159:       objc_section_init ();                                            \
        !           160:       fprintf (asm_out_file, "\t.SPACE $PRIVATE$\n");                  \
        !           161:       fprintf (asm_out_file, "\t.SUBSPA %s", SUBSPACE);                        \
        !           162:       if (!been_here) {                                                        \
        !           163:         fprintf(asm_out_file,",QUAD=1,ALIGN=4,ACCESS=31");             \
        !           164:        been_here = 1;                                                  \
        !           165:         }                                                              \
        !           166:       fprintf(asm_out_file,"\n");                                      \
        !           167:       in_section = SECTION;                                            \
        !           168:     }                                                                  \
        !           169: }                                                                      \
        !           170: 
        !           171: #undef EXTRA_SECTIONS
        !           172: #define EXTRA_SECTIONS in_bss, in_readonly_data,       \
        !           173:   in_objc_class, in_objc_meta_class, in_objc_category, \
        !           174:   in_objc_class_vars, in_objc_instance_vars,           \
        !           175:   in_objc_cls_meth, in_objc_inst_meth,                 \
        !           176:   in_objc_cat_cls_meth, in_objc_cat_inst_meth,         \
        !           177:   in_objc_selector_refs,                               \
        !           178:   in_objc_symbols, in_objc_module_info,                        \
        !           179:   in_objc_protocol, in_objc_string_object,             \
        !           180:   in_objc_class_names, in_objc_meth_var_names,         \
        !           181:   in_objc_meth_var_types, in_objc_cls_refs
        !           182: 
        !           183: #undef EXTRA_SECTION_FUNCTIONS
        !           184: #define EXTRA_SECTION_FUNCTIONS                        \
        !           185: void                                           \
        !           186: bss_section ()                                 \
        !           187: {                                              \
        !           188:   if (in_section != in_bss)                    \
        !           189:     {                                          \
        !           190:       fprintf (asm_out_file, "%s\n",           \
        !           191:               BSS_SECTION_ASM_OP);             \
        !           192:       in_section = in_bss;                     \
        !           193:     }                                          \
        !           194: }                                              \
        !           195: void                                           \
        !           196: readonly_data ()                               \
        !           197: {                                              \
        !           198:   if (in_section != in_readonly_data)          \
        !           199:     {                                          \
        !           200:       fprintf (asm_out_file, "%s\n",           \
        !           201:               READONLY_DATA_ASM_OP);           \
        !           202:       in_section = in_readonly_data;           \
        !           203:     }                                          \
        !           204: }                                              \
        !           205: SECTION_FUNCTION (objc_class_section,          \
        !           206:                  in_objc_class,                \
        !           207:                  "$$OBJC_CLASS$$")             \
        !           208: SECTION_FUNCTION (objc_meta_class_section,     \
        !           209:                  in_objc_meta_class,           \
        !           210:                  "$$OBJC_METACLASS$$")         \
        !           211: SECTION_FUNCTION (objc_category_section,       \
        !           212:                  in_objc_category,             \
        !           213:                 "$$OBJC_CATEGORY$$")           \
        !           214: SECTION_FUNCTION (objc_class_vars_section,     \
        !           215:                  in_objc_class_vars,           \
        !           216:                  "$$OBJC_CLASS_VARS$$")        \
        !           217: SECTION_FUNCTION (objc_instance_vars_section,  \
        !           218:                  in_objc_instance_vars,        \
        !           219:                  "$$OBJC_INSTANCE_VARS$$")     \
        !           220: SECTION_FUNCTION (objc_cls_meth_section,       \
        !           221:                  in_objc_cls_meth,             \
        !           222:                  "$$OBJC_CLS_METH$$")          \
        !           223: SECTION_FUNCTION (objc_inst_meth_section,      \
        !           224:                  in_objc_inst_meth,            \
        !           225:                  "$$OBJC_INST_METHODS$$")      \
        !           226: SECTION_FUNCTION (objc_cat_cls_meth_section,   \
        !           227:                  in_objc_cat_cls_meth,         \
        !           228:                  "$$OBJC_CAT_CLS_METH$$")      \
        !           229: SECTION_FUNCTION (objc_cat_inst_meth_section,  \
        !           230:                  in_objc_cat_inst_meth,        \
        !           231:                  "$$OBJC_CAT_INST_METH$$")     \
        !           232: SECTION_FUNCTION (objc_selector_refs_section,  \
        !           233:                  in_objc_selector_refs,        \
        !           234:                  "$$OBJC_MESSAGE_REFS$$")      \
        !           235: SECTION_FUNCTION (objc_symbols_section,                \
        !           236:                  in_objc_symbols,              \
        !           237:                  "$$OBJC_SYMBOLS$$")           \
        !           238: SECTION_FUNCTION (objc_module_info_section,    \
        !           239:                  in_objc_module_info,          \
        !           240:                  "$$OBJC_MODULES$$")           \
        !           241: SECTION_FUNCTION (objc_protocol_section,       \
        !           242:                  in_objc_protocol,             \
        !           243:                  "$$OBJC_PROTOCOL$$")          \
        !           244: SECTION_FUNCTION (objc_string_object_section,  \
        !           245:                  in_objc_string_object,        \
        !           246:                  "$$OBJC_STRING_OBJECT$$")     \
        !           247: SECTION_FUNCTION (objc_class_names_section,    \
        !           248:                in_objc_class_names,            \
        !           249:                "$$OBJC_CLASS_NAMES$$")         \
        !           250: SECTION_FUNCTION (objc_meth_var_names_section, \
        !           251:                in_objc_meth_var_names,         \
        !           252:                "$$OBJC_METH_VAR_NAMES$$")      \
        !           253: SECTION_FUNCTION (objc_meth_var_types_section, \
        !           254:                in_objc_meth_var_types,         \
        !           255:                "$$OBJC_METH_VAR_TYPES$$")      \
        !           256: SECTION_FUNCTION (objc_cls_refs_section,       \
        !           257:                in_objc_cls_refs,               \
        !           258:                "$$OBJC_CLS_REFS$$")            \
        !           259:                                                \
        !           260: void                                           \
        !           261: objc_section_init ()                           \
        !           262: {                                              \
        !           263:   static int been_here = 0;                    \
        !           264:                                                \
        !           265:   if (been_here == 0)                          \
        !           266:     {                                          \
        !           267:       been_here = 1;                           \
        !           268:       objc_class_section ();                   \
        !           269:       objc_meta_class_section ();              \
        !           270:       objc_cat_cls_meth_section ();            \
        !           271:       objc_cat_inst_meth_section ();           \
        !           272:       objc_cls_meth_section ();                        \
        !           273:       objc_inst_meth_section ();               \
        !           274:       objc_selector_refs_section ();           \
        !           275:       objc_symbols_section ();                 \
        !           276:       objc_category_section ();                        \
        !           277:       objc_protocol_section ();                        \
        !           278:       objc_class_vars_section ();              \
        !           279:       objc_instance_vars_section ();           \
        !           280:       objc_module_info_section ();             \
        !           281:       objc_string_object_section ();           \
        !           282:       objc_class_names_section ();             \
        !           283:       objc_meth_var_names_section ();          \
        !           284:       objc_meth_var_types_section ();          \
        !           285:       objc_cls_refs_section ();                        \
        !           286:     }                                          \
        !           287: }
        !           288: 
        !           289: /* different from NS version in that no literalX_section */ 
        !           290: #undef SELECT_SECTION
        !           291: #define SELECT_SECTION(exp,reloc)                              \
        !           292:   do                                                           \
        !           293:     {                                                          \
        !           294:       if (TREE_CODE (exp) == STRING_CST)                       \
        !           295:        {                                                       \
        !           296:          if (flag_writable_strings)                            \
        !           297:            data_section ();                                    \
        !           298:          else  \
        !           299:            readonly_data_section ();                           \
        !           300:        }                                                       \
        !           301:       else if (TREE_CODE (exp) == INTEGER_CST                  \
        !           302:               || TREE_CODE (exp) == REAL_CST)                  \
        !           303:         {                                                      \
        !           304:            readonly_data_section ();                           \
        !           305:        }                                                       \
        !           306:       else if (TREE_CODE (exp) == CONSTRUCTOR                          \
        !           307:               && TREE_TYPE (exp)                                       \
        !           308:               && TREE_CODE (TREE_TYPE (exp)) == RECORD_TYPE            \
        !           309:               && TYPE_NAME (TREE_TYPE (exp))                           \
        !           310:               && TREE_CODE (TYPE_NAME (TREE_TYPE (exp))) == IDENTIFIER_NODE \
        !           311:               && IDENTIFIER_POINTER (TYPE_NAME (TREE_TYPE (exp))))     \
        !           312:       {                                                                \
        !           313:          if (!strcmp (IDENTIFIER_POINTER (TYPE_NAME (TREE_TYPE (exp))), \
        !           314:                        "NXConstantString"))                            \
        !           315:          objc_string_object_section ();                                \
        !           316:        else if ((TREE_READONLY (exp) || TREE_CONSTANT (exp))           \
        !           317:                && !TREE_SIDE_EFFECTS (exp))                            \
        !           318:          readonly_data_section ();                                     \
        !           319:        else                                                            \
        !           320:          data_section ();                                              \
        !           321:       }                                                                        \
        !           322:       else if (TREE_CODE (exp) == VAR_DECL &&                          \
        !           323:               DECL_NAME (exp) &&                                       \
        !           324:               TREE_CODE (DECL_NAME (exp)) == IDENTIFIER_NODE &&        \
        !           325:               IDENTIFIER_POINTER (DECL_NAME (exp)) &&                  \
        !           326:               !strncmp (IDENTIFIER_POINTER (DECL_NAME (exp)), "_OBJC_", 6)) \
        !           327:        {                                                               \
        !           328:          const char *name = IDENTIFIER_POINTER (DECL_NAME (exp));      \
        !           329:                                                                        \
        !           330:          if (!strncmp (name, "_OBJC_CLASS_METHODS_", 20))              \
        !           331:            objc_cls_meth_section ();                                   \
        !           332:          else if (!strncmp (name, "_OBJC_INSTANCE_METHODS_", 23))      \
        !           333:            objc_inst_meth_section ();                                  \
        !           334:          else if (!strncmp (name, "_OBJC_CATEGORY_CLASS_METHODS_", 20)) \
        !           335:            objc_cat_cls_meth_section ();                               \
        !           336:          else if (!strncmp (name, "_OBJC_CATEGORY_INSTANCE_METHODS_", 23)) \
        !           337:            objc_cat_inst_meth_section ();                              \
        !           338:          else if (!strncmp (name, "_OBJC_CLASS_VARIABLES_", 22))       \
        !           339:            objc_class_vars_section ();                                 \
        !           340:          else if (!strncmp (name, "_OBJC_INSTANCE_VARIABLES_", 25))    \
        !           341:            objc_instance_vars_section ();                              \
        !           342:          else if (!strncmp (name, "_OBJC_CLASS_PROTOCOLS_", 22))       \
        !           343:            objc_cat_cls_meth_section ();                               \
        !           344:          else if (!strncmp (name, "_OBJC_CLASS_NAME_", 17))            \
        !           345:            objc_class_names_section ();                                \
        !           346:          else if (!strncmp (name, "_OBJC_METH_VAR_NAME_", 20))         \
        !           347:            objc_meth_var_names_section ();                             \
        !           348:          else if (!strncmp (name, "_OBJC_METH_VAR_TYPE_", 20))         \
        !           349:            objc_meth_var_types_section ();                             \
        !           350:          else if (!strncmp (name, "_OBJC_CLASS_REFERENCES", 22))       \
        !           351:            objc_cls_refs_section ();                                   \
        !           352:          else if (!strncmp (name, "_OBJC_CLASS_", 12))                 \
        !           353:            objc_class_section ();                                      \
        !           354:          else if (!strncmp (name, "_OBJC_METACLASS_", 16))             \
        !           355:            objc_meta_class_section ();                                 \
        !           356:          else if (!strncmp (name, "_OBJC_CATEGORY_", 15))              \
        !           357:            objc_category_section ();                                   \
        !           358:          else if (!strncmp (name, "_OBJC_SELECTOR_REFERENCES", 25))    \
        !           359:            objc_selector_refs_section ();                              \
        !           360:          else if (!strncmp (name, "_OBJC_SYMBOLS", 13))                \
        !           361:            objc_symbols_section ();                                    \
        !           362:          else if (!strncmp (name, "_OBJC_MODULES", 13))                \
        !           363:            objc_module_info_section ();                                \
        !           364:          else if (!strncmp (name, "_OBJC_PROTOCOL_INSTANCE_METHODS_", 32)) \
        !           365:            objc_cat_inst_meth_section ();                              \
        !           366:          else if (!strncmp (name, "_OBJC_PROTOCOL_CLASS_METHODS_", 29)) \
        !           367:            objc_cat_cls_meth_section ();                               \
        !           368:          else if (!strncmp (name, "_OBJC_PROTOCOL_REFS_", 20))         \
        !           369:            objc_cat_cls_meth_section ();                               \
        !           370:          else if (!strncmp (name, "_OBJC_PROTOCOL_", 15))              \
        !           371:            objc_protocol_section ();                                   \
        !           372:          else if ((TREE_READONLY (exp) || TREE_CONSTANT (exp))         \
        !           373:                && !TREE_SIDE_EFFECTS (exp))                            \
        !           374:            readonly_data_section ();                                   \
        !           375:          else                                                          \
        !           376:            data_section ();                                            \
        !           377:        }                                                               \
        !           378:       else if ((TREE_READONLY (exp) || TREE_CONSTANT (exp))    \
        !           379:               && !TREE_SIDE_EFFECTS (exp))                             \
        !           380:        readonly_data_section ();                                       \
        !           381:       else                                                             \
        !           382:         data_section ();                                               \
        !           383:     }                                                                  \
        !           384:   while (0)
        !           385: 
        !           386: /* this was added to support unresolved references in the gas assembler */
        !           387: #undef DECLARE_UNRESOLVED_REFERENCE
        !           388: 
        !           389: 
        !           390: 

unix.superglobalmegacorp.com

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