You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.6 KiB
86 lines
2.6 KiB
--- rpm-4.11.3/scripts/find-debuginfo.sh.old 2019-01-02 13:14:10.283068553 +0100 |
|
+++ rpm-4.11.3/scripts/find-debuginfo.sh 2019-03-21 09:36:06.196400883 +0100 |
|
@@ -3,6 +3,7 @@ |
|
#for inclusion in an rpm spec file. |
|
# |
|
# Usage: find-debuginfo.sh [--strict-build-id] [-g] [-r] [-m] |
|
+# [--g-libs] |
|
# [-o debugfiles.list] |
|
# [--run-dwz] [--dwz-low-mem-die-limit N] |
|
# [--dwz-max-die-limit N] |
|
@@ -10,6 +11,8 @@ |
|
# [builddir] |
|
# |
|
# The -g flag says to use strip -g instead of full strip on DSOs or EXEs. |
|
+# The --g-libs flag says to use strip -g instead of full strip ONLY on DSOs. |
|
+# Options -g and --g-libs are mutually exclusive. |
|
# The --strict-build-id flag says to exit with failure status if |
|
# any ELF binary processed fails to contain a build-id note. |
|
# The -r flag says to use eu-strip --reloc-debug-sections. |
|
@@ -32,6 +35,9 @@ |
|
# With -g arg, pass it to strip on libraries or executables. |
|
strip_g=false |
|
|
|
+# With --g-libs arg, pass it to strip on libraries. |
|
+strip_glibs=false |
|
+ |
|
# with -r arg, pass --reloc-debug-sections to eu-strip. |
|
strip_r=false |
|
|
|
@@ -65,6 +71,9 @@ |
|
dwz_max_die_limit=$2 |
|
shift |
|
;; |
|
+ --g-libs) |
|
+ strip_glibs=true |
|
+ ;; |
|
-g) |
|
strip_g=true |
|
;; |
|
@@ -100,6 +109,11 @@ |
|
shift |
|
done |
|
|
|
+if ("$strip_g" = "true") && ("$strip_glibs" = "true"); then |
|
+ echo >&2 "*** ERROR: -g and --g-libs cannot be used together" |
|
+ exit 2 |
|
+fi |
|
+ |
|
i=0 |
|
while ((i < nout)); do |
|
outs[$i]="$BUILDDIR/${outs[$i]}" |
|
@@ -132,6 +146,9 @@ |
|
application/x-sharedlib*) g=-g ;; |
|
application/x-executable*) g=-g ;; |
|
esac |
|
+ $strip_glibs && case "$(file -bi "$2")" in |
|
+ application/x-sharedlib*) g=-g ;; |
|
+ esac |
|
eu-strip --remove-comment $r $g -f "$1" "$2" || exit |
|
chmod 444 "$1" || exit |
|
} |
|
@@ -317,7 +334,23 @@ |
|
chmod u-w "$f" |
|
fi |
|
|
|
- $include_minidebug && add_minidebug "${debugfn}" "$f" |
|
+ # strip -g implies we have full symtab, don't add mini symtab in that case. |
|
+ # It only makes sense to add a minisymtab for executables and shared |
|
+ # libraries. Other executable ELF files (like kernel modules) don't need it. |
|
+ if [ "$include_minidebug" = "true" -a "$strip_g" = "false" ]; then |
|
+ skip_mini=true |
|
+ if [ "$strip_glibs" = "false" ]; then |
|
+ case "$(file -bi "$f")" in |
|
+ application/x-sharedlib*) skip_mini=false ;; |
|
+ esac |
|
+ fi |
|
+ case "$(file -bi "$f")" in |
|
+ application/x-sharedlib*) skip_mini=false ;; |
|
+ application/x-executable*) skip_mini=false ;; |
|
+ application/x-pie-executable*) skip_mini=false ;; |
|
+ esac |
|
+ $skip_mini || add_minidebug "${debugfn}" "$f" |
|
+ fi |
|
|
|
echo "./${f#$RPM_BUILD_ROOT}" >> "$ELFBINSFILE" |
|
|
|
|