summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Carlier <devnexen@gmail.com>2023-03-17 19:33:23 +0000
committerDavid CARLIER <devnexen@gmail.com>2023-03-23 20:35:04 +0000
commit47b56cd35b98b6d840452bf0ff70b00ff41461e5 (patch)
treea95399c1405a18a6ccf099744ec1ca9a3b1eae26
parent74e81a50c2528b01507e9d03f594949c0f91c817 (diff)
downloadrust-libc-47b56cd35b98b6d840452bf0ff70b00ff41461e5.tar.gz
haku adding dl_iterate_phdr bsd extension
-rw-r--r--libc-test/build.rs1
-rw-r--r--src/unix/haiku/mod.rs17
2 files changed, 18 insertions, 0 deletions
diff --git a/libc-test/build.rs b/libc-test/build.rs
index b9b3cbd27c..646f7e7086 100644
--- a/libc-test/build.rs
+++ b/libc-test/build.rs
@@ -4231,6 +4231,7 @@ fn test_haiku(target: &str) {
"link.h",
"pty.h",
"stringlist.h",
+ "sys/link_elf.h",
}
// Native API
diff --git a/src/unix/haiku/mod.rs b/src/unix/haiku/mod.rs
index a3678faa93..9dfdf8c8ca 100644
--- a/src/unix/haiku/mod.rs
+++ b/src/unix/haiku/mod.rs
@@ -445,6 +445,13 @@ s! {
pub sl_max: ::size_t,
pub sl_cur: ::size_t,
}
+
+ pub struct dl_phdr_info {
+ pub dlpi_addr: ::Elf_Addr,
+ pub dlpi_name: *const ::c_char,
+ pub dlpi_phdr: *const ::Elf_Phdr,
+ pub dlpi_phnum: ::Elf_Half,
+ }
}
s_no_extra_traits! {
@@ -2033,6 +2040,16 @@ extern "C" {
pub fn getprogname() -> *const ::c_char;
pub fn setprogname(progname: *const ::c_char);
+ pub fn dl_iterate_phdr(
+ callback: ::Option<
+ unsafe extern "C" fn(
+ info: *mut dl_phdr_info,
+ size: usize,
+ data: *mut ::c_void,
+ ) -> ::c_int,
+ >,
+ data: *mut ::c_void,
+ ) -> ::c_int;
}
cfg_if! {