[Ups-cvs] ups/ups ao_dwftype.c,1.19,1.20
Brought to you by:
ianedwards
From: Tom H. <th...@us...> - 2014-09-24 11:50:07
|
Update of /cvsroot/ups/ups/ups In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv4063/ups Modified Files: ao_dwftype.c Log Message: Always search the whole of the type list when fixing up type references, as we can't guarantee any particular order of backward and forward references in the DWARF so just searching part of the list is not safe. Index: ao_dwftype.c =================================================================== RCS file: /cvsroot/ups/ups/ups/ao_dwftype.c,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** ao_dwftype.c 25 Mar 2014 13:48:02 -0000 1.19 --- ao_dwftype.c 24 Sep 2014 11:50:05 -0000 1.20 *************** *** 64,68 **** dwf_guess_ae_alignment PROTO((aggr_or_enum_def_t *ae)); static type_t * ! dwf_fixup_type PROTO((dtype_t *dt)); /* --- 64,68 ---- dwf_guess_ae_alignment PROTO((aggr_or_enum_def_t *ae)); static type_t * ! dwf_fixup_type PROTO((dtype_t *dt, dtype_t *dtypes)); /* *************** *** 942,946 **** */ for (dt = start; dt; dt = dt->dt_next) { ! dwf_fixup_type(dt); if (dt->dt_base_offset != (off_t)0) { incomplete++; --- 942,946 ---- */ for (dt = start; dt; dt = dt->dt_next) { ! dwf_fixup_type(dt, start); if (dt->dt_base_offset != (off_t)0) { incomplete++; *************** *** 1065,1070 **** */ static type_t * ! dwf_fixup_type(dt) dtype_t *dt; { dtype_t *dbase; --- 1065,1071 ---- */ static type_t * ! dwf_fixup_type(dt, dtypes) dtype_t *dt; + dtype_t *dtypes; { dtype_t *dbase; *************** *** 1078,1086 **** * Look for the base type in our list. */ ! if ((dbase = dwf_lookup_dtype(dt, dt->dt_base_offset)) != NULL) { /* * Resolve the base type if possible. */ ! if ((base = dwf_fixup_type(dbase)) != NULL) { *(dt->dt_p_type) = base; dt->dt_base_offset = (off_t)0; /* mark it done */ --- 1079,1087 ---- * Look for the base type in our list. */ ! if ((dbase = dwf_lookup_dtype(dtypes, dt->dt_base_offset)) != NULL) { /* * Resolve the base type if possible. */ ! if ((base = dwf_fixup_type(dbase, dtypes)) != NULL) { *(dt->dt_p_type) = base; dt->dt_base_offset = (off_t)0; /* mark it done */ |