Mercurial > hg > index.cgi
view docs/manual/c45.html @ 273:1409debcb1a0
Fix crash on listing when nested noexpand macros are used
Macros flagged noexpand were causing a segfault during listing. The problem
was incorrect accounting for nesting levels for noexpand macros causing the
listing handler to fall off the end of the program in certain circumstances
and in other circumstances it would fail to suppress expansion. Both the
segfault in the case of misbehaviour and the misbhaviour itself are
corrected with this update.
If you do not use nested noexpand macros, this bug has no effect.
author | William Astle <lost@l-w.ca> |
---|---|
date | Sat, 25 May 2013 13:35:46 -0600 |
parents | 0bc1c88fe776 |
children |
line wrap: on
line source
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >LWASM</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="LW Tool Chain" HREF="index.html"><LINK REL="PREVIOUS" TITLE="Object Files" HREF="x37.html"><LINK REL="NEXT" TITLE="Dialects" HREF="x170.html"></HEAD ><BODY CLASS="CHAPTER" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >LW Tool Chain</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="x37.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="x170.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="CHAPTER" ><H1 ><A NAME="AEN45" ></A >Chapter 3. LWASM</H1 ><P >The LWTOOLS assembler is called LWASM. This chapter documents the various features of the assembler. It is not, however, a tutorial on 6x09 assembly language programming.</P ><DIV CLASS="SECTION" ><H1 CLASS="SECTION" ><A NAME="AEN48" >3.1. Command Line Options</A ></H1 ><P >The binary for LWASM is called "lwasm". Note that the binary is in lower case. lwasm takes the following command line arguments.</P ><P ></P ><DIV CLASS="VARIABLELIST" ><DL ><DT ><CODE CLASS="OPTION" >--6309</CODE >, <CODE CLASS="OPTION" >-3</CODE ></DT ><DD ><P >This will cause the assembler to accept the additional instructions available on the 6309 processor. This is the default mode; this option is provided for completeness and to override preset command arguments.</P ></DD ><DT ><CODE CLASS="OPTION" >--6809</CODE >, <CODE CLASS="OPTION" >-9</CODE ></DT ><DD ><P >This will cause the assembler to reject instructions that are only available on the 6309 processor.</P ></DD ><DT ><CODE CLASS="OPTION" >--decb</CODE >, <CODE CLASS="OPTION" >-b</CODE ></DT ><DD ><P >Select the DECB output format target. Equivalent to <CODE CLASS="OPTION" >--format=decb</CODE >.</P ><P >While this is the default output format currently, it is not safe to rely on that fact. Future versions may have different defaults. It is also trivial to modify the source code to change the default. Thus, it is recommended to specify this option if you need DECB output.</P ></DD ><DT ><CODE CLASS="OPTION" >--format=type</CODE >, <CODE CLASS="OPTION" >-f type</CODE ></DT ><DD ><P >Select the output format. Valid values are <CODE CLASS="OPTION" >obj</CODE > for the object file target, <CODE CLASS="OPTION" >decb</CODE > for the DECB LOADM format, <CODE CLASS="OPTION" >os9</CODE > for creating OS9 modules, and <CODE CLASS="OPTION" >raw</CODE > for a raw binary.</P ></DD ><DT ><CODE CLASS="OPTION" >--list[=file]</CODE >, <CODE CLASS="OPTION" >-l[file]</CODE ></DT ><DD ><P >Cause LWASM to generate a listing. If <CODE CLASS="OPTION" >file</CODE > is specified, the listing will go to that file. Otherwise it will go to the standard output stream. By default, no listing is generated. Unless <CODE CLASS="OPTION" >--symbols</CODE > is specified, the list will not include the symbol table.</P ></DD ><DT ><CODE CLASS="OPTION" >--symbols</CODE >, <CODE CLASS="OPTION" >-s</CODE ></DT ><DD ><P >Causes LWASM to generate a list of symbols when generating a listing. It has no effect unless a listing is being generated.</P ></DD ><DT ><CODE CLASS="OPTION" >--obj</CODE ></DT ><DD ><P >Select the proprietary object file format as the output target.</P ></DD ><DT ><CODE CLASS="OPTION" >--output=FILE</CODE >, <CODE CLASS="OPTION" >-o FILE</CODE ></DT ><DD ><P >This option specifies the name of the output file. If not specified, the default is <CODE CLASS="OPTION" >a.out</CODE >.</P ></DD ><DT ><CODE CLASS="OPTION" >--pragma=pragma</CODE >, <CODE CLASS="OPTION" >-p pragma</CODE ></DT ><DD ><P >Specify assembler pragmas. Multiple pragmas are separated by commas. The pragmas accepted are the same as for the PRAGMA assembler directive described below.</P ></DD ><DT ><CODE CLASS="OPTION" >--raw</CODE >, <CODE CLASS="OPTION" >-r</CODE ></DT ><DD ><P >Select raw binary as the output target.</P ></DD ><DT ><CODE CLASS="OPTION" >--includedir=path</CODE >, <CODE CLASS="OPTION" >-I path</CODE ></DT ><DD ><P >Add <CODE CLASS="OPTION" >path</CODE > to the end of the include path.</P ></DD ><DT ><CODE CLASS="OPTION" >--define=SYM[=VAL]</CODE >, <CODE CLASS="OPTION" >-D SYM[=VAL]</CODE ></DT ><DD ><P >Pre-defines the symbol SYM as either the specified VAL. If VAL is omitted, the symbol is defined as 1. The symbol will be defined as though it were defined using the SET directive in the assembly source. That means it can be overridden by a SET directive within the source code. Attempting to redefine SYM using EQU will result in a multiply defined symbol error.</P ></DD ><DT ><CODE CLASS="OPTION" >--help</CODE >, <CODE CLASS="OPTION" >-?</CODE ></DT ><DD ><P >Present a help screen describing the command line options.</P ></DD ><DT ><CODE CLASS="OPTION" >--usage</CODE ></DT ><DD ><P >Provide a summary of the command line options.</P ></DD ><DT ><CODE CLASS="OPTION" >--version</CODE >, <CODE CLASS="OPTION" >-V</CODE ></DT ><DD ><P >Display the software version.</P ></DD ><DT ><CODE CLASS="OPTION" >--debug</CODE >, <CODE CLASS="OPTION" >-d</CODE ></DT ><DD ><P >Increase the debugging level. Only really useful to people hacking on the LWASM source code itself.</P ></DD ></DL ></DIV ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="x37.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="x170.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Object Files</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Dialects</TD ></TR ></TABLE ></DIV ></BODY ></HTML >