Forum: Compiler & IDEs avr/4.8.3/../../../../avr/bin/ld: warning: -z relro ignored.


von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Hallo,

im Netz findet man zwar viele Buildlogs, die die Warnung "warning: -z 
relro ignored." enthalten, aber ich habe keine Erklaerung oder Abhilfe 
gegen diese Warnung gefunden. Hat jemand dazu eine Idee?

Danke

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Warum verwendest du diese Option?

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Ich arbeite mit Opensuse 13.2 .

In meinen Nutzercode und Makefiles kommt das Wort "relro" nicht vor.
:~/devel/ethernut_sf/nut> grep -rl relro
Genausowenig in relevanten Files den avr Verzeichnissen:
:/opt/cross/avr> grep -rl relro
bin/avr-insight
bin/avr-gdbtui
bin/avr-gdb
:/opt/cross/avr> rpm -qf bin/avr-gdbtui
cross-avr-insight-6.8.1-36.1.x86_64

Ist das evt ein Compiletime Option, die Suse unguenstig gesetzt hat? 
Irgendeine Moeglichkeit, dass zu ueberschreiben?

von Rene H. (Gast)


Lesenswert?

Uwe B. schrieb:
> Ist das evt ein Compiletime Option, die Suse unguenstig gesetzt hat?
> Irgendeine Moeglichkeit, dass zu ueberschreiben?

Wenn der Linker mosert, ist es eher eine Linker Option.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Ohne genauere Infos lässt sich nur raten.  Für fragen zu SuSE fragst du 
am besten SuSE, oder nicht?

von Rene H. (Gast)


Lesenswert?

Ich vermute Du kompilierst mit der AVR Toolchain. Woher hast Du die und 
welche Version? (Aargh, lesen, steht ja oben, sry).

Das es am SuSE liegt, glaube ich eher weniger.

Edit: Benutzt Du eine IDE? Wenn ja, welche?

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Wie ist denn das Kommando, das zu der Meldung gehört?

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

> which avr-gcc
/usr/bin/avr-gcc
> rpm -qfi /usr/bin/avr-gcc
Name        : cross-avr-gcc
Version     : 4.8.3
Release     : 1.1
Architecture: x86_64
Install Date: Mo 21 Mär 2016 17:59:20 CET
Group       : Development/Libraries/C and C++
Size        : 99543046
License     : GPL-3.0+
Signature   : DSA/SHA1, Fr 21 Nov 2014 16:34:24 CET, Key ID 
76b8164a5a4c615b
Source RPM  : cross-avr-gcc-4.8.3-1.1.src.rpm
Build Date  : Fr 21 Nov 2014 16:26:10 CET
Build Host  : build17
Relocations : (not relocatable)
Vendor      : obs://build.opensuse.org/CrossToolchain:avr
URL         : 
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=42631
Summary     : The GNU C Compiler for Atmel AVR with xmega support
Description :
This compiler supports the C language on AVR microprocessors.
Also install cross-avr-binutils and avr-libc.
gcc built for Atmel AVR with the instrutions from wrightflyer.
Distribution: CrossToolchain:avr / openSUSE_13.2

> /usr/bin/avr-gcc -v
Using built-in specs.
COLLECT_GCC=/opt/cross/avr/bin/avr-gcc
COLLECT_LTO_WRAPPER=/opt/cross/avr/libexec/gcc/avr/4.8.3/lto-wrapper
Target: avr
Configured with: ../gcc-4.8.3/configure -v --target=avr --disable-nls 
--mandir=/opt/cross/avr/share/man --infodir=/opt/cross/avr/share/info 
--program-prefix=avr- --prefix=/opt/cross/avr --with-gnu-ld 
--with-gnu-as --enable-languages=c,c++ --disable-libssp --with-dwarf2
Thread model: single
gcc version 4.8.3 (GCC)

Ich arbeite ohne IDE. Das Ethernut Framework erzeugt aus gegebenen 
Konfigurationen Bibliotheken und beim Linken der Beispiele kommt dann 
die Warnung. Wie oben gezeigt, gibt es im gesamten Ethernut Framework 
kein vorkommen von "relro". Und die Treffer bei der Suche nach relro in 
/opt/cros/avr

