Bug#844357: fracplanet FTPFS on mips*: libQtOpenGL.so: undefined reference to `glLoadMatrixd'

2016-11-16 Thread James Cowgill
Control: reassign -1 binutils 2.25-5
Control: severity -1 important
Control: affects -1 src:fracplanet
Control: retitle -1 binutils: mips* mesa libGL.so.1 contains an invalid symbol 
table

Hi,

On 14/11/16 19:08, Adrian Bunk wrote:
> Package: fracplanet
> Version: 0.4.0-5
> Severity: serious
> 
> https://buildd.debian.org/status/package.php?p=fracplanet=sid
> 
> g++ -g -O2 -fdebug-prefix-map=/«PKGBUILDDIR»=. -fstack-protector-strong 
> -Wformat -Werror=format-security -Wl,-z,relro -Wl,-O1 -o fracplanet 
> obj/common.o obj/control.o obj/control_about.o obj/control_render.o 
> obj/control_save.o obj/control_terrain.o obj/dialog_documentation.o 
> obj/fracplanet.o obj/fracplanet_main.o obj/geometry.o obj/image.o 
> obj/license.o obj/matrix33.o obj/matrix34.o obj/noise.o 
> obj/parameters_cloud.o obj/parameters_noise.o obj/parameters_object.o 
> obj/parameters_render.o obj/parameters_save.o obj/parameters_terrain.o 
> obj/progress.o obj/random.o obj/rgb.o obj/scan.o obj/spinbox.o obj/triangle.o 
> obj/triangle_edge.o obj/triangle_mesh.o obj/triangle_mesh_cloud.o 
> obj/triangle_mesh_terrain.o obj/triangle_mesh_viewer.o 
> obj/triangle_mesh_viewer_display.o obj/vertex.o obj/xyz.o 
> obj/moc_control_about.o obj/moc_control_render.o obj/moc_control_save.o 
> obj/moc_control_terrain.o obj/moc_dialog_documentation.o 
> obj/moc_fracplanet_main.o obj/moc_triangle_mesh_viewer.o obj/moc_triang
>  le_mesh_viewer_display.o-L/usr/lib/mips-linux-gnu -L/usr/X11R6/lib 
> -lboost_program_options -lGLU -lQtOpenGL -lQtGui -lQtCore -lGL -lpthread 
> /usr/lib/mips-linux-gnu/libQtOpenGL.so: undefined reference to `glLoadMatrixd'
> 
> 
> Michael Biebl mentioned #844227 on IRC, are these bugs coincidence,
> or is there something that broke/changed in Mesa on mips* recently?

Looking at this a bit closer, it appears to be a longstanding binutils
bug which was recently made worse due to a change in counting local
symbols.

Dumping the dynamic symbol table of libGL.so.1 on mipsel shows the
first (long standing) bug:

$ readelf --syms libGL.so.1 | head -n15
Symbol table '.dynsym' contains 1559 entries:
   Num:Value  Size TypeBind   Vis  Ndx Name
 0:  0 NOTYPE  LOCAL  DEFAULT  UND
 1: 000163c0 0 SECTION LOCAL  DEFAULT   10
 2: 000902a8 0 SECTION LOCAL  DEFAULT   16
 3: 0007264052 FUNCGLOBAL DEFAULT   11 
glCheckFramebufferStatusE
 4: 0006c47052 FUNCGLOBAL DEFAULT   11 glConvolutionFilter1D
 5: 0007219828 FUNCGLOBAL DEFAULT   11 glVertexAttrib3fvARB
 6: 0006b73052 FUNCGLOBAL DEFAULT   11 glLoadMatrixd
 7: 000943d0 0 NOTYPE  LOCAL  DEFAULT   24 _fbss
 8: 0006c6a052 FUNCGLOBAL DEFAULT   11 
glGetConvolutionParameter
 9: 0006973052 FUNCGLOBAL DEFAULT   11 glVertex4i
10: 0006ebe052 FUNCGLOBAL DEFAULT   11 
glGetBufferPointervARB
11: 0006e3d828 FUNCGLOBAL DEFAULT   11 glWindowPos2f

Here the _fbss symbol is LOCAL which is prohibited by the ELF standard
which requires all LOCAL symbols to precede GLOBAL symbols. This bug is
definitely present in jessie's binutils, because jessie's libGL also
has a symbol table similar to this. Wheezy's mesa doesn't have this bug
but I don't know if binutils definitely doesn't have it in wheezy.

Ordinarily this wasn't much of an issue since glibc and ld would just
skip LOCAL symbols when processing the symbol tables. However somewhere
between binutils 2.27-9 and 2.27.51.20161108-1 the behavior for
calculating the 'st_info' field for the .dynsym section header changed.
Recompiling mesa with both versions of binutils gives identical libGL
binaries except for this difference in the section header:

diffoscope output (- 2.27-9, + 2.27.51.20161108-1):
│ -  [ 5] .dynsym   DYNSYM  2e40 002e40 009228 18   
A  6   3  8
│ +  [ 5] .dynsym   DYNSYM  2e40 002e40 009228 18   
A  6   9  8

Here 3 = the index of the first non-global symbol, and 9 = the total
number of local symbols. These values should of course be equal if the
rules about symbol ordering were followed. ld uses the value of the
'st_info' field to skip LOCAL symbols when linking, which explains why
only the 5 symbols from 3-8 in the above symbol table cause link errors.

I'm still investigating, but getting a reduced testcase is quite tricky
and recompiling mesa on mips takes about an hour.

Thanks,
James



signature.asc
Description: OpenPGP digital signature


Bug#844357: fracplanet FTPFS on mips*: libQtOpenGL.so: undefined reference to `glLoadMatrixd'

