diff options
author | Bernhard Schommer <bernhardschommer@gmail.com> | 2018-10-18 16:49:34 +0200 |
---|---|---|
committer | Bernhard Schommer <bernhardschommer@gmail.com> | 2018-10-18 16:49:34 +0200 |
commit | 791971d203068a032477c7627cc97c06fac95da2 (patch) | |
tree | c6be9580aa28303d9c034c8a080f8f96d25fcd2d /cparser | |
parent | 020be062488d755236f296fff760c7491e11997b (diff) | |
download | compcert-791971d203068a032477c7627cc97c06fac95da2.tar.gz compcert-791971d203068a032477c7627cc97c06fac95da2.zip |
Catch exception from elab_attr_arg.
Catch the exception from a non constant argument of a packed
attribute and print an error.
Bug 24748
Diffstat (limited to 'cparser')
-rw-r--r-- | cparser/Elab.ml | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/cparser/Elab.ml b/cparser/Elab.ml index 718261b4..8f27b2a0 100644 --- a/cparser/Elab.ml +++ b/cparser/Elab.ml @@ -535,8 +535,11 @@ let elab_attribute env = function (List.flatten (List.map (elab_gcc_attr loc env) l))) | PACKED_ATTR (args, loc) -> - enter_gcc_attr loc + begin try + enter_gcc_attr loc (Attr("__packed__", List.map (elab_attr_arg loc env) args)) + with Wrong_attr_arg -> error loc "ill-formed 'packed' attribute"; [] + end | ALIGNAS_ATTR ([a], loc) -> warning loc Celeven_extension "'_Alignas' is a C11 extension"; begin match elab_attr_arg loc env a with |