tail head cat sleep
QR code linking to this page

Manual Pages  — DWARF_ADD_LINE_ENTRY

NAME

dwarf_add_line_entry – add a line number information entry to a producer instance

CONTENTS

LIBRARY

DWARF Access Library (libdwarf, -ldwarf)

SYNOPSIS

#include <libdwarf.h>

Dwarf_Unsigned
dwarf_add_line_entry(Dwarf_P_Debug dbg, Dwarf_Unsigned filendx, Dwarf_Addr off, Dwarf_Unsigned lineno, Dwarf_Signed column, Dwarf_Bool is_stmt, Dwarf_Bool basic_block, Dwarf_Error *err);

DESCRIPTION

Function dwarf_add_line_entry() adds a line number information entry to a DWARF producer instance.

Argument dbg should reference a DWARF producer instance allocated using dwarf_producer_init(3) or dwarf_producer_init_b(3).

Argument filendx specifies the index of the source file that contains the source line in question. Valid source file indices are those returned by the function dwarf_add_file_decl(3).

Argument off specifies a relocatable program address. The ELF symbol to be used for relocation is set by a prior call to the function dwarf_lne_set_address(3).

Argument lineno specifies the line number of the source line.

Argument column specifies the column number within the source line.

If the argument is_stmt is set to true, it indicates that the instruction at the address specified by argument off is a recommended breakpoint location, i.e., the first instruction in the instruction sequence generated by the source line.

If the argument basic_block is set to true, it indicates that the instruction at the address specified by argument off is the first instruction of a basic block.

If argument err is not NULL, it will be used to store error information in case of an error.

RETURN VALUES

On success, function dwarf_add_line_entry() returns DW_DLV_OK. In case of an error, function dwarf_add_line_entry() returns DW_DLV_NOCOUNT and sets the argument err.

EXAMPLES

To add line number information to the producer instance, use:
Dwarf_P_Debug dbg;
Dwarf_Error de;
Dwarf_Unsigned dir, filendx;

/* ... assume dbg refers to a DWARF producer instance ... */

dir = dwarf_add_directory_decl(dbg, "/home/foo", &de); if (dir == DW_DLV_NOCOUNT)         errx(EXIT_FAILURE, "dwarf_add_directory_decl failed: %s",          dwarf_errmsg(-1));

filendx = dwarf_add_file_decl(dbg, "bar.c", dir, 0, 1234, &de); if (filendx == DW_DLV_NOCOUNT)         errx(EXIT_FAILURE, "dwarf_add_file_decl failed: %s",          dwarf_errmsg(-1));

if (dwarf_lne_set_address(dbg, 0x4012b0, 12, &de) != DW_DLV_OK)         errx(EXIT_FAILURE, "dwarf_lne_set_address failed: %s",          dwarf_errmsg(-1));

if (dwarf_add_line_entry(dbg, filendx, 10, 258, 0, 1, 1, &de) != DW_DLV_OK)         errx(EXIT_FAILURE, "dwarf_add_line_entry failed: %s",          dwarf_errmsg(-1));

ERRORS

Function dwarf_add_line_entry() can fail with:
[DW_DLE_ARGUMENT] Argument dbg was NULL.
[DW_DLE_ARGUMENT] The function dwarf_lne_set_address(3) was not called before calling this function.
[DW_DLE_MEMORY] An out of memory condition was encountered during the execution of the function.

SEE ALSO

dwarf(3), dwarf_add_directory_decl(3), dwarf_add_file_decl(3), dwarf_lne_end_sequence(3), dwarf_lne_set_address(3), dwarf_producer_init(3), dwarf_producer_init_b(3)

DWARF_ADD_LINE_ENTRY (3) June 30, 2013

tail head cat sleep
QR code linking to this page


Please direct any comments about this manual page service to Ben Bullock. Privacy policy.

How's my programming? Call 1-800-DEV-NULL