Re: [patch 1/2] Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE #define - Kernel

This is a discussion on Re: [patch 1/2] Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE #define - Kernel ; On Oct 11, 2007, at 2:15 AM, markn@au1.ibm.com wrote: > Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE in the coredump code > which > allows for more flexibility in the note type for the state of > 'extended > floating point' implementations in ...

+ Reply to Thread
Results 1 to 9 of 9

Thread: Re: [patch 1/2] Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE #define

  1. Re: [patch 1/2] Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE #define


    On Oct 11, 2007, at 2:15 AM, markn@au1.ibm.com wrote:

    > Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE in the coredump code
    > which
    > allows for more flexibility in the note type for the state of
    > 'extended
    > floating point' implementations in coredumps. New note types can
    > now be
    > added with an appropriate #define.
    >
    > #define ELF_CORE_XFPREG_TYPE to be NT_PRXFPREG in all current users so
    > there's are no change in behaviour.


    Can we make this ELF_CORE_VECREG_TYPE or something that is so coupled
    to the x86 specific name?

    >
    > Signed-off-by: Mark Nelson
    > ---
    > arch/ia64/ia32/elfcore32.h | 1 +
    > arch/x86_64/ia32/ia32_binfmt.c | 1 +
    > fs/binfmt_elf.c | 4 ++--
    > include/asm-i386/elf.h | 1 +
    > 4 files changed, 5 insertions(+), 2 deletions(-)
    >
    > Index: linux/arch/ia64/ia32/elfcore32.h
    > ================================================== =================
    > --- linux.orig/arch/ia64/ia32/elfcore32.h
    > +++ linux/arch/ia64/ia32/elfcore32.h
    > @@ -117,6 +117,7 @@ elf_core_copy_task_fpregs(struct task_st
    > }
    >
    > #define ELF_CORE_COPY_XFPREGS 1
    > +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG
    > static inline int
    > elf_core_copy_task_xfpregs(struct task_struct *tsk,
    > elf_fpxregset_t *xfpu)
    > {
    > Index: linux/arch/x86_64/ia32/ia32_binfmt.c
    > ================================================== =================
    > --- linux.orig/arch/x86_64/ia32/ia32_binfmt.c
    > +++ linux/arch/x86_64/ia32/ia32_binfmt.c
    > @@ -188,6 +188,7 @@ elf_core_copy_task_fpregs(struct task_st
    > }
    >
    > #define ELF_CORE_COPY_XFPREGS 1
    > +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG
    > static inline int
    > elf_core_copy_task_xfpregs(struct task_struct *t, elf_fpxregset_t
    > *xfpu)
    > {
    > Index: linux/fs/binfmt_elf.c
    > ================================================== =================
    > --- linux.orig/fs/binfmt_elf.c
    > +++ linux/fs/binfmt_elf.c
    > @@ -1446,8 +1446,8 @@ static int elf_dump_thread_status(long s
    >
    > #ifdef ELF_CORE_COPY_XFPREGS
    > if (elf_core_copy_task_xfpregs(p, &t->xfpu)) {
    > - fill_note(&t->notes[2], "LINUX", NT_PRXFPREG, sizeof(t->xfpu),
    > - &t->xfpu);
    > + fill_note(&t->notes[2], "LINUX", ELF_CORE_XFPREG_TYPE,
    > + sizeof(t->xfpu), &t->xfpu);
    > t->num_notes++;
    > sz += notesize(&t->notes[2]);
    > }


    You've only fixed up one of 4 NT_PRXFPREG uses in the kernel.

    Also, I'm not a fan of your proposed mechanism to "overload" the
    elf_fpxregset_t. I'd rather see us introduce a new elf_vecregset_t
    and have it typedef'd to be elf_fpxregset_t on i386, x86_64, ia64

    > Index: linux/include/asm-i386/elf.h
    > ================================================== =================
    > --- linux.orig/include/asm-i386/elf.h
    > +++ linux/include/asm-i386/elf.h
    > @@ -129,6 +129,7 @@ extern int dump_task_extended_fpu (struc
    > #define ELF_CORE_COPY_TASK_REGS(tsk, elf_regs) dump_task_regs(tsk,
    > elf_regs)
    > #define ELF_CORE_COPY_FPREGS(tsk, elf_fpregs) dump_task_fpu(tsk,
    > elf_fpregs)
    > #define ELF_CORE_COPY_XFPREGS(tsk, elf_xfpregs)
    > dump_task_extended_fpu(tsk, elf_xfpregs)
    > +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG
    >
    > #define VDSO_HIGH_BASE (__fix_to_virt(FIX_VDSO))
    > #define VDSO_CURRENT_BASE ((unsigned long)current->mm->context.vdso)
    >
    > --
    > _______________________________________________
    > Linuxppc-dev mailing list
    > Linuxppc-dev@ozlabs.org
    > https://ozlabs.org/mailman/listinfo/linuxppc-dev


    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  2. Re: [patch 1/2] Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE #define

    Kumar Gala writes:

    > > #define ELF_CORE_XFPREG_TYPE to be NT_PRXFPREG in all current users so
    > > there's are no change in behaviour.

    >
    > Can we make this ELF_CORE_VECREG_TYPE or something that is so coupled
    > to the x86 specific name?


    How is "extended floating point registers" x86-specific?

    ELF_CORE_XFPREG_TYPE is a suitable name for something that's used in
    conjunction with a function called elf_core_copy_task_xfpregs().

    Paul.
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  3. Re: [patch 1/2] Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE #define


    On Oct 11, 2007, at 4:55 PM, Paul Mackerras wrote:

    > Kumar Gala writes:
    >
    >>> #define ELF_CORE_XFPREG_TYPE to be NT_PRXFPREG in all current
    >>> users so
    >>> there's are no change in behaviour.

    >>
    >> Can we make this ELF_CORE_VECREG_TYPE or something that is so coupled
    >> to the x86 specific name?

    >
    > How is "extended floating point registers" x86-specific?


    we'll I don't consider the altivec register file as 'extended fp'.
    I'm assuming the name XFP came from IA32 land when MMX/SSE came into
    existence.

    > ELF_CORE_XFPREG_TYPE is a suitable name for something that's used in
    > conjunction with a function called elf_core_copy_task_xfpregs().


    agreed, I think the function name should change as well.

    - k
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  4. Re: [patch 1/2] Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE #define

    Kumar Gala writes:

    > > ELF_CORE_XFPREG_TYPE is a suitable name for something that's used in
    > > conjunction with a function called elf_core_copy_task_xfpregs().

    >
    > agreed, I think the function name should change as well.


    Maybe. Let's do one step at a time...

    Paul.
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  5. Re: [patch 1/2] Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE #define

    On Thu, 2007-10-11 at 08:04 -0500, Kumar Gala wrote:
    > On Oct 11, 2007, at 2:15 AM, markn@au1.ibm.com wrote:
    >
    > > Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE in the coredump code
    > > which
    > > allows for more flexibility in the note type for the state of
    > > 'extended
    > > floating point' implementations in coredumps. New note types can
    > > now be
    > > added with an appropriate #define.
    > >
    > > #define ELF_CORE_XFPREG_TYPE to be NT_PRXFPREG in all current users so
    > > there's are no change in behaviour.

    >
    > Can we make this ELF_CORE_VECREG_TYPE or something that is so coupled
    > to the x86 specific name?
    >
    > >
    > > Signed-off-by: Mark Nelson
    > > ---
    > > arch/ia64/ia32/elfcore32.h | 1 +
    > > arch/x86_64/ia32/ia32_binfmt.c | 1 +
    > > fs/binfmt_elf.c | 4 ++--
    > > include/asm-i386/elf.h | 1 +
    > > 4 files changed, 5 insertions(+), 2 deletions(-)
    > >
    > > Index: linux/arch/ia64/ia32/elfcore32.h
    > > ================================================== =================
    > > --- linux.orig/arch/ia64/ia32/elfcore32.h
    > > +++ linux/arch/ia64/ia32/elfcore32.h
    > > @@ -117,6 +117,7 @@ elf_core_copy_task_fpregs(struct task_st
    > > }
    > >
    > > #define ELF_CORE_COPY_XFPREGS 1
    > > +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG
    > > static inline int
    > > elf_core_copy_task_xfpregs(struct task_struct *tsk,
    > > elf_fpxregset_t *xfpu)
    > > {
    > > Index: linux/arch/x86_64/ia32/ia32_binfmt.c
    > > ================================================== =================
    > > --- linux.orig/arch/x86_64/ia32/ia32_binfmt.c
    > > +++ linux/arch/x86_64/ia32/ia32_binfmt.c
    > > @@ -188,6 +188,7 @@ elf_core_copy_task_fpregs(struct task_st
    > > }
    > >
    > > #define ELF_CORE_COPY_XFPREGS 1
    > > +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG
    > > static inline int
    > > elf_core_copy_task_xfpregs(struct task_struct *t, elf_fpxregset_t
    > > *xfpu)
    > > {
    > > Index: linux/fs/binfmt_elf.c
    > > ================================================== =================
    > > --- linux.orig/fs/binfmt_elf.c
    > > +++ linux/fs/binfmt_elf.c
    > > @@ -1446,8 +1446,8 @@ static int elf_dump_thread_status(long s
    > >
    > > #ifdef ELF_CORE_COPY_XFPREGS
    > > if (elf_core_copy_task_xfpregs(p, &t->xfpu)) {
    > > - fill_note(&t->notes[2], "LINUX", NT_PRXFPREG, sizeof(t->xfpu),
    > > - &t->xfpu);
    > > + fill_note(&t->notes[2], "LINUX", ELF_CORE_XFPREG_TYPE,
    > > + sizeof(t->xfpu), &t->xfpu);
    > > t->num_notes++;
    > > sz += notesize(&t->notes[2]);
    > > }

    >
    > You've only fixed up one of 4 NT_PRXFPREG uses in the kernel.
    >
    > Also, I'm not a fan of your proposed mechanism to "overload" the
    > elf_fpxregset_t. I'd rather see us introduce a new elf_vecregset_t
    > and have it typedef'd to be elf_fpxregset_t on i386, x86_64, ia64


    He's not overloading it, there is no such thing as an elf_fpxregset_t,
    unless it's typedef'd to something else by the arch code, eg:

    include/asm-i386/elf.h:typedef struct user_fxsr_struct elf_fpxregset_t;
    include/asm-ia64/elf.h:typedef unsigned long elf_fpxregset_t;

    Introducing another typedef would just be another layer of obfuscation
    IMO, and the elf code doesn't need any more of that.

    cheers

    --
    Michael Ellerman
    OzLabs, IBM Australia Development Lab

    wwweb: http://michael.ellerman.id.au
    phone: +61 2 6212 1183 (tie line 70 21183)

    We do not inherit the earth from our ancestors,
    we borrow it from our children. - S.M.A.R.T Person

    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.6 (GNU/Linux)

    iD8DBQBHDrJAdSjSd0sB4dIRAjLxAJ4mzBvuCsD43PszkIoCDx rhXK04SACgpjSC
    cIMJvUxlwPO4hqc9dMpHbLA=
    =8e3U
    -----END PGP SIGNATURE-----


  6. Re: [patch 1/2] Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE #define

    Kumar Gala wrote:
    >
    > On Oct 11, 2007, at 2:15 AM, markn@au1.ibm.com wrote:
    >
    >> Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE in the coredump code which
    >> allows for more flexibility in the note type for the state of 'extended
    >> floating point' implementations in coredumps. New note types can now be
    >> added with an appropriate #define.
    >>
    >> #define ELF_CORE_XFPREG_TYPE to be NT_PRXFPREG in all current users so
    >> there's are no change in behaviour.

    >
    > Can we make this ELF_CORE_VECREG_TYPE or something that is so coupled to
    > the x86 specific name?
    >
    >>
    >> Signed-off-by: Mark Nelson
    >> ---
    >> arch/ia64/ia32/elfcore32.h | 1 +
    >> arch/x86_64/ia32/ia32_binfmt.c | 1 +
    >> fs/binfmt_elf.c | 4 ++--
    >> include/asm-i386/elf.h | 1 +
    >> 4 files changed, 5 insertions(+), 2 deletions(-)
    >>
    >> Index: linux/arch/ia64/ia32/elfcore32.h
    >> ================================================== =================
    >> --- linux.orig/arch/ia64/ia32/elfcore32.h
    >> +++ linux/arch/ia64/ia32/elfcore32.h
    >> @@ -117,6 +117,7 @@ elf_core_copy_task_fpregs(struct task_st
    >> }
    >>
    >> #define ELF_CORE_COPY_XFPREGS 1
    >> +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG
    >> static inline int
    >> elf_core_copy_task_xfpregs(struct task_struct *tsk, elf_fpxregset_t
    >> *xfpu)
    >> {
    >> Index: linux/arch/x86_64/ia32/ia32_binfmt.c
    >> ================================================== =================
    >> --- linux.orig/arch/x86_64/ia32/ia32_binfmt.c
    >> +++ linux/arch/x86_64/ia32/ia32_binfmt.c
    >> @@ -188,6 +188,7 @@ elf_core_copy_task_fpregs(struct task_st
    >> }
    >>
    >> #define ELF_CORE_COPY_XFPREGS 1
    >> +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG
    >> static inline int
    >> elf_core_copy_task_xfpregs(struct task_struct *t, elf_fpxregset_t *xfpu)
    >> {
    >> Index: linux/fs/binfmt_elf.c
    >> ================================================== =================
    >> --- linux.orig/fs/binfmt_elf.c
    >> +++ linux/fs/binfmt_elf.c
    >> @@ -1446,8 +1446,8 @@ static int elf_dump_thread_status(long s
    >>
    >> #ifdef ELF_CORE_COPY_XFPREGS
    >> if (elf_core_copy_task_xfpregs(p, &t->xfpu)) {
    >> - fill_note(&t->notes[2], "LINUX", NT_PRXFPREG, sizeof(t->xfpu),
    >> - &t->xfpu);
    >> + fill_note(&t->notes[2], "LINUX", ELF_CORE_XFPREG_TYPE,
    >> + sizeof(t->xfpu), &t->xfpu);
    >> t->num_notes++;
    >> sz += notesize(&t->notes[2]);
    >> }

    >
    > You've only fixed up one of 4 NT_PRXFPREG uses in the kernel.


    Ooops... Right you are - very good pickup Fixed in a new version (will send promptly).


    Thanks!

    Mark.

    >
    > Also, I'm not a fan of your proposed mechanism to "overload" the
    > elf_fpxregset_t. I'd rather see us introduce a new elf_vecregset_t and
    > have it typedef'd to be elf_fpxregset_t on i386, x86_64, ia64
    >
    >> Index: linux/include/asm-i386/elf.h
    >> ================================================== =================
    >> --- linux.orig/include/asm-i386/elf.h
    >> +++ linux/include/asm-i386/elf.h
    >> @@ -129,6 +129,7 @@ extern int dump_task_extended_fpu (struc
    >> #define ELF_CORE_COPY_TASK_REGS(tsk, elf_regs) dump_task_regs(tsk,
    >> elf_regs)
    >> #define ELF_CORE_COPY_FPREGS(tsk, elf_fpregs) dump_task_fpu(tsk,
    >> elf_fpregs)
    >> #define ELF_CORE_COPY_XFPREGS(tsk, elf_xfpregs)
    >> dump_task_extended_fpu(tsk, elf_xfpregs)
    >> +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG
    >>
    >> #define VDSO_HIGH_BASE (__fix_to_virt(FIX_VDSO))
    >> #define VDSO_CURRENT_BASE ((unsigned long)current->mm->context.vdso)
    >>
    >> --
    >> _______________________________________________
    >> Linuxppc-dev mailing list
    >> Linuxppc-dev@ozlabs.org
    >> https://ozlabs.org/mailman/listinfo/linuxppc-dev

    >


    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  7. [PATCH 1/2] [V2] Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE #define

    Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE in the coredump code which
    allows for more flexibility in the note type for the state of 'extended
    floating point' implementations in coredumps. New note types can now be
    added with an appropriate #define.

    This does #define ELF_CORE_XFPREG_TYPE to be NT_PRXFPREG in all
    current users so there's are no change in behaviour.

    This will let us use different note types on powerpc for the
    Altivec/VMX state that some PowerPC cpus have (G4, PPC970, POWER6) and
    for the SPE (signal processing extension) state that some embedded
    PowerPC cpus from Freescale have.

    Signed-off-by: Mark Nelson
    ---
    arch/ia64/ia32/elfcore32.h | 1 +
    arch/x86_64/ia32/ia32_binfmt.c | 1 +
    fs/binfmt_elf.c | 8 ++++----
    fs/binfmt_elf_fdpic.c | 6 +++---
    include/asm-i386/elf.h | 1 +
    5 files changed, 10 insertions(+), 7 deletions(-)

    Index: linux/arch/ia64/ia32/elfcore32.h
    ================================================== =================
    --- linux.orig/arch/ia64/ia32/elfcore32.h
    +++ linux/arch/ia64/ia32/elfcore32.h
    @@ -117,6 +117,7 @@ elf_core_copy_task_fpregs(struct task_st
    }

    #define ELF_CORE_COPY_XFPREGS 1
    +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG
    static inline int
    elf_core_copy_task_xfpregs(struct task_struct *tsk, elf_fpxregset_t *xfpu)
    {
    Index: linux/arch/x86_64/ia32/ia32_binfmt.c
    ================================================== =================
    --- linux.orig/arch/x86_64/ia32/ia32_binfmt.c
    +++ linux/arch/x86_64/ia32/ia32_binfmt.c
    @@ -188,6 +188,7 @@ elf_core_copy_task_fpregs(struct task_st
    }

    #define ELF_CORE_COPY_XFPREGS 1
    +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG
    static inline int
    elf_core_copy_task_xfpregs(struct task_struct *t, elf_fpxregset_t *xfpu)
    {
    Index: linux/fs/binfmt_elf.c
    ================================================== =================
    --- linux.orig/fs/binfmt_elf.c
    +++ linux/fs/binfmt_elf.c
    @@ -1411,7 +1411,7 @@ struct elf_thread_status
    elf_fpregset_t fpu; /* NT_PRFPREG */
    struct task_struct *thread;
    #ifdef ELF_CORE_COPY_XFPREGS
    - elf_fpxregset_t xfpu; /* NT_PRXFPREG */
    + elf_fpxregset_t xfpu; /* ELF_CORE_XFPREG_TYPE */
    #endif
    struct memelfnote notes[3];
    int num_notes;
    @@ -1446,8 +1446,8 @@ static int elf_dump_thread_status(long s

    #ifdef ELF_CORE_COPY_XFPREGS
    if (elf_core_copy_task_xfpregs(p, &t->xfpu)) {
    - fill_note(&t->notes[2], "LINUX", NT_PRXFPREG, sizeof(t->xfpu),
    - &t->xfpu);
    + fill_note(&t->notes[2], "LINUX", ELF_CORE_XFPREG_TYPE,
    + sizeof(t->xfpu), &t->xfpu);
    t->num_notes++;
    sz += notesize(&t->notes[2]);
    }
    @@ -1624,7 +1624,7 @@ static int elf_core_dump(long signr, str
    #ifdef ELF_CORE_COPY_XFPREGS
    if (elf_core_copy_task_xfpregs(current, xfpu))
    fill_note(notes + numnote++,
    - "LINUX", NT_PRXFPREG, sizeof(*xfpu), xfpu);
    + "LINUX", ELF_CORE_XFPREG_TYPE, sizeof(*xfpu), xfpu);
    #endif

    fs = get_fs();
    Index: linux/fs/binfmt_elf_fdpic.c
    ================================================== =================
    --- linux.orig/fs/binfmt_elf_fdpic.c
    +++ linux/fs/binfmt_elf_fdpic.c
    @@ -1417,7 +1417,7 @@ struct elf_thread_status
    elf_fpregset_t fpu; /* NT_PRFPREG */
    struct task_struct *thread;
    #ifdef ELF_CORE_COPY_XFPREGS
    - elf_fpxregset_t xfpu; /* NT_PRXFPREG */
    + elf_fpxregset_t xfpu; /* ELF_CORE_XFPREG_TYPE */
    #endif
    struct memelfnote notes[3];
    int num_notes;
    @@ -1453,7 +1453,7 @@ static int elf_dump_thread_status(long s

    #ifdef ELF_CORE_COPY_XFPREGS
    if (elf_core_copy_task_xfpregs(p, &t->xfpu)) {
    - fill_note(&t->notes[2], "LINUX", NT_PRXFPREG, sizeof(t->xfpu),
    + fill_note(&t->notes[2], "LINUX", ELF_CORE_XFPREG_TYPE, sizeof(t->xfpu),
    &t->xfpu);
    t->num_notes++;
    sz += notesize(&t->notes[2]);
    @@ -1690,7 +1690,7 @@ static int elf_fdpic_core_dump(long sign
    #ifdef ELF_CORE_COPY_XFPREGS
    if (elf_core_copy_task_xfpregs(current, xfpu))
    fill_note(notes + numnote++,
    - "LINUX", NT_PRXFPREG, sizeof(*xfpu), xfpu);
    + "LINUX", ELF_CORE_XFPREG_TYPE, sizeof(*xfpu), xfpu);
    #endif

    fs = get_fs();
    Index: linux/include/asm-i386/elf.h
    ================================================== =================
    --- linux.orig/include/asm-i386/elf.h
    +++ linux/include/asm-i386/elf.h
    @@ -129,6 +129,7 @@ extern int dump_task_extended_fpu (struc
    #define ELF_CORE_COPY_TASK_REGS(tsk, elf_regs) dump_task_regs(tsk, elf_regs)
    #define ELF_CORE_COPY_FPREGS(tsk, elf_fpregs) dump_task_fpu(tsk, elf_fpregs)
    #define ELF_CORE_COPY_XFPREGS(tsk, elf_xfpregs) dump_task_extended_fpu(tsk, elf_xfpregs)
    +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG

    #define VDSO_HIGH_BASE (__fix_to_virt(FIX_VDSO))
    #define VDSO_CURRENT_BASE ((unsigned long)current->mm->context.vdso)
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  8. Re: [PATCH 1/2] [V2] Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE #define

    Sorry for the patch noise but please disregard this patch - a line is longer than 80 characters and I'd hate to be brought up on that...

    V3 will be the perfect version then


    Thanks and apologies again!

    Mark.

    Mark Nelson wrote:
    > Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE in the coredump code which
    > allows for more flexibility in the note type for the state of 'extended
    > floating point' implementations in coredumps. New note types can now be
    > added with an appropriate #define.
    >
    > This does #define ELF_CORE_XFPREG_TYPE to be NT_PRXFPREG in all
    > current users so there's are no change in behaviour.
    >
    > This will let us use different note types on powerpc for the
    > Altivec/VMX state that some PowerPC cpus have (G4, PPC970, POWER6) and
    > for the SPE (signal processing extension) state that some embedded
    > PowerPC cpus from Freescale have.
    >
    > Signed-off-by: Mark Nelson
    > ---
    > arch/ia64/ia32/elfcore32.h | 1 +
    > arch/x86_64/ia32/ia32_binfmt.c | 1 +
    > fs/binfmt_elf.c | 8 ++++----
    > fs/binfmt_elf_fdpic.c | 6 +++---
    > include/asm-i386/elf.h | 1 +
    > 5 files changed, 10 insertions(+), 7 deletions(-)
    >
    > Index: linux/arch/ia64/ia32/elfcore32.h
    > ================================================== =================
    > --- linux.orig/arch/ia64/ia32/elfcore32.h
    > +++ linux/arch/ia64/ia32/elfcore32.h
    > @@ -117,6 +117,7 @@ elf_core_copy_task_fpregs(struct task_st
    > }
    >
    > #define ELF_CORE_COPY_XFPREGS 1
    > +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG
    > static inline int
    > elf_core_copy_task_xfpregs(struct task_struct *tsk, elf_fpxregset_t *xfpu)
    > {
    > Index: linux/arch/x86_64/ia32/ia32_binfmt.c
    > ================================================== =================
    > --- linux.orig/arch/x86_64/ia32/ia32_binfmt.c
    > +++ linux/arch/x86_64/ia32/ia32_binfmt.c
    > @@ -188,6 +188,7 @@ elf_core_copy_task_fpregs(struct task_st
    > }
    >
    > #define ELF_CORE_COPY_XFPREGS 1
    > +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG
    > static inline int
    > elf_core_copy_task_xfpregs(struct task_struct *t, elf_fpxregset_t *xfpu)
    > {
    > Index: linux/fs/binfmt_elf.c
    > ================================================== =================
    > --- linux.orig/fs/binfmt_elf.c
    > +++ linux/fs/binfmt_elf.c
    > @@ -1411,7 +1411,7 @@ struct elf_thread_status
    > elf_fpregset_t fpu; /* NT_PRFPREG */
    > struct task_struct *thread;
    > #ifdef ELF_CORE_COPY_XFPREGS
    > - elf_fpxregset_t xfpu; /* NT_PRXFPREG */
    > + elf_fpxregset_t xfpu; /* ELF_CORE_XFPREG_TYPE */
    > #endif
    > struct memelfnote notes[3];
    > int num_notes;
    > @@ -1446,8 +1446,8 @@ static int elf_dump_thread_status(long s
    >
    > #ifdef ELF_CORE_COPY_XFPREGS
    > if (elf_core_copy_task_xfpregs(p, &t->xfpu)) {
    > - fill_note(&t->notes[2], "LINUX", NT_PRXFPREG, sizeof(t->xfpu),
    > - &t->xfpu);
    > + fill_note(&t->notes[2], "LINUX", ELF_CORE_XFPREG_TYPE,
    > + sizeof(t->xfpu), &t->xfpu);
    > t->num_notes++;
    > sz += notesize(&t->notes[2]);
    > }
    > @@ -1624,7 +1624,7 @@ static int elf_core_dump(long signr, str
    > #ifdef ELF_CORE_COPY_XFPREGS
    > if (elf_core_copy_task_xfpregs(current, xfpu))
    > fill_note(notes + numnote++,
    > - "LINUX", NT_PRXFPREG, sizeof(*xfpu), xfpu);
    > + "LINUX", ELF_CORE_XFPREG_TYPE, sizeof(*xfpu), xfpu);
    > #endif
    >
    > fs = get_fs();
    > Index: linux/fs/binfmt_elf_fdpic.c
    > ================================================== =================
    > --- linux.orig/fs/binfmt_elf_fdpic.c
    > +++ linux/fs/binfmt_elf_fdpic.c
    > @@ -1417,7 +1417,7 @@ struct elf_thread_status
    > elf_fpregset_t fpu; /* NT_PRFPREG */
    > struct task_struct *thread;
    > #ifdef ELF_CORE_COPY_XFPREGS
    > - elf_fpxregset_t xfpu; /* NT_PRXFPREG */
    > + elf_fpxregset_t xfpu; /* ELF_CORE_XFPREG_TYPE */
    > #endif
    > struct memelfnote notes[3];
    > int num_notes;
    > @@ -1453,7 +1453,7 @@ static int elf_dump_thread_status(long s
    >
    > #ifdef ELF_CORE_COPY_XFPREGS
    > if (elf_core_copy_task_xfpregs(p, &t->xfpu)) {
    > - fill_note(&t->notes[2], "LINUX", NT_PRXFPREG, sizeof(t->xfpu),
    > + fill_note(&t->notes[2], "LINUX", ELF_CORE_XFPREG_TYPE, sizeof(t->xfpu),


    the line above is the offender...

    > &t->xfpu);
    > t->num_notes++;
    > sz += notesize(&t->notes[2]);
    > @@ -1690,7 +1690,7 @@ static int elf_fdpic_core_dump(long sign
    > #ifdef ELF_CORE_COPY_XFPREGS
    > if (elf_core_copy_task_xfpregs(current, xfpu))
    > fill_note(notes + numnote++,
    > - "LINUX", NT_PRXFPREG, sizeof(*xfpu), xfpu);
    > + "LINUX", ELF_CORE_XFPREG_TYPE, sizeof(*xfpu), xfpu);
    > #endif
    >
    > fs = get_fs();
    > Index: linux/include/asm-i386/elf.h
    > ================================================== =================
    > --- linux.orig/include/asm-i386/elf.h
    > +++ linux/include/asm-i386/elf.h
    > @@ -129,6 +129,7 @@ extern int dump_task_extended_fpu (struc
    > #define ELF_CORE_COPY_TASK_REGS(tsk, elf_regs) dump_task_regs(tsk, elf_regs)
    > #define ELF_CORE_COPY_FPREGS(tsk, elf_fpregs) dump_task_fpu(tsk, elf_fpregs)
    > #define ELF_CORE_COPY_XFPREGS(tsk, elf_xfpregs) dump_task_extended_fpu(tsk, elf_xfpregs)
    > +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG
    >
    > #define VDSO_HIGH_BASE (__fix_to_virt(FIX_VDSO))
    > #define VDSO_CURRENT_BASE ((unsigned long)current->mm->context.vdso)
    > _______________________________________________
    > Linuxppc-dev mailing list
    > Linuxppc-dev@ozlabs.org
    > https://ozlabs.org/mailman/listinfo/linuxppc-dev
    >


    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  9. [PATCH 1/2] [V3] Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE #define

    Replace NT_PRXFPREG with ELF_CORE_XFPREG_TYPE in the coredump code which
    allows for more flexibility in the note type for the state of 'extended
    floating point' implementations in coredumps. New note types can now be
    added with an appropriate #define.

    This does #define ELF_CORE_XFPREG_TYPE to be NT_PRXFPREG in all
    current users so there's are no change in behaviour.

    This will let us use different note types on powerpc for the
    Altivec/VMX state that some PowerPC cpus have (G4, PPC970, POWER6) and
    for the SPE (signal processing extension) state that some embedded
    PowerPC cpus from Freescale have.

    Signed-off-by: Mark Nelson
    ---
    arch/ia64/ia32/elfcore32.h | 1 +
    arch/x86_64/ia32/ia32_binfmt.c | 1 +
    fs/binfmt_elf.c | 8 ++++----
    fs/binfmt_elf_fdpic.c | 8 ++++----
    include/asm-i386/elf.h | 1 +
    5 files changed, 11 insertions(+), 8 deletions(-)

    Index: linux/arch/ia64/ia32/elfcore32.h
    ================================================== =================
    --- linux.orig/arch/ia64/ia32/elfcore32.h
    +++ linux/arch/ia64/ia32/elfcore32.h
    @@ -117,6 +117,7 @@ elf_core_copy_task_fpregs(struct task_st
    }

    #define ELF_CORE_COPY_XFPREGS 1
    +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG
    static inline int
    elf_core_copy_task_xfpregs(struct task_struct *tsk, elf_fpxregset_t *xfpu)
    {
    Index: linux/arch/x86_64/ia32/ia32_binfmt.c
    ================================================== =================
    --- linux.orig/arch/x86_64/ia32/ia32_binfmt.c
    +++ linux/arch/x86_64/ia32/ia32_binfmt.c
    @@ -188,6 +188,7 @@ elf_core_copy_task_fpregs(struct task_st
    }

    #define ELF_CORE_COPY_XFPREGS 1
    +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG
    static inline int
    elf_core_copy_task_xfpregs(struct task_struct *t, elf_fpxregset_t *xfpu)
    {
    Index: linux/fs/binfmt_elf.c
    ================================================== =================
    --- linux.orig/fs/binfmt_elf.c
    +++ linux/fs/binfmt_elf.c
    @@ -1411,7 +1411,7 @@ struct elf_thread_status
    elf_fpregset_t fpu; /* NT_PRFPREG */
    struct task_struct *thread;
    #ifdef ELF_CORE_COPY_XFPREGS
    - elf_fpxregset_t xfpu; /* NT_PRXFPREG */
    + elf_fpxregset_t xfpu; /* ELF_CORE_XFPREG_TYPE */
    #endif
    struct memelfnote notes[3];
    int num_notes;
    @@ -1446,8 +1446,8 @@ static int elf_dump_thread_status(long s

    #ifdef ELF_CORE_COPY_XFPREGS
    if (elf_core_copy_task_xfpregs(p, &t->xfpu)) {
    - fill_note(&t->notes[2], "LINUX", NT_PRXFPREG, sizeof(t->xfpu),
    - &t->xfpu);
    + fill_note(&t->notes[2], "LINUX", ELF_CORE_XFPREG_TYPE,
    + sizeof(t->xfpu), &t->xfpu);
    t->num_notes++;
    sz += notesize(&t->notes[2]);
    }
    @@ -1624,7 +1624,7 @@ static int elf_core_dump(long signr, str
    #ifdef ELF_CORE_COPY_XFPREGS
    if (elf_core_copy_task_xfpregs(current, xfpu))
    fill_note(notes + numnote++,
    - "LINUX", NT_PRXFPREG, sizeof(*xfpu), xfpu);
    + "LINUX", ELF_CORE_XFPREG_TYPE, sizeof(*xfpu), xfpu);
    #endif

    fs = get_fs();
    Index: linux/fs/binfmt_elf_fdpic.c
    ================================================== =================
    --- linux.orig/fs/binfmt_elf_fdpic.c
    +++ linux/fs/binfmt_elf_fdpic.c
    @@ -1417,7 +1417,7 @@ struct elf_thread_status
    elf_fpregset_t fpu; /* NT_PRFPREG */
    struct task_struct *thread;
    #ifdef ELF_CORE_COPY_XFPREGS
    - elf_fpxregset_t xfpu; /* NT_PRXFPREG */
    + elf_fpxregset_t xfpu; /* ELF_CORE_XFPREG_TYPE */
    #endif
    struct memelfnote notes[3];
    int num_notes;
    @@ -1453,8 +1453,8 @@ static int elf_dump_thread_status(long s

    #ifdef ELF_CORE_COPY_XFPREGS
    if (elf_core_copy_task_xfpregs(p, &t->xfpu)) {
    - fill_note(&t->notes[2], "LINUX", NT_PRXFPREG, sizeof(t->xfpu),
    - &t->xfpu);
    + fill_note(&t->notes[2], "LINUX", ELF_CORE_XFPREG_TYPE,
    + sizeof(t->xfpu), &t->xfpu);
    t->num_notes++;
    sz += notesize(&t->notes[2]);
    }
    @@ -1690,7 +1690,7 @@ static int elf_fdpic_core_dump(long sign
    #ifdef ELF_CORE_COPY_XFPREGS
    if (elf_core_copy_task_xfpregs(current, xfpu))
    fill_note(notes + numnote++,
    - "LINUX", NT_PRXFPREG, sizeof(*xfpu), xfpu);
    + "LINUX", ELF_CORE_XFPREG_TYPE, sizeof(*xfpu), xfpu);
    #endif

    fs = get_fs();
    Index: linux/include/asm-i386/elf.h
    ================================================== =================
    --- linux.orig/include/asm-i386/elf.h
    +++ linux/include/asm-i386/elf.h
    @@ -129,6 +129,7 @@ extern int dump_task_extended_fpu (struc
    #define ELF_CORE_COPY_TASK_REGS(tsk, elf_regs) dump_task_regs(tsk, elf_regs)
    #define ELF_CORE_COPY_FPREGS(tsk, elf_fpregs) dump_task_fpu(tsk, elf_fpregs)
    #define ELF_CORE_COPY_XFPREGS(tsk, elf_xfpregs) dump_task_extended_fpu(tsk, elf_xfpregs)
    +#define ELF_CORE_XFPREG_TYPE NT_PRXFPREG

    #define VDSO_HIGH_BASE (__fix_to_virt(FIX_VDSO))
    #define VDSO_CURRENT_BASE ((unsigned long)current->mm->context.vdso)

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

+ Reply to Thread