Ok, the problem is solved. I add a patch to my binutils2.20.1. The patch is 
310-backport_fPIE_mips_fix.patch

--- a/bfd/elfxx-mips.c


+++ b/bfd/elfxx-mips.c


@@ -5696,9 +5696,9 @@ mips_elf_create_dynamic_relocation (bfd




   /* We must now calculate the dynamic symbol table index to use


      in the relocation.  */


-  if (h != NULL


-      && (!h->root.def_regular


-        || (info->shared && !info->symbolic && !h->root.forced_local)))


+  if (!(h == NULL


+      || (h->root.def_regular


+          && (info->executable || info->symbolic || h->root.forced_local))))


     {


       indx = h->root.dynindx;


       if (SGI_COMPAT (output_bfd))


Thanks,
-George

From: George Wang
Sent: Wednesday, November 05, 2014 4:51 PM
To: Hon Ching Lo
Cc: Mike Pontillo; [email protected]
Subject: Re: [TrouSerS-users] tcsd segmentation fault


Hi,



Thanks for the help and reply!



It crashes when tcsd was trying to touch uclib, but I didn't do anything no 
uclibc.

Below is the strace output:


# strace ./tcsd
execve("./tcsd", ["./tcsd"], [/* 2 vars */]) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x2aaad000
stat("/etc/ld.so.cache", {st_mode=S_IFREG|0644, st_size=64, ...}) = 0
open("/etc/ld.so.cache", O_RDONLY)      = 3
old_mmap(NULL, 64, PROT_READ, MAP_SHARED, 3, 0) = 0x2aaae000
close(3)                                = 0
open("/lib/libpthread.so.0", O_RDONLY)  = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=91664, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x2aaaf000
read(3, 
"\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\10\0\0\0\1\0\0004\220\0\0\0004"..., 
4096) = 4096
old_mmap(NULL, 143360, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabd000
old_mmap(0x2aabd000, 50152, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 
0x2aabd000
old_mmap(0x2aad9000, 19308, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 
0xc000) = 0x2aad9000
old_mmap(0x2aade000, 7792, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2aade000
close(3)                                = 0
munmap(0x2aaaf000, 4096)                = 0
open("/lib/libcrypto.so.1.0.0", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0775, st_size=1365472, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x2aaaf000
read(3, 
"\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\10\0\0\0\1\0\2\356\0\0\0\0004"..., 4096) 
= 4096
old_mmap(NULL, 1314816, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x2aae0000
old_mmap(0x2aae0000, 1180484, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) 
= 0x2aae0000
old_mmap(0x2ac10000, 58472, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 
0x120000) = 0x2ac10000
old_mmap(0x2ac1f000, 5504, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2ac1f000
close(3)                                = 0
munmap(0x2aaaf000, 4096)                = 0
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=187980, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x2aaaf000
read(3, 
"\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\10\0\0\0\1\0\0\261\240\0\0\0004"..., 
4096) = 4096
old_mmap(NULL, 217088, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ac21000
old_mmap(0x2ac21000, 147796, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) 
= 0x2ac21000
old_mmap(0x2ac55000, 916, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 
0x24000) = 0x2ac55000
close(3)                                = 0
munmap(0x2aaaf000, 4096)                = 0
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=622112, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x2aaaf000
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\10\0\0\0\1\0\0\243 
\0\0\0004"..., 4096) = 4096
old_mmap(NULL, 667648, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ac56000
old_mmap(0x2ac56000, 574788, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) 
= 0x2ac56000
old_mmap(0x2acf2000, 5580, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 
0x8c000) = 0x2acf2000
old_mmap(0x2acf4000, 20112, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2acf4000
close(3)                                = 0
munmap(0x2aaaf000, 4096)                = 0
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=622112, ...}) = 0
close(3)                                = 0
open("/lib/libdl.so.0", O_RDONLY)       = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=7856, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x2aaaf000
read(3, "\177ELF\1\2\1\0\0\0\0\0\0\0\0\0\0\3\0\10\0\0\0\1\0\0\10@\0\0\0004"..., 
4096) = 4096
old_mmap(NULL, 73728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2acf9000
old_mmap(0x2acf9000, 6480, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 
0x2acf9000
old_mmap(0x2ad0a000, 2568, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 
0x1000) = 0x2ad0a000
close(3)                                = 0
munmap(0x2aaaf000, 4096)                = 0
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=187980, ...}) = 0
close(3)                                = 0
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=622112, ...}) = 0
close(3)                                = 0
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=622112, ...}) = 0
close(3)                                = 0
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=622112, ...}) = 0
close(3)                                = 0
munmap(0x2aaae000, 64)                  = 0
stat("/lib/ld-uClibc.so.0", {st_mode=S_IFREG|0755, st_size=21148, ...}) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Segmentation fault




Here is bt of gds:


Program received signal SIGSEGV, Segmentation fault.
0x2aaa9a3c in _dl_parse_relocation_information () from 
/home/george/rootfs/lib/ld-uClibc.so.0
(gdb) bt
#0  0x2aaa9a3c in _dl_parse_relocation_information () from  
/home/g/rootfs/lib/ld-uClibc.so.0
#1  0x2aaa9bcc in _dl_fixup () from  /home/g/rootfs/lib/ld-uClibc.so.0
#2  0x2aaac04c in _dl_get_ready_to_run () from  
/home/g/rootfs/lib/ld-uClibc.so.0
#3  0x2aaac6a8 in ?? () from  /home/g/rootfs/lib/ld-uClibc.so.0
warning: GDB can't find the start of the function at 0x2aaac6a7.
Backtrace stopped: previous frame inner to this frame (corrupt stack?)




Thanks,

George





________________________________
From: Hon Ching Lo <[email protected]<mailto:[email protected]>>
Sent: Wednesday, November 05, 2014 4:16 PM
To: George Wang
Cc: Mike Pontillo; 
[email protected]<mailto:[email protected]>
Subject: Re: [TrouSerS-users] tcsd segmentation fault

Hi George,


I have just updated my openssl from OpenSSL 1.0.1e-fips to OpenSSL 1.0.1j.  I 
would start tcsd without a problem.


Vicky

On Wed, Nov 5, 2014 at 4:28 PM, Mike Pontillo 
<[email protected]<mailto:[email protected]>> wrote:
   So you can run in GDB, but the moment you step into main() it crashes? (or 
before?) Can you paste your console output so that we can see what commands, 
exactly, were run?

   Also, if you can get tcsd to crash from within GDB, please post the output 
of the "bt" (backtrace) command.

Thanks,
Mike

From: George Wang 
<[email protected]<mailto:[email protected]>>
Date: Wednesday, November 5, 2014 at 1:21 PM
To: Mike Pontillo <[email protected]<mailto:[email protected]>>, 
"[email protected]<mailto:[email protected]>"
 
<[email protected]<mailto:[email protected]>>
Subject: RE: [TrouSerS-users] tcsd segmentation fault

Hi Mike,

No, I cannot even start gdb at this moment, tcsd will got seg fault after I 
have one step on gdb.
I m using 2.6.32.24 running on MIPS 74K

Thanks,
-George

From: Mike Pontillo [mailto:[email protected]]
Sent: Wednesday, November 05, 2014 11:40 AM
To: George Wang; 
[email protected]<mailto:[email protected]>
Subject: Re: [TrouSerS-users] tcsd segmentation fault

   We're testing with OpenSSL version 1.0.1f-1ubuntu2 on Ubuntu 14.04 and 
OpenSSL version 0.9.8za on Mac OS X.

   What is your operating environment? Are you able to run tcsd within gdb and 
get a backtrace?

Regards,
Mike

From: George Wang 
<[email protected]<mailto:[email protected]>>
Date: Wednesday, November 5, 2014 at 11:19 AM
To: 
"[email protected]<mailto:[email protected]>"
 
<[email protected]<mailto:[email protected]>>
Subject: [TrouSerS-users] tcsd segmentation fault

Hi All,

Has anyone seen tcsd got segmentation fault with openssl1.0.1j  once tcsd 
started?

Thanks,
-George

------------------------------------------------------------------------------

_______________________________________________
TrouSerS-users mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/trousers-users

------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk
_______________________________________________
TrouSerS-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/trousers-users

Reply via email to