|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 04/16] generic-sections: add section core helpers
On Thu, Aug 25, 2016 at 12:06:33PM +1000, Nicholas Piggin wrote:
> On Wed, 24 Aug 2016 22:12:53 +0200
> "Luis R. Rodriguez" <mcgrof@xxxxxxxxxx> wrote:
> > But:
> >
> > git grep SECTION_TEXT works as expected immediately.
> >
> > I guess its a matter of perspective.
> >
> > > They are also
> > > the names you'll be grepping for when you look at disassembly.
> >
> > Sure but if you're grepping asm, you very likely know what to look for.
>
> After you have gone through the extra layer of naming indirection
> to work out what it is. I'm still not sold on the name indirection
> and hiding wildcards. Not just for asm grepping, but I don't think
> it's a negative thing for devs working on the linker to know what
> actual section names and commands are being used, as much as possible.
OK lets see what it looks like after dropping them. Will try that.
> > The idea was to add helpers to do the globbing more easily.
> >
> > The glob for sections now documented is SECTION_ALL()
> > The glob that is range specific is SECTION_RNG_ALL()
> > The glob that is linker table specific is SECTION_TBL_ALL()
>
> I still don't see this is better than
>
> .text*
> .text.*
> .text.range.*
> .text.table.*
> etc.
OK will drop it.
> > How about:
> >
> > At the top just use "Linux sections helpers"
> >
> > Then:
> >
> > /**
> > * DOC: Introduction
> > *
> > * We document below a dedicated set of helpers used in Linux to make
> > sections
> > * defined in the Linux linker script accessible in C code in a generic
> > form and
> > * and provide certain attributes about them.
> > */
> >
> > > I just can't work out what exactly is a
> > > "custom Linux section", and what DECLARE_LINUX_SECTION(), for example,
> > > actaully
> > > gives you.
> >
> > Its a way to replace the:
> >
> > extern char foo[], foo__end[];
> >
> > So this provides a generalized form to use declarations used in C code to
> > make
> > the linker script start and end symbols from esctions accessible in C code.
> > Since
> > DEFINE_SECTION_RANGE() and DEFINE_LINKTABLE() macros use this, then the
> > DECLARE_LINUX_SECTION() is only needed if you need access to these symbols
> > in C
> > code outside of the one that is defining and mainly in charge of managing
> > the
> > section. We provide DECLARE_*() helpers for section ranges and linker tables
> > though so those can be used instead to help annotate the type of a custom
> > section they are.
>
> Oh, that makes more sense. The SECTION stuff and custom sections was
> confusing me. I would prefer just to drop all the LINUX_SECTION naming
> and make it match the functionality you're using. For example:
>
> +DEFINE_LINKTABLE(struct jump_entry, __jump_table);
> +
> /* mutex to protect coming/going of the the jump_label table */
> static DEFINE_MUTEX(jump_label_mutex);
>
> @@ -274,8 +277,6 @@ static void __jump_label_update(struct static_key *key,
>
> void __init jump_label_init(void)
> {
> - struct jump_entry *iter_start = __start___jump_table;
> - struct jump_entry *iter_stop = __stop___jump_table;
> struct static_key *key = NULL;
> struct jump_entry *iter;
>
> @@ -292,9 +293,10 @@ void __init jump_label_init(void)
> return;
>
> jump_label_lock();
> - jump_label_sort_entries(iter_start, iter_stop);
> + jump_label_sort_entries(LINUX_SECTION_START(__jump_table),
> + LINUX_SECTION_END(__jump_table));
>
> Now I think this is a fine abstraction to have.
OK will keep this one.
> I think it would look
> even cleaner if you had:
>
> LINKTABLE_START(__jump_table)
> LINKTABLE_END(__jump_table)
>
> Then do we need to even have the LINUX_SECTION middle man at all?
Ah, thing is we use this for both linktables and section ranges.
Or do we want macros for both that do the same thing ?
Luis
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |