index : pacman | |
Archlinux32 fork of pacman | gitolite user |
summaryrefslogtreecommitdiff |
author | Allan McRae <allan@archlinux.org> | 2021-03-02 10:53:06 +1000 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2021-03-03 14:35:52 +1000 |
commit | c118a61f62a4b100b01504dfc5611cd08fb9e537 (patch) | |
tree | d1592fa23f633e0d9f077460d8a9204ca1548d67 /scripts | |
parent | 4a0891f49d29458e1b93d95f8121f8096bb02727 (diff) |
-rw-r--r-- | scripts/libmakepkg/tidy/strip.sh.in | 13 |
diff --git a/scripts/libmakepkg/tidy/strip.sh.in b/scripts/libmakepkg/tidy/strip.sh.in index 720b8eb3..ceb2a108 100644 --- a/scripts/libmakepkg/tidy/strip.sh.in +++ b/scripts/libmakepkg/tidy/strip.sh.in @@ -103,6 +103,16 @@ strip_file() { rm -f "$tempfile" } +strip_lto() { + local binary=$1; + + local tempfile=$(mktemp "$binary.XXXXXX") + if strip -R .gnu.lto_* -R .gnu.debuglto_* -N __gnu_lto_v1 "$binary" -o "$tempfile"; then + cat "$tempfile" > "$binary" + fi + rm -f "$tempfile" +} + tidy_strip() { if check_option "strip" "y"; then @@ -121,6 +131,7 @@ tidy_strip() { local binary strip_flags find . -type f -perm -u+w -print0 2>/dev/null | while IFS= read -rd '' binary ; do + local STRIPLTO=0 case "$(LC_ALL=C readelf -h "$binary" 2>/dev/null)" in *Type:*'DYN (Shared object file)'*) # Libraries (.so) or Relocatable binaries strip_flags="$STRIP_SHARED";; @@ -129,6 +140,7 @@ tidy_strip() { *Type:*'REL (Relocatable file)'*) # Libraries (.a) or objects if ar t "$binary" &>/dev/null; then # Libraries (.a) strip_flags="$STRIP_STATIC" + STRIPLTO=1 elif [[ $binary = *'.ko' ]]; then # Kernel module strip_flags="$STRIP_SHARED" else @@ -139,6 +151,7 @@ tidy_strip() { continue ;; esac strip_file "$binary" ${strip_flags} + (( STRIPLTO )) && strip_lto "$binary" done fi } |