freebsd, binutils-2.9.1 and arm-aout
Quality Quorum
qqi@world.std.com
Mon Jun 5 09:34:00 GMT 2000
Hi,
I had built a set of tools implementing arm-unknown-aout from
binutils-2.9.1, newlib-1.8.2 and gcc-2.95.2 and a few patches
found on the net.
It seems like linker has a bug. I am using following command
to build a test program:
$(CC) $(CFLAGS) -o tst -nostartfiles -Wl,-e,_start tst.c
Test program is below:
#include <stdio.h>
#define BEFORE 1
#if BEFORE
void
start(void)
{
}
#endif
int
main(int argc, char *argv[])
{
printf("Hello, world\n");
return 0;
}
#if !BEFORE
void
start(void)
{
}
#endif
It has OK file header:
tst: file format a.out-arm-little
tst
architecture: arm, flags 0x000001be:
EXEC_P, HAS_LINENO, HAS_DEBUG, HAS_SYMS, HAS_LOCALS, WP_TEXT, D_PAGED
start address 0x00008000
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00010000 00008000 00008000 00008000 2**4
CONTENTS, ALLOC, LOAD, CODE
1 .data 00008000 00018000 00018000 00018000 2**4
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000000 00020000 00020000 00000000 2**4
ALLOC
However,once I change BEFORE to 0, the file header will beecome
tst: file format a.out-arm-little
tst
architecture: arm, flags 0x000001be:
EXEC_P, HAS_LINENO, HAS_DEBUG, HAS_SYMS, HAS_LOCALS, WP_TEXT, D_PAGED
start address 0x00008044
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000ffe0 00008000 00008000 00000020 2**4
CONTENTS, ALLOC, LOAD, CODE
1 .data 00008000 00018000 00018000 00010000 2**4
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000000 00020000 00020000 00000000 2**4
ALLOC
Which is incorrect because text will still be located at offset
0x8000 in the file.
So, I am quite puzzled to say the least, is it a known bug ?
Thanks,
Aleksey
------
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com
More information about the crossgcc
mailing list