diff options
author | merakor <cem@ckyln.com> | 2020-05-28 12:31:04 +0000 |
---|---|---|
committer | merakor <cem@ckyln.com> | 2020-05-28 12:31:04 +0000 |
commit | c5ef3ea82ab4b4c15b2f64053f39227039e5dbcd (patch) | |
tree | 4940d2e247b80b8c885f42e0fe9a4d55e2083a2e | |
parent | 3e750af24018ea910ef2c04f4eccfe03ec405a55 (diff) | |
download | cpt-c5ef3ea82ab4b4c15b2f64053f39227039e5dbcd.tar.gz |
kiss: switch to POSIX od as well.
FossilOrigin-Name: 2c1751cff69369be953c903104ddfce893096bea52758febd894ade4613fb929
-rwxr-xr-x | kiss | 32 |
1 files changed, 21 insertions, 11 deletions
@@ -451,19 +451,29 @@ pkg_strip() { log "$1" "Stripping binaries and libraries" - # Strip only files matching the below ELF types. - # NOTE: 'readelf' is used in place of 'file' as - # it allows us to remove 'file' from the - # core repositories altogether. find "$pkg_dir/$1" -type f | while read -r file; do - case $(readelf -h "$file") in - *" DYN "*) strip_opt=unneeded ;; - *" EXEC "*) strip_opt=all ;; - *" REL "*) strip_opt=debug ;; - *) continue - esac + case $(od -A o -t c -N 18 "$file") in + # REL (object files (.o), static libraries (.a)). + *177*E*L*F*0000020\ 001\ *|*\!*\<*a*r*c*h*\>*) + strip -g -R .comment -R .note "$file" + strip_opt=DEBUG + ;; + + # EXEC (static binaries). + *177*E*L*F*0000020\ 002\ *) + strip -s -R .comment -R .note "$file" + strip_opt=ALL + ;; - strip "--strip-$strip_opt" "$file" && + # DYN (shared libraries, dynamic binaries). + # Shared libraries keep global symbols in a separate ELF section + # called '.dynsym'. '--strip-all/-s' does not touch the dynamic + # symbol entries which makes this safe to do. + *177*E*L*F*0000020\ 003\ *) + strip -s -R .comment -R .note "$file" + strip_opt=UNNEEDED + ;; + esac printf 'Stripped %10s %s\n' "($strip_opt)" "${file##$pkg_dir/$1}" done 2>/dev/null ||: } |