[PATCH] D143745: Make section attribute and -ffunction-sections play nicely

Paul Robinson via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Feb 10 11:24:53 PST 2023


probinson added a comment.

I'm not sure I understand the linker's mechanics here. Let me say some things and you can describe my misunderstanding.

- If the linker was going to discard all of section foo (in the current scheme), that means it had no reason to retain either f() or g(). In the new scheme, the net result would be the same, both f() and g() are dead and would be discarded. So, no behavior change.
- If the linker wanted to retain f(), but had no reason to retain g(), then in the current scheme it would retain all of section foo. In the new scheme it would retain f() but discard g(). This is the desired behavior change.

Is that second point the "surprising" behavior? Note that this change applies only to functions, not variables.

Yes, more testing is definitely a good thing.

If we do have to have an option, I suppose it could be something like:
`-ffunction-sections[=(default,all)]` where `-ffunction-sections` or `-ffunction-sections=default` will apply only to `.text` (or other default text section), while `-ffunction-sections=all` does what my patch says.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D143745/new/

https://reviews.llvm.org/D143745



More information about the cfe-commits mailing list