Date: Tue, 17 Oct 2023 09:32:16 +0200
From: Marco van de Voort <f...@pascalprogramming.org>
> - without the patches you are reviewing it works all fine, suggesting a
> problem in those patches that somehow forces linking to the symbol
> without it being used.

to dispel any doubt, i've just created a new Linux Mint 21.2 (XFCE) 64-bit VM, 
using an ISO downloaded from the Mint website. after running all updates on the 
VM i then downloaded FPC and Lazarus .DEB install packages from:
https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20i386%20DEB/Lazarus%202.2.6/
and installed the three packages (fpc-laz, fpc-src, lazarus-project) as per 
instructions. this gives a completely unpatch, unadulterated 64-bit Linux, 
running a completely unpatch, unadulterated FPC and Lazarus.

i next created a small GUI application that just displays a digital clock in a 
window. nothing fancy. this is the same 'GUI test application' i've been using 
throughout, although i created it anew to ensure there was no possibility of 
external contamination. i made NO changes to any of the Lazarus IDE settings, 
beyond selecting Tools->Options->Window->Show single button in TaskBar, and NO 
changes to the default project settings. the test program builds correctly, 
yielding a working GUI application that when run displays a small running 
digital clock display in a window.


after the above verification that everything was working, i then made a SINGLE 
change to the file fnmatch.inc located in 
/usr/share/fpcsrc/3.2.2/packages/gtk2/src/gtk+/gtk/ at line 37:

//// original declaration, start ////
function fnmatch(__pattern: char; __string: char;
__flags: gint): gint; cdecl; external gtklib;
//// original declaration, finish ////

//// altered declaration, start ////
function fnmatch(__pattern: char; __string: char;
__flags: gint): gint; cdecl; external; // gtklib;
//// altered declaration, finish ////

as you can see, the edit involved removing "gtklib" from after the word 
"external". i next rebuilt the compiler, RTL, etc using Fred vS's shell script:
#!/bin/sh
COMPILER=fpc
make clean
make all FPC=$COMPILER OPT="-Fl/usr/local/lib"
make FPC=$COMPILER install INSTALL_PREFIX=/usr/


NOW, the test application FAILS TO BUILD, with lazbuild reporting:

user@test:~/Pascal/Clock$ lazbuild ./project1.lpr
Hint: (lazarus) [RunTool] "/usr/bin/fpc" "-iWTOTP"
Hint: (lazarus) [RunTool] "/usr/bin/fpc" "-va" "compilertest.pas"
Hint: (lazarus) [RunTool] "/usr/bin/fpc" "-iWTOTP" "-Px86_64" "-Tlinux"
Hint: (lazarus) [RunTool] "/usr/bin/fpc" "-va" "compilertest.pas" "-Px86_64" 
"-Tlinux"
TProject.DoLoadStateFile Statefile not found: 
/home/user/Pascal/Clock/lib/x86_64-linux/project1.compiled
Hint: (11030) Start of reading config file /etc/fpc.cfg
Hint: (11031) End of reading config file /etc/fpc.cfg
Free Pascal Compiler version 3.2.2 [2023/10/17] for x86_64
Copyright (c) 1993-2021 by Florian Klaempfl and others
(1002) Target OS: Linux for x86-64
(3104) Compiling project1.lpr
(10001) PPU Loading 
/usr/share/lazarus/2.2.6/lcl/units/x86_64-linux/gtk2/gtk2int.ppu
(10011) PPU Source: gtk2int.pas not found
(10011) PPU Source: gtk2defines.inc not available
(10011) PPU Source: gtk2winapih.inc not available
(10011) PPU Source: gtk2lclintfh.inc not available
(10011) PPU Source: gtk2listslh.inc not available
(10011) PPU Source: gtk2widgetset.inc not available
(10011) PPU Source: gtk2winapi.inc not available
(10011) PPU Source: gtk2lclintf.inc not available
(10011) PPU Source: gtk2listsl.inc not available
(10028) Recompiling Gtk2Int, checksum changed for 
/usr/lib/fpc/3.2.2/units/x86_64-linux/gtk2/gtk2.ppu
/usr/share/lazarus/2.2.6/lcl/units/x86_64-linux/gtk2/gtk2int.ppu:gtk2int.pas(14,36)
 Fatal: (10022) Can't find unit Gtk2Int used by Interfaces
Fatal: (1018) Compilation aborted
Error: /usr/bin/ppcx64 returned an error exitcode
Error: (lazarus) Compile Project, Target: project1: stopped with exit code 1
Error: (lazbuild) failed compiling of project 
/home/user/Pascal/Clock/project1.lpi
user@test:~/Pascal/Clock$


reversing the edit, rebuilding the compiler, RTL, etc, and now when run 
lazbuild reports:

user@test:~/Pascal/Clock$ lazbuild ./project1.lpr
Hint: (lazarus) [RunTool] "/usr/bin/fpc" "-iWTOTP"
Hint: (lazarus) [RunTool] "/usr/bin/fpc" "-va" "compilertest.pas"
Hint: (lazarus) [RunTool] "/usr/bin/fpc" "-iWTOTP" "-Px86_64" "-Tlinux"
Hint: (lazarus) [RunTool] "/usr/bin/fpc" "-va" "compilertest.pas" "-Px86_64" 
"-Tlinux"
Hint: (11030) Start of reading config file /etc/fpc.cfg
Hint: (11031) End of reading config file /etc/fpc.cfg
Free Pascal Compiler version 3.2.2 [2023/10/17] for x86_64
Copyright (c) 1993-2021 by Florian Klaempfl and others
(1002) Target OS: Linux for x86-64
(3104) Compiling project1.lpr
(3104) Compiling unit1.pas
/home/user/Pascal/Clock/unit1.pas(18,27) Hint: (5024) Parameter "Sender" not 
used
/home/user/Pascal/Clock/unit1.pas(17,26) Hint: (5024) Parameter "Sender" not 
used
(9022) Compiling resource /home/user/Pascal/Clock/lib/x86_64-linux/project1.or
(9015) Linking /home/user/Pascal/Clock/project1
(1008) 92 lines compiled, 2.2 sec
(1022) 4 hint(s) issued
user@test:~/Pascal/Clock$

... and the result is a working GUI application. i can see no way the above 
results could exist if fnmatch were resolving to libc.so.6. the ONLY conclusion 
is that it is resolving to SOMEWHERE ELSE, and nobody seems to know where that 
somewhere else is.

would one of the FPC developers please care to duplicate the above tests?


cheers,
rob   :-)

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to