svn commit: r569007 - in head/lang: rust rust-bootstrap rust/files
Tobias Kortkamp
tobik at FreeBSD.org
Tue Mar 23 06:39:49 UTC 2021
Author: tobik
Date: Tue Mar 23 06:39:47 2021
New Revision: 569007
URL: https://svnweb.freebsd.org/changeset/ports/569007
Log:
lang/rust: Fix DOCS build, unbreak RUST_BACKTRACE
- Fix DOCS build by disabling deny-warnings (rustc equivalent to
-Werror). Let's not fail the entire build just because a handful
of docs fail to build due to -D broken-intra-doc-links [0]
- Only install the host target docs. We otherwise waste time with
a rust-docs install-uninstall-install cycle for each additional
target during stage.
- Backport FreeBSD support for gimli, unbreak RUST_BACKTRACE, and
have useful stack traces with actual content again [1]
- While here also strip binaries under libexec/ and ack reading of
src/bootstrap/CHANGELOG.md (changelog-seen=2)
[0] https://github.com/rust-lang/rust/issues/76526
PR: 253557 [1]
Submitted by: jbeich [1]
Added:
head/lang/rust/files/patch-backtrace (contents, props changed)
head/lang/rust/files/patch-src_bootstrap_install.rs (contents, props changed)
Modified:
head/lang/rust-bootstrap/Makefile
head/lang/rust/Makefile
Modified: head/lang/rust-bootstrap/Makefile
==============================================================================
--- head/lang/rust-bootstrap/Makefile Tue Mar 23 02:44:18 2021 (r569006)
+++ head/lang/rust-bootstrap/Makefile Tue Mar 23 06:39:47 2021 (r569007)
@@ -2,6 +2,7 @@
PORTNAME= rust
PORTVERSION= 1.50.0
+PORTREVISION= 1
CATEGORIES= lang
MASTER_SITES= https://static.rust-lang.org/dist/:rust \
LOCAL/mikael:armbase \
Modified: head/lang/rust/Makefile
==============================================================================
--- head/lang/rust/Makefile Tue Mar 23 02:44:18 2021 (r569006)
+++ head/lang/rust/Makefile Tue Mar 23 06:39:47 2021 (r569007)
@@ -3,7 +3,7 @@
PORTNAME= rust
PORTVERSION?= 1.50.0
-PORTREVISION?= 0
+PORTREVISION?= 1
CATEGORIES= lang
MASTER_SITES= https://static.rust-lang.org/dist/:src \
https://dev-static.rust-lang.org/dist/:src \
@@ -46,7 +46,6 @@ CONFLICTS_INSTALL?= rust-nightly
OPTIONS_DEFINE= DOCS GDB SOURCES WASM
OPTIONS_DEFAULT= SOURCES WASM
-OPTIONS_EXCLUDE= DOCS # https://github.com/rust-lang/rust/issues/76526
.if defined(NIGHTLY_DATE)
OPTIONS_EXCLUDE+= SOURCES
.endif
@@ -122,7 +121,8 @@ do-configure:
@cd ${WRKDIR}/${_component}-*-${OPSYS:tl} && \
${SH} install.sh --prefix=${WRKDIR}/bootstrap --verbose
.endfor
- @${ECHO_CMD} '[build]' > ${WRKSRC}/config.toml
+ @${ECHO_CMD} 'changelog-seen=2' > ${WRKSRC}/config.toml
+ @${ECHO_CMD} '[build]' >> ${WRKSRC}/config.toml
@${ECHO_CMD} 'vendor=true' >> ${WRKSRC}/config.toml
@${ECHO_CMD} 'extended=true' >> ${WRKSRC}/config.toml
@${ECHO_CMD} 'python="${PYTHON_CMD}"' >> ${WRKSRC}/config.toml
@@ -141,6 +141,7 @@ do-configure:
@${ECHO_CMD} '[rust]' >> ${WRKSRC}/config.toml
@${ECHO_CMD} 'channel="${PKGNAMESUFFIX:Ustable:S/^-//}"' >> ${WRKSRC}/config.toml
@${ECHO_CMD} 'default-linker="${CC}"' >> ${WRKSRC}/config.toml
+ @${ECHO_CMD} 'deny-warnings=false' >> ${WRKSRC}/config.toml
@${ECHO_CMD} 'verbose-tests=true' >> ${WRKSRC}/config.toml
@${ECHO_CMD} 'lld=${_RUST_BUILD_WASM}' >> ${WRKSRC}/config.toml
@${ECHO_CMD} '[llvm]' >> ${WRKSRC}/config.toml
@@ -196,11 +197,18 @@ do-install:
${STAGEDIR}${PREFIX}/lib/rustlib/install.log \
${STAGEDIR}${PREFIX}/lib/rustlib/manifest-* \
${STAGEDIR}${PREFIX}/lib/rustlib/uninstall.sh
- @${FIND} ${STAGEDIR}${PREFIX}/bin ${STAGEDIR}${PREFIX}/lib -exec ${FILE} -i {} + | \
+ @${FIND} ${STAGEDIR}${PREFIX}/bin ${STAGEDIR}${PREFIX}/lib \
+ ${STAGEDIR}${PREFIX}/libexec -exec ${FILE} -i {} + | \
${AWK} -F: '/executable|sharedlib/ { print $$1 }' | ${XARGS} ${STRIP_CMD}
@${FIND} ${STAGEDIR}${PREFIX} -not -type d | \
${SED} -E -e 's,^${STAGEDIR}${PREFIX}/,,' \
-e 's,(share/man/man[1-9]/.*\.[0-9]),\1.gz,' >> ${TMPPLIST}
+
+post-install-DOCS-on:
+# Ignore any left behind empty directories in case some docs fail
+# to build (failures are ignored due to deny-warnings=false).
+ @${FIND} ${STAGEDIR}${DOCSDIR}/html -empty -type d | \
+ ${SED} 's,^${STAGEDIR}, at comment @dir ,' >> ${TMPPLIST}
post-install-SOURCES-on:
# Silence stage-qa warnings by sanitizing permissions on sources
Added: head/lang/rust/files/patch-backtrace
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/lang/rust/files/patch-backtrace Tue Mar 23 06:39:47 2021 (r569007)
@@ -0,0 +1,918 @@
+https://github.com/rust-lang/rust/issues/78184
+
+--- library/backtrace/src/symbolize/gimli.rs.orig 2021-02-10 17:36:59 UTC
++++ library/backtrace/src/symbolize/gimli.rs
+@@ -361,6 +361,7 @@ cfg_if::cfg_if! {
+ } else if #[cfg(any(
+ target_os = "linux",
+ target_os = "fuchsia",
++ target_os = "freebsd",
+ ))] {
+ // Other Unix (e.g. Linux) platforms use ELF as an object file format
+ // and typically implement an API called `dl_iterate_phdr` to load
+--- vendor/libc-0.2.77/src/unix/bsd/freebsdlike/mod.rs.orig 2021-02-10 18:18:38 UTC
++++ vendor/libc-0.2.77/src/unix/bsd/freebsdlike/mod.rs
+@@ -14,6 +14,38 @@ pub type nl_item = ::c_int;
+ pub type id_t = i64;
+ pub type vm_size_t = ::uintptr_t;
+
++// elf.h
++
++pub type Elf32_Addr = u32;
++pub type Elf32_Half = u16;
++pub type Elf32_Lword = u64;
++pub type Elf32_Off = u32;
++pub type Elf32_Sword = i32;
++pub type Elf32_Word = u32;
++
++pub type Elf64_Addr = u64;
++pub type Elf64_Half = u16;
++pub type Elf64_Lword = u64;
++pub type Elf64_Off = u64;
++pub type Elf64_Sword = i32;
++pub type Elf64_Sxword = i64;
++pub type Elf64_Word = u32;
++pub type Elf64_Xword = u64;
++
++cfg_if! {
++ if #[cfg(target_pointer_width = "64")] {
++ type Elf_Addr = Elf64_Addr;
++ type Elf_Half = Elf64_Half;
++ type Elf_Phdr = Elf64_Phdr;
++ } else if #[cfg(target_pointer_width = "32")] {
++ type Elf_Addr = Elf32_Addr;
++ type Elf_Half = Elf32_Half;
++ type Elf_Phdr = Elf32_Phdr;
++ }
++}
++
++// link.h
++
+ #[cfg_attr(feature = "extra_traits", derive(Debug))]
+ pub enum timezone {}
+ impl ::Copy for timezone {}
+@@ -233,6 +265,43 @@ s! {
+ pub piod_addr: *mut ::c_void,
+ pub piod_len: ::size_t,
+ }
++
++ // elf.h
++
++ pub struct Elf32_Phdr {
++ pub p_type: Elf32_Word,
++ pub p_offset: Elf32_Off,
++ pub p_vaddr: Elf32_Addr,
++ pub p_paddr: Elf32_Addr,
++ pub p_filesz: Elf32_Word,
++ pub p_memsz: Elf32_Word,
++ pub p_flags: Elf32_Word,
++ pub p_align: Elf32_Word,
++ }
++
++ pub struct Elf64_Phdr {
++ pub p_type: Elf64_Word,
++ pub p_flags: Elf64_Word,
++ pub p_offset: Elf64_Off,
++ pub p_vaddr: Elf64_Addr,
++ pub p_paddr: Elf64_Addr,
++ pub p_filesz: Elf64_Xword,
++ pub p_memsz: Elf64_Xword,
++ pub p_align: Elf64_Xword,
++ }
++
++ // link.h
++
++ 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,
++ pub dlpi_adds: ::c_ulonglong,
++ pub dlpi_subs: ::c_ulonglong,
++ pub dlpi_tls_modid: usize,
++ pub dlpi_tls_data: *mut ::c_void,
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -1514,6 +1583,18 @@ extern "C" {
+
+ pub fn ntp_adjtime(buf: *mut timex) -> ::c_int;
+ pub fn ntp_gettime(buf: *mut ntptimeval) -> ::c_int;
++
++ // #include <link.h>
++ 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;
+ }
+
+ #[link(name = "rt")]
+--- vendor/libc-0.2.77/src/unix/bsd/netbsdlike/netbsd/mod.rs.orig 2021-02-10 18:18:38 UTC
++++ vendor/libc-0.2.77/src/unix/bsd/netbsdlike/netbsd/mod.rs
+@@ -11,6 +11,36 @@ pub type vm_size_t = ::uintptr_t;
+ pub type lwpid_t = ::c_uint;
+ pub type shmatt_t = ::c_uint;
+
++// elf.h
++
++pub type Elf32_Addr = u32;
++pub type Elf32_Half = u16;
++pub type Elf32_Lword = u64;
++pub type Elf32_Off = u32;
++pub type Elf32_Sword = i32;
++pub type Elf32_Word = u32;
++
++pub type Elf64_Addr = u64;
++pub type Elf64_Half = u16;
++pub type Elf64_Lword = u64;
++pub type Elf64_Off = u64;
++pub type Elf64_Sword = i32;
++pub type Elf64_Sxword = i64;
++pub type Elf64_Word = u32;
++pub type Elf64_Xword = u64;
++
++cfg_if! {
++ if #[cfg(target_pointer_width = "64")] {
++ type Elf_Addr = Elf64_Addr;
++ type Elf_Half = Elf64_Half;
++ type Elf_Phdr = Elf64_Phdr;
++ } else if #[cfg(target_pointer_width = "32")] {
++ type Elf_Addr = Elf32_Addr;
++ type Elf_Half = Elf32_Half;
++ type Elf_Phdr = Elf32_Phdr;
++ }
++}
++
+ impl siginfo_t {
+ pub unsafe fn si_value(&self) -> ::sigval {
+ #[repr(C)]
+@@ -341,6 +371,42 @@ s! {
+ pub time_state: ::c_int,
+ }
+
++ // elf.h
++
++ pub struct Elf32_Phdr {
++ pub p_type: Elf32_Word,
++ pub p_offset: Elf32_Off,
++ pub p_vaddr: Elf32_Addr,
++ pub p_paddr: Elf32_Addr,
++ pub p_filesz: Elf32_Word,
++ pub p_memsz: Elf32_Word,
++ pub p_flags: Elf32_Word,
++ pub p_align: Elf32_Word,
++ }
++
++ pub struct Elf64_Phdr {
++ pub p_type: Elf64_Word,
++ pub p_flags: Elf64_Word,
++ pub p_offset: Elf64_Off,
++ pub p_vaddr: Elf64_Addr,
++ pub p_paddr: Elf64_Addr,
++ pub p_filesz: Elf64_Xword,
++ pub p_memsz: Elf64_Xword,
++ pub p_align: Elf64_Xword,
++ }
++
++ // link.h
++
++ 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,
++ pub dlpi_adds: ::c_ulonglong,
++ pub dlpi_subs: ::c_ulonglong,
++ pub dlpi_tls_modid: usize,
++ pub dlpi_tls_data: *mut ::c_void,
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -1988,6 +2054,19 @@ extern "C" {
+ needle: *const ::c_void,
+ needlelen: ::size_t,
+ ) -> *mut ::c_void;
++
++ // link.h
++
++ 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;
+ }
+
+ #[link(name = "util")]
+--- vendor/libc-0.2.77/src/unix/bsd/netbsdlike/openbsd/mod.rs.orig 2021-02-10 18:18:38 UTC
++++ vendor/libc-0.2.77/src/unix/bsd/netbsdlike/openbsd/mod.rs
+@@ -16,6 +16,36 @@ pub type pthread_rwlock_t = *mut ::c_void;
+ pub type pthread_rwlockattr_t = *mut ::c_void;
+ pub type caddr_t = *mut ::c_char;
+
++// elf.h
++
++pub type Elf32_Addr = u32;
++pub type Elf32_Half = u16;
++pub type Elf32_Lword = u64;
++pub type Elf32_Off = u32;
++pub type Elf32_Sword = i32;
++pub type Elf32_Word = u32;
++
++pub type Elf64_Addr = u64;
++pub type Elf64_Half = u16;
++pub type Elf64_Lword = u64;
++pub type Elf64_Off = u64;
++pub type Elf64_Sword = i32;
++pub type Elf64_Sxword = i64;
++pub type Elf64_Word = u32;
++pub type Elf64_Xword = u64;
++
++cfg_if! {
++ if #[cfg(target_pointer_width = "64")] {
++ type Elf_Addr = Elf64_Addr;
++ type Elf_Half = Elf64_Half;
++ type Elf_Phdr = Elf64_Phdr;
++ } else if #[cfg(target_pointer_width = "32")] {
++ type Elf_Addr = Elf32_Addr;
++ type Elf_Half = Elf32_Half;
++ type Elf_Phdr = Elf32_Phdr;
++ }
++}
++
+ s! {
+ pub struct glob_t {
+ pub gl_pathc: ::size_t,
+@@ -321,6 +351,38 @@ s! {
+ __shm_ctimensec: c_long,
+ pub shm_internal: *mut ::c_void,
+ }
++
++ // elf.h
++ pub struct Elf32_Phdr {
++ pub p_type: Elf32_Word,
++ pub p_offset: Elf32_Off,
++ pub p_vaddr: Elf32_Addr,
++ pub p_paddr: Elf32_Addr,
++ pub p_filesz: Elf32_Word,
++ pub p_memsz: Elf32_Word,
++ pub p_flags: Elf32_Word,
++ pub p_align: Elf32_Word,
++ }
++
++ pub struct Elf64_Phdr {
++ pub p_type: Elf64_Word,
++ pub p_flags: Elf64_Word,
++ pub p_offset: Elf64_Off,
++ pub p_vaddr: Elf64_Addr,
++ pub p_paddr: Elf64_Addr,
++ pub p_filesz: Elf64_Xword,
++ pub p_memsz: Elf64_Xword,
++ pub p_align: Elf64_Xword,
++ }
++
++ // link.h
++
++ 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,
++ }
+ }
+
+ impl siginfo_t {
+@@ -1480,6 +1542,17 @@ extern "C" {
+ needle: *const ::c_void,
+ needlelen: ::size_t,
+ ) -> *mut ::c_void;
++ // #include <link.h>
++ 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! {
+--- vendor/libc-0.2.79/src/unix/bsd/freebsdlike/mod.rs.orig 2021-02-10 18:18:38 UTC
++++ vendor/libc-0.2.79/src/unix/bsd/freebsdlike/mod.rs
+@@ -14,6 +14,38 @@ pub type nl_item = ::c_int;
+ pub type id_t = i64;
+ pub type vm_size_t = ::uintptr_t;
+
++// elf.h
++
++pub type Elf32_Addr = u32;
++pub type Elf32_Half = u16;
++pub type Elf32_Lword = u64;
++pub type Elf32_Off = u32;
++pub type Elf32_Sword = i32;
++pub type Elf32_Word = u32;
++
++pub type Elf64_Addr = u64;
++pub type Elf64_Half = u16;
++pub type Elf64_Lword = u64;
++pub type Elf64_Off = u64;
++pub type Elf64_Sword = i32;
++pub type Elf64_Sxword = i64;
++pub type Elf64_Word = u32;
++pub type Elf64_Xword = u64;
++
++cfg_if! {
++ if #[cfg(target_pointer_width = "64")] {
++ type Elf_Addr = Elf64_Addr;
++ type Elf_Half = Elf64_Half;
++ type Elf_Phdr = Elf64_Phdr;
++ } else if #[cfg(target_pointer_width = "32")] {
++ type Elf_Addr = Elf32_Addr;
++ type Elf_Half = Elf32_Half;
++ type Elf_Phdr = Elf32_Phdr;
++ }
++}
++
++// link.h
++
+ #[cfg_attr(feature = "extra_traits", derive(Debug))]
+ pub enum timezone {}
+ impl ::Copy for timezone {}
+@@ -233,6 +265,43 @@ s! {
+ pub piod_addr: *mut ::c_void,
+ pub piod_len: ::size_t,
+ }
++
++ // elf.h
++
++ pub struct Elf32_Phdr {
++ pub p_type: Elf32_Word,
++ pub p_offset: Elf32_Off,
++ pub p_vaddr: Elf32_Addr,
++ pub p_paddr: Elf32_Addr,
++ pub p_filesz: Elf32_Word,
++ pub p_memsz: Elf32_Word,
++ pub p_flags: Elf32_Word,
++ pub p_align: Elf32_Word,
++ }
++
++ pub struct Elf64_Phdr {
++ pub p_type: Elf64_Word,
++ pub p_flags: Elf64_Word,
++ pub p_offset: Elf64_Off,
++ pub p_vaddr: Elf64_Addr,
++ pub p_paddr: Elf64_Addr,
++ pub p_filesz: Elf64_Xword,
++ pub p_memsz: Elf64_Xword,
++ pub p_align: Elf64_Xword,
++ }
++
++ // link.h
++
++ 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,
++ pub dlpi_adds: ::c_ulonglong,
++ pub dlpi_subs: ::c_ulonglong,
++ pub dlpi_tls_modid: usize,
++ pub dlpi_tls_data: *mut ::c_void,
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -1514,6 +1583,18 @@ extern "C" {
+
+ pub fn ntp_adjtime(buf: *mut timex) -> ::c_int;
+ pub fn ntp_gettime(buf: *mut ntptimeval) -> ::c_int;
++
++ // #include <link.h>
++ 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;
+ }
+
+ #[link(name = "rt")]
+--- vendor/libc-0.2.79/src/unix/bsd/netbsdlike/netbsd/mod.rs.orig 2021-02-10 18:18:38 UTC
++++ vendor/libc-0.2.79/src/unix/bsd/netbsdlike/netbsd/mod.rs
+@@ -11,6 +11,36 @@ pub type vm_size_t = ::uintptr_t;
+ pub type lwpid_t = ::c_uint;
+ pub type shmatt_t = ::c_uint;
+
++// elf.h
++
++pub type Elf32_Addr = u32;
++pub type Elf32_Half = u16;
++pub type Elf32_Lword = u64;
++pub type Elf32_Off = u32;
++pub type Elf32_Sword = i32;
++pub type Elf32_Word = u32;
++
++pub type Elf64_Addr = u64;
++pub type Elf64_Half = u16;
++pub type Elf64_Lword = u64;
++pub type Elf64_Off = u64;
++pub type Elf64_Sword = i32;
++pub type Elf64_Sxword = i64;
++pub type Elf64_Word = u32;
++pub type Elf64_Xword = u64;
++
++cfg_if! {
++ if #[cfg(target_pointer_width = "64")] {
++ type Elf_Addr = Elf64_Addr;
++ type Elf_Half = Elf64_Half;
++ type Elf_Phdr = Elf64_Phdr;
++ } else if #[cfg(target_pointer_width = "32")] {
++ type Elf_Addr = Elf32_Addr;
++ type Elf_Half = Elf32_Half;
++ type Elf_Phdr = Elf32_Phdr;
++ }
++}
++
+ impl siginfo_t {
+ pub unsafe fn si_value(&self) -> ::sigval {
+ #[repr(C)]
+@@ -341,6 +371,42 @@ s! {
+ pub time_state: ::c_int,
+ }
+
++ // elf.h
++
++ pub struct Elf32_Phdr {
++ pub p_type: Elf32_Word,
++ pub p_offset: Elf32_Off,
++ pub p_vaddr: Elf32_Addr,
++ pub p_paddr: Elf32_Addr,
++ pub p_filesz: Elf32_Word,
++ pub p_memsz: Elf32_Word,
++ pub p_flags: Elf32_Word,
++ pub p_align: Elf32_Word,
++ }
++
++ pub struct Elf64_Phdr {
++ pub p_type: Elf64_Word,
++ pub p_flags: Elf64_Word,
++ pub p_offset: Elf64_Off,
++ pub p_vaddr: Elf64_Addr,
++ pub p_paddr: Elf64_Addr,
++ pub p_filesz: Elf64_Xword,
++ pub p_memsz: Elf64_Xword,
++ pub p_align: Elf64_Xword,
++ }
++
++ // link.h
++
++ 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,
++ pub dlpi_adds: ::c_ulonglong,
++ pub dlpi_subs: ::c_ulonglong,
++ pub dlpi_tls_modid: usize,
++ pub dlpi_tls_data: *mut ::c_void,
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -1990,6 +2056,19 @@ extern "C" {
+ needle: *const ::c_void,
+ needlelen: ::size_t,
+ ) -> *mut ::c_void;
++
++ // link.h
++
++ 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;
+ }
+
+ #[link(name = "util")]
+--- vendor/libc-0.2.79/src/unix/bsd/netbsdlike/openbsd/mod.rs.orig 2021-02-10 18:18:38 UTC
++++ vendor/libc-0.2.79/src/unix/bsd/netbsdlike/openbsd/mod.rs
+@@ -16,6 +16,36 @@ pub type pthread_rwlock_t = *mut ::c_void;
+ pub type pthread_rwlockattr_t = *mut ::c_void;
+ pub type caddr_t = *mut ::c_char;
+
++// elf.h
++
++pub type Elf32_Addr = u32;
++pub type Elf32_Half = u16;
++pub type Elf32_Lword = u64;
++pub type Elf32_Off = u32;
++pub type Elf32_Sword = i32;
++pub type Elf32_Word = u32;
++
++pub type Elf64_Addr = u64;
++pub type Elf64_Half = u16;
++pub type Elf64_Lword = u64;
++pub type Elf64_Off = u64;
++pub type Elf64_Sword = i32;
++pub type Elf64_Sxword = i64;
++pub type Elf64_Word = u32;
++pub type Elf64_Xword = u64;
++
++cfg_if! {
++ if #[cfg(target_pointer_width = "64")] {
++ type Elf_Addr = Elf64_Addr;
++ type Elf_Half = Elf64_Half;
++ type Elf_Phdr = Elf64_Phdr;
++ } else if #[cfg(target_pointer_width = "32")] {
++ type Elf_Addr = Elf32_Addr;
++ type Elf_Half = Elf32_Half;
++ type Elf_Phdr = Elf32_Phdr;
++ }
++}
++
+ s! {
+ pub struct glob_t {
+ pub gl_pathc: ::size_t,
+@@ -321,6 +351,38 @@ s! {
+ __shm_ctimensec: c_long,
+ pub shm_internal: *mut ::c_void,
+ }
++
++ // elf.h
++ pub struct Elf32_Phdr {
++ pub p_type: Elf32_Word,
++ pub p_offset: Elf32_Off,
++ pub p_vaddr: Elf32_Addr,
++ pub p_paddr: Elf32_Addr,
++ pub p_filesz: Elf32_Word,
++ pub p_memsz: Elf32_Word,
++ pub p_flags: Elf32_Word,
++ pub p_align: Elf32_Word,
++ }
++
++ pub struct Elf64_Phdr {
++ pub p_type: Elf64_Word,
++ pub p_flags: Elf64_Word,
++ pub p_offset: Elf64_Off,
++ pub p_vaddr: Elf64_Addr,
++ pub p_paddr: Elf64_Addr,
++ pub p_filesz: Elf64_Xword,
++ pub p_memsz: Elf64_Xword,
++ pub p_align: Elf64_Xword,
++ }
++
++ // link.h
++
++ 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,
++ }
+ }
+
+ impl siginfo_t {
+@@ -1482,6 +1544,17 @@ extern "C" {
+ needle: *const ::c_void,
+ needlelen: ::size_t,
+ ) -> *mut ::c_void;
++ // #include <link.h>
++ 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! {
+--- vendor/libc/src/unix/bsd/freebsdlike/mod.rs.orig 2021-02-10 18:18:38 UTC
++++ vendor/libc/src/unix/bsd/freebsdlike/mod.rs
+@@ -14,6 +14,38 @@ pub type nl_item = ::c_int;
+ pub type id_t = i64;
+ pub type vm_size_t = ::uintptr_t;
+
++// elf.h
++
++pub type Elf32_Addr = u32;
++pub type Elf32_Half = u16;
++pub type Elf32_Lword = u64;
++pub type Elf32_Off = u32;
++pub type Elf32_Sword = i32;
++pub type Elf32_Word = u32;
++
++pub type Elf64_Addr = u64;
++pub type Elf64_Half = u16;
++pub type Elf64_Lword = u64;
++pub type Elf64_Off = u64;
++pub type Elf64_Sword = i32;
++pub type Elf64_Sxword = i64;
++pub type Elf64_Word = u32;
++pub type Elf64_Xword = u64;
++
++cfg_if! {
++ if #[cfg(target_pointer_width = "64")] {
++ type Elf_Addr = Elf64_Addr;
++ type Elf_Half = Elf64_Half;
++ type Elf_Phdr = Elf64_Phdr;
++ } else if #[cfg(target_pointer_width = "32")] {
++ type Elf_Addr = Elf32_Addr;
++ type Elf_Half = Elf32_Half;
++ type Elf_Phdr = Elf32_Phdr;
++ }
++}
++
++// link.h
++
+ #[cfg_attr(feature = "extra_traits", derive(Debug))]
+ pub enum timezone {}
+ impl ::Copy for timezone {}
+@@ -233,6 +265,43 @@ s! {
+ pub piod_addr: *mut ::c_void,
+ pub piod_len: ::size_t,
+ }
++
++ // elf.h
++
++ pub struct Elf32_Phdr {
++ pub p_type: Elf32_Word,
++ pub p_offset: Elf32_Off,
++ pub p_vaddr: Elf32_Addr,
++ pub p_paddr: Elf32_Addr,
++ pub p_filesz: Elf32_Word,
++ pub p_memsz: Elf32_Word,
++ pub p_flags: Elf32_Word,
++ pub p_align: Elf32_Word,
++ }
++
++ pub struct Elf64_Phdr {
++ pub p_type: Elf64_Word,
++ pub p_flags: Elf64_Word,
++ pub p_offset: Elf64_Off,
++ pub p_vaddr: Elf64_Addr,
++ pub p_paddr: Elf64_Addr,
++ pub p_filesz: Elf64_Xword,
++ pub p_memsz: Elf64_Xword,
++ pub p_align: Elf64_Xword,
++ }
++
++ // link.h
++
++ 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,
++ pub dlpi_adds: ::c_ulonglong,
++ pub dlpi_subs: ::c_ulonglong,
++ pub dlpi_tls_modid: usize,
++ pub dlpi_tls_data: *mut ::c_void,
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -1514,6 +1583,18 @@ extern "C" {
+
+ pub fn ntp_adjtime(buf: *mut timex) -> ::c_int;
+ pub fn ntp_gettime(buf: *mut ntptimeval) -> ::c_int;
++
++ // #include <link.h>
++ 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;
+ }
+
+ #[link(name = "rt")]
+--- vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs.orig 2021-02-10 18:18:38 UTC
++++ vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs
+@@ -11,6 +11,36 @@ pub type vm_size_t = ::uintptr_t;
+ pub type lwpid_t = ::c_uint;
+ pub type shmatt_t = ::c_uint;
+
++// elf.h
++
++pub type Elf32_Addr = u32;
++pub type Elf32_Half = u16;
++pub type Elf32_Lword = u64;
++pub type Elf32_Off = u32;
++pub type Elf32_Sword = i32;
++pub type Elf32_Word = u32;
++
++pub type Elf64_Addr = u64;
++pub type Elf64_Half = u16;
++pub type Elf64_Lword = u64;
++pub type Elf64_Off = u64;
++pub type Elf64_Sword = i32;
++pub type Elf64_Sxword = i64;
++pub type Elf64_Word = u32;
++pub type Elf64_Xword = u64;
++
++cfg_if! {
++ if #[cfg(target_pointer_width = "64")] {
++ type Elf_Addr = Elf64_Addr;
++ type Elf_Half = Elf64_Half;
++ type Elf_Phdr = Elf64_Phdr;
++ } else if #[cfg(target_pointer_width = "32")] {
++ type Elf_Addr = Elf32_Addr;
++ type Elf_Half = Elf32_Half;
++ type Elf_Phdr = Elf32_Phdr;
++ }
++}
++
+ impl siginfo_t {
+ pub unsafe fn si_value(&self) -> ::sigval {
+ #[repr(C)]
+@@ -341,6 +371,42 @@ s! {
+ pub time_state: ::c_int,
+ }
+
++ // elf.h
++
++ pub struct Elf32_Phdr {
++ pub p_type: Elf32_Word,
++ pub p_offset: Elf32_Off,
++ pub p_vaddr: Elf32_Addr,
++ pub p_paddr: Elf32_Addr,
++ pub p_filesz: Elf32_Word,
++ pub p_memsz: Elf32_Word,
++ pub p_flags: Elf32_Word,
++ pub p_align: Elf32_Word,
++ }
++
++ pub struct Elf64_Phdr {
++ pub p_type: Elf64_Word,
++ pub p_flags: Elf64_Word,
++ pub p_offset: Elf64_Off,
++ pub p_vaddr: Elf64_Addr,
++ pub p_paddr: Elf64_Addr,
++ pub p_filesz: Elf64_Xword,
++ pub p_memsz: Elf64_Xword,
++ pub p_align: Elf64_Xword,
++ }
++
++ // link.h
++
++ 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,
++ pub dlpi_adds: ::c_ulonglong,
++ pub dlpi_subs: ::c_ulonglong,
++ pub dlpi_tls_modid: usize,
++ pub dlpi_tls_data: *mut ::c_void,
++ }
+ }
+
+ s_no_extra_traits! {
+@@ -2002,6 +2068,19 @@ extern "C" {
+ needle: *const ::c_void,
+ needlelen: ::size_t,
+ ) -> *mut ::c_void;
++
++ // link.h
++
++ 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;
+ }
+
+ #[link(name = "util")]
+--- vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs.orig 2021-02-10 18:18:38 UTC
++++ vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs
+@@ -16,6 +16,36 @@ pub type pthread_rwlock_t = *mut ::c_void;
+ pub type pthread_rwlockattr_t = *mut ::c_void;
+ pub type caddr_t = *mut ::c_char;
+
++// elf.h
++
++pub type Elf32_Addr = u32;
++pub type Elf32_Half = u16;
++pub type Elf32_Lword = u64;
++pub type Elf32_Off = u32;
++pub type Elf32_Sword = i32;
++pub type Elf32_Word = u32;
++
++pub type Elf64_Addr = u64;
++pub type Elf64_Half = u16;
++pub type Elf64_Lword = u64;
++pub type Elf64_Off = u64;
++pub type Elf64_Sword = i32;
++pub type Elf64_Sxword = i64;
++pub type Elf64_Word = u32;
++pub type Elf64_Xword = u64;
++
++cfg_if! {
++ if #[cfg(target_pointer_width = "64")] {
++ type Elf_Addr = Elf64_Addr;
++ type Elf_Half = Elf64_Half;
++ type Elf_Phdr = Elf64_Phdr;
++ } else if #[cfg(target_pointer_width = "32")] {
++ type Elf_Addr = Elf32_Addr;
++ type Elf_Half = Elf32_Half;
++ type Elf_Phdr = Elf32_Phdr;
++ }
++}
++
+ s! {
+ pub struct glob_t {
+ pub gl_pathc: ::size_t,
+@@ -321,6 +351,38 @@ s! {
+ __shm_ctimensec: c_long,
+ pub shm_internal: *mut ::c_void,
+ }
++
++ // elf.h
++ pub struct Elf32_Phdr {
++ pub p_type: Elf32_Word,
++ pub p_offset: Elf32_Off,
++ pub p_vaddr: Elf32_Addr,
++ pub p_paddr: Elf32_Addr,
++ pub p_filesz: Elf32_Word,
++ pub p_memsz: Elf32_Word,
++ pub p_flags: Elf32_Word,
++ pub p_align: Elf32_Word,
++ }
++
++ pub struct Elf64_Phdr {
++ pub p_type: Elf64_Word,
++ pub p_flags: Elf64_Word,
++ pub p_offset: Elf64_Off,
++ pub p_vaddr: Elf64_Addr,
++ pub p_paddr: Elf64_Addr,
++ pub p_filesz: Elf64_Xword,
++ pub p_memsz: Elf64_Xword,
++ pub p_align: Elf64_Xword,
++ }
++
++ // link.h
++
++ 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,
++ }
+ }
+
+ impl siginfo_t {
+@@ -1482,6 +1544,17 @@ extern "C" {
+ needle: *const ::c_void,
+ needlelen: ::size_t,
+ ) -> *mut ::c_void;
++ // #include <link.h>
++ 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! {
Added: head/lang/rust/files/patch-src_bootstrap_install.rs
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/lang/rust/files/patch-src_bootstrap_install.rs Tue Mar 23 06:39:47 2021 (r569007)
@@ -0,0 +1,17 @@
+Only install docs for the host target
+
+It otherwise wastes significant time (there are a lot of individual
+files) and stages host docs, wasm docs, which unstages the host
+docs first.
+
+--- src/bootstrap/install.rs.orig 2021-03-22 17:05:25 UTC
++++ src/bootstrap/install.rs
+@@ -133,7 +133,7 @@ macro_rules! install {
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-ports-all
mailing list