This is the mail archive of the crossgcc@sourceware.cygnus.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more infromation.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

freebsd, binutils-2.9.1 and arm-aout



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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]