From 4f9d22a0b15a371db7df4b41c1633fde25932ff1 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Wed, 24 Oct 2012 11:09:28 +0000 Subject: [PATCH] Move disable_target_specific_optimizations to bfd_link_info include/ * bfdlink.h (bfd_link_info): Add disable_target_specific_optimizations. ld/ * ld.h (command_line): Remove disable_target_specific_optimizations. (RELAXATION_DISABLED_BY_DEFAULT): Removed. (RELAXATION_DISABLED_BY_USER): Likewise. (RELAXATION_ENABLED): Likewise. (DISABLE_RELAXATION): Likewise. (ENABLE_RELAXATION): Likewise. * ldmain.c (main): Updated. * ldmain.h (RELAXATION_DISABLED_BY_DEFAULT): New macro. (RELAXATION_DISABLED_BY_USER): Likewise. (RELAXATION_ENABLED): Likewise. (DISABLE_RELAXATION): Likewise. (ENABLE_RELAXATION): Likewise. --- include/ChangeLog | 5 +++++ include/bfdlink.h | 18 ++++++++++++++++++ ld/ChangeLog | 18 ++++++++++++++++++ ld/ld.h | 23 ----------------------- ld/ldmain.c | 4 ++-- ld/ldmain.h | 11 +++++++++++ 6 files changed, 54 insertions(+), 25 deletions(-) diff --git a/include/ChangeLog b/include/ChangeLog index e4b1a2dc53..d83ca9cdbd 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2012-10-24 H.J. Lu + + * bfdlink.h (bfd_link_info): Add + disable_target_specific_optimizations. + 2012-10-23 Nathan Sidwell * bfdlink.h (struct bfd_link_info): Add stacksize option. diff --git a/include/bfdlink.h b/include/bfdlink.h index 3ff1c92849..bf44dee825 100644 --- a/include/bfdlink.h +++ b/include/bfdlink.h @@ -420,6 +420,24 @@ struct bfd_link_info means explicitly zero-sized. */ bfd_signed_vma stacksize; + /* Enable or disable target specific optimizations. + + Not all targets have optimizations to enable. + + Normally these optimizations are disabled by default but some targets + prefer to enable them by default. So this field is a tri-state variable. + The values are: + + zero: Enable the optimizations (either from --relax being specified on + the command line or the backend's before_allocation emulation function. + + positive: The user has requested that these optimizations be disabled. + (Via the --no-relax command line option). + + negative: The optimizations are disabled. (Set when initializing the + args_type structure in ldmain.c:main. */ + signed int disable_target_specific_optimizations; + /* Function callbacks. */ const struct bfd_link_callbacks *callbacks; diff --git a/ld/ChangeLog b/ld/ChangeLog index 870fe1a0b3..4c37e0130f 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,21 @@ +2012-10-24 H.J. Lu + + * ld.h (command_line): Remove + disable_target_specific_optimizations. + (RELAXATION_DISABLED_BY_DEFAULT): Removed. + (RELAXATION_DISABLED_BY_USER): Likewise. + (RELAXATION_ENABLED): Likewise. + (DISABLE_RELAXATION): Likewise. + (ENABLE_RELAXATION): Likewise. + + * ldmain.c (main): Updated. + + * ldmain.h (RELAXATION_DISABLED_BY_DEFAULT): New macro. + (RELAXATION_DISABLED_BY_USER): Likewise. + (RELAXATION_ENABLED): Likewise. + (DISABLE_RELAXATION): Likewise. + (ENABLE_RELAXATION): Likewise. + 2012-10-23 Nathan Sidwell * ld.texinfo (stack-size): New option. diff --git a/ld/ld.h b/ld/ld.h index b8273a42e6..d527885ab4 100644 --- a/ld/ld.h +++ b/ld/ld.h @@ -149,29 +149,6 @@ typedef struct { /* 1 => do not assign addresses to common symbols. */ bfd_boolean inhibit_common_definition; - /* Enable or disable target specific optimizations. - - Not all targets have optimizations to enable. - - Normally these optimizations are disabled by default but some targets - prefer to enable them by default. So this field is a tri-state variable. - The values are: - - zero: Enable the optimizations (either from --relax being specified on - the command line or the backend's before_allocation emulation function. - - positive: The user has requested that these optimizations be disabled. - (Via the --no-relax command line option). - - negative: The optimizations are disabled. (Set when initializing the - args_type structure in ldmain.c:main. */ - signed int disable_target_specific_optimizations; -#define RELAXATION_DISABLED_BY_DEFAULT (command_line.disable_target_specific_optimizations < 0) -#define RELAXATION_DISABLED_BY_USER (command_line.disable_target_specific_optimizations > 0) -#define RELAXATION_ENABLED (command_line.disable_target_specific_optimizations == 0) -#define DISABLE_RELAXATION do { command_line.disable_target_specific_optimizations = 1; } while (0) -#define ENABLE_RELAXATION do { command_line.disable_target_specific_optimizations = 0; } while (0) - /* If TRUE, build MIPS embedded PIC relocation tables in the output file. */ bfd_boolean embedded_relocs; diff --git a/ld/ldmain.c b/ld/ldmain.c index a784670ad8..3ba19b9fb4 100644 --- a/ld/ldmain.c +++ b/ld/ldmain.c @@ -260,11 +260,11 @@ main (int argc, char **argv) config.make_executable = TRUE; config.magic_demand_paged = TRUE; config.text_read_only = TRUE; + link_info.disable_target_specific_optimizations = -1; command_line.warn_mismatch = TRUE; command_line.warn_search_mismatch = TRUE; command_line.check_section_addresses = -1; - command_line.disable_target_specific_optimizations = -1; /* We initialize DEMANGLING based on the environment variable COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the @@ -954,7 +954,7 @@ multiple_definition (struct bfd_link_info *info, if (RELAXATION_ENABLED) { einfo (_("%P: Disabling relaxation: it will not work with multiple definitions\n")); - command_line.disable_target_specific_optimizations = -1; + link_info.disable_target_specific_optimizations = -1; } return TRUE; diff --git a/ld/ldmain.h b/ld/ldmain.h index 4d6bb04000..69928f8207 100644 --- a/ld/ldmain.h +++ b/ld/ldmain.h @@ -39,6 +39,17 @@ extern const char *output_filename; extern struct bfd_link_info link_info; extern int overflow_cutoff_limit; +#define RELAXATION_DISABLED_BY_DEFAULT \ + (link_info.disable_target_specific_optimizations < 0) +#define RELAXATION_DISABLED_BY_USER \ + (link_info.disable_target_specific_optimizations > 0) +#define RELAXATION_ENABLED \ + (link_info.disable_target_specific_optimizations == 0) +#define DISABLE_RELAXATION \ + do { link_info.disable_target_specific_optimizations = 1; } while (0) +#define ENABLE_RELAXATION \ + do { link_info.disable_target_specific_optimizations = 0; } while (0) + extern void add_ysym (const char *); extern void add_wrap (const char *); extern void add_ignoresym (struct bfd_link_info *, const char *); -- 2.34.1