aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2012-10-24 11:09:27 +0000
committerH.J. Lu <hjl.tools@gmail.com>2012-10-24 11:09:27 +0000
commitbba868954a8cff7ace8922ee8c6fe95cdb068ecf (patch)
tree5cbe5cafdf591446725302499f4aad8258814740
parent6d511a02cdf3a78ab855b0b2125250a78158d873 (diff)
downloadbinutils-bba868954a8cff7ace8922ee8c6fe95cdb068ecf.tar.gz
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/ChangeLog5
-rw-r--r--include/bfdlink.h18
-rw-r--r--ld/ChangeLog18
-rw-r--r--ld/ld.h23
-rw-r--r--ld/ldmain.c4
-rw-r--r--ld/ldmain.h11
6 files changed, 54 insertions, 25 deletions
diff --git a/include/ChangeLog b/include/ChangeLog
index e4b1a2dc5..d83ca9cdb 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 3ff1c9284..bf44dee82 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 870fe1a0b..4c37e0130 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.
diff --git a/ld/ld.h b/ld/ld.h
index b8273a42e..d527885ab 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 a784670ad..3ba19b9fb 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 4d6bb0400..69928f820 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 *);