void dwarf2_emit_insn (int size) { struct dwarf2_line_info loc; if (loc_directive_seen) { /* Use the last location established by a .loc directive, not the value returned by dwarf2_where(). That calls as_where() which will return either the logical input file name (foo.c) or the physical input file name (foo.s) and not the file name specified in the most recent .loc directive (eg foo.h). */ loc = current; /* Unless we generate DWARF2 debugging information for each assembler line, we only emit one line symbol for one LOC. */ if (debug_type != DEBUG_DWARF2) loc_directive_seen = FALSE; } else if (debug_type != DEBUG_DWARF2) return; else dwarf2_where (& loc); dwarf2_gen_line_info (frag_now_fix () - size, &loc); }
void dwarf2_emit_label (symbolS *label) { struct dwarf2_line_info loc; if (!dwarf2_loc_mark_labels) return; if (S_GET_SEGMENT (label) != now_seg) return; if (!(bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE)) return; if (debug_type == DEBUG_DWARF2) dwarf2_where (&loc); else { loc = current; loc_directive_seen = FALSE; } loc.flags |= DWARF2_FLAG_BASIC_BLOCK; current.flags &= ~(DWARF2_FLAG_BASIC_BLOCK | DWARF2_FLAG_PROLOGUE_END | DWARF2_FLAG_EPILOGUE_BEGIN); dwarf2_gen_line_info_1 (label, &loc); }
void dwarf2_emit_insn (int size) { struct dwarf2_line_info loc; if (!dwarf2_loc_directive_seen && debug_type != DEBUG_DWARF2) return; dwarf2_where (&loc); dwarf2_gen_line_info (frag_now_fix () - size, &loc); dwarf2_consume_line_info (); }
void dwarf2_emit_label (symbolS *label) { struct dwarf2_line_info loc; if (!dwarf2_loc_mark_labels) return; if (S_GET_SEGMENT (label) != now_seg) return; if (!(bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE)) return; if (files_in_use == 0 && debug_type != DEBUG_DWARF2) return; dwarf2_where (&loc); loc.flags |= DWARF2_FLAG_BASIC_BLOCK; dwarf2_gen_line_info_1 (label, &loc); dwarf2_consume_line_info (); }