2016-11-15 Thread Lisandro Damián Nicanor Pérez Meyer
On lunes, 14 de noviembre de 2016 21:08:33 ART Adrian Bunk wrote:
> Package: fracplanet
> Version: 0.4.0-5
> Severity: serious
> 
> https://buildd.debian.org/status/package.php?p=fracplanet=sid
> 
> g++ -g -O2 -fdebug-prefix-map=/«PKGBUILDDIR»=. -fstack-protector-strong
> -Wformat -Werror=format-security -Wl,-z,relro -Wl,-O1 -o fracplanet
> obj/common.o obj/control.o obj/control_about.o obj/control_render.o
> obj/control_save.o obj/control_terrain.o obj/dialog_documentation.o
> obj/fracplanet.o obj/fracplanet_main.o obj/geometry.o obj/image.o
> obj/license.o obj/matrix33.o obj/matrix34.o obj/noise.o
> obj/parameters_cloud.o obj/parameters_noise.o obj/parameters_object.o
> obj/parameters_render.o obj/parameters_save.o obj/parameters_terrain.o
> obj/progress.o obj/random.o obj/rgb.o obj/scan.o obj/spinbox.o
> obj/triangle.o obj/triangle_edge.o obj/triangle_mesh.o
> obj/triangle_mesh_cloud.o obj/triangle_mesh_terrain.o
> obj/triangle_mesh_viewer.o obj/triangle_mesh_viewer_display.o obj/vertex.o
> obj/xyz.o obj/moc_control_about.o obj/moc_control_render.o
> obj/moc_control_save.o obj/moc_control_terrain.o
> obj/moc_dialog_documentation.o obj/moc_fracplanet_main.o
> obj/moc_triangle_mesh_viewer.o obj/moc_triang le_mesh_viewer_display.o   
> -L/usr/lib/mips-linux-gnu -L/usr/X11R6/lib -lboost_program_options -lGLU
> -lQtOpenGL -lQtGui -lQtCore -lGL -lpthread
> /usr/lib/mips-linux-gnu/libQtOpenGL.so: undefined reference to
> `glLoadMatrixd'
> 
> 
> Michael Biebl mentioned #844227 on IRC, are these bugs coincidence,
> or is there something that broke/changed in Mesa on mips* recently?

Or binutils or some other part of the toolchain.

From the Qt side we have the same reply as the mesa maintainers: we do keep 
symbols files and the packages will FTBFS if the symbols dissapeared, so no, 
there must be something else going on.


-- 
She got her good looks from her father. He's a plastic surgeon.
 -- Groucho Marx

Lisandro Damián Nicanor Pérez Meyer
http://perezmeyer.com.ar/
http://perezmeyer.blogspot.com/


signature.asc
Description: This is a digitally signed message part.


Bug#844357: fracplanet FTPFS on mips*: libQtOpenGL.so: undefined reference to `glLoadMatrixd'

