Forum: Ruby-core [ruby-trunk - Bug #7606][Open] gcc -pie configure check is broken for OpenBSD/amd64

Posted by kernigh (George Koehler) (Guest)
on 2012-12-23 02:49
(Received via mailing list)
Issue #7606 has been reported by kernigh (George Koehler).

----------------------------------------
Bug #7606: gcc -pie configure check is broken for OpenBSD/amd64
https://bugs.ruby-lang.org/issues/7606

Author: kernigh (George Koehler)
Status: Open
Priority: Low
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2012-12-23 trunk 38563) [x86_64-openbsd5.2]


=begin
I can use PIE if I compile with gcc -fPIE and link with gcc -pie. 
Ruby's configure script tries to enable PIE, but the check for gcc -pie 
says "no".  I expected "yes".  My system runs OpenBSD 5.2 for amd64.  My 
compiler is the default gcc 4.2.1.

The problem is it forgot to use -fPIE when checking -pie.  Here is the 
relevant part of config.log:

 configure:17900: checking whether -pie is accepted as LDFLAGS
 configure:17922: gcc -o conftest  -O3 -fno-fast-math -ggdb3 -ansi 
-std=iso9899:199409  -Wall -Wextra -Wno-unused-parameter 
-Wno-parentheses -Wno-long-long -Wno-missing-field-initializers 
-Wunused-variable -Werror=pointer-arith -Werror=write-strings 
-Werror=declaration-after-statement 
-Werror=implicit-function-declaration -I/usr/local/include 
-L/usr/local/lib -fstack-protector -Wl,-E -pie conftest.c -pthread -lm 
>&5
 /usr/bin/ld: /tmp//ccYa9wrA.o: relocation R_X86_64_32 can not be used 
when making a shared object; recompile with -fPIC
 /tmp//ccYa9wrA.o: could not read symbols: Bad value
 collect2: ld returned 1 exit status

I am attaching a patch (pie-check.diff) to solve this problem. I use 
-fPIE during the check for gcc -pie. I also add -fPIE to XCFLAGS only 
when adding -pie (or -Wl,-pie) to XLDFLAGS. With this patch, the check 
says "yes" and I see -pie in XLDFLAGS.
=end
Posted by kosaki (Motohiro KOSAKI) (Guest)
on 2012-12-26 03:44
(Received via mailing list)
Issue #7606 has been updated by kosaki (Motohiro KOSAKI).

Category set to build
Status changed from Open to Assigned
Assignee set to kosaki (Motohiro KOSAKI)
Priority changed from Low to High
Target version set to 2.0.0

I don't think OpenBSD support is low priority.
----------------------------------------
Bug #7606: gcc -pie configure check is broken for OpenBSD/amd64
https://bugs.ruby-lang.org/issues/7606#change-35080

Author: kernigh (George Koehler)
Status: Assigned
Priority: High
Assignee: kosaki (Motohiro KOSAKI)
Category: build
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-12-23 trunk 38563) [x86_64-openbsd5.2]


=begin
I can use PIE if I compile with gcc -fPIE and link with gcc -pie. 
Ruby's configure script tries to enable PIE, but the check for gcc -pie 
says "no".  I expected "yes".  My system runs OpenBSD 5.2 for amd64.  My 
compiler is the default gcc 4.2.1.

The problem is it forgot to use -fPIE when checking -pie.  Here is the 
relevant part of config.log:

 configure:17900: checking whether -pie is accepted as LDFLAGS
 configure:17922: gcc -o conftest  -O3 -fno-fast-math -ggdb3 -ansi 
-std=iso9899:199409  -Wall -Wextra -Wno-unused-parameter 
-Wno-parentheses -Wno-long-long -Wno-missing-field-initializers 
-Wunused-variable -Werror=pointer-arith -Werror=write-strings 
-Werror=declaration-after-statement 
-Werror=implicit-function-declaration -I/usr/local/include 
-L/usr/local/lib -fstack-protector -Wl,-E -pie conftest.c -pthread -lm 
>&5
 /usr/bin/ld: /tmp//ccYa9wrA.o: relocation R_X86_64_32 can not be used 
when making a shared object; recompile with -fPIC
 /tmp//ccYa9wrA.o: could not read symbols: Bad value
 collect2: ld returned 1 exit status

I am attaching a patch (pie-check.diff) to solve this problem. I use 
-fPIE during the check for gcc -pie. I also add -fPIE to XCFLAGS only 
when adding -pie (or -Wl,-pie) to XLDFLAGS. With this patch, the check 
says "yes" and I see -pie in XLDFLAGS.
=end
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.