X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Flocation.h;h=8b19f34ad4471f65d382add3a29d5a991639f904;hb=173981bc49c9e8fce9271cb47714952dbe2ec627;hp=3082d9e7ba3b5033d648330c9a01d362e5998d83;hpb=00e52e5376c7ec604a739e6242e6be36221162d7;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/location.h b/gdb/location.h index 3082d9e7ba..8b19f34ad4 100644 --- a/gdb/location.h +++ b/gdb/location.h @@ -1,5 +1,5 @@ /* Data structures and API for event locations in GDB. - Copyright (C) 2013-2015 Free Software Foundation, Inc. + Copyright (C) 2013-2016 Free Software Foundation, Inc. This file is part of GDB. @@ -97,13 +97,13 @@ extern enum event_location_type explicit location. The location must already be canonicalized/valid. */ extern char * - explicit_location_to_string (const struct explicit_location *explicit); + explicit_location_to_string (const struct explicit_location *explicit_loc); /* Return a malloc'd linespec string representation of the given explicit location. The location must already be canonicalized/valid. */ extern char * - explicit_location_to_linespec (const struct explicit_location *explicit); + explicit_location_to_linespec (const struct explicit_location *explicit_loc); /* Return a string representation of the LOCATION. This function may return NULL for unspecified linespecs, @@ -126,11 +126,14 @@ extern struct event_location * extern const char * get_linespec_location (const struct event_location *location); -/* Create a new address location. The return result is malloc'd - and should be freed with delete_event_location. */ +/* Create a new address location. + ADDR is the address corresponding to this event_location. + ADDR_STRING, a string of ADDR_STRING_LEN characters, is + the expression that was parsed to determine the address ADDR. */ extern struct event_location * - new_address_location (CORE_ADDR addr); + new_address_location (CORE_ADDR addr, const char *addr_string, + int addr_string_len); /* Return the address location (a CORE_ADDR) of the given event_location (which must be of type ADDRESS_LOCATION). */ @@ -138,6 +141,12 @@ extern struct event_location * extern CORE_ADDR get_address_location (const struct event_location *location); +/* Return the expression (a string) that was used to compute the address + of the given event_location (which must be of type ADDRESS_LOCATION). */ + +extern const char * + get_address_string_location (const struct event_location *location); + /* Create a new probe location. The return result is malloc'd and should be freed with delete_event_location. */ @@ -152,7 +161,8 @@ extern const char * /* Initialize the given explicit location. */ -extern void initialize_explicit_location (struct explicit_location *explicit); +extern void + initialize_explicit_location (struct explicit_location *explicit_loc); /* Create a new explicit location. If not NULL, EXPLICIT is checked for validity. If invalid, an exception is thrown. @@ -161,7 +171,7 @@ extern void initialize_explicit_location (struct explicit_location *explicit); delete_event_location. */ extern struct event_location * - new_explicit_location (const struct explicit_location *explicit); + new_explicit_location (const struct explicit_location *explicit_loc); /* Return the explicit location of the given event_location (which must be of type EXPLICIT_LOCATION). */ @@ -197,12 +207,39 @@ extern struct event_location * but invalid, input, e.g., if it is called with missing argument parameters or invalid options. - The return result must be freed with delete_event_location. */ + The return result must be freed with delete_event_location. + + This function is intended to be used by CLI commands and will parse + explicit locations in a CLI-centric way. Other interfaces should use + string_to_event_location_basic if they want to maintain support for + legacy specifications of probe, address, and linespec locations. */ extern struct event_location * string_to_event_location (char **argp, const struct language_defn *langauge); +/* Like string_to_event_location, but does not attempt to parse explicit + locations. */ + +extern struct event_location * + string_to_event_location_basic (char **argp, + const struct language_defn *language); + +/* Attempt to convert the input string in *ARGP into an explicit location. + ARGP is advanced past any processed input. Returns an event_location + (malloc'd) if an explicit location was successfully found in *ARGP, + NULL otherwise. + + IF !DONT_THROW, this function may call error() if *ARGP looks like + properly formed input, e.g., if it is called with missing argument + parameters or invalid options. If DONT_THROW is non-zero, this function + will not throw any exceptions. */ + +extern struct event_location * + string_to_explicit_location (const char **argp, + const struct language_defn *langauge, + int dont_throw); + /* A convenience function for testing for unset locations. */ extern int event_location_empty_p (const struct event_location *location);