Date: Tue, 30 Aug 2016 20:30:29 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r305087 - in projects/clang390-import: contrib/gcc/doc contrib/gcclibs/libcpp contrib/telnet/telnet contrib/tnftp/src tools/regression/capsicum/syscalls Message-ID: <201608302030.u7UKUTUX044110@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Tue Aug 30 20:30:29 2016 New Revision: 305087 URL: https://svnweb.freebsd.org/changeset/base/305087 Log: Merge ^/head r305081 through r305086. Modified: projects/clang390-import/contrib/gcc/doc/cpp.texi projects/clang390-import/contrib/gcclibs/libcpp/ChangeLog.gcc43 projects/clang390-import/contrib/gcclibs/libcpp/internal.h projects/clang390-import/contrib/gcclibs/libcpp/macro.c projects/clang390-import/contrib/gcclibs/libcpp/pch.c projects/clang390-import/contrib/telnet/telnet/commands.c projects/clang390-import/contrib/tnftp/src/ftp.c projects/clang390-import/tools/regression/capsicum/syscalls/cap_fcntls_limit.c projects/clang390-import/tools/regression/capsicum/syscalls/cap_ioctls_limit.c Directory Properties: projects/clang390-import/ (props changed) projects/clang390-import/contrib/gcc/ (props changed) projects/clang390-import/contrib/tnftp/ (props changed) Modified: projects/clang390-import/contrib/gcc/doc/cpp.texi ============================================================================== --- projects/clang390-import/contrib/gcc/doc/cpp.texi Tue Aug 30 20:27:22 2016 (r305086) +++ projects/clang390-import/contrib/gcc/doc/cpp.texi Tue Aug 30 20:30:29 2016 (r305087) @@ -1912,6 +1912,13 @@ underscores. @table @code +@item __COUNTER__ +This macro expands to sequential integral values starting from 0. In +conjuction with the @code{##} operator, this provides a convenient means to +generate unique identifiers. Care must be taken to ensure that +@code{__COUNTER__} is not expanded prior to inclusion of precompiled headers +which use it. Otherwise, the precompiled headers will not be used. + @item __GNUC__ @itemx __GNUC_MINOR__ @itemx __GNUC_PATCHLEVEL__ Modified: projects/clang390-import/contrib/gcclibs/libcpp/ChangeLog.gcc43 ============================================================================== --- projects/clang390-import/contrib/gcclibs/libcpp/ChangeLog.gcc43 Tue Aug 30 20:27:22 2016 (r305086) +++ projects/clang390-import/contrib/gcclibs/libcpp/ChangeLog.gcc43 Tue Aug 30 20:30:29 2016 (r305087) @@ -12,6 +12,17 @@ PR preprocessor/14331 * lex.c (_cpp_get_fresh_line): Don't warn if no newline at EOF. +2007-05-24 Ollie Wild <aaw@google.com> (r125041) + + * macro.c (_cpp_builtin_macro_text): Handle BT_COUNTER. + * pch.c (cpp_write_pch_deps): Save __COUNTER__ state. + (cpp_write_pch_state): Save __COUNTER__ state. + (cpp_valid_state): Check valid __COUNTER__ state. + (cpp_read_state): Read new __COUNTER__ state. + * include/cpplib.h (enum builtin_type): Add BT_COUNTER enumerator. + * init.c (builtin_array): Add __COUNTER__/BT_COUNTER. + * internal.h (struct cpp_reader): Add counter member. + 2007-05-21 Ian Lance Taylor <iant@google.com> (r124929) * internal.h (struct cpp_reader): Add new fields: Modified: projects/clang390-import/contrib/gcclibs/libcpp/internal.h ============================================================================== --- projects/clang390-import/contrib/gcclibs/libcpp/internal.h Tue Aug 30 20:27:22 2016 (r305086) +++ projects/clang390-import/contrib/gcclibs/libcpp/internal.h Tue Aug 30 20:30:29 2016 (r305087) @@ -458,7 +458,8 @@ struct cpp_reader of precompiled headers. */ struct cpp_savedstate *savedstate; - unsigned int nextcounter; + /* Next value of __COUNTER__ macro. */ + unsigned int counter; }; /* Character classes. Based on the more primitive macros in safe-ctype.h. Modified: projects/clang390-import/contrib/gcclibs/libcpp/macro.c ============================================================================== --- projects/clang390-import/contrib/gcclibs/libcpp/macro.c Tue Aug 30 20:27:22 2016 (r305086) +++ projects/clang390-import/contrib/gcclibs/libcpp/macro.c Tue Aug 30 20:30:29 2016 (r305087) @@ -268,7 +268,7 @@ _cpp_builtin_macro_text (cpp_reader *pfi if (CPP_OPTION (pfile, directives_only) && pfile->state.in_directive) cpp_error (pfile, CPP_DL_ERROR, "__COUNTER__ expanded inside directive with -fdirectives-only"); - number = pfile->nextcounter++; + number = pfile->counter++; break; } Modified: projects/clang390-import/contrib/gcclibs/libcpp/pch.c ============================================================================== --- projects/clang390-import/contrib/gcclibs/libcpp/pch.c Tue Aug 30 20:27:22 2016 (r305086) +++ projects/clang390-import/contrib/gcclibs/libcpp/pch.c Tue Aug 30 20:30:29 2016 (r305087) @@ -337,6 +337,14 @@ cpp_write_pch_deps (cpp_reader *r, FILE /* Free the saved state. */ free (ss); r->savedstate = NULL; + + /* Save the next value of __COUNTER__. */ + if (fwrite (&r->counter, sizeof (r->counter), 1, f) != 1) + { + cpp_errno (r, CPP_DL_ERROR, "while writing precompiled header"); + return -1; + } + return 0; } @@ -361,6 +369,15 @@ cpp_write_pch_state (cpp_reader *r, FILE return -1; } + /* Save the next __COUNTER__ value. When we include a precompiled header, + we need to start at the offset we would have if the header had been + included normally. */ + if (fwrite (&r->counter, sizeof (r->counter), 1, f) != 1) + { + cpp_errno (r, CPP_DL_ERROR, "while writing precompiled header"); + return -1; + } + return 0; } @@ -423,6 +440,7 @@ cpp_valid_state (cpp_reader *r, const ch struct ht_node_list nl = { 0, 0, 0 }; unsigned char *first, *last; unsigned int i; + unsigned int counter; /* Read in the list of identifiers that must be defined Check that they are defined in the same way. */ @@ -524,7 +542,23 @@ cpp_valid_state (cpp_reader *r, const ch } free(nl.defs); + nl.defs = NULL; free (undeftab); + undeftab = NULL; + + /* Read in the next value of __COUNTER__. + Check that (a) __COUNTER__ was not used in the pch or (b) __COUNTER__ + has not been used in this translation unit. */ + if (read (fd, &counter, sizeof (counter)) != sizeof (counter)) + goto error; + if (counter && r->counter) + { + if (CPP_OPTION (r, warn_invalid_pch)) + cpp_error (r, CPP_DL_WARNING_SYSHDR, + "%s: not used because `__COUNTER__' is invalid", + name); + goto fail; + } /* We win! */ return 0; @@ -631,6 +665,7 @@ cpp_read_state (cpp_reader *r, const cha { size_t i; struct lexer_state old_state; + unsigned int counter; /* Restore spec_nodes, which will be full of references to the old hashtable entries and so will now be invalid. */ @@ -690,6 +725,12 @@ cpp_read_state (cpp_reader *r, const cha if (! _cpp_read_file_entries (r, f)) goto error; + if (fread (&counter, sizeof (counter), 1, f) != 1) + goto error; + + if (!r->counter) + r->counter = counter; + return 0; error: Modified: projects/clang390-import/contrib/telnet/telnet/commands.c ============================================================================== --- projects/clang390-import/contrib/telnet/telnet/commands.c Tue Aug 30 20:27:22 2016 (r305086) +++ projects/clang390-import/contrib/telnet/telnet/commands.c Tue Aug 30 20:30:29 2016 (r305087) @@ -112,7 +112,7 @@ static int send_tncmd(void (*)(int, int) static int setmod(int); static int clearmode(int); static int modehelp(void); -static int sourceroute(struct addrinfo *, char *, char **, int *, int *, int *); +static int sourceroute(struct addrinfo *, char *, unsigned char **, int *, int *, int *); typedef struct { const char *name; /* command name */ @@ -2171,7 +2171,7 @@ switch_af(struct addrinfo **aip) int tn(int argc, char *argv[]) { - char *srp = 0; + unsigned char *srp = 0; int proto, opt; int srlen; int srcroute = 0, result; @@ -2844,10 +2844,10 @@ cmdrc(char *m1, char *m2) * setsockopt, as socket protocol family. */ static int -sourceroute(struct addrinfo *ai, char *arg, char **cpp, int *lenp, int *protop, int *optp) +sourceroute(struct addrinfo *ai, char *arg, unsigned char **cpp, int *lenp, int *protop, int *optp) { static char buf[1024 + ALIGNBYTES]; /*XXX*/ - char *cp, *cp2, *lsrp, *ep; + unsigned char *cp, *cp2, *lsrp, *ep; struct sockaddr_in *_sin; #ifdef INET6 struct sockaddr_in6 *sin6; Modified: projects/clang390-import/contrib/tnftp/src/ftp.c ============================================================================== --- projects/clang390-import/contrib/tnftp/src/ftp.c Tue Aug 30 20:27:22 2016 (r305086) +++ projects/clang390-import/contrib/tnftp/src/ftp.c Tue Aug 30 20:30:29 2016 (r305087) @@ -2050,7 +2050,7 @@ abort_squared(int dummy) void abort_remote(FILE *din) { - char buf[BUFSIZ]; + unsigned char buf[BUFSIZ]; int nfnd; if (cout == NULL) { Modified: projects/clang390-import/tools/regression/capsicum/syscalls/cap_fcntls_limit.c ============================================================================== --- projects/clang390-import/tools/regression/capsicum/syscalls/cap_fcntls_limit.c Tue Aug 30 20:27:22 2016 (r305086) +++ projects/clang390-import/tools/regression/capsicum/syscalls/cap_fcntls_limit.c Tue Aug 30 20:30:29 2016 (r305087) @@ -157,13 +157,16 @@ static void fcntl_tests_1(int fd) { uint32_t fcntlrights; + cap_rights_t rights; CHECK(cap_fcntls_limit(fd, CAP_FCNTL_GETFL) == 0); fcntlrights = 0; CHECK(cap_fcntls_get(fd, &fcntlrights) == 0); CHECK(fcntlrights == CAP_FCNTL_GETFL); - CHECK(cap_rights_limit(fd, CAP_ALL & ~CAP_FCNTL) == 0); + CAP_ALL(&rights); + cap_rights_clear(&rights, CAP_FCNTL); + CHECK(cap_rights_limit(fd, &rights) == 0); fcntlrights = CAP_FCNTL_ALL; CHECK(cap_fcntls_get(fd, &fcntlrights) == 0); @@ -206,8 +209,11 @@ static void fcntl_tests_2(int fd) { uint32_t fcntlrights; + cap_rights_t rights; - CHECK(cap_rights_limit(fd, CAP_ALL & ~CAP_FCNTL) == 0); + CAP_ALL(&rights); + cap_rights_clear(&rights, CAP_FCNTL); + CHECK(cap_rights_limit(fd, &rights) == 0); fcntlrights = CAP_FCNTL_ALL; CHECK(cap_fcntls_get(fd, &fcntlrights) == 0); Modified: projects/clang390-import/tools/regression/capsicum/syscalls/cap_ioctls_limit.c ============================================================================== --- projects/clang390-import/tools/regression/capsicum/syscalls/cap_ioctls_limit.c Tue Aug 30 20:27:22 2016 (r305086) +++ projects/clang390-import/tools/regression/capsicum/syscalls/cap_ioctls_limit.c Tue Aug 30 20:30:29 2016 (r305087) @@ -131,6 +131,7 @@ static void ioctl_tests_1(int fd) { unsigned long cmds[2]; + cap_rights_t rights; cmds[0] = FIOCLEX; CHECK(cap_ioctls_limit(fd, cmds, 1) == 0); @@ -139,7 +140,10 @@ ioctl_tests_1(int fd) CHECK(cmds[0] == FIOCLEX); CHECK(cmds[1] == 0); - CHECK(cap_rights_limit(fd, CAP_ALL & ~CAP_IOCTL) == 0); + CAP_ALL(&rights); + cap_rights_clear(&rights, CAP_IOCTL); + + CHECK(cap_rights_limit(fd, &rights) == 0); CHECK(cap_ioctls_get(fd, cmds, nitems(cmds)) == 0); cmds[0] = FIOCLEX; @@ -173,8 +177,12 @@ static void ioctl_tests_2(int fd) { unsigned long cmds[2]; + cap_rights_t rights; + + CAP_ALL(&rights); + cap_rights_clear(&rights, CAP_IOCTL); - CHECK(cap_rights_limit(fd, CAP_ALL & ~CAP_IOCTL) == 0); + CHECK(cap_rights_limit(fd, &rights) == 0); CHECK(cap_ioctls_get(fd, cmds, nitems(cmds)) == 0); cmds[0] = FIOCLEX;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201608302030.u7UKUTUX044110>