summaryrefslogtreecommitdiff
path: root/patches/test/binutils-bdirect.diff
diff options
context:
space:
mode:
Diffstat (limited to 'patches/test/binutils-bdirect.diff')
-rw-r--r--patches/test/binutils-bdirect.diff648
1 files changed, 0 insertions, 648 deletions
diff --git a/patches/test/binutils-bdirect.diff b/patches/test/binutils-bdirect.diff
deleted file mode 100644
index ae6c37845..000000000
--- a/patches/test/binutils-bdirect.diff
+++ /dev/null
@@ -1,648 +0,0 @@
---- error - this patch is deprecated; cf. binutils-suse-bdirect.diff
-
-
-Only in binutils.current/bfd/doc: chew
-diff -u -r -x texis -x Makeconfig -x version.h -x '*.o' -x '*.1' -x 'Makefile*' -x 'config*' -x libtool -x '*.info' -x '*.tex' binutils-2.16/bfd/elf-bfd.h binutils.current/bfd/elf-bfd.h
---- binutils-2.16/bfd/elf-bfd.h 2005-03-03 20:52:31.000000000 +0000
-+++ binutils.current/bfd/elf-bfd.h 2005-11-23 11:04:04.000000000 +0000
-@@ -170,6 +170,14 @@
- matters. */
- unsigned int pointer_equality_needed : 1;
-
-+ /* FIXME: these 2 bits consume another 4 bytes */
-+ /* Symbol is concrete, ie. non-vague if we can detect that, from the
-+ .direct section */
-+ unsigned int concrete_ref : 1;
-+ /* Symbol is certainly vague (if we can detect that), from the
-+ .direct section */
-+ unsigned int vague_ref : 1;
-+
- /* String table index in .dynstr if this is a dynamic symbol. */
- unsigned long dynstr_index;
-
-@@ -396,6 +404,9 @@
- asection *tls_sec;
- bfd_size_type tls_size;
-
-+ /* Direct linkage output section */
-+ asection *direct_sec;
-+
- /* A linked list of BFD's loaded in the link. */
- struct elf_link_loaded_list *loaded;
-
-@@ -1238,6 +1249,7 @@
- name actually used, which will be the DT_SONAME entry if there is
- one. */
- const char *dt_name;
-+ int dt_needed_idx;
-
- /* Records the result of `get_program_header_size'. */
- bfd_size_type program_header_size;
-@@ -1338,6 +1350,7 @@
- #define elf_local_got_offsets(bfd) (elf_tdata(bfd) -> local_got.offsets)
- #define elf_local_got_ents(bfd) (elf_tdata(bfd) -> local_got.ents)
- #define elf_dt_name(bfd) (elf_tdata(bfd) -> dt_name)
-+#define elf_dt_needed_idx(bfd) (elf_tdata(bfd) -> dt_needed_idx)
- #define elf_dyn_lib_class(bfd) (elf_tdata(bfd) -> dyn_lib_class)
- #define elf_bad_symtab(bfd) (elf_tdata(bfd) -> bad_symtab)
- #define elf_flags_init(bfd) (elf_tdata(bfd) -> flags_init)
-Only in binutils.current/bfd: elf-bfd.h~
-diff -u -r -x texis -x Makeconfig -x version.h -x '*.o' -x '*.1' -x 'Makefile*' -x 'config*' -x libtool -x '*.info' -x '*.tex' binutils-2.16/bfd/elf.c binutils.current/bfd/elf.c
---- binutils-2.16/bfd/elf.c 2005-03-06 02:02:15.000000000 +0000
-+++ binutils.current/bfd/elf.c 2005-11-18 17:08:51.000000000 +0000
-@@ -1145,6 +1145,7 @@
- case DT_RELCOUNT: name = "RELCOUNT"; break;
- case DT_FLAGS_1: name = "FLAGS_1"; break;
- case DT_VERSYM: name = "VERSYM"; break;
-+ case DT_DIRECT: name = "DIRECT"; break;
- case DT_VERDEF: name = "VERDEF"; break;
- case DT_VERDEFNUM: name = "VERDEFNUM"; break;
- case DT_VERNEED: name = "VERNEED"; break;
-@@ -1495,6 +1496,7 @@
- table->runpath = NULL;
- table->tls_sec = NULL;
- table->tls_size = 0;
-+ table->direct_sec = NULL;
- table->loaded = NULL;
- table->is_relocatable_executable = FALSE;
-
-diff -u -r -x texis -x Makeconfig -x version.h -x '*.o' -x '*.1' -x 'Makefile*' -x 'config*' -x libtool -x '*.info' -x '*.tex' binutils-2.16/bfd/elflink.c binutils.current/bfd/elflink.c
---- binutils-2.16/bfd/elflink.c 2005-04-29 14:40:22.000000000 +0100
-+++ binutils.current/bfd/elflink.c 2005-11-30 15:07:38.000000000 +0000
-@@ -172,6 +172,16 @@
- elf_hash_table (info)->eh_info.hdr_sec = s;
- }
-
-+ if ( info->direct && !info->executable )
-+ {
-+ s = bfd_make_section (abfd, ".direct");
-+ if (s == NULL
-+ || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
-+ || ! bfd_set_section_alignment (abfd, s, 2))
-+ return FALSE;
-+ elf_hash_table (info)->direct_sec = s;
-+ }
-+
- /* Create sections to hold version informations. These are removed
- if they are not needed. */
- s = bfd_make_section (abfd, ".gnu.version_d");
-@@ -2193,7 +2203,9 @@
-
- return TRUE;
- }
-+
-
-+
- /* Fix up the flags for a symbol. This handles various cases which
- can only be fixed after all the input files are seen. This is
- currently called by both adjust_dynamic_symbol and
-@@ -2848,6 +2860,9 @@
-
- if (!_bfd_elf_add_dynamic_entry (info, DT_NEEDED, strindex))
- return -1;
-+ elf_dt_needed_idx (abfd) = ++(info->dt_needed_index);
-+/* fprintf (stderr, "Set soname '%s' as index %d\n",
-+ soname, info->dt_needed_index); */
- }
- else
- /* We were just checking for existence of the tag. */
-@@ -3143,6 +3158,8 @@
- bfd_boolean add_needed;
- struct elf_link_hash_table * hash_table;
- bfd_size_type amt;
-+ asection *direct_sec;
-+ unsigned char *direct_data;
-
- hash_table = elf_hash_table (info);
-
-@@ -3150,6 +3167,9 @@
- add_symbol_hook = bed->elf_add_symbol_hook;
- collect = bed->collect;
-
-+ direct_sec = NULL;
-+ direct_data = NULL;
-+
- if ((abfd->flags & DYNAMIC) == 0)
- dynamic = FALSE;
- else
-@@ -3169,6 +3189,14 @@
- bfd_set_error (bfd_error_wrong_format);
- goto error_return;
- }
-+ if (info->direct &&
-+ (direct_sec = bfd_get_section_by_name (abfd, ".direct")))
-+ {
-+ direct_data = bfd_alloc (abfd, direct_sec->size);
-+ if (direct_data == NULL ||
-+ ! bfd_get_section_contents (abfd, direct_sec, direct_data, 0, direct_sec->size))
-+ goto error_return;
-+ }
- }
-
- /* As a GNU extension, any input sections which are named
-@@ -3817,6 +3845,37 @@
- && vernum > 1
- && definition)
- h->verinfo.verdef = &elf_tdata (abfd)->verdef[vernum - 1];
-+
-+ if (direct_sec)
-+ {
-+ unsigned long d_idx = isym - isymbuf;
-+ /* FIXME: does bfd_elf_get_elf_syms read dynsym or the symbol
-+ table ? */
-+ d_idx += extsymoff;
-+ d_idx *= 2;
-+ if (d_idx > bfd_get_section_size (direct_sec))
-+ fprintf (stderr, "Warning - strange error on '%s': 0x%x 0x%x\n",
-+ h->root.root.string, (int)d_idx,
-+ (int)bfd_get_section_size (direct_sec));
-+ else
-+ {
-+ unsigned int direct_entry;
-+ direct_entry = bfd_get_16 (abfd, direct_data + d_idx);
-+ if ((direct_entry & DT_DIRECT_VAGUE))
-+ h->vague_ref = 1;
-+ if (!h->vague_ref &&
-+ (direct_entry & DT_DIRECT_MASK) != DT_DIRECT_UNKNOWN)
-+ h->concrete_ref = 1;
-+#if 0
-+ fprintf (stderr, "symbol '%s': %s direct entry 0x%x (index %d) section '%s' : '%s'\n",
-+ h->root.root.string,
-+ h->vague_ref ? "vague " : h->concrete_ref ? "concrete" : "unknown",
-+ direct_entry, (int)d_idx/2,
-+ new_sec ? new_sec->name : "<nosec>",
-+ new_sec && new_sec->owner ? new_sec->owner->filename : "<noownername>");
-+#endif
-+ }
-+ }
- }
-
- if (! (_bfd_generic_link_add_one_symbol
-@@ -3830,6 +3889,8 @@
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
- *sym_hash = h;
-
-+ /* FIXME: move direct bits here ? - seem fine where they are ... */
-+
- new_weakdef = FALSE;
- if (dynamic
- && definition
-@@ -4450,6 +4511,8 @@
- if (isymbuf != NULL)
- free (isymbuf);
- error_return:
-+ if (direct_data != NULL)
-+ free (direct_data);
- return FALSE;
- }
-
-@@ -5671,6 +5734,24 @@
- return FALSE;
- }
-
-+ /* Create the direct bindings section - 1 entry per dynsym */
-+ s = bfd_get_section_by_name (dynobj, ".direct");
-+ if (s)
-+ {
-+ if (dynsymcount == 0)
-+ _bfd_strip_section_from_output (info, s);
-+ else
-+ {
-+ s->size = dynsymcount * sizeof (Elf_External_Direct);
-+ s->contents = bfd_zalloc (output_bfd, s->size);
-+ if (s->contents == NULL)
-+ return FALSE;
-+ memset (s->contents, 0xff, s->size);
-+ if (!_bfd_elf_add_dynamic_entry (info, DT_DIRECT, 0))
-+ return FALSE;
-+ }
-+ }
-+
- /* Set the size of the .dynsym and .hash sections. We counted
- the number of dynamic symbols in elf_link_add_object_symbols.
- We will build the contents of .dynsym and .hash when we build
-@@ -5749,6 +5830,8 @@
- asection *hash_sec;
- /* symbol version section (.gnu.version). */
- asection *symver_sec;
-+ /* .direct linkage section */
-+ asection *direct_sec;
- /* Buffer large enough to hold contents of any section. */
- bfd_byte *contents;
- /* Buffer large enough to hold external relocs of any section. */
-@@ -6603,6 +6704,64 @@
- eversym += h->dynindx;
- _bfd_elf_swap_versym_out (finfo->output_bfd, &iversym, eversym);
- }
-+
-+ if (finfo->direct_sec)
-+ {
-+ bfd_vma offset = 2 * h->dynindx;
-+ if (offset > finfo->direct_sec->size)
-+ fprintf (stderr, "Out of bounds direct section index %d\n",
-+ (int) offset);
-+ else
-+ {
-+ int dt_index = DT_DIRECT_UNKNOWN;
-+
-+#if 0
-+ fprintf (stderr, "Symbol '%s' type %d\n",
-+ h->root.root.string, h->root.type);
-+#endif
-+ if ((h->root.type == bfd_link_hash_defined
-+ || h->root.type == bfd_link_hash_defweak) &&
-+ h->root.u.def.section != NULL &&
-+ h->root.u.def.section->owner != NULL)
-+
-+ {
-+ asection *sec = h->root.u.def.section;
-+
-+ dt_index = elf_dt_needed_idx (sec->owner);
-+
-+ if (!(sec->owner->flags & DYNAMIC))
-+ {
-+ if (!sec->name ||
-+ !strncmp (sec->name, ".gnu.linkonce", sizeof ".gnu.linkonce" - 1))
-+ dt_index |= DT_DIRECT_VAGUE;
-+
-+ /* app -> library data references get turned into copy
-+ relocs, so objects can migrate unpredictably into the
-+ application itself. */
-+ else if (h->type == STT_OBJECT)
-+ dt_index |= DT_DIRECT_VAGUE;
-+ }
-+ else if (h->vague_ref)
-+ dt_index |= DT_DIRECT_VAGUE;
-+
-+ else if (!h->concrete_ref)
-+ dt_index = DT_DIRECT_UNKNOWN;
-+
-+#if 0
-+ fprintf (stderr, "Sym '%s' (type %d) [type %d] section %s [%s] owner '%s' [%d] offset %d resolves '%s'\n",
-+ h->root.root.string, h->root.type, h->type,
-+ sec->name ? sec->name : "<null>",
-+ sec->owner->flags & DYNAMIC ? "dynamic" : "static",
-+ sec->owner ? sec->owner->filename : "<noowner?>",
-+ dt_index, (int) offset,
-+ dt_index & DT_DIRECT_VAGUE ? "<vague>" : "concrete");
-+#endif
-+ }
-+ bfd_put_16 (finfo->output_bfd,
-+ dt_index,
-+ finfo->direct_sec->contents + offset);
-+ }
-+ }
- }
-
- /* If we're stripping it, then it was just a dynamic symbol, and
-@@ -7732,6 +7891,7 @@
- finfo.dynsym_sec = NULL;
- finfo.hash_sec = NULL;
- finfo.symver_sec = NULL;
-+ finfo.direct_sec = NULL;
- }
- else
- {
-@@ -7740,6 +7900,7 @@
- BFD_ASSERT (finfo.dynsym_sec != NULL && finfo.hash_sec != NULL);
- finfo.symver_sec = bfd_get_section_by_name (dynobj, ".gnu.version");
- /* Note that it is OK if symver_sec is NULL. */
-+ finfo.direct_sec = bfd_get_section_by_name (dynobj, ".direct");
- }
-
- finfo.contents = NULL;
-@@ -8492,6 +8653,9 @@
- case DT_VERNEED:
- name = ".gnu.version_r";
- goto get_vma;
-+ case DT_DIRECT:
-+ name = ".direct";
-+ goto get_vma;
- case DT_VERSYM:
- name = ".gnu.version";
- get_vma:
-Only in binutils.current/bfd: elflink.c~
-Files binutils-2.16/bfd/libbfd.a and binutils.current/bfd/libbfd.a differ
-Files binutils-2.16/bfd/.libs/libbfd.a and binutils.current/bfd/.libs/libbfd.a differ
-Files binutils-2.16/binutils/addr2line and binutils.current/binutils/addr2line differ
-Files binutils-2.16/binutils/ar and binutils.current/binutils/ar differ
-Files binutils-2.16/binutils/cxxfilt and binutils.current/binutils/cxxfilt differ
-Files binutils-2.16/binutils/nm-new and binutils.current/binutils/nm-new differ
-Files binutils-2.16/binutils/objcopy and binutils.current/binutils/objcopy differ
-Files binutils-2.16/binutils/objdump and binutils.current/binutils/objdump differ
-Files binutils-2.16/binutils/ranlib and binutils.current/binutils/ranlib differ
-Files binutils-2.16/binutils/readelf and binutils.current/binutils/readelf differ
-diff -u -r -x texis -x Makeconfig -x version.h -x '*.o' -x '*.1' -x 'Makefile*' -x 'config*' -x libtool -x '*.info' -x '*.tex' binutils-2.16/binutils/readelf.c binutils.current/binutils/readelf.c
---- binutils-2.16/binutils/readelf.c 2005-04-20 19:43:36.000000000 +0100
-+++ binutils.current/binutils/readelf.c 2005-11-23 11:10:06.000000000 +0000
-@@ -143,6 +143,7 @@
- int do_dynamic;
- int do_syms;
- int do_reloc;
-+int do_direct;
- int do_sections;
- int do_section_groups;
- int do_segments;
-@@ -1519,6 +1520,7 @@
- case DT_SYMINFO: return "SYMINFO"; /* aka ADDRRNGHI */
-
- case DT_VERSYM: return "VERSYM";
-+ case DT_DIRECT: return "DIRECT";
-
- case DT_RELACOUNT: return "RELACOUNT";
- case DT_RELCOUNT: return "RELCOUNT";
-@@ -2590,6 +2592,7 @@
- {"symbols", no_argument, 0, 's'},
- {"syms", no_argument, 0, 's'},
- {"relocs", no_argument, 0, 'r'},
-+ {"direct", no_argument, 0, 'y'},
- {"notes", no_argument, 0, 'n'},
- {"dynamic", no_argument, 0, 'd'},
- {"arch-specific", no_argument, 0, 'A'},
-@@ -2626,6 +2629,7 @@
- --symbols An alias for --syms\n\
- -n --notes Display the core notes (if present)\n\
- -r --relocs Display the relocations (if present)\n\
-+ -y --direct Display direct linkage table (if present)\n\
- -u --unwind Display the unwind info (if present)\n\
- -d --dynamic Display the dynamic section (if present)\n\
- -V --version-info Display the version sections (if present)\n\
-@@ -2693,7 +2697,7 @@
- usage ();
-
- while ((c = getopt_long
-- (argc, argv, "ersuahnldSDAIgw::x:i:vVWH", options, NULL)) != EOF)
-+ (argc, argv, "erysuahnldSDAIgw::x:i:vVWH", options, NULL)) != EOF)
- {
- char *cp;
- int section;
-@@ -2710,6 +2714,7 @@
- case 'a':
- do_syms++;
- do_reloc++;
-+ do_direct++;
- do_unwind++;
- do_dynamic++;
- do_header++;
-@@ -2738,6 +2743,9 @@
- case 'r':
- do_reloc++;
- break;
-+ case 'y':
-+ do_direct++;
-+ break;
- case 'u':
- do_unwind++;
- break;
-@@ -2943,7 +2951,7 @@
- }
- }
-
-- if (!do_dynamic && !do_syms && !do_reloc && !do_unwind && !do_sections
-+ if (!do_dynamic && !do_syms && !do_reloc && !do_direct && !do_unwind && !do_sections
- && !do_segments && !do_header && !do_dump && !do_version
- && !do_histogram && !do_debugging && !do_arch && !do_notes
- && !do_section_groups)
-@@ -4328,6 +4336,132 @@
- return 1;
- }
-
-+static void
-+print_dt_needed_name (int idx)
-+{
-+ const char *name = NULL;
-+ Elf_Internal_Dyn *entry;
-+
-+ idx &= DT_DIRECT_MASK;
-+
-+ switch (idx)
-+ {
-+ case 0:
-+ name = _("<self>");
-+ break;
-+ case DT_DIRECT_UNKNOWN:
-+ name = _("<unknown>");
-+ break;
-+ default:
-+ idx--;
-+
-+ for (entry = dynamic_section;
-+ entry < dynamic_section + dynamic_nent && idx > 0;
-+ entry++)
-+ if (entry->d_tag == DT_NEEDED)
-+ idx--;
-+
-+ if (idx == 0)
-+ {
-+ if (VALID_DYNAMIC_NAME (entry->d_un.d_val))
-+ name = GET_DYNAMIC_NAME (entry->d_un.d_val);
-+ else
-+ name = NULL;
-+ }
-+ break;
-+ }
-+
-+ if (!name)
-+ name = _("<out-of-range>");
-+ if (do_wide)
-+ printf ("%s", name);
-+ else
-+ printf ("%-25s", name);
-+}
-+
-+static int
-+process_direct (FILE *file)
-+{
-+ unsigned int i;
-+ unsigned int si;
-+ char *strtab;
-+ unsigned char *directtab;
-+ Elf_Internal_Sym *symtab = NULL;
-+ Elf_Internal_Sym *psym;
-+ Elf_Internal_Shdr *direct = NULL;
-+ Elf_Internal_Shdr *dynsym = NULL;
-+ Elf_Internal_Shdr *section;
-+
-+ if (!do_direct)
-+ return 1;
-+ if (!dynamic_symbols || !dynamic_section || !dynamic_strings)
-+ return 1;
-+
-+ for (i = 0, section = section_headers;
-+ i < elf_header.e_shnum;
-+ i++, section++)
-+ {
-+ if (section->sh_type == SHT_DYNSYM)
-+ dynsym = section;
-+ if (!strcmp (SECTION_NAME (section), ".direct"))
-+ direct = section;
-+ }
-+ if (!dynsym || !direct)
-+ return 1;
-+
-+ symtab = GET_ELF_SYMBOLS (file, dynsym);
-+ if (!symtab)
-+ return 1;
-+
-+ directtab = get_data (NULL, file, direct->sh_offset,
-+ direct->sh_size, _("direct linkage table"));
-+ if (!symtab)
-+ {
-+ free (symtab);
-+ return 1;
-+ }
-+
-+ if (dynsym->sh_link == elf_header.e_shstrndx)
-+ strtab = string_table;
-+ else
-+ {
-+ Elf_Internal_Shdr *string_sec;
-+
-+ string_sec = SECTION_HEADER (dynsym->sh_link);
-+
-+ strtab = get_data (NULL, file, string_sec->sh_offset,
-+ string_sec->sh_size, _("string table"));
-+ }
-+
-+ assert (strtab != NULL);
-+
-+ printf (_("\nDirect relocations for image:\n"));
-+ printf (_(" Num: Index Vague Binding Symbol\n"));
-+ for (si = 0, psym = symtab;
-+ si < dynsym->sh_size / dynsym->sh_entsize;
-+ si++, psym++)
-+ {
-+ unsigned int field;
-+ printf ("%6d: ", si);
-+ field = byte_get (directtab + (si * 2), 2);
-+ printf ("[0x%.4x] ", field);
-+ printf ("%s", (field & DT_DIRECT_VAGUE) ? "Vague" : " ");
-+ printf (" ");
-+ print_dt_needed_name (field);
-+ printf (" ");
-+ print_symbol (25, strtab + psym->st_name);
-+ printf ("\n");
-+ }
-+
-+
-+ free (symtab);
-+ if (strtab != string_table)
-+ free (strtab);
-+
-+ return 1;
-+}
-+
-+
- /* Process the unwind section. */
-
- #include "unwind-ia64.h"
-@@ -11784,6 +11918,8 @@
-
- process_relocs (file);
-
-+ process_direct (file);
-+
- process_unwind (file);
-
- process_symbol_table (file);
-Only in binutils.current/binutils: readelf.c~
-Files binutils-2.16/binutils/size and binutils.current/binutils/size differ
-Files binutils-2.16/binutils/strings and binutils.current/binutils/strings differ
-Files binutils-2.16/binutils/strip-new and binutils.current/binutils/strip-new differ
-Files binutils-2.16/gas/as-new and binutils.current/gas/as-new differ
-Files binutils-2.16/gprof/gprof and binutils.current/gprof/gprof differ
-diff -u -r -x texis -x Makeconfig -x version.h -x '*.o' -x '*.1' -x 'Makefile*' -x 'config*' -x libtool -x '*.info' -x '*.tex' binutils-2.16/include/bfdlink.h binutils.current/include/bfdlink.h
---- binutils-2.16/include/bfdlink.h 2005-03-03 11:58:00.000000000 +0000
-+++ binutils.current/include/bfdlink.h 2005-11-23 10:31:37.000000000 +0000
-@@ -244,6 +244,9 @@
- /* TRUE if BFD should pre-bind symbols in a shared object. */
- unsigned int symbolic: 1;
-
-+ /* TRUE if BFD should bind symbols directly to resolved at link time. */
-+ unsigned int direct: 1;
-+
- /* TRUE if BFD should export all symbols in the dynamic symbol table
- of an executable, rather than only those used. */
- unsigned int export_dynamic: 1;
-@@ -416,6 +419,9 @@
-
- /* Start and end of RELRO region. */
- bfd_vma relro_start, relro_end;
-+
-+ /* current max dtinfo section number */
-+ int dt_needed_index;
- };
-
- /* This structures holds a set of callback functions. These are
-Only in binutils.current/include: bfdlink.h~
-diff -u -r -x texis -x Makeconfig -x version.h -x '*.o' -x '*.1' -x 'Makefile*' -x 'config*' -x libtool -x '*.info' -x '*.tex' binutils-2.16/include/elf/common.h binutils.current/include/elf/common.h
---- binutils-2.16/include/elf/common.h 2004-10-08 14:55:08.000000000 +0100
-+++ binutils.current/include/elf/common.h 2005-11-22 14:12:53.000000000 +0000
-@@ -586,6 +586,7 @@
-
- /* This tag is a GNU extension to the Solaris version scheme. */
- #define DT_VERSYM 0x6ffffff0
-+#define DT_DIRECT 0x6ffffff1 /* FIXME - how are these allocated ? */
-
- #define DT_LOPROC 0x70000000
- #define DT_HIPROC 0x7fffffff
-@@ -635,6 +636,11 @@
- #define DF_BIND_NOW (1 << 3)
- #define DF_STATIC_TLS (1 << 4)
-
-+/* Constants for the DT_DIRECT entries. */
-+#define DT_DIRECT_VAGUE (1<<15)
-+#define DT_DIRECT_MASK 0x3ff
-+#define DT_DIRECT_UNKNOWN DT_DIRECT_MASK
-+
- /* These constants are used for the version number of a Elf32_Verdef
- structure. */
-
-Only in binutils.current/include/elf: common.h~
-diff -u -r -x texis -x Makeconfig -x version.h -x '*.o' -x '*.1' -x 'Makefile*' -x 'config*' -x libtool -x '*.info' -x '*.tex' binutils-2.16/include/elf/external.h binutils.current/include/elf/external.h
---- binutils-2.16/include/elf/external.h 2005-03-03 11:58:05.000000000 +0000
-+++ binutils.current/include/elf/external.h 2005-11-18 17:08:51.000000000 +0000
-@@ -213,6 +213,10 @@
- unsigned char vd_next[4];
- } Elf_External_Verdef;
-
-+typedef struct {
-+ unsigned char dir_libidx[2];
-+} Elf_External_Direct;
-+
- /* This structure appears in a SHT_GNU_verdef section. */
-
- typedef struct {
-Files binutils-2.16/ld/ld-new and binutils.current/ld/ld-new differ
-diff -u -r -x texis -x Makeconfig -x version.h -x '*.o' -x '*.1' -x 'Makefile*' -x 'config*' -x libtool -x '*.info' -x '*.tex' binutils-2.16/ld/lexsup.c binutils.current/ld/lexsup.c
---- binutils-2.16/ld/lexsup.c 2005-03-03 11:52:00.000000000 +0000
-+++ binutils.current/ld/lexsup.c 2005-11-23 10:32:20.000000000 +0000
-@@ -70,6 +70,7 @@
- OPTION_CREF,
- OPTION_DEFSYM,
- OPTION_DEMANGLE,
-+ OPTION_DIRECT,
- OPTION_DYNAMIC_LINKER,
- OPTION_SYSROOT,
- OPTION_EB,
-@@ -341,6 +342,8 @@
- '\0', NULL, NULL, ONE_DASH },
- { {"Bsymbolic", no_argument, NULL, OPTION_SYMBOLIC},
- '\0', NULL, N_("Bind global references locally"), ONE_DASH },
-+ { {"Bdirect", no_argument, NULL, OPTION_DIRECT},
-+ '\0', NULL, N_("Direct-linkage the the shared libraries"), ONE_DASH },
- { {"check-sections", no_argument, NULL, OPTION_CHECK_SECTIONS},
- '\0', NULL, N_("Check section addresses for overlaps (default)"),
- TWO_DASHES },
-@@ -746,6 +749,9 @@
- cplus_demangle_set_style (style);
- }
- break;
-+ case OPTION_DIRECT:
-+ link_info.direct = TRUE;
-+ break;
- case 'I': /* Used on Solaris. */
- case OPTION_DYNAMIC_LINKER:
- command_line.interpreter = optarg;
-Only in binutils.current/ld: lexsup.c~
-Files binutils-2.16/libiberty/libiberty.a and binutils.current/libiberty/libiberty.a differ