On 24/11/2018 22:21, Florian Klämpfl wrote:
Am 24.11.2018 um 10:08 schrieb C Western:
On 23/11/2018 09:50, Sven Barth via fpc-pascal wrote:
Am Fr., 23. Nov. 2018, 10:26 hat C Western <l...@c-m-w.me.uk 
<mailto:l...@c-m-w.me.uk>> geschrieben:

     I haven't been able to build trunk i386 fpc for a couple of weeks. Is
     this supposed to be working, or have I misconfigured something? (I
     don't
     think I have changed anything.) The output is below. I don't think
     it is
     significant, but I am building on a 64 bit system, but with a 32 bit
     starting compiler. (The 64 bit build with the 64 bit starting
     compiler
     works fine.)


We have i386 trunk building on at least one x86_64-linux machine, so it can't 
be a principal problem. :/
Could you check whether it's FPC itself that segfaults or something else and if 
the former try to retrieve a
stacktrace, please?

Regards,
Sven

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Looks like the ppc1 compiler crashes during setup:

gdb) run
Starting program: /home/me/fpc/trunk/fpcsrc/compiler/ppc1

Program received signal SIGSEGV, Segmentation fault.
0x08068760 in INITTLS () at system.pp:543
543            case phdr^.p_type of
(gdb) bt
#0  0x08068760 in INITTLS () at system.pp:543
#1  0x082a63fb in _FPC_PROC_START () at ./i386/si_prc.inc:105
(gdb) p phdr
$1 = (PPHDR) 0x8048034
(gdb) p phdr^
Cannot access memory at address 0x8048034
Can you please check what value phdr has at the crash location after applying 
the following patch?

diff --git a/rtl/linux/system.pp b/rtl/linux/system.pp
index 0d7ed2b152..74b4592ace 100644
--- a/rtl/linux/system.pp
+++ b/rtl/linux/system.pp
@@ -525,6 +525,8 @@ procedure InitTLS; [public,alias:'FPC_INITTLS'];
      while assigned(auxp^) do
        inc(auxp);
      inc(auxp);
+    phdr:=nil;
+    phnum:=0;
      { now we are at the auxillary vector }
      while assigned(auxp^) do
        begin
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

That gives the same value as shown above, even after applying the patch. Single stepping the code indicates that both variables are assigned: (Some lines deleted).

Breakpoint 1, INITTLS () at system.pp:523
523        auxp:=ppointer(envp);
(gdb) n
525        while assigned(auxp^) do
(gdb) n
533            case plongint(auxp)^ of
(gdb) n
535                phdr:=pphdr(ppointer(auxp+1)^);
(gdb) n
539            inc(auxp,2);
(gdb) p phdr
$3 = (PPHDR) 0x8048034
(gdb) p phdr^
Cannot access memory at address 0x8048034
(gdb) n
533            case plongint(auxp)^ of
(gdb) n
539            inc(auxp,2);
(gdb) n
533            case plongint(auxp)^ of
(gdb) n
537                phnum:=pdword(auxp+1)^;
(gdb) n
539            inc(auxp,2);
(gdb) p phnum
$4 = 4
(gdb)
543        for i:=1 to phnum do
(gdb) n
545            case phdr^.p_type of
(gdb) n

Program received signal SIGSEGV, Segmentation fault.
0x0806ef01 in INITTLS () at system.pp:545
545            case phdr^.p_type of
(gdb) p phdr
$5 = (PPHDR) 0x8048034
(gdb)

Colin

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to