The documentation on GCC states that in freestanding environment, no
assumptions are made:
========
To make it act as a conforming freestanding
implementation for a freestanding environment, use the option
`-ffreestanding'; it will then define `__STDC_HOSTED__' to `0' and not
make assumptions about the meanings of function names from the standard
library
========
However, a simple testcase shows that
- different code is generated for function issuing the setjmp() call and any
other function call in freestanding env (actually, the code for a function
using setjmp() is the same both in hosted and freestanding env).
- The 'variable might be clobbered' warning is emitted for setjmp() call even
in freestanding env
Try compiling the test case with the following flags:
*1) gcc -DSETJMP=setjmp -ffreestanding -s ff.c
*2) gcc -DSETJMP=setjmp -fhosted -s ff.c
*3) gcc -DSETJMP=mysetjmp -ffreestanding -s ff.c
and compare the output. *1 and *2 give the same output, which differs from *3.
--
Summary: Disable special handling of functions with --
freestanding
Product: gcc
Version: 4.0.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: alex dot neyman at auriga dot ru
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: i686-pc-linux-gnu
GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18180