using -Wl, -u, vfprintf -lprintf_min causes program to grow a lot why?

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

using -Wl, -u, vfprintf -lprintf_min causes program to grow a lot why?

Britton Kerin
The documentation seems to be saying that using those flags is
supposed to save flash, but without them, a main() that does a single
printf("foo\n"); gives me a 330 byte flash, while with them I get a
1330 byte flash.

If I remove the printf() call, I get flash sizes of 1228 or 228 with
or without the above mentioned printf-min flags, respectively.

It looks like somehow the printf-min flag ends up dragging in a bunch
extra code somehow?

The rest of my linker invocation looks like this:

avr-gcc -mmcu=atmega328p -lm -Wl,-gc-sections
-Wl,-Map=program_to_upload.out.map -o program_to_upload.out main.o

I think probably the documentation ought to mention this possibility,
assuming it isn't a bug.


Britton

_______________________________________________
AVR-chat mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/avr-chat
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: using -Wl, -u, vfprintf -lprintf_min causes program to grow a lot why?

Dave Hylands
When you call printf("foo\n") that gets optimized to puts("foo") so you're not really calling printf at all.

Try comparing printf("foo: %d\n", 42)';

On Sat, Apr 15, 2017 at 4:39 PM, Britton Kerin <[hidden email]> wrote:
The documentation seems to be saying that using those flags is
supposed to save flash, but without them, a main() that does a single
printf("foo\n"); gives me a 330 byte flash, while with them I get a
1330 byte flash.

If I remove the printf() call, I get flash sizes of 1228 or 228 with
or without the above mentioned printf-min flags, respectively.

It looks like somehow the printf-min flag ends up dragging in a bunch
extra code somehow?

The rest of my linker invocation looks like this:

avr-gcc -mmcu=atmega328p -lm -Wl,-gc-sections
-Wl,-Map=program_to_upload.out.map -o program_to_upload.out main.o

I think probably the documentation ought to mention this possibility,
assuming it isn't a bug.


Britton

_______________________________________________
AVR-chat mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/avr-chat



--
Dave Hylands
Shuswap, BC, Canada
http://www.davehylands.com

_______________________________________________
AVR-chat mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/avr-chat
Loading...