Remove link_info.pic

Adding type_pie to output_type allows us to remove link_info.pic and
with some reordering of the enum, produces better code.

include/
	* bfdlink.h (enum output_type): Delete type_executable, add type_pde
	and type_pie.  Reorder.
	(struct bfd_link_info): Delete pic field.
	(bfd_link_executable, bfd_link_pde, bfd_link_pie, bfd_link_pic): Adjust.
ld/
	* emultempl/aix.em: Don't set link_info.pic.
	* emultempl/pe.em: Likewise.
	* emultempl/pep.em: Likewise.
	* emultempl/sunos.em: Likewise.
	* lexsup.c (parse_args): Likewise.  Set type_pie for -pie.
	* plugin.c (set_tv_header <LDPT_LINKER_OUTPUT>): Simplify.
This commit is contained in:
Alan Modra
2015-08-19 12:32:54 +09:30
parent 3cbc1e5e68
commit 64d94ba01a
9 changed files with 30 additions and 29 deletions

View File

@@ -263,19 +263,18 @@ struct bfd_elf_version_tree;
enum output_type
{
type_executable = 0,
type_pde,
type_relocatable,
type_pie,
type_dll,
type_relocatable
};
#define bfd_link_executable(info) ((info)->type == type_executable)
#define bfd_link_pde(info) ((info)->type == type_pde)
#define bfd_link_dll(info) ((info)->type == type_dll)
#define bfd_link_relocatable(info) ((info)->type == type_relocatable)
#define bfd_link_pic(info) (info)->pic
#define bfd_link_pie(info) (bfd_link_executable (info) \
&& bfd_link_pic (info))
#define bfd_link_pde(info) (bfd_link_executable (info) \
&& !bfd_link_pic (info))
#define bfd_link_pie(info) ((info)->type == type_pie)
#define bfd_link_executable(info) (bfd_link_pde (info) || bfd_link_pie (info))
#define bfd_link_pic(info) (bfd_link_dll (info) || bfd_link_pie (info))
/* This structure holds all the information needed to communicate
between BFD and the linker when doing a link. */
@@ -285,9 +284,6 @@ struct bfd_link_info
/* Output type. */
ENUM_BITFIELD (output_type) type : 2;
/* TRUE if BFD should generate a position independent object. */
unsigned int pic : 1;
/* TRUE if BFD should pre-bind symbols in a shared object. */
unsigned int symbolic: 1;