[Click] [PATCH] Fix '--disable-int64' build error.
Eddie Kohler
kohler at cs.ucla.edu
Tue Sep 18 16:41:03 EDT 2007
Checked in a patch for this. Thanks!
E
Joonwoo Park wrote:
> Eddie,
> make with --disable-int64 says that
> ../elements/userlevel/fromfile.cc: In static member function 'static
> String FromFile::filesize_handler(Element*, void*)':
> ../elements/userlevel/fromfile.cc:546: error: call of overloaded
> 'String(__off64_t&)' is ambiguous
> ../include/click/string.hh:41: note: candidates are: String::String(double)
> ../include/click/string.hh:31: note:
> String::String(long unsigned int)
> ../include/click/string.hh:30: note: String::String(long int)
> ../include/click/string.hh:29: note:
> String::String(unsigned int)
> ../include/click/string.hh:28: note: String::String(int)
> ../include/click/string.hh:286: note:
> String::String(unsigned char)
> ../include/click/string.hh:277: note: String::String(char)
> ../include/click/string.hh:267: note: String::String(bool)
> ../include/click/string.hh:225: note:
> String::String(const char*) <near match>
> ../include/click/string.hh:295: note:
> String::String(const String&) <near match>
> ../elements/userlevel/fromfile.cc: In static member function 'static
> String FromFile::filepos_handler(Element*, void*)':
> ../elements/userlevel/fromfile.cc:555: error: call of overloaded
> 'String(long long int)' is ambiguous
> ../include/click/string.hh:41: note: candidates are: String::String(double)
> ../include/click/string.hh:31: note:
> String::String(long unsigned int)
> ../include/click/string.hh:30: note: String::String(long int)
> ../include/click/string.hh:29: note:
> String::String(unsigned int)
> ../include/click/string.hh:28: note: String::String(int)
> ../include/click/string.hh:286: note:
> String::String(unsigned char)
> ../include/click/string.hh:277: note: String::String(char)
> ../include/click/string.hh:267: note: String::String(bool)
> ../include/click/string.hh:225: note:
> String::String(const char*) <near match>
> ../include/click/string.hh:295: note:
> String::String(const String&) <near match>
>
> and
>
> ../elements/userlevel/fromdump.cc: In static member function 'static
> String FromDump::read_handler(Element*, void*)':
> ../elements/userlevel/fromdump.cc:519: error: call of overloaded
> 'String(off_t&)' is ambiguous
> ../include/click/string.hh:41: note: candidates are: String::String(double)
> ../include/click/string.hh:31: note:
> String::String(long unsigned int)
> ../include/click/string.hh:30: note: String::String(long int)
> ../include/click/string.hh:29: note:
> String::String(unsigned int)
> ../include/click/string.hh:28: note: String::String(int)
> ../include/click/string.hh:286: note:
> String::String(unsigned char)
> ../include/click/string.hh:277: note: String::String(char)
> ../include/click/string.hh:267: note: String::String(bool)
> ../include/click/string.hh:225: note:
> String::String(const char*) <near match>
> ../include/click/string.hh:295: note:
> String::String(const String&) <near match>
>
> Thanks.
>
> Joonwoo Park (Jason Park)
>
> 2007/9/19, Eddie Kohler <kohler at cs.ucla.edu>:
>> Thanks Joonwoo, I checked in a variant of this patch that uses
>> ELEMENT_REQUIRES instead. Try make elemlist to test it.
>>
>> Which elements don't work right under !HAVE_INT64_TYPES at userlevel?
>>
>> Eddie
>>
>>
>> Joonwoo Park wrote:
>>> Hi,
>>> There is a yet another build error with !HAVE_INT64_TYPES.
>>> My patch fixes only 'linuxmodule' build error.
>>> ** We have same problem at userlevel but to solve that we need
>>> compromise some functionality or enable String's int64 stuff always.
>>> **
>>> I couldn't work for it because of I can't sure what is the best solution.
>>>
>>> -
>>> Signed-off-by: Joonwoo Park <joonwpark81 at gmail.com>
>>>
>>> elements/linuxmodule/perfcountaccum.cc | 2 ++
>>> elements/linuxmodule/perfcountaccum.hh | 9 +++++++--
>>> elements/linuxmodule/setperfcount.cc | 2 ++
>>> 3 files changed, 11 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/elements/linuxmodule/perfcountaccum.cc
>>> b/elements/linuxmodule/perfcountaccum.cc
>>> index dd1367a..b9d92f0 100644
>>> --- a/elements/linuxmodule/perfcountaccum.cc
>>> +++ b/elements/linuxmodule/perfcountaccum.cc
>>> @@ -65,6 +65,7 @@ PerfCountAccum::initialize(ErrorHandler *errh)
>>> inline void
>>> PerfCountAccum::smaction(Packet *p)
>>> {
>>> +#if HAVE_INT64_TYPES
>>> #if __i386__
>>> unsigned l, h;
>>> rdpmc(_which, l, h);
>>> @@ -74,6 +75,7 @@ PerfCountAccum::smaction(Packet *p)
>>> #else
>>> // add other architectures here
>>> #endif
>>> +#endif
>>> _count++;
>>> }
>>>
>>> diff --git a/elements/linuxmodule/perfcountaccum.hh
>>> b/elements/linuxmodule/perfcountaccum.hh
>>> index be8e430..c86111d 100644
>>> --- a/elements/linuxmodule/perfcountaccum.hh
>>> +++ b/elements/linuxmodule/perfcountaccum.hh
>>> @@ -54,8 +54,13 @@ class PerfCountAccum : public PerfCountUser { public:
>>> private:
>>>
>>> int _which;
>>> - uint64_t _accum;
>>> - uint64_t _count;
>>> +#if HAVE_INT64_TYPES
>>> + typedef uint64_t counter_t;
>>> +#else
>>> + typedef uint32_t counter_t;
>>> +#endif
>>> + counter_t _accum;
>>> + counter_t _count;
>>>
>>> static String read_handler(Element *, void *);
>>> static int reset_handler(const String &, Element *, void *, ErrorHandler *);
>>> diff --git a/elements/linuxmodule/setperfcount.cc
>>> b/elements/linuxmodule/setperfcount.cc
>>> index e991e18..95c5183 100644
>>> --- a/elements/linuxmodule/setperfcount.cc
>>> +++ b/elements/linuxmodule/setperfcount.cc
>>> @@ -58,6 +58,7 @@ SetPerfCount::configure(Vector<String> &conf,
>>> ErrorHandler *errh)
>>> inline void
>>> SetPerfCount::smaction(Packet *p)
>>> {
>>> +#if HAVE_INT64_TYPES
>>> #if __i386__
>>> unsigned l, h;
>>> rdpmc(_which, l, h);
>>> @@ -66,6 +67,7 @@ SetPerfCount::smaction(Packet *p)
>>> #else
>>> // code for other architectures
>>> #endif
>>> +#endif
>>> }
>>>
>>> void
>>> -
>>>
>>> Joonwoo Park (Jason Park)
More information about the click
mailing list