[RFC] m68k: Avoid CONFIG_COLDFIRE switch in uapi header

Message ID 20231110103120.387517-1-thuth@redhat.com
State New
Headers
Series [RFC] m68k: Avoid CONFIG_COLDFIRE switch in uapi header |

Commit Message

Thomas Huth Nov. 10, 2023, 10:31 a.m. UTC
  We should not use any CONFIG switches in uapi headers since
these only work during kernel compilation. They are not defined
for userspace. Let's use the __mcoldfire__ switch from the
compiler here instead.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 Marked as RFC since I didn't test it - I'd appreciate if someone
 could give it a try on a real system.

 arch/m68k/include/uapi/asm/ptrace.h | 2 +-
 scripts/headers_install.sh          | 1 -
 2 files changed, 1 insertion(+), 2 deletions(-)
  

Comments

Greg Ungerer Nov. 14, 2023, 2:20 p.m. UTC | #1
On 10/11/23 21:19, Arnd Bergmann wrote:
> On Fri, Nov 10, 2023, at 11:31, Thomas Huth wrote:
>> We should not use any CONFIG switches in uapi headers since
>> these only work during kernel compilation. They are not defined
>> for userspace. Let's use the __mcoldfire__ switch from the
>> compiler here instead.
>>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>>   Marked as RFC since I didn't test it - I'd appreciate if someone
>>   could give it a try on a real system.
>>
>>   arch/m68k/include/uapi/asm/ptrace.h | 2 +-
>>   scripts/headers_install.sh          | 1 -
>>   2 files changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/arch/m68k/include/uapi/asm/ptrace.h
>> b/arch/m68k/include/uapi/asm/ptrace.h
>> index 5b50ea592e00..ebd9fccb3d11 100644
>> --- a/arch/m68k/include/uapi/asm/ptrace.h
>> +++ b/arch/m68k/include/uapi/asm/ptrace.h
>> @@ -39,7 +39,7 @@ struct pt_regs {
>>     long     d0;
>>     long     orig_d0;
>>     long     stkadj;
>> -#ifdef CONFIG_COLDFIRE
>> +#ifdef __mcoldfire__
>>     unsigned format :  4; /* frame format specifier */
>>     unsigned vector : 12; /* vector offset */
>>     unsigned short sr;
> 
> I think this should be harmless,

I expect it would be, we have done this in at least one other uapi file,
arch/m68k/include/uapi/asm/swab.h.


> but I'm not sure we even
> need the structure in a uapi header: about half the architectures
> define this in a user-visible way, while the others don't.
> 
> On csky, powerpc and microblaze, pt_regs is used inside
> of the 'struct sigcontext' definition, but I don't think
> this was ever the case on m68k.
> 
> The other one that is accessed in userspace is 'struct
> user_regs_struct', but this one is actually not in the
> uapi headers on m68k or x86.

I don't think we need them in the uapi header at all. Trivially moving
those 2 structures into the non-uapi ptrace.h seems to build fine on
most simple setups I tried (systems using uClibc, with applications like
strace). Should we try moving them out?

Regards
Greg
  
Thomas Huth Nov. 14, 2023, 2:32 p.m. UTC | #2
On 14/11/2023 15.20, Greg Ungerer wrote:
> 
> 
> On 10/11/23 21:19, Arnd Bergmann wrote:
>> On Fri, Nov 10, 2023, at 11:31, Thomas Huth wrote:
>>> We should not use any CONFIG switches in uapi headers since
>>> these only work during kernel compilation. They are not defined
>>> for userspace. Let's use the __mcoldfire__ switch from the
>>> compiler here instead.
>>>
>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>> ---
>>>   Marked as RFC since I didn't test it - I'd appreciate if someone
>>>   could give it a try on a real system.
>>>
>>>   arch/m68k/include/uapi/asm/ptrace.h | 2 +-
>>>   scripts/headers_install.sh          | 1 -
>>>   2 files changed, 1 insertion(+), 2 deletions(-)
>>>
>>> diff --git a/arch/m68k/include/uapi/asm/ptrace.h
>>> b/arch/m68k/include/uapi/asm/ptrace.h
>>> index 5b50ea592e00..ebd9fccb3d11 100644
>>> --- a/arch/m68k/include/uapi/asm/ptrace.h
>>> +++ b/arch/m68k/include/uapi/asm/ptrace.h
>>> @@ -39,7 +39,7 @@ struct pt_regs {
>>>     long     d0;
>>>     long     orig_d0;
>>>     long     stkadj;
>>> -#ifdef CONFIG_COLDFIRE
>>> +#ifdef __mcoldfire__
>>>     unsigned format :  4; /* frame format specifier */
>>>     unsigned vector : 12; /* vector offset */
>>>     unsigned short sr;
>>
>> I think this should be harmless,
> 
> I expect it would be, we have done this in at least one other uapi file,
> arch/m68k/include/uapi/asm/swab.h.
> 
> 
>> but I'm not sure we even
>> need the structure in a uapi header: about half the architectures
>> define this in a user-visible way, while the others don't.
>>
>> On csky, powerpc and microblaze, pt_regs is used inside
>> of the 'struct sigcontext' definition, but I don't think
>> this was ever the case on m68k.
>>
>> The other one that is accessed in userspace is 'struct
>> user_regs_struct', but this one is actually not in the
>> uapi headers on m68k or x86.
> 
> I don't think we need them in the uapi header at all. Trivially moving
> those 2 structures into the non-uapi ptrace.h seems to build fine on
> most simple setups I tried (systems using uClibc, with applications like
> strace). Should we try moving them out?

Yes, please! Can you send your patch?

  Thomas
  

Patch

diff --git a/arch/m68k/include/uapi/asm/ptrace.h b/arch/m68k/include/uapi/asm/ptrace.h
index 5b50ea592e00..ebd9fccb3d11 100644
--- a/arch/m68k/include/uapi/asm/ptrace.h
+++ b/arch/m68k/include/uapi/asm/ptrace.h
@@ -39,7 +39,7 @@  struct pt_regs {
   long     d0;
   long     orig_d0;
   long     stkadj;
-#ifdef CONFIG_COLDFIRE
+#ifdef __mcoldfire__
   unsigned format :  4; /* frame format specifier */
   unsigned vector : 12; /* vector offset */
   unsigned short sr;
diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh
index c3064ac31003..cdb04c920670 100755
--- a/scripts/headers_install.sh
+++ b/scripts/headers_install.sh
@@ -75,7 +75,6 @@  arch/arc/include/uapi/asm/page.h:CONFIG_ARC_PAGE_SIZE_4K
 arch/arc/include/uapi/asm/swab.h:CONFIG_ARC_HAS_SWAPE
 arch/arm/include/uapi/asm/ptrace.h:CONFIG_CPU_ENDIAN_BE8
 arch/hexagon/include/uapi/asm/user.h:CONFIG_HEXAGON_ARCH_VERSION
-arch/m68k/include/uapi/asm/ptrace.h:CONFIG_COLDFIRE
 arch/nios2/include/uapi/asm/swab.h:CONFIG_NIOS2_CI_SWAB_NO
 arch/nios2/include/uapi/asm/swab.h:CONFIG_NIOS2_CI_SWAB_SUPPORT
 arch/x86/include/uapi/asm/auxvec.h:CONFIG_IA32_EMULATION