Home | History | Annotate | Download | only in libelf

Lines Matching refs:ref

956 dup_elf (int fildes, Elf_Cmd cmd, Elf *ref)
962 fildes = ref->fildes;
965 else if (unlikely (ref->fildes != -1 && fildes != ref->fildes))
974 if (unlikely (ref->cmd != ELF_C_READ && ref->cmd != ELF_C_READ_MMAP
975 && ref->cmd != ELF_C_WRITE && ref->cmd != ELF_C_WRITE_MMAP
976 && ref->cmd != ELF_C_RDWR && ref->cmd != ELF_C_RDWR_MMAP
977 && ref->cmd != ELF_C_READ_MMAP_PRIVATE))
986 if (ref->kind != ELF_K_AR)
988 ++ref->ref_count;
989 return ref;
996 if (ref->state.ar.elf_ar_hdr.ar_name == NULL
997 && __libelf_next_arhdr_wrlock (ref) != 0)
1003 result = read_file (fildes, ref->state.ar.offset + sizeof (struct ar_hdr),
1004 ref->state.ar.elf_ar_hdr.ar_size, cmd, ref);
1009 result->next = ref->state.ar.children;
1010 ref->state.ar.children = result;
1046 lock_dup_elf (int fildes, Elf_Cmd cmd, Elf *ref)
1049 if (ref->kind == ELF_K_AR)
1051 rwlock_unlock (ref->lock);
1052 rwlock_wrlock (ref->lock);
1055 return dup_elf (fildes, cmd, ref);
1060 elf_begin (int fildes, Elf_Cmd cmd, Elf *ref)
1071 if (ref != NULL)
1073 rwlock_rdlock (ref->lock);
1090 if (unlikely (ref != NULL && ref->cmd != ELF_C_READ_MMAP_PRIVATE))
1100 if (ref != NULL)
1101 retval = lock_dup_elf (fildes, cmd, ref);
1109 /* If we have a REF object it must also be opened using this
1111 if (ref != NULL)
1113 if (unlikely (ref->cmd != ELF_C_RDWR && ref->cmd != ELF_C_RDWR_MMAP
1114 && ref->cmd != ELF_C_WRITE
1115 && ref->cmd != ELF_C_WRITE_MMAP))
1117 /* This is not ok. REF must also be opened for writing. */
1122 retval = lock_dup_elf (fildes, cmd, ref);
1131 /* We ignore REF and prepare a descriptor to write a new file. */
1142 if (ref != NULL)
1143 rwlock_unlock (ref->lock);