Summary: GC segfaults on FreeBSD 64 / scanning issues for .data
                    and .bss sections
           Product: D
           Version: D2
          Platform: All
        OS/Version: FreeBSD
            Status: NEW
          Severity: normal
          Priority: P2
         Component: druntime

--- Comment #0 from 2011-01-25 11:34:53 PST ---
Created an attachment (id=877)

IMHO FreeBSD is missing _data__start/_data__end/_bss_start__/_bss_end__
The current strategy is to use etext and _end as scanning range.

>From compiling "void main() {}"
nm out | grep etext -> 08055b38 A etext
nm out | grep _end  -> 0805ba04 A _end

nm out | grep etext -> 0000000000411012 A etext
nm out | grep _end  -> 0000000000619988 A _end

This is not optimal as it spans over some read only sections but it's a minor
issue for 32.
With elf64-x86-64-freebsd there is a big non-readable area between .eh_frame
and .tdata. This leads to segfaulting when running the garbage collector.
I don't know any portable/official solution to this but observed that _progname
is always the first symbol in .data for 32/64 bit.

The boehm collector is installing a signal handler and tries to read from _end
upwards until it fails.

I've appended objdump section headers.

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to