[U-Boot] [RFC PATCH] ARM: print gcc version

It might be useful to see what compiler version was used to compile u-boot. --- arch/arm/lib/board.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index 96c0e30..df90b5e 100644 --- a/arch/arm/lib/board.c +++ b/arch/arm/lib/board.c @@ -75,7 +75,7 @@ extern void dataflash_print_info(void); #endif
const char version_string[] = - U_BOOT_VERSION" (" U_BOOT_DATE " - " U_BOOT_TIME ")"CONFIG_IDENT_STRING; + U_BOOT_VERSION" (" U_BOOT_DATE " - " U_BOOT_TIME ", gcc " __VERSION__ ")"CONFIG_IDENT_STRING;
#ifdef CONFIG_DRIVER_RTL8019 extern void rtl8019_get_enetaddr (uchar * addr);

Dear Alexander Holler,
In message 1292863117-3175-1-git-send-email-holler@ahsoftware.de you wrote:
It might be useful to see what compiler version was used to compile u-boot.
arch/arm/lib/board.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index 96c0e30..df90b5e 100644 --- a/arch/arm/lib/board.c +++ b/arch/arm/lib/board.c @@ -75,7 +75,7 @@ extern void dataflash_print_info(void); #endif
const char version_string[] =
- U_BOOT_VERSION" (" U_BOOT_DATE " - " U_BOOT_TIME ")"CONFIG_IDENT_STRING;
- U_BOOT_VERSION" (" U_BOOT_DATE " - " U_BOOT_TIME ", gcc " __VERSION__ ")"CONFIG_IDENT_STRING;
I understand your intention, but I'm not really happy with it.
So far, the version_string is mostly architecture and system independent. I haven't seen any comments about this, but I can imagine that we want such information globally.
On the other hand, that would require changes to many files, and the gcc __VERSION__ string is pretty long on some systems, which may cause additional problems.
I also doubt that we need this information with each boot message (where it just slows down booting).
Would it not be sufficient to add this to the code of do_version() so we can get this information when we want it, i. e. when running the "version" command?
Best regards,
Wolfgang Denk

Am 09.01.2011 22:03, schrieb Wolfgang Denk:
Dear Alexander Holler,
In message1292863117-3175-1-git-send-email-holler@ahsoftware.de you wrote:
It might be useful to see what compiler version was used to compile u-boot.
arch/arm/lib/board.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index 96c0e30..df90b5e 100644 --- a/arch/arm/lib/board.c +++ b/arch/arm/lib/board.c @@ -75,7 +75,7 @@ extern void dataflash_print_info(void); #endif
const char version_string[] =
- U_BOOT_VERSION" (" U_BOOT_DATE " - " U_BOOT_TIME ")"CONFIG_IDENT_STRING;
- U_BOOT_VERSION" (" U_BOOT_DATE " - " U_BOOT_TIME ", gcc " __VERSION__ ")"CONFIG_IDENT_STRING;
I understand your intention, but I'm not really happy with it.
So far, the version_string is mostly architecture and system independent. I haven't seen any comments about this, but I can imagine that we want such information globally.
On the other hand, that would require changes to many files, and the gcc __VERSION__ string is pretty long on some systems, which may cause additional problems.
Hmm, here it includes only "4.5.2", the plain version and not the vendor version. Therfore I was happy with that, because the vendor version would be too long to display at startup.
I also doubt that we need this information with each boot message (where it just slows down booting).
Hmm, I haven't counted the time needed to display additional 9 characters, but displaying the version at startup is handy for "screen dumps" (e.g. stuff pasted by people with problems).
Would it not be sufficient to add this to the code of do_version() so we can get this information when we want it, i. e. when running the "version" command?
I would like that. But as you said, my intention was really only because of the current problems with gcc for arm.
Besides that, I would found it handy to see the used compiler for u-boot's where I don't have the source by hand, e.g. those already found on boards. But that might be because I'm curious by default. ;)
Anyway, I would found it a nice feature, at startup or when running the version command, but both aren't a must.
Regards,
Alexander

Dear Alexander Holler,
In message 4D2BB9AC.1040504@ahsoftware.de you wrote:
On the other hand, that would require changes to many files, and the gcc __VERSION__ string is pretty long on some systems, which may cause additional problems.
Hmm, here it includes only "4.5.2", the plain version and not the vendor version. Therfore I was happy with that, because the vendor version would be too long to display at startup.
Well, what I see is for example "4.5.1 20100924 (Red Hat 4.5.1-4)" with the native GCC on Fedora 14; some other tool chains provide similar long results.
I also doubt that we need this information with each boot message (where it just slows down booting).
Hmm, I haven't counted the time needed to display additional 9 characters, but displaying the version at startup is handy for "screen
It's about 1 millisecond at 115 kbps, or 10 milliseconds at 9600 ;-)
dumps" (e.g. stuff pasted by people with problems).
I think we're already printing way too muc information- and still people don't include even the most vital information like which version of U-Boot they are running.
Would it not be sufficient to add this to the code of do_version() so we can get this information when we want it, i. e. when running the "version" command?
I would like that. But as you said, my intention was really only because of the current problems with gcc for arm.
So will you prepare a patch? [TIA!]
Besides that, I would found it handy to see the used compiler for u-boot's where I don't have the source by hand, e.g. those already found on boards. But that might be because I'm curious by default. ;)
Well, eventually we should print more than __VERSION__, then. Becasue if you see "4.4.1" - what does it tell you? You don't see that this is the Sourcery G++ Lite 2010q1-202 version of GCC, or that ""4.5.0 20100729 (prerelease)" is a specific Poky release?
Anyway, I would found it a nice feature, at startup or when running the version command, but both aren't a must.
I think it would be a really useful extension to the version command. Looking forwad to seeing your patch.
Best regards,
Wolfgang Denk

