X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gdb%2Fdwarf2loc.h;h=96925e4c4850b80caed17995f397feb176d33904;hb=e609377629a12f6518eaf100c1983e23c80fecc1;hp=786e77cc5b8a29402ceb00876d66143e0e961ac5;hpb=6b662e19e420d2ef28f14b985390977080bcd341;p=platform%2Fupstream%2Fbinutils.git diff --git a/gdb/dwarf2loc.h b/gdb/dwarf2loc.h index 786e77c..96925e4 100644 --- a/gdb/dwarf2loc.h +++ b/gdb/dwarf2loc.h @@ -90,6 +90,15 @@ struct value *dwarf2_evaluate_loc_desc (struct type *type, size_t size, struct dwarf2_per_cu_data *per_cu); +/* Converts a dynamic property into a static one. ADDRESS is the address + of the object currently being evaluated and might be nedded. + Returns 1 if PROP could be converted and the static value is passed back + into VALUE, otherwise returns 0. */ + +int dwarf2_evaluate_property (const struct dynamic_prop *prop, + CORE_ADDR address, + CORE_ADDR *value); + CORE_ADDR dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu, unsigned int addr_index); @@ -135,6 +144,26 @@ struct dwarf2_loclist_baton unsigned char from_dwo; }; +/* A dynamic property is either expressed as a single location expression + or a location list. If the property is an indirection, pointing to + another die, keep track of the targeted type in REFERENCED_TYPE. */ + +struct dwarf2_property_baton +{ + /* If the property is an indirection, we need to evaluate the location + LOCEXPR or LOCLIST in the context of the type REFERENCED_TYPE. + If NULL, the location is the actual value of the property. */ + struct type *referenced_type; + union + { + /* Location expression. */ + struct dwarf2_locexpr_baton locexpr; + + /* Location list to be evaluated in the context of REFERENCED_TYPE. */ + struct dwarf2_loclist_baton loclist; + }; +}; + extern const struct symbol_computed_ops dwarf2_locexpr_funcs; extern const struct symbol_computed_ops dwarf2_loclist_funcs;