Home | History | Annotate | Download | only in libelf

Lines Matching refs:scn

134 convert_data (Elf_Scn *scn, int version __attribute__ ((unused)), int eclass,
141 if (((((size_t) (char *) scn->rawdata_base)) & (align - 1)) == 0)
143 scn->data_base = scn->rawdata_base;
146 scn->data_base = (char *) malloc (size);
147 if (scn->data_base == NULL)
154 memcpy (scn->data_base, scn->rawdata_base, size);
161 scn->data_base = (char *) malloc (size);
162 if (scn->data_base == NULL)
175 fp (scn->data_base, scn->rawdata_base, size, 0);
178 scn->data_list.data.d.d_buf = scn->data_base;
179 scn->data_list.data.d.d_size = size;
180 scn->data_list.data.d.d_type = type;
181 scn->data_list.data.d.d_off = scn->rawdata.d.d_off;
182 scn->data_list.data.d.d_align = scn->rawdata.d.d_align;
183 scn->data_list.data.d.d_version = scn->rawdata.d.d_version;
185 scn->data_list.data.s = scn;
192 __libelf_set_rawdata_wrlock (Elf_Scn *scn)
198 Elf *elf = scn->elf;
203 = scn->shdr.e32 ?: __elf32_getshdr_wrlock (scn);
217 = scn->shdr.e64 ?: __elf64_getshdr_wrlock (scn);
275 scn->rawdata_base = scn->rawdata.d.d_buf
282 scn->rawdata_base = scn->rawdata.d.d_buf
284 if (scn->rawdata.d.d_buf == NULL)
290 ssize_t n = pread_retry (elf->fildes, scn->rawdata.d.d_buf, size,
295 free (scn->rawdata.d.d_buf);
296 scn->rawdata_base = scn->rawdata.d.d_buf = NULL;
310 scn->rawdata.d.d_size = size;
317 scn->rawdata.d.d_type
321 scn->rawdata.d.d_type = shtype_map[LIBELF_EV_IDX][TYPEIDX (type)];
322 scn->rawdata.d.d_off = 0;
323 scn->rawdata.d.d_align = align;
327 scn->rawdata.d.d_version =
330 scn->rawdata.d.d_version =
333 scn->rawdata.s = scn;
335 scn->data_read = 1;
338 scn->flags |= ELF_F_FILEDATA;
345 __libelf_set_rawdata (Elf_Scn *scn)
349 if (scn == NULL)
352 rwlock_wrlock (scn->elf->lock);
353 result = __libelf_set_rawdata_wrlock (scn);
354 rwlock_unlock (scn->elf->lock);
361 __elf_getdata_rdlock (scn, data)
362 Elf_Scn *scn;
369 if (scn == NULL)
372 if (unlikely (scn->elf->kind != ELF_K_ELF))
379 elf = scn->elf;
393 if (scn->data_list_rear == NULL
396 || unlikely (((Elf_Data_Scn *) data)->s != scn))
403 runp = &scn->data_list;
427 if (scn->data_read == 0)
440 if (scn->data_read == 0 && __libelf_set_rawdata_wrlock (scn) != 0)
448 if (scn->data_list_rear == NULL)
450 if (scn->rawdata.d.d_buf != NULL && scn->rawdata.d.d_size > 0)
456 if (scn->data_list_rear != NULL)
461 convert_data (scn, __libelf_version, elf->class,
467 scn->rawdata.d.d_size, scn->rawdata.d.d_type);
472 scn->data_list.data.d = scn->rawdata.d;
474 scn->data_list_rear = &scn->data_list;
478 if (scn->data_list_rear != NULL)
481 result = &scn->data_list.data.d;
488 elf_getdata (scn, data)
489 Elf_Scn *scn;
494 if (scn == NULL)
497 rwlock_rdlock (scn->elf->lock);
498 result = __elf_getdata_rdlock (scn, data);
499 rwlock_unlock (scn->elf->lock);