This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[GOLD] -Ttext does not relocate as expected


Hi All,
Not sure whether this is a bug or not. When I'm writing a simple hello
world boot loader, I tried to relocate the text section to 0x7c00 for
convention. The assembly code is attached. I used the following
command to compile it:
> gcc -m32 -nostdinc -c -o boot.o boot.S
> ld -m elf_i386 -N -e start -Ttext 0x7c00 -o boot.out boot.o
> objdump -S boot.out > boot.asm
> ...

It doesn't work as expected. Then I checked boot.asm the actual start
address is 0x8c00 instead of 0x7c00.
> Disassembly of section .text:
> 00008c00 <start>:
>    8c00: fc                   cld
>    8c01: 31 c0                 xor    %eax,%eax
>    ...

It took me a while to realize in my system, I replaced the default
`ld' with `ld.gold'. So `ld' in the above command is actually
`ld.gold'. After I changed it back to use the default `ld', the start
address become 7c00 as expected. Does anyone has a clue why it's like
this?

Here is my environment information:
OS: Ubuntu 12.04 64-bit
binutils version: 2.22
ld.gold: 1.11
gcc: 4.6

Thanks in advance!

Best regards,
Ryan

Attachment: boot.S
Description: Binary data


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