On Fri, May 31, 2013 at 11:13 AM, Mike Stump <mikest...@comcast.net> wrote: > So, on darwin, the new tools don't like FDE information when you have: > > __Z24default_no_named_sectionPKcjP9tree_node: > LFB588: > LFE588: > > in the object file. > > $ dwarfdump --eh-frame --verify varasm.o > ---------------------------------------------------------------------- > File: varasm.o (x86_64) > ---------------------------------------------------------------------- > Verifying EH Frame... error: FDE row for address 0x00000000000058f0 is not in > the FDE address range. > > 0x000020e0: FDE > length: 0x0000001c > CIE_pointer: 0x00000000 > start_addr: 0x00000000000058f0 > __Z24default_no_named_sectionPKcjP9tree_node > range_size: 0x0000000000000000 (end_addr = 0x00000000000058f0) > DW_CFA_nop > DW_CFA_nop > DW_CFA_nop > DW_CFA_nop > DW_CFA_nop > DW_CFA_nop > DW_CFA_nop > Instructions: 0x00000000000058f0: CFA=rsp+8 rip=[rsp] > > which, well, seems reasonable. This causes the static linker to reject it. > Now, one can prune out the pair, but, I think really, we either need to have > a default of 0 (to crash in a nice way), or an assert (to crash in a nice > way). Just falling off then end into space (the next function in the > executable file), seems wrong. > > Ok? > > PR57438 > * varasm.c (default_no_named_section): Assert instead.
This will only fix the GCC source but not other sources which does: void f(void) { __builtin_unreachable(); } Thanks, Andrew > > Index: varasm.c > =================================================================== > --- varasm.c (revision 199270) > +++ varasm.c (working copy) > @@ -6052,7 +6052,7 @@ default_no_named_section (const char *na > { > /* Some object formats don't support named sections at all. The > front-end should already have flagged this as an error. */ > - gcc_unreachable (); > + gcc_assert (0); > } > > #ifndef TLS_SECTION_ASM_FLAG >