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.
This commit is contained in:
H.J. Lu 2012-10-24 11:09:28 +00:00
parent 35c813e224
commit 4f9d22a0b1
6 changed files with 54 additions and 25 deletions

View File

@ -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.

View File

@ -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;

View File

@ -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.

23
ld/ld.h
View File

@ -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;

View File

@ -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;

View File

@ -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 *);