line_info
line_info(m, 0, &serial_state);
line_info(m, info);
__aligned_u64 line_info; /* line info */
__aligned_u64 line_info;
user_linfo = u64_to_user_ptr(info.line_info);
ulinfo = make_bpfptr(attr->line_info, uattr.is_kernel);
struct mixart_analog_hw_info line_info;
holder.line_info = ptr_to_u64(ptr);
__aligned_u64 line_info; /* line info */
__aligned_u64 line_info;
const char *func_info, *line_info;
line_info = OPTS_GET(opts, line_info, NULL);
attr.line_info = ptr_to_u64(line_info);
linfo = alloc_zero_tailing_info(line_info,
attr.line_info = ptr_to_u64(linfo);
const void *line_info;
memcpy(prog_linfo->raw_linfo, (void *)(long)info->line_info, data_sz);
struct btf_ext_sec_info_param line_info = {
.ext_info = &btf_ext->line_info,
err = btf_ext_parse_sec_info(btf_ext, &line_info, is_native);
free(btf_ext->line_info.sec_idxs);
seg = &btf_ext->line_info;
static void info_blob_bswap(struct bpf_gen *gen, int func_info, int line_info,
struct bpf_line_info *li = gen->data_start + line_info;
int prog_load_attr, license_off, insns_off, func_info, line_info, core_relos;
line_info = add_data(gen, load_attr->line_info, line_info_tot_sz);
line_info, load_attr->line_info_cnt,
info_blob_bswap(gen, func_info, line_info, core_relos, load_attr);
emit_rel_store(gen, attr_field(prog_load_attr, line_info), line_info);
ext_segs[1] = &obj->btf_ext->line_info;
void *line_info;
goto line_info;
line_info:
if (main_prog != prog && !main_prog->line_info)
err = adjust_prog_btf_ext_info(obj, prog, &obj->btf_ext->line_info,
&main_prog->line_info,
if (main_prog->line_info) {
load_attr.line_info = prog->line_info;
zfree(&prog->line_info);
return prog->line_info;
struct btf_ext_info line_info;
struct btf_ext_sec_data line_info;
free(sec->line_info.recs);
rec_sz = obj->btf_ext->line_info.rec_size;
for_each_btf_ext_sec(&obj->btf_ext->line_info, ext_sec) {
if (dst_sec->line_info.rec_sz == 0)
dst_sec->line_info.rec_sz = rec_sz;
if (dst_sec->line_info.rec_sz != rec_sz) {
for_each_btf_ext_rec(&obj->btf_ext->line_info, ext_sec, i, src_rec) {
dst_rec = add_btf_ext_rec(&dst_sec->line_info, src_rec);
if (sec->line_info.rec_cnt) {
line_rec_sz = sec->line_info.rec_sz;
if (line_rec_sz != sec->line_info.rec_sz) {
line_rec_sz, sec->line_info.rec_sz);
lines_sz += sizeof(struct btf_ext_info_sec) + line_rec_sz * sec->line_info.rec_cnt;
sz = emit_btf_ext_data(linker, cur, sec->sec_name, &sec->line_info);
offsetof(struct bpf_prog_info, line_info),
static int extract_file_and_line(const DILineInfo &line_info, char **file,
if (line_info.FileName == "<invalid>") {
*file = strdup(line_info.FileName.c_str());
*line = line_info.Line;
__u32 line_info[MAX_NR_RAW_U32];
.line_info = { BTF_END_RAW },
.line_info = { BTF_END_RAW },
.line_info = { BTF_END_RAW },
.line_info = { BTF_END_RAW },
.line_info = {
.line_info = {
.line_info = {
.line_info = {
.line_info = {
.line_info = {
.line_info = {
.line_info = {
.line_info = {
.line_info = {
.line_info = {
.line_info = {
.line_info = {
.line_info = {
.line_info = {
.line_info = {
.line_info = {
.line_info = {
info.line_info = ptr_to_u64(linfo);
(void *)(long)info.line_info,
patched_linfo = patch_name_tbd(test->line_info,
attr.line_info = ptr_to_u64(patched_linfo);
struct bpf_line_info line_info[128], *libbpf_line_info;
info.line_info = ptr_to_u64(&line_info);
info.nr_line_info = sizeof(line_info);
info.line_info_rec_size = sizeof(*line_info);
ASSERT_MEMEQ(libbpf_line_info, line_info, libbbpf_line_info_cnt * sizeof(*line_info),