diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2012-10-24 11:09:28 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2012-10-24 11:09:28 +0000 |
commit | 4f9d22a0b15a371db7df4b41c1633fde25932ff1 (patch) | |
tree | aa6979c634219b862efa215bac762baf06d62365 | |
parent | 35c813e2242319efee1bad5c7cdd6e7e224ce94e (diff) | |
download | binutils-4f9d22a0b15a371db7df4b41c1633fde25932ff1.zip binutils-4f9d22a0b15a371db7df4b41c1633fde25932ff1.tar.gz binutils-4f9d22a0b15a371db7df4b41c1633fde25932ff1.tar.bz2 |
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.
-rw-r--r-- | include/ChangeLog | 5 | ||||
-rw-r--r-- | include/bfdlink.h | 18 | ||||
-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 |
6 files changed, 54 insertions, 25 deletions
diff --git a/include/ChangeLog b/include/ChangeLog index e4b1a2d..d83ca9c 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2012-10-24 H.J. Lu <hongjiu.lu@intel.com> + + * bfdlink.h (bfd_link_info): Add + disable_target_specific_optimizations. + 2012-10-23 Nathan Sidwell <nathan@codesourcery.com> * bfdlink.h (struct bfd_link_info): Add stacksize option. diff --git a/include/bfdlink.h b/include/bfdlink.h index 3ff1c92..bf44dee 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 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 *); |