Bug 27856 - eu-elfcompress exit code changed to a error if 'Nothing to do'
Summary: eu-elfcompress exit code changed to a error if 'Nothing to do'
Status: RESOLVED FIXED
Alias: None
Product: elfutils
Classification: Unclassified
Component: tools (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Dmitry V. Levin
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-05-12 10:46 UTC by Vitaly Chikunov
Modified: 2021-05-12 23:13 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Last reconfirmed: 2021-05-12 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Chikunov 2021-05-12 10:46:27 UTC
This commit changes behavior of `eu-elfcompress` from what before was success to error - when 'Nothing to do' conditions are meet.

```
commit ed62996defc619d0def86a5ed223a48486b97a70
Author: Mark Wielaard <mark@klomp.org>
Date:   Sat Jul 21 17:07:12 2018 +0200

    elfcompress: Don't rewrite file if no section data needs to be updated.
    
    If the input and output file are the same and no section needs to
    be updated we really don't need to rewrite the file.
    
    Check whether any matching section is already compressed or decompressed.
    Skip the section if it doesn't need to be changed. If no section data
    needs updating end with success without rewriting/updating file.
    
    With --force the file will still always be updated/rewritten even if
    no section data needs to be (de)compressed.
    
    Acked-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
    Signed-off-by: Mark Wielaard <mark@klomp.org>
---
 src/ChangeLog     |  7 +++++++
 src/elfcompress.c | 45 ++++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 49 insertions(+), 3 deletions(-)

```

Is this change of behavior intentional? (Now it breaks debuginfo processing of kernel modules in ALT Linux).

  + eu-elfcompress --verbose ./usr/lib/debug/lib/modules/5.10.35-std-def-alt1/fs/unicode/zunicode.ko.debug
  processing: ./usr/lib/debug/lib/modules/5.10.35-std-def-alt1/fs/zcommon/zcommon.ko.debug
  Nothing to do.
  Command exited with non-zero status 1

Also, exit(-1) is incorrect exit code in general.
Comment 1 Vitaly Chikunov 2021-05-12 10:54:36 UTC
Correction of copy-paste:

+ eu-elfcompress --verbose ./usr/lib/debug/lib/modules/5.10.35-std-def-alt1/fs/unicode/zunicode.ko.debug
processing: ./usr/lib/debug/lib/modules/5.10.35-std-def-alt1/fs/unicode/zunicode.ko.debug
Nothing to do.
xargs: /usr/lib/rpm/process-debuginfo: exited with status 255; aborting
error: Bad exit status from /usr/src/tmp/rpm-tmp.71446 (%install)
Command exited with non-zero status 1
Comment 2 Mark Wielaard 2021-05-12 12:49:26 UTC
Yes, that looks like a unintended bug. The code should have set res = 0 before goto cleanup.
Comment 3 Vitaly Chikunov 2021-05-12 20:43:32 UTC
Excuse me for referencing the wrong commit. It was another copy-paste error.

  0df0e8e Timm Bäder      2021-02-17 09:45 +0100  522│   if (foutput == NULL && get_sections (sections, shnum) == 0)
  ed62996 Mark Wielaard   2018-07-21 17:07 +0200  523│     {
  ed62996 Mark Wielaard   2018-07-21 17:07 +0200  524│       if (verbose > 0)
  ed62996 Mark Wielaard   2018-07-21 17:07 +0200  525│         printf ("Nothing to do.\n");
  ed62996 Mark Wielaard   2018-07-21 17:07 +0200  526│       fnew = NULL;
  c497478 Timm Bäder      2021-03-02 09:05 +0100  527│       goto cleanup;
  ed62996 Mark Wielaard   2018-07-21 17:07 +0200  528│     }
  ed62996 Mark Wielaard   2018-07-21 17:07 +0200  529│

Kudos to Dmitry for the quick fix!
Comment 4 Dmitry V. Levin 2021-05-12 23:13:04 UTC
Fixed by commit 43ac25c2de7ba21fb8f9e4d4db0c01c1408da0b8.