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]

[gold][patch]Fold only ctors and dtors with --icf=safe


Hi,

   I am committing this patch to gold to fold only ctors and dtors
with ICF as folding functions could be unsafe when function pointer
comparisons are made.

       * gc.h (gc_process_relocs): Check if icf is enabled using new
       function.
       * gold.cc (queue_initial_tasks): Likewise.
       (queue_middle_tasks): Likewise.
       * object.cc (do_layout): Likewise.
       * symtab.cc (is_section_folded): Likewise.
       * main.cc (main): Likewise.
       * reloc.cc (Read_relocs::run): Likewise.
       (Sized_relobj::do_scan_relocs): Likewise.
       * icf.cc (is_function_ctor_or_dtor): New function.
       (Icf::find_identical_sections): Check if function is ctor or dtor when
       safe icf is chosen.
       * options.h (General_options::icf): Change option to be an enum.
       (Icf): New enum.
       (icf_enabled): New method.
       (icf_safe_folding): New method.
       (set_icf_status): New method.
       (icf_status_): New variable.
       * (options.cc) (General_options::finalize): Set icf_status_.
       * testsuite/Makefile.am: Add commands to build icf_safe_test. Modify
       icf_test and icf_keep_unique_test to use the --icf enum flag.
       * testsuite/icf_safe_test.sh: New file.
       * testsuite/icf_safe_test.cc: New file.

Thanks,
-Sriraman.

Attachment: icf_safe_patch.txt
Description: Text document


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