Dear all, I'm trying to create a library on linux i386 that contains only PIC code. The library is a driver that runs unconfined causing SELinux (Fedora) to block the loading of the library. The library is compiled with -fPIC but eu-findtextrel reports a lot of relocations (4933 in my library and 3852 in a small testlibrary). The problem seems to be that the RTL isn't compiled with -fPIC. And that is where I need your help. Here is what I tried so far (fpc 2.5.1 svn 17622): 1) (bootstrap compiler 2.4.4) make clean all OPT="-fPIC" --> EAccessViolation when compiling system.pp with ppc386 (the bootstrap)
2) (bootstrap compiler 2.5.1 build with make clean all) make clean all OPT="-fPIC" PP=/path/to/2.5.1/compiler --> EAccessViolation when compiling ../unix/classes with ppc1 Compiler doesn't need to be PIC. So try rebuilding rtl only. 3) (fpc 2.4.4) make clean all OPT="-g -gw" cd rtl make clean OPT="-fPIC -g -gw" --> EAccessViolation when compiling system.pp 4) (still in dir rtl) make clean OPT="-fPIC -g -gw" PP=/path/to/2.5.1/compiler cd .. sudo make install --> changed checksum for system.pp, recompile cairo, can't find unit cairo 5) sudo make install OPT="-Fu/path/to/svn/packages/*/src/" PP=/path/to/2.5.1/compiler sudo make sourceinstall PP=/path/to/2.5.1/compiler All OK. RTL should be PIC now. Rebuild testlibrary. Result from eu-findtextrel 38: relocations for the testproject. Much, much better, but not zero :( Although the compiler (and the testproject) was build with -g -gw, eu-findtextrel doesn't provide any usefull info on the relocation. It only says "the file containing the function 'test' might not be compiled with -fpic/-fPIC" for avery relocation found. eu-readelf -r shows 9692 386_relative and 4 386_JMP_SLOT type relocations. What did I do wrong? Or is a rtl PIC not enough? BTW. Linux x64 works perfectly. 0 relocations and a happy SELinux. Thanks, Ludo _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal