Skip to contentSkip to conversation

ARM: print gcc version

RFC PATCH New Alexander Holler 3 participants 8 messages Dec 20, 2010 – Jan 18, 2011

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

RFC PATCH 1/1 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(-)
arch/arm/lib/board.c +1 -1
index 96c0e30..df90b5e 100644
@@ -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);
Signature · 1 line
1.7.2.2
#1 lore raw

RFC PATCH 1/1 ARM: print gcc version

Dear Alexander Holler,

Quoted 10 lines · In message <[email protected]> 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(-)
arch/arm/lib/board.c +0 -0
index 96c0e30..df90b5e 100644

arch/arm/lib/board.c extern void dataflash_print_info(void); · line 78

Quoted 5 lines
arch/arm/lib/board.c +1 -1
@@ -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

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
As long as we're going to reinvent the wheel again, we might as  well
try making it round this time.                        - Mike Dennison
#2 lore raw

RFC PATCH 1/1 ARM: print gcc version

Am 09.01.2011 22:03, schrieb Wolfgang Denk:

Quoted 21 lines

Dear Alexander Holler,

Quoted 10 lines · In message<[email protected]> 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(-)
arch/arm/lib/board.c +0 -0
index 96c0e30..df90b5e 100644

arch/arm/lib/board.c extern void dataflash_print_info(void); · line 78

Quoted 5 lines
arch/arm/lib/board.c +1 -1
@@ -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.

Quoted 7 lines

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.

Quoted 2 lines

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).

Quoted 3 lines

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

#3 lore raw

RFC PATCH 1/1 ARM: print gcc version

Dear Alexander Holler,

Quoted 8 lines · In message <[email protected]> you wrote:
Quoted 4 lines

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.

Quoted 5 lines
Quoted 2 lines

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 ;-)

Quoted 1 line

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.

Quoted 6 lines
Quoted 3 lines

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!]

Quoted 3 lines

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?

Quoted 2 lines

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

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
A conservative is a man who believes that nothing should be done for
the first time.                                   - Alfred E. Wiggam
#4 lore raw

RFC PATCH 1/1 ARM: print gcc version

Hello,

Am 17.01.2011 23:28, schrieb Wolfgang Denk:

Quoted 5 lines
Quoted 2 lines

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

#5 lore raw

RFC PATCH 1/1 ARM: print gcc version

Quoted 10 lines
Quoted 5 lines
Quoted 2 lines

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

Quoted 8 lines

.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:

Makefile +2 -0
index 0685ef9..e070d40 100644
@@ -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))' ) > [email protected]
+               @( printf '#define CC_VERSION_STRING "%s"\n' \
+                '$(shell $(CC) --version | head -1)' ) >> [email protected]
                @cmp -s $@ [email protected] && rm -f [email protected] || mv -f [email protected] $@
 
 $(TIMESTAMP_FILE):

Best,
Peter

#6 lore raw

RFC PATCH 1/1 ARM: print gcc version

Am 18.01.2011 17:20, schrieb Peter Tyser:

Quoted 26 lines
Quoted 10 lines
Quoted 5 lines
Quoted 2 lines

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

Quoted 8 lines

.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:

Makefile +0 -0
index 0685ef9..e070d40 100644

Makefile $(U_BOOT_ONENAND): $(ONENAND_IPL) $(obj)u-boot.bin · line 423

Quoted 8 lines
Makefile +2 -0
@@ -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))' )>  [email protected]
+               @( printf '#define CC_VERSION_STRING "%s"\n' \
+                '$(shell $(CC) --version | head -1)' )>>  [email protected]
                 @cmp -s $@ [email protected]&&  rm -f [email protected] || mv -f [email protected] $@
 
  $(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

#7 lore raw

RFC PATCH 1/1 ARM: print gcc version

Dear Alexander Holler,

Quoted 14 lines · In message <[email protected]> you wrote:

Makefile $(U_BOOT_ONENAND): $(ONENAND_IPL) $(obj)u-boot.bin · line 423

Quoted 10 lines
Makefile +2 -0
@@ -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))' )>  [email protected]
+               @( printf '#define CC_VERSION_STRING "%s"\n' \
+                '$(shell $(CC) --version | head -1)' )>>  [email protected]
                 @cmp -s $@ [email protected]&&  rm -f [email protected] || mv -f [email protected] $@
 
  $(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)

Quoted 5 lines

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

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
A right is not what someone gives you; it's what no one can take from
you.                                                   - Ramsey Clark