* Reorganise struct bfd
@ 2014-07-01 11:15 Alan Modra
2014-07-01 12:13 ` Jan-Benedict Glaw
0 siblings, 1 reply; 3+ messages in thread
From: Alan Modra @ 2014-07-01 11:15 UTC (permalink / raw)
To: binutils
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.
diff --git a/bfd/bfd.c b/bfd/bfd.c
index e19bcf7..8b60911 100644
--- a/bfd/bfd.c
+++ b/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. *}
diff --git a/bfd/coff-tic4x.c b/bfd/coff-tic4x.c
index 36a8901..1e7166f 100644
--- a/bfd/coff-tic4x.c
+++ b/bfd/coff-tic4x.c
@@ -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);
diff --git a/binutils/objdump.c b/binutils/objdump.c
index 14f4122..5086a15 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -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");
--
Alan Modra
Australia Development Lab, IBM
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Reorganise struct bfd
2014-07-01 11:15 Reorganise struct bfd Alan Modra
@ 2014-07-01 12:13 ` Jan-Benedict Glaw
2014-07-01 12:16 ` Andreas Schwab
0 siblings, 1 reply; 3+ messages in thread
From: Jan-Benedict Glaw @ 2014-07-01 12:13 UTC (permalink / raw)
To: Alan Modra; +Cc: binutils
[-- Attachment #1: Type: text/plain, Size: 914 bytes --]
On Tue, 2014-07-01 20:45:17 +0930, Alan Modra <amodra@gmail.com> wrote:
> 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.
[...]
Since libbfd and bfd.h may be installed in a user's system and used by
other programs, isn't this an ABI-incompatible change that should
imply a version number change? Or do I miss something?
MfG, JBG
--
Jan-Benedict Glaw jbglaw@lug-owl.de +49-172-7608481
Signature of: Gib Dein Bestes. Dann übertriff Dich selbst!
the second :
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Reorganise struct bfd
2014-07-01 12:13 ` Jan-Benedict Glaw
@ 2014-07-01 12:16 ` Andreas Schwab
0 siblings, 0 replies; 3+ messages in thread
From: Andreas Schwab @ 2014-07-01 12:16 UTC (permalink / raw)
To: Jan-Benedict Glaw; +Cc: Alan Modra, binutils
Jan-Benedict Glaw <jbglaw@lug-owl.de> writes:
> Since libbfd and bfd.h may be installed in a user's system and used by
> other programs, isn't this an ABI-incompatible change that should
> imply a version number change? Or do I miss something?
libbfd's version changes every day.
Andreas.
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-07-01 12:16 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-01 11:15 Reorganise struct bfd Alan Modra
2014-07-01 12:13 ` Jan-Benedict Glaw
2014-07-01 12:16 ` Andreas Schwab
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).