forked from Imagelibrary/binutils-gdb
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:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user