I spent some time digging into the map file (which was also a suggestion by @jonk), and it looks like function sizes are available in the file.
For anyone interested, if you look inside a map file (in this case a XC8 generated one)
Name Link Load Length Selector Space Scale
text3 41 41 195 8 0
The length of text3 @ address 0x41 is 0x195 bytes in length.
Elsewhere in the map file, you'll find the symbol table and will find what function is linked to text3.
_foo_open text3 00041
When I compile program with
foo_open() my program size is 1878 byes (0x756) and when I completely remove
foo_open() my program size is 1472 bytes (0x5C0).
The difference between is 0x196. I am off by a 1 (not sure where/why) but I think this is close enough to what I am looking for.
So going even furthur into this, there is a section called MODULE INFORMATION, that tells you how big your module is, as well as each function.
Module Function Class Link Load Size
_clear_bar CODE 0729 0000 7
_display CODE 0583 0000 21
_set_bar CODE 032A 0000 56
_set_foo CODE 02F3 0000 56
_turn_off CODE 0761 0000 5
_clear_foo CODE 0723 0000 7
_toggle CODE 05BD 0000 20