+2009-10-05 Rafael Espindola <espindola@google.com>
+
+ * plugin-api.h (ld_plugin_status): Add LDPS_BAD_HANDLE.
+ (ld_plugin_get_input_file): New.
+ (ld_plugin_release_input_file): New.
+ (ld_plugin_add_input_library): New.
+ (ld_plugin_message): Mark format const.
+ (ld_plugin_level): Add LDPT_GET_INPUT_FILE, LDPT_RELEASE_INPUT_FILE and
+ LDPT_ADD_INPUT_LIBRARY.
+ (ld_plugin_tv): Add tv_get_input_file, tv_release_input_file and
+ tv_add_input_library.
+
+2009-10-04 Jerry Quinn <jlquinn@optonline.net>
+
+ * plugin-api.h: Fix compile.
+
2009-09-29 Jason Merrill <jason@redhat.com>
* demangle.h (enum demangle_component_type): Add
/* plugin-api.h -- External linker plugin API. */
-/* Copyright 2008 Free Software Foundation, Inc.
+/* Copyright 2009 Free Software Foundation, Inc.
Written by Cary Coutant <ccoutant@google.com>.
This file is part of binutils.
enum ld_plugin_symbol_resolution
{
LDPR_UNKNOWN = 0,
+
+ /* Symbol is still undefined at this point. */
LDPR_UNDEF,
+
+ /* This is the prevailing definition of the symbol, with references from
+ regular object code. */
LDPR_PREVAILING_DEF,
+
+ /* This is the prevailing definition of the symbol, with no
+ references from regular objects. It is only referenced from IR
+ code. */
LDPR_PREVAILING_DEF_IRONLY,
+
+ /* This definition was pre-empted by a definition in a regular
+ object file. */
LDPR_PREEMPTED_REG,
+
+ /* This definition was pre-empted by a definition in another IR file. */
LDPR_PREEMPTED_IR,
+
+ /* This symbol was resolved by a definition in another IR file. */
LDPR_RESOLVED_IR,
+
+ /* This symbol was resolved by a definition in a regular object
+ linked into the main executable. */
LDPR_RESOLVED_EXEC,
+
+ /* This symbol was resolved by a definition in a shared object. */
LDPR_RESOLVED_DYN
};
enum ld_plugin_status
(*ld_plugin_add_input_file) (char *pathname);
+/* The linker's interface for adding a library that should be searched. */
+
+typedef
+enum ld_plugin_status
+(*ld_plugin_add_input_library) (char *pathname);
+
/* The linker's interface for issuing a warning or error message. */
typedef
LDPT_ADD_INPUT_FILE,
LDPT_MESSAGE,
LDPT_GET_INPUT_FILE,
- LDPT_RELEASE_INPUT_FILE
+ LDPT_RELEASE_INPUT_FILE,
+ LDPT_ADD_INPUT_LIBRARY
};
/* The plugin transfer vector. */
ld_plugin_message tv_message;
ld_plugin_get_input_file tv_get_input_file;
ld_plugin_release_input_file tv_release_input_file;
+ ld_plugin_add_input_library tv_add_input_library;
} tv_u;
};