diff options
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 18 | ||||
-rw-r--r-- | ld/ld.h | 23 | ||||
-rw-r--r-- | ld/ldmain.c | 4 | ||||
-rw-r--r-- | ld/ldmain.h | 11 |
4 files changed, 31 insertions, 25 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 870fe1a..4c37e01 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,21 @@ +2012-10-24 H.J. Lu <hongjiu.lu@intel.com> + + * 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 <nathan@codesourcery.com> * ld.texinfo (stack-size): New option. @@ -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 a784670..3ba19b9 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 4d6bb04..69928f8 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 *); |