Bug 1395286

Summary: elfutils: Support rewriting source file paths in static libraries
Product: [Fedora] Fedora Reporter: Florian Weimer <fweimer>
Component: elfutilsAssignee: Mark Wielaard <mjw>
Status: NEW --- QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: fche, jakub, me, mjw, roland
Target Milestone: ---Keywords: FutureFeature
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On:    
Bug Blocks: 1395280    

Description Florian Weimer 2016-11-15 15:54:30 UTC
To make the debugging information in static libraries more useful when used together with the source files from the -debuginfo package, we need to rewrite the static library to use paths under /usr/src/debug, just as we do while we strip the debugging information from shared objects and applications.

Comment 1 Mark Wielaard 2016-11-15 16:00:19 UTC
This is really part of rpm debugedit. But lets keep it attached to elfutils for now. Currently eu-strip doesn't handle ar archives at all. Although there is some code that appears to iterate through the archive and do the right thing (handle_ar), this code is never used because src/strip.c also contains:

    case ELF_K_AR:
      /* It is not possible to strip the content of an archive direct
         the output to a specific file.  */
      if (unlikely (output_fname != NULL || debug_fname != NULL))
        {
          error (0, 0, gettext ("%s: cannot use -o or -f when stripping archive"),
                 fname);
          result = 1;
        }
      else
        {
          /* We would like to support ar archives, but currently it just
             doesn't work at all since we call elf_clone on the members
             which doesn't really support ar members.
             result = handle_ar (fd, elf, NULL, fname,
                                 preserve_dates ? tv : NULL);
           */
          error (0, 0, gettext ("%s: no support for stripping archive"),
                 fname);
          result = 1;
        }
      break;