mach-o: add page_size to backend data.
This is preliminary work to layout executables. bfd/ * mach-o.h (bfd_mach_o_backend_data): Add page_size field. * mach-o-target.c: Check TARGET_PAGESIZE is defined. (TARGET_NAME_BACKEND): Add TARGET_PAGESIZE. * mach-o.c (TARGET_PAGESIZE): Define and undefined for each targets declared. * mach-o-x86-64.c (TARGET_PAGESIZE): Define. * mach-o-i386.c (TARGET_PAGESIZE): Define.
This commit is contained in:
parent
452216ab09
commit
4384b28422
6 changed files with 24 additions and 0 deletions
|
@ -1,3 +1,13 @@
|
|||
2014-04-18 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* mach-o.h (bfd_mach_o_backend_data): Add page_size field.
|
||||
* mach-o-target.c: Check TARGET_PAGESIZE is defined.
|
||||
(TARGET_NAME_BACKEND): Add TARGET_PAGESIZE.
|
||||
* mach-o.c (TARGET_PAGESIZE): Define and undefined for
|
||||
each targets declared.
|
||||
* mach-o-x86-64.c (TARGET_PAGESIZE): Define.
|
||||
* mach-o-i386.c (TARGET_PAGESIZE): Define.
|
||||
|
||||
2014-04-18 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* mach-o.c (bfd_mach_o_write_thread)
|
||||
|
|
|
@ -397,6 +397,7 @@ const mach_o_segment_name_xlat mach_o_i386_segsec_names_xlat[] =
|
|||
#define TARGET_NAME mach_o_i386_vec
|
||||
#define TARGET_STRING "mach-o-i386"
|
||||
#define TARGET_ARCHITECTURE bfd_arch_i386
|
||||
#define TARGET_PAGESIZE 4096
|
||||
#define TARGET_BIG_ENDIAN 0
|
||||
#define TARGET_ARCHIVE 0
|
||||
#define TARGET_PRIORITY 0
|
||||
|
|
|
@ -85,6 +85,10 @@
|
|||
#error TARGET_ARCHIVE must be defined
|
||||
#endif /* TARGET_ARCHIVE */
|
||||
|
||||
#ifndef TARGET_PAGESIZE
|
||||
#error TARGET_PAGESIZE must be defined
|
||||
#endif
|
||||
|
||||
#if ((TARGET_ARCHIVE) && (! TARGET_BIG_ENDIAN))
|
||||
#error Mach-O fat files must always be big-endian.
|
||||
#endif /* ((TARGET_ARCHIVE) && (! TARGET_BIG_ENDIAN)) */
|
||||
|
@ -92,6 +96,7 @@
|
|||
static const bfd_mach_o_backend_data TARGET_NAME_BACKEND =
|
||||
{
|
||||
TARGET_ARCHITECTURE,
|
||||
TARGET_PAGESIZE,
|
||||
bfd_mach_o_swap_reloc_in,
|
||||
bfd_mach_o_swap_reloc_out,
|
||||
bfd_mach_o_print_thread,
|
||||
|
|
|
@ -356,6 +356,7 @@ const mach_o_segment_name_xlat mach_o_x86_64_segsec_names_xlat[] =
|
|||
#define TARGET_NAME mach_o_x86_64_vec
|
||||
#define TARGET_STRING "mach-o-x86-64"
|
||||
#define TARGET_ARCHITECTURE bfd_arch_i386
|
||||
#define TARGET_PAGESIZE 4096
|
||||
#define TARGET_BIG_ENDIAN 0
|
||||
#define TARGET_ARCHIVE 0
|
||||
#define TARGET_PRIORITY 0
|
||||
|
|
|
@ -5084,6 +5084,7 @@ bfd_boolean bfd_mach_o_free_cached_info (bfd *abfd)
|
|||
#define TARGET_NAME mach_o_be_vec
|
||||
#define TARGET_STRING "mach-o-be"
|
||||
#define TARGET_ARCHITECTURE bfd_arch_unknown
|
||||
#define TARGET_PAGESIZE 1
|
||||
#define TARGET_BIG_ENDIAN 1
|
||||
#define TARGET_ARCHIVE 0
|
||||
#define TARGET_PRIORITY 1
|
||||
|
@ -5092,6 +5093,7 @@ bfd_boolean bfd_mach_o_free_cached_info (bfd *abfd)
|
|||
#undef TARGET_NAME
|
||||
#undef TARGET_STRING
|
||||
#undef TARGET_ARCHITECTURE
|
||||
#undef TARGET_PAGESIZE
|
||||
#undef TARGET_BIG_ENDIAN
|
||||
#undef TARGET_ARCHIVE
|
||||
#undef TARGET_PRIORITY
|
||||
|
@ -5099,6 +5101,7 @@ bfd_boolean bfd_mach_o_free_cached_info (bfd *abfd)
|
|||
#define TARGET_NAME mach_o_le_vec
|
||||
#define TARGET_STRING "mach-o-le"
|
||||
#define TARGET_ARCHITECTURE bfd_arch_unknown
|
||||
#define TARGET_PAGESIZE 1
|
||||
#define TARGET_BIG_ENDIAN 0
|
||||
#define TARGET_ARCHIVE 0
|
||||
#define TARGET_PRIORITY 1
|
||||
|
@ -5108,6 +5111,7 @@ bfd_boolean bfd_mach_o_free_cached_info (bfd *abfd)
|
|||
#undef TARGET_NAME
|
||||
#undef TARGET_STRING
|
||||
#undef TARGET_ARCHITECTURE
|
||||
#undef TARGET_PAGESIZE
|
||||
#undef TARGET_BIG_ENDIAN
|
||||
#undef TARGET_ARCHIVE
|
||||
#undef TARGET_PRIORITY
|
||||
|
@ -5130,6 +5134,7 @@ bfd_boolean bfd_mach_o_free_cached_info (bfd *abfd)
|
|||
#define TARGET_NAME mach_o_fat_vec
|
||||
#define TARGET_STRING "mach-o-fat"
|
||||
#define TARGET_ARCHITECTURE bfd_arch_unknown
|
||||
#define TARGET_PAGESIZE 1
|
||||
#define TARGET_BIG_ENDIAN 1
|
||||
#define TARGET_ARCHIVE 1
|
||||
#define TARGET_PRIORITY 0
|
||||
|
@ -5139,6 +5144,7 @@ bfd_boolean bfd_mach_o_free_cached_info (bfd *abfd)
|
|||
#undef TARGET_NAME
|
||||
#undef TARGET_STRING
|
||||
#undef TARGET_ARCHITECTURE
|
||||
#undef TARGET_PAGESIZE
|
||||
#undef TARGET_BIG_ENDIAN
|
||||
#undef TARGET_ARCHIVE
|
||||
#undef TARGET_PRIORITY
|
||||
|
|
|
@ -719,6 +719,7 @@ bfd_mach_o_section_data_for_bfd_name (bfd *, const char *, const char **);
|
|||
typedef struct bfd_mach_o_backend_data
|
||||
{
|
||||
enum bfd_architecture arch;
|
||||
bfd_vma page_size;
|
||||
bfd_boolean (*_bfd_mach_o_swap_reloc_in)(arelent *, bfd_mach_o_reloc_info *);
|
||||
bfd_boolean (*_bfd_mach_o_swap_reloc_out)(arelent *, bfd_mach_o_reloc_info *);
|
||||
bfd_boolean (*_bfd_mach_o_print_thread)(bfd *, bfd_mach_o_thread_flavour *,
|
||||
|
|
Loading…
Reference in a new issue