/opt/cross/avr> grep -rli relro
lib/gcc/avr/4.8.3/plugin/include/output.h
bin/avr-insight
bin/avr-gdbtui
bin/avr-gdb

erscheinen mir auch nicht relevant fuer das Kompilieren und Linken.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Johann L. schrieb:
> Wie ist denn das Kommando, das zu der Meldung gehört?

> avr-gcc -c -I/devel/ethernut_sf/build/ethernut103/./include 
-I/devel/ethernut_sf/build/ethernut103/../../nut/include 
-I/devel/ethernut_sf/build/ethernut103/../../nut/include/contrib  -DETHERNUT1 
-DBOOTLOADER_OFFSET=0 -D__HARVARD_ARCH__  -MD -MP -mmcu=atmega103 -Os 
-ffunction-sections -fno-delete-null-pointer-checks -Wall -Wstrict-prototypes 
-Wa,-a=simple.lst  -o simple.o simple.c
hertz:~/devel/ethernut_sf/build/ethernut103/apps/simple> avr-gcc 
simple.o -mmcu=atmega103 -Wl,--gc-sections 
-Wl,--defsym=main=0,-Map=simple.map,--cref 
-L/devel/ethernut_sf/build/ethernut103/./lib -Wl,--start-group 
/devel/ethernut_sf/build/ethernut103/./lib/nutinit.o -lnutos -lnutarch 
-lnutdev -lnutarch -lnutcrt   -Wl,--end-group -o simple.elf
/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/bin/ld: warning: -z 
relro ignored.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Der 2te Aufruf (link) zusätzlich mit -v -Wl,-v  ?

Wie wurde avr-gcc configured?

Was sagt das Mapfile?  Gibt es Objekte in .rel Sections?
Wenn ja, wie kommen die dahin?

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

> avr-gcc simple.o -mmcu=atmega103 -Wl,--gc-sections 
-Wl,--defsym=main=0,-Map=simple.map,--cref 
-L/devel/ethernut_sf/build/ethernut103/./lib -Wl,--start-group 
/devel/ethernut_sf/build/ethernut103/./lib/nutinit.o -lnutos -lnutarch -lnutdev 
-lnutarch -lnutcrt -Wl,--end-group -o simple.elf -v -Wl,-v
Using built-in specs.
COLLECT_GCC=/opt/cross/avr/bin/avr-gcc
COLLECT_LTO_WRAPPER=/opt/cross/avr/libexec/gcc/avr/4.8.3/lto-wrapper
Target: avr
Configured with: ../gcc-4.8.3/configure -v --target=avr --disable-nls 
--mandir=/opt/cross/avr/share/man --infodir=/opt/cross/avr/share/info 
--program-prefix=avr- --prefix=/opt/cross/avr --with-gnu-ld 
--with-gnu-as --enable-languages=c,c++ --disable-libssp --with-dwarf2
Thread model: single
gcc version 4.8.3 (GCC)
COMPILER_PATH=/opt/cross/avr/libexec/gcc/avr/4.8.3/:/opt/cross/avr/libex 
ec/gcc/avr/4.8.3/:/opt/cross/avr/libexec/gcc/avr/:/opt/cross/avr/lib/gcc 
/avr/4.8.3/:/opt/cross/avr/lib/gcc/avr/:/opt/cross/avr/lib/gcc/avr/4.8.3 
/../../../../avr/bin/
LIBRARY_PATH=/opt/cross/avr/lib/gcc/avr/4.8.3/avr31/:/opt/cross/avr/lib/ 
gcc/avr/4.8.3/../../../../avr/lib/avr31/:/opt/cross/avr/lib/gcc/avr/4.8. 
3/:/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/lib/
COLLECT_GCC_OPTIONS='-mmcu=atmega103' 
'-L/devel/ethernut_sf/build/ethernut103/./lib' '-o' 'simple.elf' '-v'
 /opt/cross/avr/libexec/gcc/avr/4.8.3/collect2 -m avr31 -o simple.elf 
