Add --identify-strict option. Handle ms-style implibs:

* dlltool.c (file scope): Added new globals identify_ms and
        identify_strict. New typedef dll_name_list_type, and globals
        identify_dll_name_list_head and identify_dll_name_list_tail. Added
        new global identify_member_contains_symname_result.
        (identify_append_dll_name_to_list): New function.
        (identify_count_dll_name_list): New function.
        (identify_print_dll_name_list): New function.
        (identify_free_dll_name_list): New function.
        (identify_search_archive): Changed signature to take function
        pointer to operation to apply to each member, and data to pass on
        to that function.
        (identify_search_member): Changed signature to accept user data
        from caller.
        (identify_member_contains_symname): New function.
        (identify_dll_for_implib): Rewrite. Now determines whether implib
        is ms- or binutils- style, before searching sections for
        dllname. Allows multiple dllnames.
        (identify_process_section_p): Search alternate section for dllname
        when implib is ms-style.
        (identify_search_section): Add additional conditions to excludes
        candidate sections from consideration.
        (usage): Added --identify-strict.
        (long_options): Added --identify-strict.
        (main): Handle --identify-strict option.
        * doc/binutils.texi: Document --identify-strict option.
        * NEWS: Document --identify and --identify-strict options.
This commit is contained in:
Nick Clifton 2009-01-13 09:23:51 +00:00
parent 840b96a769
commit 71c57c1668
4 changed files with 322 additions and 96 deletions

View file

@ -11,7 +11,7 @@
@copying
@c man begin COPYRIGHT
Copyright @copyright{} 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@ -3373,7 +3373,8 @@ dlltool [@option{-d}|@option{--input-def} @var{def-file-name}]
[@option{-p}|@option{--ext-prefix-alias} @var{prefix}]
[@option{-x}|@option{--no-idata4}] [@option{-c}|@option{--no-idata5}]
[@option{--use-nul-prefixed-import-tables}]
[@option{-I}|@option{--identify} @var{library-file-name}] [@option{-i}|@option{--interwork}]
[@option{-I}|@option{--identify} @var{library-file-name}] [@option{--identify-strict}]
[@option{-i}|@option{--interwork}]
[@option{-n}|@option{--nodelete}] [@option{-t}|@option{--temp-prefix} @var{prefix}]
[@option{-v}|@option{--verbose}]
[@option{-h}|@option{--help}] [@option{-V}|@option{--version}]
@ -3601,12 +3602,16 @@ with certain operating systems.
@item -I @var{filename}
@itemx --identify @var{filename}
Specifies that @command{dlltool} should inspect the import library
indicated by @var{filename} and report, on @code{stdout}, the name of
the associated DLL. This can be performed in addition to any other
operations indicated by the other options and arguments. @command{dlltool}
@option{--identify} fails if the import library does not exist, is not
actually an import library, or (rarely) if the import library somehow
specifies more than one associated DLL.
indicated by @var{filename} and report, on @code{stdout}, the name(s)
of the associated DLL(s). This can be performed in addition to any
other operations indicated by the other options and arguments.
@command{dlltool} fails if the import library does not exist or is not
actually an import library. See also @option{--identify-strict}.
@item --identify-strict
Modifies the behavior of the @option{--identify} option, such
that an error is reported if @var{filename} is associated with
more than one DLL.
@item -i
@itemx --interwork