3 #include <reactos/rossym.h>
12 _dwarfnametounit(Dwarf
*d
, char *name
, DwarfBlock
*bl
, DwarfSym
*s
)
27 werrstr("bad length in dwarf name header");
32 if(vers
!= 1 && vers
!= 2){
33 werrstr("bad version %d in dwarf name header", vers
);
37 dwarfget4(&b
); /* unit length */
42 str
= dwarfgetstring(&b
);
43 if(strcmp(str
, name
) == 0){
44 if(dwarfenumunit(d
, unit
, s
) < 0)
46 if(unit
+ off
>= s
->b
.ep
- d
->info
.data
){
47 werrstr("bad offset in name entry");
50 s
->b
.p
= d
->info
.data
+ unit
+ off
;
51 if(dwarfnextsym(d
, s
) < 0)
53 if(s
->attrs
.name
==nil
|| strcmp(s
->attrs
.name
, name
)!=0){
54 werrstr("unexpected name %#q in lookup for %#q", s
->attrs
.name
, name
);
62 werrstr("unknown name '%s'", name
);
67 dwarflookupname(Dwarf
*d
, char *name
, DwarfSym
*sym
)
69 return _dwarfnametounit(d
, name
, &d
->pubnames
, sym
);
75 dwarflookuptype(Dwarf *d, char *name, DwarfSym *sym)
77 return _dwarfnametounit(d, name, &d->pubtypes, sym);