tail head cat sleep
QR code linking to this page



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



DWARF Access Library (libdwarf, -ldwarf)


#include <libdwarf.h>

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);


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.


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.


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));


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.


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