Print this page
5425 ld_unwind_populate_hdr likely misaccounts for 'P'


 617                                  */
 618                                 for (cieaugndx = 0; cieaugstr[cieaugndx];
 619                                     cieaugndx++) {
 620                                         /* BEGIN CSTYLED */
 621                                         switch (cieaugstr[cieaugndx]) {
 622                                         case 'z':
 623                                             /* size */
 624                                             (void) uleb_extract(&data[off],
 625                                                 &ndx);
 626                                             break;
 627                                         case 'P':
 628                                             /* personality */
 629                                             ciePflag = data[off + ndx];
 630                                             ndx++;
 631                                                 /*
 632                                                  * Just need to extract the
 633                                                  * value to move on to the next
 634                                                  * field.
 635                                                  */
 636                                             (void) dwarf_ehe_extract(
 637                                                 &data[off + ndx],
 638                                                 &ndx, ciePflag,
 639                                                 ofl->ofl_dehdr->e_ident, B_FALSE,
 640                                                 shdr->sh_addr, off + ndx, 0);
 641                                             break;
 642                                         case 'R':
 643                                             /* code encoding */
 644                                             cieRflag = data[off + ndx];
 645                                             ndx++;
 646                                             break;
 647                                         case 'L':
 648                                             /* lsda encoding */
 649                                             ndx++;
 650                                             break;
 651                                         }
 652                                         /* END CSTYLED */
 653                                 }
 654                         } else {
 655                                 uint_t      bintabndx;
 656                                 uint64_t    initloc;
 657                                 uint64_t    fdeaddr;




 617                                  */
 618                                 for (cieaugndx = 0; cieaugstr[cieaugndx];
 619                                     cieaugndx++) {
 620                                         /* BEGIN CSTYLED */
 621                                         switch (cieaugstr[cieaugndx]) {
 622                                         case 'z':
 623                                             /* size */
 624                                             (void) uleb_extract(&data[off],
 625                                                 &ndx);
 626                                             break;
 627                                         case 'P':
 628                                             /* personality */
 629                                             ciePflag = data[off + ndx];
 630                                             ndx++;
 631                                                 /*
 632                                                  * Just need to extract the
 633                                                  * value to move on to the next
 634                                                  * field.
 635                                                  */
 636                                             (void) dwarf_ehe_extract(
 637                                                 &data[off],
 638                                                 &ndx, ciePflag,
 639                                                 ofl->ofl_dehdr->e_ident, B_FALSE,
 640                                                 shdr->sh_addr, off + ndx, 0);
 641                                             break;
 642                                         case 'R':
 643                                             /* code encoding */
 644                                             cieRflag = data[off + ndx];
 645                                             ndx++;
 646                                             break;
 647                                         case 'L':
 648                                             /* lsda encoding */
 649                                             ndx++;
 650                                             break;
 651                                         }
 652                                         /* END CSTYLED */
 653                                 }
 654                         } else {
 655                                 uint_t      bintabndx;
 656                                 uint64_t    initloc;
 657                                 uint64_t    fdeaddr;