On Thu, 4 Jul 2013, Luis Machado wrote:
Try -Ttext-segment=... instead, sorry about the confusion.
That also doesn't seem to prevent thing from being linked at addresses >
32-bits. Code is still at 0x120000000 apparently.
(gdb) break checkpoint1^M
Breakpoint 1 at 0x120000cdc: file gdb/testsuite/gdb.base/dump.c, line 19.
Works for me:
$ cat text.c
int main(void)
{
return 0;
}
$ mips-linux-gnu-gcc -mabi=64 -O2 -Wl,-Ttext-segment=0x12340000 -o text text.c
$ mips-linux-gnu-readelf -l text
Elf file type is EXEC (Executable file)
Entry point 0x123407c0
There are 7 program headers, starting at offset 64
Program Headers:
Type Offset VirtAddr PhysAddr
FileSiz MemSiz Flags Align
PHDR 0x0000000000000040 0x0000000012340040 0x0000000012340040
0x0000000000000188 0x0000000000000188 R E 8
INTERP 0x0000000000000ab0 0x0000000012340ab0 0x0000000012340ab0
0x000000000000000f 0x000000000000000f R 1
[Requesting program interpreter: /lib64/ld.so.1]
LOAD 0x0000000000000000 0x0000000012340000 0x0000000012340000
0x0000000000000ae4 0x0000000000000ae4 R E 10000
LOAD 0x0000000000000ae8 0x0000000012350ae8 0x0000000012350ae8
0x00000000000000f0 0x0000000000000108 RW 10000
DYNAMIC 0x0000000000000330 0x0000000012340330 0x0000000012340330
0x00000000000001b0 0x00000000000001b0 RWE 8
NOTE 0x0000000000000ac4 0x0000000012340ac4 0x0000000012340ac4
0x0000000000000020 0x0000000000000020 R 4
NULL 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 8
Section to Segment mapping:
Segment Sections...
00
01 .interp
02 .MIPS.options .dynamic .hash .dynsym .dynstr .gnu.version .gnu.version_r .init .text .MIPS.stubs .fini .rodata .interp .eh_frame .note.ABI-tag
03 .ctors .dtors .jcr .data .rld_map .got .sdata .bss
04 .dynamic
05 .note.ABI-tag
06
$
Maciej