OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [config/] [i386/] [i386elf.h] - Blame information for rev 154

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 38 julius
/* Target definitions for GCC for Intel 80386 using ELF
2
   Copyright (C) 1988, 1991, 1995, 2000, 2001, 2002, 2007
3
   Free Software Foundation, Inc.
4
 
5
   Derived from sysv4.h written by Ron Guilmette (rfg@netcom.com).
6
 
7
This file is part of GCC.
8
 
9
GCC is free software; you can redistribute it and/or modify
10
it under the terms of the GNU General Public License as published by
11
the Free Software Foundation; either version 3, or (at your option)
12
any later version.
13
 
14
GCC is distributed in the hope that it will be useful,
15
but WITHOUT ANY WARRANTY; without even the implied warranty of
16
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
GNU General Public License for more details.
18
 
19
You should have received a copy of the GNU General Public License
20
along with GCC; see the file COPYING3.  If not see
21
<http://www.gnu.org/licenses/>.  */
22
 
23
/* Use stabs instead of DWARF debug format.  */
24
#undef  PREFERRED_DEBUGGING_TYPE
25
#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
26
 
27
#define TARGET_VERSION fprintf (stderr, " (i386 bare ELF target)");
28
 
29
/* By default, target has a 80387, uses IEEE compatible arithmetic,
30
   and returns float values in the 387.  */
31
 
32
#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS)
33
 
34
/* The ELF ABI for the i386 says that records and unions are returned
35
   in memory.  */
36
 
37
#undef RETURN_IN_MEMORY
38
#define RETURN_IN_MEMORY(TYPE) \
39
  (TYPE_MODE (TYPE) == BLKmode \
40
   || (VECTOR_MODE_P (TYPE_MODE (TYPE)) && int_size_in_bytes (TYPE) == 8))
41
 
42
#undef CPP_SPEC
43
#define CPP_SPEC ""
44
 
45
#define ENDFILE_SPEC "crtend.o%s"
46
 
47
#define STARTFILE_SPEC "%{!shared: \
48
                         %{!symbolic: \
49
                          %{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}}}\
50
                        crtbegin.o%s"
51
 
52
#undef DBX_REGISTER_NUMBER
53
#define DBX_REGISTER_NUMBER(n) \
54
  (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
55
 
56
/* The routine used to output sequences of byte values.  We use a special
57
   version of this for most svr4 targets because doing so makes the
58
   generated assembly code more compact (and thus faster to assemble)
59
   as well as more readable.  Note that if we find subparts of the
60
   character sequence which end with NUL (and which are shorter than
61
   STRING_LIMIT) we output those using ASM_OUTPUT_LIMITED_STRING.  */
62
 
63
#undef ASM_OUTPUT_ASCII
64
#define ASM_OUTPUT_ASCII(FILE, STR, LENGTH)                             \
65
  do                                                                    \
66
    {                                                                   \
67
      const unsigned char *_ascii_bytes =                               \
68
        (const unsigned char *) (STR);                                  \
69
      const unsigned char *limit = _ascii_bytes + (LENGTH);             \
70
      unsigned bytes_in_chunk = 0;                                      \
71
      for (; _ascii_bytes < limit; _ascii_bytes++)                      \
72
        {                                                               \
73
          const unsigned char *p;                                       \
74
          if (bytes_in_chunk >= 64)                                     \
75
            {                                                           \
76
              fputc ('\n', (FILE));                                     \
77
              bytes_in_chunk = 0;                                       \
78
            }                                                           \
79
          for (p = _ascii_bytes; p < limit && *p != '\0'; p++)          \
80
            continue;                                                   \
81
          if (p < limit && (p - _ascii_bytes) <= (long) STRING_LIMIT)   \
82
            {                                                           \
83
              if (bytes_in_chunk > 0)                                   \
84
                {                                                       \
85
                  fputc ('\n', (FILE));                                 \
86
                  bytes_in_chunk = 0;                                   \
87
                }                                                       \
88
              ASM_OUTPUT_LIMITED_STRING ((FILE), _ascii_bytes);         \
89
              _ascii_bytes = p;                                         \
90
            }                                                           \
91
          else                                                          \
92
            {                                                           \
93
              if (bytes_in_chunk == 0)                                  \
94
                fprintf ((FILE), "\t.byte\t");                          \
95
              else                                                      \
96
                fputc (',', (FILE));                                    \
97
              fprintf ((FILE), "0x%02x", *_ascii_bytes);                \
98
              bytes_in_chunk += 5;                                      \
99
            }                                                           \
100
        }                                                               \
101
      if (bytes_in_chunk > 0)                                           \
102
        fprintf ((FILE), "\n");                                         \
103
    }                                                                   \
104
  while (0)
105
 
106
#define LOCAL_LABEL_PREFIX      "."
107
 
108
/* Switch into a generic section.  */
109
#define TARGET_ASM_NAMED_SECTION  default_elf_asm_named_section
110
 
111
/* If defined, a C expression whose value is a string containing the
112
   assembler operation to identify the following data as
113
   uninitialized global data.  If not defined, and neither
114
   `ASM_OUTPUT_BSS' nor `ASM_OUTPUT_ALIGNED_BSS' are defined,
115
   uninitialized global data will be output in the data section if
116
   `-fno-common' is passed, otherwise `ASM_OUTPUT_COMMON' will be
117
   used.  */
118
#undef BSS_SECTION_ASM_OP
119
#define BSS_SECTION_ASM_OP "\t.section\t.bss"
120
 
121
/* Like `ASM_OUTPUT_BSS' except takes the required alignment as a
122
   separate, explicit argument.  If you define this macro, it is used
123
   in place of `ASM_OUTPUT_BSS', and gives you more flexibility in
124
   handling the required alignment of the variable.  The alignment is
125
   specified as the number of bits.
126
 
127
   Try to use function `asm_output_aligned_bss' defined in file
128
   `varasm.c' when defining this macro.  */
129
#undef ASM_OUTPUT_ALIGNED_BSS
130
#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
131
  asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.