[Bug c/42523] New: Detection of main() as an entry point when given -ffreestanding
dgodas at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Dec 28 21:26:00 GMT 2009
The freestanding flag should make gcc forget about special function names
and, specifically about the main() entry point. Anyway, gcc generates
different code for two source files that differ only in the name of a function,
beeing this name "main" in one of them.
When one of the functions in the source file is named main the compiler
generates three additional instructions for stack alignment. These
instructions are at offsets 0x05, 0x09 and 0x0c in the following example:
00000005 <main>:
5: 8d 4c 24 04 lea 0x4(%esp),%ecx
9: 83 e4 f0 and $0xfffffff0,%esp
c: ff 71 fc pushl -0x4(%ecx)
f: 55 push %ebp
10: 89 e5 mov %esp,%ebp
12: 51 push %ecx
The same file with the function name changed produces the following code:
00000005 <start>:
5: 55 push %ebp
6: 89 e5 mov %esp,%ebp
The following line was used for both cases:
gcc -m32 -ffreestanding -c -I../include -o task_test.o task_test.c -Wall
-Wextra -Werror
--
Summary: Detection of main() as an entry point when given -
ffreestanding
Product: gcc
Version: 4.3.4
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dgodas at gmail dot com
GCC build triplet: x86_64-pc-linux-gnu
GCC host triplet: x86_64-pc-linux-gnu
GCC target triplet: x86_64-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42523
More information about the Gcc-bugs
mailing list