On 25/11/2018 12:01, Florian Klämpfl wrote:
Am 25.11.2018 um 12:20 schrieb C Western:
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).
This is pretty strange then. This code is pretty simple and in general, tls 
initialization should be done regardless if
FPC uses it for threadvars or not. What version of Fedora are you using?
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Fedora 29 (64 bit). Did you see my other message in the thread about a different offset in program header when compiled under Fedora and Ubuntu? (It works on Ubuntu). It is though an offset needs to be applied to find the program header, but I can't see where to find it.

Colin

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

Reply via email to