Messages in this thread | | | Date | Fri, 7 Sep 2018 08:08:37 -0500 | From | Josh Poimboeuf <> | Subject | Re: [PATCH v3] objtool: Support multiple rodata sections. |
| |
On Wed, Aug 29, 2018 at 06:04:12PM +0100, Allan Xavier wrote: > This commit adds support for processing switch jump tables in objects > with multiple .rodata sections, such as those created when using > -ffunction-sections and -fdata-sections. Currently, objtool always > looks in .rodata for jump table information which results in many > "sibling call from callable instruction with modified stack frame" > warnings with objects compiled using those flags. > > The fix is comprised of three parts: > > 1. Flagging all .rodata sections when importing elf information for > easier checking later. > > 2. Keeping a reference to the section each relocation is from in order > to get the list_head for the other relocations in that section. > > 3. Finding jump tables by following relocations to .rodata sections, > rather than always referencing a single global .rodata section. > > The patch has been tested without data sections enabled and no > differences in the resulting orc unwind information were seen. > > Note that as objtool adds terminators to end of each .text section the > unwind information generated between a function+data sections build and > a normal build aren't directly comparable. Manual inspection suggests > that objtool is now generating the correct information, or at least > making more of an effort to do so than it did previously. > > Signed-off-by: Allan Xavier <allan.x.xavier@oracle.com> > --- > > Changes since v2: > - Reworked and commented mark_rodata as suggested. > > Changes since v1: > - Cleaned up section symbol check. > - Fixed brackets. > - Moved mark_rodata to decode_sections(). > - Excluded *.str1.[18] sections from rodata sections.
Thanks, looks good. I'll submit it to the -tip tree.
-- Josh
| |