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]

Is it possible to make the whole image above 4G on a 64 bit machine?


Hi all,

  For some reason, I need to compile a program so that when it's loaded
into memory, the whole image is above 4G virtual space (I am on a 64 bit
machine). The space below 4G tends to be other usage. I try the following
command,

$ gcc -Wl,-Ttext-segment=0x40000000 test.c -o test

I was only success to make the whole image above 1G. But when I want to
make it above 2G, the linker give me error below:

---
$ gcc -static -Wl,-Ttext-segment=0x80000000 test.c -o test
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../lib64/crt1.o: In function `_start':
(.text+0x12): relocation truncated to fit: R_X86_64_32S against symbol `__libc_csu_fini' defined in .text section in /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../lib64/libc.a(elf-init.o)
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../lib64/crt1.o: In function `_start':
(.text+0x19): relocation truncated to fit: R_X86_64_32S against symbol `__libc_csu_init' defined in .text section in /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../lib64/libc.a(elf-init.o)
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../lib64/crt1.o: In function `_start':
(.text+0x20): relocation truncated to fit: R_X86_64_32S against symbol `main' defined in .text section in /tmp/ccdqj0nB.o
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/crtbeginT.o:(.text+0x21): relocation truncated to fit: R_X86_64_32S against `.dtors'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/crtbeginT.o:(.text+0x45): relocation truncated to fit: R_X86_64_32S against `.dtors'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../lib64/libc.a(libc-start.o):
In function `__libc_start_main':
(.text+0x34): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `_dl_starting_up'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../lib64/libc.a(libc-start.o): In function `__libc_start_main':
(.text+0x1fb): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__nptl_deallocate_tsd'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../lib64/libc.a(libc-start.o): In function `__libc_start_main':
(.text+0x202): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__nptl_nthreads'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../lib64/libc.a(libc-tls.o): In function `__libc_setup_tls':
(.text+0xf3): relocation truncated to fit: R_X86_64_32S against `.bss'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../lib64/libc.a(libc-tls.o): In function `__libc_setup_tls':
(.text+0x18b): relocation truncated to fit: R_X86_64_32S against `.bss'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../lib64/libc.a(libc-tls.o): In function `__libc_setup_tls':
(.text+0x196): additional relocation overflows omitted from the output
collect2: ld returned 1 exit status
---

  If it's possible to make the whole image above 4G, how I can do that?
If not, could you explain why? Thanks. 

Regards,
chenwj

-- 
Wei-Ren Chen (ééä)
Computer Systems Lab, Institute of Information Science,
Academia Sinica, Taiwan (R.O.C.)
Tel:886-2-2788-3799 #1667
Homepage: http://people.cs.nctu.edu.tw/~chenwj


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