support/scripts/fix-rpath: exclude /lib/firmware in the target
PATCH 1/1 support/scripts/fix-rpath: exclude /lib/firmware in the target
The /lib/firmware directory contains random firmware for various devices. It happens that some of them might be or appear to be ELF files, but they shouldn't be checked by fix-rpath. For example, one of the Qualcomm VPU firmware file appears to be an ELF file, but patchelf isn't happy about it:
$ ./output/host/bin/patchelf --print-rpath output/target/lib/firmware/qcom/venus-4.2/venus.b00 patchelf: patchelf.cc:387: void ElfFile<Elf_Ehdr, Elf_Phdr, Elf_Shdr, Elf_Addr, Elf_Off, Elf_Dyn, Elf_Sym>::parse() [with Elf_Ehdr = Elf32_Ehdr; Elf_Phdr = Elf32_Phdr; Elf_Shdr = Elf32_Shdr; Elf_Addr = unsigned int; Elf_Off = unsigned int; Elf_Dyn = Elf32_Dyn; Elf_Sym = Elf32_Sym]: Assertion `shstrtabIndex < shdrs.size()' failed. Aborted (core dumped)
Even though patchelf definitely shouldn't crash, it anyway doesn't make sense to check ELF files in /lib/firmware, so let's exclude this directory from our check.
--- support/scripts/fix-rpath | 6 ++++++ 1 file changed, 6 insertions(+)
support/scripts/fix-rpath +6 -0
@@ -56,6 +56,7 @@ EOF # ELF files should not be in these sub-directories HOST_EXCLUDEPATHS="/share/terminfo" STAGING_EXCLUDEPATHS="/usr/include /usr/share/terminfo" +TARGET_EXCLUDEPATHS="/lib/firmware" main() { local rootdir
@@ -106,6 +107,11 @@ main() { target) rootdir="${TARGET_DIR}" + + for excludepath in ${TARGET_EXCLUDEPATHS}; do + find_args+=( "-path" "${TARGET_DIR}""${excludepath}" "-prune" "-o" ) + done + # we don't want $ORIGIN-based rpaths but absolute paths without rootdir. # we also want to remove rpaths pointing to /lib or /usr/lib. sanitize_extra_args+=( "--no-standard-lib-dirs" )
Signature · 1 line
2.14.3
PATCH 1/1 support/scripts/fix-rpath: exclude /lib/firmware in the target
Thomas, All,
On 2018-04-12 13:50 +0200, Thomas Petazzoni spake thusly:
Quoted 10 lines
The
/lib/firmwaredirectory contains random firmware for various devices. It happens that some of them might be or appear to be ELF files, but they shouldn't be checked by fix-rpath. For example, one of the Qualcomm VPU firmware file appears to be an ELF file, but patchelf isn't happy about it:$ ./output/host/bin/patchelf --print-rpath output/target/lib/firmware/qcom/venus-4.2/venus.b00 patchelf: patchelf.cc:387: void ElfFile<Elf_Ehdr, Elf_Phdr, Elf_Shdr, Elf_Addr, Elf_Off, Elf_Dyn, Elf_Sym>::parse() [with Elf_Ehdr = Elf32_Ehdr; Elf_Phdr = Elf32_Phdr; Elf_Shdr = Elf32_Shdr; Elf_Addr = unsigned int; Elf_Off = unsigned int; Elf_Dyn = Elf32_Dyn; Elf_Sym = Elf32_Sym]: Assertion `shstrtabIndex < shdrs.size()' failed. Aborted (core dumped)
Quoted 5 lines
Even though patchelf definitely shouldn't crash, it anyway doesn't make sense to check ELF files in
/lib/firmware, so let's exclude this directory from our check.Signed-off-by Thomas Petazzoni <[email protected]>
Regards,
Yann E. MORIN.
Quoted 31 lines
--- support/scripts/fix-rpath | 6 ++++++ 1 file changed, 6 insertions(+)support/scripts/fix-rpath +6
-0@@ -56,6 +56,7 @@ EOF # ELF files should not be in these sub-directories HOST_EXCLUDEPATHS="/share/terminfo" STAGING_EXCLUDEPATHS="/usr/include /usr/share/terminfo" +TARGET_EXCLUDEPATHS="/lib/firmware" main() { local rootdir@@ -106,6 +107,11 @@ main() { target) rootdir="${TARGET_DIR}" + + for excludepath in ${TARGET_EXCLUDEPATHS}; do + find_args+=( "-path" "${TARGET_DIR}""${excludepath}" "-prune" "-o" ) + done + # we don't want $ORIGIN-based rpaths but absolute paths without rootdir. # we also want to remove rpaths pointing to /lib or /usr/lib. sanitize_extra_args+=( "--no-standard-lib-dirs" )Signature · 1 line
2.14.3
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
Thomas Petazzoni
AppliedPATCH 1/1 support/scripts/fix-rpath: exclude /lib/firmware in the target
In reply to Thomas PetazzoniHello,
Quoted 10 lines · Thomas Petazzoni
The
/lib/firmwaredirectory contains random firmware for various devices. It happens that some of them might be or appear to be ELF files, but they shouldn't be checked by fix-rpath. For example, one of the Qualcomm VPU firmware file appears to be an ELF file, but patchelf isn't happy about it:$ ./output/host/bin/patchelf --print-rpath output/target/lib/firmware/qcom/venus-4.2/venus.b00 patchelf: patchelf.cc:387: void ElfFile<Elf_Ehdr, Elf_Phdr, Elf_Shdr, Elf_Addr, Elf_Off, Elf_Dyn, Elf_Sym>::parse() [with Elf_Ehdr = Elf32_Ehdr; Elf_Phdr = Elf32_Phdr; Elf_Shdr = Elf32_Shdr; Elf_Addr = unsigned int; Elf_Off = unsigned int; Elf_Dyn = Elf32_Dyn; Elf_Sym = Elf32_Sym]: Assertion `shstrtabIndex < shdrs.size()' failed. Aborted (core dumped)
Quoted 8 lines
Even though patchelf definitely shouldn't crash, it anyway doesn't make sense to check ELF files in
/lib/firmware, so let's exclude this directory from our check.Signed-off-by Thomas Petazzoni <[email protected]>--- support/scripts/fix-rpath | 6 ++++++ 1 file changed, 6 insertions(+)
Applied to master, thanks.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com
PATCH 1/1 support/scripts/fix-rpath: exclude /lib/firmware in the target
In reply to Thomas PetazzoniQuoted 12 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Thomas" == Thomas Petazzoni <[email protected]> writes:
The
/lib/firmwaredirectory contains random firmware for various devices. It happens that some of them might be or appear to be ELF files, but they shouldn't be checked by fix-rpath. For example, one of the Qualcomm VPU firmware file appears to be an ELF file, but patchelf isn't happy about it:$ ./output/host/bin/patchelf --print-rpath output/target/lib/firmware/qcom/venus-4.2/venus.b00 patchelf: patchelf.cc:387: void ElfFile<Elf_Ehdr, Elf_Phdr, Elf_Shdr, Elf_Addr, Elf_Off, Elf_Dyn, Elf_Sym>::parse() [with Elf_Ehdr = Elf32_Ehdr; Elf_Phdr = Elf32_Phdr; Elf_Shdr = Elf32_Shdr; Elf_Addr = unsigned int; Elf_Off = unsigned int; Elf_Dyn = Elf32_Dyn; Elf_Sym = Elf32_Sym]: Assertion `shstrtabIndex < shdrs.size()' failed. Aborted (core dumped)
Quoted 5 lines
Even though patchelf definitely shouldn't crash, it anyway doesn't make sense to check ELF files in
/lib/firmware, so let's exclude this directory from our check.Signed-off-by Thomas Petazzoni <[email protected]>
Committed to 2018.02.x, thanks.
Signature · 1 line
Bye, Peter Korsgaard