2016-11-14 Thread Emilio Pozuelo Monfort
On 14/11/16 20:08, Adrian Bunk wrote:
> Package: fracplanet
> Version: 0.4.0-5
> Severity: serious
> 
> https://buildd.debian.org/status/package.php?p=fracplanet=sid
> 
> g++ -g -O2 -fdebug-prefix-map=/«PKGBUILDDIR»=. -fstack-protector-strong 
> -Wformat -Werror=format-security -Wl,-z,relro -Wl,-O1 -o fracplanet 
> obj/common.o obj/control.o obj/control_about.o obj/control_render.o 
> obj/control_save.o obj/control_terrain.o obj/dialog_documentation.o 
> obj/fracplanet.o obj/fracplanet_main.o obj/geometry.o obj/image.o 
> obj/license.o obj/matrix33.o obj/matrix34.o obj/noise.o 
> obj/parameters_cloud.o obj/parameters_noise.o obj/parameters_object.o 
> obj/parameters_render.o obj/parameters_save.o obj/parameters_terrain.o 
> obj/progress.o obj/random.o obj/rgb.o obj/scan.o obj/spinbox.o obj/triangle.o 
> obj/triangle_edge.o obj/triangle_mesh.o obj/triangle_mesh_cloud.o 
> obj/triangle_mesh_terrain.o obj/triangle_mesh_viewer.o 
> obj/triangle_mesh_viewer_display.o obj/vertex.o obj/xyz.o 
> obj/moc_control_about.o obj/moc_control_render.o obj/moc_control_save.o 
> obj/moc_control_terrain.o obj/moc_dialog_documentation.o 
> obj/moc_fracplanet_main.o obj/moc_triangle_mesh_viewer.o obj/moc_triang
>  le_mesh_viewer_display.o-L/usr/lib/mips-linux-gnu -L/usr/X11R6/lib 
> -lboost_program_options -lGLU -lQtOpenGL -lQtGui -lQtCore -lGL -lpthread 
> /usr/lib/mips-linux-gnu/libQtOpenGL.so: undefined reference to `glLoadMatrixd'
> 
> 
> Michael Biebl mentioned #844227 on IRC, are these bugs coincidence,
> or is there something that broke/changed in Mesa on mips* recently?

There is most likely something broken in mesa or lower in the stack. Please
don't open bugs for this build failure (which is affecting several packages)
until that is investigated.

Emilio


Bug#844357: fracplanet FTPFS on mips*: libQtOpenGL.so: undefined reference to `glLoadMatrixd'

2016-11-14 Thread Adrian Bunk
Package: fracplanet
Version: 0.4.0-5
Severity: serious

https://buildd.debian.org/status/package.php?p=fracplanet=sid

g++ -g -O2 -fdebug-prefix-map=/«PKGBUILDDIR»=. -fstack-protector-strong 
-Wformat -Werror=format-security -Wl,-z,relro -Wl,-O1 -o fracplanet 
obj/common.o obj/control.o obj/control_about.o obj/control_render.o 
obj/control_save.o obj/control_terrain.o obj/dialog_documentation.o 
obj/fracplanet.o obj/fracplanet_main.o obj/geometry.o obj/image.o obj/license.o 
obj/matrix33.o obj/matrix34.o obj/noise.o obj/parameters_cloud.o 
obj/parameters_noise.o obj/parameters_object.o obj/parameters_render.o 
obj/parameters_save.o obj/parameters_terrain.o obj/progress.o obj/random.o 
obj/rgb.o obj/scan.o obj/spinbox.o obj/triangle.o obj/triangle_edge.o 
obj/triangle_mesh.o obj/triangle_mesh_cloud.o obj/triangle_mesh_terrain.o 
obj/triangle_mesh_viewer.o obj/triangle_mesh_viewer_display.o obj/vertex.o 
obj/xyz.o obj/moc_control_about.o obj/moc_control_render.o 
obj/moc_control_save.o obj/moc_control_terrain.o obj/moc_dialog_documentation.o 
obj/moc_fracplanet_main.o obj/moc_triangle_mesh_viewer.o obj/moc_triang
 le_mesh_viewer_display.o-L/usr/lib/mips-linux-gnu -L/usr/X11R6/lib 
-lboost_program_options -lGLU -lQtOpenGL -lQtGui -lQtCore -lGL -lpthread 
/usr/lib/mips-linux-gnu/libQtOpenGL.so: undefined reference to `glLoadMatrixd'


Michael Biebl mentioned #844227 on IRC, are these bugs coincidence,
or is there something that broke/changed in Mesa on mips* recently?