[HH] stubbing out boost::format?

Jon Evans jon at craftyjon.com
Wed Apr 1 14:28:49 EDT 2015


boost::format works by operator overloading of the '%' operator (modulus
normally).
You can define your own overloads that would stub it out, and then #define
format() to stub it out.
(unless Xilinx's compiler is stumbling on the operator overloads
themselves!)

Alternatively, it strikes me as *possibly* not that long a task to create a
set of regex's for search and replace to convert to sprintf.
The way I would go about that is to come up with a regex that matches a
format() call with one replacement (one '%' after the format), and then one
for 2 replacements, 3 replacements, etc.
This should drastically cut down on the work to convert to sprintf.  Note
that there may well be a way to do this all with one regex but my regex-fu
is not that strong.

-Jon

On Wed, Apr 1, 2015 at 12:30 PM, Greg London <email at greglondon.com> wrote:

>
> I have some c++ code that I've been developing for hardware simulation
> over the years.
>
> Very recently I got some cycles to try and port this code as an
> executable to the Zedboard, which uses the Xilinx ZYNQ chip, which
> has an ARM processor and FPGA fabric. This would give us probably
> a couple orders of magnitude in faster executions. And would save
> a lot of money in not needing simulation licenses.
>
> The problem is the Xilinx tools do not seem to like Boost::Format.
>
> My c++ code looks like this:
>
>    #include <boost/format.hpp>
>    using boost::format;
>    using boost::io::group;
>    string mystr = (format("%s Timercount=%d") % msg % count ) .str();
>
>
> Unfortunately, I've used boost::format everywhere.
> If it was rare, I'd just manually go through it and
> convert it to sprintf() or something.
> But its literally used thousands of different places
> in my code.
>
> Anyway, I thought maybe there might be a way to roll my own
> version of format() so that it just calls sprintf().
> Except I never quite understood the percent separators
> in format.
>
> I basically need something like this:
>
>     string boost::format(%){
>        return sprintf(%);
>     }
>
> Worst comes to worse, it's an empty function.
> I just want to get something to compile on the FPGA.
>
> It would be nice if the IO could be sent to the
> terminal port, which means the stub would have to actually
> return something meaningful.  But really, the priority
> is just getting the code to do memory accesses and the
> IO is helpful but not absolutely required.
>
> Could someone point me to a solution for this?
>
> Thanks,
> Greg
>
>
>
>
> _______________________________________________
> Hardwarehacking mailing list
> Hardwarehacking at blu.org
> http://lists.blu.org/mailman/listinfo/hardwarehacking
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.blu.org/pipermail/hardwarehacking/attachments/20150401/1ca8085a/attachment.html>


More information about the Hardwarehacking mailing list