Reorganise struct bfd
for better packing. Removes a field and a flag that are never set. bfd/ * bfd.c (struct bfd): Reorganise for better packing. Delete "ifd" field. Make "format", "direction" and "flags" bitfields. (HAS_LOAD_PAGE): Delete, renumber following flags. * bfd-in2.h: Regenerate. * coff-tic4x.c: Remove HAS_LOAD_PAGE from extra flags in target vecs. binutils/ * objdump.c (dump_bfd_header): Don't print HAS_LOAD_PAGE.
This commit is contained in:
parent
7341d5e22f
commit
b6a1c03a95
@ -1,3 +1,11 @@
|
||||
2014-07-01 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* bfd.c (struct bfd): Reorganise for better packing. Delete
|
||||
"ifd" field. Make "format", "direction" and "flags" bitfields.
|
||||
(HAS_LOAD_PAGE): Delete, renumber following flags.
|
||||
* bfd-in2.h: Regenerate.
|
||||
* coff-tic4x.c: Remove HAS_LOAD_PAGE from extra flags in target vecs.
|
||||
|
||||
2014-07-01 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elf64-ppc.c (ppc_stub_type): Add ppc_stub_global_entry.
|
||||
|
112
bfd/bfd-in2.h
112
bfd/bfd-in2.h
@ -6226,9 +6226,6 @@ enum bfd_direction
|
||||
|
||||
struct bfd
|
||||
{
|
||||
/* A unique identifier of the BFD */
|
||||
unsigned int id;
|
||||
|
||||
/* The filename the application opened the BFD with. */
|
||||
const char *filename;
|
||||
|
||||
@ -6251,17 +6248,17 @@ struct bfd
|
||||
/* File modified time, if mtime_set is TRUE. */
|
||||
long mtime;
|
||||
|
||||
/* Reserved for an unimplemented file locking extension. */
|
||||
int ifd;
|
||||
/* A unique identifier of the BFD */
|
||||
unsigned int id;
|
||||
|
||||
/* The format which belongs to the BFD. (object, core, etc.) */
|
||||
bfd_format format;
|
||||
ENUM_BITFIELD (bfd_format) format : 3;
|
||||
|
||||
/* The direction with which the BFD was opened. */
|
||||
enum bfd_direction direction;
|
||||
ENUM_BITFIELD (bfd_direction) direction : 2;
|
||||
|
||||
/* Format_specific flags. */
|
||||
flagword flags;
|
||||
flagword flags : 17;
|
||||
|
||||
/* Values that may appear in the flags field of a BFD. These also
|
||||
appear in the object_flags field of the bfd_target structure, where
|
||||
@ -6320,26 +6317,23 @@ struct bfd
|
||||
struct. */
|
||||
#define BFD_IN_MEMORY 0x800
|
||||
|
||||
/* The sections in this BFD specify a memory page. */
|
||||
#define HAS_LOAD_PAGE 0x1000
|
||||
|
||||
/* This BFD has been created by the linker and doesn't correspond
|
||||
to any input file. */
|
||||
#define BFD_LINKER_CREATED 0x2000
|
||||
#define BFD_LINKER_CREATED 0x1000
|
||||
|
||||
/* This may be set before writing out a BFD to request that it
|
||||
be written using values for UIDs, GIDs, timestamps, etc. that
|
||||
will be consistent from run to run. */
|
||||
#define BFD_DETERMINISTIC_OUTPUT 0x4000
|
||||
#define BFD_DETERMINISTIC_OUTPUT 0x2000
|
||||
|
||||
/* Compress sections in this BFD. */
|
||||
#define BFD_COMPRESS 0x8000
|
||||
#define BFD_COMPRESS 0x4000
|
||||
|
||||
/* Decompress sections in this BFD. */
|
||||
#define BFD_DECOMPRESS 0x10000
|
||||
#define BFD_DECOMPRESS 0x8000
|
||||
|
||||
/* BFD is a dummy, for plugins. */
|
||||
#define BFD_PLUGIN 0x20000
|
||||
#define BFD_PLUGIN 0x10000
|
||||
|
||||
/* Flags bits to be saved in bfd_preserve_save. */
|
||||
#define BFD_FLAGS_SAVED \
|
||||
@ -6350,6 +6344,42 @@ struct bfd
|
||||
(BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
|
||||
| BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT)
|
||||
|
||||
/* Is the file descriptor being cached? That is, can it be closed as
|
||||
needed, and re-opened when accessed later? */
|
||||
unsigned int cacheable : 1;
|
||||
|
||||
/* Marks whether there was a default target specified when the
|
||||
BFD was opened. This is used to select which matching algorithm
|
||||
to use to choose the back end. */
|
||||
unsigned int target_defaulted : 1;
|
||||
|
||||
/* ... and here: (``once'' means at least once). */
|
||||
unsigned int opened_once : 1;
|
||||
|
||||
/* Set if we have a locally maintained mtime value, rather than
|
||||
getting it from the file each time. */
|
||||
unsigned int mtime_set : 1;
|
||||
|
||||
/* Flag set if symbols from this BFD should not be exported. */
|
||||
unsigned int no_export : 1;
|
||||
|
||||
/* Remember when output has begun, to stop strange things
|
||||
from happening. */
|
||||
unsigned int output_has_begun : 1;
|
||||
|
||||
/* Have archive map. */
|
||||
unsigned int has_armap : 1;
|
||||
|
||||
/* Set if this is a thin archive. */
|
||||
unsigned int is_thin_archive : 1;
|
||||
|
||||
/* Set if only required symbols should be added in the link hash table for
|
||||
this object. Used by VMS linkers. */
|
||||
unsigned int selective_search : 1;
|
||||
|
||||
/* Set if this is the linker output BFD. */
|
||||
unsigned int is_linker_output : 1;
|
||||
|
||||
/* Currently my_archive is tested before adding origin to
|
||||
anything. I believe that this can become always an add of
|
||||
origin, with origin set to 0 for non archive files. */
|
||||
@ -6374,17 +6404,21 @@ struct bfd
|
||||
/* The number of sections. */
|
||||
unsigned int section_count;
|
||||
|
||||
/* A field used by _bfd_generic_link_add_archive_symbols. This will
|
||||
be used only for archive elements. */
|
||||
int archive_pass;
|
||||
|
||||
/* Stuff only useful for object files:
|
||||
The start address. */
|
||||
bfd_vma start_address;
|
||||
|
||||
/* Used for input and output. */
|
||||
unsigned int symcount;
|
||||
|
||||
/* Symbol table for output BFD (with symcount entries).
|
||||
Also used by the linker to cache input BFD symbols. */
|
||||
struct bfd_symbol **outsymbols;
|
||||
|
||||
/* Used for input and output. */
|
||||
unsigned int symcount;
|
||||
|
||||
/* Used for slurped dynamic symbol tables. */
|
||||
unsigned int dynsymcount;
|
||||
|
||||
@ -6406,10 +6440,6 @@ struct bfd
|
||||
struct bfd_link_hash_table *hash;
|
||||
} link;
|
||||
|
||||
/* A field used by _bfd_generic_link_add_archive_symbols. This will
|
||||
be used only for archive elements. */
|
||||
int archive_pass;
|
||||
|
||||
/* Used by the back end to hold private data. */
|
||||
union
|
||||
{
|
||||
@ -6460,42 +6490,6 @@ struct bfd
|
||||
struct objalloc *, but we use void * to avoid requiring the inclusion
|
||||
of objalloc.h. */
|
||||
void *memory;
|
||||
|
||||
/* Is the file descriptor being cached? That is, can it be closed as
|
||||
needed, and re-opened when accessed later? */
|
||||
unsigned int cacheable : 1;
|
||||
|
||||
/* Marks whether there was a default target specified when the
|
||||
BFD was opened. This is used to select which matching algorithm
|
||||
to use to choose the back end. */
|
||||
unsigned int target_defaulted : 1;
|
||||
|
||||
/* ... and here: (``once'' means at least once). */
|
||||
unsigned int opened_once : 1;
|
||||
|
||||
/* Set if we have a locally maintained mtime value, rather than
|
||||
getting it from the file each time. */
|
||||
unsigned int mtime_set : 1;
|
||||
|
||||
/* Flag set if symbols from this BFD should not be exported. */
|
||||
unsigned int no_export : 1;
|
||||
|
||||
/* Remember when output has begun, to stop strange things
|
||||
from happening. */
|
||||
unsigned int output_has_begun : 1;
|
||||
|
||||
/* Have archive map. */
|
||||
unsigned int has_armap : 1;
|
||||
|
||||
/* Set if this is a thin archive. */
|
||||
unsigned int is_thin_archive : 1;
|
||||
|
||||
/* Set if only required symbols should be added in the link hash table for
|
||||
this object. Used by VMS linkers. */
|
||||
unsigned int selective_search : 1;
|
||||
|
||||
/* Set if this is the linker output BFD. */
|
||||
unsigned int is_linker_output : 1;
|
||||
};
|
||||
|
||||
/* See note beside bfd_set_section_userdata. */
|
||||
|
112
bfd/bfd.c
112
bfd/bfd.c
@ -46,9 +46,6 @@ CODE_FRAGMENT
|
||||
.
|
||||
.struct bfd
|
||||
.{
|
||||
. {* A unique identifier of the BFD *}
|
||||
. unsigned int id;
|
||||
.
|
||||
. {* The filename the application opened the BFD with. *}
|
||||
. const char *filename;
|
||||
.
|
||||
@ -71,17 +68,17 @@ CODE_FRAGMENT
|
||||
. {* File modified time, if mtime_set is TRUE. *}
|
||||
. long mtime;
|
||||
.
|
||||
. {* Reserved for an unimplemented file locking extension. *}
|
||||
. int ifd;
|
||||
. {* A unique identifier of the BFD *}
|
||||
. unsigned int id;
|
||||
.
|
||||
. {* The format which belongs to the BFD. (object, core, etc.) *}
|
||||
. bfd_format format;
|
||||
. ENUM_BITFIELD (bfd_format) format : 3;
|
||||
.
|
||||
. {* The direction with which the BFD was opened. *}
|
||||
. enum bfd_direction direction;
|
||||
. ENUM_BITFIELD (bfd_direction) direction : 2;
|
||||
.
|
||||
. {* Format_specific flags. *}
|
||||
. flagword flags;
|
||||
. flagword flags : 17;
|
||||
.
|
||||
. {* Values that may appear in the flags field of a BFD. These also
|
||||
. appear in the object_flags field of the bfd_target structure, where
|
||||
@ -140,26 +137,23 @@ CODE_FRAGMENT
|
||||
. struct. *}
|
||||
.#define BFD_IN_MEMORY 0x800
|
||||
.
|
||||
. {* The sections in this BFD specify a memory page. *}
|
||||
.#define HAS_LOAD_PAGE 0x1000
|
||||
.
|
||||
. {* This BFD has been created by the linker and doesn't correspond
|
||||
. to any input file. *}
|
||||
.#define BFD_LINKER_CREATED 0x2000
|
||||
.#define BFD_LINKER_CREATED 0x1000
|
||||
.
|
||||
. {* This may be set before writing out a BFD to request that it
|
||||
. be written using values for UIDs, GIDs, timestamps, etc. that
|
||||
. will be consistent from run to run. *}
|
||||
.#define BFD_DETERMINISTIC_OUTPUT 0x4000
|
||||
.#define BFD_DETERMINISTIC_OUTPUT 0x2000
|
||||
.
|
||||
. {* Compress sections in this BFD. *}
|
||||
.#define BFD_COMPRESS 0x8000
|
||||
.#define BFD_COMPRESS 0x4000
|
||||
.
|
||||
. {* Decompress sections in this BFD. *}
|
||||
.#define BFD_DECOMPRESS 0x10000
|
||||
.#define BFD_DECOMPRESS 0x8000
|
||||
.
|
||||
. {* BFD is a dummy, for plugins. *}
|
||||
.#define BFD_PLUGIN 0x20000
|
||||
.#define BFD_PLUGIN 0x10000
|
||||
.
|
||||
. {* Flags bits to be saved in bfd_preserve_save. *}
|
||||
.#define BFD_FLAGS_SAVED \
|
||||
@ -170,6 +164,42 @@ CODE_FRAGMENT
|
||||
. (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
|
||||
. | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT)
|
||||
.
|
||||
. {* Is the file descriptor being cached? That is, can it be closed as
|
||||
. needed, and re-opened when accessed later? *}
|
||||
. unsigned int cacheable : 1;
|
||||
.
|
||||
. {* Marks whether there was a default target specified when the
|
||||
. BFD was opened. This is used to select which matching algorithm
|
||||
. to use to choose the back end. *}
|
||||
. unsigned int target_defaulted : 1;
|
||||
.
|
||||
. {* ... and here: (``once'' means at least once). *}
|
||||
. unsigned int opened_once : 1;
|
||||
.
|
||||
. {* Set if we have a locally maintained mtime value, rather than
|
||||
. getting it from the file each time. *}
|
||||
. unsigned int mtime_set : 1;
|
||||
.
|
||||
. {* Flag set if symbols from this BFD should not be exported. *}
|
||||
. unsigned int no_export : 1;
|
||||
.
|
||||
. {* Remember when output has begun, to stop strange things
|
||||
. from happening. *}
|
||||
. unsigned int output_has_begun : 1;
|
||||
.
|
||||
. {* Have archive map. *}
|
||||
. unsigned int has_armap : 1;
|
||||
.
|
||||
. {* Set if this is a thin archive. *}
|
||||
. unsigned int is_thin_archive : 1;
|
||||
.
|
||||
. {* Set if only required symbols should be added in the link hash table for
|
||||
. this object. Used by VMS linkers. *}
|
||||
. unsigned int selective_search : 1;
|
||||
.
|
||||
. {* Set if this is the linker output BFD. *}
|
||||
. unsigned int is_linker_output : 1;
|
||||
.
|
||||
. {* Currently my_archive is tested before adding origin to
|
||||
. anything. I believe that this can become always an add of
|
||||
. origin, with origin set to 0 for non archive files. *}
|
||||
@ -194,17 +224,21 @@ CODE_FRAGMENT
|
||||
. {* The number of sections. *}
|
||||
. unsigned int section_count;
|
||||
.
|
||||
. {* A field used by _bfd_generic_link_add_archive_symbols. This will
|
||||
. be used only for archive elements. *}
|
||||
. int archive_pass;
|
||||
.
|
||||
. {* Stuff only useful for object files:
|
||||
. The start address. *}
|
||||
. bfd_vma start_address;
|
||||
.
|
||||
. {* Used for input and output. *}
|
||||
. unsigned int symcount;
|
||||
.
|
||||
. {* Symbol table for output BFD (with symcount entries).
|
||||
. Also used by the linker to cache input BFD symbols. *}
|
||||
. struct bfd_symbol **outsymbols;
|
||||
.
|
||||
. {* Used for input and output. *}
|
||||
. unsigned int symcount;
|
||||
.
|
||||
. {* Used for slurped dynamic symbol tables. *}
|
||||
. unsigned int dynsymcount;
|
||||
.
|
||||
@ -226,10 +260,6 @@ CODE_FRAGMENT
|
||||
. struct bfd_link_hash_table *hash;
|
||||
. } link;
|
||||
.
|
||||
. {* A field used by _bfd_generic_link_add_archive_symbols. This will
|
||||
. be used only for archive elements. *}
|
||||
. int archive_pass;
|
||||
.
|
||||
. {* Used by the back end to hold private data. *}
|
||||
. union
|
||||
. {
|
||||
@ -280,42 +310,6 @@ CODE_FRAGMENT
|
||||
. struct objalloc *, but we use void * to avoid requiring the inclusion
|
||||
. of objalloc.h. *}
|
||||
. void *memory;
|
||||
.
|
||||
. {* Is the file descriptor being cached? That is, can it be closed as
|
||||
. needed, and re-opened when accessed later? *}
|
||||
. unsigned int cacheable : 1;
|
||||
.
|
||||
. {* Marks whether there was a default target specified when the
|
||||
. BFD was opened. This is used to select which matching algorithm
|
||||
. to use to choose the back end. *}
|
||||
. unsigned int target_defaulted : 1;
|
||||
.
|
||||
. {* ... and here: (``once'' means at least once). *}
|
||||
. unsigned int opened_once : 1;
|
||||
.
|
||||
. {* Set if we have a locally maintained mtime value, rather than
|
||||
. getting it from the file each time. *}
|
||||
. unsigned int mtime_set : 1;
|
||||
.
|
||||
. {* Flag set if symbols from this BFD should not be exported. *}
|
||||
. unsigned int no_export : 1;
|
||||
.
|
||||
. {* Remember when output has begun, to stop strange things
|
||||
. from happening. *}
|
||||
. unsigned int output_has_begun : 1;
|
||||
.
|
||||
. {* Have archive map. *}
|
||||
. unsigned int has_armap : 1;
|
||||
.
|
||||
. {* Set if this is a thin archive. *}
|
||||
. unsigned int is_thin_archive : 1;
|
||||
.
|
||||
. {* Set if only required symbols should be added in the link hash table for
|
||||
. this object. Used by VMS linkers. *}
|
||||
. unsigned int selective_search : 1;
|
||||
.
|
||||
. {* Set if this is the linker output BFD. *}
|
||||
. unsigned int is_linker_output : 1;
|
||||
.};
|
||||
.
|
||||
.{* See note beside bfd_set_section_userdata. *}
|
||||
|
@ -261,30 +261,30 @@ tic4x_reloc_processing (arelent *relent,
|
||||
|
||||
/* TI COFF v0, DOS tools (little-endian headers). */
|
||||
CREATE_LITTLE_COFF_TARGET_VEC(tic4x_coff0_vec, "coff0-tic4x",
|
||||
HAS_LOAD_PAGE, SEC_CODE | SEC_READONLY, '_',
|
||||
0, SEC_CODE | SEC_READONLY, '_',
|
||||
NULL, &ticoff0_swap_table);
|
||||
|
||||
/* TI COFF v0, SPARC tools (big-endian headers). */
|
||||
CREATE_BIGHDR_COFF_TARGET_VEC(tic4x_coff0_beh_vec, "coff0-beh-tic4x",
|
||||
HAS_LOAD_PAGE, SEC_CODE | SEC_READONLY, '_',
|
||||
0, SEC_CODE | SEC_READONLY, '_',
|
||||
&tic4x_coff0_vec, &ticoff0_swap_table);
|
||||
|
||||
/* TI COFF v1, DOS tools (little-endian headers). */
|
||||
CREATE_LITTLE_COFF_TARGET_VEC(tic4x_coff1_vec, "coff1-tic4x",
|
||||
HAS_LOAD_PAGE, SEC_CODE | SEC_READONLY, '_',
|
||||
0, SEC_CODE | SEC_READONLY, '_',
|
||||
&tic4x_coff0_beh_vec, &ticoff1_swap_table);
|
||||
|
||||
/* TI COFF v1, SPARC tools (big-endian headers). */
|
||||
CREATE_BIGHDR_COFF_TARGET_VEC(tic4x_coff1_beh_vec, "coff1-beh-tic4x",
|
||||
HAS_LOAD_PAGE, SEC_CODE | SEC_READONLY, '_',
|
||||
0, SEC_CODE | SEC_READONLY, '_',
|
||||
&tic4x_coff1_vec, &ticoff1_swap_table);
|
||||
|
||||
/* TI COFF v2, TI DOS tools output (little-endian headers). */
|
||||
CREATE_LITTLE_COFF_TARGET_VEC(tic4x_coff2_vec, "coff2-tic4x",
|
||||
HAS_LOAD_PAGE, SEC_CODE | SEC_READONLY, '_',
|
||||
0, SEC_CODE | SEC_READONLY, '_',
|
||||
&tic4x_coff1_beh_vec, COFF_SWAP_TABLE);
|
||||
|
||||
/* TI COFF v2, TI SPARC tools output (big-endian headers). */
|
||||
CREATE_BIGHDR_COFF_TARGET_VEC(tic4x_coff2_beh_vec, "coff2-beh-tic4x",
|
||||
HAS_LOAD_PAGE, SEC_CODE | SEC_READONLY, '_',
|
||||
0, SEC_CODE | SEC_READONLY, '_',
|
||||
&tic4x_coff2_vec, COFF_SWAP_TABLE);
|
||||
|
@ -1,3 +1,7 @@
|
||||
2014-07-01 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* objdump.c (dump_bfd_header): Don't print HAS_LOAD_PAGE.
|
||||
|
||||
2014-06-26 Erik Akermann <kurterikackermann@gmail.com>
|
||||
|
||||
* strings.c: Add -w/--include-all-whitespace option to include any
|
||||
|
@ -2629,7 +2629,6 @@ dump_bfd_header (bfd *abfd)
|
||||
PF (WP_TEXT, "WP_TEXT");
|
||||
PF (D_PAGED, "D_PAGED");
|
||||
PF (BFD_IS_RELAXABLE, "BFD_IS_RELAXABLE");
|
||||
PF (HAS_LOAD_PAGE, "HAS_LOAD_PAGE");
|
||||
printf (_("\nstart address 0x"));
|
||||
bfd_printf_vma (abfd, abfd->start_address);
|
||||
printf ("\n");
|
||||
|
Loading…
Reference in New Issue
Block a user