Re: gcc-4.3.1 for mips linux failed to execute dynamically linked elf executables

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



hjksfw hjksfw wrote:
> Hi all, I have build mips-linux-gcc on debian i486 pc from  following
sources:
> Gcc-4.3.1
> Binutils-2.18
> Glibc-2.4
> Kernel-headers-2.6.18
.
.
.
> when I compile linux-2.6.18 from mips-linux-gcc 4.3.1, there is an error:
>
.
.
.
>
> the kernel compiled successfully.But mips-linux-gcc-4.1.1 have no such
problem.

Perhaps you should stick to gcc-4.1.1 for your kernel.

> And the following is problems for dynamically linked elf.
> A simplest test program:
> #include
> int main()
> {
>         printf("hello mips\n");
>        return 0;
> }
>
>
> mips-linux-gcc test.c ?o test-dyn
> Mips-linux-gcc test.c ?o test-static ?static
>
>
> $ file ./test-dyn
> ./test-dyn: ELF 32-bit MSB MIPS64 executable, MIPS, version 1 (SYSV),
> for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not
> stripped
> $ file ./test-static
> ./test-static: ELF 32-bit MSB MIPS64 executable, MIPS, version 1
> (SYSV), for GNU/Linux 2.0.0, statically linked, not stripped
>
> The strace results on the target mips board are following,(strace is
> statically linked, so it can be executed):
> Strace the program:
> / # strace ./test-dyn
> execve("./test-dyn", ["./test-dyn"], [/* 6 vars */]) = 0
> do_page_fault() #2: sending SIGSEGV to test-dyn for invalid read
access from
> 0002e258 (epc == 2aabf140, ra == 2aab4f70)
> uname({sys="Linux", node="192.168.172.44", ...}) = 0
> old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
> -1, 0) = 0x2aac5000
> access("/etc/ld.so.preload", R_OK)      = 0
> open("/etc/ld.so.preload", O_RDONLY)    = 3
> fstat64(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
> close(3)                                = 0
> --- SIGSEGV (Segmentation fault) @ 0 (0) ---
> +++ killed by SIGSEGV +++
> Process 98 detached
> / # strace ./test-static
> execve("./test-static", ["./test-static"], [/* 6 vars */]) = 0
> svr4_syscall()                          = 4122
> svr4_syscall()                          = 4045
> brk(0x494c98)                           = 0x494c98
> set_thread_area(0x49b460)               = -2143376080
> brk(0x4b5c98)                           = 0x4b5c98
> brk(0x4b6000)                           = 0x4b6000
> fstat64(1, {st_mode=S_IFCHR|0646, st_rdev=makedev(5, 1), ...}) = 0
> ioctl(1, TIOCNXCL, {B115200 opost isig icanon echo ...}) = 0
> old_mmap(NULL, 131072, PROT_READ|PROT_WRITE,
> MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaa8000
> write(1, "hello mips\n", 11hello mips
> )            = 11
> exit_group(0)                           = ?
> Process 100 detached
>
> I don't know what's wrong with the mips-linux-gcc 4.3.1, would you
> help me please?

I don't think gcc-4.3.x is supported by any version of glibc prior to
2.8.  Best to use a supported version of gcc when building glibc.

I have successfully used gcc-4.3.x on several different mips
platforms.  But I only build glibc with supported compiler versions.
You could try upgrading to glibc 2.7 or 2.8.  Or ...

> And I have also tried to cross-compile gcc for mips-linux from:
> Gcc-4.1.1
> Binutils-2.17
> Glibc-2.4
> kernel-headers-2.6.18
> This cross-compiled gcc worked fine for both kernel and programs.

...Use these versions as they seem to work for you.

David Daney

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux