Module Name: src
Committed By: christos
Date: Thu Dec 29 16:41:16 UTC 2016
Modified Files:
src/usr.bin/xlint/lint1: cgram.y scan.l
Log Message:
Add more attributes.
To generate a diff of this commit:
cvs rdiff -u -r1.83 -r1.84 src/usr.bin/xlint/lint1/cgram.y
cvs rdiff -u -r1.68 -r1.69 src/usr.bin/xlint/lint1/scan.l
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.bin/xlint/lint1/cgram.y
diff -u src/usr.bin/xlint/lint1/cgram.y:1.83 src/usr.bin/xlint/lint1/cgram.y:1.84
--- src/usr.bin/xlint/lint1/cgram.y:1.83 Thu Dec 29 11:01:46 2016
+++ src/usr.bin/xlint/lint1/cgram.y Thu Dec 29 11:41:16 2016
@@ -1,5 +1,5 @@
%{
-/* $NetBSD: cgram.y,v 1.83 2016/12/29 16:01:46 christos Exp $ */
+/* $NetBSD: cgram.y,v 1.84 2016/12/29 16:41:16 christos Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: cgram.y,v 1.83 2016/12/29 16:01:46 christos Exp $");
+__RCSID("$NetBSD: cgram.y,v 1.84 2016/12/29 16:41:16 christos Exp $");
#endif
#include <stdlib.h>
@@ -199,25 +199,31 @@ anonymize(sym_t *s)
/* Type Attributes */
%token <y_type> T_ATTRIBUTE
%token <y_type> T_AT_ALIGNED
+%token <y_type> T_AT_COLD
+%token <y_type> T_AT_CONSTRUCTOR
%token <y_type> T_AT_DEPRECATED
-%token <y_type> T_AT_NORETURN
+%token <y_type> T_AT_FORMAT
+%token <y_type> T_AT_FORMAT_ARG
+%token <y_type> T_AT_FORMAT_PRINTF
+%token <y_type> T_AT_FORMAT_SCANF
+%token <y_type> T_AT_FORMAT_STRFTIME
+%token <y_type> T_AT_FORMAT_STRFMON
%token <y_type> T_AT_GNU_INLINE
%token <y_type> T_AT_MAY_ALIAS
+%token <y_type> T_AT_MODE
+%token <y_type> T_AT_NORETURN
+%token <y_type> T_AT_NO_INSTRUMENT_FUNCTION
%token <y_type> T_AT_PACKED
%token <y_type> T_AT_PURE
+%token <y_type> T_AT_RETURNS_TWICE
+%token <y_type> T_AT_SECTION
+%token <y_type> T_AT_SENTINEL
%token <y_type> T_AT_TUINION
%token <y_type> T_AT_TUNION
%token <y_type> T_AT_UNUSED
-%token <y_type> T_AT_WEAK
+%token <y_type> T_AT_USED
%token <y_type> T_AT_VISIBILITY
-%token <y_type> T_AT_FORMAT
-%token <y_type> T_AT_FORMAT_PRINTF
-%token <y_type> T_AT_FORMAT_SCANF
-%token <y_type> T_AT_FORMAT_STRFTIME
-%token <y_type> T_AT_FORMAT_ARG
-%token <y_type> T_AT_SENTINEL
-%token <y_type> T_AT_RETURNS_TWICE
-%token <y_type> T_AT_COLD
+%token <y_type> T_AT_WEAK
%left T_COMMA
%right T_ASSIGN T_OPASS
@@ -496,6 +502,7 @@ declaration:
type_attribute_format_type:
T_AT_FORMAT_PRINTF
| T_AT_FORMAT_SCANF
+ | T_AT_FORMAT_STRFMON
| T_AT_FORMAT_STRFTIME
;
@@ -504,8 +511,12 @@ type_attribute_spec:
| T_AT_ALIGNED T_LPARN constant T_RPARN
| T_AT_SENTINEL T_LPARN constant T_RPARN
| T_AT_FORMAT_ARG T_LPARN constant T_RPARN
+ | T_AT_MODE T_LPARN T_NAME T_RPARN
+ | T_AT_SECTION T_LPARN string T_RPARN
| T_AT_ALIGNED
+ | T_AT_CONSTRUCTOR
| T_AT_MAY_ALIAS
+ | T_AT_NO_INSTRUMENT_FUNCTION
| T_AT_NORETURN
| T_AT_COLD
| T_AT_RETURNS_TWICE
@@ -517,6 +528,9 @@ type_attribute_spec:
| T_AT_GNU_INLINE
| T_AT_FORMAT T_LPARN type_attribute_format_type T_COMMA
constant T_COMMA constant T_RPARN
+ | T_AT_USED {
+ addused();
+ }
| T_AT_UNUSED {
addused();
}
@@ -528,10 +542,15 @@ type_attribute_spec:
}
;
+type_attribute_spec_list:
+ type_attribute_spec
+ | type_attribute_spec_list T_COMMA type_attribute_spec
+ ;
+
type_attribute:
T_ATTRIBUTE T_LPARN T_LPARN {
attron = 1;
- } type_attribute_spec {
+ } type_attribute_spec_list {
attron = 0;
} T_RPARN T_RPARN
| T_PACKED {
Index: src/usr.bin/xlint/lint1/scan.l
diff -u src/usr.bin/xlint/lint1/scan.l:1.68 src/usr.bin/xlint/lint1/scan.l:1.69
--- src/usr.bin/xlint/lint1/scan.l:1.68 Sat Dec 24 12:43:45 2016
+++ src/usr.bin/xlint/lint1/scan.l Thu Dec 29 11:41:16 2016
@@ -1,5 +1,5 @@
%{
-/* $NetBSD: scan.l,v 1.68 2016/12/24 17:43:45 christos Exp $ */
+/* $NetBSD: scan.l,v 1.69 2016/12/29 16:41:16 christos Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: scan.l,v 1.68 2016/12/24 17:43:45 christos Exp $");
+__RCSID("$NetBSD: scan.l,v 1.69 2016/12/29 16:41:16 christos Exp $");
#endif
#include <stdlib.h>
@@ -215,8 +215,12 @@ static struct kwtab {
{ "transparent_union",T_AT_TUNION,0, 0, 0, 0, 0, 1, 1 },
{ "__unused__", T_AT_UNUSED, 0, 0, 0, 0, 0, 1, 1 },
{ "unused", T_AT_UNUSED, 0, 0, 0, 0, 0, 1, 1 },
+ { "__used__", T_AT_USED, 0, 0, 0, 0, 0, 1, 1 },
+ { "used", T_AT_USED, 0, 0, 0, 0, 0, 1, 1 },
{ "__gnu_inline__",T_AT_GNU_INLINE,0, 0, 0, 0, 0, 1, 1 },
{ "gnu_inline", T_AT_GNU_INLINE,0, 0, 0, 0, 0, 1, 1 },
+ { "__constructor__",T_AT_CONSTRUCTOR,0, 0, 0, 0, 0, 1, 1 },
+ { "constructor",T_AT_CONSTRUCTOR,0, 0, 0, 0, 0, 1, 1 },
{ "__deprecated__",T_AT_DEPRECATED,0, 0, 0, 0, 0, 1, 1 },
{ "deprecated", T_AT_DEPRECATED,0, 0, 0, 0, 0, 1, 1 },
{ "__may_alias__",T_AT_MAY_ALIAS,0, 0, 0, 0, 0, 1, 1 },
@@ -227,12 +231,20 @@ static struct kwtab {
{ "__printf__", T_AT_FORMAT_PRINTF,0, 0, 0, 0, 0, 1, 1 },
{ "scanf", T_AT_FORMAT_SCANF,0, 0, 0, 0, 0, 1, 1 },
{ "__scanf__", T_AT_FORMAT_SCANF,0, 0, 0, 0, 0, 1, 1 },
- { "strftime", T_AT_FORMAT_SCANF,0, 0, 0, 0, 0, 1, 1 },
+ { "strfmon", T_AT_FORMAT_STRFMON,0, 0, 0, 0, 0, 1, 1 },
+ { "__strfmon__",T_AT_FORMAT_STRFMON,0, 0, 0, 0, 0, 1, 1 },
+ { "strftime", T_AT_FORMAT_STRFTIME,0, 0, 0, 0, 0, 1, 1 },
{ "__strftime__",T_AT_FORMAT_STRFTIME,0,0, 0, 0, 0, 1, 1 },
{ "pure", T_AT_PURE, 0, 0, 0, 0, 0, 1, 1 },
{ "__pure__", T_AT_PURE, 0, 0, 0, 0, 0, 1, 1 },
{ "noreturn", T_AT_NORETURN, 0, 0, 0, 0, 0, 1, 1 },
{ "__noreturn__",T_AT_NORETURN, 0, 0, 0, 0, 0, 1, 1 },
+ { "no_instrument_function", T_AT_NO_INSTRUMENT_FUNCTION,
+ 0, 0, 0, 0, 0, 1, 1 },
+ { "__no_instrument_function", T_AT_NO_INSTRUMENT_FUNCTION,
+ 0, 0, 0, 0, 0, 1, 1 },
+ { "__no_instrument_function__", T_AT_NO_INSTRUMENT_FUNCTION,
+ 0, 0, 0, 0, 0, 1, 1 },
{ "sentinel", T_AT_SENTINEL, 0, 0, 0, 0, 0, 1, 1 },
{ "__sentinel__",T_AT_SENTINEL, 0, 0, 0, 0, 0, 1, 1 },
{ "format_arg", T_AT_FORMAT_ARG,0, 0, 0, 0, 0, 1, 1 },
@@ -273,12 +285,18 @@ static struct kwtab {
{ "int", T_TYPE, 0, INT, 0, 0, 0, 0, 0 },
{ "__symbolrename", T_SYMBOLRENAME, 0, 0, 0, 0, 0, 0, 0 },
{ "long", T_TYPE, 0, LONG, 0, 0, 0, 0, 0 },
+ { "mode", T_AT_MODE, 0, 0, 0, 0, 0, 1, 1 },
+ { "__mode", T_AT_MODE, 0, 0, 0, 0, 0, 1, 1 },
+ { "__mode__", T_AT_MODE, 0, 0, 0, 0, 0, 1, 1 },
{ "__real__", T_REAL, 0, 0, 0, 0, 1, 0, 0 },
{ "register", T_SCLASS, REG, 0, 0, 0, 0, 0, 0 },
{ "__restrict__",T_QUAL, 0, 0, RESTRICT, 0, 1, 0, 0 },
{ "restrict", T_QUAL, 0, 0, RESTRICT, 0, 1, 0, 0 },
{ "return", T_RETURN, 0, 0, 0, 0, 0, 0, 0 },
{ "__packed", T_PACKED, 0, 0, 0, 0, 0, 0, 0 },
+ { "section", T_AT_SECTION, 0, 0, 0, 0, 0, 1, 1 },
+ { "__section", T_AT_SECTION, 0, 0, 0, 0, 0, 1, 1 },
+ { "__section__",T_AT_SECTION, 0, 0, 0, 0, 0, 1, 1 },
{ "short", T_TYPE, 0, SHORT, 0, 0, 0, 0, 0 },
{ "signed", T_TYPE, 0, SIGNED, 0, 1, 0, 0, 0 },
{ "__signed__", T_TYPE, 0, SIGNED, 0, 0, 0, 0, 0 },