[Patch, AArch64, ILP32] 5/5 Improve the debugging experience with the generated file

Yufeng Zhang Yufeng.Zhang@arm.com
Sat Jun 22 22:29:00 GMT 2013


Hi David,

Thanks for the review.

On 06/21/13 19:52, David Daney wrote:
> On 06/21/2013 11:08 AM, Yufeng Zhang wrote:
>> diff --git a/bfd/Makefile.am b/bfd/Makefile.am
>> index 19b3710..0e69d12 100644
>> --- a/bfd/Makefile.am
>> +++ b/bfd/Makefile.am
>> @@ -917,12 +917,14 @@ elf64-target.h : elfxx-target.h
>>
>>    elf32-aarch64.c : elfnn-aarch64.c
>>    	rm -f elf32-aarch64.c
>> -	sed -e s/NN/32/g<  $(srcdir)/elfnn-aarch64.c>  elf32-aarch64.new
>> +	echo "#line 1 \"$(srcdir)/elfnn-aarch64.c\"">  elf32-aarch64.new
>> +	sed -e s/NN/32/g<  $(srcdir)/elfnn-aarch64.c>>  elf32-aarch64.new
>>    	mv -f elf32-aarch64.new elf32-aarch64.c
>>
>>    elf64-aarch64.c : elfnn-aarch64.c
>>    	rm -f elf64-aarch64.c
>> -	sed -e s/NN/64/g<  $(srcdir)/elfnn-aarch64.c>  elf64-aarch64.new
>> +	echo "#line 1 \"$(srcdir)/elfnn-aarch64.c\"">  elf64-aarch64.new
>> +	sed -e s/NN/64/g<  $(srcdir)/elfnn-aarch64.c>>  elf64-aarch64.new
>>    	mv -f elf64-aarch64.new elf64-aarch64.c
>>
>>    elf32-ia64.c : elfnn-ia64.c
>
> I really hate this pattern of running the file through sed and
> synthesizing the #line.
>
> I know this was built up out of several of the other patches, but I am
> commenting on it here.

I understand that you dislike the way of generating c files through 
'sed'; there were similar comments received during the internal patch 
review.  I had considered the cpp macro based approach but didn't find 
it particular helpful in parameterizing the large number of different 
structure names and functions names that contain elfNN or ElfNN (where 
NN is either 64 or 32); it will make the source code less readable by 
defining more macros.

Another argument is that the use of 'sed' is an existing technique in 
bfd.  elf32-target.h and elf64-target.h are generated from 
elfxx-target.h via 'sed', so is the backend file generation in the IA64 
port.

> Can you instead move the duplicated code to a file to be included
> twice, parameterizing it with one or more preprocessor macros?
>
> I.E.:
>
> .
> .
> .
> #define AARCH64_ABI 32
> #include "elfnn-arch64.c"
> #undef AARCH64_ABI
> #define AARCH64_ABI 64
> #include "elfnn-arch64.c"
> .
> .
> .

It looks to me that due to the way bfd is structured it is not feasible 
to have the ELF32 and ELF64 support defined in the same file.  If we 
really want to go after the cpp macro based approach, we can have two 
different files include elfnn-aarch64.c with different macro definitions.


Regards,
Yufeng



More information about the Binutils mailing list