diff mbox series

[v2,5/5] disas: Move disas.c into the target-independent source set

Message ID 20230509163326.121090-6-richard.henderson@linaro.org
State New
Headers show
Series Make the core disassembler functions target-independent | expand

Commit Message

Richard Henderson May 9, 2023, 4:33 p.m. UTC
From: Thomas Huth <thuth@redhat.com>

By using target_words_bigendian() instead of an ifdef,
we can build this code once.

Signed-off-by: Thomas Huth <thuth@redhat.com>
[rth: Type change done in a separate patch]
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 disas/disas.c     | 10 +++++-----
 disas/meson.build |  3 ++-
 2 files changed, 7 insertions(+), 6 deletions(-)

Comments

Thomas Huth May 10, 2023, 6:53 a.m. UTC | #1
On 09/05/2023 18.33, Richard Henderson wrote:
> From: Thomas Huth <thuth@redhat.com>
> 
> By using target_words_bigendian() instead of an ifdef,
> we can build this code once.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> [rth: Type change done in a separate patch]
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
...
> diff --git a/disas/meson.build b/disas/meson.build
> index f40230c58f..2ae44691fa 100644
> --- a/disas/meson.build
> +++ b/disas/meson.build
> @@ -13,4 +13,5 @@ common_ss.add(when: 'CONFIG_XTENSA_DIS', if_true: files('xtensa.c'))
>   common_ss.add(when: capstone, if_true: [files('capstone.c'), capstone])
>   
>   softmmu_ss.add(files('disas-mon.c'))
> -specific_ss.add(files('disas.c'), capstone)
> +common_ss.add(files('disas.c'), capstone)

I guess you could drop the "capstone" here now since it is already added to 
common_ss now three lines earlier.

  Thomas
Richard Henderson May 10, 2023, 7:46 a.m. UTC | #2
On 5/10/23 07:53, Thomas Huth wrote:
> On 09/05/2023 18.33, Richard Henderson wrote:
>> From: Thomas Huth <thuth@redhat.com>
>>
>> By using target_words_bigendian() instead of an ifdef,
>> we can build this code once.
>>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> [rth: Type change done in a separate patch]
>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>> ---
> ...
>> diff --git a/disas/meson.build b/disas/meson.build
>> index f40230c58f..2ae44691fa 100644
>> --- a/disas/meson.build
>> +++ b/disas/meson.build
>> @@ -13,4 +13,5 @@ common_ss.add(when: 'CONFIG_XTENSA_DIS', if_true: files('xtensa.c'))
>>   common_ss.add(when: capstone, if_true: [files('capstone.c'), capstone])
>>   softmmu_ss.add(files('disas-mon.c'))
>> -specific_ss.add(files('disas.c'), capstone)
>> +common_ss.add(files('disas.c'), capstone)
> 
> I guess you could drop the "capstone" here now since it is already added to common_ss now 
> three lines earlier.

I have a memory that it's required to get the include path for <capstone.h> for 
"disas/capstone.h", for use by the target's cpu_set_disas_info.  Otherwise only common_ss 
files have access to the include path.

But I'll double-check.


r~
Thomas Huth May 10, 2023, 8:10 a.m. UTC | #3
On 10/05/2023 09.46, Richard Henderson wrote:
> On 5/10/23 07:53, Thomas Huth wrote:
>> On 09/05/2023 18.33, Richard Henderson wrote:
>>> From: Thomas Huth <thuth@redhat.com>
>>>
>>> By using target_words_bigendian() instead of an ifdef,
>>> we can build this code once.
>>>
>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>> [rth: Type change done in a separate patch]
>>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>>> ---
>> ...
>>> diff --git a/disas/meson.build b/disas/meson.build
>>> index f40230c58f..2ae44691fa 100644
>>> --- a/disas/meson.build
>>> +++ b/disas/meson.build
>>> @@ -13,4 +13,5 @@ common_ss.add(when: 'CONFIG_XTENSA_DIS', if_true: 
>>> files('xtensa.c'))
>>>   common_ss.add(when: capstone, if_true: [files('capstone.c'), capstone])
>>>   softmmu_ss.add(files('disas-mon.c'))
>>> -specific_ss.add(files('disas.c'), capstone)
>>> +common_ss.add(files('disas.c'), capstone)
>>
>> I guess you could drop the "capstone" here now since it is already added 
>> to common_ss now three lines earlier.
> 
> I have a memory that it's required to get the include path for <capstone.h> 
> for "disas/capstone.h", for use by the target's cpu_set_disas_info.  
> Otherwise only common_ss files have access to the include path.

I only meant to remove it from the new "common_ss.add(files('disas.c')" line 
since it is already there in the "common_ss.add(when: capstone, if_true: 
[files('capstone.c'), capstone])" line ... I think you have to keep the 
"specific_ss.add(capstone)" line.

  Thomas