Hello,
Am 17.01.2011 23:28, schrieb Wolfgang Denk:
Anyway, I would found it a nice feature, at startup or when running the version command, but both aren't a must.
I think it would be a really useful extension to the version command. Looking forwad to seeing your patch.
Maybe if someone could feed me with what to use for the version. E.g. my gcc here defines __VERSION__ as "4.5.2" but when I'm looking at u-boot/lib/asm-offsets.s I see
.ident "GCC: (Gentoo 4.5.2 p1.0, pie-0.4.5) 4.5.2"
So I would like to display that which would be in line with the comment section of generated binaries.
But when I use "gcc -E -dM empty.c" to print all predefined macros, I don't see the text found in .ident. Not even something else which includes "Gentoo".
Regards,
Alexander

Anyway, I would found it a nice feature, at startup or when running the version command, but both aren't a must.
I think it would be a really useful extension to the version command. Looking forwad to seeing your patch.
Maybe if someone could feed me with what to use for the version. E.g. my gcc here defines __VERSION__ as "4.5.2" but when I'm looking at u-boot/lib/asm-offsets.s I see
.ident "GCC: (Gentoo 4.5.2 p1.0, pie-0.4.5) 4.5.2"
So I would like to display that which would be in line with the comment section of generated binaries.
But when I use "gcc -E -dM empty.c" to print all predefined macros, I don't see the text found in .ident. Not even something else which includes "Gentoo".
I believe the output of "$(CC) --version" should contain the same data as your .ident string. You could echo it into a file like: diff --git a/Makefile b/Makefile index 0685ef9..e070d40 100644 --- a/Makefile +++ b/Makefile @@ -416,6 +416,8 @@ $(U_BOOT_ONENAND): $(ONENAND_IPL) $(obj)u-boot.bin $(VERSION_FILE): @( printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' "$(U_BOOT_VERSION)" \ '$(shell $(TOPDIR)/tools/setlocalversion $(TOPDIR))' ) > $@.tmp + @( printf '#define CC_VERSION_STRING "%s"\n' \ + '$(shell $(CC) --version | head -1)' ) >> $@.tmp @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
$(TIMESTAMP_FILE):
Best, Peter

Am 18.01.2011 17:20, schrieb Peter Tyser:
Anyway, I would found it a nice feature, at startup or when running the version command, but both aren't a must.
I think it would be a really useful extension to the version command. Looking forwad to seeing your patch.
Maybe if someone could feed me with what to use for the version. E.g. my gcc here defines __VERSION__ as "4.5.2" but when I'm looking at u-boot/lib/asm-offsets.s I see
.ident "GCC: (Gentoo 4.5.2 p1.0, pie-0.4.5) 4.5.2"
So I would like to display that which would be in line with the comment section of generated binaries.
But when I use "gcc -E -dM empty.c" to print all predefined macros, I don't see the text found in .ident. Not even something else which includes "Gentoo".
I believe the output of "$(CC) --version" should contain the same data as your .ident string. You could echo it into a file like: diff --git a/Makefile b/Makefile index 0685ef9..e070d40 100644 --- a/Makefile +++ b/Makefile @@ -416,6 +416,8 @@ $(U_BOOT_ONENAND): $(ONENAND_IPL) $(obj)u-boot.bin $(VERSION_FILE): @( printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' "$(U_BOOT_VERSION)" \ '$(shell $(TOPDIR)/tools/setlocalversion $(TOPDIR))' )> $@.tmp
@( printf '#define CC_VERSION_STRING "%s"\n' \
'$(shell $(CC) --version | head -1)' )>> $@.tmp @cmp -s $@ $@.tmp&& rm -f $@.tmp || mv -f $@.tmp $@
$(TIMESTAMP_FILE):
That would the trick. The first line of gcc --version includes here the correct string. Thanks. (Btw. I would use head -n 1)
But I will wait for a comment from one of the maintainers about defining CC_VERSION_STRING.
If someone gives me an ok, I will write a patch including your suggestion and will print that version in the command version.
Regards,
Alexander

Dear Alexander Holler,
In message 4D35C836.3020400@ahsoftware.de you wrote:
@@ -416,6 +416,8 @@ $(U_BOOT_ONENAND): $(ONENAND_IPL) $(obj)u-boot.bin $(VERSION_FILE): @( printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' "$(U_BOOT_VERSION)" \ '$(shell $(TOPDIR)/tools/setlocalversion $(TOPDIR))' )> $@.tmp
@( printf '#define CC_VERSION_STRING "%s"\n' \
'$(shell $(CC) --version | head -1)' )>> $@.tmp @cmp -s $@ $@.tmp&& rm -f $@.tmp || mv -f $@.tmp $@
$(TIMESTAMP_FILE):
That would the trick. The first line of gcc --version includes here the correct string. Thanks. (Btw. I would use head -n 1)
But I will wait for a comment from one of the maintainers about defining CC_VERSION_STRING.
If someone gives me an ok, I will write a patch including your suggestion and will print that version in the command version.
Looks good to me - please go on.
Hm... while we are at it... the bintuils (especially linker) version is probably equally interesting, so eventually we should also add a LD_VERSION_STRING.
Best regards,
Wolfgang Denk
participants (3)
-
Alexander Holler
-
Peter Tyser
-
Wolfgang Denk