• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/toolchains/hndtools-armeabi-2011.09/share/doc/arm-arm-none-eabi/html/gcc/
1<html lang="en">
2<head>
3<title>Legacy type encoding - Using the GNU Compiler Collection (GCC)</title>
4<meta http-equiv="Content-Type" content="text/html">
5<meta name="description" content="Using the GNU Compiler Collection (GCC)">
6<meta name="generator" content="makeinfo 4.13">
7<link title="Top" rel="start" href="index.html#Top">
8<link rel="up" href="Type-encoding.html#Type-encoding" title="Type encoding">
9<link rel="next" href="_0040_0040encode.html#g_t_0040_0040encode" title="@@encode">
10<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
11<!--
12Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
131998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
142010 Free Software Foundation, Inc.
15
16Permission is granted to copy, distribute and/or modify this document
17under the terms of the GNU Free Documentation License, Version 1.3 or
18any later version published by the Free Software Foundation; with the
19Invariant Sections being ``Funding Free Software'', the Front-Cover
20Texts being (a) (see below), and with the Back-Cover Texts being (b)
21(see below).  A copy of the license is included in the section entitled
22``GNU Free Documentation License''.
23
24(a) The FSF's Front-Cover Text is:
25
26     A GNU Manual
27
28(b) The FSF's Back-Cover Text is:
29
30     You have freedom to copy and modify this GNU Manual, like GNU
31     software.  Copies published by the Free Software Foundation raise
32     funds for GNU development.-->
33<meta http-equiv="Content-Style-Type" content="text/css">
34<style type="text/css"><!--
35  pre.display { font-family:inherit }
36  pre.format  { font-family:inherit }
37  pre.smalldisplay { font-family:inherit; font-size:smaller }
38  pre.smallformat  { font-family:inherit; font-size:smaller }
39  pre.smallexample { font-size:smaller }
40  pre.smalllisp    { font-size:smaller }
41  span.sc    { font-variant:small-caps }
42  span.roman { font-family:serif; font-weight:normal; } 
43  span.sansserif { font-family:sans-serif; font-weight:normal; } 
44--></style>
45<link rel="stylesheet" type="text/css" href="../cs.css">
46</head>
47<body>
48<div class="node">
49<a name="Legacy-type-encoding"></a>
50<p>
51Next:&nbsp;<a rel="next" accesskey="n" href="_0040encode.html#g_t_0040encode">@encode</a>,
52Up:&nbsp;<a rel="up" accesskey="u" href="Type-encoding.html#Type-encoding">Type encoding</a>
53<hr>
54</div>
55
56<h4 class="subsection">8.3.1 Legacy type encoding</h4>
57
58<p>Unfortunately, historically GCC used to have a number of bugs in its
59encoding code.  The NeXT runtime expects GCC to emit type encodings in
60this historical format (compatible with GCC-3.3), so when using the
61NeXT runtime, GCC will introduce on purpose a number of incorrect
62encodings:
63
64     <ul>
65<li>the read-only qualifier of the pointee gets emitted before the '^'. 
66The read-only qualifier of the pointer itself gets ignored, unless it
67is a typedef.  Also, the 'r' is only emitted for the outermost type.
68
69     <li>32-bit longs are encoded as 'l' or 'L', but not always.  For typedefs,
70the compiler uses 'i' or 'I' instead if encoding a struct field or a
71pointer.
72
73     <li><code>enum</code>s are always encoded as 'i' (int) even if they are actually
74unsigned or long.
75
76 </ul>
77
78 <p>In addition to that, the NeXT runtime uses a different encoding for
79bitfields.  It encodes them as <code>b</code> followed by the size, without
80a bit offset or the underlying field type.
81
82 </body></html>
83
84