Richard Henderson May 10, 2023, 8:13 a.m. UTC | #4
On 5/10/23 09:10, Thomas Huth wrote:
> On 10/05/2023 09.46, Richard Henderson wrote:
>> On 5/10/23 07:53, Thomas Huth wrote:
>>> On 09/05/2023 18.33, Richard Henderson wrote:
>>>> From: Thomas Huth <thuth@redhat.com>
>>>>
>>>> By using target_words_bigendian() instead of an ifdef,
>>>> we can build this code once.
>>>>
>>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>>> [rth: Type change done in a separate patch]
>>>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>>>> ---
>>> ...
>>>> diff --git a/disas/meson.build b/disas/meson.build
>>>> index f40230c58f..2ae44691fa 100644
>>>> --- a/disas/meson.build
>>>> +++ b/disas/meson.build
>>>> @@ -13,4 +13,5 @@ common_ss.add(when: 'CONFIG_XTENSA_DIS', if_true: files('xtensa.c'))
>>>>   common_ss.add(when: capstone, if_true: [files('capstone.c'), capstone])
>>>>   softmmu_ss.add(files('disas-mon.c'))
>>>> -specific_ss.add(files('disas.c'), capstone)
>>>> +common_ss.add(files('disas.c'), capstone)
>>>
>>> I guess you could drop the "capstone" here now since it is already added to common_ss 
>>> now three lines earlier.
>>
>> I have a memory that it's required to get the include path for <capstone.h> for 
>> "disas/capstone.h", for use by the target's cpu_set_disas_info. Otherwise only common_ss 
>> files have access to the include path.
> 
> I only meant to remove it from the new "common_ss.add(files('disas.c')" line since it is 
> already there in the "common_ss.add(when: capstone, if_true: [files('capstone.c'), 
> capstone])" line ... I think you have to keep the "specific_ss.add(capstone)" line.

Oh, yes, duplicate within common_ss.  Removed.


r~
Philippe Mathieu-Daudé May 10, 2023, 3:19 p.m. UTC | #5
On 10/5/23 10:13, Richard Henderson wrote:
> On 5/10/23 09:10, Thomas Huth wrote:
>> On 10/05/2023 09.46, Richard Henderson wrote:
>>> On 5/10/23 07:53, Thomas Huth wrote:
>>>> On 09/05/2023 18.33, Richard Henderson wrote:
>>>>> From: Thomas Huth <thuth@redhat.com>
>>>>>
>>>>> By using target_words_bigendian() instead of an ifdef,
>>>>> we can build this code once.
>>>>>
>>>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>>>> [rth: Type change done in a separate patch]
>>>>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>>>>> ---
>>>> ...
>>>>> diff --git a/disas/meson.build b/disas/meson.build
>>>>> index f40230c58f..2ae44691fa 100644
>>>>> --- a/disas/meson.build
>>>>> +++ b/disas/meson.build
>>>>> @@ -13,4 +13,5 @@ common_ss.add(when: 'CONFIG_XTENSA_DIS', if_true: 
>>>>> files('xtensa.c'))
>>>>>   common_ss.add(when: capstone, if_true: [files('capstone.c'), 
>>>>> capstone])
>>>>>   softmmu_ss.add(files('disas-mon.c'))
>>>>> -specific_ss.add(files('disas.c'), capstone)
>>>>> +common_ss.add(files('disas.c'), capstone)
>>>>
>>>> I guess you could drop the "capstone" here now since it is already 
>>>> added to common_ss now three lines earlier.
>>>
>>> I have a memory that it's required to get the include path for 
>>> <capstone.h> for "disas/capstone.h", for use by the target's 
>>> cpu_set_disas_info. Otherwise only common_ss files have access to the 
>>> include path.
>>
>> I only meant to remove it from the new 
>> "common_ss.add(files('disas.c')" line since it is already there in the 
>> "common_ss.add(when: capstone, if_true: [files('capstone.c'), 
>> capstone])" line ... I think you have to keep the 
>> "specific_ss.add(capstone)" line.
> 
> Oh, yes, duplicate within common_ss.  Removed.

What the final patch looks like?
diff mbox series

Patch

diff --git a/disas/disas.c b/disas/disas.c
index 5e7401bb6f..954b385a82 100644
--- a/disas/disas.c
+++ b/disas/disas.c
@@ -122,11 +122,11 @@  void disas_initialize_debug_target(CPUDebug *s, CPUState *cpu)
     s->cpu = cpu;
     s->info.read_memory_func = target_read_memory;
     s->info.print_address_func = print_address;
-#if TARGET_BIG_ENDIAN
-    s->info.endian = BFD_ENDIAN_BIG;
-#else
-    s->info.endian = BFD_ENDIAN_LITTLE;
-#endif
+    if (target_words_bigendian()) {
+        s->info.endian = BFD_ENDIAN_BIG;
+    } else {
+        s->info.endian =  BFD_ENDIAN_LITTLE;
+    }
 
     CPUClass *cc = CPU_GET_CLASS(cpu);
     if (cc->disas_set_info) {
diff --git a/disas/meson.build b/disas/meson.build
index f40230c58f..2ae44691fa 100644
--- a/disas/meson.build
+++ b/disas/meson.build
@@ -13,4 +13,5 @@  common_ss.add(when: 'CONFIG_XTENSA_DIS', if_true: files('xtensa.c'))
 common_ss.add(when: capstone, if_true: [files('capstone.c'), capstone])
 
 softmmu_ss.add(files('disas-mon.c'))
-specific_ss.add(files('disas.c'), capstone)
+common_ss.add(files('disas.c'), capstone)
+specific_ss.add(capstone)