Skip to content
  • Alan Modra's avatar
    PR23611, objcopy is not removing executable relocatable sections · f9853190
    Alan Modra authored
    BFD handles ELF relocation sections in an executable differently to
    relocation sections in a relocatable object.  For a relocatable
    object, BFD carries the relocations as data associated with the
    section to which they apply; The relocation section doesn't appear as
    a separate section.  For an executable, dynamic relocation sections do
    appear as separate sections.  This means that objcopy needs to use
    different strategies when dealing with relocations.
    
    When --remove-relocations was added to objcopy with commit
    d3e5f6c8, objcopy lost the ability to remove dynamic relocation
    sections such as .rela.plt from executables using the option
    "--remove-section=.rela.plt".  This patch reinstates that
    functionality.
    
    I thought it best to keep --remove-relocations as is, rather than
    extending to handle dynamic relocations as per the patch in the PR,
    because executables linked with --emit-relocs may have both dynamic
    and non-dynamic relocations.  In that case --remove-relocataions=* is
    useful to remove all the non-dynamic relocations.
    
    	PR binutils/23611
    	* objcopy.c (handle_remove_section_option): Consider .rela and
    	.rel sections for stripping directly as well as attached to the
    	associated section they relocate.
    	* doc/binutils.texi (remove-relocations): Specify that this
    	option removes non-dynamic relocation sections.
    	* testsuite/binutils-all/objcopy.exp
    	(objcopy_remove_relocations_from_executable): New test.
    f9853190