Print this page
11067 debug statistics crash ld(1) when -z allextract


 167         Lm_list         *lml = ofl->ofl_lml;
 168 
 169         if (DBG_NOTCLASS(DBG_C_STATS | DBG_C_UNUSED))
 170                 return;
 171 
 172         Dbg_util_nl(lml, DBG_NL_STD);
 173         for (APLIST_TRAVERSE(ofl->ofl_ars, idx, adp)) {
 174                 size_t  poffset = 0;
 175                 uint_t  count = 0, used = 0;
 176 
 177                 if ((adp->ad_flags & FLG_ARD_EXTRACT) == 0) {
 178                         Dbg_unused_file(lml, adp->ad_name, 0, 0);
 179                         continue;
 180                 }
 181 
 182                 if (DBG_NOTCLASS(DBG_C_STATS))
 183                         continue;
 184 
 185                 arsym = adp->ad_start;
 186                 aux = adp->ad_aux;
 187                 while (arsym->as_off) {
 188                         /*
 189                          * Assume that symbols from the same member file are
 190                          * adjacent within the archive symbol table.
 191                          */
 192                         if (poffset != arsym->as_off) {
 193                                 count++;
 194                                 poffset = arsym->as_off;
 195                                 if (aux->au_mem == FLG_ARMEM_PROC)
 196                                         used++;
 197                         }
 198                         aux++, arsym++;
 199                 }
 200                 if ((count == 0) || (used == 0))
 201                         continue;
 202 #ifndef UDIV_NOT_SUPPORTED
 203                 dbg_print(lml, MSG_INTL(MSG_STATS_AR), adp->ad_name, count,
 204                     used, ((used * 100) / count));
 205 #endif
 206         }
 207         Dbg_util_nl(lml, DBG_NL_STD);
 208 }


 167         Lm_list         *lml = ofl->ofl_lml;
 168 
 169         if (DBG_NOTCLASS(DBG_C_STATS | DBG_C_UNUSED))
 170                 return;
 171 
 172         Dbg_util_nl(lml, DBG_NL_STD);
 173         for (APLIST_TRAVERSE(ofl->ofl_ars, idx, adp)) {
 174                 size_t  poffset = 0;
 175                 uint_t  count = 0, used = 0;
 176 
 177                 if ((adp->ad_flags & FLG_ARD_EXTRACT) == 0) {
 178                         Dbg_unused_file(lml, adp->ad_name, 0, 0);
 179                         continue;
 180                 }
 181 
 182                 if (DBG_NOTCLASS(DBG_C_STATS))
 183                         continue;
 184 
 185                 arsym = adp->ad_start;
 186                 aux = adp->ad_aux;
 187                 while ((arsym != NULL) && (arsym->as_off != NULL)) {
 188                         /*
 189                          * Assume that symbols from the same member file are
 190                          * adjacent within the archive symbol table.
 191                          */
 192                         if (poffset != arsym->as_off) {
 193                                 count++;
 194                                 poffset = arsym->as_off;
 195                                 if (aux->au_mem == FLG_ARMEM_PROC)
 196                                         used++;
 197                         }
 198                         aux++, arsym++;
 199                 }
 200                 if ((count == 0) || (used == 0))
 201                         continue;
 202 
 203                 dbg_print(lml, MSG_INTL(MSG_STATS_AR), adp->ad_name, count,
 204                     used, ((used * 100) / count));

 205         }
 206         Dbg_util_nl(lml, DBG_NL_STD);
 207 }