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.
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