-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Am Sat, 9 Jun 2018 15:10:49 +0000 (UTC) Mark Johnston <ma...@freebsd.org> schrieb:
> Author: markj > Date: Sat Jun 9 15:10:49 2018 > New Revision: 334883 > URL: https://svnweb.freebsd.org/changeset/base/334883 > > Log: > Don't process DWARF generated from non-C/C++ code. > > ctfconvert(1) is not designed to handle DWARF generated from such code, > and will generally fail in non-obvious ways. Use an explicit check to > help catch such potential failures. > > Reported by: Johannes Lundberg <johal...@gmail.com> > MFC after: 2 weeks > > Modified: > head/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c > > Modified: head/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c > ============================================================================== > --- head/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c Sat Jun 9 > 15:10:39 > 2018 (r334882) +++ head/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c > Sat Jun 9 15:10:49 2018 (r334883) @@ -1901,7 +1901,7 @@ > should_have_dwarf(Elf > *elf) int > dw_read(tdata_t *td, Elf *elf, char *filename __unused) > { > - Dwarf_Unsigned abboff, hdrlen, nxthdr; > + Dwarf_Unsigned abboff, hdrlen, lang, nxthdr; > Dwarf_Half vers, addrsz, offsz; > Dwarf_Die cu = 0; > Dwarf_Die child = 0; > @@ -1941,8 +1941,8 @@ dw_read(tdata_t *td, Elf *elf, char *filename __unused > } > > if ((rc = dwarf_next_cu_header_b(dw.dw_dw, &hdrlen, &vers, &abboff, > - &addrsz, &offsz, NULL, &nxthdr, &dw.dw_err)) != DW_DLV_OK) { > - if (dw.dw_err.err_error == DW_DLE_NO_ENTRY) > + &addrsz, &offsz, NULL, &nxthdr, &dw.dw_err)) != DW_DLV_OK) { > + if (dw.dw_err.err_error == DW_DLE_NO_ENTRY) > exit(0); > else > terminate("rc = %d %s\n", rc, dwarf_errmsg(dw.dw_err)); > @@ -1971,6 +1971,25 @@ dw_read(tdata_t *td, Elf *elf, char *filename __unused > debug(1, "DWARF emitter: %s\n", prod); > free(prod); > } > + > + if (dwarf_attrval_unsigned(cu, DW_AT_language, &lang, &dw.dw_err) == 0) > + switch (lang) { > + case DW_LANG_C: > + case DW_LANG_C89: > + case DW_LANG_C99: > + case DW_LANG_C11: > + case DW_LANG_C_plus_plus: > + case DW_LANG_C_plus_plus_03: > + case DW_LANG_C_plus_plus_11: > + case DW_LANG_C_plus_plus_14: > + break; > + default: > + terminate("file contains DWARF for unsupported " > + "language %d", lang); > + } > + else > + warning("die %llu: failed to get language attribute: %s\n", > + die_off(&dw, cu), dwarf_errmsg(dw.dw_err)); > > if ((dw.dw_cuname = die_name(&dw, cu)) != NULL) { > char *base = xstrdup(basename(dw.dw_cuname)); > _______________________________________________ > svn-src-head@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/svn-src-head > To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org" This commit makes buildworld (WITH_META_MODE) failing: [...] ===> cddl/usr.bin/ctfconvert (obj,all,install) Building /usr/obj/usr/src/amd64.amd64/tmp/obj-tools/cddl/usr.bin/ctfconvert/dwarf.o - --- dwarf.o --- /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c:1980:8: error: use of undeclared identifier 'DW_LANG_C11' case DW_LANG_C11: ^ /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c:1982:8: error: use of undeclared identifier 'DW_LANG_C_plus_plus_03' case DW_LANG_C_plus_plus_03: ^ /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c:1983:8: error: use of undeclared identifier 'DW_LANG_C_plus_plus_11' case DW_LANG_C_plus_plus_11: ^ /usr/src/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c:1984:8: error: use of undeclared identifier 'DW_LANG_C_plus_plus_14' case DW_LANG_C_plus_plus_14: ^ 4 errors generated. *** [dwarf.o] Error code 1 kind regards, oh - -- O. Hartmann Ich widerspreche der Nutzung oder Übermittlung meiner Daten für Werbezwecke oder für die Markt- oder Meinungsforschung (§ 28 Abs. 4 BDSG). -----BEGIN PGP SIGNATURE----- iLUEARMKAB0WIQQZVZMzAtwC2T/86TrS528fyFhYlAUCWxwP3wAKCRDS528fyFhY lJOfAgCW9iJl/0qxPSn4CWidr+ZiZSUXc/AEvtFVMFPB9JFedZBsJRBQGv0ktWs0 suAa9pIP03SgWvco0vESi6AxfFYiAf9YB2uD25XiVOOl+lcEIZ3h/oGrRvejNR02 ppq+WPaiTUINWDb26l5Q1ugl1UU9lwhrzXgJGhdj9StSvxiZ6OuJ =zyIM -----END PGP SIGNATURE----- _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"