Control: reassign -1 src:cgal 6.2-1
Control: retitle -1 "cgal: .debug_gdb_scripts is not NUL-terminated, breaks

Hello,

mold is not at fault here. It is rejecting invalid input coming from a
faulty CGAL header.

ld.lld rejects this header as well. For whatever reason, GNU ld is too 
permissive.


The offending section comes from CGAL 6.2, which introduced 
include/CGAL/gdb_autoload.h:

  
https://github.com/CGAL/cgal/blob/v6.2/Installation/include/CGAL/gdb_autoload.h

That header pushes .debug_gdb_scripts with the "MS" flags, i.e. 
SHF_MERGE|SHF_STRINGS with an
entity size of 1, and then emits the payload with .ascii:

    __asm__(
        ".pushsection \".debug_gdb_scripts\", \"MS\",@progbits,1\n"
        ".ascii \"\\4gdb.inlined-script.CGAL\\n\"\n"
        [...]
        ".ascii \"gdb.execute('source ' + path + 
'/share/gdb/auto-load/cgal_printers.py')\\n\"\n"
        ".popsection\n"
    );

But the .ascii doesn't append a terminating NUL.

This is fixed upstream in

  https://github.com/CGAL/cgal/commit/eb2257df4da4c52c75fe384e803d9a6376057b8a


Is anyone opposed to re-enabling ld.mold for deal.II?

It really cuts down on linkage time...


Best,
Matthias

Reply via email to