This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH][ARM] Fix output local symbol count after relaxation.


Hi,

    This patch adds code to fix output local symbol count fo an object
after relaxation.  This is required if one of its input sections is
discarded or shrunk by EXIDX entry merging.  To avoid unnecessary
updating, we mark an object if an EXIDX input section of it is either
dropped or relaxed.  At the end of relaxation, we update the output
local symbol counts of such marked objects.  This done only for ARM in
the relaxation hook and does not affect performance of other targets.

-Doug

2010-01-28  Doug Kwan  <dougkwan@google.com>

        * arm.cc (Arm_relobj::Arm_relobj): Initialize new data member
        output_local_symbol_count_needs_update_.
        (Arm_relobj::output_local_symbol_count_needs_update,
         Arm_relobj::set_output_local_symbol_count_needs_update,
         Arm_relobj::update_output_local_symbol_count): New methods.
        (Arm_relobj::output_local_symbol_count_needs_update_): New data
        member.
        (Arm_exidx_cantunwind::do_fixed_endian_write): Write address
        of pointed function as in a R_ARM_PREL31 relocation.
        (Arm_output_section<big_endian>::fix_exidx_coverage): Mark objects
        for output local symbol count updating.
        (Target_arm::do_relax): Update output local symbol counts in objects
        if necessary.
        * object.h (Sized_relobj::set_output_local_symbol_count): New method.

Attachment: patch-update-local-count.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]