------- Additional Comments From kurt at roeckx dot be 2007-10-06 12:39 -------
(In reply to comment #6)
> Please provide a testcase. Objcopy works for me:
>
> bash-3.2$ cat x.c
> void
> cmain (void)
> {
> *((int *) 0x1000) = 2;
> }
> bash-3.2$ make
> cc -O2 -c -o x.o x.c
> ./ld -o x x.o -N -Ttext 0x100
> ./ld: warning: cannot find entry symbol _start; defaulting to 0000000000000100
> ./objcopy x y
> cmp x y
> bash-3.2$
The test does:
$ cat x.c
void
cmain (void)
{
*((int *) 0x1000) = 2;
}
$ gcc -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 x.c -o x2
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to
0000000000002000
$ gcc -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000 x.c -o x2
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to
0000000000008000
$ objcopy -O binary x2 y2
$ objcopy -O binary x8 y8
$ cmp y2 y8
y2 y8 differ: byte 74, line 1
Note the -O binary that you didn't use.
Also note that adding -j .text to the objcopy call fixes the problem. Like Alan
Modra said, the difference is in the .eh_frame.
I have no idea if grub needs the .eh_frame or not, I'm guessing not.
Kurt
--
http://sourceware.org/bugzilla/show_bug.cgi?id=5059
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
_______________________________________________
bug-binutils mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-binutils