[Bug c++/98436] New: issue with casting member function on linux32 bit only
samuel_benjamin at mentor dot com
gcc-bugzilla@gcc.gnu.org
Thu Dec 24 09:19:05 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98436
Bug ID: 98436
Summary: issue with casting member function on linux32 bit only
Product: gcc
Version: 7.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: samuel_benjamin at mentor dot com
Target Milestone: ---
Created attachment 49840
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49840&action=edit
TestCase
There is an issue with gcc 7.4.0 linux32 bit only, I tried the example below
with 4.7.4 , 5.3.0. 6.3.0 , all are working fine for both 32bit and 64 bit
except gcc-7.4.0 linux32.
The issue is i have an un-implemented member function in a class , and the
implementation is inside another stub file.
The main exe loads two shared librares ( systemc.so ) and (systemc_stubs.so) ,
the issue arrives when i casts the undefined member function pointer is :
on gcc-7.4.0- 32 bit :
(gdb) p tmp
$1 = &virtual table offset -134397620
on gcc-7.4.0 - 64 bit and many other gcc versions :
$1 = (void (functor::*)(functor * const)) 0x7ffff7e4c15a
<_ZN7MyClass17myUndefinedMethodEv()>
Files are below :
Class.h --> basic class
testbench.cpp --> this is the main file for the fist so ( systemc.so)
stub.cpp --> systemc_stubs.so
main.cpp --> main exe which loads the 2 so and executes the entry point.
Compilation :
g++ -shared -o systemc.so -Wl,-E -Wl,-Bsymbolic -lm testbench.cpp -g
g++ -shared -o systemc_stubs.so -Wl,-E -Wl,-Bsymbolic -lm stub.cpp -g
g++ main.cpp -g -ldl -o testmain
More information about the Gcc-bugs
mailing list