Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
people:holger [2007/07/16 08:30] holger |
people:holger [2007/08/20 11:37] holger |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== GSoC 2007 - Codesize Reduction Project ==== | ||
- | |||
- | == Things done so far == | ||
- | |||
- | This is a summary of the things I did so far (including those that didn't work), | ||
- | in roughly chronological order. | ||
- | |||
- | * Get LXR running and use it on the Etherboot source. | ||
- | Status: Didn't seem as useful as I had hoped. Will revisit and investigate other | ||
- | options once I get to the full __attribute__ makeover. | ||
- | * Go through other programs and check their Makefiles to discover potentially interesting | ||
- | compiler options. | ||
- | Status: (Re)discovered the extremly useful stack alignment option in the Linux Kernel. | ||
- | Has been the biggest win so far, already merged. | ||
- | * check effects of some other options, write script for mass compiles with different sets, another one to compare the effects. | ||
- | Status: useful options checked in to gccopt branch. separate branch for packed enums. (not merged yet) (more on the not so useful ones later, if i can still figure them out) | ||
- | * prepare code for conversion to regparm option | ||
- | Status: went through the code, located the functions that need standard calling conventions. committed to gccopt branch, not merged (or reviewed) yet. hope i got them all. | ||
- | alternative may be attributing individual functions, but as i can't imagine a case where | ||
- | it's not a win, just attributing those where it must not be used should be better. | ||
- | |||
- | * prepare zalloc changes, go through all occurences of malloc and see if that memory is cleared soon after. | ||
- | Status: branch merged (think i got them all, had some false positives at first though -> reverted) | ||
- | * go through make symcheck output, make appropriate changes to code | ||
- | Status: went through a lot of output, picked the ones that seem not too controversial, | ||
- | checked in to symcheck branch. (not merged yet). Further plan is addressing the problem | ||
- | at the root and reduce the symcheck output by eliminating false positives, then address | ||
- | the remaining unclear ones (i do not claim to understand all the code i have read ;) | ||
- | No real solution discovered (yet), hackish ideas (eliminate by suffix, eliminate by | ||
- | exporting another symbol that says false positive) set aside for now. did research if | ||
- | better tools than nm and objdump exist, haven't found any yet. | ||
- | * test malloc attribute in preparation for the complete go-through all attributes. | ||
- | unfortunately no difference at all. local branch exists, may be included in the attr | ||
- | changes for completeness. | ||
- | |||
- | somewhere in between: install git, learn to use it, research documentation on attributes | ||
- | (found a nice page, will include the link later) | ||
- | |||
- | ==== Things to do in the second half of GSoC ==== | ||
- | |||
- | * Use LXR on current master, look into other tools if necessary (OpenGROK still looks | ||
- | nice, but I haven't set it up so far) | ||
- | * start annotating functions with attributes. (may be a large amount of work that might | ||
- | not lead to anything useful, but at least we know that then - and it might inspire | ||
- | ideas on other modifications to commonly used functions) | ||
- | * continue thinking about the symcheck problem. | ||
- | * write up some docs for the conversions that helped, give some background, maybe | ||
- | illustrated by examples of the generated code before and after. | ||
- | * write up docs on when functions (or other symbols) should be attributed by what. | ||
- | * whatever else comes up | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||