--- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/debian/changelog +++ gcc-m68hc1x-3.3.6+3.1+dfsg/debian/changelog @@ -0,0 +1,180 @@ +gcc-m68hc1x (1:3.3.6+3.1+dfsg-3ubuntu2) bionic; urgency=high + + * No change rebuild to pick up -fPIE compiler default + + -- Balint Reczey Tue, 03 Apr 2018 12:24:38 +0000 + +gcc-m68hc1x (1:3.3.6+3.1+dfsg-3ubuntu1) oneiric; urgency=low + + * Fix FTBFS with hardening defaults. LP: #837072. + + -- Matthias Klose Mon, 29 Aug 2011 23:04:15 +0000 + +gcc-m68hc1x (1:3.3.6+3.1+dfsg-3) unstable; urgency=low + + * Adopting package. Closes: #412608 + * Some packaging update. + * XS-DM-Upload-Allowed: yes. + + -- Arthur Loiret Fri, 29 Feb 2008 10:33:22 +0000 + +gcc-m68hc1x (1:3.3.6+3.1+dfsg-2) unstable; urgency=low + + * Support dpkg-buildpackage -j. + + -- Aurelien Jarno Wed, 02 Jan 2008 00:27:10 +0100 + +gcc-m68hc1x (1:3.3.6+3.1+dfsg-1) unstable; urgency=low + + * Removed non-free stuff from the package (closes: bug#392960). + * Bumped Standard-Versions to 3.7.2 (no changes). + + -- Aurelien Jarno Thu, 19 Oct 2006 07:48:13 +0200 + +gcc-m68hc1x (1:3.3.6+3.1-1) unstable; urgency=low + + * New upstream version based on gcc-3.3.6. + * Bumped Standard-Versions to 3.6.2 (no changes). + * Fixed FSF address. + * Use bash for the shell. + + -- Aurelien Jarno Thu, 9 Mar 2006 00:00:34 +0100 + +gcc-m68hc1x (1:3.3.5+3.0.1-1) unstable; urgency=low + + * New upstream version. + + -- Aurelien Jarno Sun, 12 Jun 2005 17:52:19 +0200 + +gcc-m68hc1x (1:3.3.5+3.0-2) unstable; urgency=low + + * Added a patch to fix build on 64-bit arches. + + -- Aurelien Jarno Mon, 31 Jan 2005 11:49:14 +0100 + +gcc-m68hc1x (1:3.3.5+3.0-1) unstable; urgency=low + + * New upstream version based on gcc-3.3.5. + + -- Aurelien Jarno Mon, 31 Jan 2005 07:27:29 +0100 + +gcc-m68hc1x (1:3.3.4+2.92-2) unstable; urgency=low + + * Disable g++ as libstdc++ could not be built for this target (closes: + bug#275592). + + -- Aurelien Jarno Sat, 9 Oct 2004 23:57:20 +0200 + +gcc-m68hc1x (1:3.3.4+2.92-1) unstable; urgency=high + + * Switched to 2.92 pre-release, ie gcc-3.3.4 + some patches. + * Added a patch to fix FTBFS on 64-bit arches (PRL 16925) (closes: + bug#257330). + * Urgency set to high as it is an RC bug. + + -- Aurelien Jarno Sat, 11 Sep 2004 16:31:11 +0200 + +gcc-m68hc1x (1:3.0.4-1) unstable; urgency=medium + + * toolchain-source is not really suitable for embedded targets. Moreover + such targets does not need to follow the main toolchain. + * Using gcc version 3.04 + m68hc1x maintainer patches, which is the + recommended version for this target. + * Should build on 64-bit architectures (closes: bug#257330). + + -- Aurelien Jarno Mon, 9 Aug 2004 16:32:13 +0200 + +gcc-m68hc1x (3.3.3-4) unstable; urgency=low + + * Added some patches from upstream. Hope it would now build on all arches. + + -- Aurelien Jarno Thu, 22 Apr 2004 15:20:57 +0200 + +gcc-m68hc1x (3.3.3-3) unstable; urgency=low + + * Removed newlib from this package. It seems to cause some problems + on some architectures whereas it build correctly as a separate + package. + + -- Aurelien Jarno Sun, 18 Apr 2004 04:36:57 +0200 + +gcc-m68hc1x (3.3.3-2) unstable; urgency=medium + + * Updated example program. + * Newlib is now included in this package. + + -- Aurelien Jarno Mon, 12 Apr 2004 19:14:20 +0200 + +gcc-m68hc1x (3.3.3-1) unstable; urgency=low + + * gcc updated to 3.3.3 (closes: bug#241836). + + -- Aurelien Jarno Sun, 11 Apr 2004 11:20:15 +0200 + +gcc-m68hc1x (3.2-10) unstable; urgency=low + + * Let gcc-m68hc1x provide its own manpages, instead of gcc-3.2's ones. + * Removed the dependency on gcc-3.2. + * Bumped standards-version to 3.6.1 (no changes). + + -- Aurelien Jarno Fri, 17 Oct 2003 00:43:57 +0200 + +gcc-m68hc1x (3.2-9) unstable; urgency=low + + * Suggests gcc-3.2-doc instead of the non-existant package gcc-doc. + + -- Aurelien Jarno Sun, 27 Apr 2003 15:46:39 +0200 + +gcc-m68hc1x (3.2-8) unstable; urgency=low + + * Depends on ${misc:Depends}. + * Uses debian/compat instead of DH_COMPAT. + * Removed call to dh_undocumented. + * Bumped standards-version to 3.5.9. + + -- Aurelien Jarno Mon, 7 Apr 2003 20:23:35 +0200 + +gcc-m68hc1x (3.2-7) unstable; urgency=low + + * Added m68hc11-gccbug and m68hc12-gccbug man pages. + + -- Aurelien Jarno Fri, 7 Feb 2003 14:45:29 +0100 + +gcc-m68hc1x (3.2-6) unstable; urgency=low + + * More fixes in example code. + + -- Aurelien Jarno Wed, 8 Jan 2003 14:34:28 +0100 + +gcc-m68hc1x (3.2-5) unstable; urgency=low + + * Small fixes in example code. + + -- Aurelien Jarno Wed, 8 Jan 2003 09:15:36 +0100 + +gcc-m68hc1x (3.2-4) unstable; urgency=low + + * Fixed description. + * Added some examples to /usr/share/doc/gcc-m68hc1x/examples + * Standards-Version bumped to 3.5.8 + + -- Aurelien Jarno Tue, 7 Jan 2003 10:27:15 +0100 + +gcc-m68hc1x (3.2-3) unstable; urgency=low + + * Added newlib-m68hc1x to the "Suggests:" field. + + -- Aurelien Jarno Tue, 17 Dec 2002 00:21:43 +0100 + +gcc-m68hc1x (3.2-2) unstable; urgency=low + + * Strip libraries. + + -- Aurelien Jarno Fri, 25 Oct 2002 16:51:28 +0200 + +gcc-m68hc1x (3.2-1) unstable; urgency=low + + * Initial Release. (closes: bug#166106) + + -- Aurelien Jarno Thu, 24 Oct 2002 07:51:05 +0200 + --- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/debian/compat +++ gcc-m68hc1x-3.3.6+3.1+dfsg/debian/compat @@ -0,0 +1 @@ +6 --- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/debian/control +++ gcc-m68hc1x-3.3.6+3.1+dfsg/debian/control @@ -0,0 +1,20 @@ +Source: gcc-m68hc1x +Section: devel +Priority: extra +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Arthur Loiret +Standards-Version: 3.7.3 +Build-Depends: debhelper (>= 6.0), binutils-m68hc1x (>= 1:2.15+2.92), autoconf2.13, libtool, gawk | awk, bison, flex, gettext, texinfo, zlib1g-dev, bzip2 +XS-DM-Upload-Allowed: yes + +Package: gcc-m68hc1x +Architecture: any +Section: devel +Priority: extra +Depends: ${shlibs:Depends}, ${misc:Depends}, binutils-m68hc1x (>= 1:2.15+2.92) +Suggests: task-c-devel, newlib-m68hc1x +Provides: c-compiler-m68hc11, c-compiler-m68hc12 +Description: GNU C compiler for the Motorola 68HC11/12 processors + This is the GNU C compiler, a fairly portable optimizing compiler which + supports multiple languages. This package includes support for C for + cross-compiling to a Motorola 68HC11/12 microcontroller-based target. --- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/debian/copyright +++ gcc-m68hc1x-3.3.6+3.1+dfsg/debian/copyright @@ -0,0 +1,45 @@ +This package was debianized by Aurelien Jarno on +Wed, 23 Oct 2002 00:48:17 +0200. + +It is a debian package of the GNU gcc compiler compiled as an 68HC11/12 +cross-compiler. + +The source can be obtained from: + + http://www.gnu-m68hc11.org/ + http://ftp.gnu.org/pub/gnu/gcc/gcc-3.3.6/gcc-3.3.6.tar.bz2 + + Note that the following files have been removed from the archive + for licensing reasons: + - INSTALL/* + - gcc/doc + - gcc/{ada,f,fortran,java,libiberty,treelang}/*.texi + - gcc/{f,java,g77}/*.1 + - gcc/{f,java,g77}/*.info + - libstdc++-v3/docs/html/* + +Copyright: + + GCC is Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, + 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 + Free Software Foundation, Inc. + +License: + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + MA 02110-1301 USA + +You are free to distribute this software under the terms of the GNU General +Public License. On Debian systems, the complete text of the GNU General Public +License can be found in /usr/share/common-licenses/GPL file. --- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/debian/docs +++ gcc-m68hc1x-3.3.6+3.1+dfsg/debian/docs @@ -0,0 +1 @@ +example.tar.gz --- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/debian/m68hc11-gccbug.1 +++ gcc-m68hc1x-3.3.6+3.1+dfsg/debian/m68hc11-gccbug.1 @@ -0,0 +1,37 @@ +.TH m68hc11-gccbug 1 "07 February 2003" +.SH "NAME" +m68hc11-gccbug \- Report a bug to the GCC developers +.SH "SYNOPSIS" +.B m68hc11-gccbug +.SH "DESCRIPTION" +.B m68hc11-gccbug +is a tool for reporting bugs to the GCC maintainers. +It automatically starts an editor where the user can enter details +of the bug. On completion, the bug is sent to the appropriate +address. +The User should replace the comments (text surrounded by +, and fill in the Subject: and From: lines with +a summary and e-mail address. + +If the user believes the bug is related to Debian rather than to the +m68hc1x-gcc package, then the +.B reportbug +command should be used instead. +.SH "ENVIRONMENT" +.B m68hc11-gccbug +will utilize the following enviromntal variables if they exist: +.TP +.B EDITOR +and +.B VISUAL +Specifies the preferred editor. If +neither are set, +.B m68hc11-gccbug +will default to +.B /usr/bin/sensible-editor +to determine a working editor. +.TP +.B HOME +Directory in which the failed bug report is saved if the mail fails. +.SH "SEE ALSO" +reportbug(1) --- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/debian/m68hc12-gcc +++ gcc-m68hc1x-3.3.6+3.1+dfsg/debian/m68hc12-gcc @@ -0,0 +1,2 @@ +#!/bin/sh +/usr/bin/m68hc11-gcc -m68hc12 "$@" --- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/debian/m68hc12-gccbug.1 +++ gcc-m68hc1x-3.3.6+3.1+dfsg/debian/m68hc12-gccbug.1 @@ -0,0 +1,37 @@ +.TH m68hc12-gccbug 1 "07 February 2003" +.SH "NAME" +m68hc12-gccbug \- Report a bug to the GCC developers +.SH "SYNOPSIS" +.B m68hc12-gccbug +.SH "DESCRIPTION" +.B m68hc12-gccbug +is a tool for reporting bugs to the GCC maintainers. +It automatically starts an editor where the user can enter details +of the bug. On completion, the bug is sent to the appropriate +address. +The User should replace the comments (text surrounded by +, and fill in the Subject: and From: lines with +a summary and e-mail address. + +If the user believes the bug is related to Debian rather than to the +m68hc1x-gcc package, then the +.B reportbug +command should be used instead. +.SH "ENVIRONMENT" +.B m68hc12-gccbug +will utilize the following enviromntal variables if they exist: +.TP +.B EDITOR +and +.B VISUAL +Specifies the preferred editor. If +neither are set, +.B m68hc12-gccbug +will default to +.B /usr/bin/sensible-editor +to determine a working editor. +.TP +.B HOME +Directory in which the failed bug report is saved if the mail fails. +.SH "SEE ALSO" +reportbug(1) --- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/debian/manpages +++ gcc-m68hc1x-3.3.6+3.1+dfsg/debian/manpages @@ -0,0 +1,2 @@ +debian/m68hc11-gccbug.1 +debian/m68hc12-gccbug.1 --- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/debian/rules +++ gcc-m68hc1x-3.3.6+3.1+dfsg/debian/rules @@ -0,0 +1,130 @@ +#!/usr/bin/make -f +# Sample debian/rules that uses debhelper. +# GNU copyright 1997 to 1999 by Joey Hess. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# Set the SHELL to bash +export SHELL = /bin/bash + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) + +unpack: unpack-stamp +unpack-stamp: + tar xjf gcc-3.3.6.tar.bz2 + for i in *.diff* ; do \ + patch -p0 < $$i ; \ + done + mv gcc-3.3.6 src + mkdir build + touch $@ + +configure: configure-stamp +configure-stamp: unpack-stamp + dh_testdir + cd $(CURDIR)/build && \ + MAKEINFO="" ../src/configure --prefix=/usr \ + --infodir=/usr/share/info \ + --mandir=/usr/share/man \ + --with-gnu-as \ + --with-gnu-ld \ + --enable-nls \ + --without-included-gettext \ + --disable-checking \ + --enable-languages=c \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --target=m68hc11 \ + --without-headers + touch $@ + +build: build-stamp +build-stamp: configure-stamp + dh_testdir + cd build && $(MAKE) all-gcc + tar cfz $(CURDIR)/example.tar.gz example + touch $@ + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/gcc-m68hc1x + cd build && $(MAKE) install-gcc prefix=$(CURDIR)/debian/gcc-m68hc1x/usr \ + infodir=$(CURDIR)/debian/gcc-m68hc1x/usr/share/info \ + mandir=$(CURDIR)/debian/gcc-m68hc1x/usr/share/man + + # Rename manpages and create symlinks + #mv $(CURDIR)/debian/gcc-m68hc1x/usr/share/man/man1/cpp.1 $(CURDIR)/debian/gcc-m68hc1x/usr/share/man/man1/m68hc11-cpp.1 + #mv $(CURDIR)/debian/gcc-m68hc1x/usr/share/man/man1/gcov.1 $(CURDIR)/debian/gcc-m68hc1x/usr/share/man/man1/m68hc11-gcov.1 + + # Also create m68hc12-* + #install -o root -g root -m 755 debian/m68hc12-gcc $(CURDIR)/debian/gcc-m68hc1x/usr/bin + #ln -s m68hc11-gcc.1 $(CURDIR)/debian/gcc-m68hc1x/usr/share/man/man1/m68hc12-gcc.1 + + #for i in gccbug gcov cpp ; do \ + # ln -s m68hc11-$$i $(CURDIR)/debian/gcc-m68hc1x/usr/bin/m68hc12-$$i ; \ + # ln -s m68hc11-$$i.1 $(CURDIR)/debian/gcc-m68hc1x/usr/share/man/man1/m68hc12-$$i.1 ; \ + #done + + + # Remove non-needed files + rm -rf $(CURDIR)/debian/gcc-m68hc1x/usr/bin/m68hc11-gcc-* + rm -rf $(CURDIR)/debian/gcc-m68hc1x/usr/share/locale + rm -rf $(CURDIR)/debian/gcc-m68hc1x/usr/share/info + rm -rf $(CURDIR)/debian/gcc-m68hc1x/usr/share/man/man7 + rm -rf $(CURDIR)/debian/gcc-m68hc1x/usr/include + rm -rf $(CURDIR)/debian/gcc-m68hc1x/usr/m68hc11/ + +clean: + dh_testdir + dh_testroot + rm -f $(CURDIR)/example.tar.gz + rm -rf build + rm -rf src + rm -f build-stamp configure-stamp unpack-stamp + + dh_clean + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot +# dh_installdebconf + dh_installdocs +# dh_installexamples +# dh_installmenu +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_installinit +# dh_installcron + dh_installman +# dh_installinfo + dh_installchangelogs + dh_link + dh_strip --exclude=.o --exclude=.a + dh_compress + dh_fixperms +# dh_makeshlibs + dh_installdeb +# dh_perl + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: unpack build clean binary-indep binary-arch binary install configure --- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/example/Makefile +++ gcc-m68hc1x-3.3.6+3.1+dfsg/example/Makefile @@ -0,0 +1,86 @@ +#!/usr/bin/make -f + +################################################################## +# Makefile for 68HC11 projects # +# GNU copyright 2002-2003 by Aurelien Jarno # +################################################################## + +# +# Project files +# +PROG = test +ASMS = vectors.s +SRCS = main.c +INCLUDES = main.h ports.h +OBJS = $(SRCS:.c=.o) $(ASMS:.s=.o) + + +# +# C flags used by default to compile a program +# +CFLAGS = -m68hc11 -mshort -Wall -Wmissing-prototypes -Os -g0 -msoft-reg-count=0 -fomit-frame-pointer -ffixed-z -fshort-enums + +LDFLAGS = -m68hc11 -mshort -Wl,-m,m68hc11elfb \ + -Wl,-defsym,_io_ports=0x1000 + + +# +# Options to creates the .s19 or .b files from the elf +# +OBJCOPY_FLAGS = --remove-section=page0 \ + --remove-section=.page0 + + +#################################### +# This part should not be modified # +#################################### +# +# Programs location +# +DEVC_PREFIX=m68hc11- +CC=$(DEVC_PREFIX)gcc +CXX=$(DEVC_PREFIX)gcc +AS=$(DEVC_PREFIX)as +AR=$(DEVC_PREFIX)ar +SIZE=$(DEVC_PREFIX)size +OBJCOPY=$(DEVC_PREFIX)objcopy +OBJDUMP=$(DEVC_PREFIX)objdump +LD=$(DEVC_PREFIX)ld + +# +# Main rules +# +all: $(PROG).elf $(PROG).s19 $(PROG).b + +$(PROG).elf: $(OBJS) $(INCLUDES) memory.x + $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBADD) + +clean: + rm -f *.o *.elf *.s19 *.b *.a + +# +# Some useful rules +# +dump: $(PROG).elf + $(OBJDUMP) -d $(PROG).elf + +size: $(PROG).s19 + $(SIZE) $(PROG).s19 + + +# +# Implicit rules +# +# .elf is for the simulator and gdb +# .s19 is for some downloader and the simulator +# .b is a binary dump +# +.SUFFIXES: .elf .s19 .b + +.elf.s19: + $(OBJCOPY) --output-target=srec $(OBJCOPY_FLAGS) $< $*.s19 + +.elf.b: + $(OBJCOPY) --output-target=binary --gap-fill=255 \ + $(OBJCOPY_FLAGS) $< $*.b + --- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/example/main.c +++ gcc-m68hc1x-3.3.6+3.1+dfsg/example/main.c @@ -0,0 +1,36 @@ +/* + ----- main.c ----- + (C) 2002-2003 Aurelien Jarno + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include "ports.h" +#include "main.h" + +void IRQ_interrupt() +{ + /* Do some stuff */ +} + +int main() +{ + + while (1) + { + /* Do some stuff */ + _io_ports[M6811_PORTF] = (_io_ports[M6811_PORTE] & 0x01)?0x01:0x00; + } +} --- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/example/main.h +++ gcc-m68hc1x-3.3.6+3.1+dfsg/example/main.h @@ -0,0 +1,27 @@ +/* + ----- main.h ----- + (C) 2002-2003 Aurelien Jarno + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef MAIN_H +#define MAIN_H + +int __attribute__((noreturn)) main (void); + +void __attribute__((interrupt)) IRQ_interrupt(void); + +#endif /* MAIN_H */ --- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/example/memory.x +++ gcc-m68hc1x-3.3.6+3.1+dfsg/example/memory.x @@ -0,0 +1,11 @@ +/* Memory definition for a 68HC11 program in EEPROM (1024 bytes) */ +MEMORY +{ + page0 (rwx) : ORIGIN = 0x0000, LENGTH = 0x03ff + eeprom (rx) : ORIGIN = 0xfe00, LENGTH = 0x01ff + text (rx) : ORIGIN = 0xfe00, LENGTH = 0x01ff + data : ORIGIN = 0x0000, LENGTH = 0x03ff +} + +/* Setup the stack on the top of the data internal ram (not used). */ +PROVIDE (_stack = 0x0400-1); --- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/example/ports.h +++ gcc-m68hc1x-3.3.6+3.1+dfsg/example/ports.h @@ -0,0 +1,504 @@ +/* ports.h + Copyright (C) 1999 Free Software Foundation, Inc. + (C) 2000 Stephane Carrez (stcarrez@worldnet.fr) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef _M68HC11_PORTS_H +#define _M68HC11_PORTS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Flags for the definition of the 68HC11 CCR. */ +#define M6811_S_BIT 0x80 /* Stop disable */ +#define M6811_X_BIT 0x40 /* X-interrupt mask */ +#define M6811_H_BIT 0x20 /* Half carry flag */ +#define M6811_I_BIT 0x10 /* I-interrupt mask */ +#define M6811_N_BIT 0x08 /* Negative */ +#define M6811_Z_BIT 0x04 /* Zero */ +#define M6811_V_BIT 0x02 /* Overflow */ +#define M6811_C_BIT 0x01 /* Carry */ + +/* 68HC11 register address offsets (range 0..0x3F or 0..64). + The absolute address of the I/O register depends on the setting + of the M6811_INIT register. At init time, the I/O registers are + mapped at 0x1000. Address of registers is then: + 0x1000 + M6811_xxx +*/ + +#define M6811_PORTA 0x00 /* Port A register */ +#define M6811_DDRA 0x01 /* Data direction register for port A */ +#define M6811_PORTG 0x02 /* Port G register */ +#define M6811_DDRG 0x03 /* Data direction register for port G */ +#define M6811_PORTB 0x04 /* Port B register */ +#define M6811_PORTF 0x05 /* Port F register */ +#define M6811_PORTC 0x06 /* Port C register */ +#define M6811_DDRC 0x07 /* Data direction register for port C */ +#define M6811_PORTD 0x08 /* Port D register */ +#define M6811_DDRD 0x09 /* Data direction register for port D */ +#define M6811_PORTE 0x0A /* Port E input register */ +#define M6811_CFORC 0x0B /* Compare Force Register */ +#define M6811_OC1M 0x0C /* OC1 Action Mask register */ +#define M6811_OC1D 0x0D /* OC1 Action Data register */ +#define M6811_TCTN 0x0E /* Timer Counter Register */ +#define M6811_TCTN_H 0x0E /* " " " High part */ +#define M6811_TCTN_L 0x0F /* " " " Low part */ +#define M6811_TIC1 0x10 /* Input capture 1 register */ +#define M6811_TIC1_H 0x10 /* " " " High part */ +#define M6811_TIC1_L 0x11 /* " " " Low part */ +#define M6811_TIC2 0x12 /* Input capture 2 register */ +#define M6811_TIC2_H 0x12 /* " " " High part */ +#define M6811_TIC2_L 0x13 /* " " " Low part */ +#define M6811_TIC3 0x14 /* Input capture 3 register */ +#define M6811_TIC3_H 0x14 /* " " " High part */ +#define M6811_TIC3_L 0x15 /* " " " Low part */ +#define M6811_TOC1 0x16 /* Output Compare 1 register */ +#define M6811_TOC1_H 0x16 /* " " " High part */ +#define M6811_TOC1_L 0x17 /* " " " Low part */ +#define M6811_TOC2 0x18 /* Output Compare 2 register */ +#define M6811_TOC2_H 0x18 /* " " " High part */ +#define M6811_TOC2_L 0x19 /* " " " Low part */ +#define M6811_TOC3 0x1A /* Output Compare 3 register */ +#define M6811_TOC3_H 0x1A /* " " " High part */ +#define M6811_TOC3_L 0x1B /* " " " Low part */ +#define M6811_TOC4 0x1C /* Output Compare 4 register */ +#define M6811_TOC4_H 0x1C /* " " " High part */ +#define M6811_TOC4_L 0x1D /* " " " Low part */ +#define M6811_TOC5 0x1E /* Output Compare 5 register */ +#define M6811_TOC5_H 0x1E /* " " " High part */ +#define M6811_TOC5_L 0x1F /* " " " Low part */ +#define M6811_TCTL1 0x20 /* Timer Control register 1 */ +#define M6811_TCTL2 0x21 /* Timer Control register 2 */ +#define M6811_TMSK1 0x22 /* Timer Interrupt Mask Register 1 */ +#define M6811_TFLG1 0x23 /* Timer Interrupt Flag Register 1 */ +#define M6811_TMSK2 0x24 /* Timer Interrupt Mask Register 2 */ +#define M6811_TFLG2 0x25 /* Timer Interrupt Flag Register 2 */ +#define M6811_PACTL 0x26 /* Pulse Accumulator Control Register */ +#define M6811_PACNT 0x27 /* Pulse Accumulator Count Register */ +#define M6811_SPCR 0x28 /* SPI Control register */ +#define M6811_SPSR 0x29 /* SPI Status register */ +#define M6811_SPDR 0x2A /* SPI Data register */ +#define M6811_BAUD 0x2B /* SCI Baud register */ +#define M6811_SCCR1 0x2C /* SCI Control register 1 */ +#define M6811_SCCR2 0x2D /* SCI Control register 2 */ +#define M6811_SCSR 0x2E /* SCI Status register */ +#define M6811_SCDR 0x2F /* SCI Data (Read => RDR, Write => TDR) */ +#define M6811_ADCTL 0x30 /* A/D Control register */ +#define M6811_ADR1 0x31 /* A/D, Analog Result register 1 */ +#define M6811_ADR2 0x32 /* A/D, Analog Result register 2 */ +#define M6811_ADR3 0x33 /* A/D, Analog Result register 3 */ +#define M6811_ADR4 0x34 /* A/D, Analog Result register 4 */ +#define M6811__RES35 0x35 +#define M6811__RES36 0x36 +#define M6811__RES37 0x37 +#define M6811__RES38 0x38 +#define M6811_OPTION 0x39 /* System Configuration Options */ +#define M6811_COPRST 0x3A /* Arm/Reset COP Timer Circuitry */ +#define M6811_PPROG 0x3B /* EEPROM Programming Control Register */ +#define M6811_HPRIO 0x3C /* Highest priority I-Bit int and misc */ +#define M6811_INIT 0x3D /* Ram and I/O mapping register */ +#define M6811_TEST1 0x3E /* Factory test control register */ +#define M6811_CONFIG 0x3F /* COP, ROM and EEPROM enables */ + +/* Flags of the CONFIG register (in EEPROM). */ +#define M6811_NOSEC 0x08 /* Security mode disable */ +#define M6811_NOCOP 0x04 /* COP system disable */ +#define M6811_ROMON 0x02 /* Enable on-chip rom */ +#define M6811_EEON 0x01 /* Enable on-chip eeprom */ + +/* Flags of the PPROG register. */ +#define M6811_BYTE 0x10 /* Byte mode */ +#define M6811_ROW 0x08 /* Row mode */ +#define M6811_ERASE 0x04 /* Erase mode select (1 = erase, 0 = read) */ +#define M6811_EELAT 0x02 /* EEPROM Latch Control */ +#define M6811_EEPGM 0x01 /* EEPROM Programming Voltage Enable */ + +/* Flags of the PIOC register. */ +#define M6811_STAF 0x80 /* Strobe A Interrupt Status Flag */ +#define M6811_STAI 0x40 /* Strobe A Interrupt Enable Mask */ +#define M6811_CWOM 0x20 /* Port C Wire OR mode */ +#define M6811_HNDS 0x10 /* Handshake mode */ +#define M6811_OIN 0x08 /* Output or Input handshaking */ +#define M6811_PLS 0x04 /* Pulse/Interlocked Handshake Operation */ +#define M6811_EGA 0x02 /* Active Edge for Strobe A */ +#define M6811_INVB 0x01 /* Invert Strobe B */ + +/* Flags of the SCCR1 register. */ +#define M6811_R8 0x80 /* Receive Data bit 8 */ +#define M6811_T8 0x40 /* Transmit data bit 8 */ +#define M6811__SCCR1_5 0x20 /* Unused */ +#define M6811_M 0x10 /* SCI Character length */ +#define M6811_WAKE 0x08 /* Wake up method select (0=idle, 1=addr mark) */ + +/* Flags of the SCCR2 register. */ +#define M6811_TIE 0x80 /* Transmit Interrupt enable */ +#define M6811_TCIE 0x40 /* Transmit Complete Interrupt Enable */ +#define M6811_RIE 0x20 /* Receive Interrupt Enable */ +#define M6811_ILIE 0x10 /* Idle Line Interrupt Enable */ +#define M6811_TE 0x08 /* Transmit Enable */ +#define M6811_RE 0x04 /* Receive Enable */ +#define M6811_RWU 0x02 /* Receiver Wake Up */ +#define M6811_SBK 0x01 /* Send Break */ + +/* Flags of the SCSR register. */ +#define M6811_TDRE 0x80 /* Transmit Data Register Empty */ +#define M6811_TC 0x40 /* Transmit Complete */ +#define M6811_RDRF 0x20 /* Receive Data Register Full */ +#define M6811_IDLE 0x10 /* Idle Line Detect */ +#define M6811_OR 0x08 /* Overrun Error */ +#define M6811_NF 0x04 /* Noise Flag */ +#define M6811_FE 0x02 /* Framing Error */ +#define M6811__SCSR_0 0x01 /* Unused */ + +/* Flags of the BAUD register. */ +#define M6811_TCLR 0x80 /* Clear Baud Rate (TEST mode) */ +#define M6811__BAUD_6 0x40 /* Not used */ +#define M6811_SCP1 0x20 /* SCI Baud rate prescaler select */ +#define M6811_SCP0 0x10 +#define M6811_RCKB 0x08 /* Baud Rate Clock Check (TEST mode) */ +#define M6811_SCR2 0x04 /* SCI Baud rate select */ +#define M6811_SCR1 0x02 +#define M6811_SCR0 0x01 + +#define M6811_BAUD_DIV_1 (0) +#define M6811_BAUD_DIV_3 (M6811_SCP0) +#define M6811_BAUD_DIV_4 (M6811_SCP1) +#define M6811_BAUD_DIV_13 (M6811_SCP1|M6811_SCP0) + +/* Flags of the SPCR register. */ +#define M6811_SPIE 0x80 /* Serial Peripheral Interrupt Enable */ +#define M6811_SPE 0x40 /* Serial Peripheral System Enable */ +#define M6811_DWOM 0x20 /* Port D Wire-OR mode option */ +#define M6811_MSTR 0x10 /* Master Mode Select */ +#define M6811_CPOL 0x08 /* Clock Polarity */ +#define M6811_CPHA 0x04 /* Clock Phase */ +#define M6811_SPR1 0x02 /* SPI Clock Rate Select */ +#define M6811_SPR0 0x01 + +/* Flags of the SPSR register. */ +#define M6811_SPIF 0x80 /* SPI Transfer Complete flag */ +#define M6811_WCOL 0x40 /* Write Collision */ +#define M6811_MODF 0x10 /* Mode Fault */ + +/* Flags of the ADCTL register. */ +#define M6811_CCF 0x80 /* Conversions Complete Flag */ +#define M6811_SCAN 0x20 /* Continuous Scan Control */ +#define M6811_MULT 0x10 /* Multiple Channel/Single Channel Control */ +#define M6811_CD 0x08 /* Channel Select D */ +#define M6811_CC 0x04 /* C */ +#define M6811_CB 0x02 /* B */ +#define M6811_CA 0x01 /* A */ + +/* Flags of the CFORC register. */ +#define M6811_FOC1 0x80 /* Force Output Compare 1 */ +#define M6811_FOC2 0x40 /* 2 */ +#define M6811_FOC3 0x20 /* 3 */ +#define M6811_FOC4 0x10 /* 4 */ +#define M6811_FOC5 0x08 /* 5 */ + +/* Flags of the OC1M register. */ +#define M6811_OC1M7 0x80 /* Output Compare 7 */ +#define M6811_OC1M6 0x40 /* 6 */ +#define M6811_OC1M5 0x20 /* 5 */ +#define M6811_OC1M4 0x10 /* 4 */ +#define M6811_OC1M3 0x08 /* 3 */ + +/* Flags of the OC1D register. */ +#define M6811_OC1D7 0x80 +#define M6811_OC1D6 0x40 +#define M6811_OC1D5 0x20 +#define M6811_OC1D4 0x10 +#define M6811_OC1D3 0x08 + +/* Flags of the TCTL1 register. */ +#define M6811_OM2 0x80 /* Output Mode 2 */ +#define M6811_OL2 0x40 /* Output Level 2 */ +#define M6811_OM3 0x20 +#define M6811_OL3 0x10 +#define M6811_OM4 0x08 +#define M6811_OL4 0x04 +#define M6811_OM5 0x02 +#define M6811_OL5 0x01 + +/* Flags of the TCTL2 register. */ +#define M6811_EDG1B 0x20 /* Input Edge Capture Control 1 */ +#define M6811_EDG1A 0x10 +#define M6811_EDG2B 0x08 /* Input 2 */ +#define M6811_EDG2A 0x04 +#define M6811_EDG3B 0x02 /* Input 3 */ +#define M6811_EDG3A 0x01 + +/* Flags of the TMSK1 register. */ +#define M6811_OC1I 0x80 /* Output Compare 1 Interrupt */ +#define M6811_OC2I 0x40 /* 2 */ +#define M6811_OC3I 0x20 /* 3 */ +#define M6811_OC4I 0x10 /* 4 */ +#define M6811_OC5I 0x08 /* 5 */ +#define M6811_IC1I 0x04 /* Input Capture 1 Interrupt */ +#define M6811_IC2I 0x02 /* 2 */ +#define M6811_IC3I 0x01 /* 3 */ + +/* Flags of the TFLG1 register. */ +#define M6811_OC1F 0x80 /* Output Compare 1 Flag */ +#define M6811_OC2F 0x40 /* 2 */ +#define M6811_OC3F 0x20 /* 3 */ +#define M6811_OC4F 0x10 /* 4 */ +#define M6811_OC5F 0x08 /* 5 */ +#define M6811_IC1F 0x04 /* Input Capture 1 Flag */ +#define M6811_IC2F 0x02 /* 2 */ +#define M6811_IC3F 0x01 /* 3 */ + +/* Flags of Timer Interrupt Mask Register 2 (TMSK2). */ +#define M6811_TOI 0x80 /* Timer Overflow Interrupt Enable */ +#define M6811_RTII 0x40 /* RTI Interrupt Enable */ +#define M6811_PAOVI 0x20 /* Pulse Accumulator Overflow Interrupt En. */ +#define M6811_PAII 0x10 /* Pulse Accumulator Interrupt Enable */ +#define M6811_PR1 0x02 /* Timer prescaler */ +#define M6811_PR0 0x01 /* Timer prescaler */ +#define M6811_TPR_1 0x00 /* " " prescale div 1 */ +#define M6811_TPR_4 0x01 /* " " prescale div 4 */ +#define M6811_TPR_8 0x02 /* " " prescale div 8 */ +#define M6811_TPR_16 0x03 /* " " prescale div 16 */ + +/* Flags of Timer Interrupt Flag Register 2 (M6811_TFLG2). */ +#define M6811_TOF 0x80 /* Timer overflow bit */ +#define M6811_RTIF 0x40 /* Read time interrupt flag */ +#define M6811_PAOVF 0x20 /* Pulse accumulator overflow Interrupt flag */ +#define M6811_PAIF 0x10 /* Pulse accumulator Input Edge " " " */ + +/* Flags of Pulse Accumulator Control Register (PACTL). */ +#define M6811_DDRA7 0x80 /* Data direction for port A bit 7 */ +#define M6811_PAEN 0x40 /* Pulse accumulator system enable */ +#define M6811_PAMOD 0x20 /* Pulse accumulator mode */ +#define M6811_PEDGE 0x10 /* Pulse accumulator edge control */ +#define M6811_RTR1 0x02 /* RTI Interrupt rates select */ +#define M6811_RTR0 0x01 /* " " " " */ + +/* Flags of the Options register. */ +#define M6811_ADPU 0x80 /* A/D Powerup */ +#define M6811_CSEL 0x40 /* A/D/EE Charge pump clock source select */ +#define M6811_IRQE 0x20 /* IRQ Edge/Level sensitive */ +#define M6811_DLY 0x10 /* Stop exit turn on delay */ +#define M6811_CME 0x08 /* Clock Monitor enable */ +#define M6811_CR1 0x02 /* COP timer rate select */ +#define M6811_CR0 0x01 /* COP timer rate select */ + +/* Flags of the HPRIO register. */ +#define M6811_RBOOT 0x80 /* Read Bootstrap ROM */ +#define M6811_SMOD 0x40 /* Special Mode */ +#define M6811_MDA 0x20 /* Mode Select A */ +#define M6811_IRV 0x10 /* Internal Read Visibility */ +#define M6811_PSEL3 0x08 /* Priority Select */ +#define M6811_PSEL2 0x04 +#define M6811_PSEL1 0x02 +#define M6811_PSEL0 0x01 + +#define M6811_IO_SIZE (0x40) + +/* The I/O registers are represented by a volatile array. + Address if fixed at link time. */ +extern volatile unsigned char _io_ports[]; + + +extern unsigned short get_timer_counter (void); +extern void set_timer_counter (unsigned short); +extern unsigned short get_input_capture_1 (void); +extern void set_input_capture_1 (unsigned short); +extern unsigned short get_input_capture_2 (void); +extern void set_input_capture_2 (unsigned short); +extern unsigned short get_input_capture_3 (void); +extern void set_input_capture_3 (unsigned short); +extern unsigned short get_output_compare_1 (void); +extern void set_output_compare_1 (unsigned short); +extern unsigned short get_output_compare_2 (void); +extern void set_output_compare_2 (unsigned short); +extern unsigned short get_output_compare_3 (void); +extern void set_output_compare_3 (unsigned short); +extern unsigned short get_output_compare_4 (void); +extern void set_output_compare_4 (unsigned short); +extern unsigned short get_output_compare_5 (void); +extern void set_output_compare_5 (unsigned short); +extern void set_bus_expanded (void); +extern void set_bus_single_chip (void); +extern void cop_reset (void); +extern void cop_optional_reset (void); +extern void timer_acknowledge (void); +extern void timer_initialize_rate (unsigned char); + + +extern inline unsigned short +get_timer_counter (void) +{ + return ((unsigned volatile short*) &_io_ports[M6811_TCTN_H])[0]; +} + +extern inline void +set_timer_counter (unsigned short value) +{ + ((unsigned volatile short*) &_io_ports[M6811_TCTN_H])[0] = value; +} + +extern inline unsigned short +get_input_capture_1 (void) +{ + return ((unsigned volatile short*) &_io_ports[M6811_TIC1_H])[0]; +} + +extern inline void +set_input_capture_1 (unsigned short value) +{ + ((unsigned volatile short*) &_io_ports[M6811_TIC1_H])[0] = value; +} + +extern inline unsigned short +get_input_capture_2 (void) +{ + return ((unsigned volatile short*) &_io_ports[M6811_TIC2_H])[0]; +} + +extern inline void +set_input_capture_2 (unsigned short value) +{ + ((unsigned volatile short*) &_io_ports[M6811_TIC2_H])[0] = value; +} + +extern inline unsigned short +get_input_capture_3 (void) +{ + return ((unsigned volatile short*) &_io_ports[M6811_TIC3_H])[0]; +} + +extern inline void +set_input_capture_3 (unsigned short value) +{ + ((unsigned volatile short*) &_io_ports[M6811_TIC3_H])[0] = value; +} + +/* Get output compare 16-bit register. */ +extern inline unsigned short +get_output_compare_1 (void) +{ + return ((unsigned volatile short*) &_io_ports[M6811_TOC1_H])[0]; +} + +extern inline void +set_output_compare_1 (unsigned short value) +{ + ((unsigned volatile short*) &_io_ports[M6811_TOC1_H])[0] = value; +} + +extern inline unsigned short +get_output_compare_2 (void) +{ + return ((unsigned volatile short*) &_io_ports[M6811_TOC2_H])[0]; +} + +extern inline void +set_output_compare_2 (unsigned short value) +{ + ((unsigned volatile short*) &_io_ports[M6811_TOC2_H])[0] = value; +} + +extern inline unsigned short +get_output_compare_3 (void) +{ + return ((unsigned volatile short*) &_io_ports[M6811_TOC3_H])[0]; +} + +extern inline void +set_output_compare_3 (unsigned short value) +{ + ((unsigned volatile short*) &_io_ports[M6811_TOC3_H])[0] = value; +} + +extern inline unsigned short +get_output_compare_4 (void) +{ + return ((unsigned volatile short*) &_io_ports[M6811_TOC4_H])[0]; +} + +extern inline void +set_output_compare_4 (unsigned short value) +{ + ((unsigned volatile short*) &_io_ports[M6811_TOC4_H])[0] = value; +} + +extern inline unsigned short +get_output_compare_5 (void) +{ + return ((unsigned volatile short*) &_io_ports[M6811_TOC5_H])[0]; +} + +extern inline void +set_output_compare_5 (unsigned short value) +{ + ((unsigned volatile short*) &_io_ports[M6811_TOC5_H])[0] = value; +} + + +/* Set the board in the expanded mode to get access to external bus. */ +extern inline void +set_bus_expanded (void) +{ + _io_ports[M6811_HPRIO] |= M6811_MDA; +} + + +/* Set the board in single chip mode. */ +extern inline void +set_bus_single_chip (void) +{ + _io_ports[M6811_HPRIO] &= ~M6811_MDA; +} + +/* Reset the COP. */ +extern inline void +cop_reset (void) +{ + _io_ports[M6811_COPRST] = 0x55; + _io_ports[M6811_COPRST] = 0xAA; +} + +extern inline void +cop_optional_reset (void) +{ +#if defined(M6811_USE_COP) && M6811_USE_COP == 1 + cop_reset (); +#endif +} + +/* Acknowledge the timer interrupt. */ +extern inline void +timer_acknowledge (void) +{ + _io_ports[M6811_TFLG2] = M6811_RTIF; +} + +/* Initialize the timer. */ +extern inline void +timer_initialize_rate (unsigned char divisor) +{ + _io_ports[M6811_TMSK2] = M6811_RTII | divisor; +} + + +#ifdef __cplusplus +}; +#endif + +#endif /* _M68HC11_PORTS_H */ --- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/example/vectors.s +++ gcc-m68hc1x-3.3.6+3.1+dfsg/example/vectors.s @@ -0,0 +1,89 @@ +/* M68HC11 Interrupt vectors table + Copyright (C) 1999 Free Software Foundation, Inc. + Written by Stephane Carrez (stcarrez@worldnet.fr) + +This file is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +In addition to the permissions in the GNU General Public License, the +Free Software Foundation gives you unlimited permission to link the +compiled version of this file with other programs, and to distribute +those programs without any restriction coming from the use of this +file. (The General Public License restrictions do apply in other +respects; for example, they cover modification of the file, and +distribution when not linked into another program.) + +This file is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + + .sect .text + .globl _start + +;; Default interrupt handler. + .sect .text +def: + rti + + .globl _debug_user_vectors +_debug_user_vectors = 0 + +;; +;; Interrupt vectors are in a specific section that is +;; mapped at 0xffc0. For the example program, the reset handler +;; points to the generic crt0 entry point. +;; + .sect .vectors + .globl vectors +vectors: + .word def ; ffc0 + .word def ; ffc2 + .word def ; ffc4 + .word def ; ffc6 + .word def ; ffc8 + .word def ; ffca + .word def ; ffcc + .word def ; ffce + .word def ; ffd0 + .word def ; ffd2 + .word def ; ffd4 + + ;; SCI + .word def ; ffd6 + + ;; SPI + .word def ; ffd8 + .word def ; ffda (PAII) + .word def ; ffdc (PAOVI) + .word def ; ffde (TOI) + + ;; Timer Output Compare + .word def ; ffe0 + .word def ; ffe2 + .word def ; ffe4 + .word def ; ffe6 + .word def ; ffe8 + + ;; Timer Input compare + .word def ; ffea + .word def ; ffec + .word def ; ffee + + ;; Misc + .word def ; fff0 (RTII) + .word IRQ_interrupt ; fff2 (IRQ) + .word def ; fff4 (XIRQ) + .word def ; fff6 (SWI) + .word def ; fff8 (ILL) + .word def ; fffa (COP Failure) + .word def ; fffc (COP Clock monitor) + .word _start ; fffe (reset) + --- gcc-m68hc1x-3.3.6+3.1+dfsg.orig/gcc-3.3.6-m68hc1x-20060122.diffs +++ gcc-m68hc1x-3.3.6+3.1+dfsg/gcc-3.3.6-m68hc1x-20060122.diffs @@ -409,6 +409,15 @@ } +@@ -1580,7 +1580,7 @@ + if (redir) + { + /* Open response file. */ +- redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT); ++ redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); + + /* Duplicate the stdout and stderr file handles + so they can be restored later. */ @@ -2081,6 +2089,31 @@ scan_prog_file (prog_name, which_pass) if (nm_file_name == 0) fatal ("cannot find `nm'"); @@ -4065,10368 +4074,7 @@ extern const char *cpp_SYSROOT; -diff --exclude-from=exclude.lst -Nrup gcc-3.3.6/gcc/doc/extend.texi gcc-3.3.6-m68hc1x/gcc/doc/extend.texi ---- gcc-3.3.6/gcc/doc/extend.texi Wed Mar 17 21:13:19 2004 -+++ gcc-3.3.6-m68hc1x/gcc/doc/extend.texi Sat Nov 5 19:17:25 2005 -@@ -2528,17 +2528,35 @@ to call and return from a function. - - On 68HC11 the compiler will generate a sequence of instructions - to invoke a board-specific routine to switch the memory bank and call the --real function. The board-specific routine simulates a @code{call}. -+real function. The board-specific routine simulates a @code{call}. - At the end of a function, it will jump to a board-specific routine --instead of using @code{rts}. The board-specific return routine simulates -+instead of using @code{rts}. The board-specific return routine simulates - the @code{rtc}. - -+The @code{far} attribute must not be used when the @code{interrupt} or -+@code{trap} attributes are used. -+ - @item near - @cindex functions which do not handle memory bank switching on 68HC11/68HC12 - On 68HC11 and 68HC12 the @code{near} attribute causes the compiler to - use the normal calling convention based on @code{jsr} and @code{rts}. - This attribute can be used to cancel the effect of the @option{-mlong-calls} - option. -+ -+@item page0 -+@cindex variables in page0 section for which direct addressing mode can be used -+On 68HC11 and 68HC12, the @code{page0} attribute indicates that a global -+or static variable is put in the @code{page0} section and the compiler can -+use the direct addressing mode. On 68HC11 the compiler will be able to -+use @code{bset} and @code{bclr} on these variables. Note that the @code{page0} -+is limited to the absolute address range @code{0}..@code{0x0ff}. -+ -+@item trap -+@cindex functions which are used as trap handlers (@code{swi} or @code{trap}) -+On 68HC11 and 68HC12, the @code{trap} attribute marks the function as being -+a trap handler. It will use @code{rti} instead of @code{rts} to return -+from the function. Offset of function parameters are also adjusted to take -+into account the trap frame. - - @item dllimport - @cindex @code{__declspec(dllimport)} -diff --exclude-from=exclude.lst -Nrup gcc-3.3.6/gcc/doc/gcc.1 gcc-3.3.6-m68hc1x/gcc/doc/gcc.1 ---- gcc-3.3.6/gcc/doc/gcc.1 Tue May 3 14:41:29 2005 -+++ gcc-3.3.6-m68hc1x/gcc/doc/gcc.1 Sat Nov 5 22:34:26 2005 -@@ -1,10282 +1 @@ --.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 --.\" --.\" Standard preamble: --.\" ======================================================================== --.de Sh \" Subsection heading --.br --.if t .Sp --.ne 5 --.PP --\fB\\$1\fR --.PP --.. --.de Sp \" Vertical space (when we can't use .PP) --.if t .sp .5v --.if n .sp --.. --.de Vb \" Begin verbatim text --.ft CW --.nf --.ne \\$1 --.. --.de Ve \" End verbatim text --.ft R --.fi --.. --.\" Set up some character translations and predefined strings. \*(-- will --.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left --.\" double quote, and \*(R" will give a right double quote. | will give a --.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to --.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' --.\" expand to `' in nroff, nothing in troff, for use with C<>. --.tr \(*W-|\(bv\*(Tr --.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' --.ie n \{\ --. ds -- \(*W- --. ds PI pi --. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch --. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch --. ds L" "" --. ds R" "" --. ds C` "" --. ds C' "" --'br\} --.el\{\ --. ds -- \|\(em\| --. ds PI \(*p --. ds L" `` --. ds R" '' --'br\} --.\" --.\" If the F register is turned on, we'll generate index entries on stderr for --.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index --.\" entries marked with X<> in POD. Of course, you'll have to process the --.\" output yourself in some meaningful fashion. --.if \nF \{\ --. de IX --. tm Index:\\$1\t\\n%\t"\\$2" --.. --. nr % 0 --. rr F --.\} --.\" --.\" For nroff, turn off justification. Always turn off hyphenation; it makes --.\" way too many mistakes in technical documents. --.hy 0 --.if n .na --.\" --.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). --.\" Fear. Run. Save yourself. No user-serviceable parts. --. \" fudge factors for nroff and troff --.if n \{\ --. ds #H 0 --. ds #V .8m --. ds #F .3m --. ds #[ \f1 --. ds #] \fP --.\} --.if t \{\ --. ds #H ((1u-(\\\\n(.fu%2u))*.13m) --. ds #V .6m --. ds #F 0 --. ds #[ \& --. ds #] \& --.\} --. \" simple accents for nroff and troff --.if n \{\ --. ds ' \& --. ds ` \& --. ds ^ \& --. ds , \& --. ds ~ ~ --. ds / --.\} --.if t \{\ --. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" --. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' --. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' --. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' --. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' --. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' --.\} --. \" troff and (daisy-wheel) nroff accents --.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' --.ds 8 \h'\*(#H'\(*b\h'-\*(#H' --.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] --.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' --.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' --.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] --.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] --.ds ae a\h'-(\w'a'u*4/10)'e --.ds Ae A\h'-(\w'A'u*4/10)'E --. \" corrections for vroff --.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' --.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' --. \" for low resolution devices (crt and lpr) --.if \n(.H>23 .if \n(.V>19 \ --\{\ --. ds : e --. ds 8 ss --. ds o a --. ds d- d\h'-1'\(ga --. ds D- D\h'-1'\(hy --. ds th \o'bp' --. ds Th \o'LP' --. ds ae ae --. ds Ae AE --.\} --.rm #[ #] #H #V #F C --.\" ======================================================================== --.\" --.IX Title "GCC 1" --.TH GCC 1 "2005-05-03" "gcc-3.3.6" "GNU" --.SH "NAME" --gcc \- GNU project C and C++ compiler --.SH "SYNOPSIS" --.IX Header "SYNOPSIS" --gcc [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR] [\fB\-std=\fR\fIstandard\fR] -- [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR] -- [\fB\-W\fR\fIwarn\fR...] [\fB\-pedantic\fR] -- [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...] -- [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR] -- [\fB\-f\fR\fIoption\fR...] [\fB\-m\fR\fImachine-option\fR...] -- [\fB\-o\fR \fIoutfile\fR] \fIinfile\fR... --.PP --Only the most useful options are listed here; see below for the --remainder. \fBg++\fR accepts mostly the same options as \fBgcc\fR. --.SH "DESCRIPTION" --.IX Header "DESCRIPTION" --When you invoke \s-1GCC\s0, it normally does preprocessing, compilation, --assembly and linking. The ``overall options'' allow you to stop this --process at an intermediate stage. For example, the \fB\-c\fR option --says not to run the linker. Then the output consists of object files --output by the assembler. --.PP --Other options are passed on to one stage of processing. Some options --control the preprocessor and others the compiler itself. Yet other --options control the assembler and linker; most of these are not --documented here, since you rarely need to use any of them. --.PP --Most of the command line options that you can use with \s-1GCC\s0 are useful --for C programs; when an option is only useful with another language --(usually \*(C+), the explanation says so explicitly. If the description --for a particular option does not mention a source language, you can use --that option with all supported languages. --.PP --The \fBgcc\fR program accepts options and file names as operands. Many --options have multi-letter names; therefore multiple single-letter options --may \fInot\fR be grouped: \fB\-dr\fR is very different from \fB\-d\ \-r\fR. --.PP --You can mix options and other arguments. For the most part, the order --you use doesn't matter. Order does matter when you use several options --of the same kind; for example, if you specify \fB\-L\fR more than once, --the directories are searched in the order specified. --.PP --Many options have long names starting with \fB\-f\fR or with --\&\fB\-W\fR\-\-\-for example, \fB\-fforce\-mem\fR, --\&\fB\-fstrength\-reduce\fR, \fB\-Wformat\fR and so on. Most of --these have both positive and negative forms; the negative form of --\&\fB\-ffoo\fR would be \fB\-fno\-foo\fR. This manual documents --only one of these two forms, whichever one is not the default. --.SH "OPTIONS" --.IX Header "OPTIONS" --.Sh "Option Summary" --.IX Subsection "Option Summary" --Here is a summary of all the options, grouped by type. Explanations are --in the following sections. --.IP "\fIOverall Options\fR" 4 --.IX Item "Overall Options" --\&\fB\-c \-S \-E \-o\fR \fIfile\fR \fB\-pipe \-pass\-exit\-codes --\&\-x\fR \fIlanguage\fR \fB\-v \-### \-\-help \-\-target\-help \-\-version\fR --.IP "\fIC Language Options\fR" 4 --.IX Item "C Language Options" --\&\fB\-ansi \-std=\fR\fIstandard\fR \fB\-aux\-info\fR \fIfilename\fR --\&\fB\-fno\-asm \-fno\-builtin \-fno\-builtin\-\fR\fIfunction\fR --\&\fB\-fhosted \-ffreestanding \-fms\-extensions --\&\-trigraphs \-no\-integrated\-cpp \-traditional \-traditional\-cpp --\&\-fallow\-single\-precision \-fcond\-mismatch --\&\-fsigned\-bitfields \-fsigned\-char --\&\-funsigned\-bitfields \-funsigned\-char --\&\-fwritable\-strings\fR --.IP "\fI\*(C+ Language Options\fR" 4 --.IX Item " Language Options" --\&\fB\-fabi\-version=\fR\fIn\fR \fB\-fno\-access\-control \-fcheck\-new --\&\-fconserve\-space \-fno\-const\-strings \-fdollars\-in\-identifiers --\&\-fno\-elide\-constructors --\&\-fno\-enforce\-eh\-specs \-fexternal\-templates --\&\-falt\-external\-templates --\&\-ffor\-scope \-fno\-for\-scope \-fno\-gnu\-keywords --\&\-fno\-implicit\-templates --\&\-fno\-implicit\-inline\-templates --\&\-fno\-implement\-inlines \-fms\-extensions --\&\-fno\-nonansi\-builtins \-fno\-operator\-names --\&\-fno\-optional\-diags \-fpermissive --\&\-frepo \-fno\-rtti \-fstats \-ftemplate\-depth\-\fR\fIn\fR --\&\fB\-fuse\-cxa\-atexit \-fvtable\-gc \-fno\-weak \-nostdinc++ --\&\-fno\-default\-inline \-Wabi \-Wctor\-dtor\-privacy --\&\-Wnon\-virtual\-dtor \-Wreorder --\&\-Weffc++ \-Wno\-deprecated --\&\-Wno\-non\-template\-friend \-Wold\-style\-cast --\&\-Woverloaded\-virtual \-Wno\-pmf\-conversions --\&\-Wsign\-promo\fR --.IP "\fIObjective-C Language Options\fR" 4 --.IX Item "Objective-C Language Options" --\&\fB\-fconstant\-string\-class=\fR\fIclass-name\fR --\&\fB\-fgnu\-runtime \-fnext\-runtime \-gen\-decls --\&\-Wno\-protocol \-Wselector \-Wundeclared\-selector\fR --.IP "\fILanguage Independent Options\fR" 4 --.IX Item "Language Independent Options" --\&\fB\-fmessage\-length=\fR\fIn\fR --\&\fB\-fdiagnostics\-show\-location=\fR[\fBonce\fR|\fBevery-line\fR] --.IP "\fIWarning Options\fR" 4 --.IX Item "Warning Options" --\&\fB\-fsyntax\-only \-pedantic \-pedantic\-errors --\&\-w \-W \-Wall \-Waggregate\-return --\&\-Wcast\-align \-Wcast\-qual \-Wchar\-subscripts \-Wcomment --\&\-Wconversion \-Wno\-deprecated\-declarations --\&\-Wdisabled\-optimization \-Wno\-div\-by\-zero \-Werror --\&\-Wfloat\-equal \-Wformat \-Wformat=2 --\&\-Wformat\-nonliteral \-Wformat\-security --\&\-Wimplicit \-Wimplicit\-int --\&\-Wimplicit\-function\-declaration --\&\-Werror\-implicit\-function\-declaration --\&\-Wimport \-Winline \-Wno\-endif\-labels --\&\-Wlarger\-than\-\fR\fIlen\fR \fB\-Wlong\-long --\&\-Wmain \-Wmissing\-braces --\&\-Wmissing\-format\-attribute \-Wmissing\-noreturn --\&\-Wno\-multichar \-Wno\-format\-extra\-args \-Wno\-format\-y2k --\&\-Wno\-import \-Wnonnull \-Wpacked \-Wpadded --\&\-Wparentheses \-Wpointer\-arith \-Wredundant\-decls --\&\-Wreturn\-type \-Wsequence\-point \-Wshadow --\&\-Wsign\-compare \-Wstrict\-aliasing --\&\-Wswitch \-Wswitch\-default \-Wswitch\-enum --\&\-Wsystem\-headers \-Wtrigraphs \-Wundef \-Wuninitialized --\&\-Wunknown\-pragmas \-Wunreachable\-code --\&\-Wunused \-Wunused\-function \-Wunused\-label \-Wunused\-parameter --\&\-Wunused\-value \-Wunused\-variable \-Wwrite\-strings\fR --.IP "\fIC\-only Warning Options\fR" 4 --.IX Item "C-only Warning Options" --\&\fB\-Wbad\-function\-cast \-Wmissing\-declarations --\&\-Wmissing\-prototypes \-Wnested\-externs --\&\-Wstrict\-prototypes \-Wtraditional\fR --.IP "\fIDebugging Options\fR" 4 --.IX Item "Debugging Options" --\&\fB\-d\fR\fIletters\fR \fB\-dumpspecs \-dumpmachine \-dumpversion --\&\-fdump\-unnumbered \-fdump\-translation\-unit\fR[\fB\-\fR\fIn\fR] --\&\fB\-fdump\-class\-hierarchy\fR[\fB\-\fR\fIn\fR] --\&\fB\-fdump\-tree\-original\fR[\fB\-\fR\fIn\fR] --\&\fB\-fdump\-tree\-optimized\fR[\fB\-\fR\fIn\fR] --\&\fB\-fdump\-tree\-inlined\fR[\fB\-\fR\fIn\fR] --\&\fB\-feliminate\-dwarf2\-dups \-fmem\-report --\&\-fprofile\-arcs \-frandom\-seed=\fR\fIn\fR --\&\fB\-fsched\-verbose=\fR\fIn\fR \fB\-ftest\-coverage \-ftime\-report --\&\-g \-g\fR\fIlevel\fR \fB\-gcoff \-gdwarf \-gdwarf\-1 \-gdwarf\-1+ \-gdwarf\-2 --\&\-ggdb \-gstabs \-gstabs+ \-gvms \-gxcoff \-gxcoff+ --\&\-p \-pg \-print\-file\-name=\fR\fIlibrary\fR \fB\-print\-libgcc\-file\-name --\&\-print\-multi\-directory \-print\-multi\-lib --\&\-print\-prog\-name=\fR\fIprogram\fR \fB\-print\-search\-dirs \-Q --\&\-save\-temps \-time\fR --.IP "\fIOptimization Options\fR" 4 --.IX Item "Optimization Options" --\&\fB\-falign\-functions=\fR\fIn\fR \fB\-falign\-jumps=\fR\fIn\fR --\&\fB\-falign\-labels=\fR\fIn\fR \fB\-falign\-loops=\fR\fIn\fR --\&\fB\-fbranch\-probabilities \-fcaller\-saves \-fcprop\-registers --\&\-fcse\-follow\-jumps \-fcse\-skip\-blocks \-fdata\-sections --\&\-fdelayed\-branch \-fdelete\-null\-pointer\-checks --\&\-fexpensive\-optimizations \-ffast\-math \-ffloat\-store --\&\-fforce\-addr \-fforce\-mem \-ffunction\-sections --\&\-fgcse \-fgcse\-lm \-fgcse\-sm \-floop\-optimize \-fcrossjumping --\&\-fif\-conversion \-fif\-conversion2 --\&\-finline\-functions \-finline\-limit=\fR\fIn\fR \fB\-fkeep\-inline\-functions --\&\-fkeep\-static\-consts \-fmerge\-constants \-fmerge\-all\-constants --\&\-fmove\-all\-movables \-fnew\-ra \-fno\-branch\-count\-reg --\&\-fno\-default\-inline \-fno\-defer\-pop --\&\-fno\-function\-cse \-fno\-guess\-branch\-probability --\&\-fno\-inline \-fno\-math\-errno \-fno\-peephole \-fno\-peephole2 --\&\-funsafe\-math\-optimizations \-ffinite\-math\-only --\&\-fno\-trapping\-math \-fno\-zero\-initialized\-in\-bss --\&\-fomit\-frame\-pointer \-foptimize\-register\-move --\&\-foptimize\-sibling\-calls \-fprefetch\-loop\-arrays --\&\-freduce\-all\-givs \-fregmove \-frename\-registers --\&\-freorder\-blocks \-freorder\-functions --\&\-frerun\-cse\-after\-loop \-frerun\-loop\-opt --\&\-fschedule\-insns \-fschedule\-insns2 --\&\-fno\-sched\-interblock \-fno\-sched\-spec \-fsched\-spec\-load --\&\-fsched\-spec\-load\-dangerous \-fsignaling\-nans --\&\-fsingle\-precision\-constant \-fssa \-fssa\-ccp \-fssa\-dce --\&\-fstrength\-reduce \-fstrict\-aliasing \-ftracer \-fthread\-jumps --\&\-funroll\-all\-loops \-funroll\-loops --\&\-\-param\fR \fIname\fR\fB=\fR\fIvalue\fR --\&\fB\-O \-O0 \-O1 \-O2 \-O3 \-Os\fR --.IP "\fIPreprocessor Options\fR" 4 --.IX Item "Preprocessor Options" --\&\fB\-$ \-A\fR\fIquestion\fR\fB=\fR\fIanswer\fR --\&\fB\-A\-\fR\fIquestion\fR[\fB=\fR\fIanswer\fR] --\&\fB\-C \-dD \-dI \-dM \-dN --\&\-D\fR\fImacro\fR[\fB=\fR\fIdefn\fR] \fB\-E \-H --\&\-idirafter\fR \fIdir\fR --\&\fB\-include\fR \fIfile\fR \fB\-imacros\fR \fIfile\fR --\&\fB\-iprefix\fR \fIfile\fR \fB\-iwithprefix\fR \fIdir\fR --\&\fB\-iwithprefixbefore\fR \fIdir\fR \fB\-isystem\fR \fIdir\fR --\&\fB\-M \-MM \-MF \-MG \-MP \-MQ \-MT \-nostdinc \-P \-remap --\&\-trigraphs \-undef \-U\fR\fImacro\fR \fB\-Wp,\fR\fIoption\fR --.IP "\fIAssembler Option\fR" 4 --.IX Item "Assembler Option" --\&\fB\-Wa,\fR\fIoption\fR --.IP "\fILinker Options\fR" 4 --.IX Item "Linker Options" --\&\fIobject-file-name\fR \fB\-l\fR\fIlibrary\fR --\&\fB\-nostartfiles \-nodefaultlibs \-nostdlib --\&\-s \-static \-static\-libgcc \-shared \-shared\-libgcc \-symbolic --\&\-Wl,\fR\fIoption\fR \fB\-Xlinker\fR \fIoption\fR --\&\fB\-u\fR \fIsymbol\fR --.IP "\fIDirectory Options\fR" 4 --.IX Item "Directory Options" --\&\fB\-B\fR\fIprefix\fR \fB\-I\fR\fIdir\fR \fB\-I\- \-L\fR\fIdir\fR \fB\-specs=\fR\fIfile\fR --.IP "\fITarget Options\fR" 4 --.IX Item "Target Options" --\&\fB\-V\fR \fIversion\fR \fB\-b\fR \fImachine\fR --.IP "\fIMachine Dependent Options\fR" 4 --.IX Item "Machine Dependent Options" --\&\fIM680x0 Options\fR --\&\fB\-m68000 \-m68020 \-m68020\-40 \-m68020\-60 \-m68030 \-m68040 --\&\-m68060 \-mcpu32 \-m5200 \-m68881 \-mbitfield \-mc68000 \-mc68020 --\&\-mfpa \-mnobitfield \-mrtd \-mshort \-msoft\-float \-mpcrel --\&\-malign\-int \-mstrict\-align\fR --.Sp --\&\fIM68hc1x Options\fR --\&\fB\-m6811 \-m6812 \-m68hc11 \-m68hc12 \-m68hcs12 --\&\-mauto\-incdec \-minmax \-mlong\-calls \-mshort --\&\-msoft\-reg\-count=\fR\fIcount\fR --.Sp --\&\fI\s-1VAX\s0 Options\fR --\&\fB\-mg \-mgnu \-munix\fR --.Sp --\&\fI\s-1SPARC\s0 Options\fR --\&\fB\-mcpu=\fR\fIcpu-type\fR --\&\fB\-mtune=\fR\fIcpu-type\fR --\&\fB\-mcmodel=\fR\fIcode-model\fR --\&\fB\-m32 \-m64 --\&\-mapp\-regs \-mbroken\-saverestore \-mcypress --\&\-mfaster\-structs \-mflat --\&\-mfpu \-mhard\-float \-mhard\-quad\-float --\&\-mimpure\-text \-mlittle\-endian \-mlive\-g0 \-mno\-app\-regs --\&\-mno\-faster\-structs \-mno\-flat \-mno\-fpu --\&\-mno\-impure\-text \-mno\-stack\-bias \-mno\-unaligned\-doubles --\&\-msoft\-float \-msoft\-quad\-float \-msparclite \-mstack\-bias --\&\-msupersparc \-munaligned\-doubles \-mv8 --\&\-threads \-pthreads\fR --.Sp --\&\fI\s-1ARM\s0 Options\fR --\&\fB\-mapcs\-frame \-mno\-apcs\-frame --\&\-mapcs\-26 \-mapcs\-32 --\&\-mapcs\-stack\-check \-mno\-apcs\-stack\-check --\&\-mapcs\-float \-mno\-apcs\-float --\&\-mapcs\-reentrant \-mno\-apcs\-reentrant --\&\-msched\-prolog \-mno\-sched\-prolog --\&\-mlittle\-endian \-mbig\-endian \-mwords\-little\-endian --\&\-malignment\-traps \-mno\-alignment\-traps --\&\-msoft\-float \-mhard\-float \-mfpe --\&\-mthumb\-interwork \-mno\-thumb\-interwork --\&\-mcpu=\fR\fIname\fR \fB\-march=\fR\fIname\fR \fB\-mfpe=\fR\fIname\fR --\&\fB\-mstructure\-size\-boundary=\fR\fIn\fR --\&\fB\-mabort\-on\-noreturn --\&\-mlong\-calls \-mno\-long\-calls --\&\-msingle\-pic\-base \-mno\-single\-pic\-base --\&\-mpic\-register=\fR\fIreg\fR --\&\fB\-mnop\-fun\-dllimport --\&\-mpoke\-function\-name --\&\-mthumb \-marm --\&\-mtpcs\-frame \-mtpcs\-leaf\-frame --\&\-mcaller\-super\-interworking \-mcallee\-super\-interworking\fR --.Sp --\&\fI\s-1MN10200\s0 Options\fR --\&\fB\-mrelax\fR --.Sp --\&\fI\s-1MN10300\s0 Options\fR --\&\fB\-mmult\-bug \-mno\-mult\-bug --\&\-mam33 \-mno\-am33 --\&\-mno\-crt0 \-mrelax\fR --.Sp --\&\fIM32R/D Options\fR --\&\fB\-m32rx \-m32r \-mcode\-model=\fR\fImodel-type\fR --\&\fB\-msdata=\fR\fIsdata-type\fR \fB\-G\fR \fInum\fR --.Sp --\&\fIM88K Options\fR --\&\fB\-m88000 \-m88100 \-m88110 \-mbig\-pic --\&\-mcheck\-zero\-division \-mhandle\-large\-shift --\&\-midentify\-revision \-mno\-check\-zero\-division --\&\-mno\-ocs\-debug\-info \-mno\-ocs\-frame\-position --\&\-mno\-optimize\-arg\-area \-mno\-serialize\-volatile --\&\-mno\-underscores \-mocs\-debug\-info --\&\-mocs\-frame\-position \-moptimize\-arg\-area --\&\-mserialize\-volatile \-mshort\-data\-\fR\fInum\fR \fB\-msvr3 --\&\-msvr4 \-mtrap\-large\-shift \-muse\-div\-instruction --\&\-mversion\-03.00 \-mwarn\-passed\-structs\fR --.Sp --\&\fI\s-1RS/6000\s0 and PowerPC Options\fR --\&\fB\-mcpu=\fR\fIcpu-type\fR --\&\fB\-mtune=\fR\fIcpu-type\fR --\&\fB\-mpower \-mno\-power \-mpower2 \-mno\-power2 --\&\-mpowerpc \-mpowerpc64 \-mno\-powerpc --\&\-maltivec \-mno\-altivec --\&\-mpowerpc\-gpopt \-mno\-powerpc\-gpopt --\&\-mpowerpc\-gfxopt \-mno\-powerpc\-gfxopt --\&\-mnew\-mnemonics \-mold\-mnemonics --\&\-mfull\-toc \-mminimal\-toc \-mno\-fp\-in\-toc \-mno\-sum\-in\-toc --\&\-m64 \-m32 \-mxl\-call \-mno\-xl\-call \-mpe --\&\-msoft\-float \-mhard\-float \-mmultiple \-mno\-multiple --\&\-mstring \-mno\-string \-mupdate \-mno\-update --\&\-mfused\-madd \-mno\-fused\-madd \-mbit\-align \-mno\-bit\-align --\&\-mstrict\-align \-mno\-strict\-align \-mrelocatable --\&\-mno\-relocatable \-mrelocatable\-lib \-mno\-relocatable\-lib --\&\-mtoc \-mno\-toc \-mlittle \-mlittle\-endian \-mbig \-mbig\-endian --\&\-mcall\-aix \-mcall\-sysv \-mcall\-netbsd --\&\-maix\-struct\-return \-msvr4\-struct\-return --\&\-mabi=altivec \-mabi=no\-altivec --\&\-mabi=spe \-mabi=no\-spe --\&\-misel=yes \-misel=no --\&\-mprototype \-mno\-prototype --\&\-msim \-mmvme \-mads \-myellowknife \-memb \-msdata --\&\-msdata=\fR\fIopt\fR \fB\-mvxworks \-mwindiss \-G\fR \fInum\fR \fB\-pthread\fR --.Sp --\&\fIDarwin Options\fR --.Sp --\&\fB\-all_load \-allowable_client \-arch \-arch_errors_fatal --\&\-arch_only \-bind_at_load \-bundle \-bundle_loader --\&\-client_name \-compatibility_version \-current_version --\&\-dependency\-file \-dylib_file \-dylinker_install_name --\&\-dynamic \-dynamiclib \-exported_symbols_list --\&\-filelist \-flat_namespace \-force_cpusubtype_ALL --\&\-force_flat_namespace \-headerpad_max_install_names --\&\-image_base \-init \-install_name \-keep_private_externs --\&\-multi_module \-multiply_defined \-multiply_defined_unused --\&\-noall_load \-nomultidefs \-noprebind \-noseglinkedit --\&\-pagezero_size \-prebind \-prebind_all_twolevel_modules --\&\-private_bundle \-read_only_relocs \-sectalign --\&\-sectobjectsymbols \-whyload \-seg1addr --\&\-sectcreate \-sectobjectsymbols \-sectorder --\&\-seg_addr_table \-seg_addr_table_filename \-seglinkedit --\&\-segprot \-segs_read_only_addr \-segs_read_write_addr --\&\-single_module \-static \-sub_library \-sub_umbrella --\&\-twolevel_namespace \-umbrella \-undefined --\&\-unexported_symbols_list \-weak_reference_mismatches \-whatsloaded\fR --.Sp --\&\fI\s-1RT\s0 Options\fR --\&\fB\-mcall\-lib\-mul \-mfp\-arg\-in\-fpregs \-mfp\-arg\-in\-gregs --\&\-mfull\-fp\-blocks \-mhc\-struct\-return \-min\-line\-mul --\&\-mminimum\-fp\-blocks \-mnohc\-struct\-return\fR --.Sp --\&\fI\s-1MIPS\s0 Options\fR --\&\fB\-mabicalls \-march=\fR\fIcpu-type\fR \fB\-mtune=\fR\fIcpu=type\fR --\&\fB\-mcpu=\fR\fIcpu-type\fR \fB\-membedded\-data \-muninit\-const\-in\-rodata --\&\-membedded\-pic \-mfp32 \-mfp64 \-mfused\-madd \-mno\-fused\-madd --\&\-mgas \-mgp32 \-mgp64 --\&\-mgpopt \-mhalf\-pic \-mhard\-float \-mint64 \-mips1 --\&\-mips2 \-mips3 \-mips4 \-mlong64 \-mlong32 \-mlong\-calls \-mmemcpy --\&\-mmips\-as \-mmips\-tfile \-mno\-abicalls --\&\-mno\-embedded\-data \-mno\-uninit\-const\-in\-rodata --\&\-mno\-embedded\-pic \-mno\-gpopt \-mno\-long\-calls --\&\-mno\-memcpy \-mno\-mips\-tfile \-mno\-rnames \-mno\-stats --\&\-mrnames \-msoft\-float --\&\-m4650 \-msingle\-float \-mmad --\&\-mstats \-EL \-EB \-G\fR \fInum\fR \fB\-nocpp --\&\-mabi=32 \-mabi=n32 \-mabi=64 \-mabi=eabi --\&\-mfix7000 \-mno\-crt0 \-mflush\-func=\fR\fIfunc\fR \fB\-mno\-flush\-func --\&\-mbranch\-likely \-mno\-branch\-likely\fR --.Sp --\&\fIi386 and x86\-64 Options\fR --\&\fB\-mcpu=\fR\fIcpu-type\fR \fB\-march=\fR\fIcpu-type\fR --\&\fB\-mfpmath=\fR\fIunit\fR \fB\-masm=\fR\fIdialect\fR \fB\-mno\-fancy\-math\-387 --\&\-mno\-fp\-ret\-in\-387 \-msoft\-float \-msvr3\-shlib --\&\-mno\-wide\-multiply \-mrtd \-malign\-double --\&\-mpreferred\-stack\-boundary=\fR\fInum\fR --\&\fB\-mmmx \-msse \-msse2 \-msse3 \-m3dnow --\&\-mthreads \-mno\-align\-stringops \-minline\-all\-stringops --\&\-mpush\-args \-maccumulate\-outgoing\-args \-m128bit\-long\-double --\&\-m96bit\-long\-double \-mregparm=\fR\fInum\fR \fB\-momit\-leaf\-frame\-pointer --\&\-mno\-red\-zone --\&\-mcmodel=\fR\fIcode-model\fR --\&\fB\-m32 \-m64\fR --.Sp --\&\fI\s-1HPPA\s0 Options\fR --\&\fB\-march=\fR\fIarchitecture-type\fR --\&\fB\-mbig\-switch \-mdisable\-fpregs \-mdisable\-indexing --\&\-mfast\-indirect\-calls \-mgas \-mgnu\-ld \-mhp\-ld --\&\-mjump\-in\-delay \-mlinker\-opt \-mlong\-calls --\&\-mlong\-load\-store \-mno\-big\-switch \-mno\-disable\-fpregs --\&\-mno\-disable\-indexing \-mno\-fast\-indirect\-calls \-mno\-gas --\&\-mno\-jump\-in\-delay \-mno\-long\-load\-store --\&\-mno\-portable\-runtime \-mno\-soft\-float --\&\-mno\-space\-regs \-msoft\-float \-mpa\-risc\-1\-0 --\&\-mpa\-risc\-1\-1 \-mpa\-risc\-2\-0 \-mportable\-runtime --\&\-mschedule=\fR\fIcpu-type\fR \fB\-mspace\-regs \-msio \-mwsio --\&\-nolibdld \-static \-threads\fR --.Sp --\&\fIIntel 960 Options\fR --\&\fB\-m\fR\fIcpu-type\fR \fB\-masm\-compat \-mclean\-linkage --\&\-mcode\-align \-mcomplex\-addr \-mleaf\-procedures --\&\-mic\-compat \-mic2.0\-compat \-mic3.0\-compat --\&\-mintel\-asm \-mno\-clean\-linkage \-mno\-code\-align --\&\-mno\-complex\-addr \-mno\-leaf\-procedures --\&\-mno\-old\-align \-mno\-strict\-align \-mno\-tail\-call --\&\-mnumerics \-mold\-align \-msoft\-float \-mstrict\-align --\&\-mtail\-call\fR --.Sp --\&\fI\s-1DEC\s0 Alpha Options\fR --\&\fB\-mno\-fp\-regs \-msoft\-float \-malpha\-as \-mgas --\&\-mieee \-mieee\-with\-inexact \-mieee\-conformant --\&\-mfp\-trap\-mode=\fR\fImode\fR \fB\-mfp\-rounding\-mode=\fR\fImode\fR --\&\fB\-mtrap\-precision=\fR\fImode\fR \fB\-mbuild\-constants --\&\-mcpu=\fR\fIcpu-type\fR \fB\-mtune=\fR\fIcpu-type\fR --\&\fB\-mbwx \-mmax \-mfix \-mcix --\&\-mfloat\-vax \-mfloat\-ieee --\&\-mexplicit\-relocs \-msmall\-data \-mlarge\-data --\&\-mmemory\-latency=\fR\fItime\fR --.Sp --\&\fI\s-1DEC\s0 Alpha/VMS Options\fR --\&\fB\-mvms\-return\-codes\fR --.Sp --\&\fIH8/300 Options\fR --\&\fB\-mrelax \-mh \-ms \-mn \-mint32 \-malign\-300\fR --.Sp --\&\fI\s-1SH\s0 Options\fR --\&\fB\-m1 \-m2 \-m3 \-m3e --\&\-m4\-nofpu \-m4\-single\-only \-m4\-single \-m4 --\&\-m5\-64media \-m5\-64media\-nofpu --\&\-m5\-32media \-m5\-32media\-nofpu --\&\-m5\-compact \-m5\-compact\-nofpu --\&\-mb \-ml \-mdalign \-mrelax --\&\-mbigtable \-mfmovd \-mhitachi \-mnomacsave --\&\-mieee \-misize \-mpadstruct \-mspace --\&\-mprefergot \-musermode\fR --.Sp --\&\fISystem V Options\fR --\&\fB\-Qy \-Qn \-YP,\fR\fIpaths\fR \fB\-Ym,\fR\fIdir\fR --.Sp --\&\fI\s-1ARC\s0 Options\fR --\&\fB\-EB \-EL --\&\-mmangle\-cpu \-mcpu=\fR\fIcpu\fR \fB\-mtext=\fR\fItext-section\fR --\&\fB\-mdata=\fR\fIdata-section\fR \fB\-mrodata=\fR\fIreadonly-data-section\fR --.Sp --\&\fITMS320C3x/C4x Options\fR --\&\fB\-mcpu=\fR\fIcpu\fR \fB\-mbig \-msmall \-mregparm \-mmemparm --\&\-mfast\-fix \-mmpyi \-mbk \-mti \-mdp\-isr\-reload --\&\-mrpts=\fR\fIcount\fR \fB\-mrptb \-mdb \-mloop\-unsigned --\&\-mparallel\-insns \-mparallel\-mpy \-mpreserve\-float\fR --.Sp --\&\fIV850 Options\fR --\&\fB\-mlong\-calls \-mno\-long\-calls \-mep \-mno\-ep --\&\-mprolog\-function \-mno\-prolog\-function \-mspace --\&\-mtda=\fR\fIn\fR \fB\-msda=\fR\fIn\fR \fB\-mzda=\fR\fIn\fR --\&\fB\-mapp\-regs \-mno\-app\-regs --\&\-mdisable\-callt \-mno\-disable\-callt --\&\-mv850e --\&\-mv850 \-mbig\-switch\fR --.Sp --\&\fI\s-1NS32K\s0 Options\fR --\&\fB\-m32032 \-m32332 \-m32532 \-m32081 \-m32381 --\&\-mmult\-add \-mnomult\-add \-msoft\-float \-mrtd \-mnortd --\&\-mregparam \-mnoregparam \-msb \-mnosb --\&\-mbitfield \-mnobitfield \-mhimem \-mnohimem\fR --.Sp --\&\fI\s-1AVR\s0 Options\fR --\&\fB\-mmcu=\fR\fImcu\fR \fB\-msize \-minit\-stack=\fR\fIn\fR \fB\-mno\-interrupts --\&\-mcall\-prologues \-mno\-tablejump \-mtiny\-stack\fR --.Sp --\&\fIMCore Options\fR --\&\fB\-mhardlit \-mno\-hardlit \-mdiv \-mno\-div \-mrelax\-immediates --\&\-mno\-relax\-immediates \-mwide\-bitfields \-mno\-wide\-bitfields --\&\-m4byte\-functions \-mno\-4byte\-functions \-mcallgraph\-data --\&\-mno\-callgraph\-data \-mslow\-bytes \-mno\-slow\-bytes \-mno\-lsim --\&\-mlittle\-endian \-mbig\-endian \-m210 \-m340 \-mstack\-increment\fR --.Sp --\&\fI\s-1MMIX\s0 Options\fR --\&\fB\-mlibfuncs \-mno\-libfuncs \-mepsilon \-mno\-epsilon \-mabi=gnu --\&\-mabi=mmixware \-mzero\-extend \-mknuthdiv \-mtoplevel\-symbols --\&\-melf \-mbranch\-predict \-mno\-branch\-predict \-mbase\-addresses --\&\-mno\-base\-addresses \-msingle\-exit \-mno\-single\-exit\fR --.Sp --\&\fI\s-1IA\-64\s0 Options\fR --\&\fB\-mbig\-endian \-mlittle\-endian \-mgnu\-as \-mgnu\-ld \-mno\-pic --\&\-mvolatile\-asm\-stop \-mb\-step \-mregister\-names \-mno\-sdata --\&\-mconstant\-gp \-mauto\-pic \-minline\-float\-divide\-min\-latency --\&\-minline\-float\-divide\-max\-throughput --\&\-minline\-int\-divide\-min\-latency --\&\-minline\-int\-divide\-max\-throughput \-mno\-dwarf2\-asm --\&\-mfixed\-range=\fR\fIregister-range\fR --.Sp --\&\fID30V Options\fR --\&\fB\-mextmem \-mextmemory \-monchip \-mno\-asm\-optimize --\&\-masm\-optimize \-mbranch\-cost=\fR\fIn\fR \fB\-mcond\-exec=\fR\fIn\fR --.Sp --\&\fIS/390 and zSeries Options\fR --\&\fB\-mhard\-float \-msoft\-float \-mbackchain \-mno\-backchain --\&\-msmall\-exec \-mno\-small\-exec \-mmvcle \-mno\-mvcle --\&\-m64 \-m31 \-mdebug \-mno\-debug\fR --.Sp --\&\fI\s-1CRIS\s0 Options\fR --\&\fB\-mcpu=\fR\fIcpu\fR \fB\-march=\fR\fIcpu\fR \fB\-mtune=\fR\fIcpu\fR --\&\fB\-mmax\-stack\-frame=\fR\fIn\fR \fB\-melinux\-stacksize=\fR\fIn\fR --\&\fB\-metrax4 \-metrax100 \-mpdebug \-mcc\-init \-mno\-side\-effects --\&\-mstack\-align \-mdata\-align \-mconst\-align --\&\-m32\-bit \-m16\-bit \-m8\-bit \-mno\-prologue\-epilogue \-mno\-gotplt --\&\-melf \-maout \-melinux \-mlinux \-sim \-sim2 --\&\-mmul\-bug\-workaround \-mno\-mul\-bug\-workaround\fR --.Sp --\&\fI\s-1PDP\-11\s0 Options\fR --\&\fB\-mfpu \-msoft\-float \-mac0 \-mno\-ac0 \-m40 \-m45 \-m10 --\&\-mbcopy \-mbcopy\-builtin \-mint32 \-mno\-int16 --\&\-mint16 \-mno\-int32 \-mfloat32 \-mno\-float64 --\&\-mfloat64 \-mno\-float32 \-mabshi \-mno\-abshi --\&\-mbranch\-expensive \-mbranch\-cheap --\&\-msplit \-mno\-split \-munix\-asm \-mdec\-asm\fR --.Sp --\&\fIXstormy16 Options\fR --\&\fB\-msim\fR --.Sp --\&\fIXtensa Options\fR --\&\fB\-mbig\-endian \-mlittle\-endian --\&\-mdensity \-mno\-density --\&\-mmac16 \-mno\-mac16 --\&\-mmul16 \-mno\-mul16 --\&\-mmul32 \-mno\-mul32 --\&\-mnsa \-mno\-nsa --\&\-mminmax \-mno\-minmax --\&\-msext \-mno\-sext --\&\-mbooleans \-mno\-booleans --\&\-mhard\-float \-msoft\-float --\&\-mfused\-madd \-mno\-fused\-madd --\&\-mserialize\-volatile \-mno\-serialize\-volatile --\&\-mtext\-section\-literals \-mno\-text\-section\-literals --\&\-mtarget\-align \-mno\-target\-align --\&\-mlongcalls \-mno\-longcalls\fR --.Sp --\&\fI\s-1FRV\s0 Options\fR --\&\fB\-mgpr\-32 \-mgpr\-64 \-mfpr\-32 \-mfpr\-64 --\&\-mhard\-float \-msoft\-float \-malloc\-cc \-mfixed\-cc --\&\-mdword \-mno\-dword \-mdouble \-mno\-double --\&\-mmedia \-mno\-media \-mmuladd \-mno\-muladd \-mlibrary\-pic --\&\-macc\-4 \-macc\-8 \-mpack \-mno\-pack \-mno\-eflags --\&\-mcond\-move \-mno\-cond\-move \-mscc \-mno\-scc --\&\-mcond\-exec \-mno\-cond\-exec \-mvliw\-branch \-mno\-vliw\-branch --\&\-mmulti\-cond\-exec \-mno\-multi\-cond\-exec \-mnested\-cond\-exec --\&\-mno\-nested\-cond\-exec \-mtomcat\-stats --\&\-mcpu=\fR\fIcpu\fR --.IP "\fICode Generation Options\fR" 4 --.IX Item "Code Generation Options" --\&\fB\-fcall\-saved\-\fR\fIreg\fR \fB\-fcall\-used\-\fR\fIreg\fR --\&\fB\-ffixed\-\fR\fIreg\fR \fB\-fexceptions --\&\-fnon\-call\-exceptions \-funwind\-tables --\&\-fasynchronous\-unwind\-tables --\&\-finhibit\-size\-directive \-finstrument\-functions --\&\-fno\-common \-fno\-ident \-fno\-gnu\-linker --\&\-fpcc\-struct\-return \-fpic \-fPIC --\&\-freg\-struct\-return \-fshared\-data \-fshort\-enums --\&\-fshort\-double \-fshort\-wchar \-fvolatile --\&\-fvolatile\-global \-fvolatile\-static --\&\-fverbose\-asm \-fpack\-struct \-fstack\-check --\&\-fstack\-limit\-register=\fR\fIreg\fR \fB\-fstack\-limit\-symbol=\fR\fIsym\fR --\&\fB\-fargument\-alias \-fargument\-noalias --\&\-fargument\-noalias\-global \-fleading\-underscore --\&\-ftls\-model=\fR\fImodel\fR --\&\fB\-ftrapv \-fbounds\-check\fR --.Sh "Options Controlling the Kind of Output" --.IX Subsection "Options Controlling the Kind of Output" --Compilation can involve up to four stages: preprocessing, compilation --proper, assembly and linking, always in that order. The first three --stages apply to an individual source file, and end by producing an --object file; linking combines all the object files (those newly --compiled, and those specified as input) into an executable file. --.PP --For any given input file, the file name suffix determines what kind of --compilation is done: --.IP "\fIfile\fR\fB.c\fR" 4 --.IX Item "file.c" --C source code which must be preprocessed. --.IP "\fIfile\fR\fB.i\fR" 4 --.IX Item "file.i" --C source code which should not be preprocessed. --.IP "\fIfile\fR\fB.ii\fR" 4 --.IX Item "file.ii" --\&\*(C+ source code which should not be preprocessed. --.IP "\fIfile\fR\fB.m\fR" 4 --.IX Item "file.m" --Objective-C source code. Note that you must link with the library --\&\fIlibobjc.a\fR to make an Objective-C program work. --.IP "\fIfile\fR\fB.mi\fR" 4 --.IX Item "file.mi" --Objective-C source code which should not be preprocessed. --.IP "\fIfile\fR\fB.h\fR" 4 --.IX Item "file.h" --C header file (not to be compiled or linked). --.IP "\fIfile\fR\fB.cc\fR" 4 --.IX Item "file.cc" --.PD 0 --.IP "\fIfile\fR\fB.cp\fR" 4 --.IX Item "file.cp" --.IP "\fIfile\fR\fB.cxx\fR" 4 --.IX Item "file.cxx" --.IP "\fIfile\fR\fB.cpp\fR" 4 --.IX Item "file.cpp" --.IP "\fIfile\fR\fB.c++\fR" 4 --.IX Item "file.c++" --.IP "\fIfile\fR\fB.C\fR" 4 --.IX Item "file.C" --.PD --\&\*(C+ source code which must be preprocessed. Note that in \fB.cxx\fR, --the last two letters must both be literally \fBx\fR. Likewise, --\&\fB.C\fR refers to a literal capital C. --.IP "\fIfile\fR\fB.f\fR" 4 --.IX Item "file.f" --.PD 0 --.IP "\fIfile\fR\fB.for\fR" 4 --.IX Item "file.for" --.IP "\fIfile\fR\fB.FOR\fR" 4 --.IX Item "file.FOR" --.PD --Fortran source code which should not be preprocessed. --.IP "\fIfile\fR\fB.F\fR" 4 --.IX Item "file.F" --.PD 0 --.IP "\fIfile\fR\fB.fpp\fR" 4 --.IX Item "file.fpp" --.IP "\fIfile\fR\fB.FPP\fR" 4 --.IX Item "file.FPP" --.PD --Fortran source code which must be preprocessed (with the traditional --preprocessor). --.IP "\fIfile\fR\fB.r\fR" 4 --.IX Item "file.r" --Fortran source code which must be preprocessed with a \s-1RATFOR\s0 --preprocessor (not included with \s-1GCC\s0). --.IP "\fIfile\fR\fB.ads\fR" 4 --.IX Item "file.ads" --Ada source code file which contains a library unit declaration (a --declaration of a package, subprogram, or generic, or a generic --instantiation), or a library unit renaming declaration (a package, --generic, or subprogram renaming declaration). Such files are also --called \fIspecs\fR. --.IP "\fIfile\fR\fB.adb\fR" 4 --.IX Item "file.adb" --Ada source code file containing a library unit body (a subprogram or --package body). Such files are also called \fIbodies\fR. --.IP "\fIfile\fR\fB.s\fR" 4 --.IX Item "file.s" --Assembler code. --.IP "\fIfile\fR\fB.S\fR" 4 --.IX Item "file.S" --Assembler code which must be preprocessed. --.IP "\fIother\fR" 4 --.IX Item "other" --An object file to be fed straight into linking. --Any file name with no recognized suffix is treated this way. --.PP --You can specify the input language explicitly with the \fB\-x\fR option: --.IP "\fB\-x\fR \fIlanguage\fR" 4 --.IX Item "-x language" --Specify explicitly the \fIlanguage\fR for the following input files --(rather than letting the compiler choose a default based on the file --name suffix). This option applies to all following input files until --the next \fB\-x\fR option. Possible values for \fIlanguage\fR are: --.Sp --.Vb 8 --\& c c-header cpp-output --\& c++ c++-cpp-output --\& objective-c objc-cpp-output --\& assembler assembler-with-cpp --\& ada --\& f77 f77-cpp-input ratfor --\& java --\& treelang --.Ve --.IP "\fB\-x none\fR" 4 --.IX Item "-x none" --Turn off any specification of a language, so that subsequent files are --handled according to their file name suffixes (as they are if \fB\-x\fR --has not been used at all). --.IP "\fB\-pass\-exit\-codes\fR" 4 --.IX Item "-pass-exit-codes" --Normally the \fBgcc\fR program will exit with the code of 1 if any --phase of the compiler returns a non-success return code. If you specify --\&\fB\-pass\-exit\-codes\fR, the \fBgcc\fR program will instead return with --numerically highest error produced by any phase that returned an error --indication. --.PP --If you only want some of the stages of compilation, you can use --\&\fB\-x\fR (or filename suffixes) to tell \fBgcc\fR where to start, and --one of the options \fB\-c\fR, \fB\-S\fR, or \fB\-E\fR to say where --\&\fBgcc\fR is to stop. Note that some combinations (for example, --\&\fB\-x cpp-output \-E\fR) instruct \fBgcc\fR to do nothing at all. --.IP "\fB\-c\fR" 4 --.IX Item "-c" --Compile or assemble the source files, but do not link. The linking --stage simply is not done. The ultimate output is in the form of an --object file for each source file. --.Sp --By default, the object file name for a source file is made by replacing --the suffix \fB.c\fR, \fB.i\fR, \fB.s\fR, etc., with \fB.o\fR. --.Sp --Unrecognized input files, not requiring compilation or assembly, are --ignored. --.IP "\fB\-S\fR" 4 --.IX Item "-S" --Stop after the stage of compilation proper; do not assemble. The output --is in the form of an assembler code file for each non-assembler input --file specified. --.Sp --By default, the assembler file name for a source file is made by --replacing the suffix \fB.c\fR, \fB.i\fR, etc., with \fB.s\fR. --.Sp --Input files that don't require compilation are ignored. --.IP "\fB\-E\fR" 4 --.IX Item "-E" --Stop after the preprocessing stage; do not run the compiler proper. The --output is in the form of preprocessed source code, which is sent to the --standard output. --.Sp --Input files which don't require preprocessing are ignored. --.IP "\fB\-o\fR \fIfile\fR" 4 --.IX Item "-o file" --Place output in file \fIfile\fR. This applies regardless to whatever --sort of output is being produced, whether it be an executable file, --an object file, an assembler file or preprocessed C code. --.Sp --Since only one output file can be specified, it does not make sense to --use \fB\-o\fR when compiling more than one input file, unless you are --producing an executable file as output. --.Sp --If \fB\-o\fR is not specified, the default is to put an executable file --in \fIa.out\fR, the object file for \fI\fIsource\fI.\fIsuffix\fI\fR in --\&\fI\fIsource\fI.o\fR, its assembler file in \fI\fIsource\fI.s\fR, and --all preprocessed C source on standard output. --.IP "\fB\-v\fR" 4 --.IX Item "-v" --Print (on standard error output) the commands executed to run the stages --of compilation. Also print the version number of the compiler driver --program and of the preprocessor and the compiler proper. --.IP "\fB\-###\fR" 4 --.IX Item "-###" --Like \fB\-v\fR except the commands are not executed and all command --arguments are quoted. This is useful for shell scripts to capture the --driver-generated command lines. --.IP "\fB\-pipe\fR" 4 --.IX Item "-pipe" --Use pipes rather than temporary files for communication between the --various stages of compilation. This fails to work on some systems where --the assembler is unable to read from a pipe; but the \s-1GNU\s0 assembler has --no trouble. --.IP "\fB\-\-help\fR" 4 --.IX Item "--help" --Print (on the standard output) a description of the command line options --understood by \fBgcc\fR. If the \fB\-v\fR option is also specified --then \fB\-\-help\fR will also be passed on to the various processes --invoked by \fBgcc\fR, so that they can display the command line options --they accept. If the \fB\-W\fR option is also specified then command --line options which have no documentation associated with them will also --be displayed. --.IP "\fB\-\-target\-help\fR" 4 --.IX Item "--target-help" --Print (on the standard output) a description of target specific command --line options for each tool. --.IP "\fB\-\-version\fR" 4 --.IX Item "--version" --Display the version number and copyrights of the invoked \s-1GCC\s0. --.Sh "Compiling \*(C+ Programs" --.IX Subsection "Compiling Programs" --\&\*(C+ source files conventionally use one of the suffixes \fB.C\fR, --\&\fB.cc\fR, \fB.cpp\fR, \fB.c++\fR, \fB.cp\fR, or \fB.cxx\fR; --preprocessed \*(C+ files use the suffix \fB.ii\fR. \s-1GCC\s0 recognizes --files with these names and compiles them as \*(C+ programs even if you --call the compiler the same way as for compiling C programs (usually with --the name \fBgcc\fR). --.PP --However, \*(C+ programs often require class libraries as well as a --compiler that understands the \*(C+ language\-\-\-and under some --circumstances, you might want to compile programs from standard input, --or otherwise without a suffix that flags them as \*(C+ programs. --\&\fBg++\fR is a program that calls \s-1GCC\s0 with the default language --set to \*(C+, and automatically specifies linking against the \*(C+ --library. On many systems, \fBg++\fR is also --installed with the name \fBc++\fR. --.PP --When you compile \*(C+ programs, you may specify many of the same --command-line options that you use for compiling programs in any --language; or command-line options meaningful for C and related --languages; or options that are meaningful only for \*(C+ programs. --.Sh "Options Controlling C Dialect" --.IX Subsection "Options Controlling C Dialect" --The following options control the dialect of C (or languages derived --from C, such as \*(C+ and Objective\-C) that the compiler accepts: --.IP "\fB\-ansi\fR" 4 --.IX Item "-ansi" --In C mode, support all \s-1ISO\s0 C90 programs. In \*(C+ mode, --remove \s-1GNU\s0 extensions that conflict with \s-1ISO\s0 \*(C+. --.Sp --This turns off certain features of \s-1GCC\s0 that are incompatible with \s-1ISO\s0 --C90 (when compiling C code), or of standard \*(C+ (when compiling \*(C+ code), --such as the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords, and --predefined macros such as \f(CW\*(C`unix\*(C'\fR and \f(CW\*(C`vax\*(C'\fR that identify the --type of system you are using. It also enables the undesirable and --rarely used \s-1ISO\s0 trigraph feature. For the C compiler, --it disables recognition of \*(C+ style \fB//\fR comments as well as --the \f(CW\*(C`inline\*(C'\fR keyword. --.Sp --The alternate keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_extension_\|_\*(C'\fR, --\&\f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR continue to work despite --\&\fB\-ansi\fR. You would not want to use them in an \s-1ISO\s0 C program, of --course, but it is useful to put them in header files that might be included --in compilations done with \fB\-ansi\fR. Alternate predefined macros --such as \f(CW\*(C`_\|_unix_\|_\*(C'\fR and \f(CW\*(C`_\|_vax_\|_\*(C'\fR are also available, with or --without \fB\-ansi\fR. --.Sp --The \fB\-ansi\fR option does not cause non-ISO programs to be --rejected gratuitously. For that, \fB\-pedantic\fR is required in --addition to \fB\-ansi\fR. --.Sp --The macro \f(CW\*(C`_\|_STRICT_ANSI_\|_\*(C'\fR is predefined when the \fB\-ansi\fR --option is used. Some header files may notice this macro and refrain --from declaring certain functions or defining certain macros that the --\&\s-1ISO\s0 standard doesn't call for; this is to avoid interfering with any --programs that might use these names for other things. --.Sp --Functions which would normally be built in but do not have semantics --defined by \s-1ISO\s0 C (such as \f(CW\*(C`alloca\*(C'\fR and \f(CW\*(C`ffs\*(C'\fR) are not built-in --functions with \fB\-ansi\fR is used. --.IP "\fB\-std=\fR" 4 --.IX Item "-std=" --Determine the language standard. This option is currently only --supported when compiling C or \*(C+. A value for this option must be --provided; possible values are --.RS 4 --.IP "\fBc89\fR" 4 --.IX Item "c89" --.PD 0 --.IP "\fBiso9899:1990\fR" 4 --.IX Item "iso9899:1990" --.PD --\&\s-1ISO\s0 C90 (same as \fB\-ansi\fR). --.IP "\fBiso9899:199409\fR" 4 --.IX Item "iso9899:199409" --\&\s-1ISO\s0 C90 as modified in amendment 1. --.IP "\fBc99\fR" 4 --.IX Item "c99" --.PD 0 --.IP "\fBc9x\fR" 4 --.IX Item "c9x" --.IP "\fBiso9899:1999\fR" 4 --.IX Item "iso9899:1999" --.IP "\fBiso9899:199x\fR" 4 --.IX Item "iso9899:199x" --.PD --\&\s-1ISO\s0 C99. Note that this standard is not yet fully supported; see --<\fBhttp://gcc.gnu.org/gcc\-3.3/c99status.html\fR> for more information. The --names \fBc9x\fR and \fBiso9899:199x\fR are deprecated. --.IP "\fBgnu89\fR" 4 --.IX Item "gnu89" --Default, \s-1ISO\s0 C90 plus \s-1GNU\s0 extensions (including some C99 features). --.IP "\fBgnu99\fR" 4 --.IX Item "gnu99" --.PD 0 --.IP "\fBgnu9x\fR" 4 --.IX Item "gnu9x" --.PD --\&\s-1ISO\s0 C99 plus \s-1GNU\s0 extensions. When \s-1ISO\s0 C99 is fully implemented in \s-1GCC\s0, --this will become the default. The name \fBgnu9x\fR is deprecated. --.IP "\fBc++98\fR" 4 --.IX Item "c++98" --The 1998 \s-1ISO\s0 \*(C+ standard plus amendments. --.IP "\fBgnu++98\fR" 4 --.IX Item "gnu++98" --The same as \fB\-std=c++98\fR plus \s-1GNU\s0 extensions. This is the --default for \*(C+ code. --.RE --.RS 4 --.Sp --Even when this option is not specified, you can still use some of the --features of newer standards in so far as they do not conflict with --previous C standards. For example, you may use \f(CW\*(C`_\|_restrict_\|_\*(C'\fR even --when \fB\-std=c99\fR is not specified. --.Sp --The \fB\-std\fR options specifying some version of \s-1ISO\s0 C have the same --effects as \fB\-ansi\fR, except that features that were not in \s-1ISO\s0 C90 --but are in the specified version (for example, \fB//\fR comments and --the \f(CW\*(C`inline\*(C'\fR keyword in \s-1ISO\s0 C99) are not disabled. --.RE --.IP "\fB\-aux\-info\fR \fIfilename\fR" 4 --.IX Item "-aux-info filename" --Output to the given filename prototyped declarations for all functions --declared and/or defined in a translation unit, including those in header --files. This option is silently ignored in any language other than C. --.Sp --Besides declarations, the file indicates, in comments, the origin of --each declaration (source file and line), whether the declaration was --implicit, prototyped or unprototyped (\fBI\fR, \fBN\fR for new or --\&\fBO\fR for old, respectively, in the first character after the line --number and the colon), and whether it came from a declaration or a --definition (\fBC\fR or \fBF\fR, respectively, in the following --character). In the case of function definitions, a K&R\-style list of --arguments followed by their declarations is also provided, inside --comments, after the declaration. --.IP "\fB\-fno\-asm\fR" 4 --.IX Item "-fno-asm" --Do not recognize \f(CW\*(C`asm\*(C'\fR, \f(CW\*(C`inline\*(C'\fR or \f(CW\*(C`typeof\*(C'\fR as a --keyword, so that code can use these words as identifiers. You can use --the keywords \f(CW\*(C`_\|_asm_\|_\*(C'\fR, \f(CW\*(C`_\|_inline_\|_\*(C'\fR and \f(CW\*(C`_\|_typeof_\|_\*(C'\fR --instead. \fB\-ansi\fR implies \fB\-fno\-asm\fR. --.Sp --In \*(C+, this switch only affects the \f(CW\*(C`typeof\*(C'\fR keyword, since --\&\f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`inline\*(C'\fR are standard keywords. You may want to --use the \fB\-fno\-gnu\-keywords\fR flag instead, which has the same --effect. In C99 mode (\fB\-std=c99\fR or \fB\-std=gnu99\fR), this --switch only affects the \f(CW\*(C`asm\*(C'\fR and \f(CW\*(C`typeof\*(C'\fR keywords, since --\&\f(CW\*(C`inline\*(C'\fR is a standard keyword in \s-1ISO\s0 C99. --.IP "\fB\-fno\-builtin\fR" 4 --.IX Item "-fno-builtin" --.PD 0 --.IP "\fB\-fno\-builtin\-\fR\fIfunction\fR" 4 --.IX Item "-fno-builtin-function" --.PD --Don't recognize built-in functions that do not begin with --\&\fB_\|_builtin_\fR as prefix. --.Sp --\&\s-1GCC\s0 normally generates special code to handle certain built-in functions --more efficiently; for instance, calls to \f(CW\*(C`alloca\*(C'\fR may become single --instructions that adjust the stack directly, and calls to \f(CW\*(C`memcpy\*(C'\fR --may become inline copy loops. The resulting code is often both smaller --and faster, but since the function calls no longer appear as such, you --cannot set a breakpoint on those calls, nor can you change the behavior --of the functions by linking with a different library. --.Sp --With the \fB\-fno\-builtin\-\fR\fIfunction\fR option --only the built-in function \fIfunction\fR is --disabled. \fIfunction\fR must not begin with \fB_\|_builtin_\fR. If a --function is named this is not built-in in this version of \s-1GCC\s0, this --option is ignored. There is no corresponding --\&\fB\-fbuiltin\-\fR\fIfunction\fR option; if you wish to enable --built-in functions selectively when using \fB\-fno\-builtin\fR or --\&\fB\-ffreestanding\fR, you may define macros such as: --.Sp --.Vb 2 --\& #define abs(n) __builtin_abs ((n)) --\& #define strcpy(d, s) __builtin_strcpy ((d), (s)) --.Ve --.IP "\fB\-fhosted\fR" 4 --.IX Item "-fhosted" --Assert that compilation takes place in a hosted environment. This implies --\&\fB\-fbuiltin\fR. A hosted environment is one in which the --entire standard library is available, and in which \f(CW\*(C`main\*(C'\fR has a return --type of \f(CW\*(C`int\*(C'\fR. Examples are nearly everything except a kernel. --This is equivalent to \fB\-fno\-freestanding\fR. --.IP "\fB\-ffreestanding\fR" 4 --.IX Item "-ffreestanding" --Assert that compilation takes place in a freestanding environment. This --implies \fB\-fno\-builtin\fR. A freestanding environment --is one in which the standard library may not exist, and program startup may --not necessarily be at \f(CW\*(C`main\*(C'\fR. The most obvious example is an \s-1OS\s0 kernel. --This is equivalent to \fB\-fno\-hosted\fR. --.IP "\fB\-fms\-extensions\fR" 4 --.IX Item "-fms-extensions" --Accept some non-standard constructs used in Microsoft header files. --.IP "\fB\-trigraphs\fR" 4 --.IX Item "-trigraphs" --Support \s-1ISO\s0 C trigraphs. The \fB\-ansi\fR option (and \fB\-std\fR --options for strict \s-1ISO\s0 C conformance) implies \fB\-trigraphs\fR. --.IP "\fB\-no\-integrated\-cpp\fR" 4 --.IX Item "-no-integrated-cpp" --Performs a compilation in two passes: preprocessing and compiling. This --option allows a user supplied \*(L"cc1\*(R", \*(L"cc1plus\*(R", or \*(L"cc1obj\*(R" via the --\&\fB\-B\fR option. The user supplied compilation step can then add in --an additional preprocessing step after normal preprocessing but before --compiling. The default is to use the integrated cpp (internal cpp) --.Sp --The semantics of this option will change if \*(L"cc1\*(R", \*(L"cc1plus\*(R", and --\&\*(L"cc1obj\*(R" are merged. --.IP "\fB\-traditional\fR" 4 --.IX Item "-traditional" --.PD 0 --.IP "\fB\-traditional\-cpp\fR" 4 --.IX Item "-traditional-cpp" --.PD --Formerly, these options caused \s-1GCC\s0 to attempt to emulate a pre-standard --C compiler. They are now only supported with the \fB\-E\fR switch. --The preprocessor continues to support a pre-standard mode. See the \s-1GNU\s0 --\&\s-1CPP\s0 manual for details. --.IP "\fB\-fcond\-mismatch\fR" 4 --.IX Item "-fcond-mismatch" --Allow conditional expressions with mismatched types in the second and --third arguments. The value of such an expression is void. This option --is not supported for \*(C+. --.IP "\fB\-funsigned\-char\fR" 4 --.IX Item "-funsigned-char" --Let the type \f(CW\*(C`char\*(C'\fR be unsigned, like \f(CW\*(C`unsigned char\*(C'\fR. --.Sp --Each kind of machine has a default for what \f(CW\*(C`char\*(C'\fR should --be. It is either like \f(CW\*(C`unsigned char\*(C'\fR by default or like --\&\f(CW\*(C`signed char\*(C'\fR by default. --.Sp --Ideally, a portable program should always use \f(CW\*(C`signed char\*(C'\fR or --\&\f(CW\*(C`unsigned char\*(C'\fR when it depends on the signedness of an object. --But many programs have been written to use plain \f(CW\*(C`char\*(C'\fR and --expect it to be signed, or expect it to be unsigned, depending on the --machines they were written for. This option, and its inverse, let you --make such a program work with the opposite default. --.Sp --The type \f(CW\*(C`char\*(C'\fR is always a distinct type from each of --\&\f(CW\*(C`signed char\*(C'\fR or \f(CW\*(C`unsigned char\*(C'\fR, even though its behavior --is always just like one of those two. --.IP "\fB\-fsigned\-char\fR" 4 --.IX Item "-fsigned-char" --Let the type \f(CW\*(C`char\*(C'\fR be signed, like \f(CW\*(C`signed char\*(C'\fR. --.Sp --Note that this is equivalent to \fB\-fno\-unsigned\-char\fR, which is --the negative form of \fB\-funsigned\-char\fR. Likewise, the option --\&\fB\-fno\-signed\-char\fR is equivalent to \fB\-funsigned\-char\fR. --.IP "\fB\-fsigned\-bitfields\fR" 4 --.IX Item "-fsigned-bitfields" --.PD 0 --.IP "\fB\-funsigned\-bitfields\fR" 4 --.IX Item "-funsigned-bitfields" --.IP "\fB\-fno\-signed\-bitfields\fR" 4 --.IX Item "-fno-signed-bitfields" --.IP "\fB\-fno\-unsigned\-bitfields\fR" 4 --.IX Item "-fno-unsigned-bitfields" --.PD --These options control whether a bit-field is signed or unsigned, when the --declaration does not use either \f(CW\*(C`signed\*(C'\fR or \f(CW\*(C`unsigned\*(C'\fR. By --default, such a bit-field is signed, because this is consistent: the --basic integer types such as \f(CW\*(C`int\*(C'\fR are signed types. --.IP "\fB\-fwritable\-strings\fR" 4 --.IX Item "-fwritable-strings" --Store string constants in the writable data segment and don't uniquize --them. This is for compatibility with old programs which assume they can --write into string constants. --.Sp --Writing into string constants is a very bad idea; ``constants'' should --be constant. --.Sh "Options Controlling \*(C+ Dialect" --.IX Subsection "Options Controlling Dialect" --This section describes the command-line options that are only meaningful --for \*(C+ programs; but you can also use most of the \s-1GNU\s0 compiler options --regardless of what language your program is in. For example, you --might compile a file \f(CW\*(C`firstClass.C\*(C'\fR like this: --.PP --.Vb 1 --\& g++ -g -frepo -O -c firstClass.C --.Ve --.PP --In this example, only \fB\-frepo\fR is an option meant --only for \*(C+ programs; you can use the other options with any --language supported by \s-1GCC\s0. --.PP --Here is a list of options that are \fIonly\fR for compiling \*(C+ programs: --.IP "\fB\-fabi\-version=\fR\fIn\fR" 4 --.IX Item "-fabi-version=n" --Use version \fIn\fR of the \*(C+ \s-1ABI\s0. Version 1 is the version of the \*(C+ --\&\s-1ABI\s0 that first appeared in G++ 3.2. Version 0 will always be the --version that conforms most closely to the \*(C+ \s-1ABI\s0 specification. --Therefore, the \s-1ABI\s0 obtained using version 0 will change as \s-1ABI\s0 bugs are --fixed. --.Sp --The default is version 1. --.IP "\fB\-fno\-access\-control\fR" 4 --.IX Item "-fno-access-control" --Turn off all access checking. This switch is mainly useful for working --around bugs in the access control code. --.IP "\fB\-fcheck\-new\fR" 4 --.IX Item "-fcheck-new" --Check that the pointer returned by \f(CW\*(C`operator new\*(C'\fR is non-null --before attempting to modify the storage allocated. This check is --normally unnecessary because the \*(C+ standard specifies that --\&\f(CW\*(C`operator new\*(C'\fR will only return \f(CW0\fR if it is declared --\&\fB\f(BIthrow()\fB\fR, in which case the compiler will always check the --return value even without this option. In all other cases, when --\&\f(CW\*(C`operator new\*(C'\fR has a non-empty exception specification, memory --exhaustion is signalled by throwing \f(CW\*(C`std::bad_alloc\*(C'\fR. See also --\&\fBnew (nothrow)\fR. --.IP "\fB\-fconserve\-space\fR" 4 --.IX Item "-fconserve-space" --Put uninitialized or runtime-initialized global variables into the --common segment, as C does. This saves space in the executable at the --cost of not diagnosing duplicate definitions. If you compile with this --flag and your program mysteriously crashes after \f(CW\*(C`main()\*(C'\fR has --completed, you may have an object that is being destroyed twice because --two definitions were merged. --.Sp --This option is no longer useful on most targets, now that support has --been added for putting variables into \s-1BSS\s0 without making them common. --.IP "\fB\-fno\-const\-strings\fR" 4 --.IX Item "-fno-const-strings" --Give string constants type \f(CW\*(C`char *\*(C'\fR instead of type \f(CW\*(C`const --char *\*(C'\fR. By default, G++ uses type \f(CW\*(C`const char *\*(C'\fR as required by --the standard. Even if you use \fB\-fno\-const\-strings\fR, you cannot --actually modify the value of a string constant, unless you also use --\&\fB\-fwritable\-strings\fR. --.Sp --This option might be removed in a future release of G++. For maximum --portability, you should structure your code so that it works with --string constants that have type \f(CW\*(C`const char *\*(C'\fR. --.IP "\fB\-fdollars\-in\-identifiers\fR" 4 --.IX Item "-fdollars-in-identifiers" --Accept \fB$\fR in identifiers. You can also explicitly prohibit use of --\&\fB$\fR with the option \fB\-fno\-dollars\-in\-identifiers\fR. (\s-1GNU\s0 C allows --\&\fB$\fR by default on most target systems, but there are a few exceptions.) --Traditional C allowed the character \fB$\fR to form part of --identifiers. However, \s-1ISO\s0 C and \*(C+ forbid \fB$\fR in identifiers. --.IP "\fB\-fno\-elide\-constructors\fR" 4 --.IX Item "-fno-elide-constructors" --The \*(C+ standard allows an implementation to omit creating a temporary --which is only used to initialize another object of the same type. --Specifying this option disables that optimization, and forces G++ to --call the copy constructor in all cases. --.IP "\fB\-fno\-enforce\-eh\-specs\fR" 4 --.IX Item "-fno-enforce-eh-specs" --Don't check for violation of exception specifications at runtime. This --option violates the \*(C+ standard, but may be useful for reducing code --size in production builds, much like defining \fB\s-1NDEBUG\s0\fR. The compiler --will still optimize based on the exception specifications. --.IP "\fB\-fexternal\-templates\fR" 4 --.IX Item "-fexternal-templates" --Cause \fB#pragma interface\fR and \fBimplementation\fR to apply to --template instantiation; template instances are emitted or not according --to the location of the template definition. --.Sp --This option is deprecated. --.IP "\fB\-falt\-external\-templates\fR" 4 --.IX Item "-falt-external-templates" --Similar to \fB\-fexternal\-templates\fR, but template instances are --emitted or not according to the place where they are first instantiated. --.Sp --This option is deprecated. --.IP "\fB\-ffor\-scope\fR" 4 --.IX Item "-ffor-scope" --.PD 0 --.IP "\fB\-fno\-for\-scope\fR" 4 --.IX Item "-fno-for-scope" --.PD --If \fB\-ffor\-scope\fR is specified, the scope of variables declared in --a \fIfor-init-statement\fR is limited to the \fBfor\fR loop itself, --as specified by the \*(C+ standard. --If \fB\-fno\-for\-scope\fR is specified, the scope of variables declared in --a \fIfor-init-statement\fR extends to the end of the enclosing scope, --as was the case in old versions of G++, and other (traditional) --implementations of \*(C+. --.Sp --The default if neither flag is given to follow the standard, --but to allow and give a warning for old-style code that would --otherwise be invalid, or have different behavior. --.IP "\fB\-fno\-gnu\-keywords\fR" 4 --.IX Item "-fno-gnu-keywords" --Do not recognize \f(CW\*(C`typeof\*(C'\fR as a keyword, so that code can use this --word as an identifier. You can use the keyword \f(CW\*(C`_\|_typeof_\|_\*(C'\fR instead. --\&\fB\-ansi\fR implies \fB\-fno\-gnu\-keywords\fR. --.IP "\fB\-fno\-implicit\-templates\fR" 4 --.IX Item "-fno-implicit-templates" --Never emit code for non-inline templates which are instantiated --implicitly (i.e. by use); only emit code for explicit instantiations. --.IP "\fB\-fno\-implicit\-inline\-templates\fR" 4 --.IX Item "-fno-implicit-inline-templates" --Don't emit code for implicit instantiations of inline templates, either. --The default is to handle inlines differently so that compiles with and --without optimization will need the same set of explicit instantiations. --.IP "\fB\-fno\-implement\-inlines\fR" 4 --.IX Item "-fno-implement-inlines" --To save space, do not emit out-of-line copies of inline functions --controlled by \fB#pragma implementation\fR. This will cause linker --errors if these functions are not inlined everywhere they are called. --.IP "\fB\-fms\-extensions\fR" 4 --.IX Item "-fms-extensions" --Disable pedantic warnings about constructs used in \s-1MFC\s0, such as implicit --int and getting a pointer to member function via non-standard syntax. --.IP "\fB\-fno\-nonansi\-builtins\fR" 4 --.IX Item "-fno-nonansi-builtins" --Disable built-in declarations of functions that are not mandated by --\&\s-1ANSI/ISO\s0 C. These include \f(CW\*(C`ffs\*(C'\fR, \f(CW\*(C`alloca\*(C'\fR, \f(CW\*(C`_exit\*(C'\fR, --\&\f(CW\*(C`index\*(C'\fR, \f(CW\*(C`bzero\*(C'\fR, \f(CW\*(C`conjf\*(C'\fR, and other related functions. --.IP "\fB\-fno\-operator\-names\fR" 4 --.IX Item "-fno-operator-names" --Do not treat the operator name keywords \f(CW\*(C`and\*(C'\fR, \f(CW\*(C`bitand\*(C'\fR, --\&\f(CW\*(C`bitor\*(C'\fR, \f(CW\*(C`compl\*(C'\fR, \f(CW\*(C`not\*(C'\fR, \f(CW\*(C`or\*(C'\fR and \f(CW\*(C`xor\*(C'\fR as --synonyms as keywords. --.IP "\fB\-fno\-optional\-diags\fR" 4 --.IX Item "-fno-optional-diags" --Disable diagnostics that the standard says a compiler does not need to --issue. Currently, the only such diagnostic issued by G++ is the one for --a name having multiple meanings within a class. --.IP "\fB\-fpermissive\fR" 4 --.IX Item "-fpermissive" --Downgrade some diagnostics about nonconformant code from errors to --warnings. Thus, using \fB\-fpermissive\fR will allow some --nonconforming code to compile. --.IP "\fB\-frepo\fR" 4 --.IX Item "-frepo" --Enable automatic template instantiation at link time. This option also --implies \fB\-fno\-implicit\-templates\fR. --.IP "\fB\-fno\-rtti\fR" 4 --.IX Item "-fno-rtti" --Disable generation of information about every class with virtual --functions for use by the \*(C+ runtime type identification features --(\fBdynamic_cast\fR and \fBtypeid\fR). If you don't use those parts --of the language, you can save some space by using this flag. Note that --exception handling uses the same information, but it will generate it as --needed. --.IP "\fB\-fstats\fR" 4 --.IX Item "-fstats" --Emit statistics about front-end processing at the end of the compilation. --This information is generally only useful to the G++ development team. --.IP "\fB\-ftemplate\-depth\-\fR\fIn\fR" 4 --.IX Item "-ftemplate-depth-n" --Set the maximum instantiation depth for template classes to \fIn\fR. --A limit on the template instantiation depth is needed to detect --endless recursions during template class instantiation. \s-1ANSI/ISO\s0 \*(C+ --conforming programs must not rely on a maximum depth greater than 17. --.IP "\fB\-fuse\-cxa\-atexit\fR" 4 --.IX Item "-fuse-cxa-atexit" --Register destructors for objects with static storage duration with the --\&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR function rather than the \f(CW\*(C`atexit\*(C'\fR function. --This option is required for fully standards-compliant handling of static --destructors, but will only work if your C library supports --\&\f(CW\*(C`_\|_cxa_atexit\*(C'\fR. --.IP "\fB\-fvtable\-gc\fR" 4 --.IX Item "-fvtable-gc" --Emit special relocations for vtables and virtual function references --so that the linker can identify unused virtual functions and zero out --vtable slots that refer to them. This is most useful with --\&\fB\-ffunction\-sections\fR and \fB\-Wl,\-\-gc\-sections\fR, in order to --also discard the functions themselves. --.Sp --This optimization requires \s-1GNU\s0 as and \s-1GNU\s0 ld. Not all systems support --this option. \fB\-Wl,\-\-gc\-sections\fR is ignored without \fB\-static\fR. --.IP "\fB\-fno\-weak\fR" 4 --.IX Item "-fno-weak" --Do not use weak symbol support, even if it is provided by the linker. --By default, G++ will use weak symbols if they are available. This --option exists only for testing, and should not be used by end\-users; --it will result in inferior code and has no benefits. This option may --be removed in a future release of G++. --.IP "\fB\-nostdinc++\fR" 4 --.IX Item "-nostdinc++" --Do not search for header files in the standard directories specific to --\&\*(C+, but do still search the other standard directories. (This option --is used when building the \*(C+ library.) --.PP --In addition, these optimization, warning, and code generation options --have meanings only for \*(C+ programs: --.IP "\fB\-fno\-default\-inline\fR" 4 --.IX Item "-fno-default-inline" --Do not assume \fBinline\fR for functions defined inside a class scope. -- Note that these --functions will have linkage like inline functions; they just won't be --inlined by default. --.IP "\fB\-Wabi\fR (\*(C+ only)" 4 --.IX Item "-Wabi ( only)" --Warn when G++ generates code that is probably not compatible with the --vendor-neutral \*(C+ \s-1ABI\s0. Although an effort has been made to warn about --all such cases, there are probably some cases that are not warned about, --even though G++ is generating incompatible code. There may also be --cases where warnings are emitted even though the code that is generated --will be compatible. --.Sp --You should rewrite your code to avoid these warnings if you are --concerned about the fact that code generated by G++ may not be binary --compatible with code generated by other compilers. --.Sp --The known incompatibilities at this point include: --.RS 4 --.IP "*" 4 --Incorrect handling of tail-padding for bit\-fields. G++ may attempt to --pack data into the same byte as a base class. For example: --.Sp --.Vb 2 --\& struct A { virtual void f(); int f1 : 1; }; --\& struct B : public A { int f2 : 1; }; --.Ve --.Sp --In this case, G++ will place \f(CW\*(C`B::f2\*(C'\fR into the same byte --as\f(CW\*(C`A::f1\*(C'\fR; other compilers will not. You can avoid this problem --by explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of the --byte size on your platform; that will cause G++ and other compilers to --layout \f(CW\*(C`B\*(C'\fR identically. --.IP "*" 4 --Incorrect handling of tail-padding for virtual bases. G++ does not use --tail padding when laying out virtual bases. For example: --.Sp --.Vb 3 --\& struct A { virtual void f(); char c1; }; --\& struct B { B(); char c2; }; --\& struct C : public A, public virtual B {}; --.Ve --.Sp --In this case, G++ will not place \f(CW\*(C`B\*(C'\fR into the tail-padding for --\&\f(CW\*(C`A\*(C'\fR; other compilers will. You can avoid this problem by --explicitly padding \f(CW\*(C`A\*(C'\fR so that its size is a multiple of its --alignment (ignoring virtual base classes); that will cause G++ and other --compilers to layout \f(CW\*(C`C\*(C'\fR identically. --.IP "*" 4 --Incorrect handling of bit-fields with declared widths greater than that --of their underlying types, when the bit-fields appear in a union. For --example: --.Sp --.Vb 1 --\& union U { int i : 4096; }; --.Ve --.Sp --Assuming that an \f(CW\*(C`int\*(C'\fR does not have 4096 bits, G++ will make the --union too small by the number of bits in an \f(CW\*(C`int\*(C'\fR. --.IP "*" 4 --Empty classes can be placed at incorrect offsets. For example: --.Sp --.Vb 1 --\& struct A {}; --.Ve --.Sp --.Vb 4 --\& struct B { --\& A a; --\& virtual void f (); --\& }; --.Ve --.Sp --.Vb 1 --\& struct C : public B, public A {}; --.Ve --.Sp --G++ will place the \f(CW\*(C`A\*(C'\fR base class of \f(CW\*(C`C\*(C'\fR at a nonzero offset; --it should be placed at offset zero. G++ mistakenly believes that the --\&\f(CW\*(C`A\*(C'\fR data member of \f(CW\*(C`B\*(C'\fR is already at offset zero. --.IP "*" 4 --Names of template functions whose types involve \f(CW\*(C`typename\*(C'\fR or --template template parameters can be mangled incorrectly. --.Sp --.Vb 2 --\& template --\& void f(typename Q::X) {} --.Ve --.Sp --.Vb 2 --\& template