/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/lib/avr31/crtm103.o 
-L/devel/ethernut_sf/build/ethernut103/./lib 
-L/opt/cross/avr/lib/gcc/avr/4.8.3/avr31 
-L/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/lib/avr31 
-L/opt/cross/avr/lib/gcc/avr/4.8.3 
-L/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/lib simple.o 
--gc-sections --defsym=main=0 -Map=simple.map --cref --start-group 
/devel/ethernut_sf/build/ethernut103/./lib/nutinit.o -lnutos -lnutarch 
-lnutdev -lnutarch -lnutcrt --end-group -v --start-group -lgcc -lm -lc 
--end-group
collect2 version 4.8.3
/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/bin/ld -m avr31 -o 
simple.elf 
/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/lib/avr31/crtm103.o 
-L/devel/ethernut_sf/build/ethernut103/./lib 
-L/opt/cross/avr/lib/gcc/avr/4.8.3/avr31 
-L/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/lib/avr31 
-L/opt/cross/avr/lib/gcc/avr/4.8.3 
-L/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/lib simple.o 
--gc-sections --defsym=main=0 -Map=simple.map --cref --start-group 
/devel/ethernut_sf/build/ethernut103/./lib/nutinit.o -lnutos -lnutarch 
-lnutdev -lnutarch -lnutcrt --end-group -v --start-group -lgcc -lm -lc 
--end-group
GNU ld (GNU Binutils; devel:gcc / openSUSE_13.2) 2.26.0.20160318-244
/opt/cross/avr/lib/gcc/avr/4.8.3/../../../../avr/bin/ld: warning: -z 
relro ignored


Im Mapfile m eine ich, dass dort keine Objekte sind.

.gnu.version_r
 *(.gnu.version_r)

.rel.init
 *(.rel.init)
...
.rela.plt
 *(.rela.plt)

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Johann L. schrieb:
> Wie wurde avr-gcc configured?

Ok, steht ja schon da :-)

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Johann L. schrieb:
> Wie wurde avr-gcc configured?

Ist das nicht weiter oben in der Ausgabe von "avr-gcc -v" zu sehen?

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

The concept of time is to keep things from happening at once. It does 
not work ;-)

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Jedenfalls ist verwirrend, dass ld nicht mit "-z relro" aufgerufen 
wird.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Die Warnung kommt aus dem avr-ld selbst:

> avr-ld
avr-ld: warning: -z relro ignored.
avr-ld: no input files

> which avr-ld
/usr/bin/avr-ld

> rpm -qfi /usr/bin/avr-ld
Name        : cross-avr-binutils
Version     : 2.26
Release     : 244.1
Architecture: x86_64
Install Date: Mo 21 Mär 2016 17:59:21 CET
Group       : Development/Tools/Building
Size        : 12053141
License     : GFDL-1.3 and GPL-3.0+
Signature   : DSA/SHA1, Fr 18 Mär 2016 09:09:29 CET, Key ID 
927f5cc86300dadb
Source RPM  : cross-avr-binutils-2.26-244.1.src.rpm
Build Date  : Fr 18 Mär 2016 09:08:37 CET
Build Host  : wildcard2
Relocations : (not relocatable)
Vendor      : obs://build.opensuse.org/devel:gcc
URL         : http://www.gnu.org/software/binutils/
Summary     : GNU Binutils
Description :
C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib,
size, strings, and strip. These utilities are needed whenever you want
to compile a program or kernel.
Distribution: devel:gcc / openSUSE_13.2

Gibt es andere relativ aktuelle AVR-GCC Pakete?

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Ich würd da fast aufn Problem bei Binutils tippen, d.h. für weitere Info 
ld debuggen :-) oder direkt in der Binutils Mailingliste 
(binutils@sourceware.org) nachfragen, siehe 
http://sourceware.org/binutils/ unter "Mailing Lists".  Mit den ganzen 
Libs ist das aber für andere nicht leicht nachzuvollzuiehen.

Interessant wäre auch, ob das für ein "normales" Projekt oder 
Minibeispiel ohne Ethernut-Libs und -Startup auch auftritt, und ob es 
stört dass ein *.o in --start-group --end-group steht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.