Subject: bug#59967: closed (Re: bug#59967: Fix missing -fPIC parameter when compiling tree-sitter module)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 12 Dec 2022 22:43:02 +0000

Your bug report

#59967: Fix missing -fPIC parameter when compiling tree-sitter module

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
59967: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59967
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#59967: Fix missing -fPIC parameter when compiling tree-sitter module
From: Yuan Fu <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Mon, 12 Dec 2022 14:42:20 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

lux <[email-masked]> writes:

> GCC in Fedora Linux does not use --enable-default-pie by default, so
> I will encounter the following errors when running the build.sh:
>
>
> $ ./build.sh c     
> Building c
> /usr/bin/ld: parser.o: relocation R_X86_64_32S against `.rodata' can
> not be used when making a shared object; recompile with -fPIC
> /usr/bin/ld: failed to set dynamic section sizes: bad value collect2:
> error: ld returned 1 exit status cp: cannot stat 'libtree-sitter-c.so':
> No such file or directory
>
> Following are my gcc configure information:
>
> $ gcc -v
> Using built-in specs.
> COLLECT_GCC=gcc
> COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/12/lto-wrapper
> OFFLOAD_TARGET_NAMES=nvptx-none
> OFFLOAD_TARGET_DEFAULT=1
> Target: x86_64-redhat-linux
> Configured with: ../configure --enable-bootstrap
> --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,lto
> --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info
> --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared
> --enable-threads=posix --enable-checking=release --enable-multilib
> --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions
> --enable-gnu-unique-object --enable-linker-build-id
> --with-gcc-major-version-only --enable-libstdcxx-backtrace
> --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array
> --with-isl=/builddir/build/BUILD/gcc-12.2.1-20221121/obj-x86_64-redhat-linux/isl-install
> --enable-offload-targets=nvptx-none --without-cuda-driver
> --enable-offload-defaulted --enable-gnu-indirect-function --enable-cet
> --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
> --with-build-config=bootstrap-lto --enable-link-serialization=1 Thread
> model: posix Supported LTO compression algorithms: zlib zstd gcc
> version 12.2.1 20221121 (Red Hat 12.2.1-4) (GCC) 
>
> I added -fPIC option in build.sh.

Ah, yes, thank you! I applied the patch.

Yuan

Subject: Fix missing -fPIC parameter when compiling tree-sitter module
From: lux <[email-masked]>
To: "[email-masked]" <[email-masked]>
Date: Sun, 11 Dec 2022 23:35:53 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

GCC in Fedora Linux does not use --enable-default-pie by default, so
I will encounter the following errors when running the build.sh:

$ ./build.sh c     
Building c
/usr/bin/ld: parser.o: relocation R_X86_64_32S against `.rodata' can
not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: failed to set dynamic section sizes: bad value collect2:
error: ld returned 1 exit status cp: cannot stat 'libtree-sitter-c.so':
No such file or directory

Following are my gcc configure information:

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/12/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap
--enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,lto
--prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info
--with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared
--enable-threads=posix --enable-checking=release --enable-multilib
--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions
--enable-gnu-unique-object --enable-linker-build-id
--with-gcc-major-version-only --enable-libstdcxx-backtrace
--with-linker-hash-style=gnu --enable-plugin --enable-initfini-array
--with-isl=/builddir/build/BUILD/gcc-12.2.1-20221121/obj-x86_64-redhat-linux/isl-install
--enable-offload-targets=nvptx-none --without-cuda-driver
--enable-offload-defaulted --enable-gnu-indirect-function --enable-cet
--with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
--with-build-config=bootstrap-lto --enable-link-serialization=1 Thread
model: posix Supported LTO compression algorithms: zlib zstd gcc
version 12.2.1 20221121 (Red Hat 12.2.1-4) (GCC) 

I added -fPIC option in build.sh.

>From 188f05e4f8fb7834ee6f43dd00bc59cfe39fc55b Mon Sep 17 00:00:00 2001
From: lu4nx <[email-masked]>
Date: Sun, 11 Dec 2022 23:33:33 +0800
Subject: [PATCH] ; * admin/notes/tree-sitter/build-module/build.sh: Add -fPIC

---
 admin/notes/tree-sitter/build-module/build.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/admin/notes/tree-sitter/build-module/build.sh b/admin/notes/tree-sitter/build-module/build.sh
index cc31e3f6f0..c1e81f93ed 100755
--- a/admin/notes/tree-sitter/build-module/build.sh
+++ b/admin/notes/tree-sitter/build-module/build.sh
@@ -43,7 +43,7 @@ grammardir=
 
 ### Build
 
-cc -c -I. parser.c
+cc -fPIC -c -I. parser.c
 # Compile scanner.c.
 if test -f scanner.c
 then
-- 
2.38.1