diff options
author | pfg <pfg@FreeBSD.org> | 2013-12-13 18:23:14 +0000 |
---|---|---|
committer | pfg <pfg@FreeBSD.org> | 2013-12-13 18:23:14 +0000 |
commit | c659dd08b2a8d9434dab25b05d9add325bfb6e66 (patch) | |
tree | d437da5cb161b4e3669bd7e68db6fca904521251 | |
parent | 3270502674e0cfc32dca7e8fea47926e7d7570ca (diff) | |
download | FreeBSD-src-c659dd08b2a8d9434dab25b05d9add325bfb6e66.zip FreeBSD-src-c659dd08b2a8d9434dab25b05d9add325bfb6e66.tar.gz |
MFC r258115 (partial);
gperf: bring a small update from Apple Developers tools 4.4
From [1]
offset.patch
Makes use the C offsetof() macro.
We are not merging the size_type.patch as it raises some
(apparently) bogus warnings and is not really used.
[1] http://opensource.apple.com/source/gperf/gperf-9/patches/
-rw-r--r-- | contrib/gperf/src/output.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/contrib/gperf/src/output.cc b/contrib/gperf/src/output.cc index 2732057..c5569eb 100644 --- a/contrib/gperf/src/output.cc +++ b/contrib/gperf/src/output.cc @@ -1106,9 +1106,7 @@ output_keyword_entry (KeywordExt *temp, int stringpool_index, const char *indent if (option[TYPE]) printf ("{"); if (option[SHAREDLIB]) - printf ("(int)(long)&((struct %s_t *)0)->%s_str%d", - option.get_stringpool_name (), option.get_stringpool_name (), - stringpool_index); + printf("offsetof(struct %s_t, %s_str%d)", option.get_stringpool_name (), option.get_stringpool_name (), stringpool_index); else output_string (temp->_allchars, temp->_allchars_length); if (option[TYPE]) @@ -2035,8 +2033,11 @@ Output::output () printf ("%s\n", _struct_decl); } - if (option[INCLUDE]) + if (option[INCLUDE]) { printf ("#include <string.h>\n"); /* Declare strlen(), strcmp(), strncmp(). */ + if (option[SHAREDLIB]) + printf("#include <stddef.h>\n"); /* Declare offsetof() */ + } if (!option[ENUM]) { |