toolchain/share/doc/as.html/Object-Attributes.html

82 lines
3.9 KiB
HTML

<html lang="en">
<head>
<title>Object Attributes - Using as</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Using as">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Pseudo-Ops.html#Pseudo-Ops" title="Pseudo Ops">
<link rel="next" href="Machine-Dependencies.html#Machine-Dependencies" title="Machine Dependencies">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU Assembler "as".
Copyright (C) 1991-2019 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts. A copy of the license is included in the
section entitled ``GNU Free Documentation License''.
-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
</head>
<body>
<div class="node">
<a name="Object-Attributes"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Machine-Dependencies.html#Machine-Dependencies">Machine Dependencies</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Pseudo-Ops.html#Pseudo-Ops">Pseudo Ops</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<h2 class="chapter">8 Object Attributes</h2>
<p><a name="index-object-attributes-536"></a>
<samp><span class="command">as</span></samp> assembles source files written for a specific architecture
into object files for that architecture. But not all object files are alike.
Many architectures support incompatible variations. For instance, floating
point arguments might be passed in floating point registers if the object file
requires hardware floating point support&mdash;or floating point arguments might be
passed in integer registers if the object file supports processors with no
hardware floating point unit. Or, if two objects are built for different
generations of the same architecture, the combination may require the
newer generation at run-time.
<p>This information is useful during and after linking. At link time,
<samp><span class="command">ld</span></samp> can warn about incompatible object files. After link
time, tools like <samp><span class="command">gdb</span></samp> can use it to process the linked file
correctly.
<p>Compatibility information is recorded as a series of object attributes. Each
attribute has a <dfn>vendor</dfn>, <dfn>tag</dfn>, and <dfn>value</dfn>. The vendor is a
string, and indicates who sets the meaning of the tag. The tag is an integer,
and indicates what property the attribute describes. The value may be a string
or an integer, and indicates how the property affects this object. Missing
attributes are the same as attributes with a zero value or empty string value.
<p>Object attributes were developed as part of the ABI for the ARM Architecture.
The file format is documented in <cite>ELF for the ARM Architecture</cite>.
<ul class="menu">
<li><a accesskey="1" href="GNU-Object-Attributes.html#GNU-Object-Attributes">GNU Object Attributes</a>: <span class="sc">gnu</span> Object Attributes
<li><a accesskey="2" href="Defining-New-Object-Attributes.html#Defining-New-Object-Attributes">Defining New Object Attributes</a>: Defining New Object Attributes
</ul>
</body></html>