The major differences between the two systems I have are gcc 3.4.5 and gcc-4.1.0
The problematic system is running gcc-4.1.0.
To test the problem I ran the following:
Code:
echo 'int main(){}' >> test.c && gcc -lGL test.c
The problem is that the dynamic linker cannot resolve _gl_context_modes_create and a number to '_gl_context_modes_create' and a few others.
ldd on libGL.so returned no problems.
Looking into the ELF headers I noticed the following:
inside of the .rel.dyn header
_gl_context_modes_crea is used.
inside of the .rel.plt header
_gl_context_modes_crea is used.
inside of the .dynsym header
_gl_context_modes_create is used.
The values shown in the .dynsym are:
Code:
00000000 0 NOTYPE GLOBAL DEFAULT UND _gl_context_modes_create
Unsure of why this is happening, I looked at my working system with gcc-3.4.5.
The structure of libGL.so there is different, despite being same versions and almost identical systems.
.rel.dyn header does not contain any reference to
_gl_context_modes_crea or
_gl_context_modes_create
.rel.plt header also dos not contain those. In fact it contains only two "JUMP_SLOT"'s, whereas the problematic machine has numerous "JUMP_SLOT"'s
.dynsym header contains
_gl_context_modes_create and looks like:
Code:
00027158 261 FUNC GLOBAL_DEFAULT 8 _gl_context_modes_create
I am trying to link thinks like glxgears and other common libGL wanting applications.
Any ideas on how to resolve this, or perhaps to get the problematic system to store the full _gl_context_modes_create (if relevant) or to get the function to be defined as a function in the .dynsym??
Would BIND_NOW resolve this issue?