-----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"

Reply via email to